MQTT Null Werte abfragen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
manes
Beiträge: 175
Registriert: 23. Jul 2020 17:49
Answers: 0
Wohnort: Kreis Wesel

MQTT Null Werte abfragen

Beitrag von manes »

ich habe hier etliche ESp über MQTT eingebunden, mit Temperatursensoren. Ab und an kommt es vor, das Sensor keine DAten liefert. Dann wird im MQTT Explorer NULL angezeigt. In OH3 wird aber der letzte Wert angezeigt. Wie kann man erreichen, das OH merkt, das NULL geliefert wird und kein gültiger Wert mehr?
---------------------
liebe Grüße Manfred

Benutzeravatar
udo1toni
Beiträge: 13989
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: MQTT Null Werte abfragen

Beitrag von udo1toni »

openHAB bekommt schon mit, dass null geliefert wird, unterdrückt dies aber, vermutlich, weil die Persistence sonst nicht korrekt funktioniert.

Was meist Du damit, dass der MQTT Explorer NULL anzeigt?
Wenn ein Sensor keine Daten liefert, dann kommen auch keine Messages über MQTT rein, der MQTT Explorer würde also den letzten empfangenen Wert anzeigen, oder (falls er erst nach dem letzten Publish gestartet wurde) das Topic taucht erst gar nicht in der Liste der Topics auf.

In openHAB kannst Du eine NULL-Anzeige nach einem Timeout leicht erreichen, indem Du dem Item einen Expiration Timer verpasst (Item Metadata) und dort ein postUpdate NULL einträgst. Wenn ein Sensor alle 5 Minuten einen Wert sendet, stellst Du als Time z.B. 305 Sekunden ein, dann wird nach 305 Sekunden der Status auf NULL wechseln. Das geschieht aber erst 305 Sekunden nach dem letzten empfangenen Telegramm, also im Normalfall nie.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

manes
Beiträge: 175
Registriert: 23. Jul 2020 17:49
Answers: 0
Wohnort: Kreis Wesel

Re: MQTT Null Werte abfragen

Beitrag von manes »

im MQTT Explorer steht bei den Werten Temperature/Humidity "null" als Wert, wenn da nichts geschrieben wird vom Sensor. Ansonsten stehe da die Werte vom Sensor drin. das meinte ich damit
---------------------
liebe Grüße Manfred

Benutzeravatar
udo1toni
Beiträge: 13989
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: MQTT Null Werte abfragen

Beitrag von udo1toni »

Aber dann ist das ja der Sensor selbst, der da Probleme macht...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

manes
Beiträge: 175
Registriert: 23. Jul 2020 17:49
Answers: 0
Wohnort: Kreis Wesel

Re: MQTT Null Werte abfragen

Beitrag von manes »

das ist ja egal, mir geht es darum das ich dass mitbekomme. Bisher ist es so, das da ein Wert in OH steht, der eigentlich schon lange nicht mehr gültig ist. Sprich das System arbeitet mit falschen Werten im Zweifelsfale. Wenn man jetzt NULL abfangen kann, dann kann man sich zumindest eine Nachricht schicken dazu und dann reagieren. Ob ein ESP mit Tasmota online ist, das kann man gut abfragen, aber wenn nur ein Sensor ausfällt, dann verschwindet sowas schonmal im Gedränge.
---------------------
liebe Grüße Manfred

Benutzeravatar
udo1toni
Beiträge: 13989
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: MQTT Null Werte abfragen

Beitrag von udo1toni »

Ich fürchte, eine null-Payload kannst Du nicht aktiv erkennen. Du kannst lediglich erkennen, dass der Wert nicht aktualisiert wurde (über das Timeout), ob das nun wegen eines gar nicht geschickten Topics oder einer null-Payload in einem Topic passiert, sollte eigentlich egal sein.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

klaus1
Beiträge: 95
Registriert: 11. Jan 2022 13:48
Answers: 0

Re: MQTT Null Werte abfragen

Beitrag von klaus1 »

kann man auch den aktuellen wert mit einem Vorzeichen oder fett oder in rot oder so darstellen, sobald ein Timeout erreicht ist ? Dazu würde ich nicht null sondern sowas wie -%s oder so (variable) erwarten.

Benutzeravatar
udo1toni
Beiträge: 13989
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: MQTT Null Werte abfragen

Beitrag von udo1toni »

Du kannst eine passende Regel erstellen, die dann (über ein zweites Item) die Anzeige des eigentlichen Wertes beeinflusst.
Die Regel könnte z.B. beim aktualisieren des Wertes getriggert werden. Die Regel stellt dann die "normale" Ansicht ein und (re-)startet einen Timer. Läuft der Timer ab, wird weiterer Code ausgeführt, der die Anzeige in der gewünschten Art beeinflusst (fett, rot, whatever...).
Wie die Ansicht am besten manipuliert wird, hängt von der verwendeten UI ab, in Sitemaps wäre mein Ansatz z.B. über den Parameter labelcolor und/oder valuecolor (Schriftart bzw. Schriftschnitt lassen sich hier allerdings nicht beeinflussen), das steuernde Item muss nicht das angezeigte Item sein, also genau passend.
In der Main UI geht das noch sehr viel umfangreicher, da ich das selbst nicht nutze, möchte ich hier aber auf die diversen Beispiele hier, im englischen Forum und/oder Widgets im Marketplace verweisen. Der Schüssel ist aber immer der gleiche, Du erstellst eine Regel, welche in Abhängigkeit des Zeitpunkts des letzten Updates ein Item setzt, welches dann zum steuern der Anzeige verwendet wird. Evtl. kann man innerhalb der Main UI auch direkt auf den Zeitstempel zugreifen, dann könnte man auch ohne Regel und zusätzliches Item auskommen..
Wenn Du mehr als zwei, drei Widgets auf diese Weise steuern willst, bietet es sich an, die entsprechende Regel so zu gestalten, dass eine Regel für alle Items gleichzeitig arbeiten kann, ist etwas aufwändiger, weil Du ja trotzdem pro Widget einen Timer brauchst, das geht aber Timer Arrays.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten