iobroker.poolcontrol 1.2.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 +285 -292
  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 +180 -602
  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
@@ -20,8 +20,11 @@ async function createControlStates(adapter) {
20
20
  await adapter.setObjectNotExistsAsync('control', {
21
21
  type: 'channel',
22
22
  common: {
23
- name: 'Steuerung',
24
- desc: 'Manuelle Steuerung und Laufzeitfunktionen (VIS / Blockly)',
23
+ name: { de: 'Steuerung', en: 'Control' },
24
+ desc: {
25
+ de: 'Manuelle Steuerung und Laufzeitfunktionen (VIS / Blockly)',
26
+ en: 'Manual control and runtime functions (VIS / Blockly)',
27
+ },
25
28
  },
26
29
  native: {},
27
30
  });
@@ -31,8 +34,11 @@ async function createControlStates(adapter) {
31
34
  await adapter.setObjectNotExistsAsync('control.pump', {
32
35
  type: 'channel',
33
36
  common: {
34
- name: 'Pumpensteuerung',
35
- desc: 'Manuelle Aktionen wie Rückspülen oder Wartung',
37
+ name: { de: 'Pumpensteuerung', en: 'Pump control' },
38
+ desc: {
39
+ de: 'Manuelle Aktionen wie Rückspülen oder Wartung',
40
+ en: 'Manual actions such as backwash or maintenance',
41
+ },
36
42
  },
37
43
  native: {},
38
44
  });
@@ -41,8 +47,11 @@ async function createControlStates(adapter) {
41
47
  await adapter.setObjectNotExistsAsync('control.pump.backwash_start', {
42
48
  type: 'state',
43
49
  common: {
44
- name: 'Rückspülung starten',
45
- desc: 'Startet die Rückspülung für die eingestellte Dauer',
50
+ name: { de: 'Rückspülung starten', en: 'Start backwash' },
51
+ desc: {
52
+ de: 'Startet die Rückspülung für die eingestellte Dauer',
53
+ en: 'Starts backwash for the configured duration',
54
+ },
46
55
  type: 'boolean',
47
56
  role: 'button',
48
57
  read: true,
@@ -57,8 +66,11 @@ async function createControlStates(adapter) {
57
66
  await adapter.setObjectNotExistsAsync('control.pump.backwash_active', {
58
67
  type: 'state',
59
68
  common: {
60
- name: 'Rückspülung aktiv',
61
- desc: 'Zeigt an, ob gerade eine Rückspülung läuft',
69
+ name: { de: 'Rückspülung aktiv', en: 'Backwash active' },
70
+ desc: {
71
+ de: 'Zeigt an, ob gerade eine Rückspülung läuft',
72
+ en: 'Shows whether backwash is currently running',
73
+ },
62
74
  type: 'boolean',
63
75
  role: 'indicator',
64
76
  read: true,
@@ -73,8 +85,11 @@ async function createControlStates(adapter) {
73
85
  await adapter.setObjectNotExistsAsync('control.pump.backwash_duration', {
74
86
  type: 'state',
75
87
  common: {
76
- name: 'Dauer der Rückspülung (Minuten)',
77
- desc: 'Bestimmt, wie lange die Rückspülung laufen soll',
88
+ name: { de: 'Dauer der Rückspülung (Minuten)', en: 'Backwash duration (minutes)' },
89
+ desc: {
90
+ de: 'Bestimmt, wie lange die Rückspülung laufen soll',
91
+ en: 'Defines how long the backwash should run',
92
+ },
78
93
  type: 'number',
79
94
  role: 'level.timer',
80
95
  read: true,
@@ -99,8 +114,11 @@ async function createControlStates(adapter) {
99
114
  await adapter.setObjectNotExistsAsync('control.pump.backwash_reminder_active', {
100
115
  type: 'state',
101
116
  common: {
102
- name: 'Rückspülerinnerung aktiv',
103
- desc: 'Wenn aktiviert, erinnert der Adapter automatisch nach Ablauf des eingestellten Intervalls an die Rückspülung',
117
+ name: { de: 'Rückspülerinnerung aktiv', en: 'Backwash reminder active' },
118
+ desc: {
119
+ de: 'Wenn aktiviert, erinnert der Adapter automatisch nach Ablauf des eingestellten Intervalls an die Rückspülung',
120
+ en: 'If enabled, the adapter automatically reminds you to backwash after the configured interval has elapsed',
121
+ },
104
122
  type: 'boolean',
105
123
  role: 'switch',
106
124
  read: true,
@@ -119,11 +137,14 @@ async function createControlStates(adapter) {
119
137
  await adapter.setObjectNotExistsAsync('control.pump.backwash_interval_days', {
120
138
  type: 'state',
121
139
  common: {
122
- name: 'Rückspülerinnerung: Intervall (Tage)',
123
- desc: 'Anzahl Tage, nach denen eine Erinnerung für die Rückspülung erfolgt',
140
+ name: { de: 'Rückspülerinnerung: Intervall (Tage)', en: 'Backwash reminder: interval (days)' },
141
+ desc: {
142
+ de: 'Anzahl Tage, nach denen eine Erinnerung für die Rückspülung erfolgt',
143
+ en: 'Number of days after which a backwash reminder is triggered',
144
+ },
124
145
  type: 'number',
125
146
  role: 'value.interval',
126
- unit: 'Tage',
147
+ unit: { de: 'Tage', en: 'days' },
127
148
  read: true,
128
149
  write: true,
129
150
  def: 7,
@@ -145,8 +166,11 @@ async function createControlStates(adapter) {
145
166
  await adapter.setObjectNotExistsAsync('control.pump.backwash_last_date', {
146
167
  type: 'state',
147
168
  common: {
148
- name: 'Letzte Rückspülung (Datum)',
149
- desc: 'Zeitstempel der letzten ausgeführten Rückspülung, dient der Erinnerungsberechnung',
169
+ name: { de: 'Letzte Rückspülung (Datum)', en: 'Last backwash (date)' },
170
+ desc: {
171
+ de: 'Zeitstempel der letzten ausgeführten Rückspülung, dient der Erinnerungsberechnung',
172
+ en: 'Timestamp of the last performed backwash, used for reminder calculation',
173
+ },
150
174
  type: 'string',
151
175
  role: 'date',
152
176
  read: true,
@@ -165,8 +189,11 @@ async function createControlStates(adapter) {
165
189
  await adapter.setObjectNotExistsAsync('control.pump.backwash_required', {
166
190
  type: 'state',
167
191
  common: {
168
- name: 'Rückspülung erforderlich',
169
- desc: 'Wird automatisch auf true gesetzt, wenn die eingestellte Rückspülzeit überschritten wurde',
192
+ name: { de: 'Rückspülung erforderlich', en: 'Backwash required' },
193
+ desc: {
194
+ de: 'Wird automatisch auf true gesetzt, wenn die eingestellte Rückspülzeit überschritten wurde',
195
+ en: 'Automatically set to true when the configured backwash interval has been exceeded',
196
+ },
170
197
  type: 'boolean',
171
198
  role: 'indicator.alarm',
172
199
  read: true,
@@ -181,8 +208,11 @@ async function createControlStates(adapter) {
181
208
  await adapter.setObjectNotExistsAsync('control.pump.maintenance_active', {
182
209
  type: 'state',
183
210
  common: {
184
- name: 'Wartungsmodus aktiv',
185
- desc: 'Deaktiviert Automatikfunktionen und lässt Pumpe manuell steuern',
211
+ name: { de: 'Wartungsmodus aktiv', en: 'Maintenance mode active' },
212
+ desc: {
213
+ de: 'Deaktiviert Automatikfunktionen und lässt Pumpe manuell steuern',
214
+ en: 'Disables automatic functions and allows manual pump control',
215
+ },
186
216
  type: 'boolean',
187
217
  role: 'switch',
188
218
  read: true,
@@ -197,8 +227,11 @@ async function createControlStates(adapter) {
197
227
  await adapter.setObjectNotExistsAsync('control.pump.notifications_enabled', {
198
228
  type: 'state',
199
229
  common: {
200
- name: 'Benachrichtigungen aktivieren',
201
- desc: 'Wenn aktiviert, werden bei Rückspülung und Wartung Ansagen oder Nachrichten gesendet (E-Mail, Telegram, Alexa)',
230
+ name: { de: 'Benachrichtigungen aktivieren', en: 'Enable notifications' },
231
+ desc: {
232
+ de: 'Wenn aktiviert, werden bei Rückspülung und Wartung Ansagen oder Nachrichten gesendet (E-Mail, Telegram, Alexa)',
233
+ en: 'If enabled, announcements or messages are sent for backwash and maintenance (email, Telegram, Alexa)',
234
+ },
202
235
  type: 'boolean',
203
236
  role: 'switch',
204
237
  read: true,
@@ -218,8 +251,11 @@ async function createControlStates(adapter) {
218
251
  await adapter.setObjectNotExistsAsync('control.energy', {
219
252
  type: 'channel',
220
253
  common: {
221
- name: 'Energieverwaltung',
222
- desc: 'Funktionen zur Verbrauchs- und Kostenrücksetzung',
254
+ name: { de: 'Energieverwaltung', en: 'Energy management' },
255
+ desc: {
256
+ de: 'Funktionen zur Verbrauchs- und Kostenrücksetzung',
257
+ en: 'Functions to reset consumption and cost values',
258
+ },
223
259
  },
224
260
  native: {},
225
261
  });
@@ -228,8 +264,11 @@ async function createControlStates(adapter) {
228
264
  await adapter.setObjectNotExistsAsync('control.energy.reset', {
229
265
  type: 'state',
230
266
  common: {
231
- name: 'Energiezähler zurücksetzen',
232
- desc: 'Setzt alle Verbrauchs- und Kostenwerte auf 0 (Totalreset)',
267
+ name: { de: 'Energiezähler zurücksetzen', en: 'Reset energy counters' },
268
+ desc: {
269
+ de: 'Setzt alle Verbrauchs- und Kostenwerte auf 0 (Totalreset)',
270
+ en: 'Resets all consumption and cost values to 0 (total reset)',
271
+ },
233
272
  type: 'boolean',
234
273
  role: 'button',
235
274
  read: true,
@@ -245,8 +284,11 @@ async function createControlStates(adapter) {
245
284
  await adapter.setObjectNotExistsAsync('control.circulation', {
246
285
  type: 'channel',
247
286
  common: {
248
- name: 'Tagesumwälzungs-Steuerung',
249
- desc: 'Automatische oder manuelle Prüfung der täglichen Umwälzmenge',
287
+ name: { de: 'Tagesumwälzungs-Steuerung', en: 'Daily circulation control' },
288
+ desc: {
289
+ de: 'Automatische oder manuelle Prüfung der täglichen Umwälzmenge',
290
+ en: 'Automatic or manual check of the daily circulation amount',
291
+ },
250
292
  },
251
293
  native: {},
252
294
  });
@@ -255,8 +297,11 @@ async function createControlStates(adapter) {
255
297
  await adapter.setObjectNotExistsAsync('control.circulation.mode', {
256
298
  type: 'state',
257
299
  common: {
258
- name: 'Modus der Umwälzungsprüfung',
259
- desc: 'Legt fest, ob und wie die Tagesumwälzung geprüft und ggf. nachgepumpt wird',
300
+ name: { de: 'Modus der Umwälzungsprüfung', en: 'Circulation check mode' },
301
+ desc: {
302
+ de: 'Legt fest, ob und wie die Tagesumwälzung geprüft und ggf. nachgepumpt wird',
303
+ en: 'Defines if and how daily circulation is checked and if additional pumping is required',
304
+ },
260
305
  type: 'string',
261
306
  role: 'value',
262
307
  read: true,
@@ -275,7 +320,9 @@ async function createControlStates(adapter) {
275
320
  try {
276
321
  await adapter.extendObjectAsync('control.circulation.mode', { common: { persist: true } });
277
322
  } catch (err) {
278
- adapter.log.warn(`[controlStates] persist-Flag für control.circulation.mode nicht gesetzt: ${err.message}`);
323
+ adapter.log.warn(
324
+ `[controlStates] Persist flag for control.circulation.mode could not be set: ${err.message}`,
325
+ );
279
326
  }
280
327
 
281
328
  // FIX: Default nur setzen, wenn noch kein Wert existiert (Überinstall-Schutz)
@@ -292,8 +339,11 @@ async function createControlStates(adapter) {
292
339
  await adapter.setObjectNotExistsAsync('control.circulation.check_time', {
293
340
  type: 'state',
294
341
  common: {
295
- name: 'Prüfzeitpunkt für Tagesumwälzung',
296
- desc: 'Uhrzeit, zu der täglich die Tagesumwälzung geprüft und ggf. gemeldet wird (Format HH:MM)',
342
+ name: { de: 'Prüfzeitpunkt für Tagesumwälzung', en: 'Daily circulation check time' },
343
+ desc: {
344
+ de: 'Uhrzeit, zu der täglich die Tagesumwälzung geprüft und ggf. gemeldet wird (Format HH:MM)',
345
+ en: 'Time when daily circulation is checked and reported if necessary (format HH:MM)',
346
+ },
297
347
  type: 'string',
298
348
  role: 'value.time',
299
349
  read: true,
@@ -312,8 +362,11 @@ async function createControlStates(adapter) {
312
362
  await adapter.setObjectNotExistsAsync('control.circulation.last_report', {
313
363
  type: 'state',
314
364
  common: {
315
- name: 'Letzter Bericht zur Tagesumwälzung',
316
- desc: 'Zeitstempel des letzten automatisch erzeugten Umwälzungs-Reports',
365
+ name: { de: 'Letzter Bericht zur Tagesumwälzung', en: 'Last daily circulation report' },
366
+ desc: {
367
+ de: 'Zeitstempel des letzten automatisch erzeugten Umwälzungs-Reports',
368
+ en: 'Timestamp of the last automatically generated circulation report',
369
+ },
317
370
  type: 'string',
318
371
  role: 'date',
319
372
  read: true,
@@ -323,7 +376,7 @@ async function createControlStates(adapter) {
323
376
  });
324
377
  await adapter.setStateAsync('control.circulation.last_report', { val: '', ack: true });
325
378
  } catch (err) {
326
- adapter.log.error(`[controlStates] Fehler beim Erstellen der Control-States: ${err.message}`);
379
+ adapter.log.error(`[controlStates] Error while creating control states: ${err.message}`);
327
380
  }
328
381
  }
329
382
 
@@ -14,8 +14,11 @@ async function createDebugLogStates(adapter) {
14
14
  await adapter.setObjectNotExistsAsync('SystemCheck', {
15
15
  type: 'channel',
16
16
  common: {
17
- name: 'SystemCheck (Diagnose und Tools)',
18
- desc: 'Enthält interne Diagnose- und Protokollierungsfunktionen des Adapters.',
17
+ name: { de: 'SystemCheck (Diagnose und Tools)', en: 'SystemCheck (diagnostics and tools)' },
18
+ desc: {
19
+ de: 'Enthält interne Diagnose- und Protokollierungsfunktionen des Adapters.',
20
+ en: 'Contains internal diagnostic and logging functions of the adapter.',
21
+ },
19
22
  },
20
23
  native: {},
21
24
  });
@@ -24,8 +27,11 @@ async function createDebugLogStates(adapter) {
24
27
  await adapter.setObjectNotExistsAsync('SystemCheck.debug_logs', {
25
28
  type: 'channel',
26
29
  common: {
27
- name: 'Debug-Logs (Test & Diagnose)',
28
- desc: 'Protokolliert auffällige oder häufige Zustandsänderungen innerhalb der Instanz.',
30
+ name: { de: 'Debug-Logs (Test & Diagnose)', en: 'Debug logs (test & diagnostics)' },
31
+ desc: {
32
+ de: 'Protokolliert auffällige oder häufige Zustandsänderungen innerhalb der Instanz.',
33
+ en: 'Logs noticeable or frequent state changes within the instance.',
34
+ },
29
35
  },
30
36
  native: {},
31
37
  });
@@ -70,8 +76,11 @@ async function createDebugLogStates(adapter) {
70
76
  await adapter.setObjectNotExistsAsync('SystemCheck.debug_logs.target_area', {
71
77
  type: 'state',
72
78
  common: {
73
- name: 'Überwachungsbereich',
74
- desc: 'Wähle, welcher Bereich der Instanz überwacht werden soll (z. B. pump, solar, control.backwash).',
79
+ name: { de: 'Überwachungsbereich', en: 'Monitored area' },
80
+ desc: {
81
+ de: 'Wähle, welcher Bereich der Instanz überwacht werden soll (z. B. pump, solar, control.backwash).',
82
+ en: 'Select which area of the instance should be monitored (e.g. pump, solar, control.backwash).',
83
+ },
75
84
  type: 'string',
76
85
  role: 'text',
77
86
  read: true,
@@ -87,8 +96,11 @@ async function createDebugLogStates(adapter) {
87
96
  await adapter.setObjectNotExistsAsync('SystemCheck.debug_logs.log', {
88
97
  type: 'state',
89
98
  common: {
90
- name: 'Debug-Logtext',
91
- desc: 'Fortlaufendes Protokoll des ausgewählten Bereichs.',
99
+ name: { de: 'Debug-Logtext', en: 'Debug log text' },
100
+ desc: {
101
+ de: 'Fortlaufendes Protokoll des ausgewählten Bereichs.',
102
+ en: 'Continuous log of the selected area.',
103
+ },
92
104
  type: 'string',
93
105
  role: 'text',
94
106
  read: true,
@@ -102,8 +114,11 @@ async function createDebugLogStates(adapter) {
102
114
  await adapter.setObjectNotExistsAsync('SystemCheck.debug_logs.clear', {
103
115
  type: 'state',
104
116
  common: {
105
- name: 'Log löschen',
106
- desc: 'Löscht das fortlaufende Log im Kanal SystemCheck.debug_logs.',
117
+ name: { de: 'Log löschen', en: 'Clear log' },
118
+ desc: {
119
+ de: 'Löscht das fortlaufende Log im Kanal SystemCheck.debug_logs.',
120
+ en: 'Clears the continuous log in channel SystemCheck.debug_logs.',
121
+ },
107
122
  type: 'boolean',
108
123
  role: 'button',
109
124
  read: true,
@@ -114,10 +129,10 @@ async function createDebugLogStates(adapter) {
114
129
  });
115
130
  await adapter.setStateAsync('SystemCheck.debug_logs.clear', { val: false, ack: true });
116
131
 
117
- adapter.log.debug(`[debugLogStates] Debug-Log-States erfolgreich angelegt`);
118
- adapter.log.debug(`[debugLogStates] Verfügbare Bereiche: ${availableAreas.join(', ')}`);
132
+ adapter.log.debug('[debugLogStates] Debug log states created successfully');
133
+ adapter.log.debug(`[debugLogStates] Available areas: ${availableAreas.join(', ')}`);
119
134
  } catch (err) {
120
- adapter.log.error(`[debugLogStates] Fehler beim Erstellen der States: ${err.message}`);
135
+ adapter.log.error(`[debugLogStates] Error while creating states: ${err.message}`);
121
136
  }
122
137
  }
123
138
 
@@ -13,7 +13,7 @@ async function createGeneralStates(adapter) {
13
13
  await adapter.setObjectNotExistsAsync('general', {
14
14
  type: 'channel',
15
15
  common: {
16
- name: 'Allgemeine Einstellungen',
16
+ name: { de: 'Allgemeine Einstellungen', en: 'General settings' },
17
17
  },
18
18
  native: {},
19
19
  });
@@ -22,7 +22,7 @@ async function createGeneralStates(adapter) {
22
22
  await adapter.setObjectNotExistsAsync('general.pool_name', {
23
23
  type: 'state',
24
24
  common: {
25
- name: 'Name deines Pools',
25
+ name: { de: 'Name deines Pools', en: 'Name of your pool' },
26
26
  type: 'string',
27
27
  role: 'text',
28
28
  read: true,
@@ -39,7 +39,7 @@ async function createGeneralStates(adapter) {
39
39
  await adapter.setObjectNotExistsAsync('general.min_circulation_per_day', {
40
40
  type: 'state',
41
41
  common: {
42
- name: 'Min. Umwälzung pro Tag',
42
+ name: { de: 'Min. Umwälzung pro Tag', en: 'Min. circulation per day' },
43
43
  type: 'number',
44
44
  role: 'value',
45
45
  unit: 'x',
@@ -57,7 +57,7 @@ async function createGeneralStates(adapter) {
57
57
  await adapter.setObjectNotExistsAsync('general.pool_size', {
58
58
  type: 'state',
59
59
  common: {
60
- name: 'Grösse deines Pools in Liter',
60
+ name: { de: 'Grösse deines Pools in Liter', en: 'Size of your pool in liters' },
61
61
  type: 'number',
62
62
  role: 'value',
63
63
  unit: 'l',
@@ -14,7 +14,7 @@ async function createHeatStates(adapter) {
14
14
  await adapter.setObjectNotExistsAsync(channelId, {
15
15
  type: 'channel',
16
16
  common: {
17
- name: 'Heizung / Wärmepumpe',
17
+ name: { de: 'Heizung / Wärmepumpe', en: 'Heating / heat pump' },
18
18
  },
19
19
  native: {},
20
20
  });
@@ -26,7 +26,7 @@ async function createHeatStates(adapter) {
26
26
  await adapter.setObjectNotExistsAsync(`${channelId}.control_active`, {
27
27
  type: 'state',
28
28
  common: {
29
- name: 'Heizungssteuerung aktiv',
29
+ name: { de: 'Heizungssteuerung aktiv', en: 'Heating control active' },
30
30
  type: 'boolean',
31
31
  role: 'switch',
32
32
  read: true,
@@ -50,7 +50,7 @@ async function createHeatStates(adapter) {
50
50
  await adapter.setObjectNotExistsAsync(`${channelId}.control_type`, {
51
51
  type: 'state',
52
52
  common: {
53
- name: 'Art der Heizungssteuerung',
53
+ name: { de: 'Art der Heizungssteuerung', en: 'Type of heating control' },
54
54
  type: 'string',
55
55
  role: 'text',
56
56
  read: true,
@@ -70,7 +70,7 @@ async function createHeatStates(adapter) {
70
70
  await adapter.setObjectNotExistsAsync(`${channelId}.control_object_id`, {
71
71
  type: 'state',
72
72
  common: {
73
- name: 'Steuer-Objekt-ID Heizung',
73
+ name: { de: 'Steuer-Objekt-ID Heizung', en: 'Control object ID (heating)' },
74
74
  type: 'string',
75
75
  role: 'text',
76
76
  read: true,
@@ -90,10 +90,10 @@ async function createHeatStates(adapter) {
90
90
  await adapter.setObjectNotExistsAsync(`${channelId}.target_temperature`, {
91
91
  type: 'state',
92
92
  common: {
93
- name: 'Zieltemperatur Pool',
93
+ name: { de: 'Zieltemperatur Pool', en: 'Pool target temperature' },
94
94
  type: 'number',
95
95
  role: 'value.temperature',
96
- unit: '°C',
96
+ unit: { de: '°C', en: '°C' },
97
97
  read: true,
98
98
  write: true,
99
99
  persist: true,
@@ -111,10 +111,10 @@ async function createHeatStates(adapter) {
111
111
  await adapter.setObjectNotExistsAsync(`${channelId}.max_temperature`, {
112
112
  type: 'state',
113
113
  common: {
114
- name: 'Maximale Pooltemperatur (Sicherheit)',
114
+ name: { de: 'Maximale Pooltemperatur (Sicherheit)', en: 'Maximum pool temperature (safety)' },
115
115
  type: 'number',
116
116
  role: 'value.temperature',
117
- unit: '°C',
117
+ unit: { de: '°C', en: '°C' },
118
118
  read: true,
119
119
  write: true,
120
120
  persist: true,
@@ -133,10 +133,10 @@ async function createHeatStates(adapter) {
133
133
  await adapter.setObjectNotExistsAsync(`${channelId}.pump_prerun_minutes`, {
134
134
  type: 'state',
135
135
  common: {
136
- name: 'Pumpen-Vorlaufzeit vor Heizung',
136
+ name: { de: 'Pumpen-Vorlaufzeit vor Heizung', en: 'Pump pre-run time before heating' },
137
137
  type: 'number',
138
138
  role: 'value.interval',
139
- unit: 'min',
139
+ unit: { de: 'min', en: 'min' },
140
140
  read: true,
141
141
  write: true,
142
142
  persist: true,
@@ -154,10 +154,10 @@ async function createHeatStates(adapter) {
154
154
  await adapter.setObjectNotExistsAsync(`${channelId}.pump_afterrun_minutes`, {
155
155
  type: 'state',
156
156
  common: {
157
- name: 'Pumpen-Nachlaufzeit nach Heizung',
157
+ name: { de: 'Pumpen-Nachlaufzeit nach Heizung', en: 'Pump after-run time after heating' },
158
158
  type: 'number',
159
159
  role: 'value.interval',
160
- unit: 'min',
160
+ unit: { de: 'min', en: 'min' },
161
161
  read: true,
162
162
  write: true,
163
163
  persist: true,
@@ -179,7 +179,7 @@ async function createHeatStates(adapter) {
179
179
  await adapter.setObjectNotExistsAsync(`${channelId}.active`, {
180
180
  type: 'state',
181
181
  common: {
182
- name: 'Heizung aktiv',
182
+ name: { de: 'Heizung aktiv', en: 'Heating active' },
183
183
  type: 'boolean',
184
184
  role: 'indicator.working',
185
185
  read: true,
@@ -191,7 +191,7 @@ async function createHeatStates(adapter) {
191
191
  await adapter.setObjectNotExistsAsync(`${channelId}.mode`, {
192
192
  type: 'state',
193
193
  common: {
194
- name: 'Heizungsmodus',
194
+ name: { de: 'Heizungsmodus', en: 'Heating mode' },
195
195
  type: 'string',
196
196
  role: 'text',
197
197
  read: true,
@@ -203,7 +203,7 @@ async function createHeatStates(adapter) {
203
203
  await adapter.setObjectNotExistsAsync(`${channelId}.blocked`, {
204
204
  type: 'state',
205
205
  common: {
206
- name: 'Heizung blockiert',
206
+ name: { de: 'Heizung blockiert', en: 'Heating blocked' },
207
207
  type: 'boolean',
208
208
  role: 'indicator.blocked',
209
209
  read: true,
@@ -216,7 +216,7 @@ async function createHeatStates(adapter) {
216
216
  await adapter.setObjectNotExistsAsync(`${channelId}.prerun_active`, {
217
217
  type: 'state',
218
218
  common: {
219
- name: 'Pumpen-Vorlauf aktiv',
219
+ name: { de: 'Pumpen-Vorlauf aktiv', en: 'Pump pre-run active' },
220
220
  type: 'boolean',
221
221
  role: 'indicator.working',
222
222
  read: true,
@@ -228,7 +228,7 @@ async function createHeatStates(adapter) {
228
228
  await adapter.setObjectNotExistsAsync(`${channelId}.afterrun_active`, {
229
229
  type: 'state',
230
230
  common: {
231
- name: 'Pumpen-Nachlauf aktiv',
231
+ name: { de: 'Pumpen-Nachlauf aktiv', en: 'Pump after-run active' },
232
232
  type: 'boolean',
233
233
  role: 'indicator.working',
234
234
  read: true,
@@ -240,7 +240,7 @@ async function createHeatStates(adapter) {
240
240
  await adapter.setObjectNotExistsAsync(`${channelId}.last_change`, {
241
241
  type: 'state',
242
242
  common: {
243
- name: 'Letzte Statusänderung Heizung',
243
+ name: { de: 'Letzte Statusänderung Heizung', en: 'Last heating status change' },
244
244
  type: 'number',
245
245
  role: 'value.time',
246
246
  read: true,
@@ -252,7 +252,7 @@ async function createHeatStates(adapter) {
252
252
  await adapter.setObjectNotExistsAsync(`${channelId}.heating_request`, {
253
253
  type: 'state',
254
254
  common: {
255
- name: 'Heizanforderung (PoolControl)',
255
+ name: { de: 'Heizanforderung (PoolControl)', en: 'Heating request (PoolControl)' },
256
256
  type: 'boolean',
257
257
  role: 'indicator.request',
258
258
  read: true,
@@ -269,7 +269,7 @@ async function createHeatStates(adapter) {
269
269
  await adapter.setObjectNotExistsAsync(`${channelId}.reason`, {
270
270
  type: 'state',
271
271
  common: {
272
- name: 'Grund für Heizungsstatus',
272
+ name: { de: 'Grund für Heizungsstatus', en: 'Reason for heating status' },
273
273
  type: 'string',
274
274
  role: 'text',
275
275
  read: true,
@@ -281,7 +281,7 @@ async function createHeatStates(adapter) {
281
281
  await adapter.setObjectNotExistsAsync(`${channelId}.info`, {
282
282
  type: 'state',
283
283
  common: {
284
- name: 'Heizungs-Info',
284
+ name: { de: 'Heizungs-Info', en: 'Heating info' },
285
285
  type: 'string',
286
286
  role: 'text',
287
287
  read: true,
@@ -22,7 +22,7 @@ async function createInfoStates(adapter) {
22
22
  await adapter.setObjectNotExistsAsync('info', {
23
23
  type: 'channel',
24
24
  common: {
25
- name: 'Informationen (PoolControl Systeminfos)',
25
+ name: { de: 'Informationen (PoolControl Systeminfos)', en: 'Information (PoolControl system info)' },
26
26
  },
27
27
  native: {},
28
28
  });
@@ -31,8 +31,11 @@ async function createInfoStates(adapter) {
31
31
  await adapter.setObjectNotExistsAsync('info.developer_greeting', {
32
32
  type: 'state',
33
33
  common: {
34
- name: 'Entwickler-Grußtext',
35
- desc: 'Saisonale Grüße und Informationen vom PoolControl-Entwickler',
34
+ name: { de: 'Entwickler-Grußtext', en: 'Developer greeting' },
35
+ desc: {
36
+ de: 'Saisonale Grüße und Informationen vom PoolControl-Entwickler',
37
+ en: 'Seasonal greetings and information from the PoolControl developer',
38
+ },
36
39
  type: 'string',
37
40
  role: 'text',
38
41
  read: true,
@@ -46,8 +49,11 @@ async function createInfoStates(adapter) {
46
49
  await adapter.setObjectNotExistsAsync('info.adapter_version', {
47
50
  type: 'state',
48
51
  common: {
49
- name: 'Installierte Adapterversion',
50
- desc: 'Aktuell installierte Version von PoolControl',
52
+ name: { de: 'Installierte Adapterversion', en: 'Installed adapter version' },
53
+ desc: {
54
+ de: 'Aktuell installierte Version von PoolControl',
55
+ en: 'Currently installed version of PoolControl',
56
+ },
51
57
  type: 'string',
52
58
  role: 'text',
53
59
  read: true,