iobroker.poolcontrol 1.2.12 → 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.
- package/README.md +6 -0
- package/admin/i18n/de/translations.json +0 -2
- package/admin/i18n/es/translations.json +0 -2
- package/admin/i18n/fr/translations.json +0 -2
- package/admin/i18n/it/translations.json +0 -2
- package/admin/i18n/nl/translations.json +0 -2
- package/admin/i18n/pl/translations.json +0 -2
- package/admin/i18n/pt/translations.json +0 -2
- package/admin/i18n/ru/translations.json +0 -2
- package/admin/i18n/uk/translations.json +0 -2
- package/admin/i18n/zh-cn/translations.json +0 -2
- package/io-package.json +16 -15
- package/lib/stateDefinitions/actuatorsStates.js +132 -19
- package/lib/stateDefinitions/aiChemistryHelpStates.js +28 -11
- package/lib/stateDefinitions/aiStates.js +201 -31
- package/lib/stateDefinitions/consumptionStates.js +140 -14
- package/lib/stateDefinitions/controlStates.js +120 -34
- package/lib/stateDefinitions/debugLogStates.js +32 -10
- package/lib/stateDefinitions/generalStates.js +28 -4
- package/lib/stateDefinitions/heatStates.js +132 -17
- package/lib/stateDefinitions/infoStates.js +20 -5
- package/lib/stateDefinitions/photovoltaicStates.js +78 -19
- package/lib/stateDefinitions/pumpSpeedStates.js +76 -11
- package/lib/stateDefinitions/pumpStates.js +100 -15
- package/lib/stateDefinitions/pumpStates2.js +36 -9
- package/lib/stateDefinitions/pumpStates3.js +92 -23
- package/lib/stateDefinitions/pumpStates4.js +120 -30
- package/lib/stateDefinitions/runtimeStates.js +74 -10
- package/lib/stateDefinitions/solarStates.js +68 -9
- package/lib/stateDefinitions/speechStates.js +133 -18
- package/lib/stateDefinitions/statisticsStates.js +167 -24
- package/lib/stateDefinitions/statusStates.js +92 -12
- package/lib/stateDefinitions/temperatureStates.js +117 -18
- package/lib/stateDefinitions/timeStates.js +43 -12
- package/package.json +1 -1
|
@@ -31,7 +31,10 @@ async function createAiStates(adapter) {
|
|
|
31
31
|
await adapter.setObjectNotExistsAsync('ai', {
|
|
32
32
|
type: 'channel',
|
|
33
33
|
common: {
|
|
34
|
-
name:
|
|
34
|
+
name: {
|
|
35
|
+
en: 'AI functions',
|
|
36
|
+
de: 'KI-Funktionen',
|
|
37
|
+
},
|
|
35
38
|
},
|
|
36
39
|
native: {},
|
|
37
40
|
});
|
|
@@ -43,8 +46,14 @@ async function createAiStates(adapter) {
|
|
|
43
46
|
await adapter.setObjectNotExistsAsync('ai.enabled', {
|
|
44
47
|
type: 'state',
|
|
45
48
|
common: {
|
|
46
|
-
name:
|
|
47
|
-
|
|
49
|
+
name: {
|
|
50
|
+
en: 'Enable AI',
|
|
51
|
+
de: 'KI aktivieren',
|
|
52
|
+
},
|
|
53
|
+
desc: {
|
|
54
|
+
en: 'Global master switch for all AI functions',
|
|
55
|
+
de: 'Globaler Hauptschalter für alle KI-Funktionen',
|
|
56
|
+
},
|
|
48
57
|
type: 'boolean',
|
|
49
58
|
role: 'switch',
|
|
50
59
|
read: true,
|
|
@@ -61,8 +70,10 @@ async function createAiStates(adapter) {
|
|
|
61
70
|
await adapter.setObjectNotExistsAsync('ai.weather', {
|
|
62
71
|
type: 'channel',
|
|
63
72
|
common: {
|
|
64
|
-
name:
|
|
65
|
-
|
|
73
|
+
name: {
|
|
74
|
+
en: 'Weather-related AI functions',
|
|
75
|
+
de: 'Wetterbezogene KI-Funktionen',
|
|
76
|
+
},
|
|
66
77
|
},
|
|
67
78
|
native: {},
|
|
68
79
|
});
|
|
@@ -73,8 +84,10 @@ async function createAiStates(adapter) {
|
|
|
73
84
|
await adapter.setObjectNotExistsAsync('ai.weather.switches', {
|
|
74
85
|
type: 'channel',
|
|
75
86
|
common: {
|
|
76
|
-
name:
|
|
77
|
-
|
|
87
|
+
name: {
|
|
88
|
+
en: 'Switches (weather AI)',
|
|
89
|
+
de: 'Schalter (Wetter-KI)',
|
|
90
|
+
},
|
|
78
91
|
},
|
|
79
92
|
native: {},
|
|
80
93
|
});
|
|
@@ -85,33 +98,90 @@ async function createAiStates(adapter) {
|
|
|
85
98
|
// Steuerung & Debug für Wetter-KI
|
|
86
99
|
{
|
|
87
100
|
id: 'allow_speech',
|
|
88
|
-
name:
|
|
101
|
+
name: {
|
|
102
|
+
en: 'Allow speech output for weather AI',
|
|
103
|
+
de: 'Sprachausgabe für Wetter-KI erlauben',
|
|
104
|
+
},
|
|
105
|
+
desc: {
|
|
106
|
+
en: 'Enables speech output for weather AI messages',
|
|
107
|
+
de: 'Aktiviert die Sprachausgabe für Wetter-KI-Nachrichten',
|
|
108
|
+
},
|
|
109
|
+
def: false,
|
|
110
|
+
}, // GEÄNDERT: von ai.switches → ai.weather.switches
|
|
111
|
+
{
|
|
112
|
+
id: 'debug_mode',
|
|
113
|
+
name: {
|
|
114
|
+
en: 'Debug mode for weather AI',
|
|
115
|
+
de: 'Debug-Modus für Wetter-KI',
|
|
116
|
+
},
|
|
117
|
+
desc: {
|
|
118
|
+
en: 'Enables debug mode for weather AI functions',
|
|
119
|
+
de: 'Aktiviert den Debug-Modus für Wetter-KI-Funktionen',
|
|
120
|
+
},
|
|
89
121
|
def: false,
|
|
90
122
|
}, // GEÄNDERT: von ai.switches → ai.weather.switches
|
|
91
|
-
{ id: 'debug_mode', name: 'Debug mode for weather AI', def: false }, // GEÄNDERT: von ai.switches → ai.weather.switches
|
|
92
123
|
|
|
93
124
|
// Modulspezifische Schalter
|
|
94
125
|
{
|
|
95
126
|
id: 'daily_summary_enabled',
|
|
96
|
-
name:
|
|
127
|
+
name: {
|
|
128
|
+
en: 'Enable daily summary',
|
|
129
|
+
de: 'Tageszusammenfassung aktivieren',
|
|
130
|
+
},
|
|
131
|
+
desc: {
|
|
132
|
+
en: 'Enables the daily summary output',
|
|
133
|
+
de: 'Aktiviert die Ausgabe der Tageszusammenfassung',
|
|
134
|
+
},
|
|
97
135
|
def: false,
|
|
98
136
|
},
|
|
99
137
|
{
|
|
100
138
|
id: 'daily_pool_tips_enabled',
|
|
101
|
-
name:
|
|
139
|
+
name: {
|
|
140
|
+
en: 'Enable daily pool tips',
|
|
141
|
+
de: 'Tägliche Pooltipps aktivieren',
|
|
142
|
+
},
|
|
143
|
+
desc: {
|
|
144
|
+
en: 'Enables the daily pool tips output',
|
|
145
|
+
de: 'Aktiviert die Ausgabe der täglichen Pooltipps',
|
|
146
|
+
},
|
|
147
|
+
def: false,
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
id: 'weather_advice_enabled',
|
|
151
|
+
name: {
|
|
152
|
+
en: 'Enable weather advice',
|
|
153
|
+
de: 'Wetterhinweise aktivieren',
|
|
154
|
+
},
|
|
155
|
+
desc: {
|
|
156
|
+
en: 'Enables the weather advice output',
|
|
157
|
+
de: 'Aktiviert die Ausgabe der Wetterhinweise',
|
|
158
|
+
},
|
|
102
159
|
def: false,
|
|
103
160
|
},
|
|
104
|
-
{ id: 'weather_advice_enabled', name: 'Enable weather advice', def: false },
|
|
105
161
|
{
|
|
106
162
|
id: 'weekend_summary_enabled',
|
|
107
|
-
name:
|
|
163
|
+
name: {
|
|
164
|
+
en: 'Enable weekend summary',
|
|
165
|
+
de: 'Wochenendzusammenfassung aktivieren',
|
|
166
|
+
},
|
|
167
|
+
desc: {
|
|
168
|
+
en: 'Enables the weekend summary output',
|
|
169
|
+
de: 'Aktiviert die Ausgabe der Wochenendzusammenfassung',
|
|
170
|
+
},
|
|
108
171
|
def: false,
|
|
109
172
|
},
|
|
110
173
|
|
|
111
174
|
// NEU: Schalter für "Vorhersage für morgen"
|
|
112
175
|
{
|
|
113
176
|
id: 'tomorrow_forecast_enabled',
|
|
114
|
-
name:
|
|
177
|
+
name: {
|
|
178
|
+
en: 'Enable tomorrow forecast',
|
|
179
|
+
de: 'Vorhersage für morgen aktivieren',
|
|
180
|
+
},
|
|
181
|
+
desc: {
|
|
182
|
+
en: 'Enables the tomorrow forecast output',
|
|
183
|
+
de: 'Aktiviert die Ausgabe der Vorhersage für morgen',
|
|
184
|
+
},
|
|
115
185
|
def: false,
|
|
116
186
|
}, // NEU
|
|
117
187
|
];
|
|
@@ -121,6 +191,7 @@ async function createAiStates(adapter) {
|
|
|
121
191
|
type: 'state',
|
|
122
192
|
common: {
|
|
123
193
|
name: s.name,
|
|
194
|
+
desc: s.desc,
|
|
124
195
|
type: 'boolean',
|
|
125
196
|
role: 'switch',
|
|
126
197
|
read: true,
|
|
@@ -138,10 +209,10 @@ async function createAiStates(adapter) {
|
|
|
138
209
|
await adapter.setObjectNotExistsAsync('ai.weather.schedule', {
|
|
139
210
|
type: 'channel',
|
|
140
211
|
common: {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
212
|
+
name: {
|
|
213
|
+
en: 'Schedules (weather AI)',
|
|
214
|
+
de: 'Zeitpläne (Wetter-KI)',
|
|
215
|
+
},
|
|
145
216
|
},
|
|
146
217
|
native: {},
|
|
147
218
|
});
|
|
@@ -151,29 +222,64 @@ async function createAiStates(adapter) {
|
|
|
151
222
|
const weatherSchedule = [
|
|
152
223
|
{
|
|
153
224
|
id: 'daily_summary_time',
|
|
154
|
-
name:
|
|
225
|
+
name: {
|
|
226
|
+
en: 'Time for daily summary',
|
|
227
|
+
de: 'Zeit für Tageszusammenfassung',
|
|
228
|
+
},
|
|
229
|
+
desc: {
|
|
230
|
+
en: 'Configured time for the daily summary output',
|
|
231
|
+
de: 'Eingestellte Zeit für die Ausgabe der Tageszusammenfassung',
|
|
232
|
+
},
|
|
155
233
|
def: '09:00',
|
|
156
234
|
},
|
|
157
235
|
{
|
|
158
236
|
id: 'daily_pool_tips_time',
|
|
159
|
-
name:
|
|
237
|
+
name: {
|
|
238
|
+
en: 'Time for daily pool tips',
|
|
239
|
+
de: 'Zeit für tägliche Pooltipps',
|
|
240
|
+
},
|
|
241
|
+
desc: {
|
|
242
|
+
en: 'Configured time for the daily pool tips output',
|
|
243
|
+
de: 'Eingestellte Zeit für die Ausgabe der täglichen Pooltipps',
|
|
244
|
+
},
|
|
160
245
|
def: '10:00',
|
|
161
246
|
},
|
|
162
247
|
{
|
|
163
248
|
id: 'weather_advice_time',
|
|
164
|
-
name:
|
|
249
|
+
name: {
|
|
250
|
+
en: 'Time for weather advice',
|
|
251
|
+
de: 'Zeit für Wetterhinweise',
|
|
252
|
+
},
|
|
253
|
+
desc: {
|
|
254
|
+
en: 'Configured time for the weather advice output',
|
|
255
|
+
de: 'Eingestellte Zeit für die Ausgabe der Wetterhinweise',
|
|
256
|
+
},
|
|
165
257
|
def: '08:00',
|
|
166
258
|
},
|
|
167
259
|
{
|
|
168
260
|
id: 'weekend_summary_time',
|
|
169
|
-
name:
|
|
261
|
+
name: {
|
|
262
|
+
en: 'Time for weekend summary',
|
|
263
|
+
de: 'Zeit für Wochenendzusammenfassung',
|
|
264
|
+
},
|
|
265
|
+
desc: {
|
|
266
|
+
en: 'Configured time for the weekend summary output',
|
|
267
|
+
de: 'Eingestellte Zeit für die Ausgabe der Wochenendzusammenfassung',
|
|
268
|
+
},
|
|
170
269
|
def: '18:00',
|
|
171
270
|
},
|
|
172
271
|
|
|
173
272
|
// NEU: Zeitplan für "Vorhersage für morgen"
|
|
174
273
|
{
|
|
175
274
|
id: 'tomorrow_forecast_time',
|
|
176
|
-
name:
|
|
275
|
+
name: {
|
|
276
|
+
en: 'Time for tomorrow forecast',
|
|
277
|
+
de: 'Zeit für Vorhersage für morgen',
|
|
278
|
+
},
|
|
279
|
+
desc: {
|
|
280
|
+
en: 'Configured time for the tomorrow forecast output',
|
|
281
|
+
de: 'Eingestellte Zeit für die Ausgabe der Vorhersage für morgen',
|
|
282
|
+
},
|
|
177
283
|
def: '19:00',
|
|
178
284
|
}, // NEU
|
|
179
285
|
];
|
|
@@ -183,6 +289,7 @@ async function createAiStates(adapter) {
|
|
|
183
289
|
type: 'state',
|
|
184
290
|
common: {
|
|
185
291
|
name: t.name,
|
|
292
|
+
desc: t.desc,
|
|
186
293
|
type: 'string',
|
|
187
294
|
role: 'text',
|
|
188
295
|
read: true,
|
|
@@ -200,8 +307,10 @@ async function createAiStates(adapter) {
|
|
|
200
307
|
await adapter.setObjectNotExistsAsync('ai.weather.outputs', {
|
|
201
308
|
type: 'channel',
|
|
202
309
|
common: {
|
|
203
|
-
name:
|
|
204
|
-
|
|
310
|
+
name: {
|
|
311
|
+
en: 'AI outputs (weather texts)',
|
|
312
|
+
de: 'KI-Ausgaben (Wettertexte)',
|
|
313
|
+
},
|
|
205
314
|
},
|
|
206
315
|
native: {},
|
|
207
316
|
});
|
|
@@ -209,16 +318,76 @@ async function createAiStates(adapter) {
|
|
|
209
318
|
// NEU / GEÄNDERT:
|
|
210
319
|
// Alle bisherigen Ausgaben + neue Vorhersage + last_message unter ai.weather.outputs.*
|
|
211
320
|
const weatherOutputs = [
|
|
212
|
-
{
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
321
|
+
{
|
|
322
|
+
id: 'daily_summary',
|
|
323
|
+
name: {
|
|
324
|
+
en: 'Daily summary',
|
|
325
|
+
de: 'Tageszusammenfassung',
|
|
326
|
+
},
|
|
327
|
+
desc: {
|
|
328
|
+
en: 'Generated text output for the daily summary',
|
|
329
|
+
de: 'Generierte Textausgabe für die Tageszusammenfassung',
|
|
330
|
+
},
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
id: 'pool_tips',
|
|
334
|
+
name: {
|
|
335
|
+
en: 'Pool tips',
|
|
336
|
+
de: 'Pooltipps',
|
|
337
|
+
},
|
|
338
|
+
desc: {
|
|
339
|
+
en: 'Generated text output for pool tips',
|
|
340
|
+
de: 'Generierte Textausgabe für Pooltipps',
|
|
341
|
+
},
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
id: 'weather_advice',
|
|
345
|
+
name: {
|
|
346
|
+
en: 'Weather advice',
|
|
347
|
+
de: 'Wetterhinweise',
|
|
348
|
+
},
|
|
349
|
+
desc: {
|
|
350
|
+
en: 'Generated text output for weather advice',
|
|
351
|
+
de: 'Generierte Textausgabe für Wetterhinweise',
|
|
352
|
+
},
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
id: 'weekend_summary',
|
|
356
|
+
name: {
|
|
357
|
+
en: 'Weekend summary',
|
|
358
|
+
de: 'Wochenendzusammenfassung',
|
|
359
|
+
},
|
|
360
|
+
desc: {
|
|
361
|
+
en: 'Generated text output for the weekend summary',
|
|
362
|
+
de: 'Generierte Textausgabe für die Wochenendzusammenfassung',
|
|
363
|
+
},
|
|
364
|
+
},
|
|
216
365
|
|
|
217
366
|
// NEU: Ausgabefeld für die Vorhersage für morgen
|
|
218
|
-
{
|
|
367
|
+
{
|
|
368
|
+
id: 'tomorrow_forecast',
|
|
369
|
+
name: {
|
|
370
|
+
en: 'Tomorrow forecast',
|
|
371
|
+
de: 'Vorhersage für morgen',
|
|
372
|
+
},
|
|
373
|
+
desc: {
|
|
374
|
+
en: 'Generated text output for the tomorrow forecast',
|
|
375
|
+
de: 'Generierte Textausgabe für die Vorhersage für morgen',
|
|
376
|
+
},
|
|
377
|
+
}, // NEU
|
|
219
378
|
|
|
220
379
|
// GEÄNDERT: last_message gehört aktuell zur Wetter-KI
|
|
221
|
-
{
|
|
380
|
+
{
|
|
381
|
+
id: 'last_message',
|
|
382
|
+
name: {
|
|
383
|
+
en: 'Last weather AI message',
|
|
384
|
+
de: 'Letzte Wetter-KI-Nachricht',
|
|
385
|
+
},
|
|
386
|
+
desc: {
|
|
387
|
+
en: 'Last generated message from the weather AI',
|
|
388
|
+
de: 'Letzte generierte Nachricht der Wetter-KI',
|
|
389
|
+
},
|
|
390
|
+
}, // GEÄNDERT: von ai.outputs → ai.weather.outputs
|
|
222
391
|
];
|
|
223
392
|
|
|
224
393
|
for (const o of weatherOutputs) {
|
|
@@ -226,6 +395,7 @@ async function createAiStates(adapter) {
|
|
|
226
395
|
type: 'state',
|
|
227
396
|
common: {
|
|
228
397
|
name: o.name,
|
|
398
|
+
desc: o.desc,
|
|
229
399
|
type: 'string',
|
|
230
400
|
role: 'text',
|
|
231
401
|
read: true,
|
|
@@ -17,22 +17,91 @@ async function createConsumptionStates(adapter) {
|
|
|
17
17
|
// --- Kanal consumption ---
|
|
18
18
|
await adapter.setObjectNotExistsAsync('consumption', {
|
|
19
19
|
type: 'channel',
|
|
20
|
-
common: {
|
|
20
|
+
common: {
|
|
21
|
+
name: {
|
|
22
|
+
en: 'Power consumption',
|
|
23
|
+
de: 'Stromverbrauch',
|
|
24
|
+
},
|
|
25
|
+
},
|
|
21
26
|
native: {},
|
|
22
27
|
});
|
|
23
28
|
|
|
24
29
|
const consumptionStates = {
|
|
25
|
-
total_kwh: {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
total_kwh: {
|
|
31
|
+
name: {
|
|
32
|
+
en: 'Total consumption',
|
|
33
|
+
de: 'Gesamtverbrauch',
|
|
34
|
+
},
|
|
35
|
+
desc: {
|
|
36
|
+
en: 'Total accumulated power consumption',
|
|
37
|
+
de: 'Gesamt aufgelaufener Stromverbrauch',
|
|
38
|
+
},
|
|
39
|
+
unit: 'kWh',
|
|
40
|
+
},
|
|
41
|
+
day_kwh: {
|
|
42
|
+
name: {
|
|
43
|
+
en: 'Consumption today',
|
|
44
|
+
de: 'Verbrauch heute',
|
|
45
|
+
},
|
|
46
|
+
desc: {
|
|
47
|
+
en: 'Power consumption accumulated today',
|
|
48
|
+
de: 'Heute aufgelaufener Stromverbrauch',
|
|
49
|
+
},
|
|
50
|
+
unit: 'kWh',
|
|
51
|
+
},
|
|
52
|
+
week_kwh: {
|
|
53
|
+
name: {
|
|
54
|
+
en: 'Consumption this week',
|
|
55
|
+
de: 'Verbrauch diese Woche',
|
|
56
|
+
},
|
|
57
|
+
desc: {
|
|
58
|
+
en: 'Power consumption accumulated this week',
|
|
59
|
+
de: 'Diese Woche aufgelaufener Stromverbrauch',
|
|
60
|
+
},
|
|
61
|
+
unit: 'kWh',
|
|
62
|
+
},
|
|
63
|
+
month_kwh: {
|
|
64
|
+
name: {
|
|
65
|
+
en: 'Consumption this month',
|
|
66
|
+
de: 'Verbrauch diesen Monat',
|
|
67
|
+
},
|
|
68
|
+
desc: {
|
|
69
|
+
en: 'Power consumption accumulated this month',
|
|
70
|
+
de: 'Diesen Monat aufgelaufener Stromverbrauch',
|
|
71
|
+
},
|
|
72
|
+
unit: 'kWh',
|
|
73
|
+
},
|
|
74
|
+
year_kwh: {
|
|
75
|
+
name: {
|
|
76
|
+
en: 'Consumption this year',
|
|
77
|
+
de: 'Verbrauch dieses Jahr',
|
|
78
|
+
},
|
|
79
|
+
desc: {
|
|
80
|
+
en: 'Power consumption accumulated this year',
|
|
81
|
+
de: 'Dieses Jahr aufgelaufener Stromverbrauch',
|
|
82
|
+
},
|
|
83
|
+
unit: 'kWh',
|
|
84
|
+
},
|
|
30
85
|
last_total_kwh: {
|
|
31
|
-
name:
|
|
86
|
+
name: {
|
|
87
|
+
en: 'Last meter reading (baseline)',
|
|
88
|
+
de: 'Letzter Zaehlerstand (Baseline)',
|
|
89
|
+
},
|
|
90
|
+
desc: {
|
|
91
|
+
en: 'Last stored meter reading used as internal baseline',
|
|
92
|
+
de: 'Zuletzt gespeicherter Zaehlerstand als interne Baseline',
|
|
93
|
+
},
|
|
32
94
|
unit: 'kWh',
|
|
33
95
|
},
|
|
34
96
|
offset_kwh: {
|
|
35
|
-
name:
|
|
97
|
+
name: {
|
|
98
|
+
en: 'Offset kWh (internal counter adjustment)',
|
|
99
|
+
de: 'Offset kWh (interner Zaehlerausgleich)',
|
|
100
|
+
},
|
|
101
|
+
desc: {
|
|
102
|
+
en: 'Internal offset for meter correction after reset or counter change',
|
|
103
|
+
de: 'Interner Offset zur Zaehlerkorrektur nach Reset oder Zaehlerwechsel',
|
|
104
|
+
},
|
|
36
105
|
unit: 'kWh',
|
|
37
106
|
},
|
|
38
107
|
};
|
|
@@ -42,6 +111,7 @@ async function createConsumptionStates(adapter) {
|
|
|
42
111
|
type: 'state',
|
|
43
112
|
common: {
|
|
44
113
|
name: cfg.name,
|
|
114
|
+
desc: cfg.desc,
|
|
45
115
|
type: 'number',
|
|
46
116
|
role: 'value.power.consumption',
|
|
47
117
|
unit: cfg.unit,
|
|
@@ -61,16 +131,71 @@ async function createConsumptionStates(adapter) {
|
|
|
61
131
|
// --- Kanal costs ---
|
|
62
132
|
await adapter.setObjectNotExistsAsync('costs', {
|
|
63
133
|
type: 'channel',
|
|
64
|
-
common: {
|
|
134
|
+
common: {
|
|
135
|
+
name: {
|
|
136
|
+
en: 'Costs',
|
|
137
|
+
de: 'Kosten',
|
|
138
|
+
},
|
|
139
|
+
},
|
|
65
140
|
native: {},
|
|
66
141
|
});
|
|
67
142
|
|
|
68
143
|
const costStates = {
|
|
69
|
-
total_eur: {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
144
|
+
total_eur: {
|
|
145
|
+
name: {
|
|
146
|
+
en: 'Total costs',
|
|
147
|
+
de: 'Gesamtkosten',
|
|
148
|
+
},
|
|
149
|
+
desc: {
|
|
150
|
+
en: 'Total accumulated costs',
|
|
151
|
+
de: 'Gesamt aufgelaufene Kosten',
|
|
152
|
+
},
|
|
153
|
+
unit: '€',
|
|
154
|
+
},
|
|
155
|
+
day_eur: {
|
|
156
|
+
name: {
|
|
157
|
+
en: 'Costs today',
|
|
158
|
+
de: 'Kosten heute',
|
|
159
|
+
},
|
|
160
|
+
desc: {
|
|
161
|
+
en: 'Costs accumulated today',
|
|
162
|
+
de: 'Heute aufgelaufene Kosten',
|
|
163
|
+
},
|
|
164
|
+
unit: '€',
|
|
165
|
+
},
|
|
166
|
+
week_eur: {
|
|
167
|
+
name: {
|
|
168
|
+
en: 'Costs this week',
|
|
169
|
+
de: 'Kosten diese Woche',
|
|
170
|
+
},
|
|
171
|
+
desc: {
|
|
172
|
+
en: 'Costs accumulated this week',
|
|
173
|
+
de: 'Diese Woche aufgelaufene Kosten',
|
|
174
|
+
},
|
|
175
|
+
unit: '€',
|
|
176
|
+
},
|
|
177
|
+
month_eur: {
|
|
178
|
+
name: {
|
|
179
|
+
en: 'Costs this month',
|
|
180
|
+
de: 'Kosten diesen Monat',
|
|
181
|
+
},
|
|
182
|
+
desc: {
|
|
183
|
+
en: 'Costs accumulated this month',
|
|
184
|
+
de: 'Diesen Monat aufgelaufene Kosten',
|
|
185
|
+
},
|
|
186
|
+
unit: '€',
|
|
187
|
+
},
|
|
188
|
+
year_eur: {
|
|
189
|
+
name: {
|
|
190
|
+
en: 'Costs this year',
|
|
191
|
+
de: 'Kosten dieses Jahr',
|
|
192
|
+
},
|
|
193
|
+
desc: {
|
|
194
|
+
en: 'Costs accumulated this year',
|
|
195
|
+
de: 'Dieses Jahr aufgelaufene Kosten',
|
|
196
|
+
},
|
|
197
|
+
unit: '€',
|
|
198
|
+
},
|
|
74
199
|
};
|
|
75
200
|
|
|
76
201
|
for (const [id, cfg] of Object.entries(costStates)) {
|
|
@@ -78,6 +203,7 @@ async function createConsumptionStates(adapter) {
|
|
|
78
203
|
type: 'state',
|
|
79
204
|
common: {
|
|
80
205
|
name: cfg.name,
|
|
206
|
+
desc: cfg.desc,
|
|
81
207
|
type: 'number',
|
|
82
208
|
role: 'value.cost',
|
|
83
209
|
unit: cfg.unit,
|