Skip to content

Commit 7254a51

Browse files
authored
DDF for ubisys H1 thermostat (dresden-elektronik#7421)
1 parent 9bfa717 commit 7254a51

File tree

2 files changed

+281
-1
lines changed

2 files changed

+281
-1
lines changed

devices/ubisys/h1.json

+258
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,258 @@
1+
{
2+
"schema": "devcap1.schema.json",
3+
"manufacturername": "ubisys",
4+
"modelid": "H1",
5+
"vendor": "ubisys",
6+
"product": "H1",
7+
"sleeper": false,
8+
"status": "Gold",
9+
"subdevices": [
10+
{
11+
"type": "$TYPE_THERMOSTAT",
12+
"restapi": "/sensors",
13+
"uuid": [
14+
"$address.ext",
15+
"0x01",
16+
"0x0201"
17+
],
18+
"meta": {
19+
"values": {
20+
"config/mode": {"off": 0, "auto": 1, "heat": 4}
21+
},
22+
"group.endpoints": [1]
23+
},
24+
"items": [
25+
{
26+
"name": "attr/id"
27+
},
28+
{
29+
"name": "attr/lastannounced"
30+
},
31+
{
32+
"name": "attr/lastseen"
33+
},
34+
{
35+
"name": "attr/manufacturername"
36+
},
37+
{
38+
"name": "attr/modelid"
39+
},
40+
{
41+
"name": "attr/name"
42+
},
43+
{
44+
"name": "attr/swversion"
45+
},
46+
{
47+
"name": "attr/type"
48+
},
49+
{
50+
"name": "attr/uniqueid"
51+
},
52+
{
53+
"name": "config/battery",
54+
"parse": {
55+
"at": "0x0021",
56+
"cl": "0x0001",
57+
"ep": 1,
58+
"eval": "Item.val = Attr.val / 2;",
59+
"fn": "zcl:attr"
60+
},
61+
"read": {
62+
"fn": "none"
63+
}
64+
},
65+
{
66+
"name": "config/checkin"
67+
},
68+
{
69+
"name": "config/group",
70+
"default": "auto"
71+
},
72+
{
73+
"name": "config/heatsetpoint",
74+
"refresh.interval": 3660
75+
},
76+
{
77+
"name": "config/mode",
78+
"refresh.interval": 3660,
79+
"read": {
80+
"at": "0x001C",
81+
"cl": "0x0201",
82+
"ep": 1,
83+
"fn": "zcl:attr"
84+
},
85+
"parse": {
86+
"at": "0x001C",
87+
"cl": "0x0201",
88+
"ep": 1,
89+
"eval": "if (Attr.val == 0) { Item.val = 'off' } else if (Attr.val == 1) { Item.val = 'auto' } else if (Attr.val == 4) { Item.val = 'heat' };",
90+
"fn": "zcl:attr"
91+
},
92+
"write": {
93+
"at": "0x001C",
94+
"cl": "0x0201",
95+
"dt": "0x10",
96+
"ep": 1,
97+
"eval": "if (Item.val == 'off') { 0 } else if (Item.val == 'auto') { 1 } else if (Item.val == 'heat') { 4 };",
98+
"fn": "zcl:attr"
99+
},
100+
"default": "heat"
101+
},
102+
{
103+
"name": "config/offset",
104+
"refresh.interval": 3660,
105+
"read": {
106+
"at": "0x0003",
107+
"cl": "0x0201",
108+
"ep": 1,
109+
"fn": "zcl:attr",
110+
"mf": "0x10f2"
111+
},
112+
"parse": {
113+
"at": "0x0003",
114+
"cl": "0x0201",
115+
"ep": 1,
116+
"eval": "Item.val = Attr.val * 100;",
117+
"fn": "zcl:attr",
118+
"mf": "0x10f2"
119+
},
120+
"write": {
121+
"at": "0x0003",
122+
"cl": "0x0201",
123+
"dt": "0x30",
124+
"ep": 1,
125+
"eval": "parseInt(Item.val / 100);",
126+
"fn": "zcl:attr",
127+
"mf": "0x10f2"
128+
},
129+
"range": [-1000, 1000]
130+
},
131+
{
132+
"name": "config/on"
133+
},
134+
{
135+
"name": "config/reachable"
136+
},
137+
{
138+
"name": "config/schedule",
139+
"refresh.interval": 3660,
140+
"read": {
141+
"fn": "zcl:cmd",
142+
"ep": "0x01",
143+
"cl": "0x0201",
144+
"cmd": "0x02",
145+
"eval": "'7F01'"
146+
}
147+
},
148+
{
149+
"name": "config/schedule_on",
150+
"static": true
151+
},
152+
{
153+
"name": "config/unoccupiedheatsetpoint",
154+
"refresh.interval": 3660,
155+
"default": 1600
156+
},
157+
{
158+
"name": "state/lastupdated"
159+
},
160+
{
161+
"name": "state/on",
162+
"parse": {
163+
"at": "0x0008",
164+
"cl": "0x0201",
165+
"ep": 1,
166+
"eval": "Item.val = Attr.val > 3;",
167+
"fn": "zcl:attr"
168+
},
169+
"read": {
170+
"fn": "none"
171+
}
172+
},
173+
{
174+
"name": "state/temperature",
175+
"refresh.interval": 3660,
176+
"parse": {
177+
"at": "0x0000",
178+
"cl": "0x0201",
179+
"ep": 1,
180+
"eval": "Item.val = Attr.val;",
181+
"fn": "zcl:attr"
182+
}
183+
},
184+
{
185+
"name": "state/utc",
186+
"refresh.interval": 3660
187+
},
188+
{
189+
"name": "state/valve",
190+
"refresh.interval": 3660
191+
}
192+
]
193+
}
194+
],
195+
"bindings": [
196+
{
197+
"bind": "unicast",
198+
"src.ep": 1,
199+
"cl": "0x0001",
200+
"report": [
201+
{
202+
"at": "0x0021",
203+
"dt": "0x20",
204+
"min": 3600,
205+
"max": 43200,
206+
"change": "0x00000002"
207+
}
208+
]
209+
},
210+
{
211+
"bind": "unicast",
212+
"src.ep": 1,
213+
"cl": "0x0201",
214+
"report": [
215+
{
216+
"at": "0x0000",
217+
"dt": "0x29",
218+
"min": 60,
219+
"max": 300,
220+
"change": "0x00000064"
221+
},
222+
{
223+
"at": "0x0008",
224+
"dt": "0x20",
225+
"min": 60,
226+
"max": 3600,
227+
"change": "0x00000001"
228+
},
229+
{
230+
"at": "0x0012",
231+
"dt": "0x29",
232+
"min": 1,
233+
"max": 3600,
234+
"change": "0x00000064"
235+
},
236+
{
237+
"at": "0x0014",
238+
"dt": "0x29",
239+
"min": 1,
240+
"max": 3600,
241+
"change": "0x00000064"
242+
},
243+
{
244+
"at": "0x001C",
245+
"dt": "0x30",
246+
"min": 1,
247+
"max": 3600
248+
}
249+
]
250+
},
251+
{
252+
"bind": "groupcast",
253+
"config.group": 0,
254+
"src.ep": 1,
255+
"cl": "0x0201"
256+
}
257+
]
258+
}

general.xml

+23-1
Original file line numberDiff line numberDiff line change
@@ -2318,7 +2318,29 @@ Note: It does not clear or delete previous weekly schedule programming configura
23182318
<attribute id="0x0081" name="Unknown" type="s16" access="r" required="o"/>
23192319
<attribute id="0x0082" name="Unknown (Heat Setpoint?)" type="s16" access="r" required="o"/>
23202320
</attribute-set>
2321-
<!-- Sinope manufacturer specific -->
2321+
<!-- ubisys manufacturer specific -->
2322+
<attribute-set id="0x0000" description="Ubisys specific" mfcode="0x10f2">
2323+
<attribute id="0x0000" name="Unknown" type="u16" access="rw" required="m" mfcode="0x10f2"></attribute>
2324+
<attribute id="0x0001" name="Unknown" type="u16" access="rw" required="o" mfcode="0x10f2"></attribute>
2325+
<attribute id="0x0002" name="Unknown" type="s16" access="r" required="o" mfcode="0x10f2"></attribute>
2326+
<attribute id="0x0003" name="Offset" type="s8" access="rw" required="o" mfcode="0x10f2"></attribute>
2327+
<attribute id="0x0004" name="Unknown" type="s16" access="rw" required="o" mfcode="0x10f2"></attribute>
2328+
<attribute id="0x0005" name="Vacation" type="bool" access="rw" required="o" mfcode="0x10f2"></attribute>
2329+
<attribute id="0x0009" name="Unknown" type="u16" access="r" required="o" mfcode="0x10f2"></attribute>
2330+
<attribute id="0x000a" name="Unknown" type="s16" access="r" required="o" mfcode="0x10f2"></attribute>
2331+
<attribute id="0x000b" name="Unknown" type="s8" access="r" required="m" mfcode="0x10f2"></attribute>
2332+
<attribute id="0x000c" name="Unknown" type="s8" access="r" required="m" mfcode="0x10f2"></attribute>
2333+
<attribute id="0x000d" name="Unknown" type="u8" access="r" required="o" mfcode="0x10f2"></attribute>
2334+
<attribute id="0x000e" name="Unknown" type="u8" access="r" required="o" mfcode="0x10f2"></attribute>
2335+
<attribute id="0x000f" name="Unknown" type="u8" access="r" required="o" mfcode="0x10f2"></attribute>
2336+
<attribute id="0x0010" name="Unknown" type="u8" access="r" required="o" mfcode="0x10f2"></attribute>
2337+
<attribute id="0x0011" name="Unknown" type="u8" access="r" required="o" mfcode="0x10f2"></attribute>
2338+
<attribute id="0x0012" name="Unknown" type="u8" access="r" required="o" mfcode="0x10f2"></attribute>
2339+
<attribute id="0x0013" name="Unknown" type="s16" access="rw" required="o" mfcode="0x10f2"></attribute>
2340+
<attribute id="0x0014" name="Unknown" type="s8" access="rw" required="o" mfcode="0x10f2"></attribute>
2341+
<attribute id="0x0015" name="Unknown" type="s16" access="rw" required="o" mfcode="0x10f2"></attribute>
2342+
</attribute-set>
2343+
<!-- Sinope manufacturer specific -->
23222344
<attribute-set id="0x0400" description="Sinope specific" mfcode="0x119c">
23232345
<attribute id="0x0400" name="Occupancy" type="enum8" access="rw" required="m" mfcode="0x119c">
23242346
<value name="Unoccupied" value="0x00"></value>

0 commit comments

Comments
 (0)