iobroker.poolcontrol 1.3.34 → 1.3.35
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 -6
- package/io-package.json +14 -14
- package/lib/helpers/runtimeHelper.js +12 -9
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -283,6 +283,13 @@ New features are added regularly – please refer to the changelog.
|
|
|
283
283
|
---
|
|
284
284
|
|
|
285
285
|
## Changelog
|
|
286
|
+
### 1.3.35 (2026-06-29)
|
|
287
|
+
|
|
288
|
+
- Fixed an inconsistency in the daily circulation calculation.
|
|
289
|
+
- `circulation.daily_remaining` is now recalculated together with `circulation.daily_required`.
|
|
290
|
+
- Changing the pool size or minimum daily circulation now produces consistent values immediately after adapter restart.
|
|
291
|
+
- The remaining daily circulation is no longer blocked by zero flow or a stopped pump.
|
|
292
|
+
|
|
286
293
|
### 1.3.34 (2026-06-27)
|
|
287
294
|
|
|
288
295
|
- **Major stability improvement:** Completely redesigned the internal chemistry history (pH, ORP and TDS) to prevent unbounded JSON state growth. This significantly reduces the risk of oversized `states.jsonl` files and potential js-controller startup failures.
|
|
@@ -310,12 +317,6 @@ New features are added regularly – please refer to the changelog.
|
|
|
310
317
|
|
|
311
318
|
- Fixed automatic circulation top-up logic when temperature sensors are missing. Automatic top-up is now only blocked by collector/pool temperature comparison when solar control is active and both temperatures are valid.
|
|
312
319
|
|
|
313
|
-
### 1.3.30 (2026-06-05)
|
|
314
|
-
|
|
315
|
-
- Updated release tooling to the required minimum version.
|
|
316
|
-
- Cleaned up outdated Admin i18n keys.
|
|
317
|
-
- Replaced native timers in AI weather helpers with ioBroker adapter timers.
|
|
318
|
-
|
|
319
320
|
## Archived Release History
|
|
320
321
|
|
|
321
322
|
For older releases and archived version history see:
|
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.35",
|
|
5
5
|
"news": {
|
|
6
|
+
"1.3.35": {
|
|
7
|
+
"en": "Fixed daily circulation remaining calculation after changing pool size or minimum daily circulation.",
|
|
8
|
+
"de": "Korrigiert die Berechnung der verbleibenden täglichen Umwälzung nach Änderung von Poolgröße oder Mindestumwälzung.",
|
|
9
|
+
"ru": "Исправлен расчет остатка дневного тиража после изменения размера пула или минимального дневного тиража.",
|
|
10
|
+
"pt": "Corrigido o cálculo restante da circulação diária após alterar o tamanho da piscina ou a circulação diária mínima.",
|
|
11
|
+
"nl": "Vaste berekening van de resterende dagelijkse circulatie na wijziging van de zwembadgrootte of minimale dagelijkse circulatie.",
|
|
12
|
+
"fr": "Calcul de la circulation quotidienne restante fixe après avoir modifié la taille de la piscine ou la circulation quotidienne minimale.",
|
|
13
|
+
"it": "Risolto il problema con il calcolo della circolazione giornaliera rimanente dopo aver modificato le dimensioni della piscina o la circolazione giornaliera minima.",
|
|
14
|
+
"es": "Se corrigió el cálculo de la circulación diaria restante después de cambiar el tamaño de la piscina o la circulación diaria mínima.",
|
|
15
|
+
"pl": "Naprawiono obliczanie pozostałego dziennego obiegu po zmianie wielkości basenu lub minimalnego dziennego obiegu.",
|
|
16
|
+
"uk": "Виправлено розрахунок залишку денного тиражу після зміни розміру пулу або мінімального добового тиражу.",
|
|
17
|
+
"zh-cn": "修复了更改矿池大小或最低每日流通量后每日流通量剩余计算的问题。"
|
|
18
|
+
},
|
|
6
19
|
"1.3.34": {
|
|
7
20
|
"en": "Improved chemistry history architecture with protected short-term and daily history, prevented oversized JSON states, added safeguards against state database growth, enhanced solar logbook/debug log protection, and updated adapter-core dependency.",
|
|
8
21
|
"de": "Chemie-Historie grundlegend verbessert: geschützte Kurzzeit- und Tageshistorie eingeführt, übergroße JSON-States verhindert, Schutz vor unkontrolliertem Wachstum der State-Datenbank ergänzt, Solar-Logbuch und Debug-Log zusätzlich abgesichert sowie adapter-core-Abhängigkeit aktualisiert.",
|
|
@@ -54,19 +67,6 @@
|
|
|
54
67
|
"pl": "Naprawiono logikę automatycznego uzupełniania cyrkulacji w przypadku braku czujników temperatury. Automatyczne uzupełnianie jest teraz blokowane tylko przez porównanie temperatur kolektora/basenu, gdy aktywna jest kontrola solarna i obie temperatury są prawidłowe.",
|
|
55
68
|
"uk": "Виправлена логіка автоматичного доповнення циркуляції, коли датчики температури відсутні. Автоматичне поповнення тепер блокується лише шляхом порівняння температури колектора/басейну, коли активовано сонячне керування та обидві температури дійсні.",
|
|
56
69
|
"zh-cn": "修复了缺少温度传感器时的自动循环充值逻辑。现在,仅当太阳能控制处于活动状态并且两个温度都有效时,自动充值才会被收集器/池温度比较阻止。"
|
|
57
|
-
},
|
|
58
|
-
"1.3.30": {
|
|
59
|
-
"en": "Updated release tooling to the required minimum version. Cleaned up outdated Admin i18n keys. Replaced native timers in AI weather helpers with ioBroker adapter timers.",
|
|
60
|
-
"de": "Release-Werkzeuge auf die erforderliche Mindestversion aktualisiert. Veraltete Admin-i18n-Schlüssel bereinigt. Native Timer in den KI-Wetter-Helpern durch ioBroker-Adapter-Timer ersetzt.",
|
|
61
|
-
"ru": "Обновлены инструменты выпуска до необходимой минимальной версии. Очищены устаревшие ключи администратора i18n. Заменены встроенные таймеры в помощниках погоды AI на таймеры адаптера ioBroker.",
|
|
62
|
-
"pt": "Ferramentas de lançamento atualizadas para a versão mínima exigida. Limpeza de chaves Admin i18n desatualizadas. Temporizadores nativos substituídos em ajudantes meteorológicos de IA por temporizadores adaptadores ioBroker.",
|
|
63
|
-
"nl": "Releasetooling bijgewerkt naar de vereiste minimumversie. Verouderde Admin i18n-sleutels opgeschoond. Native timers in AI-weerhelpers vervangen door ioBroker-adaptertimers.",
|
|
64
|
-
"fr": "Outils de version mis à jour vers la version minimale requise. Nettoyage des clés Admin i18n obsolètes. Remplacement des minuteries natives dans les assistants météo AI par des minuteries d'adaptateur ioBroker.",
|
|
65
|
-
"it": "Strumenti di rilascio aggiornati alla versione minima richiesta. Ripulite le chiavi Admin i18n obsolete. Sostituiti i timer nativi negli assistenti meteorologici AI con i timer dell'adattatore ioBroker.",
|
|
66
|
-
"es": "Herramientas de lanzamiento actualizadas a la versión mínima requerida. Se limpiaron las claves de Admin i18n obsoletas. Se reemplazaron los temporizadores nativos en los asistentes meteorológicos de IA con temporizadores del adaptador ioBroker.",
|
|
67
|
-
"pl": "Zaktualizowano narzędzia wydania do wymaganej wersji minimalnej. Wyczyszczono nieaktualne klucze administratora i18n. Zastąpiono natywne liczniki czasu w pomocnikach pogodowych AI zegarami adaptera ioBroker.",
|
|
68
|
-
"uk": "Оновлено інструмент випуску до необхідної мінімальної версії. Очищено застарілі ключі адміністратора i18n. Вбудовані таймери в помічниках погоди штучного інтелекту замінено на таймери адаптера ioBroker.",
|
|
69
|
-
"zh-cn": "将发布工具更新为所需的最低版本。清理了过时的 Admin i18n 密钥。将 AI 天气助手中的本机计时器替换为 ioBroker 适配器计时器。"
|
|
70
70
|
}
|
|
71
71
|
},
|
|
72
72
|
"titleLang": {
|
|
@@ -230,20 +230,23 @@ const runtimeHelper = {
|
|
|
230
230
|
const poolSize = (await this.adapter.getStateAsync('general.pool_size'))?.val || 0;
|
|
231
231
|
const minCirc = (await this.adapter.getStateAsync('general.min_circulation_per_day'))?.val || 1;
|
|
232
232
|
|
|
233
|
-
//
|
|
233
|
+
// Soll- und Restmenge immer direkt setzen – auch ohne Durchfluss
|
|
234
234
|
const dailyRequired = Math.round(poolSize * minCirc);
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
235
|
+
|
|
236
|
+
// Bestehenden Tageswert laden, damit daily_remaining unabhängig vom Live-Durchfluss konsistent bleibt
|
|
237
|
+
const oldTotal = Number((await this.adapter.getStateAsync('circulation.daily_total'))?.val || 0);
|
|
238
|
+
const remainingFromCurrentTotal = Math.max(dailyRequired - oldTotal, 0);
|
|
239
|
+
|
|
240
|
+
await this.adapter.setStateAsync('circulation.daily_required', { val: dailyRequired, ack: true });
|
|
241
|
+
await this.adapter.setStateAsync('circulation.daily_remaining', {
|
|
242
|
+
val: remainingFromCurrentTotal,
|
|
243
|
+
ack: true,
|
|
244
|
+
});
|
|
238
245
|
|
|
239
246
|
// Umwälzmenge berechnen
|
|
240
247
|
// Reeller Durchflusswert aus pump.live.flow_current_lh
|
|
241
248
|
const liveFlowLh = Number((await this.adapter.getStateAsync('pump.live.flow_current_lh'))?.val || 0);
|
|
242
249
|
|
|
243
|
-
// Bestehende Werte für Total/Remaining laden
|
|
244
|
-
const oldTotal = Number((await this.adapter.getStateAsync('circulation.daily_total'))?.val || 0);
|
|
245
|
-
const oldRemaining = Number((await this.adapter.getStateAsync('circulation.daily_remaining'))?.val || 0);
|
|
246
|
-
|
|
247
250
|
if (liveFlowLh <= 0) {
|
|
248
251
|
await this._updateCirculationPlausibility({
|
|
249
252
|
dailyTotal: oldTotal,
|
|
@@ -279,7 +282,7 @@ const runtimeHelper = {
|
|
|
279
282
|
);
|
|
280
283
|
} else {
|
|
281
284
|
this.adapter.log.debug(
|
|
282
|
-
`[runtimeHelper] No valid live data – keeping existing
|
|
285
|
+
`[runtimeHelper] No valid live data – keeping existing total (Total=${oldTotal}, Required=${dailyRequired}, Remaining=${remainingFromCurrentTotal})`,
|
|
283
286
|
);
|
|
284
287
|
}
|
|
285
288
|
} catch (err) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.poolcontrol",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.35",
|
|
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",
|