Seite 1 von 1

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

Verfasst: 13. Jan 2019 15:09
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

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

Verfasst: 13. Jan 2019 15:43
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 ?

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

Verfasst: 13. Jan 2019 19:20
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.

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

Verfasst: 14. Jan 2019 21:41
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

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

Verfasst: 14. Jan 2019 23:57
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.

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

Verfasst: 15. Jan 2019 21:31
von Caddy
Super, danke. Werde ich in den pythonskript so einbauen und dann hier wieder melden wie es läuft ...

Caddy