NEWS
Test Adapter PoolControl
-
Hallo, da kommen mir noch ein paar Gedanken:
-
Poollicht
-
Gegenstromanlage
-
Wasserfall
-
Poolreinigung bzw. Roboter
-
PoolĂĽberdachung
-
Poolheizung
-
-
erstmal Danke fĂĽr die Integration meines Vorschlages zur Regelung der Pumpe!
Was die Gedanken von @sigi234 betrifft könnte ich noch hinzufügen,
-
Whirlpool Pump Jet
-
Whirlpool Pump Air
-
UV-Light
Alternativ könnte man auch einfach definierbare Schalter einbauen. Hierzu gibst du über die Einstellungen in der Instanz Namen ein und wählst den dazugehörigen Schaltaktor aus. Erweitern könnte man es noch mit einem Datenpunkt und eine Verzögerung mit dem du den Schalter schalten möchtest.
Zur Verständlichung ein Beispiel.
-
Name: UV-Licht
-
Aktor: Shelly der die UV Lampe schaltet
-
Datenpunkt: der Schelly der meine Umwälzpume steuert.
-
Verzögerung: 0 Sekunden da die UV-Lampe zusammen mit der Pumpe laufen soll.
Bei einer Wärmepumpe würde ich eine Verzögerung von 30 Sekunden ansetzen damit diese nich in einen Error läuft.
-
-
Danke euch beiden, @sigi234 und @claus1993, für eure ausführlichen Vorschläge und Gedanken!
Ich hab mir alles notiert – das sind richtig gute Ansätze, auch wenn manche davon schon in sehr spezielle Bereiche gehen.
Ich werde mir in Ruhe anschauen, was davon sich sinnvoll in das bestehende Konzept integrieren lässt, ohne den Adapter zu überladen.
Euer Feedback ist auf jeden Fall sehr wertvoll und flieĂźt in die weiteren Planungen mit ein. -
PoolControl Adapter – Version 0.2.2 veröffentlicht
Hallo zusammen,
ich habe soeben die neue Version 0.2.2 meines Adapters ioBroker.poolcontrol auf GitHub und npm veröffentlicht.
Diese Version bringt ein weiteres wichtiges Puzzleteil fĂĽr die manuelle und automatische Steuerung des Pools mit:
den Bereich „Control“
Neu in Version 0.2.2
Automatische RĂĽckspĂĽlerinnerung
Der Adapter erinnert jetzt selbständig an fällige Rückspülungen – wahlweise per Sprachausgabe (Alexa, Telegram, E-Mail) oder Log-Meldung.- Über den Datenpunkt
control.pump.backwash_reminder_active
lässt sich die Erinnerung aktivieren oder deaktivieren. - Das Intervall legt man mit
control.pump.backwash_interval_days
fest (Standard: 7 Tage). - Sobald der Zeitraum ĂĽberschritten ist, erscheint im Objektbaum der Hinweis
control.pump.backwash_required = true
, und der Adapter erzeugt eine Benachrichtigung. - Beim Start einer RĂĽckspĂĽlung wird die Erinnerung automatisch zurĂĽckgesetzt und das Datum (
control.pump.backwash_last_date
) aktualisiert.
Damit ist jetzt ein vollständiger automatischer Zyklus möglich:
Erinnerung → Rückspülen → Reset → neuer Zyklus.
️ Der neue Bereich Control
Mit Version 0.2.2 ist der Bereich „control“ im Objektbaum komplett angelegt.
Er dient als zentrale Steuer- und Wartungsebene fĂĽr alle manuellen oder halbautomatischen Funktionen des Adapters.Die Unterstruktur sieht so aus:
control
├─ season
├─ pump
├─ energy
└─ circulation🧠Überblick
Bereich Beschreibung control.season.active Aktiviert oder beendet die Poolsaison. Viele Automatikfunktionen (Solar, Frost, Zeitsteuerung usw.) arbeiten nur bei aktiver Saison. control.pump.backwash_start Startet manuell eine Rückspülung mit der eingestellten Dauer. control.pump.backwash_duration Dauer der Rückspülung in Minuten. control.pump.backwash_active Zeigt an, ob gerade eine Rückspülung läuft. control.pump.backwash_reminder_active Aktiviert die automatische Rückspülerinnerung. control.pump.backwash_interval_days Intervall für die Rückspülerinnerung (z. B. 7 Tage). control.pump.backwash_last_date Datum der letzten Rückspülung. Wird automatisch aktualisiert. control.pump.backwash_required Signalisiert, dass eine Rückspülung fällig ist. control.pump.maintenance_active Aktiviert den Wartungsmodus (Automatik wird pausiert). control.pump.notifications_enabled Schaltet Sprach- und Nachrichtenmeldungen für Control-Ereignisse ein oder aus. control.energy.reset Setzt Verbrauchs- und Kostenwerte vollständig zurück. control.circulation.mode Legt fest, wie die tägliche Umwälzprüfung erfolgt (Automatik, Manuell, Nur Benachrichtigung, Aus). control.circulation.check_time Uhrzeit für den täglichen Umwälzungs-Check. control.circulation.last_report Zeitstempel des letzten automatisch erzeugten Tagesberichts.
️ Steuerung über VIS / Blockly / Admin
Alle Schaltpunkte im Bereich Control können sowohl
direkt im Admin-Objektbaum, über Blockly-Skripte, als auch über eine VIS-Oberfläche bedient werden.Beispielsweise lässt sich:
- die RĂĽckspĂĽlung per Button starten,
- der Wartungsmodus aktivieren,
- oder der Tages-Umwälzungsbericht auslösen.
Damit ist der Bereich Control die Schnittstelle zwischen Automatik und manueller Bedienung.
Ausblick – was als Nächstes kommt
Aus der README habe ich auch wieder den Bereich der geplanten Funktionen ĂĽbernommen.
Diese Punkte sind bereits in Arbeit oder vorgesehen für zukünftige Versionen:- Heizungs- / Wärmepumpen-Logik mit Ziel- und Max-Temperatur
- PV-Überschuss-Erkennung (Pumpe läuft bei Solarstrom länger)
- Erweiterte Sprachlogik (Ereignisse, Ruhezeiten, individuelle Texte)
- Visualisierung & Widgets fĂĽr VIS / VIS 2
- Saison-Statistikbereich mit Start-, End- und Vergleichswerten
- Zubehörsteuerung (Licht, Gegenstromanlage, Fontäne, Whirlpool u. a.)
GitHub
Das aktuelle Release ist wie gewohnt hier verfĂĽgbar:
Ich freue mich wie immer ĂĽber RĂĽckmeldungen, Tests und Anregungen aus der Community.
Viele GrĂĽĂźe
Bo - Ăśber den Datenpunkt
-
Bugfixes 09.10.2025
Interne Sprach-Statusdatenpunkte (SolarActive, TimeActive, FrostActive) wurden nun schreibgeschützt gesetzt, um versehentliche Änderungen zu verhindern.
-
@dasbo1975 sagte in Test Adapter PoolControl:
PoolControl Adapter – Version 0.2.2 veröffentlicht
poolcontrol.0 2025-10-09 13:22:22.039 info [speechHelper] Alexa sagt: Wartungsmodus beendet. Automatikbetrieb wieder aktiv. poolcontrol.0 2025-10-09 13:22:22.027 warn Read-only state "poolcontrol.0.speech.queue" has been written without ack-flag with value "Wartungsmodus beendet. Automatikbetrieb wieder aktiv." poolcontrol.0 2025-10-09 13:22:22.025 info [controlHelper] Wartungsmodus beendet. Automatik wieder aktiv. poolcontrol.0 2025-10-09 13:22:22.023 warn State "poolcontrol.0.pump.reason" has no existing object, this might lead to an error in future versions
-
Hallo,
ich wĂĽrde mich hier auch mal einbringen.
Kann man eine Pumpensteuerung auch ĂĽber einen Datenpunkt 0-100 fĂĽr steuerbare Pumpen anlegen.
Ich steuere diese ausschlieĂźlich ĂĽber den Redox und PH-Wert
z.B. der Redoxwert ist über 750 Pumpe läuft mit 20% zum messen der Werte und die Salzwasser Elektrolyse schaltet ab zwischen 700-749 Pumpe läuft auf 30 % Elektrolyse schaltet zu 650-699 auf 40% usw.
genau so beim PH-Wert 7,2 PH aus ĂĽber 7,3 PH schaltet zu.GrĂĽĂźe und Danke im Voraus
-
@sigi234 sagte in Test Adapter PoolControl:
@dasbo1975 sagte in Test Adapter PoolControl:
PoolControl Adapter – Version 0.2.2 veröffentlicht
poolcontrol.0 2025-10-09 13:22:22.039 info [speechHelper] Alexa sagt: Wartungsmodus beendet. Automatikbetrieb wieder aktiv. poolcontrol.0 2025-10-09 13:22:22.027 warn Read-only state "poolcontrol.0.speech.queue" has been written without ack-flag with value "Wartungsmodus beendet. Automatikbetrieb wieder aktiv." poolcontrol.0 2025-10-09 13:22:22.025 info [controlHelper] Wartungsmodus beendet. Automatik wieder aktiv. poolcontrol.0 2025-10-09 13:22:22.023 warn State "poolcontrol.0.pump.reason" has no existing object, this might lead to an error in future versions
Danke
Wurde geändert
-
@homer-j sagte in Test Adapter PoolControl:
Hallo,
ich wĂĽrde mich hier auch mal einbringen.
Kann man eine Pumpensteuerung auch ĂĽber einen Datenpunkt 0-100 fĂĽr steuerbare Pumpen anlegen.
Ich steuere diese ausschlieĂźlich ĂĽber den Redox und PH-Wert
z.B. der Redoxwert ist über 750 Pumpe läuft mit 20% zum messen der Werte und die Salzwasser Elektrolyse schaltet ab zwischen 700-749 Pumpe läuft auf 30 % Elektrolyse schaltet zu 650-699 auf 40% usw.
genau so beim PH-Wert 7,2 PH aus ĂĽber 7,3 PH schaltet zu.GrĂĽĂźe und Danke im Voraus
Anfrage zur 0–100 %-Pumpensteuerung
Hallo @homer.j,
dein Vorschlag mit der 0–100 %-Pumpensteuerung ist sehr interessant und grundsätzlich gut machbar.
Damit ich das sauber in die bestehende Struktur einbauen kann, mĂĽsste ich vorher kurz wissen,
wie du das aktuell technisch gelöst hast:Hast du bereits einen vorhandenen Datenpunkt (z. B. über Modbus, MQTT oder ESP),
über den deine Pumpe mit einem Prozentwert (0–100 %) angesteuert wird?
Dann würde ich diesen Fremd-Datenpunkt in der Adapter-Konfiguration auswählbar machen
(z. B. „Objekt-ID Drehzahlsteuerung“),
und der Adapter wĂĽrde dort automatisch den Sollwert schreiben.Oder soll der Adapter die komplette Logik selbst ĂĽbernehmen,
also abhängig vom Redox- und pH-Wert selbst berechnen,
mit welcher Leistung die Pumpe laufen soll?
In diesem Fall wĂĽrde ich ein separates Regel-Modul (ChemControl) dafĂĽr bauen,
das diese Werte auswertet und die Drehzahl entsprechend anpasst.Welche Variante trifft bei dir zu?
-
🧩 Ausblick auf Version 0.3.0 – Erweiterte Pumpenlauf- und Durchschnittserkennung
In der kommenden Version möchte ich zusätzlich eine Durchschnittsleistungs-Erkennung für die Pumpe einbauen.
Damit wird der Adapter nicht nur erkennen, ob die Pumpe läuft, sondern auch, wie konstant sie sich im Vergleich zu ihrem bisherigen Betriebsverhalten verhält.Die Idee ist, dass der Adapter über einen längeren Zeitraum (z. B. mehrere Tage oder Wochen) automatisch mitlernt,
in welchem Leistungsbereich sich die Pumpe im Normalbetrieb tatsächlich bewegt – unabhängig von der in der Instanz hinterlegten Nennleistung.Durchschnitts- und Vergleichswerte
Dazu wird ein eigener Datenpunkt angelegt, zum Beispiel:
pump.average_power_longterm → Durchschnittsverbrauch der Pumpe über den Lernzeitraum
pump.deviation_status → Textstatus „Pumpe läuft im Durchschnittsnormbereich“ oder „Pumpe außerhalb des Durchschnittsnormbereichs“
Der Adapter vergleicht also laufend den aktuellen Leistungswert (z. B. aus der Messsteckdose) mit dem langfristig ermittelten Durchschnittswert.
Liegt der aktuelle Verbrauch innerhalb einer definierten Toleranz (z. B. ±10 %), bleibt der Status „im Durchschnittsnormbereich“.
Liegt er deutlich darüber oder darunter, wird automatisch der Status „außerhalb des Durchschnittsnormbereichs“ gesetzt.Damit lassen sich über längere Zeiträume Tendenzen erkennen,
etwa wenn der Filter zunehmend verschmutzt oder der Durchfluss nachlässt.
Diese Werte dienen nicht als Fehler oder Alarm, sondern rein als Informationsanzeige im Bereich Status –
ähnlich einer kleinen „Gesundheitsanzeige“ der Pumpe.Reale Umwälzung auf Basis der tatsächlichen Leistungsaufnahme
Darüber hinaus soll künftig die tägliche Umwälzung nicht mehr nur anhand der Nennleistung berechnet werden,
sondern dynamisch auf Grundlage der tatsächlich gemessenen Leistungsaufnahme.Aus dem realen Verbrauch wird der geschätzte aktuelle Durchfluss in Litern pro Stunde abgeleitet,
und dieser Wert fließt direkt in die Berechnung der realen täglichen Umwälzung ein.So wird sichtbar, wie sich der tatsächliche Wasserdurchsatz im Laufe des Tages verändert –
zum Beispiel durch steigenden Filterdruck, Temperaturänderungen oder Pumpenalterung.
Die bisherige statische Berechnung wird damit Schritt für Schritt durch eine realitätsnahe, lernende Auswertung ersetzt.Langfristig kann diese Logik später auch dazu genutzt werden, automatisch Hinweise zu geben,
z. B. „Filterdurchfluss sinkt – Rückspülen empfohlen“,
aber zunächst steht die reine Analyse und Anzeige im Vordergrund. -
Ich Steuere die ganze Geschichte ĂĽber KNX mit diesem Aktor.
( MDT Analog Ein- / Ausgang AIO eignet sich zum Steuern von Geräten mit 0-10 V Eingang )
Der Datenpunkt sieht so aus.Wert: 2004.48mV Typ: number Zeitstempel: 7 hours ago Bestätigt: Bestätigt (true) Zuletzt geändert: 7 hours ago Qualität: 0x00 - good Von: system.adapter.openknx.0 Benutzer: system.user.admin
hier mal ein Teil vom Script ich schreibe den mV Datenpunkt nochmal in % um da ich es auch über andere Geräte steuere.
on({ id: [].concat(['openknx.0.Steckdosen.Pool.Pool_Ausgang_Messwert_ORP']), change: 'ne' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; if ((getState('openknx.0.Steckdosen.Pool.Pool_Ausgang_Messwert_ORP').val >= 751) && (getState('openknx.0.Steckdosen.Pool.Pool_Vorgabe_aktueller_Stellwert_A').val != 20)) { setState('openknx.0.Steckdosen.Pool.Pool_Vorgabe_aktueller_Stellwert_A' /* Pool Vorgabe aktueller Stellwert A */, 20); setState('alias.0.Steckdosen.Schalten.Salzwasser_Pool_schalten' /* Salzwasser Pool schalten */, false); console.info('Filter auf 20%'); } else if (((getState(obj.id).val >= 701) && (getState(obj.id).val < 750)) && (getState('openknx.0.Steckdosen.Pool.Pool_Vorgabe_aktueller_Stellwert_A').val != 30)) { setState('openknx.0.Steckdosen.Pool.Pool_Vorgabe_aktueller_Stellwert_A' /* Pool Vorgabe aktueller Stellwert A */, 30); setState('alias.0.Steckdosen.Schalten.Salzwasser_Pool_schalten' /* Salzwasser Pool schalten */, true); console.info('Filter auf 30%'); } else if (((getState(obj.id).val >= 651) && (getState(obj.id).val < 700)) && (getState('openknx.0.Steckdosen.Pool.Pool_Vorgabe_aktueller_Stellwert_A').val != 40)) { setState('openknx.0.Steckdosen.Pool.Pool_Vorgabe_aktueller_Stellwert_A' /* Pool Vorgabe aktueller Stellwert A */, 40); console.info('Filter auf 40%'); } else if (((getState(obj.id).val >= 601) && (getState(obj.id).val < 650)) && (getState('openknx.0.Steckdosen.Pool.Pool_Vorgabe_aktueller_Stellwert_A').val != 50)) { setState('openknx.0.Steckdosen.Pool.Pool_Vorgabe_aktueller_Stellwert_A' /* Pool Vorgabe aktueller Stellwert A */, 50); console.info('Filter auf 50%'); } else if ((getState(obj.id).val <= 600) && (getState('openknx.0.Steckdosen.Pool.Pool_Vorgabe_aktueller_Stellwert_A').val != 60)) { setState('openknx.0.Steckdosen.Pool.Pool_Vorgabe_aktueller_Stellwert_A' /* Pool Vorgabe aktueller Stellwert A */, 60); console.info('Filter auf 60%'); } });
Hier noch der Redoxwert als Datenpunkt.
Wert: 769.92mV Typ: number Zeitstempel: a few seconds ago Bestätigt: Bestätigt (true) Zuletzt geändert: 28 minutes ago Qualität: 0x00 - good Von: system.adapter.openknx.0 Benutzer: system.user.admin
Es wäre natürlich schön wenn mann die Werte gleich direkt in den Adapter eingeben könnte.
Ich hoffe es reicht dir erstmal so wenn du noch etwas brauchst gib BescheidGrĂĽĂźe