@mp-consulting/homebridge-daikin-cloud 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. package/.claude/settings.json +3 -0
  2. package/.claude/settings.local.json +8 -0
  3. package/CLAUDE.md +34 -0
  4. package/LICENSE +176 -0
  5. package/README.md +180 -0
  6. package/changelog.md +217 -0
  7. package/config.md +2 -0
  8. package/config.schema.json +146 -0
  9. package/dist/src/accessories/air-conditioning-accessory.d.ts +9 -0
  10. package/dist/src/accessories/air-conditioning-accessory.d.ts.map +1 -0
  11. package/dist/src/accessories/air-conditioning-accessory.js +19 -0
  12. package/dist/src/accessories/air-conditioning-accessory.js.map +1 -0
  13. package/dist/src/accessories/altherma-accessory.d.ts +11 -0
  14. package/dist/src/accessories/altherma-accessory.d.ts.map +1 -0
  15. package/dist/src/accessories/altherma-accessory.js +31 -0
  16. package/dist/src/accessories/altherma-accessory.js.map +1 -0
  17. package/dist/src/accessories/base-accessory.d.ts +16 -0
  18. package/dist/src/accessories/base-accessory.d.ts.map +1 -0
  19. package/dist/src/accessories/base-accessory.js +56 -0
  20. package/dist/src/accessories/base-accessory.js.map +1 -0
  21. package/dist/src/accessories/index.d.ts +4 -0
  22. package/dist/src/accessories/index.d.ts.map +1 -0
  23. package/dist/src/accessories/index.js +20 -0
  24. package/dist/src/accessories/index.js.map +1 -0
  25. package/dist/src/api/daikin-cloud.repository.d.ts +4 -0
  26. package/dist/src/api/daikin-cloud.repository.d.ts.map +1 -0
  27. package/dist/src/api/daikin-cloud.repository.js +31 -0
  28. package/dist/src/api/daikin-cloud.repository.js.map +1 -0
  29. package/dist/src/api/index.d.ts +2 -0
  30. package/dist/src/api/index.d.ts.map +1 -0
  31. package/dist/src/api/index.js +18 -0
  32. package/dist/src/api/index.js.map +1 -0
  33. package/dist/src/device/accessory-factory.d.ts +36 -0
  34. package/dist/src/device/accessory-factory.d.ts.map +1 -0
  35. package/dist/src/device/accessory-factory.js +61 -0
  36. package/dist/src/device/accessory-factory.js.map +1 -0
  37. package/dist/src/device/capability-detector.d.ts +36 -0
  38. package/dist/src/device/capability-detector.d.ts.map +1 -0
  39. package/dist/src/device/capability-detector.js +130 -0
  40. package/dist/src/device/capability-detector.js.map +1 -0
  41. package/dist/src/device/capability-docs.d.ts +20 -0
  42. package/dist/src/device/capability-docs.d.ts.map +1 -0
  43. package/dist/src/device/capability-docs.js +98 -0
  44. package/dist/src/device/capability-docs.js.map +1 -0
  45. package/dist/src/device/index.d.ts +5 -0
  46. package/dist/src/device/index.d.ts.map +1 -0
  47. package/dist/src/device/index.js +21 -0
  48. package/dist/src/device/index.js.map +1 -0
  49. package/dist/src/device/profiles/device-profile.d.ts +42 -0
  50. package/dist/src/device/profiles/device-profile.d.ts.map +1 -0
  51. package/dist/src/device/profiles/device-profile.js +103 -0
  52. package/dist/src/device/profiles/device-profile.js.map +1 -0
  53. package/dist/src/device/profiles/index.d.ts +2 -0
  54. package/dist/src/device/profiles/index.d.ts.map +1 -0
  55. package/dist/src/device/profiles/index.js +18 -0
  56. package/dist/src/device/profiles/index.js.map +1 -0
  57. package/dist/src/features/base-feature.d.ts +65 -0
  58. package/dist/src/features/base-feature.d.ts.map +1 -0
  59. package/dist/src/features/base-feature.js +99 -0
  60. package/dist/src/features/base-feature.js.map +1 -0
  61. package/dist/src/features/feature-manager.d.ts +37 -0
  62. package/dist/src/features/feature-manager.d.ts.map +1 -0
  63. package/dist/src/features/feature-manager.js +68 -0
  64. package/dist/src/features/feature-manager.js.map +1 -0
  65. package/dist/src/features/index.d.ts +4 -0
  66. package/dist/src/features/index.d.ts.map +1 -0
  67. package/dist/src/features/index.js +20 -0
  68. package/dist/src/features/index.js.map +1 -0
  69. package/dist/src/features/modes/dry-operation-mode.feature.d.ts +16 -0
  70. package/dist/src/features/modes/dry-operation-mode.feature.d.ts.map +1 -0
  71. package/dist/src/features/modes/dry-operation-mode.feature.js +40 -0
  72. package/dist/src/features/modes/dry-operation-mode.feature.js.map +1 -0
  73. package/dist/src/features/modes/econo-mode.feature.d.ts +15 -0
  74. package/dist/src/features/modes/econo-mode.feature.d.ts.map +1 -0
  75. package/dist/src/features/modes/econo-mode.feature.js +37 -0
  76. package/dist/src/features/modes/econo-mode.feature.js.map +1 -0
  77. package/dist/src/features/modes/fan-only-operation-mode.feature.d.ts +16 -0
  78. package/dist/src/features/modes/fan-only-operation-mode.feature.d.ts.map +1 -0
  79. package/dist/src/features/modes/fan-only-operation-mode.feature.js +40 -0
  80. package/dist/src/features/modes/fan-only-operation-mode.feature.js.map +1 -0
  81. package/dist/src/features/modes/index.d.ts +8 -0
  82. package/dist/src/features/modes/index.d.ts.map +1 -0
  83. package/dist/src/features/modes/index.js +24 -0
  84. package/dist/src/features/modes/index.js.map +1 -0
  85. package/dist/src/features/modes/indoor-silent-mode.feature.d.ts +17 -0
  86. package/dist/src/features/modes/indoor-silent-mode.feature.d.ts.map +1 -0
  87. package/dist/src/features/modes/indoor-silent-mode.feature.js +47 -0
  88. package/dist/src/features/modes/indoor-silent-mode.feature.js.map +1 -0
  89. package/dist/src/features/modes/outdoor-silent-mode.feature.d.ts +15 -0
  90. package/dist/src/features/modes/outdoor-silent-mode.feature.d.ts.map +1 -0
  91. package/dist/src/features/modes/outdoor-silent-mode.feature.js +37 -0
  92. package/dist/src/features/modes/outdoor-silent-mode.feature.js.map +1 -0
  93. package/dist/src/features/modes/powerful-mode.feature.d.ts +15 -0
  94. package/dist/src/features/modes/powerful-mode.feature.d.ts.map +1 -0
  95. package/dist/src/features/modes/powerful-mode.feature.js +37 -0
  96. package/dist/src/features/modes/powerful-mode.feature.js.map +1 -0
  97. package/dist/src/features/modes/streamer-mode.feature.d.ts +15 -0
  98. package/dist/src/features/modes/streamer-mode.feature.d.ts.map +1 -0
  99. package/dist/src/features/modes/streamer-mode.feature.js +37 -0
  100. package/dist/src/features/modes/streamer-mode.feature.js.map +1 -0
  101. package/dist/src/index.d.ts +7 -0
  102. package/dist/src/index.d.ts.map +1 -0
  103. package/dist/src/index.js +7 -0
  104. package/dist/src/index.js.map +1 -0
  105. package/dist/src/platform.d.ts +33 -0
  106. package/dist/src/platform.d.ts.map +1 -0
  107. package/dist/src/platform.js +209 -0
  108. package/dist/src/platform.js.map +1 -0
  109. package/dist/src/services/climate-control.service.d.ts +43 -0
  110. package/dist/src/services/climate-control.service.d.ts.map +1 -0
  111. package/dist/src/services/climate-control.service.js +366 -0
  112. package/dist/src/services/climate-control.service.js.map +1 -0
  113. package/dist/src/services/hot-water-tank.service.d.ts +23 -0
  114. package/dist/src/services/hot-water-tank.service.d.ts.map +1 -0
  115. package/dist/src/services/hot-water-tank.service.js +214 -0
  116. package/dist/src/services/hot-water-tank.service.js.map +1 -0
  117. package/dist/src/services/index.d.ts +3 -0
  118. package/dist/src/services/index.d.ts.map +1 -0
  119. package/dist/src/services/index.js +19 -0
  120. package/dist/src/services/index.js.map +1 -0
  121. package/dist/src/settings.d.ts +9 -0
  122. package/dist/src/settings.d.ts.map +1 -0
  123. package/dist/src/settings.js +12 -0
  124. package/dist/src/settings.js.map +1 -0
  125. package/dist/src/types/daikin-enums.d.ts +61 -0
  126. package/dist/src/types/daikin-enums.d.ts.map +1 -0
  127. package/dist/src/types/daikin-enums.js +76 -0
  128. package/dist/src/types/daikin-enums.js.map +1 -0
  129. package/dist/src/types/device-capabilities.d.ts +47 -0
  130. package/dist/src/types/device-capabilities.d.ts.map +1 -0
  131. package/dist/src/types/device-capabilities.js +7 -0
  132. package/dist/src/types/device-capabilities.js.map +1 -0
  133. package/dist/src/types/index.d.ts +3 -0
  134. package/dist/src/types/index.d.ts.map +1 -0
  135. package/dist/src/types/index.js +19 -0
  136. package/dist/src/types/index.js.map +1 -0
  137. package/dist/src/utils/strings.d.ts +5 -0
  138. package/dist/src/utils/strings.d.ts.map +1 -0
  139. package/dist/src/utils/strings.js +22 -0
  140. package/dist/src/utils/strings.js.map +1 -0
  141. package/docs/Screenshot 2024-07-04 at 18.41.28.png +0 -0
  142. package/docs/api-response-for-BRP069A8x.json +520 -0
  143. package/docs/api-response-for-BRP069C4x-2.json +881 -0
  144. package/docs/api-response-for-BRP069C4x.json +916 -0
  145. package/docs/api-response-for-altherma.json +759 -0
  146. package/docs/api-response-for-altherma2.json +2735 -0
  147. package/docs/api-response-with-multiple-devices-incl-heatpump.json +2544 -0
  148. package/docs/cr-insance-altherma-id-0.json +834 -0
  149. package/docs/mock-air-to-air-dx23.json +759 -0
  150. package/docs/mock-air-to-air-dx4.json +1134 -0
  151. package/docs/mock-airpurifier-with-humidifier.json +732 -0
  152. package/docs/mock-airpurifier.json +450 -0
  153. package/docs/mock-altherma-air-to-water-lan.json +845 -0
  154. package/docs/mock-altherma-air-to-water-wlan.json +845 -0
  155. package/docs/mock-d2cnd-gas-boiler.json +649 -0
  156. package/docs/setpointmode-vs-controlmode-vs-setpoints-vs-sensorydata.txt +6 -0
  157. package/homebridge-ui/README.md +35 -0
  158. package/homebridge-ui/public/index.html +222 -0
  159. package/homebridge-ui/public/script.js +796 -0
  160. package/homebridge-ui/public/styles.css +456 -0
  161. package/homebridge-ui/server.js +909 -0
  162. package/jest.config.ts +13 -0
  163. package/package.json +63 -0
  164. package/test/fixtures/altherma-crSense-2.ts +834 -0
  165. package/test/fixtures/altherma-fraction.ts +719 -0
  166. package/test/fixtures/altherma-heat-pump-2.ts +479 -0
  167. package/test/fixtures/altherma-heat-pump.ts +758 -0
  168. package/test/fixtures/altherma-miladcerkic-off.ts +524 -0
  169. package/test/fixtures/altherma-miladcerkic.ts +524 -0
  170. package/test/fixtures/altherma-v1ckoeln.ts +645 -0
  171. package/test/fixtures/altherma-with-embedded-id-zero.ts +834 -0
  172. package/test/fixtures/dx23-airco-2.ts +343 -0
  173. package/test/fixtures/dx23-airco.ts +519 -0
  174. package/test/fixtures/dx4-airco.ts +915 -0
  175. package/test/fixtures/unknown-jan.ts +489 -0
  176. package/test/fixtures/unknown-kitchen-guests.ts +489 -0
  177. package/test/hbConfig/.daikin-controller-cloud-tokenset +8 -0
  178. package/test/hbConfig/.uix-dashboard.json +1 -0
  179. package/test/hbConfig/.uix-secrets +1 -0
  180. package/test/hbConfig/accessories/.cachedAccessories.bak +1 -0
  181. package/test/hbConfig/accessories/cachedAccessories +1 -0
  182. package/test/hbConfig/accessories/uiAccessoriesLayout.json +1 -0
  183. package/test/hbConfig/auth.json +10 -0
  184. package/test/hbConfig/backups/config-backups/config.json.1767953686461 +25 -0
  185. package/test/hbConfig/backups/config-backups/config.json.1767953695236 +29 -0
  186. package/test/hbConfig/backups/config-backups/config.json.1767953814763 +29 -0
  187. package/test/hbConfig/backups/config-backups/config.json.1767953823101 +29 -0
  188. package/test/hbConfig/backups/config-backups/config.json.1767954822835 +29 -0
  189. package/test/hbConfig/backups/config-backups/config.json.1767954859218 +29 -0
  190. package/test/hbConfig/config.json +33 -0
  191. package/test/hbConfig/daikin-cloud-certs/server.crt +22 -0
  192. package/test/hbConfig/daikin-cloud-certs/server.key +28 -0
  193. package/test/hbConfig/persist/AccessoryInfo.1E4A432551BA.json +1 -0
  194. package/test/hbConfig/persist/IdentifierCache.1E4A432551BA.json +1 -0
  195. package/test/integration/air-conditioning.test.ts +396 -0
  196. package/test/integration/altherma.test.ts +288 -0
  197. package/test/integration/platform.test.ts +101 -0
  198. package/test/mocks/index.ts +27 -0
  199. package/test/unit/api/__snapshots__/daikinCloud.test.ts.snap +1323 -0
  200. package/test/unit/api/daikinCloud.test.ts +12 -0
  201. package/test/unit/device/daikin-device.test.ts +29 -0
  202. package/test/unit/services/hot-water-tank.service.test.ts +107 -0
