iobroker.poolcontrol 1.3.18 → 1.3.19
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 +7 -8
- package/io-package.json +14 -14
- package/lib/helpers/runtimeHelper.js +51 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -188,6 +188,13 @@ New features are added regularly – please refer to the changelog.
|
|
|
188
188
|
---
|
|
189
189
|
|
|
190
190
|
## Changelog
|
|
191
|
+
### 1.3.19 (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
|
+
- Improved internal runtime synchronization
|
|
197
|
+
|
|
191
198
|
### 1.3.18 (2026-05-11)
|
|
192
199
|
|
|
193
200
|
- Fixed incorrect date display in the pH, ORP and TDS areas.
|
|
@@ -272,14 +279,6 @@ New features are added regularly – please refer to the changelog.
|
|
|
272
279
|
- Improved runtime timer cleanup and reset protection
|
|
273
280
|
- Improved speech logging for skipped and cooldown-limited announcements
|
|
274
281
|
|
|
275
|
-
### 1.3.14 (2026-05-08)
|
|
276
|
-
|
|
277
|
-
- Improved runtime handling and persistence
|
|
278
|
-
- Fixed season runtime calculation using the correct season state
|
|
279
|
-
- Unified live runtime calculations for total, today and season values
|
|
280
|
-
- Added numeric runtime second states for robust persistence and recovery
|
|
281
|
-
- Converted runtime timers to adapter-managed timers for improved ioBroker compatibility
|
|
282
|
-
|
|
283
282
|
## Support
|
|
284
283
|
- [ioBroker Forum](https://forum.iobroker.net/)
|
|
285
284
|
- [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.19",
|
|
5
5
|
"news": {
|
|
6
|
+
"1.3.19": {
|
|
7
|
+
"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
|
+
"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.",
|
|
9
|
+
"ru": "Добавлено самовосстановление во время выполнения для пропущенных событий запуска насоса. Стабилизированные расчеты времени работы и циркуляции для отложенных или отфильтрованных обновлений переключателей насосов. Исправлена редкая проблема синхронизации, из-за которой подсчет циркуляции мог остановиться, хотя текущие значения насоса все еще были доступны. Улучшена внутренняя синхронизация времени выполнения.",
|
|
10
|
+
"pt": "Adicionada autocorreção em tempo de execução para eventos de inicialização de bomba perdidos. Cálculos de tempo de execução e circulação estabilizados para atualizações de interruptores de bomba filtrados ou atrasados. Foi corrigido um raro problema de sincronização em que a contagem de circulação poderia parar embora os valores ativos da bomba ainda estivessem disponíveis. Sincronização de tempo de execução interna aprimorada.",
|
|
11
|
+
"nl": "Zelfherstel tijdens runtime toegevoegd voor gemiste pompstartgebeurtenissen. Gestabiliseerde looptijd- en circulatieberekeningen voor vertraagde of gefilterde updates van pompschakelaars. Er is een zeldzaam synchronisatieprobleem opgelost waarbij het tellen van de circulatie kon stoppen, hoewel de live-waarden van de pomp nog steeds beschikbaar waren. Verbeterde interne runtime-synchronisatie.",
|
|
12
|
+
"fr": "Ajout de l'auto-réparation du temps d'exécution pour les événements de démarrage de pompe manqués. Calculs de temps de fonctionnement et de circulation stabilisés pour les mises à jour retardées ou filtrées des interrupteurs de pompe. Correction d'un problème de synchronisation rare où le comptage de circulation pouvait s'arrêter même si les valeurs en direct de la pompe étaient toujours disponibles. Synchronisation d'exécution interne améliorée.",
|
|
13
|
+
"it": "Aggiunta l'autoriparazione del tempo di esecuzione per gli eventi di avvio della pompa mancati. Calcoli di autonomia e circolazione stabilizzati per aggiornamenti ritardati o filtrati dell'interruttore della pompa. Risolto un raro problema di sincronizzazione per cui il conteggio della circolazione poteva interrompersi anche se i valori in tempo reale della pompa erano ancora disponibili. Sincronizzazione runtime interna migliorata.",
|
|
14
|
+
"es": "Se agregó autorreparación en tiempo de ejecución para eventos de inicio de bomba perdidos. Cálculos de circulación y tiempo de funcionamiento estabilizados para actualizaciones retrasadas o filtradas del interruptor de la bomba. Se solucionó un problema de sincronización poco común por el cual el conteo de circulación podía detenerse aunque los valores activos de la bomba todavía estaban disponibles. Sincronización interna del tiempo de ejecución mejorada.",
|
|
15
|
+
"pl": "Dodano funkcję samonaprawy w czasie wykonywania w przypadku zdarzeń związanych z nieudanym uruchomieniem pompy. Stabilizowane obliczenia czasu pracy i cyrkulacji dla opóźnionych lub filtrowanych aktualizacji przełączników pomp. Naprawiono rzadki problem z synchronizacją, w wyniku którego zliczanie cyrkulacji mogło zostać zatrzymane, mimo że wartości bieżące pompy były nadal dostępne. Ulepszona wewnętrzna synchronizacja środowiska wykonawczego.",
|
|
16
|
+
"uk": "Додано самовідновлення під час виконання для пропущених подій запуску насоса. Стабілізований час роботи та обчислення циркуляції для відкладених або фільтрованих оновлень перемикача насоса. Виправлено рідкісну проблему синхронізації, через яку підрахунок циркуляції міг припинитися, хоча поточні значення насоса все ще були доступні. Покращена внутрішня синхронізація часу виконання.",
|
|
17
|
+
"zh-cn": "为错过的泵启动事件添加了运行时自我修复功能。延迟或过滤泵开关更新的稳定运行时间和循环计算。修复了一个罕见的同步问题,即尽管泵的实时值仍然可用,但循环计数可能会停止。改进了内部运行时同步。"
|
|
18
|
+
},
|
|
6
19
|
"1.3.18": {
|
|
7
20
|
"en": "Fixed incorrect date display for pH, ORP and TDS time states by storing value.time states as numeric timestamps.",
|
|
8
21
|
"de": "Falsche Datumsanzeige für pH-, ORP- und TDS-Zeitzustände behoben, indem value.time-Zustände als numerische Zeitstempel gespeichert wurden.",
|
|
@@ -54,19 +67,6 @@
|
|
|
54
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.",
|
|
55
68
|
"uk": "Додано обробку перезарядки джерела мовлення, покращено керування мовленням із сонячними променями/часом, додано постійні другі стани під час виконання, покращено логіку відновлення під час виконання та перетворено таймери часу виконання на таймери адаптера ioBroker.",
|
|
56
69
|
"zh-cn": "添加了语音源冷却处理、改进了太阳/时间语音控制、添加了持久运行时第二状态、改进了运行时恢复逻辑并将运行时计时器转换为 ioBroker 适配器计时器。"
|
|
57
|
-
},
|
|
58
|
-
"1.3.14": {
|
|
59
|
-
"en": "Improved runtime handling and persistence. Fixed season runtime calculation to use the correct season state, improved live runtime updates, added robust numeric runtime second states for safer persistence and recovery, and converted runtime timers to adapter-managed timers for better ioBroker compatibility.",
|
|
60
|
-
"de": "Laufzeit-Handling und Persistenz verbessert. Saisonlaufzeit nutzt jetzt den korrekten Saison-Status, Live-Laufzeiten wurden vereinheitlicht, robuste Sekunden-States fuer Laufzeiten zur sicheren Wiederherstellung hinzugefuegt und Runtime-Timer auf adapterverwaltete Timer fuer bessere ioBroker-Kompatibilitaet umgestellt.",
|
|
61
|
-
"ru": "Улучшена обработка и сохранение во время выполнения. Исправлен расчет времени выполнения сезона для использования правильного состояния сезона, улучшены обновления времени выполнения в режиме реального времени, добавлены надежные числовые значения второго состояния времени выполнения для более безопасного сохранения и восстановления, а также преобразованы таймеры времени выполнения в таймеры, управляемые адаптером, для лучшей совместимости с ioBroker.",
|
|
62
|
-
"pt": "Melhor manipulação e persistência do tempo de execução. Cálculo de tempo de execução de temporada corrigido para usar o estado de temporada correto, atualizações de tempo de execução ao vivo aprimoradas, segundos estados de tempo de execução numéricos robustos adicionados para persistência e recuperação mais seguras e temporizadores de tempo de execução convertidos em temporizadores gerenciados por adaptador para melhor compatibilidade com ioBroker.",
|
|
63
|
-
"nl": "Verbeterde runtime-afhandeling en persistentie. Vaste seizoensruntimeberekening om de juiste seizoensstatus te gebruiken, verbeterde live runtime-updates, robuuste numerieke runtime-secondestatussen toegevoegd voor veiliger persistentie en herstel, en geconverteerde runtime-timers naar door adapter beheerde timers voor betere ioBroker-compatibiliteit.",
|
|
64
|
-
"fr": "Gestion de l'exécution et persistance améliorées. Correction du calcul de la durée d'exécution de la saison pour utiliser l'état de saison correct, mises à jour d'exécution en direct améliorées, ajout de seconds états d'exécution numériques robustes pour une persistance et une récupération plus sûres, et conversion des minuteries d'exécution en minuteries gérées par l'adaptateur pour une meilleure compatibilité ioBroker.",
|
|
65
|
-
"it": "Gestione e persistenza del runtime migliorate. Risolto il problema con il calcolo del runtime della stagione per utilizzare lo stato della stagione corretto, aggiornamenti migliorati del runtime in tempo reale, aggiunti robusti secondi stati di runtime numerici per persistenza e ripristino più sicuri e timer di runtime convertiti in timer gestiti dall'adattatore per una migliore compatibilità con ioBroker.",
|
|
66
|
-
"es": "Manejo y persistencia del tiempo de ejecución mejorados. Se corrigió el cálculo del tiempo de ejecución de la temporada para usar el estado correcto de la temporada, se mejoraron las actualizaciones del tiempo de ejecución en vivo, se agregaron segundos estados de tiempo de ejecución numéricos sólidos para una persistencia y recuperación más seguras y se convirtieron los temporizadores de tiempo de ejecución en temporizadores administrados por adaptador para una mejor compatibilidad con ioBroker.",
|
|
67
|
-
"pl": "Poprawiona obsługa i trwałość środowiska wykonawczego. Naprawiono obliczanie czasu wykonania sezonu w celu wykorzystania prawidłowego stanu sezonu, ulepszono aktualizacje czasu działania na żywo, dodano solidne numeryczne drugie stany czasu działania dla bezpieczniejszej trwałości i odzyskiwania oraz przekonwertowano liczniki czasu działania na zegary zarządzane przez adapter dla lepszej kompatybilności z ioBroker.",
|
|
68
|
-
"uk": "Покращена обробка та збереження часу виконання. Виправлено розрахунок часу виконання сезону для використання правильного стану сезону, покращено поточні оновлення середовища виконання, додано надійні численні секунди часу виконання для безпечнішого збереження та відновлення, а також перетворено таймери часу виконання на таймери, керовані адаптером, для кращої сумісності з ioBroker.",
|
|
69
|
-
"zh-cn": "改进了运行时处理和持久性。修复了季节运行时计算以使用正确的季节状态,改进了实时运行时更新,添加了强大的数字运行时第二状态以实现更安全的持久性和恢复,并将运行时计时器转换为适配器管理的计时器以实现更好的 ioBroker 兼容性。"
|
|
70
70
|
}
|
|
71
71
|
},
|
|
72
72
|
"titleLang": {
|
|
@@ -21,6 +21,7 @@ const runtimeHelper = {
|
|
|
21
21
|
restoreTimer: null, // FIX: ioBroker timer for delayed restore
|
|
22
22
|
resetTimer: null,
|
|
23
23
|
liveTimer: null, // Timer für Live-Updates
|
|
24
|
+
syncTimer: null, // FIX: Timer zur Selbstheilung bei verpasstem Pumpenstart/-stopp
|
|
24
25
|
|
|
25
26
|
/**
|
|
26
27
|
* Initialisiert den Runtime-Helper.
|
|
@@ -54,6 +55,9 @@ const runtimeHelper = {
|
|
|
54
55
|
// Tagesreset einplanen
|
|
55
56
|
this._scheduleDailyReset();
|
|
56
57
|
|
|
58
|
+
// FIX: Start sync timer to recover from missed pump start/stop events
|
|
59
|
+
this._startSyncTimer();
|
|
60
|
+
|
|
57
61
|
// Erst nach Restore einmal berechnen
|
|
58
62
|
this._updateStates();
|
|
59
63
|
|
|
@@ -62,6 +66,10 @@ const runtimeHelper = {
|
|
|
62
66
|
.catch(err => {
|
|
63
67
|
this.adapter.log.warn(`[runtimeHelper] Restore failed: ${err.message}`);
|
|
64
68
|
this._scheduleDailyReset();
|
|
69
|
+
|
|
70
|
+
// FIX: Start sync timer to recover from missed pump start/stop events
|
|
71
|
+
this._startSyncTimer();
|
|
72
|
+
|
|
65
73
|
this._updateStates();
|
|
66
74
|
this.adapter.log.debug('[runtimeHelper] Initialized (without restore)');
|
|
67
75
|
});
|
|
@@ -112,7 +120,7 @@ const runtimeHelper = {
|
|
|
112
120
|
this.lastOn = Date.now();
|
|
113
121
|
this.startCountToday += 1;
|
|
114
122
|
|
|
115
|
-
// Live-Timer starten (
|
|
123
|
+
// Live-Timer starten (alle 10 Sekunden)
|
|
116
124
|
this._startLiveTimer();
|
|
117
125
|
|
|
118
126
|
// Start sofort in State schreiben
|
|
@@ -389,6 +397,43 @@ const runtimeHelper = {
|
|
|
389
397
|
}
|
|
390
398
|
},
|
|
391
399
|
|
|
400
|
+
_startSyncTimer() {
|
|
401
|
+
if (this.syncTimer) {
|
|
402
|
+
this.adapter.clearInterval(this.syncTimer);
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
this.syncTimer = this.adapter.setInterval(() => this._syncPumpRuntimeState(), 30 * 1000);
|
|
406
|
+
this.adapter.log.debug('[runtimeHelper] FIX: Runtime sync timer started (checks every 30 seconds)');
|
|
407
|
+
},
|
|
408
|
+
|
|
409
|
+
async _syncPumpRuntimeState() {
|
|
410
|
+
try {
|
|
411
|
+
const pumpState = await this.adapter.getStateAsync('pump.pump_switch');
|
|
412
|
+
const pumpOn = pumpState?.val === true;
|
|
413
|
+
|
|
414
|
+
if (pumpOn && (!this.isRunning || !this.lastOn)) {
|
|
415
|
+
this.adapter.log.debug(
|
|
416
|
+
'[runtimeHelper] FIX: Pump switch is ON but runtime was not running. Synchronizing runtime start.',
|
|
417
|
+
);
|
|
418
|
+
await this.handleStateChange('pump.pump_switch', { val: true, ack: true });
|
|
419
|
+
return;
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
// FIX: Stop synchronization is intentionally not handled here.
|
|
423
|
+
// A missed stop event could otherwise cause duplicate runtime accounting
|
|
424
|
+
// during parallel async stop handling. Normal stop events are still handled
|
|
425
|
+
// through handleStateChange().
|
|
426
|
+
// if (!pumpOn && (this.isRunning || this.lastOn)) {
|
|
427
|
+
// this.adapter.log.debug(
|
|
428
|
+
// '[runtimeHelper] FIX: Pump switch is OFF but runtime was still running. Synchronizing runtime stop.',
|
|
429
|
+
// );
|
|
430
|
+
// await this.handleStateChange('pump.pump_switch', { val: false, ack: true });
|
|
431
|
+
// }
|
|
432
|
+
} catch (err) {
|
|
433
|
+
this.adapter.log.warn(`[runtimeHelper] Error while synchronizing pump runtime state: ${err.message}`);
|
|
434
|
+
}
|
|
435
|
+
},
|
|
436
|
+
|
|
392
437
|
cleanup() {
|
|
393
438
|
if (this.restoreTimer) {
|
|
394
439
|
this.adapter.clearTimeout(this.restoreTimer);
|
|
@@ -400,6 +445,11 @@ const runtimeHelper = {
|
|
|
400
445
|
this.resetTimer = null;
|
|
401
446
|
}
|
|
402
447
|
|
|
448
|
+
if (this.syncTimer) {
|
|
449
|
+
this.adapter.clearInterval(this.syncTimer);
|
|
450
|
+
this.syncTimer = null;
|
|
451
|
+
}
|
|
452
|
+
|
|
403
453
|
this._stopLiveTimer();
|
|
404
454
|
},
|
|
405
455
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.poolcontrol",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.19",
|
|
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",
|