iobroker.poolcontrol 1.1.0 → 1.2.1

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 (66) hide show
  1. package/README.md +287 -288
  2. package/admin/i18n/de/translations.json +158 -4
  3. package/admin/i18n/en/translations.json +161 -3
  4. package/admin/i18n/es/translations.json +158 -4
  5. package/admin/i18n/fr/translations.json +158 -4
  6. package/admin/i18n/it/translations.json +158 -4
  7. package/admin/i18n/nl/translations.json +158 -4
  8. package/admin/i18n/pl/translations.json +158 -4
  9. package/admin/i18n/pt/translations.json +158 -4
  10. package/admin/i18n/ru/translations.json +158 -4
  11. package/admin/i18n/uk/translations.json +158 -4
  12. package/admin/i18n/zh-cn/translations.json +158 -4
  13. package/admin/jsonConfig.json +1376 -1371
  14. package/io-package.json +107 -100
  15. package/lib/helpers/actuatorsHelper.js +6 -8
  16. package/lib/helpers/aiChemistryHelpHelper.js +7 -7
  17. package/lib/helpers/aiForecastHelper.js +21 -21
  18. package/lib/helpers/aiHelper.js +53 -63
  19. package/lib/helpers/consumptionHelper.js +23 -25
  20. package/lib/helpers/controlHelper.js +24 -24
  21. package/lib/helpers/controlHelper2.js +17 -17
  22. package/lib/helpers/debugLogHelper.js +12 -14
  23. package/lib/helpers/frostHelper.js +6 -6
  24. package/lib/helpers/heatHelper.js +14 -14
  25. package/lib/helpers/infoHelper.js +2 -2
  26. package/lib/helpers/migrationHelper.js +16 -16
  27. package/lib/helpers/photovoltaicHelper.js +28 -28
  28. package/lib/helpers/pumpHelper.js +16 -18
  29. package/lib/helpers/pumpHelper2.js +8 -10
  30. package/lib/helpers/pumpHelper3.js +9 -9
  31. package/lib/helpers/pumpHelper4.js +9 -9
  32. package/lib/helpers/pumpSpeedHelper.js +6 -6
  33. package/lib/helpers/runtimeHelper.js +14 -14
  34. package/lib/helpers/solarHelper.js +9 -9
  35. package/lib/helpers/speechHelper.js +13 -15
  36. package/lib/helpers/speechTextHelper.js +13 -13
  37. package/lib/helpers/statisticsHelper.js +9 -9
  38. package/lib/helpers/statisticsHelperMonth.js +15 -15
  39. package/lib/helpers/statisticsHelperWeek.js +11 -11
  40. package/lib/helpers/statusHelper.js +9 -9
  41. package/lib/helpers/temperatureHelper.js +9 -11
  42. package/lib/helpers/timeHelper.js +7 -9
  43. package/lib/stateDefinitions/actuatorsStates.js +19 -19
  44. package/lib/stateDefinitions/aiChemistryHelpStates.js +59 -28
  45. package/lib/stateDefinitions/aiStates.js +119 -31
  46. package/lib/stateDefinitions/consumptionStates.js +20 -14
  47. package/lib/stateDefinitions/controlStates.js +90 -37
  48. package/lib/stateDefinitions/debugLogStates.js +28 -13
  49. package/lib/stateDefinitions/generalStates.js +4 -4
  50. package/lib/stateDefinitions/heatStates.js +21 -21
  51. package/lib/stateDefinitions/infoStates.js +11 -5
  52. package/lib/stateDefinitions/photovoltaicStates.js +52 -24
  53. package/lib/stateDefinitions/pumpSpeedStates.js +11 -11
  54. package/lib/stateDefinitions/pumpStates.js +24 -15
  55. package/lib/stateDefinitions/pumpStates2.js +22 -10
  56. package/lib/stateDefinitions/pumpStates3.js +63 -24
  57. package/lib/stateDefinitions/pumpStates4.js +62 -32
  58. package/lib/stateDefinitions/runtimeStates.js +10 -10
  59. package/lib/stateDefinitions/solarStates.js +9 -9
  60. package/lib/stateDefinitions/speechStates.js +24 -21
  61. package/lib/stateDefinitions/statisticsStates.js +107 -29
  62. package/lib/stateDefinitions/statusStates.js +14 -12
  63. package/lib/stateDefinitions/temperatureStates.js +18 -12
  64. package/lib/stateDefinitions/timeStates.js +5 -5
  65. package/main.js +38 -0
  66. package/package.json +7 -8
