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.
- package/README.md +285 -292
- package/admin/i18n/de/translations.json +158 -4
- package/admin/i18n/en/translations.json +161 -3
- package/admin/i18n/es/translations.json +158 -4
- package/admin/i18n/fr/translations.json +158 -4
- package/admin/i18n/it/translations.json +158 -4
- package/admin/i18n/nl/translations.json +158 -4
- package/admin/i18n/pl/translations.json +158 -4
- package/admin/i18n/pt/translations.json +158 -4
- package/admin/i18n/ru/translations.json +158 -4
- package/admin/i18n/uk/translations.json +158 -4
- package/admin/i18n/zh-cn/translations.json +158 -4
- package/admin/jsonConfig.json +180 -602
- package/io-package.json +107 -100
- package/lib/helpers/actuatorsHelper.js +6 -8
- package/lib/helpers/aiChemistryHelpHelper.js +7 -7
- package/lib/helpers/aiForecastHelper.js +21 -21
- package/lib/helpers/aiHelper.js +53 -63
- package/lib/helpers/consumptionHelper.js +23 -25
- package/lib/helpers/controlHelper.js +24 -24
- package/lib/helpers/controlHelper2.js +17 -17
- package/lib/helpers/debugLogHelper.js +12 -14
- package/lib/helpers/frostHelper.js +6 -6
- package/lib/helpers/heatHelper.js +14 -14
- package/lib/helpers/infoHelper.js +2 -2
- package/lib/helpers/migrationHelper.js +16 -16
- package/lib/helpers/photovoltaicHelper.js +28 -28
- package/lib/helpers/pumpHelper.js +16 -18
- package/lib/helpers/pumpHelper2.js +8 -10
- package/lib/helpers/pumpHelper3.js +9 -9
- package/lib/helpers/pumpHelper4.js +9 -9
- package/lib/helpers/pumpSpeedHelper.js +6 -6
- package/lib/helpers/runtimeHelper.js +14 -14
- package/lib/helpers/solarHelper.js +9 -9
- package/lib/helpers/speechHelper.js +13 -15
- package/lib/helpers/speechTextHelper.js +13 -13
- package/lib/helpers/statisticsHelper.js +9 -9
- package/lib/helpers/statisticsHelperMonth.js +15 -15
- package/lib/helpers/statisticsHelperWeek.js +11 -11
- package/lib/helpers/statusHelper.js +9 -9
- package/lib/helpers/temperatureHelper.js +9 -11
- package/lib/helpers/timeHelper.js +7 -9
- package/lib/stateDefinitions/actuatorsStates.js +19 -19
- package/lib/stateDefinitions/aiChemistryHelpStates.js +59 -28
- package/lib/stateDefinitions/aiStates.js +119 -31
- package/lib/stateDefinitions/consumptionStates.js +20 -14
- package/lib/stateDefinitions/controlStates.js +90 -37
- package/lib/stateDefinitions/debugLogStates.js +28 -13
- package/lib/stateDefinitions/generalStates.js +4 -4
- package/lib/stateDefinitions/heatStates.js +21 -21
- package/lib/stateDefinitions/infoStates.js +11 -5
- package/lib/stateDefinitions/photovoltaicStates.js +52 -24
- package/lib/stateDefinitions/pumpSpeedStates.js +11 -11
- package/lib/stateDefinitions/pumpStates.js +24 -15
- package/lib/stateDefinitions/pumpStates2.js +22 -10
- package/lib/stateDefinitions/pumpStates3.js +63 -24
- package/lib/stateDefinitions/pumpStates4.js +62 -32
- package/lib/stateDefinitions/runtimeStates.js +10 -10
- package/lib/stateDefinitions/solarStates.js +9 -9
- package/lib/stateDefinitions/speechStates.js +24 -21
- package/lib/stateDefinitions/statisticsStates.js +107 -29
- package/lib/stateDefinitions/statusStates.js +14 -12
- package/lib/stateDefinitions/temperatureStates.js +18 -12
- package/lib/stateDefinitions/timeStates.js +5 -5
- package/main.js +38 -0
- 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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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(
|
|
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:
|
|
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:
|
|
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]
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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(
|
|
118
|
-
adapter.log.debug(`[debugLogStates]
|
|
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]
|
|
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:
|
|
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:
|
|
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,
|