MQTT Last Will

http://wiki.rocrail.net/doku.php?id=roc ... netnode-de
Post Reply
Martin1907
Posts: 151
Joined: 08.11.2015, 10:01
Location: Sinsheim / Germany
Contact:

MQTT Last Will

Post by Martin1907 » 25.04.2019, 07:26

Hallo Rob,

könntest du bei Rocnet MQTT und beim MQTT Dienst ein "Last Will" Publishen, mit dieser Funktionen sendet der Broker einen Nachricht an eine Topic wenn der Client wegbricht ohne sich abgemeldet zu haben.
Ich könnte mir vorstellen das man unter /rocnet/status nach dem hochfahren ein "start" schickt, beim regulären beenden ein "beendet" und als last will ein "error" oder ähnlich.

Diese Funktion würde mir helfen den Fahrstrom im Absturzfall abzuschalten und eine warnung auszugeben.

https://www.ibm.com/support/knowledgece ... 60360_.htm

Gruß

Martin

rjversluis
Site Admin
Posts: 42379
Joined: 10.04.2006, 08:48
Location: Speyer, Germany
Contact:

Re: MQTT Last Will

Post by rjversluis » 25.04.2019, 07:45

Hi Martin,

diese Link verweist auf ein Library; Ich brauche ein Doku der reale Implementierung.

Hier finde ich kein Last Will
http://public.dhe.ibm.com/software/dw/w ... -v3r1.html

Martin1907
Posts: 151
Joined: 08.11.2015, 10:01
Location: Sinsheim / Germany
Contact:

Re: MQTT Last Will

Post by Martin1907 » 25.04.2019, 08:03

Hallo Rob,

in deinem Link steht es unter Connect Will Topic und Will Message.
Will Topic

If the Will Flag is set, this is the next UTF-8 encoded string. The Will Message is published to the Will Topic. The QoS level is defined by the Will QoS field, and the RETAIN status is defined by the Will RETAIN flag in the variable header.

Will Message

If the Will Flag is set, this is the next UTF-8 encoded string. The Will Message defines the content of the message that is published to the Will Topic if the client is unexpectedly disconnected. This may be a zero-length message.

Although the Will Message is UTF-8 encoded in the CONNECT message, when it is published to the Will Topic only the bytes of the message are sent, not the first two length bytes. The message must therefore only consist of 7-bit ASCII characters.
Gruß

Martin

rjversluis
Site Admin
Posts: 42379
Joined: 10.04.2006, 08:48
Location: Speyer, Germany
Contact:

Re: MQTT Last Will

Post by rjversluis » 25.04.2019, 10:24

Hi Martin,

Mosquitto verbricht die Verbindung wenn ich ein Will setze...

rjversluis
Site Admin
Posts: 42379
Joined: 10.04.2006, 08:48
Location: Speyer, Germany
Contact:

Re: MQTT Last Will

Post by rjversluis » 25.04.2019, 14:09

Hallo Martin,

jetzt klappt es.
Wenn ich rocrail mit

Code: Select all

killall -9 rocrail

abschiesse kommt folgende Message auf Topic

Code: Select all

rocrail/service/info und rocnet/ht

Code: Select all

<exception text="abend"/>
abend= Abnormal End

Martin1907
Posts: 151
Joined: 08.11.2015, 10:01
Location: Sinsheim / Germany
Contact:

Re: MQTT Last Will

Post by Martin1907 » 26.04.2019, 13:59

Hallo Rob,

soweit ich es bislang testen konnte sieht es gut aus.

Vielen Dank

Gruß

Martin

rjversluis
Site Admin
Posts: 42379
Joined: 10.04.2006, 08:48
Location: Speyer, Germany
Contact:

Re: MQTT Last Will

Post by rjversluis » 26.04.2019, 14:02

Hi Martin,

das Ziel ist das dieses Bericht nie kommt. 8)
Aber jetzt hast du ein zusätzliche Notbremse.

joachimkr
Posts: 22
Joined: 02.06.2013, 17:37

Re: MQTT Last Will

