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
|
@@ -21,11 +21,41 @@
|
|
|
21
21
|
* @param {import("iobroker").Adapter} adapter - ioBroker Adapter-Instanz
|
|
22
22
|
*/
|
|
23
23
|
async function createTemperatureStates(adapter) {
|
|
24
|
+
const sensorLabels = {
|
|
25
|
+
surface: {
|
|
26
|
+
en: 'Surface',
|
|
27
|
+
de: 'Oberflaeche',
|
|
28
|
+
},
|
|
29
|
+
ground: {
|
|
30
|
+
en: 'Ground',
|
|
31
|
+
de: 'Grund',
|
|
32
|
+
},
|
|
33
|
+
flow: {
|
|
34
|
+
en: 'Flow',
|
|
35
|
+
de: 'Vorlauf',
|
|
36
|
+
},
|
|
37
|
+
return: {
|
|
38
|
+
en: 'Return',
|
|
39
|
+
de: 'Ruecklauf',
|
|
40
|
+
},
|
|
41
|
+
collector: {
|
|
42
|
+
en: 'Collector',
|
|
43
|
+
de: 'Kollektor',
|
|
44
|
+
},
|
|
45
|
+
outside: {
|
|
46
|
+
en: 'Outside temperature',
|
|
47
|
+
de: 'Aussentemperatur',
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
|
|
24
51
|
// Root-Kanal (robustheitshalber explizit anlegen)
|
|
25
52
|
await adapter.setObjectNotExistsAsync('temperature', {
|
|
26
53
|
type: 'channel',
|
|
27
54
|
common: {
|
|
28
|
-
name:
|
|
55
|
+
name: {
|
|
56
|
+
en: 'Temperature management',
|
|
57
|
+
de: 'Temperaturverwaltung',
|
|
58
|
+
},
|
|
29
59
|
},
|
|
30
60
|
native: {},
|
|
31
61
|
});
|
|
@@ -34,7 +64,10 @@ async function createTemperatureStates(adapter) {
|
|
|
34
64
|
await adapter.setObjectNotExistsAsync('temperature.delta', {
|
|
35
65
|
type: 'channel',
|
|
36
66
|
common: {
|
|
37
|
-
name:
|
|
67
|
+
name: {
|
|
68
|
+
en: 'Temperature deltas',
|
|
69
|
+
de: 'Temperaturdeltas',
|
|
70
|
+
},
|
|
38
71
|
},
|
|
39
72
|
native: {},
|
|
40
73
|
});
|
|
@@ -45,7 +78,14 @@ async function createTemperatureStates(adapter) {
|
|
|
45
78
|
await adapter.setObjectNotExistsAsync(`temperature.${sensorKey}_temp_active`, {
|
|
46
79
|
type: 'state',
|
|
47
80
|
common: {
|
|
48
|
-
name:
|
|
81
|
+
name: {
|
|
82
|
+
en: `Use sensor ${label.en}`,
|
|
83
|
+
de: `Sensor ${label.de} verwenden`,
|
|
84
|
+
},
|
|
85
|
+
desc: {
|
|
86
|
+
en: `Enables or disables the ${label.en} sensor from the instance configuration`,
|
|
87
|
+
de: `Aktiviert oder deaktiviert den Sensor ${label.de} aus der Instanzkonfiguration`,
|
|
88
|
+
},
|
|
49
89
|
type: 'boolean',
|
|
50
90
|
role: 'switch',
|
|
51
91
|
read: true,
|
|
@@ -61,7 +101,14 @@ async function createTemperatureStates(adapter) {
|
|
|
61
101
|
await adapter.setObjectNotExistsAsync(`temperature.${sensorKey}_temp_sensor`, {
|
|
62
102
|
type: 'state',
|
|
63
103
|
common: {
|
|
64
|
-
name:
|
|
104
|
+
name: {
|
|
105
|
+
en: `Object ID sensor ${label.en}`,
|
|
106
|
+
de: `Objekt-ID Sensor ${label.de}`,
|
|
107
|
+
},
|
|
108
|
+
desc: {
|
|
109
|
+
en: `Configured object ID of the ${label.en} sensor`,
|
|
110
|
+
de: `Konfigurierte Objekt-ID des Sensors ${label.de}`,
|
|
111
|
+
},
|
|
65
112
|
type: 'string',
|
|
66
113
|
role: 'text',
|
|
67
114
|
read: true,
|
|
@@ -78,7 +125,10 @@ async function createTemperatureStates(adapter) {
|
|
|
78
125
|
await adapter.setObjectNotExistsAsync(`temperature.${sensorKey}`, {
|
|
79
126
|
type: 'channel',
|
|
80
127
|
common: {
|
|
81
|
-
name:
|
|
128
|
+
name: {
|
|
129
|
+
en: `Sensor ${label.en}`,
|
|
130
|
+
de: `Sensor ${label.de}`,
|
|
131
|
+
},
|
|
82
132
|
},
|
|
83
133
|
native: {},
|
|
84
134
|
});
|
|
@@ -86,7 +136,14 @@ async function createTemperatureStates(adapter) {
|
|
|
86
136
|
await adapter.setObjectNotExistsAsync(`temperature.${sensorKey}.current`, {
|
|
87
137
|
type: 'state',
|
|
88
138
|
common: {
|
|
89
|
-
name:
|
|
139
|
+
name: {
|
|
140
|
+
en: `Current value sensor ${label.en}`,
|
|
141
|
+
de: `Aktueller Wert Sensor ${label.de}`,
|
|
142
|
+
},
|
|
143
|
+
desc: {
|
|
144
|
+
en: `Current measured temperature value of the ${label.en} sensor`,
|
|
145
|
+
de: `Aktuell gemessener Temperaturwert des Sensors ${label.de}`,
|
|
146
|
+
},
|
|
90
147
|
type: 'number',
|
|
91
148
|
role: 'value.temperature',
|
|
92
149
|
unit: '°C',
|
|
@@ -99,7 +156,14 @@ async function createTemperatureStates(adapter) {
|
|
|
99
156
|
await adapter.setObjectNotExistsAsync(`temperature.${sensorKey}.min_today`, {
|
|
100
157
|
type: 'state',
|
|
101
158
|
common: {
|
|
102
|
-
name:
|
|
159
|
+
name: {
|
|
160
|
+
en: `Daily minimum sensor ${label.en}`,
|
|
161
|
+
de: `Tagesminimum Sensor ${label.de}`,
|
|
162
|
+
},
|
|
163
|
+
desc: {
|
|
164
|
+
en: `Lowest temperature recorded today for the ${label.en} sensor`,
|
|
165
|
+
de: `Niedrigste heute erfasste Temperatur des Sensors ${label.de}`,
|
|
166
|
+
},
|
|
103
167
|
type: 'number',
|
|
104
168
|
role: 'value.temperature',
|
|
105
169
|
unit: '°C',
|
|
@@ -113,7 +177,14 @@ async function createTemperatureStates(adapter) {
|
|
|
113
177
|
await adapter.setObjectNotExistsAsync(`temperature.${sensorKey}.max_today`, {
|
|
114
178
|
type: 'state',
|
|
115
179
|
common: {
|
|
116
|
-
name:
|
|
180
|
+
name: {
|
|
181
|
+
en: `Daily maximum sensor ${label.en}`,
|
|
182
|
+
de: `Tagesmaximum Sensor ${label.de}`,
|
|
183
|
+
},
|
|
184
|
+
desc: {
|
|
185
|
+
en: `Highest temperature recorded today for the ${label.en} sensor`,
|
|
186
|
+
de: `Hoechste heute erfasste Temperatur des Sensors ${label.de}`,
|
|
187
|
+
},
|
|
117
188
|
type: 'number',
|
|
118
189
|
role: 'value.temperature',
|
|
119
190
|
unit: '°C',
|
|
@@ -127,7 +198,14 @@ async function createTemperatureStates(adapter) {
|
|
|
127
198
|
await adapter.setObjectNotExistsAsync(`temperature.${sensorKey}.delta_per_hour`, {
|
|
128
199
|
type: 'state',
|
|
129
200
|
common: {
|
|
130
|
-
name:
|
|
201
|
+
name: {
|
|
202
|
+
en: `Change per hour sensor ${label.en}`,
|
|
203
|
+
de: `Aenderung pro Stunde Sensor ${label.de}`,
|
|
204
|
+
},
|
|
205
|
+
desc: {
|
|
206
|
+
en: `Hourly temperature change of the ${label.en} sensor`,
|
|
207
|
+
de: `Stuendliche Temperaturveraenderung des Sensors ${label.de}`,
|
|
208
|
+
},
|
|
131
209
|
type: 'number',
|
|
132
210
|
role: 'value.temperature',
|
|
133
211
|
unit: '°C/h',
|
|
@@ -139,18 +217,25 @@ async function createTemperatureStates(adapter) {
|
|
|
139
217
|
}
|
|
140
218
|
|
|
141
219
|
// Reihenfolge wie in der Instanz-Config (jsonConfig)
|
|
142
|
-
await createSensorSet('surface',
|
|
143
|
-
await createSensorSet('ground',
|
|
144
|
-
await createSensorSet('flow',
|
|
145
|
-
await createSensorSet('return',
|
|
146
|
-
await createSensorSet('collector',
|
|
147
|
-
await createSensorSet('outside',
|
|
220
|
+
await createSensorSet('surface', sensorLabels.surface);
|
|
221
|
+
await createSensorSet('ground', sensorLabels.ground);
|
|
222
|
+
await createSensorSet('flow', sensorLabels.flow);
|
|
223
|
+
await createSensorSet('return', sensorLabels.return);
|
|
224
|
+
await createSensorSet('collector', sensorLabels.collector);
|
|
225
|
+
await createSensorSet('outside', sensorLabels.outside);
|
|
148
226
|
|
|
149
227
|
// Deltas zwischen Sensoren
|
|
150
228
|
await adapter.setObjectNotExistsAsync('temperature.delta.collector_outside', {
|
|
151
229
|
type: 'state',
|
|
152
230
|
common: {
|
|
153
|
-
name:
|
|
231
|
+
name: {
|
|
232
|
+
en: 'Delta collector - air',
|
|
233
|
+
de: 'Delta Kollektor - Luft',
|
|
234
|
+
},
|
|
235
|
+
desc: {
|
|
236
|
+
en: 'Temperature difference between collector and outside air',
|
|
237
|
+
de: 'Temperaturdifferenz zwischen Kollektor und Aussenluft',
|
|
238
|
+
},
|
|
154
239
|
type: 'number',
|
|
155
240
|
role: 'value.temperature',
|
|
156
241
|
unit: '°C',
|
|
@@ -163,7 +248,14 @@ async function createTemperatureStates(adapter) {
|
|
|
163
248
|
await adapter.setObjectNotExistsAsync('temperature.delta.surface_ground', {
|
|
164
249
|
type: 'state',
|
|
165
250
|
common: {
|
|
166
|
-
name:
|
|
251
|
+
name: {
|
|
252
|
+
en: 'Delta surface - ground',
|
|
253
|
+
de: 'Delta Oberflaeche - Grund',
|
|
254
|
+
},
|
|
255
|
+
desc: {
|
|
256
|
+
en: 'Temperature difference between pool surface and ground',
|
|
257
|
+
de: 'Temperaturdifferenz zwischen Pooloberflaeche und Grund',
|
|
258
|
+
},
|
|
167
259
|
type: 'number',
|
|
168
260
|
role: 'value.temperature',
|
|
169
261
|
unit: '°C',
|
|
@@ -176,7 +268,14 @@ async function createTemperatureStates(adapter) {
|
|
|
176
268
|
await adapter.setObjectNotExistsAsync('temperature.delta.flow_return', {
|
|
177
269
|
type: 'state',
|
|
178
270
|
common: {
|
|
179
|
-
name:
|
|
271
|
+
name: {
|
|
272
|
+
en: 'Delta flow - return',
|
|
273
|
+
de: 'Delta Vorlauf - Ruecklauf',
|
|
274
|
+
},
|
|
275
|
+
desc: {
|
|
276
|
+
en: 'Temperature difference between flow and return',
|
|
277
|
+
de: 'Temperaturdifferenz zwischen Vorlauf und Ruecklauf',
|
|
278
|
+
},
|
|
180
279
|
type: 'number',
|
|
181
280
|
role: 'value.temperature',
|
|
182
281
|
unit: '°C',
|
|
@@ -13,7 +13,10 @@ async function createTimeStates(adapter) {
|
|
|
13
13
|
await adapter.setObjectNotExistsAsync('timecontrol', {
|
|
14
14
|
type: 'channel',
|
|
15
15
|
common: {
|
|
16
|
-
name:
|
|
16
|
+
name: {
|
|
17
|
+
en: 'Time control',
|
|
18
|
+
de: 'Zeitsteuerung',
|
|
19
|
+
},
|
|
17
20
|
},
|
|
18
21
|
native: {},
|
|
19
22
|
});
|
|
@@ -23,7 +26,14 @@ async function createTimeStates(adapter) {
|
|
|
23
26
|
await adapter.setObjectNotExistsAsync(`timecontrol.${prefix}_active`, {
|
|
24
27
|
type: 'state',
|
|
25
28
|
common: {
|
|
26
|
-
name:
|
|
29
|
+
name: {
|
|
30
|
+
en: `Time window ${label} active`,
|
|
31
|
+
de: `Zeitfenster ${label} Aktiv`,
|
|
32
|
+
},
|
|
33
|
+
desc: {
|
|
34
|
+
en: `Enables or disables time window ${label}`,
|
|
35
|
+
de: `Aktiviert oder deaktiviert das Zeitfenster ${label}`,
|
|
36
|
+
},
|
|
27
37
|
type: 'boolean',
|
|
28
38
|
role: 'switch',
|
|
29
39
|
read: true,
|
|
@@ -40,7 +50,14 @@ async function createTimeStates(adapter) {
|
|
|
40
50
|
await adapter.setObjectNotExistsAsync(`timecontrol.${prefix}_start`, {
|
|
41
51
|
type: 'state',
|
|
42
52
|
common: {
|
|
43
|
-
name:
|
|
53
|
+
name: {
|
|
54
|
+
en: `Time window ${label} start (HH:MM)`,
|
|
55
|
+
de: `Zeitfenster ${label} Start (HH:MM)`,
|
|
56
|
+
},
|
|
57
|
+
desc: {
|
|
58
|
+
en: `Start time of time window ${label} in HH:MM format`,
|
|
59
|
+
de: `Startzeit des Zeitfensters ${label} im Format HH:MM`,
|
|
60
|
+
},
|
|
44
61
|
type: 'string',
|
|
45
62
|
role: 'level',
|
|
46
63
|
read: true,
|
|
@@ -57,7 +74,14 @@ async function createTimeStates(adapter) {
|
|
|
57
74
|
await adapter.setObjectNotExistsAsync(`timecontrol.${prefix}_end`, {
|
|
58
75
|
type: 'state',
|
|
59
76
|
common: {
|
|
60
|
-
name:
|
|
77
|
+
name: {
|
|
78
|
+
en: `Time window ${label} end (HH:MM)`,
|
|
79
|
+
de: `Zeitfenster ${label} Ende (HH:MM)`,
|
|
80
|
+
},
|
|
81
|
+
desc: {
|
|
82
|
+
en: `End time of time window ${label} in HH:MM format`,
|
|
83
|
+
de: `Endzeit des Zeitfensters ${label} im Format HH:MM`,
|
|
84
|
+
},
|
|
61
85
|
type: 'string',
|
|
62
86
|
role: 'level',
|
|
63
87
|
read: true,
|
|
@@ -72,20 +96,27 @@ async function createTimeStates(adapter) {
|
|
|
72
96
|
|
|
73
97
|
// Wochentage
|
|
74
98
|
const days = [
|
|
75
|
-
['mon', 'Montag'],
|
|
76
|
-
['tue', 'Dienstag'],
|
|
77
|
-
['wed', 'Mittwoch'],
|
|
78
|
-
['thu', 'Donnerstag'],
|
|
79
|
-
['fri', 'Freitag'],
|
|
80
|
-
['sat', 'Samstag'],
|
|
81
|
-
['sun', 'Sonntag'],
|
|
99
|
+
['mon', { en: 'Monday', de: 'Montag' }],
|
|
100
|
+
['tue', { en: 'Tuesday', de: 'Dienstag' }],
|
|
101
|
+
['wed', { en: 'Wednesday', de: 'Mittwoch' }],
|
|
102
|
+
['thu', { en: 'Thursday', de: 'Donnerstag' }],
|
|
103
|
+
['fri', { en: 'Friday', de: 'Freitag' }],
|
|
104
|
+
['sat', { en: 'Saturday', de: 'Samstag' }],
|
|
105
|
+
['sun', { en: 'Sunday', de: 'Sonntag' }],
|
|
82
106
|
];
|
|
83
107
|
|
|
84
108
|
for (const [key, labelDay] of days) {
|
|
85
109
|
await adapter.setObjectNotExistsAsync(`timecontrol.${prefix}_day_${key}`, {
|
|
86
110
|
type: 'state',
|
|
87
111
|
common: {
|
|
88
|
-
name:
|
|
112
|
+
name: {
|
|
113
|
+
en: `Time window ${label} ${labelDay.en}`,
|
|
114
|
+
de: `Zeitfenster ${label} ${labelDay.de}`,
|
|
115
|
+
},
|
|
116
|
+
desc: {
|
|
117
|
+
en: `Defines whether time window ${label} is active on ${labelDay.en}`,
|
|
118
|
+
de: `Legt fest, ob das Zeitfenster ${label} am ${labelDay.de} aktiv ist`,
|
|
119
|
+
},
|
|
89
120
|
type: 'boolean',
|
|
90
121
|
role: 'switch',
|
|
91
122
|
read: true,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.poolcontrol",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.13",
|
|
4
4
|
"description": "Steuerung & Automatisierung für den Pool (Pumpe, Heizung, Ventile, Sensoren).",
|
|
5
5
|
"author": "DasBo1975 <dasbo1975@outlook.de>",
|
|
6
6
|
"homepage": "https://github.com/DasBo1975/ioBroker.poolcontrol",
|