iobroker.poolcontrol 1.2.10 → 1.2.13

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 (35) hide show
  1. package/README.md +18 -11
  2. package/admin/i18n/de/translations.json +0 -2
  3. package/admin/i18n/es/translations.json +0 -2
  4. package/admin/i18n/fr/translations.json +0 -2
  5. package/admin/i18n/it/translations.json +0 -2
  6. package/admin/i18n/nl/translations.json +0 -2
  7. package/admin/i18n/pl/translations.json +0 -2
  8. package/admin/i18n/pt/translations.json +0 -2
  9. package/admin/i18n/ru/translations.json +0 -2
  10. package/admin/i18n/uk/translations.json +0 -2
  11. package/admin/i18n/zh-cn/translations.json +0 -2
  12. package/io-package.json +38 -32
  13. package/lib/stateDefinitions/actuatorsStates.js +132 -19
  14. package/lib/stateDefinitions/aiChemistryHelpStates.js +28 -11
  15. package/lib/stateDefinitions/aiStates.js +201 -31
  16. package/lib/stateDefinitions/consumptionStates.js +140 -14
  17. package/lib/stateDefinitions/controlStates.js +120 -34
  18. package/lib/stateDefinitions/debugLogStates.js +32 -10
  19. package/lib/stateDefinitions/generalStates.js +28 -4
  20. package/lib/stateDefinitions/heatStates.js +132 -17
  21. package/lib/stateDefinitions/infoStates.js +20 -5
  22. package/lib/stateDefinitions/photovoltaicStates.js +78 -19
  23. package/lib/stateDefinitions/pumpSpeedStates.js +76 -11
  24. package/lib/stateDefinitions/pumpStates.js +100 -15
  25. package/lib/stateDefinitions/pumpStates2.js +36 -9
  26. package/lib/stateDefinitions/pumpStates3.js +92 -23
  27. package/lib/stateDefinitions/pumpStates4.js +120 -30
  28. package/lib/stateDefinitions/runtimeStates.js +74 -10
  29. package/lib/stateDefinitions/solarStates.js +68 -9
  30. package/lib/stateDefinitions/speechStates.js +133 -18
  31. package/lib/stateDefinitions/statisticsStates.js +167 -24
  32. package/lib/stateDefinitions/statusStates.js +92 -12
  33. package/lib/stateDefinitions/temperatureStates.js +117 -18
  34. package/lib/stateDefinitions/timeStates.js +43 -12
  35. package/package.json +2 -1
