NEWS
Test Adapter PoolControl
-
@looxer01 sagte in Test Adapter PoolControl:
Hi,
Das heißt ich habe 2 datenpunkte
- Umwälzpumpe
- Heizung.
Hast du so etwas bereits vorgesehen ?
vG Looxer
Hi
Gut das du das noch mal betonst mit 2 Datenpunkten. Das ist zur Zeit so noch nicht enthalten. Aber angedacht. z.B als Wärmepumpe. Aber als reine Heizung so wie du es beschreibst noch nicht.Welche Daten liefert denn dein Heizungsdatenpunkt? Ein/Aus oder Temperatur?
LG
-
@dasbo1975 sagte in Test Adapter PoolControl:
Welche Daten liefert denn dein Heizungsdatenpunkt? Ein/Aus oder Temperatur?
Hi,
ist ein State (also an aus).
Die Heizung soll eben solange auf "an" stehen bis die Ziel-temperatur erreicht ist.vG Looxer
-
@looxer01 sagte in Test Adapter PoolControl:
@dasbo1975 sagte in Test Adapter PoolControl:
Welche Daten liefert denn dein Heizungsdatenpunkt? Ein/Aus oder Temperatur?
Hi,
ist ein State (also an aus).
Die Heizung soll eben solange auf "an" stehen bis die Ziel-temperatur erreicht ist.vG Looxer
Ahh ok, verstanden. Ich packe es mal mit auf die ToDo Liste
-
@dasbo1975 sagte in Test Adapter PoolControl:
Ahh ok, verstanden. Ich packe es mal mit auf die ToDo Liste
Danke dir.
noch ergänzend dazu. Vorausetzung für das setzen des States für die Heizung ist natürlich, dass die Umwälzpumpe läuft.
Ansonsten fließt ja kein Wasser durch den WärmetauschervG Looxer
-
Version 0.2.1
ist am Start.
- kleine Schönheitsreparaturen
- Bugfixes
- Log leiser gemacht
zu beziehen über github
-
Kleines Update (Bugfix, keine Versionsänderung)
Auf GitHub steht jetzt eine überarbeitete Version des Adapters bereit.
Die Steuer-Helper (Control, Solar, Frost) wurden intern angepasst:
Die Vorrangsteuerung läuft nun über den neuen Datenpunkt pump.active_helper.
Dadurch erkennen Solar- und Froststeuerung zuverlässig, wenn der ControlHelper aktiv ist (z. B. bei Rückspülung oder Wartung) und pausieren automatisch.Kein Versionssprung nötig, nur ein Bugfix-Commit.
Wer den Adapter bereits nutzt, kann einfach den aktuellen Stand von GitHub laden. -
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