iobroker.poolcontrol 1.3.19 → 1.3.20
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 +8 -17
- package/io-package.json +14 -14
- package/lib/stateDefinitions/timeStates.js +26 -16
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -188,6 +188,14 @@ New features are added regularly – please refer to the changelog.
|
|
|
188
188
|
---
|
|
189
189
|
|
|
190
190
|
## Changelog
|
|
191
|
+
### 1.3.20 (2026-05-13)
|
|
192
|
+
|
|
193
|
+
- Added runtime self-healing for missed pump start events.
|
|
194
|
+
- Stabilized runtime and circulation calculations for delayed or filtered pump switch updates.
|
|
195
|
+
- Fixed a rare synchronization issue where circulation counting could stop although pump live values were still available.
|
|
196
|
+
- Protected time control states from being overwritten during adapter updates.
|
|
197
|
+
- Preserved configured time windows, start/end times and weekdays during adapter reinstallations or updates.
|
|
198
|
+
|
|
191
199
|
### 1.3.19 (2026-05-13)
|
|
192
200
|
|
|
193
201
|
- Added runtime self-healing for missed pump start events
|
|
@@ -262,23 +270,6 @@ New features are added regularly – please refer to the changelog.
|
|
|
262
270
|
- extended pH helper with history, trend and summary logic
|
|
263
271
|
- existing pH input, evaluation and mix-run logic remain backward compatible
|
|
264
272
|
|
|
265
|
-
### 1.3.15 (2026-05-08)
|
|
266
|
-
|
|
267
|
-
- Added speech source cooldown handling for solar and time announcements
|
|
268
|
-
- Added configurable `speech.sources.*` states for source-based speech control
|
|
269
|
-
- Reduced excessive solar speech notifications during unstable weather conditions
|
|
270
|
-
- Added persistent numeric runtime second states:
|
|
271
|
-
- `runtime.total_seconds`
|
|
272
|
-
- `runtime.today_seconds`
|
|
273
|
-
- `runtime.current_session_seconds`
|
|
274
|
-
- `runtime.season_total_seconds`
|
|
275
|
-
- Improved runtime restore handling using numeric fallback logic
|
|
276
|
-
- Fixed live runtime display consistency for total, today and season runtimes
|
|
277
|
-
- Improved season runtime handling using `status.season_active`
|
|
278
|
-
- Converted runtime helper timers to ioBroker adapter timer methods
|
|
279
|
-
- Improved runtime timer cleanup and reset protection
|
|
280
|
-
- Improved speech logging for skipped and cooldown-limited announcements
|
|
281
|
-
|
|
282
273
|
## Support
|
|
283
274
|
- [ioBroker Forum](https://forum.iobroker.net/)
|
|
284
275
|
- [GitHub Issues](https://github.com/DasBo1975/ioBroker.poolcontrol/issues)
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "poolcontrol",
|
|
4
|
-
"version": "1.3.
|
|
4
|
+
"version": "1.3.20",
|
|
5
5
|
"news": {
|
|
6
|
+
"1.3.20": {
|
|
7
|
+
"en": "Added runtime self-healing for missed pump start events and protected time control states from being overwritten during adapter updates.",
|
|
8
|
+
"de": "Runtime-Selbstheilung für verpasste Pumpenstart-Ereignisse ergänzt und Zeitsteuerungs-Datenpunkte vor dem Überschreiben bei Adapter-Updates geschützt.",
|
|
9
|
+
"ru": "Добавлено самовосстановление во время выполнения для пропущенных событий запуска насоса и защищены состояния контроля времени от перезаписи во время обновлений адаптера.",
|
|
10
|
+
"pt": "Adicionada autocorreção em tempo de execução para eventos de inicialização de bomba perdidos e estados de controle de tempo protegidos contra substituição durante atualizações do adaptador.",
|
|
11
|
+
"nl": "Zelfherstel tijdens runtime toegevoegd voor gemiste pompstartgebeurtenissen en beschermde tijdcontrolestatussen tegen overschrijving tijdens adapterupdates.",
|
|
12
|
+
"fr": "Ajout de l'auto-réparation au moment de l'exécution pour les événements de démarrage de pompe manqués et des états de contrôle du temps protégés contre l'écrasement lors des mises à jour de l'adaptateur.",
|
|
13
|
+
"it": "Aggiunta l'autoriparazione del runtime per gli eventi di mancato avvio della pompa e gli stati di controllo temporale protetti dalla sovrascrittura durante gli aggiornamenti dell'adattatore.",
|
|
14
|
+
"es": "Se agregó autorreparación en tiempo de ejecución para eventos de inicio de bomba perdidos y estados de control de tiempo protegidos para que no se sobrescriban durante las actualizaciones del adaptador.",
|
|
15
|
+
"pl": "Dodano funkcję samonaprawy w czasie wykonywania w przypadku nieodebranych zdarzeń uruchomienia pompy i zabezpieczono stany kontroli czasu przed nadpisaniem podczas aktualizacji adaptera.",
|
|
16
|
+
"uk": "Додано самовідновлення під час виконання для пропущених подій запуску насоса та захищено стани керування часом від перезапису під час оновлення адаптера.",
|
|
17
|
+
"zh-cn": "添加了针对错过的泵启动事件的运行时自我修复,并保护时间控制状态在适配器更新期间不被覆盖。"
|
|
18
|
+
},
|
|
6
19
|
"1.3.19": {
|
|
7
20
|
"en": "Added runtime self-healing for missed pump start events. Stabilized runtime and circulation calculations for delayed or filtered pump switch updates. Fixed a rare synchronization issue where circulation counting could stop although pump live values were still available. Improved internal runtime synchronization.",
|
|
8
21
|
"de": "Runtime-Selbstheilung für verpasste Pumpenstart-Ereignisse ergänzt. Laufzeit- und Umwälzberechnung bei verzögerten oder gefilterten Pumpenschalter-Updates stabilisiert. Seltenen Synchronisationsfehler behoben, bei dem die Umwälzberechnung trotz aktiver Pumpen-Livewerte stehen bleiben konnte. Interne Runtime-Synchronisierung verbessert.",
|
|
@@ -54,19 +67,6 @@
|
|
|
54
67
|
"pl": "Poprawiona stabilność systemu mowy, ustabilizowana trwałość czasu działania, zmniejszona liczba powtarzających się powiadomień słonecznych, stałe obliczanie cyrkulacji w trybie czasowym i przygotowany nowy obszar analizy chemicznej ORP/Redox.",
|
|
55
68
|
"uk": "Покращена стабільність мовної системи, стабілізована стійкість під час виконання, зменшено кількість повторюваних сонячних сповіщень, виправлено обчислення циркуляції в часовому режимі та підготовлено нову область аналізу ORP/Redox.",
|
|
56
69
|
"zh-cn": "提高了语音系统的稳定性,稳定了运行时间的持久性,减少了重复的太阳通知,修复了时间模式下的循环计算,并准备了新的ORP/氧化还原化学分析区域。"
|
|
57
|
-
},
|
|
58
|
-
"1.3.15": {
|
|
59
|
-
"en": "Added speech source cooldown handling, improved solar/time speech control, added persistent runtime second states, improved runtime restore logic and converted runtime timers to ioBroker adapter timers.",
|
|
60
|
-
"de": "Sprachquellen mit Cooldown-Steuerung ergänzt, Solar-/Zeit-Sprachsteuerung verbessert, persistente Runtime-Sekundenstates hinzugefügt, Runtime-Wiederherstellung verbessert und Runtime-Timer auf ioBroker-Adapter-Timer umgestellt.",
|
|
61
|
-
"ru": "Добавлена обработка перезарядки источника речи, улучшено управление речью по солнечной энергии и времени, добавлены постоянные секунды времени выполнения, улучшена логика восстановления времени выполнения и преобразованы таймеры времени выполнения в таймеры адаптера ioBroker.",
|
|
62
|
-
"pt": "Adicionado tratamento de resfriamento da fonte de fala, controle de fala solar/tempo aprimorado, segundos estados de tempo de execução persistentes adicionados, lógica de restauração de tempo de execução aprimorada e temporizadores de tempo de execução convertidos em temporizadores de adaptador ioBroker.",
|
|
63
|
-
"nl": "Afkoeling van spraakbronnen toegevoegd, verbeterde spraakcontrole op zonne-energie/tijd, persistente tweede runtime-statussen toegevoegd, verbeterde runtime-herstellogica en geconverteerde runtime-timers naar ioBroker-adaptertimers.",
|
|
64
|
-
"fr": "Ajout de la gestion du temps de recharge de la source vocale, du contrôle vocal solaire/temporel amélioré, ajout des seconds états d'exécution persistants, amélioration de la logique de restauration de l'exécution et conversion des minuteries d'exécution en minuteries d'adaptateur ioBroker.",
|
|
65
|
-
"it": "Aggiunta la gestione del raffreddamento della sorgente vocale, controllo vocale solare/ora migliorato, aggiunti secondi stati di runtime persistenti, logica di ripristino del runtime migliorata e timer di runtime convertiti in timer dell'adattatore ioBroker.",
|
|
66
|
-
"es": "Se agregó manejo de enfriamiento de la fuente de voz, control de voz solar/tiempo mejorado, se agregaron segundos estados de tiempo de ejecución persistentes, lógica de restauración de tiempo de ejecución mejorada y temporizadores de tiempo de ejecución convertidos en temporizadores de adaptador ioBroker.",
|
|
67
|
-
"pl": "Dodano obsługę schładzania źródła mowy, ulepszoną kontrolę mowy w czasie słonecznym/czasem, dodano trwałe drugie stany czasu wykonania, ulepszoną logikę przywracania w czasie wykonywania i przekonwertowano liczniki czasu działania na liczniki czasu adaptera ioBroker.",
|
|
68
|
-
"uk": "Додано обробку перезарядки джерела мовлення, покращено керування мовленням із сонячними променями/часом, додано постійні другі стани під час виконання, покращено логіку відновлення під час виконання та перетворено таймери часу виконання на таймери адаптера ioBroker.",
|
|
69
|
-
"zh-cn": "添加了语音源冷却处理、改进了太阳/时间语音控制、添加了持久运行时第二状态、改进了运行时恢复逻辑并将运行时计时器转换为 ioBroker 适配器计时器。"
|
|
70
70
|
}
|
|
71
71
|
},
|
|
72
72
|
"titleLang": {
|
|
@@ -21,6 +21,16 @@ async function createTimeStates(adapter) {
|
|
|
21
21
|
native: {},
|
|
22
22
|
});
|
|
23
23
|
|
|
24
|
+
async function setInitialStateIfMissing(id, value) {
|
|
25
|
+
const current = await adapter.getStateAsync(id);
|
|
26
|
+
if (!current || current.val === null || current.val === undefined) {
|
|
27
|
+
await adapter.setStateAsync(id, {
|
|
28
|
+
val: value,
|
|
29
|
+
ack: true,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
24
34
|
async function createTimeWindow(prefix, label) {
|
|
25
35
|
// Aktiv
|
|
26
36
|
await adapter.setObjectNotExistsAsync(`timecontrol.${prefix}_active`, {
|
|
@@ -38,13 +48,13 @@ async function createTimeStates(adapter) {
|
|
|
38
48
|
role: 'switch',
|
|
39
49
|
read: true,
|
|
40
50
|
write: true,
|
|
51
|
+
persist: true,
|
|
41
52
|
},
|
|
42
53
|
native: {},
|
|
43
54
|
});
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
});
|
|
55
|
+
|
|
56
|
+
// FIX: Initialwert nur setzen, wenn noch kein Statewert vorhanden ist
|
|
57
|
+
await setInitialStateIfMissing(`timecontrol.${prefix}_active`, !!adapter.config[`${prefix}_active`]);
|
|
48
58
|
|
|
49
59
|
// Startzeit
|
|
50
60
|
await adapter.setObjectNotExistsAsync(`timecontrol.${prefix}_start`, {
|
|
@@ -62,13 +72,12 @@ async function createTimeStates(adapter) {
|
|
|
62
72
|
role: 'level',
|
|
63
73
|
read: true,
|
|
64
74
|
write: true,
|
|
75
|
+
persist: true,
|
|
65
76
|
},
|
|
66
77
|
native: {},
|
|
67
78
|
});
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
ack: true,
|
|
71
|
-
});
|
|
79
|
+
// FIX: Initialwert nur setzen, wenn noch kein Statewert vorhanden ist
|
|
80
|
+
await setInitialStateIfMissing(`timecontrol.${prefix}_start`, adapter.config[`${prefix}_start`] || '00:00');
|
|
72
81
|
|
|
73
82
|
// Endzeit
|
|
74
83
|
await adapter.setObjectNotExistsAsync(`timecontrol.${prefix}_end`, {
|
|
@@ -86,13 +95,12 @@ async function createTimeStates(adapter) {
|
|
|
86
95
|
role: 'level',
|
|
87
96
|
read: true,
|
|
88
97
|
write: true,
|
|
98
|
+
persist: true,
|
|
89
99
|
},
|
|
90
100
|
native: {},
|
|
91
101
|
});
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
ack: true,
|
|
95
|
-
});
|
|
102
|
+
// FIX: Initialwert nur setzen, wenn noch kein Statewert vorhanden ist
|
|
103
|
+
await setInitialStateIfMissing(`timecontrol.${prefix}_end`, adapter.config[`${prefix}_end`] || '00:00');
|
|
96
104
|
|
|
97
105
|
// Wochentage
|
|
98
106
|
const days = [
|
|
@@ -121,13 +129,15 @@ async function createTimeStates(adapter) {
|
|
|
121
129
|
role: 'switch',
|
|
122
130
|
read: true,
|
|
123
131
|
write: true,
|
|
132
|
+
persist: true,
|
|
124
133
|
},
|
|
125
134
|
native: {},
|
|
126
135
|
});
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
136
|
+
// FIX: Initialwert nur setzen, wenn noch kein Statewert vorhanden ist
|
|
137
|
+
await setInitialStateIfMissing(
|
|
138
|
+
`timecontrol.${prefix}_day_${key}`,
|
|
139
|
+
!!adapter.config[`${prefix}_day_${key}`],
|
|
140
|
+
);
|
|
131
141
|
}
|
|
132
142
|
}
|
|
133
143
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.poolcontrol",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.20",
|
|
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",
|