Fixed: Virtuelle MQTT-JSON Zentrale
Posted: Wed Aug 04, 2021 11:39 am
Hallo zusammen,
bin jemand, der in der Coronazeit die Eisenbahn der Jugend (Märklin) wiederentdeckt hat und die digitale Welt eingestiegen ist.
Ich habe im Internet das Railuino-Projekt https://github.com/MBuratto/railuino gefunden, dass einen Arduino mit CAN-Bus Shield benutzt, um mittels der Gleisbox von Märklin die Modelleisenbahnanlage zu steuern.
Um eine Anbindung an ein tcp-Netz herzustellen habe ich den Arduino durch einen esp8266 (mit WLAN) und das Shield durch ein Can-Bus Module arduino mcp2515 ersetzt. Dazu habe ich den CAN Bus Treiber in der Railuino Library ausgetauscht. im esp8266 Sketch wird eine mqtt Schnittstelle eingebunden, auf denen der Arduino horcht (subscribe) und Messages legt (publish).
Das Datenformat der Messages ist JSON.
Soweit funktioniert es. Habe mir 2 Pendelzugteststrecken aufgebaut, eine mit Märklin Gleisen und MM2 Lok und eine mit 2-Leiter System (Peco Gleise mit DCC TRIX Lok). Als Rückmelder habe ich mir ein reed-Kontakt System gebaut, das mit einem weiteren esp8266 abgefragt wird und das bei überfahren dieses Event als JSON auf die MQTT Queue überträgt.
Als überliegende Steuerungssoftware habe ich ein python Skript geschrieben, das auf der MQTT horcht, Events entgegennimmt, entscheidet, was zu tun ist (Lok starten, Lok stoppen, Fahrtrichtung wechseln etc.). und dieses in wieder JSON verpackt und auf die MQTT Queue legt.
(Dieses wird s.o. vom Railuino-Arduino entgegengenommen, der JSON entpackt und in Railuino Libraryfunktionen umgesetzt und über den das CAN-BUS Modul auf die Gleisbox und dann damit auf die Schiene übertragen.)
Jetzt zu meiner Frage: Wäre es eine Idee und möglich, mein spezielles python Skript durch RailContral zu ersetzen? D.h. die Kommunikation würde gegen eine virtuelle MQTT-JSON Schnittstelle erfolgen, an der sich mein kleines Projekt mit Railuino oder jegliches andere andocken könnte.
Mit freundlichen Grüßen
Joachim
p.s.: Im Anhang ist noch eine Zeichnung
bin jemand, der in der Coronazeit die Eisenbahn der Jugend (Märklin) wiederentdeckt hat und die digitale Welt eingestiegen ist.
Ich habe im Internet das Railuino-Projekt https://github.com/MBuratto/railuino gefunden, dass einen Arduino mit CAN-Bus Shield benutzt, um mittels der Gleisbox von Märklin die Modelleisenbahnanlage zu steuern.
Um eine Anbindung an ein tcp-Netz herzustellen habe ich den Arduino durch einen esp8266 (mit WLAN) und das Shield durch ein Can-Bus Module arduino mcp2515 ersetzt. Dazu habe ich den CAN Bus Treiber in der Railuino Library ausgetauscht. im esp8266 Sketch wird eine mqtt Schnittstelle eingebunden, auf denen der Arduino horcht (subscribe) und Messages legt (publish).
Das Datenformat der Messages ist JSON.
Soweit funktioniert es. Habe mir 2 Pendelzugteststrecken aufgebaut, eine mit Märklin Gleisen und MM2 Lok und eine mit 2-Leiter System (Peco Gleise mit DCC TRIX Lok). Als Rückmelder habe ich mir ein reed-Kontakt System gebaut, das mit einem weiteren esp8266 abgefragt wird und das bei überfahren dieses Event als JSON auf die MQTT Queue überträgt.
Als überliegende Steuerungssoftware habe ich ein python Skript geschrieben, das auf der MQTT horcht, Events entgegennimmt, entscheidet, was zu tun ist (Lok starten, Lok stoppen, Fahrtrichtung wechseln etc.). und dieses in wieder JSON verpackt und auf die MQTT Queue legt.
(Dieses wird s.o. vom Railuino-Arduino entgegengenommen, der JSON entpackt und in Railuino Libraryfunktionen umgesetzt und über den das CAN-BUS Modul auf die Gleisbox und dann damit auf die Schiene übertragen.)
Jetzt zu meiner Frage: Wäre es eine Idee und möglich, mein spezielles python Skript durch RailContral zu ersetzen? D.h. die Kommunikation würde gegen eine virtuelle MQTT-JSON Schnittstelle erfolgen, an der sich mein kleines Projekt mit Railuino oder jegliches andere andocken könnte.
Mit freundlichen Grüßen
Joachim
p.s.: Im Anhang ist noch eine Zeichnung