Rocrail über externen MQTT Broker steuern - /service/client

Internet of Things, MQTT, Node-RED

Rocrail über externen MQTT Broker steuern - /service/client

Postby I020006 » 14.08.2018, 10:14

Guten Tag Rocrailer

Möglicherweise müsst Ihr noch etwas Nachsicht und Gedult mit mir haben. Das ist alles noch etwas neu für mich hier.
Auf Anraten der Kollegen starte ich hier einmal ein neues Thema mit meinem Anliegen.

Ich bin auf der Suche nach etwas Unterstützung für ein privates Projekt, das ich angerissen habe und nun etwas feststecke.
Ich darf in meinem Berufsalltag auch schon lange nichts mehr entwickeln und es ist auch schon eine grosse Weile her.
Es ist noch nicht lange her, dass ich mich entschieden habe, wieder einmal etwas in die Tasten zu greifen. Ich habe mir dafür ein Wetterstationsbeispiel mit einem ESP32 ausgesucht und nach etwas hängen und würgen hat sich mein ESP32 mit dem WLAN verbunden, sich mit einem MQTT Broker verbunden - in meinem Fall eclipse.org und munter Temperaturdaten an die Plattform meines Arbeitgebers gesendet. Soweit so gut. Es scheint mich noch nicht ganz abgehäng zu haben.

https://blogs.sap.com/2017/08/15/create ... of-things/

Nun zu Stufe zwei. Ich habe eine Applikation gebaut, welche MQTT Messages versenden wird und zur Visualisierung dieser Messages und der IoT Architektur wollte ich eine Modelleisenbahn damit steuern. Ich habe mir also ein Digitalbahn Starterkit besorgt, habe mir Rocrail installiert und in Rocview einen Gleisplan nach youtube Anleitung zusammengezeichnet. Der funktioniert im Automatikbetrieb auch ganz ordentlich. Nun habe ich mich an die MQTT Geschichte gemacht. Den Service im Rocrail mit meinem externen MQTT Broker konfiguriert und schon kriege ich über das topic rocrail/service/info munter Messages an den MQTT Broker gesendet, welche ich in der MQTTTool App auf meinem IOS Handy angezeigt kriege, wenn ich mich auf das /info Topic subscribe und wenn ich in Rocview Tasten drücke. Also jetzt anders rum habe ich mir gesagt. Geht doch flott. Über das MQTT topic rocrail/service/client möchte ich meinen Gleisplan im Automatikmodus steuern. Ich bin davon ausgegangen, dass mein rocrailserver - wenn er info Messages nach draussen schicken kann, auch Meldungen empfangen wird. Ich habe also versucht eine Message zusammenzubauen und über meine IOS MQTTTool App via den eclipse.org Broker in Richtung Rocrail zu senden. Die Meldungen kommen vom IOS App auf dem Broker an aber mein Server scheint auf diesem Topic Ohr taub zu sein. Keine Reaktion.

Ich denke, ich mache hier irgendetwas grundsätzlich falsch. In den Foren arbeiten alle mit einem lokalen Moskito Server. Aus meinem Wetterstationsprojekt hätte ich jetzt aber erwartet, dass rocrail auch mit einem externen Broker arbeiten kann und ich den Gleisplan im Automatikmodus über MQTT Messages bewegen kann.

Würde mich über eine Reaktion freuen.
Mit freundlichen Grüssen Andreas aus Biel Schweiz
I020006
 

Re: Rocrail über externen MQTT Broker steuern - /service/cli

Postby rjversluis » 14.08.2018, 10:47

Hi Andreas,

das hört sich so an als ob der XML welche du sendest nicht richtig ist.
Schaue in der Server Trace nach, oder hänge hier die übliche Dateien an.

Hier noch ein Forum Thema welche MQTT verwendet:
viewtopic.php?f=117&t=13326&hilit=mqtt

Und hier sein Wiki Doku:
https://wiki.rocrail.net/doku.php?id=us ... eporocrail
Best Regards, Rob.
:!: PS: Do not forget to attach the usual files.
:!: PS: Nicht vergessen die übliche Dateien an zu hängen.
[ macOS - Linux] - [ N: CBUS - CANGCx ] - [ G: CBUS - CANGCx ]
rjversluis
Site Admin
 

Postby HolgerW » 14.08.2018, 15:51

Ich sende mit einem ESP8266 Rückmeldedaten an Rocrail, verwende den Raspi als Accesspoint und eigenem MQTT Server.
Das funktioniert sehr gut.

Holger
Tillig TT, Rocrail/Rocview auf Raspberry 3B+ Raspbian GNU/Linux 9 (stretch), Z21, S88 über MQTT/ESP8266 (WLan), ServoDekoder_WDec04b1
HolgerW
 

Re: Rocrail über externen MQTT Broker steuern - /service/cli

Postby eporocrail » 15.08.2018, 15:59

Hallo Andreas

Also mische ich mich doch mahl ein.
Obwohl meine Erfahrung mit XML Berichte ueber /service/client sich stark im Grenzen hält kann ich dir nur raten dir erst mahl die Befehls Umfang von Rocrail und die "XML syntax" an zu schauen. https://wiki.rocrail.net/doku.php?id=rocrail-server-scripting-en
Es gibt noch viel mehr info aber ich konnte es auf die Schnelle nicht finden.

Damit jemand dich helfen kann ist es gefragt dein Plan Datei, ".ini" Datei und "server trace" Datei an zu hangen.

Die Dateien Zippen und hoch laden.

Viel Spass
Ellard
Kind regards Ellard.
Scale N Peco Code 55, WiFi Eltraco for sensing and switching, DCC++ on Arduino Nano for driving, ROCRAIL server on Raspi
eporocrail
 

Re: Rocrail über externen MQTT Broker steuern - /service/cli

Postby I020006 » 21.08.2018, 19:46

Guten Abend Kollegen
Erst einmal herzlichen Dank, dass ihr auf mein Thema reagiert.
Möglicherweise habe ich noch nicht ganz verstanden, welche Message ich an den MQTT Broker in welchem Format senden muss.
Nehmen wir das einfache Beispiel mit dem Power ON aus dem Pyton Script welches mir Ellard genannt hat.

Erst habe ich ein paar Mal mit dem Knopf in Rocview Power on und off gemacht um zu prüfen, ob ich das auch in der Trace Datei sehe und ob diese Informationen an das topic rocrail/service/info gesendet werden:
20:15:02 Global power OFF
20:14:58 Global power ON
20:14:44 Global power OFF
20:14:37 Global power ON
20:13:17 Global power OFF
20:13:14 Global power ON
20:13:14 Global power OFF
20:13:10 Global power ON

Scheint alles zu funktionieren.

Jetzt habe die Message <sys cmd=\"go\"/> an meinen externen Broker an das topic rocrail/service/client gesendet um Power einzuschalten.
Ich sehe weder in der Trace Datei noch sonst irgendwo eine Reaktion, dass Rocrail auf diesem Topic etwas empfangen hätte. Auf dem Broker kann ich die Message sehen. Die liegt da und könnte abgeholt werden.
Ich habe die Message etwa 10 Mal auf den Broker gesendet, damit wirklich etwas im Trace sichtbar würde. Ich sehe leider nichts.

Ich habe mal die tracedateien und meine Plan und ini Datei angehängt.

Würde mir vielleicht helfen, wie die Message for Power ON schlussendlich aussehen sollte. Mit dem XML Header kann ich gerade noch nichts anfangen. Das verstehe ich nicht, wofür es diesen Header braucht.

Grüsse Andreas
You do not have the required permissions to view the files attached to this post.
I020006
 

Re: Rocrail über externen MQTT Broker steuern - /service/cli

Postby rjversluis » 22.08.2018, 06:25

Hi Andreas,

teste es doch erst mal mit mosquitto_pub:
https://wiki.rocrail.net/doku.php?id=ro ... en#clients
Best Regards, Rob.
:!: PS: Do not forget to attach the usual files.
:!: PS: Nicht vergessen die übliche Dateien an zu hängen.
[ macOS - Linux] - [ N: CBUS - CANGCx ] - [ G: CBUS - CANGCx ]
rjversluis
Site Admin
 

Re: Rocrail über externen MQTT Broker steuern - /service/cli

Postby I020006 » 21.09.2018, 15:33

Und sie bewegt sich doch!!
Hat ein wenig (sehr lange) gedauert und ich wollte schon aufgeben.
Per Zufall habe ich entdeckt, dass ich in meinem MQTT Tool auf meinem Handy das Topic rocrail/service/client mit einem anschliessenden Leerschlag versehen hatte.
Das ist fast nicht zu sehen und war der Grund, wieso mein Rocrail einfach nichts hören wollte. Nun kann ich auf meinem Handy Befehle an mein Rocrail senden und ich sehe diese auch im Serverlog und sogar RocView bewegt sich.
Noch nicht so wie ich es möchte aber auf alle Fälle bewegt sich etwas.

Bis jetzt funktionieren die folgenden Befehle welche ich unter dem Command auto gefunden habe http://www.rocrail.net/doc/rocrail-wrap ... .html#auto:

<auto cmd="on"/> für cmd können die folgenden Parameter eingesetzt werden: on,off,start,stop,reset

Im beigelegten Server Log sieht man, wie die commands von meinem Handy als MQTT Messages über den externen Broker gesendet und vom Listener von Rocrail empfangen und interpretiert werden. Eigentlich genau so, wie ich mir das vorgestellt hatte. Es braucht nicht unbedingt einen lokalen Mosquitto Broker. Rocrail muss sich einfach mit dem externen Broker über das Internet verbinden können.

rocrail.009.trc


Jetzt muss ich mir einmal einen einfacheren Gleisplan aufbauen und mit den Commands rumspielen. Habe noch nicht abschliessend verstanden, wie ich jetzt die Rückmelder steuere ... Ich hoffe, das dauert nicht wieder so lange wie den Leerschlag im Topic zu finden.

Grüsse Andreas
You do not have the required permissions to view the files attached to this post.
I020006
 


Return to IoT (DE)