@@ -0,0 +1,645 @@
1
+ // introduced via https://github.com/mp-consulting/homebridge-daikin-cloud/issues/81
2
+
3
+ export const althermaV1ckoeln = {
4
+ '_id': 'ef81d359-4501-431f-9479-d71594658b51',
5
+ 'deviceModel': 'Altherma',
6
+ 'type': 'heating-wlan',
7
+ 'isCloudConnectionUp': {
8
+ 'settable': false,
9
+ 'value': true,
10
+ },
11
+ 'managementPoints': [
12
+ {
13
+ 'embeddedId': 'gateway',
14
+ 'managementPointType': 'gateway',
15
+ 'managementPointCategory': 'secondary',
16
+ 'firmwareVersion': {
17
+ 'settable': false,
18
+ 'value': '3.3.0',
19
+ 'maxLength': 8,
20
+ },
21
+ 'ipAddress': {
22
+ 'settable': false,
23
+ 'value': '192.168.0.90',
24
+ },
25
+ 'isFirmwareUpdateSupported': {
26
+ 'settable': false,
27
+ 'requiresReboot': false,
28
+ 'value': true,
29
+ },
30
+ 'macAddress': {
31
+ 'settable': false,
32
+ 'value': '90:e8:68:bc:bf:d9',
33
+ 'maxLength': 17,
34
+ },
35
+ 'modelInfo': {
36
+ 'settable': false,
37
+ 'value': 'BRP069A78',
38
+ 'maxLength': 9,
39
+ },
40
+ 'name': {
41
+ 'settable': false,
42
+ 'requiresReboot': false,
43
+ 'value': 'Gateway',
44
+ 'maxLength': 63,
45
+ },
46
+ },
47
+ {
48
+ 'embeddedId': 'climateControlMainZone',
49
+ 'managementPointType': 'climateControl',
50
+ 'managementPointCategory': 'primary',
51
+ 'managementPointSubType': 'mainZone',
52
+ 'consumptionData': {
53
+ 'settable': false,
54
+ 'requiresReboot': false,
55
+ 'ref': '#consumptionData',
56
+ 'value': {
57
+ 'electrical': {
58
+ 'heating': {
59
+ 'd': [
60
+ 0,
61
+ 0,
62
+ 0,
63
+ 0,
64
+ 0,
65
+ 0,
66
+ 0,
67
+ 0,
68
+ 0,
69
+ 0,
70
+ 0,
71
+ 0,
72
+ 0,
73
+ 0,
74
+ 0,
75
+ 0,
76
+ 0,
77
+ 0,
78
+ 0,
79
+ null,
80
+ null,
81
+ null,
82
+ null,
83
+ null,
84
+ ],
85
+ 'w': [
86
+ 0,
87
+ 0,
88
+ 0,
89
+ 0,
90
+ 0,
91
+ 0,
92
+ 0,
93
+ 0,
94
+ 0,
95
+ 0,
96
+ 0,
97
+ 0,
98
+ 0,
99
+ 0,
100
+ ],
101
+ 'm': [
102
+ null,
103
+ null,
104
+ null,
105
+ null,
106
+ null,
107
+ 0,
108
+ 0,
109
+ 0,
110
+ 0,
111
+ 95,
112
+ 278,
113
+ 400,
114
+ 653,
115
+ 270,
116
+ 242,
117
+ 175,
118
+ 28,
119
+ 0,
120
+ 0,
121
+ 0,
122
+ null,
123
+ null,
124
+ null,
125
+ null,
126
+ ],
127
+ },
128
+ 'cooling': {
129
+ 'd': [
130
+ 0,
131
+ 0,
132
+ 0,
133
+ 0,
134
+ 0,
135
+ 0,
136
+ 0,
137
+ 0,
138
+ 0,
139
+ 0,
140
+ 0,
141
+ 0,
142
+ 0,
143
+ 0,
144
+ 0,
145
+ 0,
146
+ 0,
147
+ 0,
148
+ 0,
149
+ null,
150
+ null,
151
+ null,
152
+ null,
153
+ null,
154
+ ],
155
+ 'w': [
156
+ 0,
157
+ 0,
158
+ 0,
159
+ 0,
160
+ 0,
161
+ 0,
162
+ 0,
163
+ 0,
164
+ 0,
165
+ 0,
166
+ 0,
167
+ 0,
168
+ 0,
169
+ 0,
170
+ ],
171
+ 'm': [
172
+ null,
173
+ null,
174
+ null,
175
+ null,
176
+ null,
177
+ 0,
178
+ 0,
179
+ 0,
180
+ 0,
181
+ 0,
182
+ 0,
183
+ 0,
184
+ 0,
185
+ 0,
186
+ 0,
187
+ 0,
188
+ 0,
189
+ 0,
190
+ 0,
191
+ 0,
192
+ null,
193
+ null,
194
+ null,
195
+ null,
196
+ ],
197
+ },
198
+ 'unit': 'kWh',
199
+ },
200
+ },
201
+ },
202
+ 'controlMode': {
203
+ 'settable': false,
204
+ 'requiresReboot': false,
205
+ 'value': 'leavingWaterTemperature',
206
+ 'values': [
207
+ 'leavingWaterTemperature',
208
+ 'externalRoomTemperature',
209
+ 'roomTemperature',
210
+ ],
211
+ },
212
+ 'errorCode': {
213
+ 'settable': false,
214
+ 'requiresReboot': false,
215
+ 'value': '',
216
+ 'maxLength': 16,
217
+ },
218
+ 'holidayMode': {
219
+ 'settable': true,
220
+ 'requiresReboot': false,
221
+ 'ref': '#holidayMode',
222
+ 'value': {
223
+ 'enabled': false,
224
+ 'startDate': '2017-01-01',
225
+ 'endDate': '2017-01-01',
226
+ },
227
+ },
228
+ 'isHolidayModeActive': {
229
+ 'settable': false,
230
+ 'requiresReboot': false,
231
+ 'value': false,
232
+ },
233
+ 'isInEmergencyState': {
234
+ 'settable': false,
235
+ 'requiresReboot': false,
236
+ 'value': false,
237
+ },
238
+ 'isInErrorState': {
239
+ 'settable': false,
240
+ 'requiresReboot': false,
241
+ 'value': false,
242
+ },
243
+ 'isInInstallerState': {
244
+ 'settable': false,
245
+ 'requiresReboot': false,
246
+ 'value': false,
247
+ },
248
+ 'isInWarningState': {
249
+ 'settable': false,
250
+ 'requiresReboot': false,
251
+ 'value': false,
252
+ },
253
+ 'name': {
254
+ 'settable': false,
255
+ 'requiresReboot': false,
256
+ 'value': 'Heizung',
257
+ 'maxLength': 63,
258
+ },
259
+ 'onOffMode': {
260
+ 'settable': true,
261
+ 'requiresReboot': false,
262
+ 'value': 'off',
263
+ 'values': [
264
+ 'off',
265
+ 'on',
266
+ ],
267
+ },
268
+ 'operationMode': {
269
+ 'settable': true,
270
+ 'requiresReboot': false,
271
+ 'value': 'heating',
272
+ 'values': [
273
+ 'heating',
274
+ 'cooling',
275
+ 'auto',
276
+ ],
277
+ },
278
+ 'sensoryData': {
279
+ 'settable': false,
280
+ 'ref': '#sensoryData',
281
+ 'value': {
282
+ 'leavingWaterTemperature': {
283
+ 'settable': false,
284
+ 'requiresReboot': false,
285
+ 'value': 34,
286
+ 'maxValue': 127,
287
+ 'minValue': -127,
288
+ 'stepValue': 1,
289
+ },
290
+ 'outdoorTemperature': {
291
+ 'settable': false,
292
+ 'requiresReboot': false,
293
+ 'value': 23,
294
+ 'maxValue': 127,
295
+ 'minValue': -127,
296
+ 'stepValue': 1,
297
+ },
298
+ 'roomTemperature': {
299
+ 'settable': false,
300
+ 'requiresReboot': false,
301
+ 'value': 27.5,
302
+ 'maxValue': 127,
303
+ 'minValue': -127,
304
+ 'stepValue': 0.1,
305
+ },
306
+ },
307
+ },
308
+ 'setpointMode': {
309
+ 'settable': false,
310
+ 'requiresReboot': true,
311
+ 'value': 'weatherDependentHeatingFixedCooling',
312
+ 'values': [
313
+ 'fixed',
314
+ 'weatherDependentHeatingFixedCooling',
315
+ 'weatherDependent',
316
+ ],
317
+ },
318
+ 'temperatureControl': {
319
+ 'settable': true,
320
+ 'ref': '#temperatureControl',
321
+ 'value': {
322
+ 'operationModes': {
323
+ 'auto': {
324
+ 'setpoints': {
325
+ 'leavingWaterOffset': {
326
+ 'settable': true,
327
+ 'requiresReboot': false,
328
+ 'value': 0,
329
+ 'maxValue': 10,
330
+ 'minValue': -10,
331
+ 'stepValue': 1,
332
+ },
333
+ },
334
+ },
335
+ 'cooling': {
336
+ 'setpoints': {
337
+ 'leavingWaterTemperature': {
338
+ 'settable': false,
339
+ 'requiresReboot': false,
340
+ 'value': 20,
341
+ 'maxValue': 22,
342
+ 'minValue': 18,
343
+ 'stepValue': 1,
344
+ },
345
+ },
346
+ },
347
+ 'heating': {
348
+ 'setpoints': {
349
+ 'leavingWaterOffset': {
350
+ 'settable': true,
351
+ 'requiresReboot': false,
352
+ 'value': 0,
353
+ 'maxValue': 10,
354
+ 'minValue': -10,
355
+ 'stepValue': 1,
356
+ },
357
+ },
358
+ },
359
+ },
360
+ },
361
+ },
362
+ },
363
+ {
364
+ 'embeddedId': 'domesticHotWaterTank',
365
+ 'managementPointType': 'domesticHotWaterTank',
366
+ 'managementPointCategory': 'primary',
367
+ 'consumptionData': {
368
+ 'settable': false,
369
+ 'requiresReboot': false,
370
+ 'ref': '#consumptionData',
371
+ 'value': {
372
+ 'electrical': {
373
+ 'heating': {
374
+ 'd': [
375
+ 0,
376
+ 0,
377
+ 0,
378
+ 1,
379
+ 0,
380
+ 0,
381
+ 1,
382
+ 0,
383
+ 0,
384
+ 0,
385
+ 0,
386
+ 1,
387
+ 0,
388
+ 1,
389
+ 0,
390
+ 0,
391
+ 0,
392
+ 0,
393
+ 1,
394
+ null,
395
+ null,
396
+ null,
397
+ null,
398
+ null,
399
+ ],
400
+ 'w': [
401
+ 4,
402
+ 3,
403
+ 2,
404
+ 4,
405
+ 2,
406
+ 2,
407
+ 4,
408
+ 6,
409
+ 2,
410
+ 2,
411
+ 3,
412
+ 4,
413
+ 3,
414
+ 2,
415
+ ],
416
+ 'm': [
417
+ null,
418
+ null,
419
+ null,
420
+ null,
421
+ null,
422
+ 94,
423
+ 74,
424
+ 82,
425
+ 82,
426
+ 114,
427
+ 157,
428
+ 189,
429
+ 228,
430
+ 173,
431
+ 169,
432
+ 148,
433
+ 126,
434
+ 134,
435
+ 103,
436
+ 54,
437
+ null,
438
+ null,
439
+ null,
440
+ null,
441
+ ],
442
+ },
443
+ 'unit': 'kWh',
444
+ },
445
+ },
446
+ },
447
+ 'errorCode': {
448
+ 'settable': false,
449
+ 'requiresReboot': false,
450
+ 'value': '',
451
+ 'maxLength': 16,
452
+ },
453
+ 'heatupMode': {
454
+ 'settable': false,
455
+ 'requiresReboot': true,
456
+ 'value': 'reheatOnly',
457
+ 'values': [
458
+ 'reheatOnly',
459
+ 'reheatSchedule',
460
+ 'scheduleOnly',
461
+ ],
462
+ },
463
+ 'isHolidayModeActive': {
464
+ 'settable': false,
465
+ 'requiresReboot': false,
466
+ 'value': false,
467
+ },
468
+ 'isInEmergencyState': {
469
+ 'settable': false,
470
+ 'requiresReboot': false,
471
+ 'value': false,
472
+ },
473
+ 'isInErrorState': {
474
+ 'settable': false,
475
+ 'requiresReboot': false,
476
+ 'value': false,
477
+ },
478
+ 'isInInstallerState': {
479
+ 'settable': false,
480
+ 'requiresReboot': false,
481
+ 'value': false,
482
+ },
483
+ 'isInWarningState': {
484
+ 'settable': false,
485
+ 'requiresReboot': false,
486
+ 'value': false,
487
+ },
488
+ 'isPowerfulModeActive': {
489
+ 'settable': false,
490
+ 'requiresReboot': false,
491
+ 'value': false,
492
+ },
493
+ 'name': {
494
+ 'settable': false,
495
+ 'requiresReboot': false,
496
+ 'value': '',
497
+ 'maxLength': 63,
498
+ },
499
+ 'onOffMode': {
500
+ 'settable': true,
501
+ 'requiresReboot': false,
502
+ 'value': 'on',
503
+ 'values': [
504
+ 'off',
505
+ 'on',
506
+ ],
507
+ },
508
+ 'operationMode': {
509
+ 'settable': false,
510
+ 'value': 'heating',
511
+ 'values': [
512
+ 'heating',
513
+ ],
514
+ },
515
+ 'powerfulMode': {
516
+ 'settable': true,
517
+ 'requiresReboot': false,
518
+ 'value': 'off',
519
+ 'values': [
520
+ 'off',
521
+ 'on',
522
+ ],
523
+ },
524
+ 'sensoryData': {
525
+ 'settable': false,
526
+ 'ref': '#sensoryData',
527
+ 'value': {
528
+ 'tankTemperature': {
529
+ 'settable': false,
530
+ 'requiresReboot': false,
531
+ 'value': 42,
532
+ 'maxValue': 127,
533
+ 'minValue': -127,
534
+ 'stepValue': 1,
535
+ },
536
+ },
537
+ },
538
+ 'setpointMode': {
539
+ 'settable': false,
540
+ 'requiresReboot': false,
541
+ 'value': 'fixed',
542
+ 'values': [
543
+ 'fixed',
544
+ 'weatherDependent',
545
+ ],
546
+ },
547
+ 'temperatureControl': {
548
+ 'settable': true,
549
+ 'ref': '#temperatureControl',
550
+ 'value': {
551
+ 'operationModes': {
552
+ 'heating': {
553
+ 'setpoints': {
554
+ 'domesticHotWaterTemperature': {
555
+ 'settable': true,
556
+ 'requiresReboot': false,
557
+ 'value': 46,
558
+ 'maxValue': 60,
559
+ 'minValue': 30,
560
+ 'stepValue': 1,
561
+ },
562
+ },
563
+ },
564
+ },
565
+ },
566
+ },
567
+ },
568
+ {
569
+ 'embeddedId': 'indoorUnitHydro',
570
+ 'managementPointType': 'indoorUnitHydro',
571
+ 'managementPointCategory': 'secondary',
572
+ 'modelInfo': {
573
+ 'settable': false,
574
+ 'requiresReboot': false,
575
+ 'value': 'EHVX08S18EJ6V',
576
+ 'maxLength': 16,
577
+ },
578
+ 'name': {
579
+ 'settable': false,
580
+ 'requiresReboot': false,
581
+ 'value': 'Indoor Hydro Unit',
582
+ 'maxLength': 63,
583
+ },
584
+ 'softwareVersion': {
585
+ 'settable': false,
586
+ 'requiresReboot': false,
587
+ 'value': '0222',
588
+ 'maxLength': 16,
589
+ },
590
+ },
591
+ {
592
+ 'embeddedId': 'outdoorUnit',
593
+ 'managementPointType': 'outdoorUnit',
594
+ 'managementPointCategory': 'secondary',
595
+ 'name': {
596
+ 'settable': false,
597
+ 'requiresReboot': false,
598
+ 'value': 'Outdoor Unit',
599
+ 'maxLength': 63,
600
+ },
601
+ 'softwareVersion': {
602
+ 'settable': false,
603
+ 'requiresReboot': false,
604
+ 'value': 'FFFF',
605
+ 'maxLength': 16,
606
+ },
607
+ },
608
+ {
609
+ 'embeddedId': 'userInterface',
610
+ 'managementPointType': 'userInterface',
611
+ 'managementPointCategory': 'secondary',
612
+ 'firmwareUpdate': {
613
+ 'settable': false,
614
+ 'ref': '#firmwareUpdate',
615
+ 'value': {
616
+ 'id': 'cac72760-a172-4216-a5d5-cbb91822ca8d',
617
+ 'description': 'MMI2 Firmware 7.5.0 for BML CD2 (E series)',
618
+ 'version': '7.5.0',
619
+ 'type': 'optional',
620
+ },
621
+ },
622
+ 'modelInfo': {
623
+ 'settable': false,
624
+ 'requiresReboot': false,
625
+ 'value': 'EHVX08S18EJ6V',
626
+ 'maxLength': 16,
627
+ },
628
+ 'name': {
629
+ 'settable': false,
630
+ 'requiresReboot': false,
631
+ 'value': 'User Interface',
632
+ 'maxLength': 63,
633
+ },
634
+ 'softwareVersion': {
635
+ 'settable': false,
636
+ 'requiresReboot': false,
637
+ 'value': '7.1.0',
638
+ 'maxLength': 16,
639
+ },
640
+ },
641
+ ],
642
+ 'embeddedId': 'bbfb5284-036a-44ff-96f8-9cde288e1beb',
643
+ 'timestamp': '2024-08-18T13:31:41.225Z',
644
+ 'id': 'ef81d359-4501-431f-9479-d71594658b51',
645
+ };