iobroker.poolcontrol 0.5.1 → 0.5.2
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 +5 -0
- package/io-package.json +13 -1
- package/lib/helpers/frostHelper.js +6 -0
- package/lib/helpers/solarHelper.js +6 -0
- package/lib/helpers/timeHelper.js +27 -11
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -121,6 +121,11 @@ Funktionen können sich ändern – bitte regelmäßig den Changelog beachten.
|
|
|
121
121
|
## Changelog
|
|
122
122
|
### **WORK IN PROGRESS**
|
|
123
123
|
|
|
124
|
+
## v0.5.2 (2025-10-30)
|
|
125
|
+
- Erweitertes Helper-Vorrangssystem: Konflikte zwischen Zeit- und Solarsteuerung behoben
|
|
126
|
+
- Frostschutz pausiert während Zeitfenster. Nun stabiles Pumpenverhalten und Verbesserte
|
|
127
|
+
Koordination zwischen den Helpern
|
|
128
|
+
|
|
124
129
|
## v0.5.0 (2025-10-28)
|
|
125
130
|
- Erweiterung der Temperaturstatistik um Wochen- und Monatsauswertung
|
|
126
131
|
(`analytics.statistics.temperature.week` / `.month`)
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "poolcontrol",
|
|
4
|
-
"version": "0.5.
|
|
4
|
+
"version": "0.5.2",
|
|
5
5
|
"news": {
|
|
6
|
+
"0.5.2": {
|
|
7
|
+
"en": "Extended helper priority system: fixed time/solar conflicts, frost pauses during time windows. Stable pump behavior and improved coordination between helpers.",
|
|
8
|
+
"de": "Erweitertes Helper-Vorrangsystem: Konflikte zwischen Zeit- und Solarsteuerung behoben, Frostschutz pausiert während Zeitfenstern. Stabiles Pumpenverhalten und verbesserte Koordination zwischen den Helpern.",
|
|
9
|
+
"ru": "Расширена система приоритетов помощников: устранены конфликты между таймером и солнечным управлением, мороз приостанавливается во время временных окон. Стабильная работа насоса и улучшенная координация между помощниками.",
|
|
10
|
+
"pt": "Sistema de prioridade dos helpers expandido: corrigidos conflitos de tempo/solar, proteção contra geada pausa durante janelas de tempo. Comportamento estável da bomba e melhor coordenação entre helpers.",
|
|
11
|
+
"nl": "Uitgebreid helperprioriteitssysteem: conflicten tussen tijd- en zonregeling opgelost, vorstbeveiliging pauzeert tijdens tijdvensters. Stabiel pompgedrag en betere coördinatie tussen helpers.",
|
|
12
|
+
"fr": "Système de priorité des helpers étendu : conflits temps/solaire corrigés, protection antigel en pause pendant les plages horaires. Comportement de pompe stable et meilleure coordination entre les helpers.",
|
|
13
|
+
"it": "Sistema di priorità degli helper esteso: risolti i conflitti tempo/solare, la protezione antigelo si mette in pausa durante le finestre temporali. Comportamento stabile della pompa e migliore coordinamento tra gli helper.",
|
|
14
|
+
"es": "Sistema de prioridad de helpers ampliado: solucionados los conflictos de tiempo/solar, la protección contra heladas se pausa durante las ventanas de tiempo. Comportamiento estable de la bomba y mejor coordinación entre helpers.",
|
|
15
|
+
"pl": "Rozszerzony system priorytetów helperów: naprawiono konflikty między czasem a sterowaniem solarnym, ochrona przed mrozem wstrzymuje się podczas okien czasowych. Stabilne działanie pompy i lepsza koordynacja między helperami.",
|
|
16
|
+
"zh-cn": "扩展的助手优先级系统:修复时间/太阳能冲突,防冻在时间窗口内暂停。泵运行稳定,助手之间协调更好。"
|
|
17
|
+
},
|
|
6
18
|
"0.5.1": {
|
|
7
19
|
"en": "Extended week and month statistics with persistent data, unified JSON format, and installation protection.",
|
|
8
20
|
"de": "Erweiterte Wochen- und Monatsstatistik mit persistenten Daten, einheitlichem JSON-Format und Überinstallationsschutz.",
|
|
@@ -40,6 +40,12 @@ const frostHelper = {
|
|
|
40
40
|
return;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
+
// --- NEU: Vorrangprüfung durch TimeHelper ---
|
|
44
|
+
if (activeHelper === 'timeHelper') {
|
|
45
|
+
this.adapter.log.debug('[frostHelper] Vorrang durch TimeHelper aktiv – Frostschutz pausiert.');
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
|
|
43
49
|
// Frostschutz aktiviert?
|
|
44
50
|
const frostActive = (await this.adapter.getStateAsync('pump.frost_protection_active'))?.val;
|
|
45
51
|
if (!frostActive) {
|
|
@@ -39,6 +39,12 @@ const solarHelper = {
|
|
|
39
39
|
return;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
+
// --- NEU: Vorrangprüfung durch TimeHelper ---
|
|
43
|
+
if (activeHelper === 'timeHelper') {
|
|
44
|
+
this.adapter.log.debug('[solarHelper] Vorrang durch TimeHelper aktiv – Solarregelung pausiert.');
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
|
|
42
48
|
// --- NEU: Saisonstatus ---
|
|
43
49
|
const season = (await this.adapter.getStateAsync('status.season_active'))?.val;
|
|
44
50
|
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* timeHelper
|
|
5
5
|
* - Überwacht Zeitfenster (time1, time2, time3)
|
|
6
6
|
* - Schaltet Pumpe, wenn Modus "time" aktiv ist
|
|
7
|
-
* - Schaltet über
|
|
7
|
+
* - Schaltet über den internen Pumpenschalter (pump.pump_switch)
|
|
8
|
+
* - Die eigentliche Steckdose wird vom pumpHelper gespiegelt
|
|
8
9
|
*/
|
|
9
10
|
|
|
10
11
|
const timeHelper = {
|
|
@@ -32,15 +33,19 @@ const timeHelper = {
|
|
|
32
33
|
async _checkWindows() {
|
|
33
34
|
try {
|
|
34
35
|
const mode = (await this.adapter.getStateAsync('pump.mode'))?.val;
|
|
36
|
+
|
|
37
|
+
// NEU: Wenn nicht im Zeitmodus, ggf. Vorrang freigeben
|
|
35
38
|
if (mode !== 'time') {
|
|
39
|
+
const activeHelper = (await this.adapter.getStateAsync('pump.active_helper'))?.val;
|
|
40
|
+
if (activeHelper === 'timeHelper') {
|
|
41
|
+
await this.adapter.setStateAsync('pump.active_helper', { val: '', ack: true });
|
|
42
|
+
this.adapter.log.debug('[timeHelper] Zeitmodus beendet – Vorrang an Solar/Control freigegeben.');
|
|
43
|
+
}
|
|
36
44
|
return;
|
|
37
45
|
} // nur aktiv im Zeitmodus
|
|
38
46
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
this.adapter.log.warn('[timeHelper] Keine pump_switch (Fremd-ID) konfiguriert!');
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
47
|
+
// Interner Pumpenschalter statt externer Steckdose
|
|
48
|
+
const pumpStateId = 'pump.pump_switch';
|
|
44
49
|
|
|
45
50
|
const now = new Date();
|
|
46
51
|
const hhmm = now.toTimeString().slice(0, 5); // "HH:MM"
|
|
@@ -59,7 +64,7 @@ const timeHelper = {
|
|
|
59
64
|
}
|
|
60
65
|
}
|
|
61
66
|
|
|
62
|
-
// ---
|
|
67
|
+
// --- Sprachsignal für Zeitsteuerung setzen ---
|
|
63
68
|
const oldVal = (await this.adapter.getStateAsync('speech.time_active'))?.val;
|
|
64
69
|
if (oldVal !== shouldRun) {
|
|
65
70
|
await this.adapter.setStateAsync('speech.time_active', {
|
|
@@ -68,14 +73,25 @@ const timeHelper = {
|
|
|
68
73
|
});
|
|
69
74
|
}
|
|
70
75
|
|
|
71
|
-
//
|
|
72
|
-
const
|
|
76
|
+
// NEU: Vorrangverwaltung (active_helper)
|
|
77
|
+
const activeHelper = (await this.adapter.getStateAsync('pump.active_helper'))?.val;
|
|
78
|
+
if (shouldRun && activeHelper !== 'timeHelper') {
|
|
79
|
+
await this.adapter.setStateAsync('pump.active_helper', { val: 'timeHelper', ack: true });
|
|
80
|
+
this.adapter.log.debug('[timeHelper] Vorrang übernommen (Zeitfenster aktiv).');
|
|
81
|
+
}
|
|
82
|
+
if (!shouldRun && activeHelper === 'timeHelper') {
|
|
83
|
+
await this.adapter.setStateAsync('pump.active_helper', { val: '', ack: true });
|
|
84
|
+
this.adapter.log.debug('[timeHelper] Vorrang zurückgegeben (Zeitfenster beendet).');
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// --- Nur schalten, wenn sich der Zustand wirklich ändert ---
|
|
88
|
+
const currentState = (await this.adapter.getStateAsync(pumpStateId))?.val;
|
|
73
89
|
if (currentState !== shouldRun) {
|
|
74
|
-
await this.adapter.
|
|
90
|
+
await this.adapter.setStateAsync(pumpStateId, {
|
|
75
91
|
val: shouldRun,
|
|
76
92
|
ack: false,
|
|
77
93
|
});
|
|
78
|
-
this.adapter.log.debug(`[timeHelper]
|
|
94
|
+
this.adapter.log.debug(`[timeHelper] Pumpenschalter ${shouldRun ? 'EIN' : 'AUS'} (${hhmm})`);
|
|
79
95
|
} else {
|
|
80
96
|
this.adapter.log.debug(
|
|
81
97
|
`[timeHelper] Keine Änderung (${hhmm}) – Zustand bleibt ${shouldRun ? 'EIN' : 'AUS'}.`,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.poolcontrol",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.2",
|
|
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",
|