@@ -20,8 +20,10 @@ async function createControlStates(adapter) {
20
20
  await adapter.setObjectNotExistsAsync('control', {
21
21
  type: 'channel',
22
22
  common: {
23
- name: 'Control',
24
- desc: 'Manual control and runtime functions (VIS / Blockly)',
23
+ name: {
24
+ en: 'Control',
25
+ de: 'Steuerung',
26
+ },
25
27
  },
26
28
  native: {},
27
29
  });
@@ -31,8 +33,10 @@ async function createControlStates(adapter) {
31
33
  await adapter.setObjectNotExistsAsync('control.pump', {
32
34
  type: 'channel',
33
35
  common: {
34
- name: 'Pump control',
35
- desc: 'Manual actions such as backwash or maintenance',
36
+ name: {
37
+ en: 'Pump control',
38
+ de: 'Pumpensteuerung',
39
+ },
36
40
  },
37
41
  native: {},
38
42
  });
@@ -41,8 +45,14 @@ async function createControlStates(adapter) {
41
45
  await adapter.setObjectNotExistsAsync('control.pump.backwash_start', {
42
46
  type: 'state',
43
47
  common: {
44
- name: 'Start backwash',
45
- desc: 'Starts backwash for the configured duration',
48
+ name: {
49
+ en: 'Start backwash',
50
+ de: 'Rueckspuelung starten',
51
+ },
52
+ desc: {
53
+ en: 'Starts backwash for the configured duration',
54
+ de: 'Startet die Rueckspuelung fuer die konfigurierte Dauer',
55
+ },
46
56
  type: 'boolean',
47
57
  role: 'button',
48
58
  read: true,
@@ -57,8 +67,14 @@ async function createControlStates(adapter) {
57
67
  await adapter.setObjectNotExistsAsync('control.pump.backwash_active', {
58
68
  type: 'state',
59
69
  common: {
60
- name: 'Backwash active',
61
- desc: 'Shows whether backwash is currently running',
70
+ name: {
71
+ en: 'Backwash active',
72
+ de: 'Rueckspuelung aktiv',
73
+ },
74
+ desc: {
75
+ en: 'Shows whether backwash is currently running',
76
+ de: 'Zeigt an, ob die Rueckspuelung aktuell laeuft',
77
+ },
62
78
  type: 'boolean',
63
79
  role: 'indicator',
64
80
  read: true,
@@ -73,8 +89,14 @@ async function createControlStates(adapter) {
73
89
  await adapter.setObjectNotExistsAsync('control.pump.backwash_duration', {
74
90
  type: 'state',
75
91
  common: {
76
- name: 'Backwash duration (minutes)',
77
- desc: 'Defines how long the backwash should run',
92
+ name: {
93
+ en: 'Backwash duration (minutes)',
94
+ de: 'Rueckspueldauer (Minuten)',
95
+ },
96
+ desc: {
97
+ en: 'Defines how long the backwash should run',
98
+ de: 'Legt fest, wie lange die Rueckspuelung laufen soll',
99
+ },
78
100
  type: 'number',
79
101
  role: 'level.timer',
80
102
  read: true,
@@ -99,8 +121,14 @@ async function createControlStates(adapter) {
99
121
  await adapter.setObjectNotExistsAsync('control.pump.backwash_reminder_active', {
100
122
  type: 'state',
101
123
  common: {
102
- name: 'Backwash reminder active',
103
- desc: 'If enabled, the adapter automatically reminds you to backwash after the configured interval has elapsed',
124
+ name: {
125
+ en: 'Backwash reminder active',
126
+ de: 'Rueckspuel-Erinnerung aktiv',
127
+ },
128
+ desc: {
129
+ en: 'If enabled, the adapter automatically reminds you to backwash after the configured interval has elapsed',
130
+ de: 'Wenn aktiviert, erinnert der Adapter automatisch an die Rueckspuelung nach Ablauf des konfigurierten Intervalls',
131
+ },
104
132
  type: 'boolean',
105
133
  role: 'switch',
106
134
  read: true,
@@ -119,8 +147,14 @@ async function createControlStates(adapter) {
119
147
  await adapter.setObjectNotExistsAsync('control.pump.backwash_interval_days', {
120
148
  type: 'state',
121
149
  common: {
122
- name: 'Backwash reminder: interval (days)',
123
- desc: 'Number of days after which a backwash reminder is triggered',
150
+ name: {
151
+ en: 'Backwash reminder: interval (days)',
152
+ de: 'Rueckspuel-Erinnerung: Intervall (Tage)',
153
+ },
154
+ desc: {
155
+ en: 'Number of days after which a backwash reminder is triggered',
156
+ de: 'Anzahl der Tage, nach denen eine Rueckspuel-Erinnerung ausgeloest wird',
157
+ },
124
158
  type: 'number',
125
159
  role: 'value.interval',
126
160
  unit: 'days',
@@ -145,8 +179,14 @@ async function createControlStates(adapter) {
145
179
  await adapter.setObjectNotExistsAsync('control.pump.backwash_last_date', {
146
180
  type: 'state',
147
181
  common: {
148
- name: 'Last backwash (date)',
149
- desc: 'Timestamp of the last performed backwash, used for reminder calculation',
182
+ name: {
183
+ en: 'Last backwash (date)',
184
+ de: 'Letzte Rueckspuelung (Datum)',
185
+ },
186
+ desc: {
187
+ en: 'Timestamp of the last performed backwash, used for reminder calculation',
188
+ de: 'Zeitstempel der zuletzt durchgefuehrten Rueckspuelung, verwendet fuer die Erinnerungsberechnung',
189
+ },
150
190
  type: 'string',
151
191
  role: 'date',
152
192
  read: true,
@@ -165,8 +205,14 @@ async function createControlStates(adapter) {
165
205
  await adapter.setObjectNotExistsAsync('control.pump.backwash_required', {
166
206
  type: 'state',
167
207
  common: {
168
- name: 'Backwash required',
169
- desc: 'Automatically set to true when the configured backwash interval has been exceeded',
208
+ name: {
209
+ en: 'Backwash required',
210
+ de: 'Rueckspuelung erforderlich',
211
+ },
212
+ desc: {
213
+ en: 'Automatically set to true when the configured backwash interval has been exceeded',
214
+ de: 'Wird automatisch auf true gesetzt, wenn das konfigurierte Rueckspuelintervall ueberschritten wurde',
215
+ },
170
216
  type: 'boolean',
171
217
  role: 'indicator.alarm',
172
218
  read: true,
@@ -181,8 +227,14 @@ async function createControlStates(adapter) {
181
227
  await adapter.setObjectNotExistsAsync('control.pump.maintenance_active', {
182
228
  type: 'state',
183
229
  common: {
184
- name: 'Maintenance mode active',
185
- desc: 'Disables automatic functions and allows manual pump control',
230
+ name: {
231
+ en: 'Maintenance mode active',
232
+ de: 'Wartungsmodus aktiv',
233
+ },
234
+ desc: {
235
+ en: 'Disables automatic functions and allows manual pump control',
236
+ de: 'Deaktiviert automatische Funktionen und ermoeglicht die manuelle Pumpensteuerung',
237
+ },
186
238
  type: 'boolean',
187
239
  role: 'switch',
188
240
  read: true,
@@ -197,8 +249,14 @@ async function createControlStates(adapter) {
197
249
  await adapter.setObjectNotExistsAsync('control.pump.notifications_enabled', {
198
250
  type: 'state',
199
251
  common: {
200
- name: 'Enable notifications',
201
- desc: 'If enabled, announcements or messages are sent for backwash and maintenance (email, Telegram, Alexa)',
252
+ name: {
253
+ en: 'Enable notifications',
254
+ de: 'Benachrichtigungen aktivieren',
255
+ },
256
+ desc: {
257
+ en: 'If enabled, announcements or messages are sent for backwash and maintenance (email, Telegram, Alexa)',
258
+ de: 'Wenn aktiviert, werden Ansagen oder Nachrichten fuer Rueckspuelung und Wartung gesendet (E-Mail, Telegram, Alexa)',
259
+ },
202
260
  type: 'boolean',
203
261
  role: 'switch',
204
262
  read: true,
@@ -218,8 +276,10 @@ async function createControlStates(adapter) {
218
276
  await adapter.setObjectNotExistsAsync('control.energy', {
219
277
  type: 'channel',
220
278
  common: {
221
- name: 'Energy management',
222
- desc: 'Functions to reset consumption and cost values',
279
+ name: {
280
+ en: 'Energy management',
281
+ de: 'Energiemanagement',
282
+ },
223
283
  },
224
284
  native: {},
225
285
  });
@@ -228,8 +288,14 @@ async function createControlStates(adapter) {
228
288
  await adapter.setObjectNotExistsAsync('control.energy.reset', {
229
289
  type: 'state',
230
290
  common: {
231
- name: 'Reset energy counters',
232
- desc: 'Resets all consumption and cost values to 0 (total reset)',
291
+ name: {
292
+ en: 'Reset energy counters',
293
+ de: 'Energiezaehler zuruecksetzen',
294
+ },
295
+ desc: {
296
+ en: 'Resets all consumption and cost values to 0 (total reset)',
297
+ de: 'Setzt alle Verbrauchs- und Kostenwerte auf 0 zurueck (Gesamt-Reset)',
298
+ },
233
299
  type: 'boolean',
234
300
  role: 'button',
235
301
  read: true,
@@ -245,8 +311,10 @@ async function createControlStates(adapter) {
245
311
  await adapter.setObjectNotExistsAsync('control.circulation', {
246
312
  type: 'channel',
247
313
  common: {
248
- name: 'Daily circulation control',
249
- desc: 'Automatic or manual check of the daily circulation amount',
314
+ name: {
315
+ en: 'Daily circulation control',
316
+ de: 'Taegliche Umwaelzungssteuerung',
317
+ },
250
318
  },
251
319
  native: {},
252
320
  });
@@ -255,8 +323,14 @@ async function createControlStates(adapter) {
255
323
  await adapter.setObjectNotExistsAsync('control.circulation.mode', {
256
324
  type: 'state',
257
325
  common: {
258
- name: 'Circulation check mode',
259
- desc: 'Defines if and how daily circulation is checked and if additional pumping is required',
326
+ name: {
327
+ en: 'Circulation check mode',
328
+ de: 'Modus der Umwaelzungspruefung',
329
+ },
330
+ desc: {
331
+ en: 'Defines if and how daily circulation is checked and if additional pumping is required',
332
+ de: 'Legt fest, ob und wie die taegliche Umwaelzung geprueft wird und ob zusaetzliches Pumpen erforderlich ist',
333
+ },
260
334
  type: 'string',
261
335
  role: 'level',
262
336
  read: true,
@@ -294,8 +368,14 @@ async function createControlStates(adapter) {
294
368
  await adapter.setObjectNotExistsAsync('control.circulation.check_time', {
295
369
  type: 'state',
296
370
  common: {
297
- name: 'Daily circulation check time',
298
- desc: 'Time when daily circulation is checked and reported if necessary (format HH:MM)',
371
+ name: {
372
+ en: 'Daily circulation check time',
373
+ de: 'Pruefzeit fuer taegliche Umwaelzung',
374
+ },
375
+ desc: {
376
+ en: 'Time when daily circulation is checked and reported if necessary (format HH:MM)',
377
+ de: 'Zeitpunkt, zu dem die taegliche Umwaelzung geprueft und bei Bedarf gemeldet wird (Format HH:MM)',
378
+ },
299
379
  type: 'string',
300
380
  role: 'level',
301
381
  read: true,
@@ -314,8 +394,14 @@ async function createControlStates(adapter) {
314
394
  await adapter.setObjectNotExistsAsync('control.circulation.last_report', {
315
395
  type: 'state',
316
396
  common: {
317
- name: 'Last daily circulation report',
318
- desc: 'Timestamp of the last automatically generated circulation report',
397
+ name: {
398
+ en: 'Last daily circulation report',
399
+ de: 'Letzter taeglicher Umwaelzungsbericht',
400
+ },
401
+ desc: {
402
+ en: 'Timestamp of the last automatically generated circulation report',
403
+ de: 'Zeitstempel des zuletzt automatisch erzeugten Umwaelzungsberichts',
404
+ },
319
405
  type: 'string',
320
406
  role: 'date',
321
407
  read: true,
@@ -14,8 +14,10 @@ async function createDebugLogStates(adapter) {
14
14
  await adapter.setObjectNotExistsAsync('SystemCheck', {
15
15
  type: 'channel',
16
16
  common: {
17
- name: 'SystemCheck (diagnostics and tools)',
18
- desc: 'Contains internal diagnostic and logging functions of the adapter.',
17
+ name: {
18
+ en: 'SystemCheck (diagnostics and tools)',
19
+ de: 'SystemCheck (Diagnose und Werkzeuge)',
20
+ },
19
21
  },
20
22
  native: {},
21
23
  });
@@ -24,8 +26,10 @@ async function createDebugLogStates(adapter) {
24
26
  await adapter.setObjectNotExistsAsync('SystemCheck.debug_logs', {
25
27
  type: 'channel',
26
28
  common: {
27
- name: 'Debug logs (test & diagnostics)',
28
- desc: 'Logs noticeable or frequent state changes within the instance.',
29
+ name: {
30
+ en: 'Debug logs (test & diagnostics)',
31
+ de: 'Debug-Logs (Test und Diagnose)',
32
+ },
29
33
  },
30
34
  native: {},
31
35
  });
@@ -70,8 +74,14 @@ async function createDebugLogStates(adapter) {
70
74
  await adapter.setObjectNotExistsAsync('SystemCheck.debug_logs.target_area', {
71
75
  type: 'state',
72
76
  common: {
73
- name: 'Monitored area',
74
- desc: 'Select which area of the instance should be monitored (e.g. pump, solar, control.backwash).',
77
+ name: {
78
+ en: 'Monitored area',
79
+ de: 'Ueberwachter Bereich',
80
+ },
81
+ desc: {
82
+ en: 'Select which area of the instance should be monitored (e.g. pump, solar, control.backwash).',
83
+ de: 'Waehlt aus, welcher Bereich der Instanz ueberwacht werden soll (z. B. pump, solar, control.backwash).',
84
+ },
75
85
  type: 'string',
76
86
  role: 'text',
77
87
  read: true,
@@ -87,8 +97,14 @@ async function createDebugLogStates(adapter) {
87
97
  await adapter.setObjectNotExistsAsync('SystemCheck.debug_logs.log', {
88
98
  type: 'state',
89
99
  common: {
90
- name: 'Debug log text',
91
- desc: 'Continuous log of the selected area.',
100
+ name: {
101
+ en: 'Debug log text',
102
+ de: 'Debug-Log-Text',
103
+ },
104
+ desc: {
105
+ en: 'Continuous log of the selected area.',
106
+ de: 'Fortlaufendes Log des ausgewaehlten Bereichs.',
107
+ },
92
108
  type: 'string',
93
109
  role: 'text',
94
110
  read: true,
@@ -102,8 +118,14 @@ async function createDebugLogStates(adapter) {
102
118
  await adapter.setObjectNotExistsAsync('SystemCheck.debug_logs.clear', {
103
119
  type: 'state',
104
120
  common: {
105
- name: 'Clear log',
106
- desc: 'Clears the continuous log in channel SystemCheck.debug_logs.',
121
+ name: {
122
+ en: 'Clear log',
123
+ de: 'Log loeschen',
124
+ },
125
+ desc: {
126
+ en: 'Clears the continuous log in channel SystemCheck.debug_logs.',
127
+ de: 'Loescht das fortlaufende Log im Kanal SystemCheck.debug_logs.',
128
+ },
107
129
  type: 'boolean',
108
130
  role: 'button',
109
131
  read: true,
@@ -13,7 +13,10 @@ async function createGeneralStates(adapter) {
13
13
  await adapter.setObjectNotExistsAsync('general', {
14
14
  type: 'channel',
15
15
  common: {
16
- name: 'General settings',
16
+ name: {
17
+ en: 'General settings',
18
+ de: 'Allgemeine Einstellungen',
19
+ },
17
20
  },
18
21
  native: {},
19
22
  });
@@ -22,7 +25,14 @@ async function createGeneralStates(adapter) {
22
25
  await adapter.setObjectNotExistsAsync('general.pool_name', {
23
26
  type: 'state',
24
27
  common: {
25
- name: 'Name of your pool',
28
+ name: {
29
+ en: 'Name of your pool',
30
+ de: 'Name Ihres Pools',
31
+ },
32
+ desc: {
33
+ en: 'Configured name of the pool',
34
+ de: 'Konfigurierter Name des Pools',
35
+ },
26
36
  type: 'string',
27
37
  role: 'text',
28
38
  read: true,
@@ -39,7 +49,14 @@ async function createGeneralStates(adapter) {
39
49
  await adapter.setObjectNotExistsAsync('general.min_circulation_per_day', {
40
50
  type: 'state',
41
51
  common: {
42
- name: 'Min. circulation per day',
52
+ name: {
53
+ en: 'Min. circulation per day',
54
+ de: 'Min. Umwaelzung pro Tag',
55
+ },
56
+ desc: {
57
+ en: 'Configured minimum circulation count per day',
58
+ de: 'Konfigurierte minimale Umwaelzung pro Tag',
59
+ },
43
60
  type: 'number',
44
61
  role: 'value',
45
62
  unit: 'x',
@@ -57,7 +74,14 @@ async function createGeneralStates(adapter) {
57
74
  await adapter.setObjectNotExistsAsync('general.pool_size', {
58
75
  type: 'state',
59
76
  common: {
60
- name: 'Size of your pool in liters',
77
+ name: {
78
+ en: 'Size of your pool in liters',
79
+ de: 'Groesse Ihres Pools in Litern',
80
+ },
81
+ desc: {
82
+ en: 'Configured pool size in liters',
83
+ de: 'Konfigurierte Poolgroesse in Litern',
84
+ },
61
85
  type: 'number',
62
86
  role: 'value',
63
87
  unit: 'l',
@@ -14,7 +14,10 @@ async function createHeatStates(adapter) {
14
14
  await adapter.setObjectNotExistsAsync(channelId, {
15
15
  type: 'channel',
16
16
  common: {
17
- name: 'Heating / heat pump',
17
+ name: {
18
+ en: 'Heating / heat pump',
19
+ de: 'Heizung / Waermepumpe',
20
+ },
18
21
  },
19
22
  native: {},
20
23
  });
@@ -26,7 +29,14 @@ async function createHeatStates(adapter) {
26
29
  await adapter.setObjectNotExistsAsync(`${channelId}.control_active`, {
27
30
  type: 'state',
28
31
  common: {
29
- name: 'Heating control active',
32
+ name: {
33
+ en: 'Heating control active',
34
+ de: 'Heizungssteuerung aktiv',
35
+ },
36
+ desc: {
37
+ en: 'Enables or disables the automatic heating control',
38
+ de: 'Aktiviert oder deaktiviert die automatische Heizungssteuerung',
39
+ },
30
40
  type: 'boolean',
31
41
  role: 'switch',
32
42
  read: true,
@@ -50,7 +60,14 @@ async function createHeatStates(adapter) {
50
60
  await adapter.setObjectNotExistsAsync(`${channelId}.control_type`, {
51
61
  type: 'state',
52
62
  common: {
53
- name: 'Type of heating control',
63
+ name: {
64
+ en: 'Type of heating control',
65
+ de: 'Typ der Heizungssteuerung',
66
+ },
67
+ desc: {
68
+ en: 'Defines which type of heating control is used',
69
+ de: 'Legt fest, welcher Typ der Heizungssteuerung verwendet wird',
70
+ },
54
71
  type: 'string',
55
72
  role: 'text',
56
73
  read: true,
@@ -70,7 +87,14 @@ async function createHeatStates(adapter) {
70
87
  await adapter.setObjectNotExistsAsync(`${channelId}.control_object_id`, {
71
88
  type: 'state',
72
89
  common: {
73
- name: 'Control object ID (heating)',
90
+ name: {
91
+ en: 'Control object ID (heating)',
92
+ de: 'Steuerobjekt-ID (Heizung)',
93
+ },
94
+ desc: {
95
+ en: 'Object ID used to control the heating',
96
+ de: 'Objekt-ID, die zur Steuerung der Heizung verwendet wird',
97
+ },
74
98
  type: 'string',
75
99
  role: 'text',
76
100
  read: true,
@@ -90,7 +114,14 @@ async function createHeatStates(adapter) {
90
114
  await adapter.setObjectNotExistsAsync(`${channelId}.target_temperature`, {
91
115
  type: 'state',
92
116
  common: {
93
- name: 'Pool target temperature',
117
+ name: {
118
+ en: 'Pool target temperature',
119
+ de: 'Pool-Solltemperatur',
120
+ },
121
+ desc: {
122
+ en: 'Desired target temperature for the pool water',
123
+ de: 'Gewuenschte Solltemperatur fuer das Poolwasser',
124
+ },
94
125
  type: 'number',
95
126
  role: 'level',
96
127
  unit: '°C',
@@ -111,7 +142,14 @@ async function createHeatStates(adapter) {
111
142
  await adapter.setObjectNotExistsAsync(`${channelId}.max_temperature`, {
112
143
  type: 'state',
113
144
  common: {
114
- name: 'Maximum pool temperature (safety)',
145
+ name: {
146
+ en: 'Maximum pool temperature (safety)',
147
+ de: 'Maximale Pooltemperatur (Sicherheit)',
148
+ },
149
+ desc: {
150
+ en: 'Maximum allowed pool temperature for safety shutdown',
151
+ de: 'Maximal zulaessige Pooltemperatur fuer die Sicherheitsabschaltung',
152
+ },
115
153
  type: 'number',
116
154
  role: 'level',
117
155
  unit: '°C',
@@ -133,7 +171,14 @@ async function createHeatStates(adapter) {
133
171
  await adapter.setObjectNotExistsAsync(`${channelId}.pump_prerun_minutes`, {
134
172
  type: 'state',
135
173
  common: {
136
- name: 'Pump pre-run time before heating',
174
+ name: {
175
+ en: 'Pump pre-run time before heating',
176
+ de: 'Pumpen-Vorlaufzeit vor Heizung',
177
+ },
178
+ desc: {
179
+ en: 'Configured pump pre-run time in minutes before heating starts',
180
+ de: 'Konfigurierte Pumpen-Vorlaufzeit in Minuten vor dem Heizstart',
181
+ },
137
182
  type: 'number',
138
183
  role: 'level',
139
184
  unit: 'min',
@@ -154,7 +199,14 @@ async function createHeatStates(adapter) {
154
199
  await adapter.setObjectNotExistsAsync(`${channelId}.pump_afterrun_minutes`, {
155
200
  type: 'state',
156
201
  common: {
157
- name: 'Pump after-run time after heating',
202
+ name: {
203
+ en: 'Pump after-run time after heating',
204
+ de: 'Pumpen-Nachlaufzeit nach Heizung',
205
+ },
206
+ desc: {
207
+ en: 'Configured pump after-run time in minutes after heating stops',
208
+ de: 'Konfigurierte Pumpen-Nachlaufzeit in Minuten nach dem Heizende',
209
+ },
158
210
  type: 'number',
159
211
  role: 'level',
160
212
  unit: 'min',
@@ -179,7 +231,14 @@ async function createHeatStates(adapter) {
179
231
  await adapter.setObjectNotExistsAsync(`${channelId}.active`, {
180
232
  type: 'state',
181
233
  common: {
182
- name: 'Heating active',
234
+ name: {
235
+ en: 'Heating active',
236
+ de: 'Heizung aktiv',
237
+ },
238
+ desc: {
239
+ en: 'Shows whether heating is currently active',
240
+ de: 'Zeigt an, ob die Heizung aktuell aktiv ist',
241
+ },
183
242
  type: 'boolean',
184
243
  role: 'indicator.working',
185
244
  read: true,
@@ -191,7 +250,14 @@ async function createHeatStates(adapter) {
191
250
  await adapter.setObjectNotExistsAsync(`${channelId}.mode`, {
192
251
  type: 'state',
193
252
  common: {
194
- name: 'Heating mode',
253
+ name: {
254
+ en: 'Heating mode',
255
+ de: 'Heizmodus',
256
+ },
257
+ desc: {
258
+ en: 'Current operating mode of the heating control',
259
+ de: 'Aktueller Betriebsmodus der Heizungssteuerung',
260
+ },
195
261
  type: 'string',
196
262
  role: 'text',
197
263
  read: true,
@@ -203,7 +269,14 @@ async function createHeatStates(adapter) {
203
269
  await adapter.setObjectNotExistsAsync(`${channelId}.blocked`, {
204
270
  type: 'state',
205
271
  common: {
206
- name: 'Heating blocked',
272
+ name: {
273
+ en: 'Heating blocked',
274
+ de: 'Heizung blockiert',
275
+ },
276
+ desc: {
277
+ en: 'Shows whether heating is currently blocked',
278
+ de: 'Zeigt an, ob die Heizung aktuell blockiert ist',
279
+ },
207
280
  type: 'boolean',
208
281
  role: 'indicator.blocked',
209
282
  read: true,
@@ -216,7 +289,14 @@ async function createHeatStates(adapter) {
216
289
  await adapter.setObjectNotExistsAsync(`${channelId}.prerun_active`, {
217
290
  type: 'state',
218
291
  common: {
219
- name: 'Pump pre-run active',
292
+ name: {
293
+ en: 'Pump pre-run active',
294
+ de: 'Pumpen-Vorlauf aktiv',
295
+ },
296
+ desc: {
297
+ en: 'Indicates whether the pump is currently running before the heating process starts',
298
+ de: 'Zeigt an, ob die Pumpe aktuell vor dem Heizvorgang läuft',
299
+ },
220
300
  type: 'boolean',
221
301
  role: 'indicator.working',
222
302
  read: true,
@@ -228,7 +308,14 @@ async function createHeatStates(adapter) {
228
308
  await adapter.setObjectNotExistsAsync(`${channelId}.afterrun_active`, {
229
309
  type: 'state',
230
310
  common: {
231
- name: 'Pump after-run active',
311
+ name: {
312
+ en: 'Pump after-run active',
313
+ de: 'Pumpen-Nachlauf aktiv',
314
+ },
315
+ desc: {
316
+ en: 'Indicates whether the pump is currently running after the heating process has finished',
317
+ de: 'Zeigt an, ob die Pumpe aktuell nach dem Heizvorgang läuft',
318
+ },
232
319
  type: 'boolean',
233
320
  role: 'indicator.working',
234
321
  read: true,
@@ -240,7 +327,14 @@ async function createHeatStates(adapter) {
240
327
  await adapter.setObjectNotExistsAsync(`${channelId}.last_change`, {
241
328
  type: 'state',
242
329
  common: {
243
- name: 'Last heating status change',
330
+ name: {
331
+ en: 'Last heating status change',
332
+ de: 'Letzte Aenderung des Heizstatus',
333
+ },
334
+ desc: {
335
+ en: 'Timestamp of the last heating status change',
336
+ de: 'Zeitstempel der letzten Aenderung des Heizstatus',
337
+ },
244
338
  type: 'number',
245
339
  role: 'value.time',
246
340
  read: true,
@@ -252,7 +346,14 @@ async function createHeatStates(adapter) {
252
346
  await adapter.setObjectNotExistsAsync(`${channelId}.heating_request`, {
253
347
  type: 'state',
254
348
  common: {
255
- name: 'Heating request (PoolControl)',
349
+ name: {
350
+ en: 'Heating request (PoolControl)',
351
+ de: 'Heizanforderung (PoolControl)',
352
+ },
353
+ desc: {
354
+ en: 'Indicates whether PoolControl currently requests heating',
355
+ de: 'Zeigt an, ob PoolControl aktuell Wärme anfordert',
356
+ },
256
357
  type: 'boolean',
257
358
  role: 'indicator.request',
258
359
  read: true,
@@ -269,7 +370,14 @@ async function createHeatStates(adapter) {
269
370
  await adapter.setObjectNotExistsAsync(`${channelId}.reason`, {
270
371
  type: 'state',
271
372
  common: {
272
- name: 'Reason for heating status',
373
+ name: {
374
+ en: 'Reason for heating status',
375
+ de: 'Grund fuer Heizstatus',
376
+ },
377
+ desc: {
378
+ en: 'Reason text for the current heating status',
379
+ de: 'Begruendungstext fuer den aktuellen Heizstatus',
380
+ },
273
381
  type: 'string',
274
382
  role: 'text',
275
383
  read: true,
@@ -281,7 +389,14 @@ async function createHeatStates(adapter) {
281
389
  await adapter.setObjectNotExistsAsync(`${channelId}.info`, {
282
390
  type: 'state',
283
391
  common: {
284
- name: 'Heating info',
392
+ name: {
393
+ en: 'Heating info',
394
+ de: 'Heizungsinfo',
395
+ },
396
+ desc: {
397
+ en: 'Additional information text about the heating status',
398
+ de: 'Zusaetzlicher Informationstext zum Heizstatus',
399
+ },
285
400
  type: 'string',
286
401
  role: 'text',
287
402
  read: true,