Post by joachimkr » 10.09.2019, 01:06

Martin1907 wrote:
25.04.2019, 08:03
Hallo Rob,

in deinem Link steht es unter Connect Will Topic und Will Message.
Will Topic

If the Will Flag is set, this is the next UTF-8 encoded string. The Will Message is published to the Will Topic. The QoS level is defined by the Will QoS field, and the RETAIN status is defined by the Will RETAIN flag in the variable header.

Will Message

If the Will Flag is set, this is the next UTF-8 encoded string. The Will Message defines the content of the message that is published to the Will Topic if the client is unexpectedly disconnected. This may be a zero-length message.

Although the Will Message is UTF-8 encoded in the CONNECT message, when it is published to the Will Topic only the bytes of the message are sent, not the first two length bytes. The message must therefore only consist of 7-bit ASCII characters.
Gruß

Martin
Hallo Martin,
Was treibt Ihr da mit MQTT und warum?

Martin1907
Posts: 151
Joined: 08.11.2015, 10:01
Location: Sinsheim / Germany
Contact:

Re: MQTT Last Will

Post by Martin1907 » 10.09.2019, 06:49

Hallo Joachim,

wir nutzen MQTT um Rocnet Nachrichten zu übertragen. Ich habe eine Steuerung die auf diesem Wege kommuniziert. Der LastWill ist eine Grundfunktionalität von MQTT und teilt dem Broker mit was er im Falle eines Verbindungsabruches an die anderen Clients schicken soll.

Gruß

Martin

joachimkr
Posts: 22
Joined: 02.06.2013, 17:37

Re: MQTT Last Will

Post by joachimkr » 10.09.2019, 15:09

Hallo Martin,
Was ist denn der Grund und der Mehrwert, um diese Brücke zu bauen ?
Was bietet MQTT an, also inbesondere der Broker, was der Rocrail Server nicht bietet ?
Warum ich frage?
Weil RocNet ja ebenso Transportdienste bietet. Wenn Ihr nicht nur Rocrail, sondern weitere Server betreibt, kann ich mir ungefähr was denken, aber zur Einbindung von Sensoren und Aktoren?

Mich irritiert, dass eine Komponente den kompletten Shutdown zur Folge haben soll.
Viele Grüße,
Joachim

Martin1907
Posts: 151
Joined: 08.11.2015, 10:01
Location: Sinsheim / Germany
Contact:

Re: MQTT Last Will

Post by Martin1907 » 11.09.2019, 07:21

Hallo Joachim,

Wir haben eine Steuerung die schon vor der Rocrail Einführung in Betrieb war. Diese ist selbst entwickelt und sollte erhalten bzw. erweitert werden. Um das alles zu implementieren haben wir uns für Rocnet entschieden. Hierbei stehen Grundlegende mehrer Wege zur Verfügung. Bei mehreren Systemen liegt die Wahl zwischen UDP Multicast und MQTT. MQTT war für uns sehr gut zu implementieren.

Unsere Strucktur sieht so aus:

Wir haben den Rocrail Server. Ein eigenes Programm frägt die Plan.xml datei von RR ab und baut daraus die Konfiguration unseres Systems. Zur Busanbindung gibt es sog. Gateways diese bestehen aus RaspberryPis. Die Gateways fragen ihre Konfiguration bei diesem Programm ab und Kommunizieren dann mit dem Bus und mit RR. Das Programm bietet weitergehendende Möglichkeiten der Überwachung und strukturelle Darstellung.

Klar hätte man das auch über UDP lösen können, nur die Einteilung der Nachrichten in Topics mit der Möglichkeit nur bestimmte Dinge zu abonieren und eingehenden Traffic direkt über die Topics zu kategorisieren macht das ganze sehr übersichtlich.

Mit dem Will Topic möchte ich auf einen evt. Absturz von RR reagieren um z.B. selbstständig den Fahrstrom abzuschalten. Das war einfach auch einen erkenntniss der Vergangenheit.

Gruß

Martin

Post Reply

Return to “RocNetNode (DE)”