Skip to content

Commit cd9095f

Browse files
committed
Fix errors trying to parse temperatures from switched off thermostat
FritzOS 7.29 and Comet DECT devices send the special state values in Thermostat.Goal where ad FritzOS 7.31 and Fritz!DECT 301 devices send the state in Thermostat.Saving. Parsing has been fixed in https://github.com/jayme-github/fritzctl: 8f69fe815d3fdfbc9f36131fe5e29bad70645445 Don't try to parse goal, comfort or saving temparature if thermostat is not in ON state. Fixes: #11
1 parent 2664bd7 commit cd9095f

File tree

8 files changed

+260
-16
lines changed

8 files changed

+260
-16
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,4 @@
1616
*.swp
1717
vendor/*
1818
dist/
19+
fritzbox_smarthome_exporter

collector.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -196,17 +196,17 @@ func (fc *fritzCollector) Collect(ch chan<- prometheus.Metric) {
196196
dev.Productname,
197197
dev.Name,
198198
)
199-
// Don't try to update goal temperature if thermostat is OFF (or in unknown state)
199+
// Update goal, comfort and saving temperatures only if thermostat is ON
200200
if state == 1 {
201201
if err := mustStringToFloatMetric(ch, fc.ThermostatTempGoal, dev.Thermostat.FmtGoalTemperature(), &dev); err != nil {
202202
log.Printf("Unable to parse goal temperature of \"%s\" : %v\n", dev.Name, err)
203203
}
204-
}
205-
if err := mustStringToFloatMetric(ch, fc.ThermostatTempComfort, dev.Thermostat.FmtComfortTemperature(), &dev); err != nil {
206-
log.Printf("Unable to parse comfort temperature of \"%s\" : %v\n", dev.Name, err)
207-
}
208-
if err := mustStringToFloatMetric(ch, fc.ThermostatTempSaving, dev.Thermostat.FmtSavingTemperature(), &dev); err != nil {
209-
log.Printf("Unable to parse saving temperature of \"%s\" : %v\n", dev.Name, err)
204+
if err := mustStringToFloatMetric(ch, fc.ThermostatTempComfort, dev.Thermostat.FmtComfortTemperature(), &dev); err != nil {
205+
log.Printf("Unable to parse comfort temperature of \"%s\" : %v\n", dev.Name, err)
206+
}
207+
if err := mustStringToFloatMetric(ch, fc.ThermostatTempSaving, dev.Thermostat.FmtSavingTemperature(), &dev); err != nil {
208+
log.Printf("Unable to parse saving temperature of \"%s\" : %v\n", dev.Name, err)
209+
}
210210
}
211211

212212
// Window Open is optional, earlier FritzOS versions don't export that

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,4 @@ require (
2626
gopkg.in/yaml.v2 v2.4.0 // indirect
2727
)
2828

29-
replace github.com/bpicode/fritzctl => github.com/jayme-github/fritzctl v1.4.23-0.20220424111445-826538a7c038
29+
replace github.com/bpicode/fritzctl => github.com/jayme-github/fritzctl v1.4.23-0.20220609211037-25a9f8556e3b

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgf
6262
github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
6363
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
6464
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
65-
github.com/jayme-github/fritzctl v1.4.23-0.20220424111445-826538a7c038 h1:QhPu2bo814Kss65tEu6s30PBbkAueJb8wNCkwa/JD9M=
66-
github.com/jayme-github/fritzctl v1.4.23-0.20220424111445-826538a7c038/go.mod h1:8bJv/qlxE0sdIAwjSLyuc+NeQ4kz77bMCdCCZOKJQjc=
65+
github.com/jayme-github/fritzctl v1.4.23-0.20220609211037-25a9f8556e3b h1:pHFq8M4744vLEdj0HfuZS26fO0H0Guw3nI8y8bywJyw=
66+
github.com/jayme-github/fritzctl v1.4.23-0.20220609211037-25a9f8556e3b/go.mod h1:+YZYkLlmX2lFKkzUMljoRM63T6RK83fIChL1IHjo5Aw=
6767
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
6868
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
6969
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=

test/devicelist.metrics

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,6 @@ fritzbox_thermostat_batterylow{device_id="55555 2777777",device_name="HKR_2",dev
7575
fritzbox_thermostat_batterylow{device_id="55555 2777777",device_name="HKR_3",device_type="Comet DECT"} 1
7676
# HELP fritzbox_thermostat_comfort Comfort temperature configured in units of 0.1 °C
7777
# TYPE fritzbox_thermostat_comfort gauge
78-
fritzbox_thermostat_comfort{device_id="44363 2777777",device_name="HKR_1",device_type="Comet DECT"} 20
79-
fritzbox_thermostat_comfort{device_id="55555 2777777",device_name="HKR_2",device_type="Comet DECT"} 20
8078
fritzbox_thermostat_comfort{device_id="55555 2777777",device_name="HKR_3",device_type="Comet DECT"} 23
8179
# HELP fritzbox_thermostat_errorcode Thermostat error code (0 = OK), see https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/AHA-HTTP-Interface.pdf
8280
# TYPE fritzbox_thermostat_errorcode gauge
@@ -88,8 +86,6 @@ fritzbox_thermostat_errorcode{device_id="55555 2777777",device_name="HKR_3",devi
8886
fritzbox_thermostat_goal{device_id="55555 2777777",device_name="HKR_3",device_type="Comet DECT"} 20
8987
# HELP fritzbox_thermostat_saving Configured energy saving temperature in units of 0.1 °C
9088
# TYPE fritzbox_thermostat_saving gauge
91-
fritzbox_thermostat_saving{device_id="44363 2777777",device_name="HKR_1",device_type="Comet DECT"} 18
92-
fritzbox_thermostat_saving{device_id="55555 2777777",device_name="HKR_2",device_type="Comet DECT"} 18
9389
fritzbox_thermostat_saving{device_id="55555 2777777",device_name="HKR_3",device_type="Comet DECT"} 17
9490
# HELP fritzbox_thermostat_state Thermostat state 1/0 (on/off), -1 if unknown or error
9591
# TYPE fritzbox_thermostat_state gauge

test/devicelist_729.metrics

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ fritzbox_thermostat_comfort{device_id="12345 0000002",device_name="HKR_1",device
103103
fritzbox_thermostat_comfort{device_id="12345 0000003",device_name="HKR_2",device_type="Comet DECT"} 20
104104
fritzbox_thermostat_comfort{device_id="12345 0000004",device_name="HKR_3",device_type="Comet DECT"} 18.5
105105
fritzbox_thermostat_comfort{device_id="12345 0000005",device_name="HKR_4",device_type="Comet DECT"} 17
106-
fritzbox_thermostat_comfort{device_id="12345 0000006",device_name="HKR_5",device_type="Comet DECT"} 17
107106
# HELP fritzbox_thermostat_errorcode Thermostat error code (0 = OK), see https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/AHA-HTTP-Interface.pdf
108107
# TYPE fritzbox_thermostat_errorcode gauge
109108
fritzbox_thermostat_errorcode{device_id="12345 0000002",device_name="HKR_1",device_type="Comet DECT"} 0
@@ -123,7 +122,6 @@ fritzbox_thermostat_saving{device_id="12345 0000002",device_name="HKR_1",device_
123122
fritzbox_thermostat_saving{device_id="12345 0000003",device_name="HKR_2",device_type="Comet DECT"} 16
124123
fritzbox_thermostat_saving{device_id="12345 0000004",device_name="HKR_3",device_type="Comet DECT"} 16
125124
fritzbox_thermostat_saving{device_id="12345 0000005",device_name="HKR_4",device_type="Comet DECT"} 16
126-
fritzbox_thermostat_saving{device_id="12345 0000006",device_name="HKR_5",device_type="Comet DECT"} 16
127125
# HELP fritzbox_thermostat_state Thermostat state 1/0 (on/off), -1 if unknown or error
128126
# TYPE fritzbox_thermostat_state gauge
129127
fritzbox_thermostat_state{device_id="12345 0000002",device_name="HKR_1",device_type="Comet DECT"} 1

test/devicelist_731.metrics

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# HELP fritzbox_battery_charge_level Battery charge level in percent
2+
# TYPE fritzbox_battery_charge_level gauge
3+
fritzbox_battery_charge_level{device_id="09995 0003386",device_name="Thermostat Wohnzimmer",device_type="FRITZ!DECT 301"} 100
4+
fritzbox_battery_charge_level{device_id="09995 0182040",device_name="Thermostat Schlafzimmer",device_type="FRITZ!DECT 301"} 60
5+
fritzbox_battery_charge_level{device_id="09995 0182300",device_name="Thermostat Bad",device_type="FRITZ!DECT 301"} 60
6+
# HELP fritzbox_batterylow 0 if the battery is OK, 1 if it is running low on capacity (this seems to be very unreliable)
7+
# TYPE fritzbox_batterylow gauge
8+
fritzbox_batterylow{device_id="09995 0003386",device_name="Thermostat Wohnzimmer",device_type="FRITZ!DECT 301"} 0
9+
fritzbox_batterylow{device_id="09995 0182040",device_name="Thermostat Schlafzimmer",device_type="FRITZ!DECT 301"} 0
10+
fritzbox_batterylow{device_id="09995 0182300",device_name="Thermostat Bad",device_type="FRITZ!DECT 301"} 0
11+
# HELP fritzbox_device_info Device information
12+
# TYPE fritzbox_device_info gauge
13+
fritzbox_device_info{device_id="09995 0003386",device_name="Thermostat Wohnzimmer",device_type="FRITZ!DECT 301",functionbitmask="320",fw_version="05.02",internal_id="16",manufacturer="AVM"} 1
14+
fritzbox_device_info{device_id="09995 0182040",device_name="Thermostat Schlafzimmer",device_type="FRITZ!DECT 301",functionbitmask="320",fw_version="05.02",internal_id="18",manufacturer="AVM"} 1
15+
fritzbox_device_info{device_id="09995 0182300",device_name="Thermostat Bad",device_type="FRITZ!DECT 301",functionbitmask="320",fw_version="05.02",internal_id="17",manufacturer="AVM"} 1
16+
# HELP fritzbox_device_present Device connected (1) or not (0)
17+
# TYPE fritzbox_device_present gauge
18+
fritzbox_device_present{device_id="09995 0003386",device_name="Thermostat Wohnzimmer",device_type="FRITZ!DECT 301"} 1
19+
fritzbox_device_present{device_id="09995 0182040",device_name="Thermostat Schlafzimmer",device_type="FRITZ!DECT 301"} 1
20+
fritzbox_device_present{device_id="09995 0182300",device_name="Thermostat Bad",device_type="FRITZ!DECT 301"} 1
21+
# HELP fritzbox_temperature Temperature measured at the device sensor in units of 0.1 °C
22+
# TYPE fritzbox_temperature gauge
23+
fritzbox_temperature{device_id="09995 0003386",device_name="Thermostat Wohnzimmer",device_type="FRITZ!DECT 301"} 22.5
24+
fritzbox_temperature{device_id="09995 0182040",device_name="Thermostat Schlafzimmer",device_type="FRITZ!DECT 301"} 23
25+
fritzbox_temperature{device_id="09995 0182300",device_name="Thermostat Bad",device_type="FRITZ!DECT 301"} 24.5
26+
# HELP fritzbox_temperature_offset Temperature offset (set by the user) in units of 0.1 °C
27+
# TYPE fritzbox_temperature_offset gauge
28+
fritzbox_temperature_offset{device_id="09995 0003386",device_name="Thermostat Wohnzimmer",device_type="FRITZ!DECT 301"} 0
29+
fritzbox_temperature_offset{device_id="09995 0182040",device_name="Thermostat Schlafzimmer",device_type="FRITZ!DECT 301"} 0
30+
fritzbox_temperature_offset{device_id="09995 0182300",device_name="Thermostat Bad",device_type="FRITZ!DECT 301"} 0
31+
# HELP fritzbox_thermostat_battery_charge_level Battery charge level in percent
32+
# TYPE fritzbox_thermostat_battery_charge_level gauge
33+
fritzbox_thermostat_battery_charge_level{device_id="09995 0003386",device_name="Thermostat Wohnzimmer",device_type="FRITZ!DECT 301"} 100
34+
fritzbox_thermostat_battery_charge_level{device_id="09995 0182040",device_name="Thermostat Schlafzimmer",device_type="FRITZ!DECT 301"} 60
35+
fritzbox_thermostat_battery_charge_level{device_id="09995 0182300",device_name="Thermostat Bad",device_type="FRITZ!DECT 301"} 60
36+
# HELP fritzbox_thermostat_batterylow 0 if the battery is OK, 1 if it is running low on capacity (this seems to be very unreliable)
37+
# TYPE fritzbox_thermostat_batterylow gauge
38+
fritzbox_thermostat_batterylow{device_id="09995 0003386",device_name="Thermostat Wohnzimmer",device_type="FRITZ!DECT 301"} 0
39+
fritzbox_thermostat_batterylow{device_id="09995 0182040",device_name="Thermostat Schlafzimmer",device_type="FRITZ!DECT 301"} 0
40+
fritzbox_thermostat_batterylow{device_id="09995 0182300",device_name="Thermostat Bad",device_type="FRITZ!DECT 301"} 0
41+
# HELP fritzbox_thermostat_comfort Comfort temperature configured in units of 0.1 °C
42+
# TYPE fritzbox_thermostat_comfort gauge
43+
fritzbox_thermostat_comfort{device_id="09995 0003386",device_name="Thermostat Wohnzimmer",device_type="FRITZ!DECT 301"} 10
44+
fritzbox_thermostat_comfort{device_id="09995 0182300",device_name="Thermostat Bad",device_type="FRITZ!DECT 301"} 12
45+
# HELP fritzbox_thermostat_errorcode Thermostat error code (0 = OK), see https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/AHA-HTTP-Interface.pdf
46+
# TYPE fritzbox_thermostat_errorcode gauge
47+
fritzbox_thermostat_errorcode{device_id="09995 0003386",device_name="Thermostat Wohnzimmer",device_type="FRITZ!DECT 301"} 0
48+
fritzbox_thermostat_errorcode{device_id="09995 0182040",device_name="Thermostat Schlafzimmer",device_type="FRITZ!DECT 301"} 0
49+
fritzbox_thermostat_errorcode{device_id="09995 0182300",device_name="Thermostat Bad",device_type="FRITZ!DECT 301"} 0
50+
# HELP fritzbox_thermostat_goal Desired temperature (user controlled) in units of 0.1 °C
51+
# TYPE fritzbox_thermostat_goal gauge
52+
fritzbox_thermostat_goal{device_id="09995 0003386",device_name="Thermostat Wohnzimmer",device_type="FRITZ!DECT 301"} 10
53+
fritzbox_thermostat_goal{device_id="09995 0182300",device_name="Thermostat Bad",device_type="FRITZ!DECT 301"} 12
54+
# HELP fritzbox_thermostat_saving Configured energy saving temperature in units of 0.1 °C
55+
# TYPE fritzbox_thermostat_saving gauge
56+
fritzbox_thermostat_saving{device_id="09995 0003386",device_name="Thermostat Wohnzimmer",device_type="FRITZ!DECT 301"} 10
57+
fritzbox_thermostat_saving{device_id="09995 0182300",device_name="Thermostat Bad",device_type="FRITZ!DECT 301"} 8
58+
# HELP fritzbox_thermostat_state Thermostat state 1/0 (on/off), -1 if unknown or error
59+
# TYPE fritzbox_thermostat_state gauge
60+
fritzbox_thermostat_state{device_id="09995 0003386",device_name="Thermostat Wohnzimmer",device_type="FRITZ!DECT 301"} 1
61+
fritzbox_thermostat_state{device_id="09995 0182040",device_name="Thermostat Schlafzimmer",device_type="FRITZ!DECT 301"} 0
62+
fritzbox_thermostat_state{device_id="09995 0182300",device_name="Thermostat Bad",device_type="FRITZ!DECT 301"} 1
63+
# HELP fritzbox_thermostat_window_open 1 if detected an open window (usually turns off heating), 0 if not.
64+
# TYPE fritzbox_thermostat_window_open gauge
65+
fritzbox_thermostat_window_open{device_id="09995 0003386",device_name="Thermostat Wohnzimmer",device_type="FRITZ!DECT 301"} 0
66+
fritzbox_thermostat_window_open{device_id="09995 0182040",device_name="Thermostat Schlafzimmer",device_type="FRITZ!DECT 301"} 0
67+
fritzbox_thermostat_window_open{device_id="09995 0182300",device_name="Thermostat Bad",device_type="FRITZ!DECT 301"} 0

test/devicelist_731.xml

Lines changed: 182 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
1+
<devicelist version="1" fwversion="7.31">
2+
<device identifier="09995 0003386" id="16" functionbitmask="320" fwversion="05.02" manufacturer="AVM" productname="FRITZ!DECT 301">
3+
<present>1</present>
4+
<txbusy>0</txbusy>
5+
<name>Thermostat Wohnzimmer</name>
6+
<battery>100</battery>
7+
<batterylow>0</batterylow>
8+
<temperature>
9+
<celsius>225</celsius>
10+
<offset>0</offset>
11+
</temperature>
12+
<hkr>
13+
<tist>45</tist>
14+
<tsoll>20</tsoll>
15+
<absenk>20</absenk>
16+
<komfort>20</komfort>
17+
<lock>0</lock>
18+
<devicelock>0</devicelock>
19+
<errorcode>0</errorcode>
20+
<windowopenactiv>0</windowopenactiv>
21+
<windowopenactiveendtime>0</windowopenactiveendtime>
22+
<boostactive>0</boostactive>
23+
<boostactiveendtime>0</boostactiveendtime>
24+
<batterylow>0</batterylow>
25+
<battery>100</battery>
26+
<nextchange>
27+
<endperiod>0</endperiod>
28+
<tchange>20</tchange>
29+
</nextchange>
30+
<summeractive>0</summeractive>
31+
<holidayactive>0</holidayactive>
32+
</hkr>
33+
</device>
34+
<device identifier="09995 0182300" id="17" functionbitmask="320" fwversion="05.02" manufacturer="AVM" productname="FRITZ!DECT 301">
35+
<present>1</present>
36+
<txbusy>0</txbusy>
37+
<name>Thermostat Bad</name>
38+
<battery>60</battery>
39+
<batterylow>0</batterylow>
40+
<temperature>
41+
<celsius>245</celsius>
42+
<offset>0</offset>
43+
</temperature>
44+
<hkr>
45+
<tist>49</tist>
46+
<tsoll>24</tsoll>
47+
<absenk>16</absenk>
48+
<komfort>24</komfort>
49+
<lock>0</lock>
50+
<devicelock>0</devicelock>
51+
<errorcode>0</errorcode>
52+
<windowopenactiv>0</windowopenactiv>
53+
<windowopenactiveendtime>0</windowopenactiveendtime>
54+
<boostactive>0</boostactive>
55+
<boostactiveendtime>0</boostactiveendtime>
56+
<batterylow>0</batterylow>
57+
<battery>60</battery>
58+
<nextchange>
59+
<endperiod>0</endperiod>
60+
<tchange>24</tchange>
61+
</nextchange>
62+
<summeractive>0</summeractive>
63+
<holidayactive>0</holidayactive>
64+
</hkr>
65+
</device>
66+
<device identifier="09995 0182040" id="18" functionbitmask="320" fwversion="05.02" manufacturer="AVM" productname="FRITZ!DECT 301">
67+
<present>1</present>
68+
<txbusy>0</txbusy>
69+
<name>Thermostat Schlafzimmer</name>
70+
<battery>60</battery>
71+
<batterylow>0</batterylow>
72+
<temperature>
73+
<celsius>230</celsius>
74+
<offset>0</offset>
75+
</temperature>
76+
<hkr>
77+
<tist>46</tist>
78+
<tsoll>16</tsoll>
79+
<absenk>253</absenk>
80+
<komfort>40</komfort>
81+
<lock>0</lock>
82+
<devicelock>0</devicelock>
83+
<errorcode>0</errorcode>
84+
<windowopenactiv>0</windowopenactiv>
85+
<windowopenactiveendtime>0</windowopenactiveendtime>
86+
<boostactive>0</boostactive>
87+
<boostactiveendtime>0</boostactiveendtime>
88+
<batterylow>0</batterylow>
89+
<battery>60</battery>
90+
<nextchange>
91+
<endperiod>0</endperiod>
92+
<tchange>40</tchange>
93+
</nextchange>
94+
<summeractive>0</summeractive>
95+
<holidayactive>0</holidayactive>
96+
</hkr>
97+
</device>
98+
<group synchronized="1" identifier="7A:A5:7A-900" id="900" functionbitmask="4160" fwversion="1.0" manufacturer="AVM" productname="">
99+
<present>1</present>
100+
<txbusy>0</txbusy>
101+
<name>Heizung Wohnzimmer</name>
102+
<hkr>
103+
<tist></tist>
104+
<tsoll>20</tsoll>
105+
<absenk>20</absenk>
106+
<komfort>20</komfort>
107+
<lock>0</lock>
108+
<devicelock>0</devicelock>
109+
<errorcode>0</errorcode>
110+
<windowopenactiv>0</windowopenactiv>
111+
<windowopenactiveendtime>0</windowopenactiveendtime>
112+
<boostactive>0</boostactive>
113+
<boostactiveendtime>0</boostactiveendtime>
114+
<nextchange>
115+
<endperiod>0</endperiod>
116+
<tchange>20</tchange>
117+
</nextchange>
118+
<summeractive>0</summeractive>
119+
<holidayactive>0</holidayactive>
120+
</hkr>
121+
<groupinfo>
122+
<masterdeviceid>0</masterdeviceid>
123+
<members>16</members>
124+
</groupinfo>
125+
</group>
126+
<group synchronized="1" identifier="grp7AA57A-3A3E703C3" id="902" functionbitmask="4160" fwversion="1.0" manufacturer="AVM" productname="">
127+
<present>1</present>
128+
<txbusy>0</txbusy>
129+
<name>Heizung Bad</name>
130+
<hkr>
131+
<tist></tist>
132+
<tsoll>24</tsoll>
133+
<absenk>16</absenk>
134+
<komfort>24</komfort>
135+
<lock>0</lock>
136+
<devicelock>0</devicelock>
137+
<errorcode>0</errorcode>
138+
<windowopenactiv>0</windowopenactiv>
139+
<windowopenactiveendtime>0</windowopenactiveendtime>
140+
<boostactive>0</boostactive>
141+
<boostactiveendtime>0</boostactiveendtime>
142+
<nextchange>
143+
<endperiod>0</endperiod>
144+
<tchange>24</tchange>
145+
</nextchange>
146+
<summeractive>0</summeractive>
147+
<holidayactive>0</holidayactive>
148+
</hkr>
149+
<groupinfo>
150+
<masterdeviceid>0</masterdeviceid>
151+
<members>17</members>
152+
</groupinfo>
153+
</group>
154+
<group synchronized="1" identifier="grp7AA57A-3A8AFA86F" id="901" functionbitmask="4160" fwversion="1.0" manufacturer="AVM" productname="">
155+
<present>1</present>
156+
<txbusy>0</txbusy>
157+
<name>Heizung Schlafzimmer</name>
158+
<hkr>
159+
<tist></tist>
160+
<tsoll>16</tsoll>
161+
<absenk>253</absenk>
162+
<komfort>40</komfort>
163+
<lock>0</lock>
164+
<devicelock>0</devicelock>
165+
<errorcode>0</errorcode>
166+
<windowopenactiv>0</windowopenactiv>
167+
<windowopenactiveendtime>0</windowopenactiveendtime>
168+
<boostactive>0</boostactive>
169+
<boostactiveendtime>0</boostactiveendtime>
170+
<nextchange>
171+
<endperiod>0</endperiod>
172+
<tchange>40</tchange>
173+
</nextchange>
174+
<summeractive>0</summeractive>
175+
<holidayactive>0</holidayactive>
176+
</hkr>
177+
<groupinfo>
178+
<masterdeviceid>0</masterdeviceid>
179+
<members>18</members>
180+
</groupinfo>
181+
</group>
182+
</devicelist>

0 commit comments

Comments
 (0)