@@ -1,14 +1,14 @@
1
1
  {
2
- "i18n": false,
2
+ "i18n": true,
3
3
  "type": "tabs",
4
4
  "items": {
5
5
  "general": {
6
6
  "type": "panel",
7
- "label": "Allg. Einstellungen",
7
+ "label": "General Settings",
8
8
  "items": {
9
9
  "general_header": {
10
10
  "type": "header",
11
- "text": "Allgemeine Einstellungen zum Pool",
11
+ "text": "General Pool Settings",
12
12
  "size": 4,
13
13
  "newLine": true,
14
14
  "xs": 12,
@@ -19,47 +19,47 @@
19
19
  },
20
20
  "pool_name": {
21
21
  "type": "text",
22
- "label": "Name des Pools",
23
- "default": "Mein Pool",
24
- "xs": 12,
22
+ "label": "Pool Name",
23
+ "default": "My Pool",
24
+ "xs": 12,
25
25
  "sm": 3,
26
- "md": 3,
27
- "lg": 3,
28
- "xl": 3,
26
+ "md": 3,
27
+ "lg": 3,
28
+ "xl": 3,
29
29
  "newLine": true
30
30
  },
31
31
  "pool_size": {
32
32
  "type": "number",
33
- "label": "Poolgröße (Liter)",
33
+ "label": "Pool Size (Liters)",
34
34
  "default": 30000,
35
- "xs": 12,
35
+ "xs": 12,
36
36
  "sm": 3,
37
- "md": 3,
38
- "lg": 3,
39
- "xl": 3,
37
+ "md": 3,
38
+ "lg": 3,
39
+ "xl": 3,
40
40
  "newLine": true
41
41
  },
42
42
  "min_circulation_per_day": {
43
43
  "type": "select",
44
- "label": "Min. Umwälzung pro Tag",
44
+ "label": "Minimum Circulation per Day",
45
45
  "options": [
46
- { "label": "0,5x", "value": 0.5 },
47
- { "label": "1,0x", "value": 1.0 },
48
- { "label": "1,5x", "value": 1.5 },
49
- { "label": "2,0x", "value": 2.0 },
50
- { "label": "2,5x", "value": 2.5 },
51
- { "label": "3,0x", "value": 3.0 }
46
+ { "label": "0.5x", "value": 0.5 },
47
+ { "label": "1.0x", "value": 1.0 },
48
+ { "label": "1.5x", "value": 1.5 },
49
+ { "label": "2.0x", "value": 2.0 },
50
+ { "label": "2.5x", "value": 2.5 },
51
+ { "label": "3.0x", "value": 3.0 }
52
52
  ],
53
53
  "default": 1,
54
- "xs": 12,
54
+ "xs": 12,
55
55
  "sm": 3,
56
- "md": 3,
57
- "lg": 3,
58
- "xl": 3
56
+ "md": 3,
57
+ "lg": 3,
58
+ "xl": 3
59
59
  },
60
60
  "general_season_header": {
61
61
  "type": "header",
62
- "text": "Saisoneinstellungen",
62
+ "text": "Season Settings",
63
63
  "size": 4,
64
64
  "newLine": true,
65
65
  "xs": 12,
@@ -70,7 +70,7 @@
70
70
  },
71
71
  "season_active": {
72
72
  "type": "checkbox",
73
- "label": "Poolsaison aktiv",
73
+ "label": "Pool Season Active",
74
74
  "default": false,
75
75
  "xs": 12,
76
76
  "sm": 3,
@@ -88,1226 +88,1049 @@
88
88
  "md": 3,
89
89
  "lg": 3,
90
90
  "xl": 3
91
- },
91
+ }
92
92
  }
93
93
  },
94
94
  "pump": {
95
- "type": "panel",
96
- "label": "Pumpe",
97
- "items": {
98
- "Leistung_header": {
99
- "type": "header",
100
- "text": "Pumpeneinstellungen (Nennleistung)",
101
- "size": 4,
102
- "newLine": true,
103
- "xs": 12,
104
- "sm": 12,
105
- "md": 12,
106
- "lg": 12,
107
- "xl": 12
108
- },
109
- "pump_max_watt": {
110
- "type": "number",
111
- "label": "Max. Leistung (Watt)",
112
- "default": 1000,
113
- "xs": 12,
114
- "sm": 3,
115
- "md": 3,
116
- "lg": 3,
117
- "xl": 3,
118
- "newLine": true
119
- },
120
- "pump_power_lph": {
121
- "type": "number",
122
- "label": "Pumpenleistung (l/h)",
123
- "default": 6000,
124
- "xs": 12,
125
- "sm": 3,
126
- "md": 3,
127
- "lg": 3,
128
- "xl": 3
129
- },
130
- "Frostschutz_header": {
131
- "type": "header",
132
- "text": "Frostschutz",
133
- "size": 4,
134
- "newLine": true,
135
- "xs": 12,
136
- "sm": 12,
137
- "md": 12,
138
- "lg": 12,
139
- "xl": 12
140
- },
141
- "frost_protection_active": {
142
- "type": "checkbox",
143
- "label": "Frostschutz aktivieren",
144
- "default": false,
145
- "xs": 12,
146
- "sm": 3,
147
- "md": 3,
148
- "lg": 3,
149
- "xl": 3,
150
- "newLine": true
151
- },
152
- "frost_protection_temp": {
153
- "type": "number",
154
- "label": "Frostschutz-Temperatur (°C)",
155
- "default": 2,
156
- "xs": 12,
157
- "sm": 3,
158
- "md": 3,
159
- "lg": 3,
160
- "xl": 3
161
- },
162
- "pumpswitch_header": {
163
- "type": "header",
164
- "text": "Pumpendatenpunkte (Messsteckdose & Aktueller Verbrauch Watt)",
165
- "size": 4,
166
- "newLine": true,
167
- "xs": 12,
168
- "sm": 12,
169
- "md": 12,
170
- "lg": 12,
171
- "xl": 12
172
- },
173
- "pump_switch": {
174
- "type": "objectId",
175
- "label": "Objekt-ID schaltbare Steckdose Pumpe",
176
- "default": "",
177
- "xs": 12,
178
- "sm": 3,
179
- "md": 3,
180
- "lg": 3,
181
- "xl": 3
182
- },
183
- "pump_current_power_id": {
184
- "type": "objectId",
185
- "label": "Objekt-ID aktuelle Leistung (W)",
186
- "default": "",
187
- "xs": 12,
188
- "sm": 3,
189
- "md": 3,
190
- "lg": 3,
191
- "xl": 3
192
- },
193
- "pump_mode_hint": {
194
- "type": "staticText",
195
- "text": "Pumpenmodus (Automatik/Manuell/Aus/Zeit) kann über den Datenpunkt 'pump.mode' gesteuert werden.",
196
- "newLine": true,
197
- "xs": 12,
198
- "sm": 12,
199
- "md": 12,
200
- "lg": 12,
201
- "xl": 12
202
- },
203
- "pressure_header": {
204
- "type": "header",
205
- "text": "Drucksensor (Filterdruck)",
206
- "size": 4,
207
- "newLine": true,
208
- "xs": 12,
209
- "sm": 12,
210
- "md": 12,
211
- "lg": 12,
212
- "xl": 12
213
- },
214
- "use_pressure_sensor": {
215
- "type": "checkbox",
216
- "label": "Drucksensor verwenden",
217
- "default": false,
218
- "xs": 12,
219
- "sm": 3,
220
- "md": 3,
221
- "lg": 3,
222
- "xl": 3,
223
- "newLine": true
224
- },
225
- "pressure_sensor_id": {
226
- "type": "objectId",
227
- "label": "Objekt-ID Drucksensor (bar)",
228
- "default": "",
229
- "xs": 12,
230
- "sm": 3,
231
- "md": 3,
232
- "lg": 3,
233
- "xl": 3
234
- },
235
- "pressure_hint": {
236
- "type": "staticText",
237
- "text": "Hinweis: Unterstützt sowohl externe Sensoren als auch die PoolControl-Druckbox.",
238
- "newLine": true,
239
- "xs": 12,
240
- "sm": 12,
241
- "md": 12,
242
- "lg": 12,
243
- "xl": 12
244
- },
245
- "pump_safety_header": {
246
- "type": "header",
247
- "text": "Sicherheitsfunktionen",
248
- "size": 4,
249
- "newLine": true,
250
- "xs": 12,
251
- "sm": 12,
252
- "md": 12,
253
- "lg": 12,
254
- "xl": 12
255
- },
256
- "manual_safety_enabled": {
257
- "type": "checkbox",
258
- "label": "Sicherheitsfunktionen auch im Modus 'Manuell' aktivieren",
259
- "default": true,
260
- "xs": 12,
261
- "sm": 6,
262
- "md": 6,
263
- "lg": 6,
264
- "xl": 6,
265
- "newLine": true
266
- },
267
- "manual_safety_enabled_hint": {
268
- "type": "staticText",
269
- "text": "Wenn aktiviert, werden die Sicherheitsfunktionen wie Frostschutz und Überhitzungsschutz (Solar) weiterhin ausgeführt.",
270
- "newLine": true,
271
- "xs": 12,
272
- "sm": 12,
273
- "md": 12,
274
- "lg": 12,
275
- "xl": 12
95
+ "type": "panel",
96
+ "label": "Pump",
97
+ "items": {
98
+ "Leistung_header": {
99
+ "type": "header",
100
+ "text": "Pump Settings (Rated Power)",
101
+ "size": 4,
102
+ "newLine": true,
103
+ "xs": 12,
104
+ "sm": 12,
105
+ "md": 12,
106
+ "lg": 12,
107
+ "xl": 12
108
+ },
109
+ "pump_max_watt": {
110
+ "type": "number",
111
+ "label": "Max Power (Watt)",
112
+ "default": 1000,
113
+ "xs": 12,
114
+ "sm": 3,
115
+ "md": 3,
116
+ "lg": 3,
117
+ "xl": 3,
118
+ "newLine": true
119
+ },
120
+ "pump_power_lph": {
121
+ "type": "number",
122
+ "label": "Pump Flow Rate (l/h)",
123
+ "default": 6000,
124
+ "xs": 12,
125
+ "sm": 3,
126
+ "md": 3,
127
+ "lg": 3,
128
+ "xl": 3
129
+ },
130
+ "Frostschutz_header": {
131
+ "type": "header",
132
+ "text": "Frost Protection",
133
+ "size": 4,
134
+ "newLine": true,
135
+ "xs": 12,
136
+ "sm": 12,
137
+ "md": 12,
138
+ "lg": 12,
139
+ "xl": 12
140
+ },
141
+ "frost_protection_active": {
142
+ "type": "checkbox",
143
+ "label": "Enable Frost Protection",
144
+ "default": false,
145
+ "xs": 12,
146
+ "sm": 3,
147
+ "md": 3,
148
+ "lg": 3,
149
+ "xl": 3,
150
+ "newLine": true
151
+ },
152
+ "frost_protection_temp": {
153
+ "type": "number",
154
+ "label": "Frost Protection Temperature (°C)",
155
+ "default": 2,
156
+ "xs": 12,
157
+ "sm": 3,
158
+ "md": 3,
159
+ "lg": 3,
160
+ "xl": 3
161
+ },
162
+ "pumpswitch_header": {
163
+ "type": "header",
164
+ "text": "Pump Data Points (Smart Socket & Current Power Consumption)",
165
+ "size": 4,
166
+ "newLine": true,
167
+ "xs": 12,
168
+ "sm": 12,
169
+ "md": 12,
170
+ "lg": 12,
171
+ "xl": 12
172
+ },
173
+ "pump_switch": {
174
+ "type": "objectId",
175
+ "label": "Object ID Pump Switch Socket",
176
+ "default": "",
177
+ "xs": 12,
178
+ "sm": 3,
179
+ "md": 3,
180
+ "lg": 3,
181
+ "xl": 3
182
+ },
183
+ "pump_current_power_id": {
184
+ "type": "objectId",
185
+ "label": "Object ID Current Power (W)",
186
+ "default": "",
187
+ "xs": 12,
188
+ "sm": 3,
189
+ "md": 3,
190
+ "lg": 3,
191
+ "xl": 3
192
+ },
193
+ "pump_mode_hint": {
194
+ "type": "staticText",
195
+ "text": "Pump mode (Auto/Manual/Off/Timer) can be controlled via data point 'pump.mode'.",
196
+ "newLine": true,
197
+ "xs": 12,
198
+ "sm": 12,
199
+ "md": 12,
200
+ "lg": 12,
201
+ "xl": 12
202
+ },
203
+ "pressure_header": {
204
+ "type": "header",
205
+ "text": "Pressure Sensor (Filter Pressure)",
206
+ "size": 4,
207
+ "newLine": true,
208
+ "xs": 12,
209
+ "sm": 12,
210
+ "md": 12,
211
+ "lg": 12,
212
+ "xl": 12
213
+ },
214
+ "use_pressure_sensor": {
215
+ "type": "checkbox",
216
+ "label": "Use Pressure Sensor",
217
+ "default": false,
218
+ "xs": 12,
219
+ "sm": 3,
220
+ "md": 3,
221
+ "lg": 3,
222
+ "xl": 3,
223
+ "newLine": true
224
+ },
225
+ "pressure_sensor_id": {
226
+ "type": "objectId",
227
+ "label": "Object ID Pressure Sensor (bar)",
228
+ "default": "",
229
+ "xs": 12,
230
+ "sm": 3,
231
+ "md": 3,
232
+ "lg": 3,
233
+ "xl": 3
234
+ },
235
+ "pressure_hint": {
236
+ "type": "staticText",
237
+ "text": "Note: Supports external sensors as well as the PoolControl pressure box.",
238
+ "newLine": true,
239
+ "xs": 12,
240
+ "sm": 12,
241
+ "md": 12,
242
+ "lg": 12,
243
+ "xl": 12
244
+ },
245
+ "pump_safety_header": {
246
+ "type": "header",
247
+ "text": "Safety Functions",
248
+ "size": 4,
249
+ "newLine": true,
250
+ "xs": 12,
251
+ "sm": 12,
252
+ "md": 12,
253
+ "lg": 12,
254
+ "xl": 12
255
+ },
256
+ "manual_safety_enabled": {
257
+ "type": "checkbox",
258
+ "label": "Enable safety functions also in 'Manual' mode",
259
+ "default": true,
260
+ "xs": 12,
261
+ "sm": 6,
262
+ "md": 6,
263
+ "lg": 6,
264
+ "xl": 6,
265
+ "newLine": true
266
+ },
267
+ "manual_safety_enabled_hint": {
268
+ "type": "staticText",
269
+ "text": "If enabled, safety functions such as frost protection and overheating protection (solar) remain active.",
270
+ "newLine": true,
271
+ "xs": 12,
272
+ "sm": 12,
273
+ "md": 12,
274
+ "lg": 12,
275
+ "xl": 12
276
+ }
276
277
  }
277
- }
278
278
  },
279
279
  "temperature": {
280
- "type": "panel",
281
- "label": "Temperaturverw.",
282
- "items": {
283
- "tempsensor_header": {
284
- "type": "header",
285
- "text": "Temperatursensoren",
286
- "size": 4,
287
- "newLine": true,
288
- "xs": 12,
289
- "sm": 12,
290
- "md": 12,
291
- "lg": 12,
292
- "xl": 12
293
- },
294
- "surface_temp_active": {
295
- "type": "checkbox",
296
- "label": "Sensor Oberfläche verwenden",
297
- "default": false,
298
- "xs": 12,
299
- "sm": 3,
300
- "md": 3,
301
- "lg": 3,
302
- "xl": 3,
303
- "newLine": true
304
- },
305
- "surface_temp_sensor": {
306
- "type": "objectId",
307
- "label": "Objekt-ID Sensor Oberfläche",
308
- "default": "",
309
- "xs": 12,
310
- "sm": 3,
311
- "md": 3,
312
- "lg": 3,
313
- "xl": 3
314
- },
315
- "ground_temp_active": {
316
- "type": "checkbox",
317
- "label": "Sensor Grund verwenden",
318
- "default": false,
319
- "xs": 12,
320
- "sm": 3,
321
- "md": 3,
322
- "lg": 3,
323
- "xl": 3,
324
- "newLine": true
325
- },
326
- "ground_temp_sensor": {
327
- "type": "objectId",
328
- "label": "Objekt-ID Sensor Grund",
329
- "default": "",
330
- "xs": 12,
331
- "sm": 3,
332
- "md": 3,
333
- "lg": 3,
334
- "xl": 3
335
- },
336
- "flow_temp_active": {
337
- "type": "checkbox",
338
- "label": "Sensor Vorlauf verwenden",
339
- "default": false,
340
- "xs": 12,
341
- "sm": 3,
342
- "md": 3,
343
- "lg": 3,
344
- "xl": 3,
345
- "newLine": true
346
- },
347
- "flow_temp_sensor": {
348
- "type": "objectId",
349
- "label": "Objekt-ID Sensor Vorlauf",
350
- "default": "",
351
- "xs": 12,
352
- "sm": 3,
353
- "md": 3,
354
- "lg": 3,
355
- "xl": 3
356
- },
357
- "return_temp_active": {
358
- "type": "checkbox",
359
- "label": "Sensor Rücklauf verwenden",
360
- "default": false,
361
- "xs": 12,
362
- "sm": 3,
363
- "md": 3,
364
- "lg": 3,
365
- "xl": 3,
366
- "newLine": true
367
- },
368
- "return_temp_sensor": {
369
- "type": "objectId",
370
- "label": "Objekt-ID Sensor Rücklauf",
371
- "default": "",
372
- "xs": 12,
373
- "sm": 3,
374
- "md": 3,
375
- "lg": 3,
376
- "xl": 3
377
- },
378
- "collector_temp_active": {
379
- "type": "checkbox",
380
- "label": "Sensor Kollektor verwenden",
381
- "default": false,
382
- "xs": 12,
383
- "sm": 3,
384
- "md": 3,
385
- "lg": 3,
386
- "xl": 3,
387
- "newLine": true
388
- },
389
- "collector_temp_sensor": {
390
- "type": "objectId",
391
- "label": "Objekt-ID Sensor Kollektor",
392
- "default": "",
393
- "xs": 12,
394
- "sm": 3,
395
- "md": 3,
396
- "lg": 3,
397
- "xl": 3
398
- },
399
- "outside_temp_active": {
400
- "type": "checkbox",
401
- "label": "Sensor Außentemperatur verwenden",
402
- "default": false,
403
- "xs": 12,
404
- "sm": 3,
405
- "md": 3,
406
- "lg": 3,
407
- "xl": 3,
408
- "newLine": true
409
- },
410
- "outside_temp_sensor": {
411
- "type": "objectId",
412
- "label": "Objekt-ID Sensor Außentemperatur",
413
- "default": "",
414
- "xs": 12,
415
- "sm": 3,
416
- "md": 3,
417
- "lg": 3,
418
- "xl": 3
280
+ "type": "panel",
281
+ "label": "Temperature Management",
282
+ "items": {
283
+ "tempsensor_header": {
284
+ "type": "header",
285
+ "text": "Temperature Sensors",
286
+ "size": 4,
287
+ "newLine": true,
288
+ "xs": 12,
289
+ "sm": 12,
290
+ "md": 12,
291
+ "lg": 12,
292
+ "xl": 12
293
+ },
294
+ "surface_temp_active": {
295
+ "type": "checkbox",
296
+ "label": "Use Surface Sensor",
297
+ "default": false,
298
+ "xs": 12,
299
+ "sm": 3,
300
+ "md": 3,
301
+ "lg": 3,
302
+ "xl": 3,
303
+ "newLine": true
304
+ },
305
+ "surface_temp_sensor": {
306
+ "type": "objectId",
307
+ "label": "Object ID Surface Sensor",
308
+ "default": "",
309
+ "xs": 12,
310
+ "sm": 3,
311
+ "md": 3,
312
+ "lg": 3,
313
+ "xl": 3
314
+ },
315
+ "ground_temp_active": {
316
+ "type": "checkbox",
317
+ "label": "Use Ground Sensor",
318
+ "default": false,
319
+ "xs": 12,
320
+ "sm": 3,
321
+ "md": 3,
322
+ "lg": 3,
323
+ "xl": 3,
324
+ "newLine": true
325
+ },
326
+ "ground_temp_sensor": {
327
+ "type": "objectId",
328
+ "label": "Object ID Ground Sensor",
329
+ "default": "",
330
+ "xs": 12,
331
+ "sm": 3,
332
+ "md": 3,
333
+ "lg": 3,
334
+ "xl": 3
335
+ },
336
+ "flow_temp_active": {
337
+ "type": "checkbox",
338
+ "label": "Use Flow Sensor",
339
+ "default": false,
340
+ "xs": 12,
341
+ "sm": 3,
342
+ "md": 3,
343
+ "lg": 3,
344
+ "xl": 3,
345
+ "newLine": true
346
+ },
347
+ "flow_temp_sensor": {
348
+ "type": "objectId",
349
+ "label": "Object ID Flow Sensor",
350
+ "default": "",
351
+ "xs": 12,
352
+ "sm": 3,
353
+ "md": 3,
354
+ "lg": 3,
355
+ "xl": 3
356
+ },
357
+ "return_temp_active": {
358
+ "type": "checkbox",
359
+ "label": "Use Return Sensor",
360
+ "default": false,
361
+ "xs": 12,
362
+ "sm": 3,
363
+ "md": 3,
364
+ "lg": 3,
365
+ "xl": 3,
366
+ "newLine": true
367
+ },
368
+ "return_temp_sensor": {
369
+ "type": "objectId",
370
+ "label": "Object ID Return Sensor",
371
+ "default": "",
372
+ "xs": 12,
373
+ "sm": 3,
374
+ "md": 3,
375
+ "lg": 3,
376
+ "xl": 3
377
+ },
378
+ "collector_temp_active": {
379
+ "type": "checkbox",
380
+ "label": "Use Collector Sensor",
381
+ "default": false,
382
+ "xs": 12,
383
+ "sm": 3,
384
+ "md": 3,
385
+ "lg": 3,
386
+ "xl": 3,
387
+ "newLine": true
388
+ },
389
+ "collector_temp_sensor": {
390
+ "type": "objectId",
391
+ "label": "Object ID Collector Sensor",
392
+ "default": "",
393
+ "xs": 12,
394
+ "sm": 3,
395
+ "md": 3,
396
+ "lg": 3,
397
+ "xl": 3
398
+ },
399
+ "outside_temp_active": {
400
+ "type": "checkbox",
401
+ "label": "Use Outside Temperature Sensor",
402
+ "default": false,
403
+ "xs": 12,
404
+ "sm": 3,
405
+ "md": 3,
406
+ "lg": 3,
407
+ "xl": 3,
408
+ "newLine": true
409
+ },
410
+ "outside_temp_sensor": {
411
+ "type": "objectId",
412
+ "label": "Object ID Outside Temperature Sensor",
413
+ "default": "",
414
+ "xs": 12,
415
+ "sm": 3,
416
+ "md": 3,
417
+ "lg": 3,
418
+ "xl": 3
419
+ }
419
420
  }
420
- }
421
421
  },
422
422
  "solar": {
423
- "type": "panel",
424
- "label": "Solar/Heizungsverw.",
425
- "items": {
426
- "solar_control_active_header": {
427
- "type": "header",
428
- "text": "Solarsteuerung aktivieren",
429
- "size": 4,
430
- "newLine": true,
431
- "xs": 12,
432
- "sm": 12,
433
- "md": 12,
434
- "lg": 12,
435
- "xl": 12
436
- },
437
- "solar_control_active": {
438
- "type": "checkbox",
439
- "label": "Solarsteuerung aktivieren",
440
- "default": false,
441
- "xs": 12,
442
- "sm": 3,
443
- "md": 3,
444
- "lg": 3,
445
- "xl": 3,
446
- "newLine": true
447
- },
448
- "solar_hysteresis_active_header": {
449
- "type": "header",
450
- "text": "Hysterese",
451
- "size": 4,
452
- "newLine": true,
453
- "xs": 12,
454
- "sm": 12,
455
- "md": 12,
456
- "lg": 12,
457
- "xl": 12
458
- },
459
- "solar_hysteresis_active": {
460
- "type": "checkbox",
461
- "label": "Regelung mit Hysterese verwenden",
462
- "default": false,
463
- "xs": 12,
464
- "sm": 3,
465
- "md": 3,
466
- "lg": 3,
467
- "xl": 3,
468
- "newLine": true
469
- },
470
- "solar_temp_on": {
471
- "type": "number",
472
- "label": "Kollektortemperatur Einschaltgrenze (°C)",
473
- "default": 30,
474
- "xs": 12,
475
- "sm": 3,
476
- "md": 3,
477
- "lg": 3,
478
- "xl": 3
479
- },
480
- "solar_temp_off": {
481
- "type": "number",
482
- "label": "Kollektortemperatur Ausschaltgrenze (°C)",
483
- "default": 25,
484
- "xs": 12,
485
- "sm": 3,
486
- "md": 3,
487
- "lg": 3,
488
- "xl": 3
489
- },
490
- "solar_collector_warn_active_header": {
491
- "type": "header",
492
- "text": "Kollektortemperatur-Warnung",
493
- "size": 4,
494
- "newLine": true,
495
- "xs": 12,
496
- "sm": 12,
497
- "md": 12,
498
- "lg": 12,
499
- "xl": 12
500
- },
501
- "solar_collector_warn_active": {
502
- "type": "checkbox",
503
- "label": "Kollektortemperatur-Warnung aktivieren",
504
- "default": false,
505
- "xs": 12,
506
- "sm": 3,
507
- "md": 3,
508
- "lg": 3,
509
- "xl": 3,
510
- "newLine": true
511
- },
512
- "solar_collector_warn_temp": {
513
- "type": "number",
514
- "label": "Warnschwelle Kollektortemperatur (°C)",
515
- "default": 80,
516
- "xs": 12,
517
- "sm": 3,
518
- "md": 3,
519
- "lg": 3,
520
- "xl": 3
521
- },
522
- "solar_collector_warn_speech": {
523
- "type": "checkbox",
524
- "label": "Bei Warnung Sprachausgabe/Benachrichtigung",
525
- "default": true,
526
- "xs": 12,
527
- "sm": 6,
528
- "md": 6,
529
- "lg": 6,
530
- "xl": 6,
531
- "newLine": true
532
- },
533
- "solar_collector_warn_hint": {
534
- "type": "staticText",
535
- "text": "Hinweis: Die Warnung wird automatisch zurückgesetzt, sobald die Temperatur 10 % unter die eingestellte Schwelle fällt.",
536
- "newLine": true,
537
- "xs": 12,
538
- "sm": 12,
539
- "md": 12,
540
- "lg": 12,
541
- "xl": 12
542
- },
543
- "heat_control_header": {
544
- "type": "header",
545
- "text": "Heizung / Wärmepumpe",
546
- "size": 4,
547
- "newLine": true,
548
- "xs": 12,
549
- "sm": 12,
550
- "md": 12,
551
- "lg": 12,
552
- "xl": 12
553
- },
423
+ "type": "panel",
424
+ "label": "Solar / Heating Control",
425
+ "items": {
426
+ "solar_control_active_header": {
427
+ "type": "header",
428
+ "text": "Enable Solar Control",
429
+ "size": 4,
430
+ "newLine": true,
431
+ "xs": 12,
432
+ "sm": 12,
433
+ "md": 12,
434
+ "lg": 12,
435
+ "xl": 12
436
+ },
437
+ "solar_control_active": {
438
+ "type": "checkbox",
439
+ "label": "Enable Solar Control",
440
+ "default": false,
441
+ "xs": 12,
442
+ "sm": 3,
443
+ "md": 3,
444
+ "lg": 3,
445
+ "xl": 3,
446
+ "newLine": true
447
+ },
448
+ "solar_hysteresis_active_header": {
449
+ "type": "header",
450
+ "text": "Hysteresis",
451
+ "size": 4,
452
+ "newLine": true,
453
+ "xs": 12,
454
+ "sm": 12,
455
+ "md": 12,
456
+ "lg": 12,
457
+ "xl": 12
458
+ },
459
+ "solar_hysteresis_active": {
460
+ "type": "checkbox",
461
+ "label": "Use Hysteresis Control",
462
+ "default": false,
463
+ "xs": 12,
464
+ "sm": 3,
465
+ "md": 3,
466
+ "lg": 3,
467
+ "xl": 3,
468
+ "newLine": true
469
+ },
470
+ "solar_temp_on": {
471
+ "type": "number",
472
+ "label": "Collector Temperature On Threshold (°C)",
473
+ "default": 30,
474
+ "xs": 12,
475
+ "sm": 3,
476
+ "md": 3,
477
+ "lg": 3,
478
+ "xl": 3
479
+ },
480
+ "solar_temp_off": {
481
+ "type": "number",
482
+ "label": "Collector Temperature Off Threshold (°C)",
483
+ "default": 25,
484
+ "xs": 12,
485
+ "sm": 3,
486
+ "md": 3,
487
+ "lg": 3,
488
+ "xl": 3
489
+ },
490
+ "solar_collector_warn_active_header": {
491
+ "type": "header",
492
+ "text": "Collector Temperature Warning",
493
+ "size": 4,
494
+ "newLine": true,
495
+ "xs": 12,
496
+ "sm": 12,
497
+ "md": 12,
498
+ "lg": 12,
499
+ "xl": 12
500
+ },
501
+ "solar_collector_warn_active": {
502
+ "type": "checkbox",
503
+ "label": "Enable Collector Temperature Warning",
504
+ "default": false,
505
+ "xs": 12,
506
+ "sm": 3,
507
+ "md": 3,
508
+ "lg": 3,
509
+ "xl": 3,
510
+ "newLine": true
511
+ },
512
+ "solar_collector_warn_temp": {
513
+ "type": "number",
514
+ "label": "Collector Temperature Warning Threshold (°C)",
515
+ "default": 80,
516
+ "xs": 12,
517
+ "sm": 3,
518
+ "md": 3,
519
+ "lg": 3,
520
+ "xl": 3
521
+ },
522
+ "solar_collector_warn_speech": {
523
+ "type": "checkbox",
524
+ "label": "Announce / Notify on Warning",
525
+ "default": true,
526
+ "xs": 12,
527
+ "sm": 6,
528
+ "md": 6,
529
+ "lg": 6,
530
+ "xl": 6,
531
+ "newLine": true
532
+ },
533
+ "solar_collector_warn_hint": {
534
+ "type": "staticText",
535
+ "text": "Note: The warning resets automatically once the temperature drops 10% below the configured threshold.",
536
+ "newLine": true,
537
+ "xs": 12,
538
+ "sm": 12,
539
+ "md": 12,
540
+ "lg": 12,
541
+ "xl": 12
542
+ },
543
+ "heat_control_header": {
544
+ "type": "header",
545
+ "text": "Heating / Heat Pump",
546
+ "size": 4,
547
+ "newLine": true,
548
+ "xs": 12,
549
+ "sm": 12,
550
+ "md": 12,
551
+ "lg": 12,
552
+ "xl": 12
553
+ },
554
+ "heat_control_active": {
555
+ "type": "checkbox",
556
+ "label": "Enable Heating Control",
557
+ "default": false,
558
+ "xs": 12,
559
+ "sm": 3,
560
+ "md": 3,
561
+ "lg": 3,
562
+ "xl": 3,
563
+ "newLine": true
564
+ },
565
+ "heat_control_type": {
566
+ "type": "select",
567
+ "label": "Type of Heating Control",
568
+ "options": [
569
+ {
570
+ "label": "Switch Smart Plug (On / Off)",
571
+ "value": "socket"
572
+ },
573
+ {
574
+ "label": "Logical Control State (true / false)",
575
+ "value": "boolean"
576
+ }
577
+ ],
578
+ "default": "socket",
579
+ "xs": 12,
580
+ "sm": 4,
581
+ "md": 4,
582
+ "lg": 4,
583
+ "xl": 4,
584
+ "newLine": true
585
+ },
586
+ "heat_control_object_id": {
587
+ "type": "objectId",
588
+ "label": "Object ID Heating / Heat Pump",
589
+ "default": "",
590
+ "xs": 12,
591
+ "sm": 6,
592
+ "md": 6,
593
+ "lg": 6,
594
+ "xl": 6
595
+ },
596
+ "heat_temp_target": {
597
+ "type": "number",
598
+ "label": "Target Pool Temperature (°C)",
599
+ "default": 26,
600
+ "xs": 12,
601
+ "sm": 3,
602
+ "md": 3,
603
+ "lg": 3,
604
+ "xl": 3,
605
+ "newLine": true
606
+ },
607
+ "heat_temp_max": {
608
+ "type": "number",
609
+ "label": "Maximum Pool Temperature (°C – Safety Cutoff)",
610
+ "default": 30,
611
+ "xs": 12,
612
+ "sm": 3,
613
+ "md": 3,
614
+ "lg": 3,
615
+ "xl": 3
616
+ },
617
+ "heat_control_hint": {
618
+ "type": "staticText",
619
+ "text": "Note: Heating control is temperature-driven and only active during pool season. Depending on the selected control type, either a smart plug is switched or a logical control state (true/false) is set.",
620
+ "newLine": true,
621
+ "xs": 12,
622
+ "sm": 12,
623
+ "md": 12,
624
+ "lg": 12,
625
+ "xl": 12
626
+ }
627
+ }
628
+ },
629
+ "timecontrol": {
630
+ "type": "panel",
631
+ "label": "Time Control",
632
+ "items": {
633
+ "time1_active_header": {
634
+ "type": "header",
635
+ "text": "Time Windows",
636
+ "size": 4,
637
+ "newLine": true,
638
+ "xs": 12,
639
+ "sm": 12,
640
+ "md": 12,
641
+ "lg": 12,
642
+ "xl": 12
643
+ },
644
+ "time1_active": {
645
+ "type": "checkbox",
646
+ "label": "Enable Time Window 1",
647
+ "default": true,
648
+ "xs": 12,
649
+ "sm": 3,
650
+ "md": 3,
651
+ "lg": 3,
652
+ "xl": 3,
653
+ "newLine": true
654
+ },
655
+ "time1_start": {
656
+ "type": "text",
657
+ "label": "Start (HH:MM)",
658
+ "default": "08:00",
659
+ "xs": 12,
660
+ "sm": 3,
661
+ "md": 3,
662
+ "lg": 3,
663
+ "xl": 3
664
+ },
665
+ "time1_end": {
666
+ "type": "text",
667
+ "label": "End (HH:MM)",
668
+ "default": "10:00",
669
+ "xs": 12,
670
+ "sm": 3,
671
+ "md": 3,
672
+ "lg": 3,
673
+ "xl": 3
674
+ },
675
+ "time1_day_mon": { "type": "checkbox", "label": "Monday", "default": true, "xs": 12, "sm": 1, "md": 1, "lg": 1, "xl": 1, "newLine": true },
676
+ "time1_day_tue": { "type": "checkbox", "label": "Tuesday", "default": true, "xs": 12, "sm": 1, "md": 1, "lg": 1, "xl": 1 },
677
+ "time1_day_wed": { "type": "checkbox", "label": "Wednesday", "default": true, "xs": 12, "sm": 1, "md": 1, "lg": 1, "xl": 1 },
678
+ "time1_day_thu": { "type": "checkbox", "label": "Thursday", "default": true, "xs": 12, "sm": 1, "md": 1, "lg": 1, "xl": 1 },
679
+ "time1_day_fri": { "type": "checkbox", "label": "Friday", "default": true, "xs": 12, "sm": 1, "md": 1, "lg": 1, "xl": 1 },
680
+ "time1_day_sat": { "type": "checkbox", "label": "Saturday", "default": true, "xs": 12, "sm": 1, "md": 1, "lg": 1, "xl": 1 },
681
+ "time1_day_sun": { "type": "checkbox", "label": "Sunday", "default": true, "xs": 12, "sm": 1, "md": 1, "lg": 1, "xl": 1 },
554
682
 
555
- "heat_control_active": {
556
- "type": "checkbox",
557
- "label": "Heizungssteuerung aktivieren",
558
- "default": false,
559
- "xs": 12,
560
- "sm": 3,
561
- "md": 3,
562
- "lg": 3,
563
- "xl": 3,
564
- "newLine": true
565
- },
683
+ "time2_active_header": {
684
+ "type": "header",
685
+ "text": "Time Window 2",
686
+ "size": 4,
687
+ "newLine": true,
688
+ "xs": 12,
689
+ "sm": 12,
690
+ "md": 12,
691
+ "lg": 12,
692
+ "xl": 12
693
+ },
694
+ "time2_active": {
695
+ "type": "checkbox",
696
+ "label": "Enable Time Window 2",
697
+ "default": false,
698
+ "xs": 12,
699
+ "sm": 3,
700
+ "md": 3,
701
+ "lg": 3,
702
+ "xl": 3,
703
+ "newLine": true
704
+ },
705
+ "time2_start": {
706
+ "type": "text",
707
+ "label": "Start (HH:MM)",
708
+ "default": "14:00",
709
+ "xs": 12,
710
+ "sm": 3,
711
+ "md": 3,
712
+ "lg": 3,
713
+ "xl": 3
714
+ },
715
+ "time2_end": {
716
+ "type": "text",
717
+ "label": "End (HH:MM)",
718
+ "default": "16:00",
719
+ "xs": 12,
720
+ "sm": 3,
721
+ "md": 3,
722
+ "lg": 3,
723
+ "xl": 3
724
+ },
725
+ "time2_day_mon": { "type": "checkbox", "label": "Monday", "default": true, "xs": 12, "sm": 1, "md": 1, "lg": 1, "xl": 1, "newLine": true },
726
+ "time2_day_tue": { "type": "checkbox", "label": "Tuesday", "default": true, "xs": 12, "sm": 1, "md": 1, "lg": 1, "xl": 1 },
727
+ "time2_day_wed": { "type": "checkbox", "label": "Wednesday", "default": true, "xs": 12, "sm": 1, "md": 1, "lg": 1, "xl": 1 },
728
+ "time2_day_thu": { "type": "checkbox", "label": "Thursday", "default": true, "xs": 12, "sm": 1, "md": 1, "lg": 1, "xl": 1 },
729
+ "time2_day_fri": { "type": "checkbox", "label": "Friday", "default": true, "xs": 12, "sm": 1, "md": 1, "lg": 1, "xl": 1 },
730
+ "time2_day_sat": { "type": "checkbox", "label": "Saturday", "default": true, "xs": 12, "sm": 1, "md": 1, "lg": 1, "xl": 1 },
731
+ "time2_day_sun": { "type": "checkbox", "label": "Sunday", "default": true, "xs": 12, "sm": 1, "md": 1, "lg": 1, "xl": 1 },
566
732
 
567
- "heat_control_type": {
568
- "type": "select",
569
- "label": "Art der Heizungssteuerung",
570
- "options": [
571
- { "label": "Messsteckdose schalten (Ein / Aus)", "value": "socket" },
572
- { "label": "Logischer Steuer-State (true / false)", "value": "boolean" }
573
- ],
574
- "default": "socket",
575
- "xs": 12,
576
- "sm": 4,
577
- "md": 4,
578
- "lg": 4,
579
- "xl": 4,
580
- "newLine": true
581
- },
733
+ "time3_active_header": {
734
+ "type": "header",
735
+ "text": "Time Window 3",
736
+ "size": 4,
737
+ "newLine": true,
738
+ "xs": 12,
739
+ "sm": 12,
740
+ "md": 12,
741
+ "lg": 12,
742
+ "xl": 12
743
+ },
744
+ "time3_active": {
745
+ "type": "checkbox",
746
+ "label": "Enable Time Window 3",
747
+ "default": false,
748
+ "xs": 12,
749
+ "sm": 3,
750
+ "md": 3,
751
+ "lg": 3,
752
+ "xl": 3,
753
+ "newLine": true
754
+ },
755
+ "time3_start": {
756
+ "type": "text",
757
+ "label": "Start (HH:MM)",
758
+ "default": "18:00",
759
+ "xs": 12,
760
+ "sm": 3,
761
+ "md": 3,
762
+ "lg": 3,
763
+ "xl": 3
764
+ },
765
+ "time3_end": {
766
+ "type": "text",
767
+ "label": "End (HH:MM)",
768
+ "default": "20:00",
769
+ "xs": 12,
770
+ "sm": 3,
771
+ "md": 3,
772
+ "lg": 3,
773
+ "xl": 3
774
+ },
775
+ "time3_day_mon": { "type": "checkbox", "label": "Monday", "default": true, "xs": 12, "sm": 1, "md": 1, "lg": 1, "xl": 1, "newLine": true },
776
+ "time3_day_tue": { "type": "checkbox", "label": "Tuesday", "default": true, "xs": 12, "sm": 1, "md": 1, "lg": 1, "xl": 1 },
777
+ "time3_day_wed": { "type": "checkbox", "label": "Wednesday", "default": true, "xs": 12, "sm": 1, "md": 1, "lg": 1, "xl": 1 },
778
+ "time3_day_thu": { "type": "checkbox", "label": "Thursday", "default": true, "xs": 12, "sm": 1, "md": 1, "lg": 1, "xl": 1 },
779
+ "time3_day_fri": { "type": "checkbox", "label": "Friday", "default": true, "xs": 12, "sm": 1, "md": 1, "lg": 1, "xl": 1 },
780
+ "time3_day_sat": { "type": "checkbox", "label": "Saturday", "default": true, "xs": 12, "sm": 1, "md": 1, "lg": 1, "xl": 1 },
781
+ "time3_day_sun": { "type": "checkbox", "label": "Sunday", "default": true, "xs": 12, "sm": 1, "md": 1, "lg": 1, "xl": 1 }
782
+ }
783
+ },
784
+ "speech": {
785
+ "type": "panel",
786
+ "label": "Speech Output",
787
+ "items": {
788
+ "speech_general_header": {
789
+ "type": "header",
790
+ "text": "General",
791
+ "size": 4,
792
+ "newLine": true,
793
+ "xs": 12,
794
+ "sm": 12,
795
+ "md": 12,
796
+ "lg": 12,
797
+ "xl": 12
798
+ },
799
+ "speech_active": {
800
+ "type": "checkbox",
801
+ "label": "Enable speech output",
802
+ "default": false,
803
+ "xs": 12,
804
+ "sm": 3,
805
+ "md": 3,
806
+ "lg": 3,
807
+ "xl": 3,
808
+ "newLine": true
809
+ },
582
810
 
583
- "heat_control_object_id": {
584
- "type": "objectId",
585
- "label": "Objekt-ID Heizung / Wärmepumpe",
586
- "default": "",
587
- "xs": 12,
588
- "sm": 6,
589
- "md": 6,
590
- "lg": 6,
591
- "xl": 6
592
- },
811
+ "speech_alexa_header": {
812
+ "type": "header",
813
+ "text": "Amazon Alexa",
814
+ "size": 4,
815
+ "newLine": true,
816
+ "xs": 12,
817
+ "sm": 12,
818
+ "md": 12,
819
+ "lg": 12,
820
+ "xl": 12
821
+ },
822
+ "speech_alexa_enabled": {
823
+ "type": "checkbox",
824
+ "label": "Enable Alexa output",
825
+ "default": false,
826
+ "xs": 12,
827
+ "sm": 3,
828
+ "md": 3,
829
+ "lg": 3,
830
+ "xl": 3,
831
+ "newLine": true
832
+ },
833
+ "speech_alexa_device": {
834
+ "type": "objectId",
835
+ "label": "Alexa device",
836
+ "default": "",
837
+ "xs": 12,
838
+ "sm": 6,
839
+ "md": 6,
840
+ "lg": 6,
841
+ "xl": 6
842
+ },
843
+ "speech_alexa_volume": {
844
+ "type": "number",
845
+ "label": "Volume (0–100)",
846
+ "default": 50,
847
+ "xs": 12,
848
+ "sm": 3,
849
+ "md": 3,
850
+ "lg": 3,
851
+ "xl": 3,
852
+ "newLine": true
853
+ },
854
+ "speech_alexa_voice": {
855
+ "type": "select",
856
+ "label": "Voice",
857
+ "options": [
858
+ {
859
+ "label": "Default (female)",
860
+ "value": "female"
861
+ },
862
+ {
863
+ "label": "Male",
864
+ "value": "male"
865
+ }
866
+ ],
867
+ "default": "female",
868
+ "xs": 12,
869
+ "sm": 3,
870
+ "md": 3,
871
+ "lg": 3,
872
+ "xl": 3
873
+ },
593
874
 
594
- "heat_temp_target": {
595
- "type": "number",
596
- "label": "Zieltemperatur Pool (°C)",
597
- "default": 26,
598
- "xs": 12,
599
- "sm": 3,
600
- "md": 3,
601
- "lg": 3,
602
- "xl": 3,
603
- "newLine": true
604
- },
875
+ "speech_telegram_header": {
876
+ "type": "header",
877
+ "text": "Telegram",
878
+ "size": 4,
879
+ "newLine": true,
880
+ "xs": 12,
881
+ "sm": 12,
882
+ "md": 12,
883
+ "lg": 12,
884
+ "xl": 12
885
+ },
886
+ "speech_telegram_enabled": {
887
+ "type": "checkbox",
888
+ "label": "Enable Telegram output",
889
+ "default": false,
890
+ "xs": 12,
891
+ "sm": 3,
892
+ "md": 3,
893
+ "lg": 3,
894
+ "xl": 3,
895
+ "newLine": true
896
+ },
897
+ "speech_telegram_instance": {
898
+ "type": "instance",
899
+ "adapter": "telegram",
900
+ "label": "Telegram instance",
901
+ "default": "telegram.0",
902
+ "xs": 12,
903
+ "sm": 6,
904
+ "md": 6,
905
+ "lg": 6,
906
+ "xl": 6
907
+ },
908
+ "speech_telegram_placeholder": {
909
+ "type": "staticText",
910
+ "text": " ",
911
+ "xs": 12,
912
+ "sm": 3,
913
+ "md": 3,
914
+ "lg": 3,
915
+ "xl": 3,
916
+ "newLine": true
917
+ },
918
+ "speech_telegram_users": {
919
+ "type": "text",
920
+ "label": "Telegram recipients (usernames, comma separated / empty = send to all users)",
921
+ "tooltip": "Example: Dirk,Dennis (empty = send to all users)",
922
+ "default": "",
923
+ "xs": 12,
924
+ "sm": 6,
925
+ "md": 6,
926
+ "lg": 6,
927
+ "xl": 6
928
+ },
605
929
 
606
- "heat_temp_max": {
607
- "type": "number",
608
- "label": "Maximale Pooltemperatur (°C – Sicherheitsabschaltung)",
609
- "default": 30,
610
- "xs": 12,
611
- "sm": 3,
612
- "md": 3,
613
- "lg": 3,
614
- "xl": 3
615
- },
930
+ "speech_mail_header": {
931
+ "type": "header",
932
+ "text": "Mail",
933
+ "size": 4,
934
+ "newLine": true,
935
+ "xs": 12,
936
+ "sm": 12,
937
+ "md": 12,
938
+ "lg": 12,
939
+ "xl": 12
940
+ },
941
+ "speech_email_enabled": {
942
+ "type": "checkbox",
943
+ "label": "Enable email output",
944
+ "default": false,
945
+ "xs": 12,
946
+ "sm": 3,
947
+ "md": 3,
948
+ "lg": 3,
949
+ "xl": 3,
950
+ "newLine": true
951
+ },
952
+ "speech_email_instance": {
953
+ "type": "instance",
954
+ "adapter": "email",
955
+ "label": "Email adapter instance",
956
+ "default": "email.0",
957
+ "xs": 12,
958
+ "sm": 6,
959
+ "md": 6,
960
+ "lg": 6,
961
+ "xl": 6
962
+ },
963
+ "speech_email_recipient": {
964
+ "type": "text",
965
+ "label": "Recipient address",
966
+ "default": "meineadresse@example.com",
967
+ "xs": 12,
968
+ "sm": 6,
969
+ "md": 6,
970
+ "lg": 6,
971
+ "xl": 6,
972
+ "newLine": true
973
+ },
974
+ "speech_email_subject": {
975
+ "type": "text",
976
+ "label": "Email subject",
977
+ "default": "PoolControl Notification",
978
+ "xs": 12,
979
+ "sm": 6,
980
+ "md": 6,
981
+ "lg": 6,
982
+ "xl": 6
983
+ },
616
984
 
617
- "heat_control_hint": {
618
- "type": "staticText",
619
- "text": "Hinweis: Die Heizungssteuerung arbeitet temperaturgeführt und nur, wenn die Poolsaison aktiv ist. Je nach ausgewählter Steuerungsart wird entweder eine Messsteckdose geschaltet oder ein logischer Steuer-State (true/false) gesetzt.",
620
- "newLine": true,
621
- "xs": 12,
622
- "sm": 12,
623
- "md": 12,
624
- "lg": 12,
625
- "xl": 12
985
+ "divider_speech4": {
986
+ "type": "divider",
987
+ "newLine": true
988
+ },
989
+
990
+ "speech_temp_threshold": {
991
+ "type": "number",
992
+ "label": "Temperature threshold for announcement (°C)",
993
+ "default": 25,
994
+ "xs": 12,
995
+ "sm": 3,
996
+ "md": 3,
997
+ "lg": 3,
998
+ "xl": 3,
999
+ "newLine": true
1000
+ },
1001
+ "speech_include_errors": {
1002
+ "type": "checkbox",
1003
+ "label": "Announce error messages",
1004
+ "default": true,
1005
+ "xs": 12,
1006
+ "sm": 3,
1007
+ "md": 3,
1008
+ "lg": 3,
1009
+ "xl": 3
1010
+ }
626
1011
  }
627
- }
628
1012
  },
629
- "timecontrol": {
630
- "type": "panel",
631
- "label": "Zeitsteuerung",
632
- "items": {
633
- "time1_active_header": {
634
- "type": "header",
635
- "text": "Zeitfenster 1",
636
- "size": 4,
637
- "newLine": true,
638
- "xs": 12,
639
- "sm": 12,
640
- "md": 12,
641
- "lg": 12,
642
- "xl": 12
643
- },
644
- "time1_active": {
645
- "type": "checkbox",
646
- "label": "Zeitfenster 1 aktiv",
647
- "default": true,
648
- "xs": 12,
649
- "sm": 3,
650
- "md": 3,
651
- "lg": 3,
652
- "xl": 3,
653
- "newLine": true
654
- },
655
- "time1_start": {
656
- "type": "text",
657
- "label": "Start (HH:MM)",
658
- "default": "08:00",
659
- "xs": 12,
660
- "sm": 3,
661
- "md": 3,
662
- "lg": 3,
663
- "xl": 3
664
- },
665
- "time1_end": {
666
- "type": "text",
667
- "label": "Ende (HH:MM)",
668
- "default": "10:00",
669
- "xs": 12,
670
- "sm": 3,
671
- "md": 3,
672
- "lg": 3,
673
- "xl": 3
674
- },
675
- "time1_day_mon": {
676
- "type": "checkbox",
677
- "label": "Montag",
678
- "default": true,
679
- "xs": 12,
680
- "sm": 1,
681
- "md": 1,
682
- "lg": 1,
683
- "xl": 1,
684
- "newLine": true
685
- },
686
- "time1_day_tue": {
687
- "type": "checkbox",
688
- "label": "Dienstag",
689
- "default": true,
690
- "xs": 12,
691
- "sm": 1,
692
- "md": 1,
693
- "lg": 1,
694
- "xl": 1
695
- },
696
- "time1_day_wed": {
697
- "type": "checkbox",
698
- "label": "Mittwoch",
699
- "default": true,
700
- "xs": 12,
701
- "sm": 1,
702
- "md": 1,
703
- "lg": 1,
704
- "xl": 1
705
- },
706
- "time1_day_thu": {
707
- "type": "checkbox",
708
- "label": "Donnerstag",
709
- "default": true,
710
- "xs": 12,
711
- "sm": 1,
712
- "md": 1,
713
- "lg": 1,
714
- "xl": 1
715
- },
716
- "time1_day_fri": {
717
- "type": "checkbox",
718
- "label": "Freitag",
719
- "default": true,
720
- "xs": 12,
721
- "sm": 1,
722
- "md": 1,
723
- "lg": 1,
724
- "xl": 1
725
- },
726
- "time1_day_sat": {
727
- "type": "checkbox",
728
- "label": "Samstag",
729
- "default": true,
730
- "xs": 12,
731
- "sm": 1,
732
- "md": 1,
733
- "lg": 1,
734
- "xl": 1
735
- },
736
- "time1_day_sun": {
737
- "type": "checkbox",
738
- "label": "Sonntag",
739
- "default": true,
740
- "xs": 12,
741
- "sm": 1,
742
- "md": 1,
743
- "lg": 1,
744
- "xl": 1
745
- },
746
- "time2_active_header": {
747
- "type": "header",
748
- "text": "Zeitfenster 2",
749
- "size": 4,
750
- "newLine": true,
751
- "xs": 12,
752
- "sm": 12,
753
- "md": 12,
754
- "lg": 12,
755
- "xl": 12
756
- },
757
- "time2_active": {
758
- "type": "checkbox",
759
- "label": "Zeitfenster 2 aktiv",
760
- "default": false,
761
- "xs": 12,
762
- "sm": 3,
763
- "md": 3,
764
- "lg": 3,
765
- "xl": 3,
766
- "newLine": true
767
- },
768
- "time2_start": {
769
- "type": "text",
770
- "label": "Start (HH:MM)",
771
- "default": "14:00",
772
- "xs": 12,
773
- "sm": 3,
774
- "md": 3,
775
- "lg": 3,
776
- "xl": 3
777
- },
778
- "time2_end": {
779
- "type": "text",
780
- "label": "Ende (HH:MM)",
781
- "default": "16:00",
782
- "xs": 12,
783
- "sm": 3,
784
- "md": 3,
785
- "lg": 3,
786
- "xl": 3
787
- },
788
- "time2_day_mon": {
789
- "type": "checkbox",
790
- "label": "Montag",
791
- "default": true,
792
- "xs": 12,
793
- "sm": 1,
794
- "md": 1,
795
- "lg": 1,
796
- "xl": 1,
797
- "newLine": true
798
- },
799
- "time2_day_tue": {
800
- "type": "checkbox",
801
- "label": "Dienstag",
802
- "default": true,
803
- "xs": 12,
804
- "sm": 1,
805
- "md": 1,
806
- "lg": 1,
807
- "xl": 1
808
- },
809
- "time2_day_wed": {
810
- "type": "checkbox",
811
- "label": "Mittwoch",
812
- "default": true,
813
- "xs": 12,
814
- "sm": 1,
815
- "md": 1,
816
- "lg": 1,
817
- "xl": 1
818
- },
819
- "time2_day_thu": {
820
- "type": "checkbox",
821
- "label": "Donnerstag",
822
- "default": true,
823
- "xs": 12,
824
- "sm": 1,
825
- "md": 1,
826
- "lg": 1,
827
- "xl": 1
828
- },
829
- "time2_day_fri": {
830
- "type": "checkbox",
831
- "label": "Freitag",
832
- "default": true,
833
- "xs": 12,
834
- "sm": 1,
835
- "md": 1,
836
- "lg": 1,
837
- "xl": 1
838
- },
839
- "time2_day_sat": {
840
- "type": "checkbox",
841
- "label": "Samstag",
842
- "default": true,
843
- "xs": 12,
844
- "sm": 1,
845
- "md": 1,
846
- "lg": 1,
847
- "xl": 1
848
- },
849
- "time2_day_sun": {
850
- "type": "checkbox",
851
- "label": "Sonntag",
852
- "default": true,
853
- "xs": 12,
854
- "sm": 1,
855
- "md": 1,
856
- "lg": 1,
857
- "xl": 1
858
- },
859
- "time3_active_header": {
860
- "type": "header",
861
- "text": "Zeitfenster 3",
862
- "size": 4,
863
- "newLine": true,
864
- "xs": 12,
865
- "sm": 12,
866
- "md": 12,
867
- "lg": 12,
868
- "xl": 12
869
- },
870
- "time3_active": {
871
- "type": "checkbox",
872
- "label": "Zeitfenster 3 aktiv",
873
- "default": false,
874
- "xs": 12,
875
- "sm": 3,
876
- "md": 3,
877
- "lg": 3,
878
- "xl": 3,
879
- "newLine": true
880
- },
881
- "time3_start": {
882
- "type": "text",
883
- "label": "Start (HH:MM)",
884
- "default": "18:00",
885
- "xs": 12,
886
- "sm": 3,
887
- "md": 3,
888
- "lg": 3,
889
- "xl": 3
890
- },
891
- "time3_end": {
892
- "type": "text",
893
- "label": "Ende (HH:MM)",
894
- "default": "20:00",
895
- "xs": 12,
896
- "sm": 3,
897
- "md": 3,
898
- "lg": 3,
899
- "xl": 3
900
- },
901
- "time3_day_mon": {
902
- "type": "checkbox",
903
- "label": "Montag",
904
- "default": true,
905
- "xs": 12,
906
- "sm": 1,
907
- "md": 1,
908
- "lg": 1,
909
- "xl": 1,
910
- "newLine": true
911
- },
912
- "time3_day_tue": {
913
- "type": "checkbox",
914
- "label": "Dienstag",
915
- "default": true,
916
- "xs": 12,
917
- "sm": 1,
918
- "md": 1,
919
- "lg": 1,
920
- "xl": 1
921
- },
922
- "time3_day_wed": {
923
- "type": "checkbox",
924
- "label": "Mittwoch",
925
- "default": true,
926
- "xs": 12,
927
- "sm": 1,
928
- "md": 1,
929
- "lg": 1,
930
- "xl": 1
931
- },
932
- "time3_day_thu": {
933
- "type": "checkbox",
934
- "label": "Donnerstag",
935
- "default": true,
936
- "xs": 12,
937
- "sm": 1,
938
- "md": 1,
939
- "lg": 1,
940
- "xl": 1
941
- },
942
- "time3_day_fri": {
943
- "type": "checkbox",
944
- "label": "Freitag",
945
- "default": true,
946
- "xs": 12,
947
- "sm": 1,
948
- "md": 1,
949
- "lg": 1,
950
- "xl": 1
951
- },
952
- "time3_day_sat": {
953
- "type": "checkbox",
954
- "label": "Samstag",
955
- "default": true,
956
- "xs": 12,
957
- "sm": 1,
958
- "md": 1,
959
- "lg": 1,
960
- "xl": 1
961
- },
962
- "time3_day_sun": {
963
- "type": "checkbox",
964
- "label": "Sonntag",
965
- "default": true,
966
- "xs": 12,
967
- "sm": 1,
968
- "md": 1,
969
- "lg": 1,
970
- "xl": 1
971
- }
972
- }
973
- },
974
- "speech": {
975
- "type": "panel",
976
- "label": "Sprachausgaben",
977
- "items": {
978
- "speech_general_header": {
979
- "type": "header",
980
- "text": "Generell",
981
- "size": 4,
982
- "newLine": true,
983
- "xs": 12,
984
- "sm": 12,
985
- "md": 12,
986
- "lg": 12,
987
- "xl": 12
988
- },
989
- "speech_active": {
990
- "type": "checkbox",
991
- "label": "Sprachausgaben aktivieren",
992
- "default": false,
993
- "xs": 12,
994
- "sm": 3,
995
- "md": 3,
996
- "lg": 3,
997
- "xl": 3,
998
- "newLine": true
999
- },
1013
+ "consumption": {
1014
+ "type": "panel",
1015
+ "label": "PV, Consumption & Costs",
1016
+ "items": {
1017
+ "consumption_header": {
1018
+ "type": "header",
1019
+ "text": "Consumption and cost calculation",
1020
+ "size": 4,
1021
+ "newLine": true,
1022
+ "xs": 12,
1023
+ "sm": 12,
1024
+ "md": 12,
1025
+ "lg": 12,
1026
+ "xl": 12
1027
+ },
1028
+ "consumption_enabled": {
1029
+ "type": "checkbox",
1030
+ "label": "Enable consumption and cost calculation",
1031
+ "default": false,
1032
+ "xs": 12,
1033
+ "sm": 6,
1034
+ "md": 6,
1035
+ "lg": 6,
1036
+ "xl": 6,
1037
+ "newLine": true
1038
+ },
1000
1039
 
1001
- "speech_alexa_header": {
1002
- "type": "header",
1003
- "text": "Amazon Alexa",
1004
- "size": 4,
1005
- "newLine": true,
1006
- "xs": 12,
1007
- "sm": 12,
1008
- "md": 12,
1009
- "lg": 12,
1010
- "xl": 12
1011
- },
1012
- "speech_alexa_enabled": {
1013
- "type": "checkbox",
1014
- "label": "Ausgabe über Alexa aktivieren",
1015
- "default": false,
1016
- "xs": 12,
1017
- "sm": 3,
1018
- "md": 3,
1019
- "lg": 3,
1020
- "xl": 3,
1021
- "newLine": true
1022
- },
1023
- "speech_alexa_device": {
1024
- "type": "objectId",
1025
- "label": "Alexa-Gerät",
1026
- "default": "",
1027
- "xs": 12,
1028
- "sm": 6,
1029
- "md": 6,
1030
- "lg": 6,
1031
- "xl": 6
1032
- },
1033
- "speech_alexa_volume": {
1034
- "type": "number",
1035
- "label": "Lautstärke (0–100)",
1036
- "default": 50,
1037
- "xs": 12,
1038
- "sm": 3,
1039
- "md": 3,
1040
- "lg": 3,
1041
- "xl": 3,
1042
- "newLine": true
1043
- },
1044
- "speech_alexa_voice": {
1045
- "type": "select",
1046
- "label": "Stimme",
1047
- "options": [
1048
- { "label": "Standard (weiblich)", "value": "female" },
1049
- { "label": "Männlich", "value": "male" }
1050
- ],
1051
- "default": "female",
1052
- "xs": 12,
1053
- "sm": 3,
1054
- "md": 3,
1055
- "lg": 3,
1056
- "xl": 3
1057
- },
1040
+ "external_energy_total_id": {
1041
+ "type": "objectId",
1042
+ "label": "Object ID external kWh meter",
1043
+ "default": "",
1044
+ "xs": 12,
1045
+ "sm": 6,
1046
+ "md": 6,
1047
+ "lg": 6,
1048
+ "xl": 6
1049
+ },
1050
+ "energy_price_eur_kwh": {
1051
+ "type": "number",
1052
+ "label": "Electricity price (€ / kWh)",
1053
+ "default": 0.35,
1054
+ "min": 0,
1055
+ "step": 0.01,
1056
+ "xs": 12,
1057
+ "sm": 3,
1058
+ "md": 3,
1059
+ "lg": 3,
1060
+ "xl": 3,
1061
+ "newLine": true
1062
+ },
1058
1063
 
1059
- "speech_telegram_header": {
1060
- "type": "header",
1061
- "text": "Telegram",
1062
- "size": 4,
1063
- "newLine": true,
1064
- "xs": 12,
1065
- "sm": 12,
1066
- "md": 12,
1067
- "lg": 12,
1068
- "xl": 12
1069
- },
1070
- "speech_telegram_enabled": {
1071
- "type": "checkbox",
1072
- "label": "Ausgabe über Telegram aktivieren",
1073
- "default": false,
1074
- "xs": 12,
1075
- "sm": 3,
1076
- "md": 3,
1077
- "lg": 3,
1078
- "xl": 3,
1079
- "newLine": true
1080
- },
1081
- "speech_telegram_instance": {
1082
- "type": "instance",
1083
- "adapter": "telegram",
1084
- "label": "Telegram-Instanz",
1085
- "default": "telegram.0",
1086
- "xs": 12,
1087
- "sm": 6,
1088
- "md": 6,
1089
- "lg": 6,
1090
- "xl": 6
1091
- },
1092
- "speech_telegram_placeholder": {
1093
- "type": "staticText",
1094
- "text": " ",
1095
- "xs": 12,
1096
- "sm": 3,
1097
- "md": 3,
1098
- "lg": 3,
1099
- "xl": 3,
1100
- "newLine": true
1101
- },
1102
- "speech_telegram_users": {
1103
- "type": "text",
1104
- "label": "Telegram-Empfänger (Benutzernamen, Komma-getrennt / leer = an alle Benutzer)",
1105
- "tooltip": "Beispiel: Dirk,Dennis (leer = an alle Benutzer senden)",
1106
- "default": "",
1107
- "xs": 12,
1108
- "sm": 6,
1109
- "md": 6,
1110
- "lg": 6,
1111
- "xl": 6
1112
- },
1113
- "speech_mail_header": {
1114
- "type": "header",
1115
- "text": "Mail",
1116
- "size": 4,
1117
- "newLine": true,
1118
- "xs": 12,
1119
- "sm": 12,
1120
- "md": 12,
1121
- "lg": 12,
1122
- "xl": 12
1123
- },
1124
- "speech_email_enabled": {
1125
- "type": "checkbox",
1126
- "label": "Ausgabe über E-Mail aktivieren",
1127
- "default": false,
1128
- "xs": 12,
1129
- "sm": 3,
1130
- "md": 3,
1131
- "lg": 3,
1132
- "xl": 3,
1133
- "newLine": true
1134
- },
1135
- "speech_email_instance": {
1136
- "type": "instance",
1137
- "adapter": "email",
1138
- "label": "E-Mail Adapter-Instanz",
1139
- "default": "email.0",
1140
- "xs": 12,
1141
- "sm": 6,
1142
- "md": 6,
1143
- "lg": 6,
1144
- "xl": 6
1145
- },
1146
- "speech_email_recipient": {
1147
- "type": "text",
1148
- "label": "Empfänger-Adresse",
1149
- "default": "meineadresse@example.com",
1150
- "xs": 12,
1151
- "sm": 6,
1152
- "md": 6,
1153
- "lg": 6,
1154
- "xl": 6,
1155
- "newLine": true
1156
- },
1157
- "speech_email_subject": {
1158
- "type": "text",
1159
- "label": "E-Mail Betreff",
1160
- "default": "PoolControl Nachricht",
1161
- "xs": 12,
1162
- "sm": 6,
1163
- "md": 6,
1164
- "lg": 6,
1165
- "xl": 6
1166
- },
1167
- "divider_speech4": {
1168
- "type": "divider",
1169
- "newLine": true
1170
- },
1171
- "speech_temp_threshold": {
1172
- "type": "number",
1173
- "label": "Temperaturschwelle für Ansage (°C)",
1174
- "default": 25,
1175
- "xs": 12,
1176
- "sm": 3,
1177
- "md": 3,
1178
- "lg": 3,
1179
- "xl": 3,
1180
- "newLine": true
1181
- },
1182
- "speech_include_errors": {
1183
- "type": "checkbox",
1184
- "label": "Fehlermeldungen ansagen",
1185
- "default": true,
1186
- "xs": 12,
1187
- "sm": 3,
1188
- "md": 3,
1189
- "lg": 3,
1190
- "xl": 3
1191
- }
1192
- }
1193
- },
1194
- "consumption": {
1195
- "type": "panel",
1196
- "label": "PV, Verbrauch & Kosten",
1197
- "items": {
1198
- "consumption_header": {
1199
- "type": "header",
1200
- "text": "Verbrauch- und Kostenberechnung",
1201
- "size": 4,
1202
- "newLine": true,
1203
- "xs": 12,
1204
- "sm": 12,
1205
- "md": 12,
1206
- "lg": 12,
1207
- "xl": 12
1208
- },
1209
- "consumption_enabled": {
1210
- "type": "checkbox",
1211
- "label": "Verbrauchs- und Kostenberechnung aktivieren",
1212
- "default": false,
1213
- "xs": 12,
1214
- "sm": 6,
1215
- "md": 6,
1216
- "lg": 6,
1217
- "xl": 6,
1218
- "newLine": true
1219
- },
1064
+ "consumption_hint": {
1065
+ "type": "staticText",
1066
+ "text": "Note: An external kWh meter is required for consumption calculation (e.g. smart plug).",
1067
+ "newLine": true,
1068
+ "xs": 12,
1069
+ "sm": 12,
1070
+ "md": 12,
1071
+ "lg": 12,
1072
+ "xl": 12
1073
+ },
1074
+
1075
+ "pv_header": {
1076
+ "type": "header",
1077
+ "text": "Photovoltaics (Surplus detection)",
1078
+ "size": 4,
1079
+ "newLine": true,
1080
+ "xs": 12,
1081
+ "sm": 12,
1082
+ "md": 12,
1083
+ "lg": 12,
1084
+ "xl": 12
1085
+ },
1220
1086
 
1221
- "external_energy_total_id": {
1222
- "type": "objectId",
1223
- "label": "Objekt-ID externer kWh-Zähler",
1224
- "default": "",
1225
- "xs": 12,
1226
- "sm": 6,
1227
- "md": 6,
1228
- "lg": 6,
1229
- "xl": 6
1230
- },
1231
- "energy_price_eur_kwh": {
1232
- "type": "number",
1233
- "label": "Strompreis (€ / kWh)",
1234
- "default": 0.35,
1235
- "min": 0,
1236
- "step": 0.01,
1237
- "xs": 12,
1238
- "sm": 3,
1239
- "md": 3,
1240
- "lg": 3,
1241
- "xl": 3,
1242
- "newLine": true
1243
- },
1087
+ "power_generated_id": {
1088
+ "type": "objectId",
1089
+ "label": "Object ID PV generation power (W)",
1090
+ "default": "",
1091
+ "xs": 12,
1092
+ "sm": 6,
1093
+ "md": 6,
1094
+ "lg": 6,
1095
+ "xl": 6,
1096
+ "tooltip": "Datapoint containing current PV power (Watts)"
1097
+ },
1244
1098
 
1245
- "consumption_hint": {
1246
- "type": "staticText",
1247
- "text": "Hinweis: Für die Verbrauchsberechnung wird ein externer kWh-Zähler benötigt (z. B. Messsteckdose).",
1248
- "newLine": true,
1249
- "xs": 12,
1250
- "sm": 12,
1251
- "md": 12,
1252
- "lg": 12,
1253
- "xl": 12
1254
- },
1255
- "pv_header": {
1256
- "type": "header",
1257
- "text": "Photovoltaik (Überschusserkennung)",
1258
- "size": 4,
1259
- "newLine": true,
1260
- "xs": 12,
1261
- "sm": 12,
1262
- "md": 12,
1263
- "lg": 12,
1264
- "xl": 12
1265
- },
1266
- "power_generated_id": {
1267
- "type": "objectId",
1268
- "label": "Objekt-ID PV-Erzeugungsleistung (W)",
1269
- "default": "",
1270
- "xs": 12,
1271
- "sm": 6,
1272
- "md": 6,
1273
- "lg": 6,
1274
- "xl": 6,
1275
- "tooltip": "Datenpunkt mit aktueller PV-Leistung (Watt)"
1276
- },
1277
- "power_house_id": {
1278
- "type": "objectId",
1279
- "label": "Objekt-ID Hausverbrauch (W)",
1280
- "default": "",
1281
- "xs": 12,
1282
- "sm": 6,
1283
- "md": 6,
1284
- "lg": 6,
1285
- "xl": 6,
1286
- "tooltip": "Datenpunkt mit aktuellem Hausverbrauch (Watt)"
1287
- },
1288
- "threshold_w": {
1289
- "type": "number",
1290
- "label": "Schwellwert für PV-Überschuss (W)",
1291
- "default": 200,
1292
- "min": 0,
1293
- "max": 2000,
1294
- "step": 50,
1295
- "xs": 12,
1296
- "sm": 3,
1297
- "md": 3,
1298
- "lg": 3,
1299
- "xl": 3,
1300
- "tooltip": "Ab welcher Differenz zwischen PV und Hausverbrauch ein Überschuss gilt"
1099
+ "power_house_id": {
1100
+ "type": "objectId",
1101
+ "label": "Object ID house consumption (W)",
1102
+ "default": "",
1103
+ "xs": 12,
1104
+ "sm": 6,
1105
+ "md": 6,
1106
+ "lg": 6,
1107
+ "xl": 6,
1108
+ "tooltip": "Datapoint containing current house consumption (Watts)"
1109
+ },
1110
+
1111
+ "threshold_w": {
1112
+ "type": "number",
1113
+ "label": "Threshold for PV surplus (W)",
1114
+ "default": 200,
1115
+ "min": 0,
1116
+ "max": 2000,
1117
+ "step": 50,
1118
+ "xs": 12,
1119
+ "sm": 3,
1120
+ "md": 3,
1121
+ "lg": 3,
1122
+ "xl": 3,
1123
+ "tooltip": "Difference between PV generation and house consumption that counts as surplus"
1124
+ }
1301
1125
  }
1302
- }
1303
- },
1126
+ },
1304
1127
  "actuators": {
1305
1128
  "type": "panel",
1306
- "label": "Zusatz-Aktoren",
1129
+ "label": "Additional Actuators",
1307
1130
  "items": {
1308
1131
  "actuators_header": {
1309
1132
  "type": "header",
1310
- "text": "Zusatz-Aktoren (Ventile, Beleuchtung & Zusatzpumpen)",
1133
+ "text": "Additional actuators (valves, lighting & auxiliary pumps)",
1311
1134
  "size": 4,
1312
1135
  "newLine": true,
1313
1136
  "xs": 12,
@@ -1318,7 +1141,7 @@
1318
1141
  },
1319
1142
  "actuators_intro": {
1320
1143
  "type": "staticText",
1321
- "text": "In diesem Bereich können optionale Zusatz-Aktoren konfiguriert werden. Aktoren werden nur dann im Adapter angelegt, wenn sie explizit aktiviert werden.",
1144
+ "text": "Optional additional actuators can be configured here. Actuators are only created in the adapter if they are explicitly enabled.",
1322
1145
  "newLine": true,
1323
1146
  "xs": 12,
1324
1147
  "sm": 12,
@@ -1329,7 +1152,7 @@
1329
1152
 
1330
1153
  "lighting_header": {
1331
1154
  "type": "header",
1332
- "text": "Beleuchtung",
1155
+ "text": "Lighting",
1333
1156
  "size": 4,
1334
1157
  "newLine": true,
1335
1158
  "xs": 12,
@@ -1339,21 +1162,105 @@
1339
1162
  "xl": 12
1340
1163
  },
1341
1164
 
1342
- "light_1_active": { "type": "checkbox", "label": "Beleuchtung 1 aktiv", "default": false, "newLine": true, "xs": 12, "sm": 3, "md": 3, "lg": 3, "xl": 3 },
1343
- "light_1_name": { "type": "text", "label": "Name Beleuchtung 1", "default": "", "xs": 12, "sm": 3, "md": 3, "lg": 3, "xl": 3 },
1344
- "light_1_object": { "type": "objectId", "label": "Objekt-ID Beleuchtung 1", "default": "", "xs": 12, "sm": 6, "md": 6, "lg": 6, "xl": 6 },
1165
+ "light_1_active": {
1166
+ "type": "checkbox",
1167
+ "label": "Lighting 1 active",
1168
+ "default": false,
1169
+ "newLine": true,
1170
+ "xs": 12,
1171
+ "sm": 3,
1172
+ "md": 3,
1173
+ "lg": 3,
1174
+ "xl": 3
1175
+ },
1176
+ "light_1_name": {
1177
+ "type": "text",
1178
+ "label": "Name Lighting 1",
1179
+ "default": "",
1180
+ "xs": 12,
1181
+ "sm": 3,
1182
+ "md": 3,
1183
+ "lg": 3,
1184
+ "xl": 3
1185
+ },
1186
+ "light_1_object": {
1187
+ "type": "objectId",
1188
+ "label": "Object ID Lighting 1",
1189
+ "default": "",
1190
+ "xs": 12,
1191
+ "sm": 6,
1192
+ "md": 6,
1193
+ "lg": 6,
1194
+ "xl": 6
1195
+ },
1345
1196
 
1346
- "light_2_active": { "type": "checkbox", "label": "Beleuchtung 2 aktiv", "default": false, "newLine": true, "xs": 12, "sm": 3, "md": 3, "lg": 3, "xl": 3 },
1347
- "light_2_name": { "type": "text", "label": "Name Beleuchtung 2", "default": "", "xs": 12, "sm": 3, "md": 3, "lg": 3, "xl": 3 },
1348
- "light_2_object": { "type": "objectId", "label": "Objekt-ID Beleuchtung 2", "default": "", "xs": 12, "sm": 6, "md": 6, "lg": 6, "xl": 6 },
1197
+ "light_2_active": {
1198
+ "type": "checkbox",
1199
+ "label": "Lighting 2 active",
1200
+ "default": false,
1201
+ "newLine": true,
1202
+ "xs": 12,
1203
+ "sm": 3,
1204
+ "md": 3,
1205
+ "lg": 3,
1206
+ "xl": 3
1207
+ },
1208
+ "light_2_name": {
1209
+ "type": "text",
1210
+ "label": "Name Lighting 2",
1211
+ "default": "",
1212
+ "xs": 12,
1213
+ "sm": 3,
1214
+ "md": 3,
1215
+ "lg": 3,
1216
+ "xl": 3
1217
+ },
1218
+ "light_2_object": {
1219
+ "type": "objectId",
1220
+ "label": "Object ID Lighting 2",
1221
+ "default": "",
1222
+ "xs": 12,
1223
+ "sm": 6,
1224
+ "md": 6,
1225
+ "lg": 6,
1226
+ "xl": 6
1227
+ },
1349
1228
 
1350
- "light_3_active": { "type": "checkbox", "label": "Beleuchtung 3 aktiv", "default": false, "newLine": true, "xs": 12, "sm": 3, "md": 3, "lg": 3, "xl": 3 },
1351
- "light_3_name": { "type": "text", "label": "Name Beleuchtung 3", "default": "", "xs": 12, "sm": 3, "md": 3, "lg": 3, "xl": 3 },
1352
- "light_3_object": { "type": "objectId", "label": "Objekt-ID Beleuchtung 3", "default": "", "xs": 12, "sm": 6, "md": 6, "lg": 6, "xl": 6 },
1229
+ "light_3_active": {
1230
+ "type": "checkbox",
1231
+ "label": "Lighting 3 active",
1232
+ "default": false,
1233
+ "newLine": true,
1234
+ "xs": 12,
1235
+ "sm": 3,
1236
+ "md": 3,
1237
+ "lg": 3,
1238
+ "xl": 3
1239
+ },
1240
+ "light_3_name": {
1241
+ "type": "text",
1242
+ "label": "Name Lighting 3",
1243
+ "default": "",
1244
+ "xs": 12,
1245
+ "sm": 3,
1246
+ "md": 3,
1247
+ "lg": 3,
1248
+ "xl": 3
1249
+ },
1250
+ "light_3_object": {
1251
+ "type": "objectId",
1252
+ "label": "Object ID Lighting 3",
1253
+ "default": "",
1254
+ "xs": 12,
1255
+ "sm": 6,
1256
+ "md": 6,
1257
+ "lg": 6,
1258
+ "xl": 6
1259
+ },
1353
1260
 
1354
1261
  "extrapumps_header": {
1355
1262
  "type": "header",
1356
- "text": "Zusatzpumpen & Attraktionen",
1263
+ "text": "Auxiliary pumps & attractions",
1357
1264
  "size": 4,
1358
1265
  "newLine": true,
1359
1266
  "xs": 12,
@@ -1363,150 +1270,248 @@
1363
1270
  "xl": 12
1364
1271
  },
1365
1272
 
1366
- "extrapump_1_active": { "type": "checkbox", "label": "Zusatzpumpe 1 aktiv", "default": false, "newLine": true, "xs": 12, "sm": 3, "md": 3, "lg": 3, "xl": 3 },
1367
- "extrapump_1_name": { "type": "text", "label": "Name Zusatzpumpe 1", "default": "", "xs": 12, "sm": 3, "md": 3, "lg": 3, "xl": 3 },
1368
- "extrapump_1_object": { "type": "objectId", "label": "Objekt-ID Zusatzpumpe 1", "default": "", "xs": 12, "sm": 6, "md": 6, "lg": 6, "xl": 6 },
1273
+ "extrapump_1_active": {
1274
+ "type": "checkbox",
1275
+ "label": "Auxiliary pump 1 active",
1276
+ "default": false,
1277
+ "newLine": true,
1278
+ "xs": 12,
1279
+ "sm": 3,
1280
+ "md": 3,
1281
+ "lg": 3,
1282
+ "xl": 3
1283
+ },
1284
+ "extrapump_1_name": {
1285
+ "type": "text",
1286
+ "label": "Name Auxiliary pump 1",
1287
+ "default": "",
1288
+ "xs": 12,
1289
+ "sm": 3,
1290
+ "md": 3,
1291
+ "lg": 3,
1292
+ "xl": 3
1293
+ },
1294
+ "extrapump_1_object": {
1295
+ "type": "objectId",
1296
+ "label": "Object ID Auxiliary pump 1",
1297
+ "default": "",
1298
+ "xs": 12,
1299
+ "sm": 6,
1300
+ "md": 6,
1301
+ "lg": 6,
1302
+ "xl": 6
1303
+ },
1369
1304
 
1370
- "extrapump_2_active": { "type": "checkbox", "label": "Zusatzpumpe 2 aktiv", "default": false, "newLine": true, "xs": 12, "sm": 3, "md": 3, "lg": 3, "xl": 3 },
1371
- "extrapump_2_name": { "type": "text", "label": "Name Zusatzpumpe 2", "default": "", "xs": 12, "sm": 3, "md": 3, "lg": 3, "xl": 3 },
1372
- "extrapump_2_object": { "type": "objectId", "label": "Objekt-ID Zusatzpumpe 2", "default": "", "xs": 12, "sm": 6, "md": 6, "lg": 6, "xl": 6 },
1305
+ "extrapump_2_active": {
1306
+ "type": "checkbox",
1307
+ "label": "Auxiliary pump 2 active",
1308
+ "default": false,
1309
+ "newLine": true,
1310
+ "xs": 12,
1311
+ "sm": 3,
1312
+ "md": 3,
1313
+ "lg": 3,
1314
+ "xl": 3
1315
+ },
1316
+ "extrapump_2_name": {
1317
+ "type": "text",
1318
+ "label": "Name Auxiliary pump 2",
1319
+ "default": "",
1320
+ "xs": 12,
1321
+ "sm": 3,
1322
+ "md": 3,
1323
+ "lg": 3,
1324
+ "xl": 3
1325
+ },
1326
+ "extrapump_2_object": {
1327
+ "type": "objectId",
1328
+ "label": "Object ID Auxiliary pump 2",
1329
+ "default": "",
1330
+ "xs": 12,
1331
+ "sm": 6,
1332
+ "md": 6,
1333
+ "lg": 6,
1334
+ "xl": 6
1335
+ },
1373
1336
 
1374
- "extrapump_3_active": { "type": "checkbox", "label": "Zusatzpumpe 3 aktiv", "default": false, "newLine": true, "xs": 12, "sm": 3, "md": 3, "lg": 3, "xl": 3 },
1375
- "extrapump_3_name": { "type": "text", "label": "Name Zusatzpumpe 3", "default": "", "xs": 12, "sm": 3, "md": 3, "lg": 3, "xl": 3 },
1376
- "extrapump_3_object": { "type": "objectId", "label": "Objekt-ID Zusatzpumpe 3", "default": "", "xs": 12, "sm": 6, "md": 6, "lg": 6, "xl": 6 }
1337
+ "extrapump_3_active": {
1338
+ "type": "checkbox",
1339
+ "label": "Auxiliary pump 3 active",
1340
+ "default": false,
1341
+ "newLine": true,
1342
+ "xs": 12,
1343
+ "sm": 3,
1344
+ "md": 3,
1345
+ "lg": 3,
1346
+ "xl": 3
1347
+ },
1348
+ "extrapump_3_name": {
1349
+ "type": "text",
1350
+ "label": "Name Auxiliary pump 3",
1351
+ "default": "",
1352
+ "xs": 12,
1353
+ "sm": 3,
1354
+ "md": 3,
1355
+ "lg": 3,
1356
+ "xl": 3
1357
+ },
1358
+ "extrapump_3_object": {
1359
+ "type": "objectId",
1360
+ "label": "Object ID Auxiliary pump 3",
1361
+ "default": "",
1362
+ "xs": 12,
1363
+ "sm": 6,
1364
+ "md": 6,
1365
+ "lg": 6,
1366
+ "xl": 6
1367
+ }
1377
1368
  }
1378
1369
  },
1370
+ "help": {
1371
+ "type": "panel",
1372
+ "label": "Help & Info",
1373
+ "items": {
1374
+ "help_header": {
1375
+ "type": "header",
1376
+ "text": "Help and Information",
1377
+ "size": 4,
1378
+ "newLine": true,
1379
+ "xs": 12,
1380
+ "sm": 12,
1381
+ "md": 12,
1382
+ "lg": 12,
1383
+ "xl": 12
1384
+ },
1385
+ "helpLink_en": {
1386
+ "type": "staticLink",
1387
+ "label": "Open documentation (English) on GitHub",
1388
+ "href": "https://github.com/DasBo1975/ioBroker.poolcontrol/blob/main/docs/en/help.md",
1389
+ "newLine": true,
1390
+ "xs": 12,
1391
+ "sm": 12,
1392
+ "md": 12,
1393
+ "lg": 12,
1394
+ "xl": 12
1395
+ },
1396
+ "helpLink_de": {
1397
+ "type": "staticLink",
1398
+ "label": "Open documentation (German) on GitHub",
1399
+ "href": "https://github.com/DasBo1975/ioBroker.poolcontrol/blob/main/docs/de/help.md",
1400
+ "xs": 12,
1401
+ "sm": 12,
1402
+ "md": 12,
1403
+ "lg": 12,
1404
+ "xl": 12
1405
+ },
1406
+ "helpText": {
1407
+ "type": "staticText",
1408
+ "text": "Here you will find the complete documentation and information about all settings. Additional information about future versions will follow.",
1409
+ "xs": 12,
1410
+ "sm": 12,
1411
+ "md": 12,
1412
+ "lg": 12,
1413
+ "xl": 12
1414
+ },
1379
1415
 
1380
- "help": {
1381
- "type": "panel",
1382
- "label": "Hilfe & Info",
1383
- "items": {
1384
- "help_header": {
1385
- "type": "header",
1386
- "text": "Hilfe und Hinweise",
1387
- "size": 4,
1388
- "newLine": true,
1389
- "xs": 12,
1390
- "sm": 12,
1391
- "md": 12,
1392
- "lg": 12,
1393
- "xl": 12
1394
- },
1395
- "helpLink": {
1396
- "type": "staticLink",
1397
- "label": "Öffne die ausführliche Dokumentation auf GitHub",
1398
- "href": "https://github.com/DasBo1975/ioBroker.poolcontrol/blob/main/admin/help.md",
1399
- "newLine": true,
1400
- "xs": 12,
1401
- "sm": 12,
1402
- "md": 12,
1403
- "lg": 12,
1404
- "xl": 12
1405
- },
1406
- "helpText": {
1407
- "type": "staticText",
1408
- "text": "Hier finden Sie die vollständige Dokumentation und Hinweise zu allen Einstellungen. Weitere Hinweise zu künftigen Versionen folgen.",
1409
- "xs": 12,
1410
- "sm": 12,
1411
- "md": 12,
1412
- "lg": 12,
1413
- "xl": 12
1414
- },
1415
- "ai_info_header": {
1416
- "type": "header",
1417
- "text": "Wichtige Hinweise zum KI-System",
1418
- "size": 4,
1419
- "newLine": true,
1420
- "xs": 12,
1421
- "sm": 12,
1422
- "md": 12,
1423
- "lg": 12,
1424
- "xl": 12
1425
- },
1426
- "ai_info_text": {
1427
- "type": "staticText",
1428
- "text": "Das KI-System (aiHelper & aiForecastHelper) ruft Wetterdaten von Open-Meteo über eine HTTPS-Verbindung ab. Dabei werden die Geodaten aus der ioBroker-Systemkonfiguration (system.config › latitude/longitude) verwendet. Es werden keine Daten gespeichert oder an Dritte übermittelt. Ohne korrekte Geodaten kann das KI-System keine Vorhersagen erzeugen.",
1429
- "newLine": true,
1430
- "xs": 12,
1431
- "sm": 12,
1432
- "md": 12,
1433
- "lg": 12,
1434
- "xl": 12
1435
- },
1436
- "help_ai_info": {
1437
- "type": "staticText",
1438
- "text": "Hinweis: Die KI-Funktionen sind vollständig optional und können jederzeit über den Datenpunkt ‚ai.enabled‘ deaktiviert werden. Die Wetterfunktionen (z. B. Wetterhinweise, Pooltipps, Vorhersage für morgen) lassen sich zusätzlich einzeln über die jeweiligen Schalter unter ‚ai.weather.switches.*‘ ein- oder ausschalten. Für die Erstellung der Wetterdaten verwendet der Adapter den Dienst Open-Meteo. Hierfür werden die in ioBroker hinterlegten Geodaten (Breiten- und Längengrad aus system.config) benötigt.",
1439
- "newLine": true,
1440
- "xs": 12,
1441
- "sm": 12,
1442
- "md": 12,
1443
- "lg": 12,
1444
- "xl": 12
1445
- },
1446
- "info_internet_header": {
1447
- "type": "header",
1448
- "text": "Internetzugriffe & Datenschutz",
1449
- "size": 4,
1450
- "newLine": true,
1451
- "xs": 12,
1452
- "sm": 12,
1453
- "md": 12,
1454
- "lg": 12,
1455
- "xl": 12
1456
- },
1457
- "info_internet_text": {
1458
- "type": "staticText",
1459
- "text": "Der PoolControl-Adapter arbeitet grundsätzlich vollständig lokal. Aktuell nutzen nur die KI-Funktionen Wetterdaten von Open-Meteo über eine verschlüsselte HTTPS-Verbindung. Dabei werden ausschließlich die in ioBroker hinterlegten Geodaten (Breiten- und Längengrad) übertragen. Es werden keine weiteren Daten gespeichert oder an Dritte übermittelt. Zukünftig können weitere optionale Internetdienste hinzukommen, diese werden jedoch stets klar gekennzeichnet.",
1460
- "newLine": true,
1461
- "xs": 12,
1462
- "sm": 12,
1463
- "md": 12,
1464
- "lg": 12,
1465
- "xl": 12
1466
- },
1467
- "info_season_header": {
1468
- "type": "header",
1469
- "text": "Hinweis zur Poolsaison",
1470
- "size": 4,
1471
- "newLine": true,
1472
- "xs": 12,
1473
- "sm": 12,
1474
- "md": 12,
1475
- "lg": 12,
1476
- "xl": 12
1477
- },
1478
- "info_season_text": {
1479
- "type": "staticText",
1480
- "text": "Viele automatische Funktionen (z. B. Solarsteuerung, Photovoltaikmodus, KI-Wetterlogik und Diagnosefunktionen) arbeiten nur, wenn die Poolsaison aktiv ist. Der Saisonstatus kann jederzeit über den Datenpunkt 'status.season_active' oder über die Instanzkonfiguration geändert werden.",
1481
- "newLine": true,
1482
- "xs": 12,
1483
- "sm": 12,
1484
- "md": 12,
1485
- "lg": 12,
1486
- "xl": 12
1487
- },
1488
- "info_speech_header": {
1489
- "type": "header",
1490
- "text": "Zentrale Sprachausgabe (speech.queue)",
1491
- "size": 4,
1492
- "newLine": true,
1493
- "xs": 12,
1494
- "sm": 12,
1495
- "md": 12,
1496
- "lg": 12,
1497
- "xl": 12
1498
- },
1499
- "info_speech_text": {
1500
- "type": "staticText",
1501
- "text": "Alle Text- und Sprachausgaben des Adapters – einschließlich KI-Vorhersagen, Warnmeldungen, Pumpenstatus, Solarhinweisen und Diagnosemeldungen – werden über den zentralen Datenpunkt 'speech.queue' ausgegeben. Dieser sollte für VIS-Anzeigen, Alexa- oder Telegram-Ausgaben genutzt werden.",
1502
- "newLine": true,
1503
- "xs": 12,
1504
- "sm": 12,
1505
- "md": 12,
1506
- "lg": 12,
1507
- "xl": 12
1416
+ "ai_info_header": {
1417
+ "type": "header",
1418
+ "text": "Important information about the AI system",
1419
+ "size": 4,
1420
+ "newLine": true,
1421
+ "xs": 12,
1422
+ "sm": 12,
1423
+ "md": 12,
1424
+ "lg": 12,
1425
+ "xl": 12
1426
+ },
1427
+ "ai_info_text": {
1428
+ "type": "staticText",
1429
+ "text": "The AI system (aiHelper & aiForecastHelper) retrieves weather data from Open-Meteo via HTTPS. It uses the geo-coordinates from the ioBroker system configuration (system.config › latitude/longitude). No data is stored or transmitted to third parties. Without valid geo-coordinates, the AI system cannot generate forecasts.",
1430
+ "newLine": true,
1431
+ "xs": 12,
1432
+ "sm": 12,
1433
+ "md": 12,
1434
+ "lg": 12,
1435
+ "xl": 12
1436
+ },
1437
+
1438
+ "help_ai_info": {
1439
+ "type": "staticText",
1440
+ "text": "Note: The AI features are completely optional and can be disabled at any time via the 'ai.enabled' datapoint. Weather features (e.g. weather hints, pool tips, forecast for tomorrow) can also be individually enabled or disabled via 'ai.weather.switches.*'. The adapter uses the Open-Meteo service to generate weather data. For this, the geo-coordinates stored in ioBroker (latitude and longitude from system.config) are required.",
1441
+ "newLine": true,
1442
+ "xs": 12,
1443
+ "sm": 12,
1444
+ "md": 12,
1445
+ "lg": 12,
1446
+ "xl": 12
1447
+ },
1448
+
1449
+ "info_internet_header": {
1450
+ "type": "header",
1451
+ "text": "Internet access & data protection",
1452
+ "size": 4,
1453
+ "newLine": true,
1454
+ "xs": 12,
1455
+ "sm": 12,
1456
+ "md": 12,
1457
+ "lg": 12,
1458
+ "xl": 12
1459
+ },
1460
+ "info_internet_text": {
1461
+ "type": "staticText",
1462
+ "text": "The PoolControl adapter works completely locally by default. Currently, only the AI features access weather data from Open-Meteo via encrypted HTTPS. Only the geo-coordinates stored in ioBroker (latitude and longitude) are transmitted. No additional data is stored or sent to third parties. Future optional internet services may be added, but they will always be clearly marked.",
1463
+ "newLine": true,
1464
+ "xs": 12,
1465
+ "sm": 12,
1466
+ "md": 12,
1467
+ "lg": 12,
1468
+ "xl": 12
1469
+ },
1470
+
1471
+ "info_season_header": {
1472
+ "type": "header",
1473
+ "text": "Note about pool season",
1474
+ "size": 4,
1475
+ "newLine": true,
1476
+ "xs": 12,
1477
+ "sm": 12,
1478
+ "md": 12,
1479
+ "lg": 12,
1480
+ "xl": 12
1481
+ },
1482
+ "info_season_text": {
1483
+ "type": "staticText",
1484
+ "text": "Many automatic features (e.g. solar control, photovoltaic mode, AI weather logic and diagnostic functions) only operate when the pool season is active. The season status can be changed at any time via the 'status.season_active' datapoint or in the instance configuration.",
1485
+ "newLine": true,
1486
+ "xs": 12,
1487
+ "sm": 12,
1488
+ "md": 12,
1489
+ "lg": 12,
1490
+ "xl": 12
1491
+ },
1492
+
1493
+ "info_speech_header": {
1494
+ "type": "header",
1495
+ "text": "Central speech output (speech.queue)",
1496
+ "size": 4,
1497
+ "newLine": true,
1498
+ "xs": 12,
1499
+ "sm": 12,
1500
+ "md": 12,
1501
+ "lg": 12,
1502
+ "xl": 12
1503
+ },
1504
+ "info_speech_text": {
1505
+ "type": "staticText",
1506
+ "text": "All text and speech outputs of the adapter – including AI forecasts, warnings, pump status, solar hints and diagnostic messages – are emitted via the central 'speech.queue' datapoint. This datapoint should be used for VIS displays, Alexa or Telegram outputs.",
1507
+ "newLine": true,
1508
+ "xs": 12,
1509
+ "sm": 12,
1510
+ "md": 12,
1511
+ "lg": 12,
1512
+ "xl": 12
1513
+ }
1508
1514
  }
1509
- }
1510
1515
  }
1511
1516
  }
1512
- }
1517
+ }