NEWS
Haozee HZ-SL10 – Praxistest & ioBroker-Analyzer
-
Haozee HZ-SL10 Zigbee-Bodenfeuchtesensor – Praxistest, Diagnose und Kalibrierung mit ioBroker
Meine grundsätzlich funktionierende Balkonbewässerung braucht ein Update: vernünftige Bodenfeuchtesensoren. Meine bisherigen Sensoren waren ... naja.
Ich habe mich etwas intensiver mit dem Haozee HZ-SL10 Zigbee-Bodenfeuchtesensor beschäftigt.
Dabei ging es mir nicht nur darum, einen Feuchtewert in ioBroker zu bekommen, sondern vor allem um Fragen wie:
- Wie häufig meldet der Sensor tatsächlich?
- Wie stark unterscheiden sich mehrere Exemplare?
- Wie reproduzierbar sind die Messungen?
- Welchen Einfluss haben Einstecktiefe, Bodenkontakt und Verdichtung?
- Wie sinnvoll sind die vorhandenen Kalibrierparameter?
Daraus ist ein kleiner HZ-SL10 Analyzer / Debugger entstanden.
Er läuft als lokale HTML-Seite über den ioBroker-Web-Adapter und benötigt weder VIS noch den JavaScript-Adapter.
Hinweis:
Der Analyzer, das Installationsskript und Teile der Dokumentation sind mit Unterstützung von KI entstanden. Die praktische Umsetzung und Tests erfolgten auf meinem ioBroker-System.
Funktionen
Der Analyzer erkennt kompatible Sensoren automatisch und kann mehrere Geräte gemeinsam darstellen.
Enthalten sind unter anderem:
- Bodenfeuchte, Temperatur und Link Quality / LQI
- Batterie und Online-Status
- History-Daten
- Live-Aktualisierung über Socket.IO, bei Bedarf pausierbar
- frei wählbare Zeitfenster
- einzelne Kurven ein-/ausblendbar
- exakte Messwerte und Zeitstempel per Mouseover
- frei einstellbarer Y-Bereich
- verschiebbare X- und Y-Bereiche
- adaptive Lineale für kleine Zeit- und Wertebereiche
- optionale Temperaturreferenzen
- Detailansicht der ioBroker-Datenpunkte
- Änderung einiger freigegebener HZ-SL10-Konfigurationswerte
Sensorerkennung
Die Erkennung erfolgt nicht anhand des Gerätenamens, sondern anhand charakteristischer Datenpunkte.
Ein kompatibles Gerät muss unter anderem folgende States besitzen:
soil_moisture soil_sampling soil_calibration temperature temperature_samplingDer in ioBroker vergebene Gerätename wird anschließend nur für Anzeige und Sortierung verwendet.
Sinnvolle und eindeutige Namen sind trotzdem hilfreich, weil sich Kurven und Messwerte dadurch leichter den einzelnen Sensoren zuordnen lassen.
Benötigte ioBroker-Adapter
Für den vollständigen Betrieb werden benötigt:
- Zigbee
- History
- Socket.IO
- Web
Optional kann Bright Sky für eine DWD-Temperaturreferenz verwendet werden.
Der Installer prüft vorhandene Instanzen und deren Status, installiert selbst aber keine Adapter.
History
Für die Diagramme werden bei den HZ-SL10-Sensoren folgende States verwendet:
soil_moisture temperature link_qualityIst History bereits aktiviert, werden die vorhandenen Daten automatisch verwendet.
Fehlt die History-Konfiguration für einzelne benötigte States, zeigt der Installer dies an und bietet an, sie einzurichten. Eine Änderung erfolgt erst nach ausdrücklicher Bestätigung.
Socket.IO
Socket.IO liefert die Live-Werte an die Browserseite und wird außerdem für History-Abfragen und ausdrücklich ausgelöste Schreibvorgänge verwendet.
Die Live-Aktualisierung kann im Analyzer pausiert werden. Beim Wiedereinschalten werden aktuelle Werte und History neu synchronisiert.
Bright Sky
Ist Bright Sky vorhanden, kann dessen aktuelle Temperatur auf Wunsch als zusätzliche Referenzkurve eingeblendet werden.
Soweit die Daten vorhanden sind, zeigt der Analyzer dazu auch Informationen wie Wetterstation, Stations-ID, Entfernung und Messzeit an.
Eigene Temperaturreferenz
Zusätzlich oder alternativ zu Bright Sky kann ein beliebiger numerischer ioBroker-State als Temperaturreferenz verwendet werden.
Der Installer erwartet dafür die vollständige State-ID, zum Beispiel:
zigbee.0.a4c13815c2a35fc5.temperatureEr prüft, ob der State existiert, numerisch ist und ob die Einheit zu einer Temperatur passt. Bei einer auffälligen Einheit erfolgt eine zusätzliche Rückfrage.
So lässt sich zum Beispiel ein besserer Temperatur-/Feuchtesensor direkt neben den HZ-SL10 legen und als Referenz für den Vergleich verwenden.
Schreibbare Sensorparameter
Der Analyzer ist in erster Linie ein Diagnosewerkzeug. Einige Konfigurationswerte können trotzdem direkt geändert werden:
soil_calibration soil_sampling soil_warning temperature_calibration temperature_sampling temperature_unitEin Eingabefeld erscheint nur dann, wenn der jeweilige ioBroker-State auch tatsächlich mit
common.write = truegekennzeichnet ist.
Die Änderung erfolgt erst nach Betätigung von Setzen. Messwerte, Rohdaten und andere States bleiben read-only.
Device Info
Für den ausgewählten Sensor werden die vorhandenen States in einer Detailansicht dargestellt. Der technische ioBroker-State-Name bleibt sichtbar; darunter steht jeweils eine kleinere deutsche Beschreibung.

Installation
Der Installer kennt drei Modi:
./hz-sl10-analyzer-installer.sh --check ./hz-sl10-analyzer-installer.sh --test ./hz-sl10-analyzer-installer.sh --install--checkFührt ausschließlich Prüfungen durch.
Es werden keine Dateien geschrieben und keine Einstellungen verändert. Damit sollte man also anfangen.
--testErzeugt eine separate Testseite:
0_userdata.0/hz-sl10-analyzer-test/index.htmlEine vorhandene Produktivseite wird dabei nicht verändert.
Beispiel:
http://<ioBroker-IP>:8082/0_userdata.0/hz-sl10-analyzer-test/index.html--installInstalliert dieselbe Analyzer-Version am normalen Ziel:
0_userdata.0/hz-sl10-analyzer/index.htmlVor dem Schreiben der Produktivseite erfolgt noch einmal eine explizite Bestätigung.
Beispiel:
http://<ioBroker-IP>:8082/0_userdata.0/hz-sl10-analyzer/index.htmlInstallationsumgebung
Entwickelt und getestet wurde der Installer auf einer normalen ioBroker-Installation unter Linux.
Er verwendet keine Raspberry-Pi-spezifischen Pfade. Eine normale ioBroker-Installation in einer Proxmox-VM oder einem LXC-Container sollte daher grundsätzlich auf dieselbe Weise funktionieren.
Docker wurde nicht getestet.
Bei einer Docker-Installation ist insbesondere zu beachten:
- das Skript muss innerhalb des ioBroker-Containers ausgeführt werden,
- externe Port-Mappings von Web und Socket.IO können von den intern erkannten Ports abweichen,
- die am Ende ausgegebene URL kann deshalb eine interne Container-Adresse oder interne Ports enthalten.
Wer den Installer unter Proxmox, LXC oder Docker ausprobiert und Anpassungen dafür entwickelt, darf Erfahrungen und Verbesserungen gerne beisteuern.
Sicherheitsprinzip des Installers
Das Grundprinzip lautet:
erkennen → anzeigen → fragen → erst dann ändern
Der Installer installiert keine Adapter selbst und aktiviert auch keine History- oder Referenzkonfiguration ungefragt.
Vor dem Schreiben der Analyzer-Seite wird außerdem das tatsächlich erzeugte JavaScript auf Syntaxfehler geprüft. Schlägt diese Prüfung fehl, wird die HTML-Seite nicht geschrieben.
Installationsprotokoll
Für Test und Produktion gibt es jeweils ein eigenes
install.log:0_userdata.0/hz-sl10-analyzer-test/install.logbzw.
0_userdata.0/hz-sl10-analyzer/install.logDas Log lässt sich über den Button Install-Log direkt aus dem Analyzer in einem neuen Tab öffnen.
Vorhandene Protokolle werden bei einem weiteren Lauf nicht verworfen. Jeder Lauf wird als eigener Abschnitt angehängt:
============================================================ RUN START Timestamp: 2026-08-30T21:15:00+02:00 Script version: v31 Host: iobroker Mode: --test ============================================================ ... ============================================================ RUN END Timestamp: 2026-08-30T21:15:12+02:00 ============================================================Damit lässt sich später nachvollziehen, welche Änderungen bei welchem Lauf vorgenommen wurden.
Erste Erkenntnisse aus dem Praxistest
Ich teste derzeit fünf HZ-SL10 gleichzeitig im selben Behälter.
Dabei zeigte sich recht deutlich, dass der mechanische Bodenkontakt einen erheblichen Einfluss auf die Messwerte hat.
Mehrere Sensoren zeigten zunächst reproduzierbare Abweichungen voneinander. Nach Herausnehmen, Durchmischen des Bodens und erneutem möglichst identischem Einsetzen lagen die Werte wesentlich näher zusammen.
Einfluss haben dabei unter anderem:
- Einstecktiefe
- Verdichtung unmittelbar an den Elektroden
- kleine Luftspalte
- Position im Substrat
- erneutes Herausziehen und Einstecken
Für den Vergleich mehrerer HZ-SL10 ist deshalb wichtig, die Sensoren möglichst unter gleichen mechanischen Bedingungen einzusetzen.
Eine Abweichung zwischen zwei Sensoren ist nicht automatisch ein Kalibrierfehler. Bevor größere Korrekturen über
soil_calibrationvorgenommen werden, sollte zunächst ein möglichst vergleichbarer Einbau sichergestellt sein.Messintervall
Während deutlicher Feuchteänderungen haben meine Exemplare ungefähr alle 30 Sekunden neue Messwerte geliefert.
Dabei muss man zwischen einer tatsächlichen Zigbee-Meldung und einem History-Eintrag unterscheiden.
Ist beispielsweise
changesRelogInterval = 300konfiguriert, kann History nach fünf Minuten einen unveränderten Wert erneut speichern. Daraus lässt sich nicht ableiten, dass der Sensor zu diesem Zeitpunkt erneut per Zigbee gesendet hat.
Weiterer Kalibriertest
Für einen aussagekräftigeren Vergleich lasse ich die Sensoren gemeinsam langsam austrocknen, ungefähr über den Bereich:
80 % → 20 %Dabei sollen sie möglichst nicht mehr bewegt werden.
Zusätzlich kann der komplette Behälter regelmäßig gewogen werden. Näherungsweise gilt:
1 g Gewichtsverlust ≈ 1 ml WasserverlustDas ersetzt keine echte volumetrische Bodenfeuchtemessung, liefert aber eine unabhängige Größe für den Wasserverlust.
Damit sollte sich besser erkennen lassen, ob einzelne HZ-SL10 über einen größeren Feuchtebereich tatsächlich systematisch voneinander abweichen - hoffe ich jedenfalls.
Aktueller Stand
Der Analyzer ist funktional inzwischen weitgehend fertig. Ziel war bewusst kein weiteres VIS-Widget, sondern ein kleines lokales Diagnosewerkzeug für den HZ-SL10.
Das Installationsskript veröffentliche ich zunächst nicht direkt. Falls Interesse besteht, stelle ich es gerne zur Verfügung.
Rückmeldungen, Tests auf anderen ioBroker-Installationen und Weiterentwicklungen – etwa für Docker, Proxmox oder LXC – sind ausdrücklich willkommen.
Vorab aber schonmal der obligatorische...
Sicherheitshinweis
Die Nutzung erfolgt auf eigene Gefahr.
Das Skript nimmt nach ausdrücklicher Bestätigung Änderungen an der ioBroker-Konfiguration vor und erzeugt Dateien unter
0_userdata.0. Trotz der eingebauten Prüfungen würde ich erste Versuche nicht auf einem wichtigen Produktivsystem durchführen.Vor der Verwendung sollte in jedem Fall ein aktuelles ioBroker-Backup vorhanden sein.
Interessant wären außerdem Erfahrungen anderer Nutzer mit:
- tatsächlichem Meldeintervall
- Verhalten von
soil_sampling - Wirkung von
soil_calibration - Unterschieden zwischen mehreren Exemplaren
- Langzeitverhalten beim Austrocknen
Wenn Interesse am Analyzer bzw. Installer besteht, einfach hier im Thread melden.
Empfohlene Tags:
zigbee,bodenfeuchte,hz-sl10,history,analyzer
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden