Automatisch rangieren eines Zuges (Rocnet + MQTT)

Re: Automatisch rangieren eines Zuges (Rocnet + MQTT)

Postby rjversluis » 28.08.2018, 11:08

Hi Ellard,

die Sensors Meldungen sollten rechtzeitig ankommen, und auch wenn ein Zug anhalten muss sollte zügig übermittelt werden.
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: Automatisch rangieren eines Zuges (Rocnet + MQTT)

Postby eporocrail » 28.08.2018, 12:33

Hi Rob

Und Recht du hast.

Aber "rechtzeitig" und "zügig" sind nicht FEST definiert worden. Mann kann Maßnahmen nehmen um Abläufe rechtzeitig durch zu führen. Und auch Meldungen kann mann schleunigst übermitteln.
Um es noch etwas deutlicher zu sagen, wenn mann weis um wieviel eine Bremsstrecke sich verlängert wegen Verzögerung in die Übertragung von einer Sensormeldung, kann mann damit rechnen bei der Wahl von der Stelle wo man den Sensor einbaut. Ich denke es kommt auf das wissen an.

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: Automatisch rangieren eines Zuges (Rocnet + MQTT)

Postby eporocrail » 02.09.2018, 09:36

Hallo Rocrailer

Ich habe das Bedürfnis mehrere Gleise auf einmal zu überwachen. Hierfür sind IR LEDs weniger geeignet da die IR Strahl zu breit ist.
Ich habe die Lösung gefunden mit einem Laser Modul, KY-008. Als Empfänger kommt ein LDR Modul zum Einsatz.
Beide sind sehr einfach zu verwenden. Und vom Preis her vergleichbar mit der IR Variante.

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: Automatisch rangieren eines Zuges (Rocnet + MQTT)

Postby eporocrail » 04.09.2018, 14:39

Hallo Rocrailer

Ich komme immer näher am Ziel.

Wenn einer Rangier Vorgang beendet ist, wird die Belegung der Gleise vom FY Decoder zum Decoupler Decoder geschickt. Auf der Decoupler Decoder ist der Software Modul der die Kontrolle hat. Die Belegungsmeldung wird richtig aufgegriffen und der FY wird zum ersten Gleis wo sich ein Wagen befindet gesteuert.
Während die Bewegung vom FY wartet die Steuerung Software in einer Program Schleife bis eine MQTT Meldung eintrifft das der FY in Position ist.
Diese Meldung wird zwar gesendet aber die Program Schleife wird nicht unterbrochen.
Ich habe den Verdacht das die Berichte die im Hintergrund empfangen werden zu wenig Vorrang haben um eine Program Schleife zu unterbrechen.

Ich habe noch keinen Weg aus dieser Sackgasse heraus gefunden.
Wenn jemand eine Idee hat, gerne.

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: Automatisch rangieren eines Zuges (Rocnet + MQTT)

Postby HolgerW » 04.09.2018, 16:50

Hallo Ellard,
wo kann man denn die Software einsehen?
Wenn es alles auf dem ESP8266 passiert muss man regelmäßig mqtt_client.loop(); aufrufen.
Der Empfang löst den entsprechenden callback im Interrupt aus, darauf muss man dann reagieren.

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

Re: Automatisch rangieren eines Zuges (Rocnet + MQTT)

Postby eporocrail » 05.09.2018, 06:14

Hallo Holger

Danke für dein Hinweis!
Damit hast du mich auf den richtigen Spur gebracht. Es funktioniert. Ich hatte eine do .. while Schleife ohne client.loop() Aufruf. Nachdem ich diesen Aufruf eingefügt hatte, ging es wie am Schnürchen.

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: Automatisch rangieren eines Zuges (Rocnet + MQTT)

Postby HolgerW » 05.09.2018, 17:11

Hallo Ellard,
du solltest niemals mit do/while auf ein Ereignis warten. Dazu besser Statemachine oder Interrupts verwenden.
Gerade beim ESP kann es zu Problemen kommen wenn du zu lange irgendwo wartest.

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

Re: Automatisch rangieren eines Zuges (Rocnet + MQTT)

Postby eporocrail » 05.09.2018, 18:40

Hallo Holger

Meine Steuerung Struktur ist als Statemachine aufgebaut worden.
Der Ablauf ist noch nicht richtig. Also es kann gut sein das ich was jetzt in eine do..while Schleife untergebracht ist neu strukturieren muss. Dann geht die ganze Steuerung über diese Statemachine.

Ich habe yield() reichlich eingebaut um vor zu beugen das der Watchdog einen Neustart auslöst.

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: Automatisch rangieren eines Zuges (Rocnet + MQTT)

Postby eporocrail » 07.09.2018, 09:31

Hallo Rocrailer

Es ist soweit. Ein Zug wird rangiert und anschließend werden die Wagen wieder eingesammelt. Ich habe verschiedene Durchgänge durch geführt und es funktioniert.

Nach einen Lauf habe ich ein neuen Fahrt gestartet. Aber weil der FY schon in Position ist, wird der Befehl um zur Position zu gehen ignoriert.
Also es muss noch ein extra Decoder heran um die Position von der FY zu melden. Dan kann ich auch diese letzte Hürde überwinden.

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: Automatisch rangieren eines Zuges (Rocnet + MQTT)

Postby eporocrail » 18.09.2018, 15:34

Hallo Rocrailer

Etwas ganz anderes.

Meine iMac ist hin. HDD funktioniert nicht mehr.
Und wie üblich passiert sowas wenn man darauf überhaupt nicht vorbereitet ist. Es wurde eine neue Version von Java installiert und dann wollte die Kiste nicht mehr booten.
Also erst mal den HDD ersetzen und dann sehen wir weiter denn ich brauche zwei Monitore um das Ganze richtig verfolgen zu können.

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
 

Previous

Return to Arduino (DE)