Wie stelle ich fest, das ein device mit MQTT nicht mehr sendet ?

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Caddy
Beiträge: 117
Registriert: 16. Nov 2018 08:21
Answers: 0

Wie stelle ich fest, das ein device mit MQTT nicht mehr sendet ?

Beitrag von Caddy »

Hallo zusammen,

ich habe mir einen raspberry gebaut an dem mehrere DS1820 hängen die die Temperatur messen.

Mit einem python Skript und einen MQTT Clienten sende ich die Werte im selben Format wir die Sonoff das machen

Code: Alles auswählen

{"Time":"2019-01-13T15:02:46","DS18B20":{"Temperature": 20.56},"TempUnit":"C"}
Diesen lese ich im Item so aus

Code: Alles auswählen

Number	TestTemp1 	"Speichertemperatur 1 [%.1f °C]"	<temperature> (gdurchschnitt)	{ mqtt="<[broker:tele/temperatur1/SENSOR:state:JSONPATH($.DS18B20.Temperature)]" }


und zeige es in der Sitemap mit

Text item=TestTemp1

an. Klappt auch soweit alles ganz gut.

Jetzt die Frage wie kann ich feststellen wenn der Client nicht mehr sendet ?
Sprich solange er sendet werden die Daten aktualisiert.
Wie kann ich aber erfahren das die Daten nicht mehr kommen, frei nach dem Motto wenn ONLINE changed OFFLINE
das ganze damit ich in der Sitemap ein OFFLINE einblenden kann und merke wann meine Temperaturen nicht mehr kommen oder der raspberry hängt.

Feuer frei für eure Ideen :-)

Danke Caddy

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Wie stelle ich fest, das ein device mit MQTT nicht mehr sendet ?

Beitrag von peter-pan »

Hast du es schon mal mit einem zweiten Item versucht, dass fast genauso aussieht wie dein jetziges, aber mit der JSONPATH-Variablen $.Time, bzw.
was für eine String bekommst du denn, wenn der Sensor keine Daten mehr sendet ?
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

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

Re: Wie stelle ich fest, das ein device mit MQTT nicht mehr sendet ?

Beitrag von udo1toni »

Der korrekte Weg, das umzusetzen, wäre ein Last Will Topic (LWT) zu setzen. LWT wird z.B. auf OFFLINE gesetzt, anschließend schickt das Device ONLINE auf das Topic des LWT. Wenn das Device nicht mehr sendet, setzt der Broker das LWT automatisch auf OFFLINE, was Du dann leicht mit openHAB auswerten kannst.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Caddy
Beiträge: 117
Registriert: 16. Nov 2018 08:21
Answers: 0

Re: Wie stelle ich fest, das ein device mit MQTT nicht mehr sendet ?

Beitrag von Caddy »

Da ich es richtig machen möchte ist der Weg LWT

Ich habe versucht mich zu belesen, leider verstehe ich das mit dem LWT nicht richtig

Sehe ich das richtig, das ich beim Verbindungsaufbau etwas mitgeben muss ODER eine regelmäßige LWT Message mit Online ?

Ich habe mein sonoff mal beobachtet der sendet alle 10 Minuten ein LWT mit online

Reicht diese Meldung?

Danke Caddy

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

Re: Wie stelle ich fest, das ein device mit MQTT nicht mehr sendet ?

Beitrag von udo1toni »

So sollte das funktionieren:
  1. Dein Gerät sendet beim Verbinden mit dem Broker ein LWT offline.
  2. Das Gerät sendet danach regelmäßig auf das Topic online.
  3. Wenn der Kontakt zum Broker verloren geht, sollte der Broker das LWT stellvertretend für Dein Gerät mit offline publishen.
Genau hab ich mir das aber auch noch nicht angeschaut.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Caddy
Beiträge: 117
Registriert: 16. Nov 2018 08:21
Answers: 0

Re: Wie stelle ich fest, das ein device mit MQTT nicht mehr sendet ?

Beitrag von Caddy »

Super, danke. Werde ich in den pythonskript so einbauen und dann hier wieder melden wie es läuft ...

Caddy

Antworten