Wasserqualitätssensoren (pH, ORP) + anpassbare Anzeigen mit farbigen Schwellenwerten

Hallo zusammen :waving_hand:

Ich wollte zwei PRs teilen, die ich gerade eröffnet habe, die mit einem konkreten Fall zusammenhängen: die Integration meiner iopool Eco-Sonde (Überwachung der Poolwasserqualität) in Gladys über MQTT.

Ich habe die Sonde auf der Node-RED-Seite hochgeladen, die auf den MQTT-Broker veröffentlicht, was es mir ermöglicht, eine virtuelle MQTT-Vorrichtung auf der Gladys-Seite mit den folgenden Funktionen zu erstellen: Temperatur, pH-Wert, ORP (Desinfektionsfähigkeit), Modus, empfohlene Filterdauer, Datum der letzten Messung.

Das Problem: Für den pH-Wert und den ORP gab es keine passende Sensorenkategorie. Ich musste « Unbekannt » für den pH-Wert und « Luftqualitätsindex » für den ORP wählen (weil airquality-sensor das war, was am ehesten passte). Nicht ideal.

Ich habe daher zwei PRs (Stack) erstellt:


PR 1 — Sensorenkategorien für die Wasserqualität

:link: Add water quality sensor categories (pH, ORP) by Terdious · Pull Request #2530 · GladysAssistant/Gladys · GitHub

Hinzufügen von zwei generischen Kategorien, die von jeder Integration (MQTT, Z2M, Matter, benutzerdefinierte Dienste) wiederverwendet werden können:

  • ph-sensor — pH-Wert des Wassers, Bereich 0–14, neue dimensionslose Einheit ph
  • orp-sensor — Redoxpotential (Redox / « Desinfektionsfähigkeit »), in Millivolt (bestehende Einheit)

Abgedeckt werden Pool-Sonden (iopool, Ondilo, BWT), Aquarien, Regenwassermessstationen usw.

Nomenklaturkonvention: Standardwissenschaftliche Begriffe (kein capacite-desinfection-sensor). Aber die französische Bezeichnung behält « ORP / Desinfektionsfähigkeit » bei, um für die breite Öffentlichkeit zugänglich zu bleiben.


Warum gibt es keine automatische Farbgebung auf dem « Gerät »-Widget?

Legitime Frage: Die Luftqualität (CO2, PM2.5, VOC…) zeigt automatisch ein farbiges Abzeichen
im Geräte-Widget an, abhängig vom Wert. Warum sollte man das nicht auch
für den pH-Wert und den ORP tun?

Weil das nur für Messungen mit universellen Schwellenwerten funktioniert. CO2 bei 1200 ppm
ist überall schlecht, unabhängig vom Kontext — es ist eine weltweite Gesundheitsnorm.

Der pH-Wert und der ORP sind jedoch absolute Skalen, deren « korrekter » Bereich
vollständig vom Verwendungszweck abhängt:

Verwendung Ideal pH Ideal ORP
Pool 7,0 – 7,4 650 – 750 mV
Süßwasser-Aquarium 6,5 – 7,5 250 – 400 mV
Riffaquarium 8,1 – 8,4 350 – 450 mV
Trinkwasser 6,5 – 8,5 —
Hydroponik 5,5 – 6,5 —

Wenn wir Pool-Schwellenwerte im Geräte-Widget hardcodieren würden, würde ein Aquarienbesitzer
seinen Wert in Rot sehen, obwohl sein Wasser perfekt ist. Täuschend.

Dazu kommt ein technisches Detail: Die Farbgebung der Luftqualität ist einfach
(« je niedriger, desto besser »). Der pH-Wert ist ein Bereich: schlecht unten und oben,
gut in der Mitte. Die bestehende Logik funktioniert einfach nicht.

Deshalb erfolgt die Farbgebung durch Schwellenwerte über die PR2 (konfigurierbare Anzeige):
Jeder definiert seine eigenen Schwellenwerte entsprechend seiner Verwendung. Neutral, korrekt für alle,
und wiederverwendbar weit über die Wasserqualität hinaus (Batterie, Tankfüllstand usw.).


PR 2 — Konfigurierbare Anzeige mit farbigen Schwellenwerten

