iobroker.poolcontrol 0.2.2 → 0.3.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.
@@ -18,7 +18,7 @@ async function createSpeechStates(adapter) {
18
18
  native: {},
19
19
  });
20
20
 
21
- // Sprachausgaben global aktiv
21
+ // Sprachausgaben global aktiv (mit Persist-Schutz)
22
22
  await adapter.setObjectNotExistsAsync('speech.active', {
23
23
  type: 'state',
24
24
  common: {
@@ -27,13 +27,19 @@ async function createSpeechStates(adapter) {
27
27
  role: 'switch',
28
28
  read: true,
29
29
  write: true,
30
+ persist: true, // dauerhaft speichern
30
31
  },
31
32
  native: {},
32
33
  });
33
- await adapter.setStateAsync('speech.active', {
34
- val: adapter.config.speech_active ?? false,
35
- ack: true,
36
- });
34
+
35
+ // Prüfen, ob bereits ein persistierter Wert existiert
36
+ const existingSpeechActive = await adapter.getStateAsync('speech.active');
37
+ if (existingSpeechActive === null || existingSpeechActive.val === null || existingSpeechActive.val === undefined) {
38
+ await adapter.setStateAsync('speech.active', {
39
+ val: adapter.config.speech_active ?? false,
40
+ ack: true,
41
+ });
42
+ }
37
43
 
38
44
  // Letzter gesprochener Text
39
45
  await adapter.setObjectNotExistsAsync('speech.last_text', {
@@ -107,8 +113,9 @@ async function createSpeechStates(adapter) {
107
113
  type: 'boolean',
108
114
  role: 'indicator',
109
115
  read: true,
110
- write: true,
116
+ write: false,
111
117
  hidden: true, // unsichtbar im Admin
118
+ dontShow: true,
112
119
  },
113
120
  native: {},
114
121
  });
@@ -120,8 +127,9 @@ async function createSpeechStates(adapter) {
120
127
  type: 'boolean',
121
128
  role: 'indicator',
122
129
  read: true,
123
- write: true,
130
+ write: false,
124
131
  hidden: true, // unsichtbar im Admin
132
+ dontShow: true,
125
133
  },
126
134
  native: {},
127
135
  });
@@ -133,11 +141,29 @@ async function createSpeechStates(adapter) {
133
141
  type: 'boolean',
134
142
  role: 'indicator',
135
143
  read: true,
136
- write: true,
144
+ write: false,
137
145
  hidden: true, // unsichtbar im Admin
146
+ dontShow: true,
138
147
  },
139
148
  native: {},
140
149
  });
150
+
151
+ // --- Sicherstellen, dass bestehende Installationen nachträglich korrigiert werden ---
152
+ const hiddenStates = ['speech.solar_active', 'speech.time_active', 'speech.frost_active'];
153
+ for (const id of hiddenStates) {
154
+ try {
155
+ await adapter.extendObjectAsync(id, {
156
+ common: {
157
+ hidden: true,
158
+ dontShow: true,
159
+ write: false,
160
+ },
161
+ });
162
+ } catch (err) {
163
+ adapter.log.warn(`[speechStates] Konnte hidden-Flag für ${id} nicht setzen: ${err.message}`);
164
+ }
165
+ }
166
+ adapter.log.debug('[speechStates] Hidden-Flags für Solar/Time/Frost geprüft und aktualisiert');
141
167
  }
142
168
 
143
169
  module.exports = {
@@ -169,7 +169,7 @@ async function createStatusStates(adapter) {
169
169
  });
170
170
  await adapter.setStateAsync('status.system_warning_text', { val: '', ack: true });
171
171
 
172
- // Saisonstatus
172
+ // Saisonstatus (mit Persist-Schutz)
173
173
  await adapter.setObjectNotExistsAsync('status.season_active', {
174
174
  type: 'state',
175
175
  common: {
@@ -178,10 +178,16 @@ async function createStatusStates(adapter) {
178
178
  role: 'switch',
179
179
  read: true,
180
180
  write: true,
181
+ persist: true, // dauerhaft speichern
181
182
  },
182
183
  native: {},
183
184
  });
184
- await adapter.setStateAsync('status.season_active', { val: false, ack: true });
185
+
186
+ // Prüfen, ob bereits ein persistierter Wert existiert
187
+ const existingSeasonActive = await adapter.getStateAsync('status.season_active');
188
+ if (existingSeasonActive === null || existingSeasonActive.val === null || existingSeasonActive.val === undefined) {
189
+ await adapter.setStateAsync('status.season_active', { val: false, ack: true });
190
+ }
185
191
  }
186
192
 
187
193
  module.exports = {
package/main.js CHANGED
@@ -9,6 +9,8 @@ const temperatureHelper = require('./lib/helpers/temperatureHelper');
9
9
  const timeHelper = require('./lib/helpers/timeHelper');
10
10
  const runtimeHelper = require('./lib/helpers/runtimeHelper');
11
11
  const pumpHelper = require('./lib/helpers/pumpHelper');
12
+ const pumpHelper2 = require('./lib/helpers/pumpHelper2');
13
+ const pumpHelper3 = require('./lib/helpers/pumpHelper3');
12
14
  const speechHelper = require('./lib/helpers/speechHelper');
13
15
  const consumptionHelper = require('./lib/helpers/consumptionHelper');
14
16
  const solarHelper = require('./lib/helpers/solarHelper');
@@ -18,8 +20,11 @@ const controlHelper = require('./lib/helpers/controlHelper');
18
20
  const controlHelper2 = require('./lib/helpers/controlHelper2');
19
21
  const debugLogHelper = require('./lib/helpers/debugLogHelper');
20
22
  const speechTextHelper = require('./lib/helpers/speechTextHelper');
23
+ const migrationHelper = require('./lib/helpers/migrationHelper');
21
24
  const { createTemperatureStates } = require('./lib/stateDefinitions/temperatureStates');
22
25
  const { createPumpStates } = require('./lib/stateDefinitions/pumpStates');
26
+ const { createPumpStates2 } = require('./lib/stateDefinitions/pumpStates2');
27
+ const { createPumpStates3 } = require('./lib/stateDefinitions/pumpStates3');
23
28
  const { createSolarStates } = require('./lib/stateDefinitions/solarStates');
24
29
  const { createGeneralStates } = require('./lib/stateDefinitions/generalStates');
25
30
  const { createTimeStates } = require('./lib/stateDefinitions/timeStates');
@@ -29,6 +34,7 @@ const { createConsumptionStates } = require('./lib/stateDefinitions/consumptionS
29
34
  const { createStatusStates } = require('./lib/stateDefinitions/statusStates');
30
35
  const { createControlStates } = require('./lib/stateDefinitions/controlStates');
31
36
  const { createDebugLogStates } = require('./lib/stateDefinitions/debugLogStates');
37
+ const { createHardwareStates } = require('./lib/stateDefinitions/hardwareStates');
32
38
 
33
39
  class Poolcontrol extends utils.Adapter {
34
40
  constructor(options) {
@@ -49,6 +55,8 @@ class Poolcontrol extends utils.Adapter {
49
55
 
50
56
  // --- Pumpe ---
51
57
  await createPumpStates(this);
58
+ await createPumpStates2(this);
59
+ await createPumpStates3(this);
52
60
 
53
61
  // --- Temperaturverwaltung ---
54
62
  await createTemperatureStates(this);
@@ -80,14 +88,22 @@ class Poolcontrol extends utils.Adapter {
80
88
  // --- Control States ---
81
89
  await createControlStates(this);
82
90
 
83
- // --- DebugLog Staets ---
91
+ // --- DebugLog States ---
84
92
  await createDebugLogStates(this);
85
93
 
94
+ // --- Hardware States ---
95
+ await createHardwareStates(this);
96
+
97
+ // --- Migration Helper zuletzt starten ---
98
+ await migrationHelper.init(this);
99
+
86
100
  // --- Helper starten ---
87
101
  temperatureHelper.init(this);
88
102
  timeHelper.init(this);
89
103
  runtimeHelper.init(this);
90
104
  pumpHelper.init(this);
105
+ pumpHelper2.init(this);
106
+ pumpHelper3.init(this);
91
107
  speechHelper.init(this);
92
108
  consumptionHelper.init(this);
93
109
  solarHelper.init(this);
@@ -113,6 +129,12 @@ class Poolcontrol extends utils.Adapter {
113
129
  if (pumpHelper.cleanup) {
114
130
  pumpHelper.cleanup();
115
131
  }
132
+ if (pumpHelper2.cleanup) {
133
+ pumpHelper2.cleanup();
134
+ }
135
+ if (pumpHelper3.cleanup) {
136
+ pumpHelper3.cleanup();
137
+ }
116
138
  if (speechHelper.cleanup) {
117
139
  speechHelper.cleanup();
118
140
  }
@@ -173,6 +195,17 @@ class Poolcontrol extends utils.Adapter {
173
195
  } catch (e) {
174
196
  this.log.warn(`[pumpHelper] Fehler in handleStateChange: ${e.message}`);
175
197
  }
198
+ try {
199
+ pumpHelper2.handleStateChange(id, state);
200
+ } catch (e) {
201
+ this.log.warn(`[pumpHelper2] Fehler in handleStateChange: ${e.message}`);
202
+ }
203
+ try {
204
+ pumpHelper3.handleStateChange(id, state);
205
+ } catch (e) {
206
+ this.log.warn(`[pumpHelper3] Fehler in handleStateChange: ${e.message}`);
207
+ }
208
+
176
209
  try {
177
210
  speechHelper.handleStateChange(id, state);
178
211
  } catch (e) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.poolcontrol",
3
- "version": "0.2.2",
3
+ "version": "0.3.1",
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",