:link: Gauge dashboard widget: add configurable color thresholds by Terdious · Pull Request #2531 · GladysAssistant/Gladys · GitHub

Übernimmt die bestehende Logik Schwelle + Farbe in den Widgets « Raumtemperatur » und « Raumluftfeuchtigkeit », aber generisch im Anzeige-Widget:

  • Kontrollkästchen « Benutzerdefinierte Schwellenwerte konfigurieren » im Editor
  • Doppelschieberegler zum Definieren der beiden Schwellenwerte (die Grenzen des Schiebereglers stammen aus dem min/max der Funktion, daher konsistent mit pH 0-12, ORP 500-1100, Batterie 0-100 usw.)
  • 3 Farbauswahl (niedriger Bereich / im Bereich / hoher Bereich) mit der Palette des Chart-Widgets
  • Legende unter der Anzeige mit den drei Farben und den Grenzen, formatiert mit der Einheit
  • Ohne benutzerdefinierte Schwellenwerte → das ursprüngliche ApexCharts-Gradient wird beibehalten (kein Rückschritt)



Warum diese Designentscheidungen

  • Getrennte Kategorien statt einer übergeordneten Kategorie water-quality-sensor mit mehreren Typen: abgestimmt auf das bestehende Muster (co2-sensor, pm25-sensor, voc-sensor usw. — 1 Kategorie = 1 physikalische Messung)
  • Konfigurierbare Anzeige statt eines dedizierten Pool-Widgets: generisch = nützlich für viel mehr Anwendungsfälle (Batterie eines Elektrofahrzeugs, Bodenfeuchtigkeit, dB, Tankfüllstand usw.)
  • Keine intelligente, hardcodierte Farbgebung pro Kategorie (z. B. « pH zwischen 7,0-7,4 = grün »): dem Benutzer über den Editor überlassen, um neutral in Bezug auf die Branchenkonventionen zu bleiben (Pool ≠ Aquarium ≠ Spa)

Feedback ist willkommen :folded_hands: — vor allem zu:

  1. Die Benennung der Kategorien (ph-sensor / orp-sensor vs. Alternativen?)
  2. Die französische Bezeichnung für ORP — ist « Desinfektionsfähigkeit » für diejenigen, die sich nicht mit der Wasserchemie auskennen, klar genug?
  3. Gibt es andere Anwendungsfälle (Aquarien, Regenwasser, Hydroponik…), die von diesen Kategorien profitieren würden oder die andere benötigen würden (TDS, Leitfähigkeit, Salinität)?
  4. Die konfigurierbare Anzeige — sehen Sie andere Widgets, die die gleiche Behandlung von Schwellenwerten/Farben verdient hätten?

Vielen Dank fürs Lesen :slightly_smiling_face:

Ich suche schon lange nach einer Sonde für meinen Pool. Ich hatte immer Angst, mich darauf einzulassen, weil ich Angst hatte, dass die Kalibrierung total schiefgehen oder sich mit der Zeit zu stark ändern würde.

Kannst du mir sagen, wie es bei dir aussieht? :wink:

Hallo @guim31,

Ja natürlich, ich habe diese Sonde seit 2022, ich habe eine für einen Kollegen in 2023 (Sel) und eine für meinen Vater in 2024 (ebenfalls Sel) gekauft.

Ich selbst nutze im Sommer Aktivsauerstoff. 2024 hatte ich ein Problem mit einem falschen Wert, ich habe das Rekalibrierungskit gekauft und danach war alles wieder in Ordnung.
Beim Neustart 2025 habe ich sie komplett ersetzt, weil die Batterie leer war (angegeben für 2 Jahre, sie hat 3 Sommer gehalten). Leider war es die erste Version und sie war nicht zerlegbar, um nur die Batterie zu ersetzen, daher musste ich die neue Version komplett neu kaufen.
Die neuen können mit Schrauben am Kopf geöffnet werden, sodass man die Sonde oder die Batterie unabhängig voneinander ersetzen kann.

Mein Kollege hat die neue Version, er hatte bisher keine Probleme, vielleicht beim Neustart dieses Jahr für die Batterie. Was die Sonde betrifft, er ist Metrologe und sein Feedback ist, dass sie sehr gut funktioniert. Die Abweichungen sind normal bei dieser Art der Nutzung mit Winterruhe, aber die Kalibrierung bereitet keine Probleme. Was die Sonde betrifft, gibt er als Metrologe eine Lebensdauer von 5 bis 10 Jahren an, das ist völlig normal. Für die Nutzung mit Aktivsauerstoff oder Chlor sind die Sonden günstiger.

Mein Vater lebt im Süden, er überwintern sie nicht, und bisher keine Probleme, nicht einmal eine Rekalibrierung.

Für die Überwachung der Abweichungen zur Rekalibrierung kann man direkt mit der Anwendung Streifentests durchführen, um die Abweichungen zu erkennen. Ich habe mir auch einen elektronischen pH- und ORP-Sensor besorgt, um die Zuverlässigkeit zu erhöhen.

Ich kannte ORP nicht, aber Redox sagt mir viel mehr, denn wenn ich etwas prüfen muss, dann ist es der Redox-Wert (ich bin auch auf Salz).
Übrigens spricht man bei Pools eher von Redox als von ORP (oder ich muss mir einen größeren Pool zulegen :joy:).
Ich wäre eher für redox-sensor als für orp-sensor, was denkst du?

Und top für die Entwicklung, danke für alles, was du tust :wink:

Das klingt super! Tolle Entwicklung :slight_smile:

Ich sag dir Bescheid, sobald ich es mir anschauen konnte!

Für deine Sonde, wäre es nicht sinnvoll, ein Matterbridge-Plugin zu haben?

Zögere nicht, die Werkseinstellungen zu testen, dafür sind sie da :wink: (auch wenn es dich, der schon Claude Code nutzt, nicht mehr so beeindrucken wird!)

Vielen Dank für dein Feedback, ich werde mich dank dir mal genauer damit beschäftigen !!!

Hallo mutmut,

Du hast recht, was den Kontext Schwimmbad in Frankreich angeht: Redox ist tatsächlich der vorherrschende Begriff (Zodiac, Hayward, CCEI… alle bezeichnen ihre Regler als „Redox“). Kleine Präzisierung trotzdem: „Für Schwimmbäder spricht man mehr von Redox als von ORP“ → das stimmt in Frankreich, aber international (und im Englischen im Allgemeinen) ist ORP laut meinen kurzen Recherchen der Standard. Und in anderen Bereichen, die diese Kategorie nutzen könnten — Aquaristik, Hydroponik, Trinkwasseraufbereitung — dominiert ORP ebenfalls, vor allem weil fast alle online verkauften Sonden als „ORP-Sonde“ gekennzeichnet sind.
Technisch bezeichnen beide exakt dasselbe (Oxidations-Reduktions-Potential in mV), es ist nur eine Frage des regionalen/sektoralen Gebrauchs.

Daher würde ich einen Kompromiss vorschlagen: orp-sensor im Code beibehalten (internationale Kohärenz, universeller für SEO und die Materialsuche), aber „Redox / ORP“ in der französischen UI anzeigen.
Das spricht jeden an, französische Poolbauer wie Aquarianer, ohne jemanden auszuschließen.

Was denkst du?

Danke Pierre-Gilles :grinning_face_with_smiling_eyes:

Warum nicht beim Plugin Matterbridge! Die Verbindung zur iopool-API ist recht einfach, und es gibt bereits eine Beispielintegration auf der Home Assistant-Seite, an der man sich orientieren kann.
Von meiner Seite kann ich meinen Node-RED-Flow teilen, der bereits funktioniert, das sollte eine gute Basis für die Entwicklung sein.

Aber das wird eher für die Community als für mich sein: Ich bin im Moment wirklich kein Fan von Matter​:sweat_smile:

Ich werde die Fabrik gerne testen, ein bisschen neugierig, was dabei herauskommt.

Ich finde den Kompromiss sehr gut :+1:

Erledigt!

Von der KI erstelltes Issue => für die KI :sweat_smile: :

Mit einem Punkt, der von Claude Opus 4.7 hervorgehoben wurde:

« Ein einziger ehrlicher Vorbehalt, den man im Hinterkopf behalten sollte: Da pH und ORP keinen Standard-Matter-Cluster haben, wird die Darstellung in Gladys wahrscheinlich perfekt für die Temperatur und « best-effort » für pH/ORP sein — genau das ist die Art von Feedback, die Pierre-Gilles von diesem Test erwartet. »

EDIT :

Wir haben das Thema auf der Matter-Seite vertieft: Überprüfung direkt
im offiziellen SDK (project-chip/connectedhomeip) der Liste der Messcluster.
Urteil — Matter hat keinen pH- oder ORP/Redox-Cluster. Die einzigen
« Substanz »-Cluster sind die 10 Concentration Measurement (CO, CO2, NO2,
ozon, PM1/2.5/10, Formaldehyd, COV, Radon) : 100 % Luftqualität.

Suche nach pH Measurement, pH Measurement, redox, water quality im gesamten SDK → 0 Ergebnisse.

Was die Wasserqualität betrifft, ist es halb so wild:

  • Der Matter-ID-Raum reserviert tatsächlich Cluster für viele Wasserparameter
    (chlor, Fluorid, Trübung, gelöster Sauerstoff…), geerbt von Zigbee — aber
    sie sind nicht implementiert: Es gibt nur 10 Concentration Measurement
    Cluster, die tatsächlich existieren, und das sind die 10 der Luftqualität.
  • Vor allem: pH und ORP fehlen sogar im reservierten Bereich. Und das ist logisch
    — es sind keine Konzentrationen (pH ist eine logarithmische Skala, ORP ein Potenzial in mV), daher kann kein aktueller Matter-Cluster sie abbilden.

Fazit:

  • Temperatur → Ein Matterbridge-Plugin hat vollkommen Sinn (Standardcluster,
    bereits von Gladys abgebildet).
  • pH / ORP → Matter kann sie strukturell heute nicht darstellen.
    Der MQTT-Pfad des PR1 (ph-sensor / orp-sensor) bleibt daher der einzige
    funktionierende — die beiden Ansätze ergänzen sich.

Trotzdem: Das SDK hat kürzlich einen Cluster soil-measurement
(Bodenfeuchtigkeit) erhalten, also fügt die CSA tatsächlich neue Nischencluster
mit den Versionen hinzu. Ein « water quality »-Cluster ist nicht unmöglich — aber
langfristig, auf Seiten der CSA.

Ich werde trotzdem die Fabrik für den Temperaturteil testen, ich gebe dir Feedback! :slightly_smiling_face:

EDIT 2 :
Im Zweifel haben wir trotzdem ein Issue an der einzigen möglichen Stelle des Matter-Projekts erstellt:
https://github.com/project-chip/connectedhomeip/issues/72125

Ich habe das von der Fabrik generierte Plugin auf meiner Matterbridge-Instanz (3.7.9) getestet. Erste Bilanz :backhand_index_pointing_down:

:white_check_mark: Was gut funktioniert

  • Das Plugin wird installiert und läuft (Status „Laufend“), verbindet sich mit der iopool-API, entdeckt meinen Pool und benennt ihn korrekt (« Piscine DUBLEM », der in iopool definierte Name).
  • Die Wassertemperatur ist perfekt: wird in einem echten Matter-Temperaturmesscluster hochgeladen → 11,15 °C, nativ nutzbar. In diesem Teil macht das Plugin genau das, was es soll.

:warning: Die pH-/ORP-Falle — genau das, was wir erwartet hatten

Da Matter keine pH- oder ORP-Cluster hat, hat die KI ihr Bestes gegeben: Sie stellt den pH-Wert und den ORP-Wert… in Temperaturmessclustern dar. Ergebnis:

  • 3 „Temperatursensoren“ für einen einzigen Pool (Wasser + pH + ORP).
  • pH-Wert: die richtige Zahl (6,69), aber in °C angezeigt.
  • ORP: komplett falsch — angezeigt 5,73 statt 573 mV. Der Temperaturcluster ist in Hundertstelgrad (÷100 auf der Controller-Seite), und der ORP passt nicht in diese Skala → Wert durch 100 geteilt.

:cross_mark: Weitere festgestellter Fehler: Der „Online“-Status

Das Gerät wird dauerhaft als „Online“ markiert (reachable = true eingefroren). Dies spiegelt nur den Erfolg des Cloud-API-Aufrufs wider, nicht den tatsächlichen Zustand des Sensors — mein Sensor ist derzeit nicht im Wasser, und das Plugin zeigt ihn trotzdem als „Online“ mit den letzten Werten im Cache. Die iopool-API bietet jedoch isValid + measuredAt, um dies korrekt zu verwalten.

:magnifying_glass_tilted_left: Fazit

Die Fabrik hat einen sehr guten ersten Entwurf produziert: Verbindung, Erkennung, Temperatur → perfekt. Aber es bestätigt schwarz auf weiß die grundlegende Hürde: Matter kann strukturell keine pH- und ORP-Werte tragen. Die „Temperaturumgehung“ ist heute die einzige Möglichkeit, aber sie liefert falsche/täuschende Daten in jedem Controller.

:person_raising_hand: Entscheidung zu treffen — @pierre-gilles

Ich habe eine detaillierte Rückmeldung für das Issue #15 (Checkliste + Fehler + Ursache) vorbereitet. Bevor ich sie poste, deine Meinung zu pH/ORP auf der Matterbridge-Plugin-Seite:

  1. Wir behalten sie im Plugin, indem wir die Fallstricke klar dokumentieren (pH = Wert ohne Einheit lesen, ORP = ×100 mental)?
  2. Wir entfernen sie aus dem Matter-Plugin und akzeptieren „nur Temperatur“ als Matter-Lieferung, wobei pH/ORP auf dem MQTT-Kanal (Kategorien ph-sensor/orp-sensor meines PR) bleiben, bis Matter die Cluster hat?

Der reachable/„Online“-Fehler und ein kosmetisches productUrl sind durch einen --fix der Fabrik korrigierbar, was auch immer passiert.

(Parallel habe ich eine Feature Request auf project-chip/connectedhomeip für echte pH-/ORP-Cluster erstellt — ein langfristiges Thema von 6-24 Monaten, falls berücksichtigt.)

In diesem Fall ist der große Vorteil der Matterbridge-Plugins, dass ich nicht benötigt werde, also mach, was dir am besten erscheint :wink:

Mein Ziel ist es, nicht der Engpass bei diesen Themen zu sein, volle Freiheit :wind_face:

Toll !

Perfekt, ich nehme mir die Freiheit, das zu entscheiden :slightly_smiling_face:

Daher werde ich die Anforderung zur Plugin-Fabrik (issue #15) schließen — ein Matterbridge-Plugin ergibt für diese Art von Gerät keinen Sinn:

  • Matter hat keine pH- oder ORP-Cluster.
  • Folglich kann das generierte Plugin nur die Temperatur korrekt ausgeben — also etwa 10 % des Nutzens einer Sonde für ~250 €, während ein einfacher Wassertemperatursensor nur ~20 € kostet.
  • Der pH-Wert und der ORP-Wert sind dagegen unbrauchbar.

Hinweis: Die Fabrik hat sehr gut funktioniert — Installation, API-Anbindung, Pool-Erkennung und Temperatur: alles perfekt beim ersten Mal. Das Problem ist die Matter-Spezifikation. Ich habe vor dem Schließen einen detaillierten Testbericht in der Issue hinterlassen.

Als Ersatz werde ich ein Tutorial im Forum verfassen, um diese Sonden über Node-RED zu unterstützen. Dieser Weg erfasst 100 % der Daten (Temperatur, pH-Wert, ORP-Wert, Modus, Filterungsempfehlung, Behandlungsempfehlungsalarm), funktioniert seit 3 Jahren bei mir sehr gut und wird sich nun auf die neuen Kategorien ph-sensor / orp-sensor meines PR stützen.

Und für die langfristige Perspektive habe ich eine Feature Request auf project-chip/connectedhomeip für echte pH-/ORP-Cluster in Matter eröffnet — sobald das umgesetzt ist, wird der Matter-Weg für diese Sensoren wieder relevant.

Der erste PR ist gemerged und in Gladys Assistant 4.75 verfügbar: Release v4.75.0 · GladysAssistant/Gladys · GitHub

Ich habe gerade an diesem PR gearbeitet, es ist für mich in Ordnung, es ist gemerged und wird in der nächsten Version von Gladys veröffentlicht :slight_smile:

Verfügbar in Gladys Assistant 4.77: