Der Autor Viktor Krön hat in der Ausgabe 2020/2 der Modellbahnzeitung „DiMo“ (Digitale Modellbahn) einen Aufsatz mit dem Titel „Wie viel WLAN braucht die Modellbahn?“ veröffentlicht und darin einen drahtlosen 2-Bit Masse- oder Kontaktsensor auf der Basis eines Wemos D1 Mini beschrieben. Die Rückmelder haben sich an ein WLAN Gateway angemeldet, das auf der einen Seite alle Rückmeldungen eingesammelt und sie auf der anderen Seite an den PC weitergereicht hat. Verwendet wurde dabei das Roco / Fleischmann Z21 Ethernet Protokoll. Die Erstausgabe dieses Z21 WLAN Rückmelders wurde später verbessert und hier im Blog veröffentlicht. Das neuere Projekt läuft hier unter „NextGen“. Bald nach der Erstausgabe des 2-Bit WLAN-Rückmelders mit Z21 Protokoll wollte Viktor Krön auch die Märklin Klientel bedienen und das cs2CAN Protokoll der CS2 für die drahtlosen Rückmeldungen verwenden. Daraus ergab sich also eine zweite Firmware Variante, spezifisch für die Anwender einer CS2 oder CS3. Nachdem ich eine Märklin Gleisbox mit einem WLAN-Interface für die Steuerung durch einen PC ausgestattet hatte, wurde noch eine dritte Variante der 2- bzw. 4-Bit Firmware erforderlich, die mit dem cs2CAN Modellbahn- und dem UDP-Netzwerk-Protokoll betrieben wird. Nachstehend werden die 3 Varianten beschrieben.
2- (4-)Bit WLAN-Rückmelder mit Roco Z21 Ethernet Protokoll.
Die in der DiMo beschriebene Ursprungsvariante des 2-Bit Rückmelders mit Z21 Protokoll ist längst nicht mehr aktuell und hat, obwohl sie bestens funktioniert, einige gravierende Nachteile, die mit der Ausgabe der „NextGen“ Variante beseitigt wurden. Da die Hardware seit der Erstausgabe unverändert ist, können die Module auf den aktuellen Stand geflasht werden.
2-(4-)Bit WLAN-Rückmelder für Märklin CS2.
ACHTUNG: Da mir keine CS2 zum Testen zur Verfügung steht, handelt es sich im nachfolgenden Text nur um einen Entwurf. Entsprechend habe ich den dazugehörigen aktuellen Code der Version 4.0 nicht veröffentlicht. Der Code, der weiter unten zur Verfügung gestellt wird, hat die Versionsnummer 3.1, und wurde noch an einer CS2 getestet.
Nach der Veröffentlichung der WLAN-Rückmelder mit Z21 Protokoll, mussten auch die Betreiber von Märklin CS2 und CS3 in den Genuss von WLAN-Rückmeldern kommen. Deswegen wurde untersucht, was auf der bestehenden Hardwarebasis gemacht werden muss, um im Layout einer Märklin CS2 den Status dieser Rückmelder anzuzeigen.
Die Firma Märklin hat das von ihr verwendete CAN-Bus-Protokoll und dessen Kapselung in Ethernet Datenpaketen beschrieben und diese Spezifikation im Netz veröffentlicht. Wenn man im Browser die IP-Adresse der CS2 eingibt und auf der CS2 Webseite den Reiter „cs2-CAN“ aufruft, gelangt man ebenfalls zu dieser Beschreibung des Protokolls.
Für unser damaliges Vorhaben benötigten wir nur einen Befehl, nämlich den Rückmelde-Event mit der CAN-ID 0x22, bzw. 0x23. Mit diesem Telegramm kann man der CS2 einen neuen ‚S88‘ Status schicken. Dabei ist ‚S88‘ eigentlich nur Märklin Vokabular und muss mit dem bekannten Schieberegisterbus nichts zu tun haben. Gemeint sind einfach Rückmeldungen, egal welcher Art. Wenn man die 13 Byte des Telegramms korrekt zusammensetzt, und es unter Anwendung der CS2 IP-Adresse und Port 15731 absetzt, leuchtet der kleine ellipsenförmige Indikator des Rückmelders im Layout Display der CS2 gelb auf.
Viktor Krön hatte genau das mit seinem Smartphone und der App „UDP-Sender“ schon mal ausprobiert, und konnte auf dem Gleisbild der CS2 beliebige Rückmelder aktivieren. Wir fragten uns, ob das nicht auch mit dem 2-Bit Rückmeldemodul möglich sein würde.
Eine CS2 hat ein eingebautes Gateway, d.h., dass alle Netzwerk-Nachrichten, die an die IP-Adresse der CS2 gehen, automatisch in den Internen Märklin CAN-Bus und zusätzlich an alle verbundenen Ethernet Knoten weitergeleitet werden. So konnten wir uns das eigene Gateway – wie bei Z21 – sparen und beliebig viele (so viele wie das Netzwerk erlaubt) Rückmeldemodule direkt verwenden.
Am 16.5.2020 war der Sketch so weit gediehen, dass die Rückmelde-Anzeigen im Display der CS2 leuchteten.
Dazu mussten folgende Einstellungen in der CS2 gemacht werden:
- Die CS2 benötigt bevorzugt eine feste IP-Adresse. Hier habe ich die Adresse 192.168.20.100 eingetragen, die von meinem WLAN-Router TP-Link_4174 bereitgestellt wird. Die Verwendung von „auto“‚ (DHCP) wird nicht empfohlen.

- Das CAN Gateway starten und als Broadcast Adresse die Broadcast Adresse des WLAN-Routers des Modellbahn-Netzwerkes verwenden.

- Im Reiter Layout kann die Funktion aller Rückmelder beobachtet werden, egal ob sie nun von der S88 Schnittstelle auf der Unterseite, von einem LinkS88 CAN-Bus Modul oder über WLAN hereinkommen. Die Rückmelder müssen natürlich erst einmal händisch in das Layout eingefügt werden.

Als Nächstes stand der Versuch an, diese Rückmeldungen auch in Modellbahn-Programmen wie Rocrail, iTrain und Win-Digipet zu verwenden. Nach anfänglichen Schwierigkeiten hatte ich im August 2020 meine Software so weit, dass alles funktionierte und ich sogar meine WLAN-Rückmelder auf der CS2.exe (eine CS2 Emulation für Windows) beobachten konnte. Auch auf der „MainStation“ App von Märklin funktionierten die WLAN Rückmelder. Mittlerweile ist die Ausführung der Märklin Apps an der physikalischen Verfügbarkeit einer CS2 gebunden.
Auch virtuelle Rückmelder
Der Wemos D1 Mini sitzt nun da, überwacht die beiden Eingangsports und langweilt sich die meiste Zeit. Da kam Viktor Krön auf die Idee, ihn nicht nur zwei reelle S88, sondern auch noch n virtuelle S88 Meldungen erzeugen zu lassen.
Aber, wofür braucht man eigentlich virtuelle S88 Meldungen?
Die reellen S88 Eingänge haben die Aufgabe, den Zustand der Belegtmelder, der Kontakt- und Schaltgleise, jederzeit zeitnah zur CS2 zu übertragen. Die CS2 verwendet in der „Memory“ Ebene sowohl den Zustand als auch die Zustandsänderungen der S88 Rückmelder. Nur Veränderungen im Zustand eines S88 Eingangs, die sogenannten „Flanken“, können Fahrstraßen aktivieren. Bildlich wird die steigende Flanke so und die fallende Flanke so
dargestellt. Die Zustände einzelner oder mehrerer anderen S88 Eingänge können als „Bedingung“ für die Fahrstraße eingetragen werden. Hat die Flanke nun eine Fahrstraße aufgerufen und sind alle Bedingungen erfüllt („UND-Verknüpfung“), dann führt eine Fahrstraße die ihr vom Anwender zugewiesenen Aktionen aus, z. B. eine Weiche Schalten, Signal auf Grün, Lokpfiff auslösen und Lok mit Richtung und Geschwindigkeit starten. Jede Aktion kann mit einer Wartezeit kombiniert werden. Was man in der CS2 leider nicht als Bedingung verwenden kann, sind z. B. die Stellung einer Weiche, die aktive Fahrtrichtung einer Lok oder ein gespeicherter Zustand. Unter Zuhilfenahme von virtuellen Meldern sind aber solche Bedingungen leicht zu realisieren. Auch virtuelle S88 können Flanken erzeugen, mit denen man Fahrstraßen aktiviert. Die CS2 unterscheidet nicht zwischen virtuellen und reellen Rückmeldern, genauso wenig, wie WLAN- von verkabelten Rückmeldern unterschieden werden.
Beispiel 1 – Fahrtrichtung:
Fahrstraße A1 hat die BR64 auf die Strecke geschickt. Sie fährt dabei auch über S88 Kontaktgleise oder Belegtmelder, die eigentlich Fahrstraßen und Aktionen für den Rückweg auslösen sollen. Es soll z. B. vor und nicht auch noch hinter einem Bahnübergang (beim Überfahren des Sensors für die Gegenrichtung) gepfiffen werden. Wenn man aber beim Losschicken der BR64 gleich einen virtuellen S88 Merker setzt, der aussagt, dass die Lok in Fahrtrichtung rechts unterwegs ist, kann dieser in allen Fahrstraßen, die auf dem Weg angeregt werden, als Bedingung eingesetzt werden und nur Aktionen zulassen, die für diese Fahrtrichtung Sinn ergeben. Im Wendepunkt der BR64 wird nicht nur gewendet, sondern auch der virtuelle Merker wieder gelöscht und damit können nun die Fahrstraßen und Aktionen für den Rückweg in Fahrtrichtung links aktiv werden. Die klassische Märklin Lösung für dieses Problem ist das mechanisch funktionierende Märklin Schaltgleis, bei dem der Fahrzeugschleifer für beide Fahrtrichtungen unterschiedliche Mikroschalter betätigt.
Beispiel 2 – Prüfen einer Weichenstellung:
Je nach Weichenstellung soll die BR64 oder die BR86 auf die Strecke geschickt werden. Wenn gleichzeitig mit dem Stellen der Weiche ein virtueller S88 Eingang gesetzt wird und die BR64 den Endbahnhof erreicht, kann dort mithilfe dieses Merkers die passende Fahrstraße zum Abbremsen und Umkehren nur der BR64 aktiviert werden. Die BR86, die möglicherweise woanders unterwegs ist, erhält keine Befehle zum Abbremsen und Umkehren, weil die für sie konzipierte Fahrstraßen des Endbahnhofs gar nicht erst aktiv werden.
Wie setzt man nun einen virtuellen S88 Melder?
Die virtuellen S88 Melder sind in der Grundeinstellung den S88 Adressen 513 bis 520 zugeordnet. Sie werden logisch wahr (=belegt), wenn die korrespondierende Weiche 513 – 520 auf gerade (gerade = grün) geschaltet wird. Schaltet man die Weiche wieder auf abzweigend (rund = rot), dann erlöscht auch der zugehörige virtuelle S88 Melder. Eine Weiche ist von Natur aus remanent, d. h., die Stellung ändert sich nicht, bis bewusst die andere Weichenstellung gewählt wird.
Wichtig ist, dass die Weichen, die Sie für die virtuellen S88 benötigen, auch im „Keyboard“ angelegt werden. Sie müssen nicht, aber können auch physikalische Weichen sein. Dann allerdings sollte das gewählte Protokoll auch dem des eingesetzten Weichendecoders (DCC oder MM) entsprechen.
Über das Konfigurationsmenü der WLAN Rückmelder (siehe weiter unten) können Sie im Bereich von 1 bis 1017 8 (acht) aufeinanderfolgende Weichen und entsprechend 8 S88 Rückmelder konfigurieren. Theoretisch brauchen sie dafür nicht mal einen kompletten WLAN-Rückmelder, sondern nur ein Wemos D1 mini Entwicklungsmodul mit der weiter unten zur Verfügung gestellten Firmware.
Voreingestellt ist, wie gesagt, der Bereich ab Adresse 513, also Weiche 513 ist mit S88 #513 gekoppelt, usw. Der voreingestellte Bereich geht bis 520, umfasst also 8 Weichen und entsprechend 8 virtuelle S88. Es spielt keine Rolle, ob die Weiche als MM oder DCC Weiche definiert wurde, der Adressbereich 1 – 1024 gilt für beide Typen gemeinsam.
Alternative zum virtuellen Melder
Die 100-prozentige Märklin Alternative ist natürlich ein reeller S88 Rückmelder. Muss dieser S88 Melder dauerhaft belegt melden, dann muss er über einen Märklin Schaltdecoder K83 mit Masse beaufschlagt werden. Die Komponenten müssen beschafft und verdrahtet werden und sind nicht so kostengünstig und bei weitem nicht so komfortabel wie ein virtueller Melder, der ganz ohne Draht auskommt.
Dieser über einen Schaltdecoder geschaltete S88 Eingang ist natürlich genauso „remanent“ (speichernd) wie die Weiche und kann nun im Memory in einer Fahrstraße als Bedingung verwendet werden.
Damit das Wemos D1 Mini Entwicklungsmodul neben der Überwachung und Meldung seiner beiden S88 Eingänge auch virtuelle S88 Meldungen erzeugen kann, „hört“ es auch auf Weichenbefehle, die von den CS2 Fahrstraßen oder direkt über das Keyboard ausgelöst werden. Immer wenn eine bestimmte Weiche im definierten Bereich „grün“ geschaltet wird, wird der virtuelle S88 Melder mit derselben Adresse wie die Weiche aktiv. Wird die Weiche wieder auf „rot“ geschaltet, geht auch der entsprechende S88 Melder wieder aus. Es muss aber keinen physikalischen Decoder oder gar eine physikalische Weiche geben, nur die Ausgabe des Weichenkommandos reicht.
Diagnose
Der WLAN Rückmelder wird über seinen USB-Port mit 5V versorgt. Verbindet man den USB-Port mit dem PC, besteht die Möglichkeit, mit einem Terminal Programm die seriellen Debug-Ausgaben des Rückmelders zu beobachten.
Achtung: bauen Sie einen Kontaktsensor nach und verbinden ihn über USB mit dem PC, so kann die dadurch entstandene Masseverbindung zwischen CS2, Gleis und dem Wemos USB-Port zu einer Beschädigung der Komponenten führen. Stellen Sie sicher, dass mindestens eines der beiden Systeme (PC und CS2) isoliert betrieben wird. Vermeiden Sie mehrfache Verbindungen zwischen CS2 und PC und anderen Komponenten!
So wird angezeigt, mit welchem WLAN Netzwerk sich der Wemos zu verbinden versucht. Hier sieht man auch die Modulkennung, die „NID“. Im Betrieb werden alle Rückmeldungen angezeigt, egal, ob sie von der CS2, einem anderen WLAN Rückmelder, einem Telefon oder von einem CAN-Bus Teilnehmer stammen (z. B. Link S88). Weil für die virtuellen Rückmelder Weichentelegramme verwendet werden, kommen diese ebenfalls zur Anzeige, auch dann, wenn sie nicht mit einem virtuellen Melder verbunden sind. Der im Monitor angezeigte Ablauf beim virtuellen Melder ist möglicherweise etwas verwirrend. Zuerst wird eine „Spule“ der Weiche, die für rot oder die für grün, bestromt. Darauf reagiert der virtuelle Melder mit der Statusänderung und direkt danach wird der „Strom“ von der CS2 wieder abgeschaltet. Der virtuelle Melder reagiert jetzt nicht. Wird die andere Spule bestromt, reagiert der virtuelle Melder erneut und wechselt den Status. Sofort danach wird der „Strom“ wieder abgeschaltet. So sehen Sie immer 3 Telegramme für einen Statuswechsel eines virtuellen Melders. Hier ist eine Kopie der seriellen Ausgabe des WLAN Rückmelders #0292:
*************************************************************************************** WEMOS D1 Mini20201130 Dual Channel Wireless Contact Feedback Module V3.02 (c) 2020 Gerard Clemens Router WiFi SSID : TP-Link_4174 Router WiFi Password : ******** Connecting to TP-Link_4174 ........ took 4.00 s IP Address S88 Module : 192.168.020.101 CS2/CS3 IP Address : 192.168.020.100 MAC Address S88 Module : 24:62:AB:0B:9E:4D Module NID : 0x124 (dec. 292) WiFi Sensor Module and CS2 are connected FB-Channels : 1 - 2 (Märklin CS2 S88). VirtChannels : 513 - 520 (Märklin CS2 S88). To change FB-Channels and router WiFi credentials connect to WiFi network SSID AP0292, use Password NWKONFIG and your web browser on IP 192.168.016.001. *************************************************************************************** 13 B -> 192.168.020.100:15731 : WiFi FB NID = #0292 - 0001=1 - 00 23 0B 24 08 00 00 00 01 00 01 01 24 13 B -> 192.168.020.100:15731 : WiFi FB NID = #0292 - 0001=0 - 00 23 0B 24 08 00 00 00 01 01 00 01 24 13 B -> 192.168.020.100:15731 : WiFi FB NID = #0292 - 0002=1 - 00 23 0B 24 08 00 00 00 02 00 01 01 24 13 B -> 192.168.020.100:15731 : WiFi FB NID = #0292 - 0002=0 - 00 23 0B 24 08 00 00 00 02 01 00 01 24 13 B <- 192.168.020.100:15731 : WiFi FB NID = #3562 - 0004=1 - 00 23 6F 6A 08 00 00 00 04 00 01 0D EA 13 B <- 192.168.020.100:15731 : WiFi FB NID = #3562 - 0003=1 - 00 23 6F 6A 08 00 00 00 03 00 01 0D EA 13 B <- 192.168.020.100:15731 : WiFi FB NID = #3562 - 0004=0 - 00 23 6F 6A 08 00 00 00 04 01 00 0D EA 13 B <- 192.168.020.100:15731 : WiFi FB NID = #3562 - 0003=0 - 00 23 6F 6A 08 00 00 00 03 01 00 0D EA 13 B <- 192.168.020.100:15731 : DCC Switch#0009,Coil#1,State: 1 - 00 16 A7 09 06 00 00 38 08 01 01 00 00 13 B -> 192.168.020.100:15731 : Virt. S88#0009, State: 1 - 00 23 0B 24 08 00 00 00 09 00 01 01 24 13 B <- 192.168.020.100:15731 : DCC Switch#0009,Coil#1,State: 0 - 00 16 A7 09 06 00 00 38 08 01 00 01 24 13 B <- 192.168.020.100:15731 : DCC Switch#0009,Coil#0,State: 1 - 00 16 A7 09 06 00 00 38 08 00 01 00 00 13 B -> 192.168.020.100:15731 : Virt. S88#0009, State: 0 - 00 23 0B 24 08 00 00 00 09 01 00 01 24 13 B <- 192.168.020.100:15731 : DCC Switch#0009,Coil#0,State: 0 - 00 16 A7 09 06 00 00 38 08 00 00 01 24
Screenshot der Serial-Monitor Ausgabe
Das aktuelle Testprojekt besteht aus folgenden Komponenten:
CS2 mit Adresse | 192.168.20.100 | (fest) |
WLAN Rückmelder #3562 mit Adresse | 192.168.20.101 | (DHCP / fest) |
WLAN Rückmelder #0292 mit Adresse | 192.168.20.102 | (DHCP / fest) |
Router tp-link TL-WR841N | 192.168.20.1 | (DHCP von 101 -199) |
Konfiguration
Der WLAN Rückmelder wird mittels Web-Interface konfiguriert. Da sich ein neues WLAN Rückmeldemodul noch mit keinem Netzwerk verbunden hat, ist es für den PC-Browser oder für die Browser im Smartphone oder Tablet erst einmal nicht erreichbar. Damit das Web-Interface dennoch angezeigt werden kann, spannt das Wemos D1 Mini Modul ein eigenes „Service“ WLAN mit der SSID „APXXXX“ auf. „XXXX“ ist dabei die 4-stellige NID Nummer, die aus der Mac-ID des Wemos Bausteins abgeleitet wird. Hier im Konfigurationsbeispiel ist das die Nummer 0292. In dieses Netzwerk mit SSID „AP0292“ können sich PC, Smartphone und Tablet einloggen. Für die Anmeldung verwendet man IMMER das Passwort „NWKONFIG“. Anschließend wird der Webbrowser aufgerufen und in der Adresszeile wird 192.168.4.1 eingegeben (auch die Adresse ist für alle WLAN-Rückmelder gleich). Der Browser zeigt nun die nachfolgende Maske an.

Hier gehen wir zunächst auf den Menüpunkt „WiFi Configuration“, um SSID und Passwort des Modelbahn-WLAN Routers bekannt zu geben.

Module NID: In diesem Beispiel ist das 0292 die einmalige Kennung des Moduls. Jedes Modul hat eine individuelle Identität. Die Nummer ist unveränderlich und belegt, dass man sich über das Service-WLAN „AP0292“ mit dem zugehörigen WLAN Rückmeldemodul mit NID=0292 verbunden hat.
SSID: Das WLAN Rückmeldemodul verbindet sich über einen WLAN-Router mit der CS2/CS3. Dazu braucht es die SSID des Routers (meistens unten auf dem Router aufgedruckt).
Password: Das Passwort des WLAN-Routers (steht auch meistens unten auf dem Aufkleber des Routers), es sei denn, Sie haben es im Router geändert.
Central Station IP (last octet): Geben Sie die 4. Stelle der IP-Adresse der CS2 ein, die Sie in Schritt 1 weiter oben im Setup der CS2 manuell festgelegt haben.
Terminal PC IP (last octet): Das ist die 4. Stelle der IP-Adresse eines PCs, auf dem ein TCP Terminal-Programm für das Debugging/Monitoring laufen soll. Wenn Sie das nicht haben, geben Sie die 4.Stelle der IP-Adresse des PCs mit dem Modellbahnsteuerprogramm an.
First feedback channel (1 – 1024): Das WLAN Rückmeldemodul verwendet 2 Rückmeldekanäle aus dem Standard S88 Bereich der CS2. An dieser Adresse dürfen sich auch physikalische S88 Rückmelder befinden, was aber zu Verwirrung und Frust beim Anwender sorgen kann. Haben Sie z. B. 2 S88 Module angeschlossen, sind die ersten 32 Bit (1 – 32) praktisch nicht für WLAN Rückmelder zu gebrauchen. Der erste WLAN-Rückmelder kann, muss aber nicht, die Nummer 33 sein. Der zweite Melder des WLAN Rückmelders erhält automatisch die Nummer 34. Sie können aber im Bereich 1 – 1023 eine beliebige Nummer wählen, unter Umständen überlappt sich der Bereich mit den physikalischen S88. Hier im Beispiel meldet sich der Rückmelder auf den Adressen #1 und #2, weil keine S88 direkt an der CS2 betrieben wurden.
Address of the first of 8 virtual S88 (1 – 1016): Das ist die Adresse des ersten von 8 „Merkern“ oder virtuellen Rückmeldern, die über Weichenbefehle gesetzt (grün) oder wieder gelöscht werden können (rot). Nach dem Einschalten der WLAN Rückmelder sind alle virtuellen Rückmeldungen aus, und zwar unabhängig von der aktuellen Lage der dazugehörigen Weiche. Die Nummer des virtuellen Rückmelders korrespondiert immer mit der Nummer der Weiche, die zum Stellen verwendet wird. Hier im Beispiel habe ich die virtuellen Rückmelder auf #9 – #16 angemeldet, weil auch die Weichen #9 – #16 nicht physikalisch vorhanden sind.
Device ID: In der Grundeinstellung des WLAN-Melders werden die beiden Rückmeldekanäle und die virtuellen Melder so gemapt, als würden sie von der 6-poligen S88 Schnittstelle auf der Unterseite der CS2 stammen. Diese Schnittstelle hat die Gerätenummer 0. Märklin nennt das im Setup-Menüpunkt „Geräte“ die „Gerät-Kennung“. Das funktioniert sogar auch, wenn die CS2 gar keine S88 über diese Schnittstelle bedient. Haben Sie andere Rückmeldegeräte im Einsatz, die über noch nicht belegte Adressbereiche verfügen, können Sie hier auch die Gerät-Kennung dieses Gerätes einsetzen. Damit stehen Ihnen für die WLAN-Rückmeldungen weitere Adressbereiche zur Verfügung. Bei Link s88 beispielsweise gibt es Adressen von 1 bis 16 für die S88 Eingänge auf Klemme, alternativ bei Konfiguration als Matrix (8 x 8) auch von 101 bis 164. In den 3 Bussen stehen jeweils 496 Adressen zur Verfügung (1001 – 1496, 2001 – 2496 und 3001 – 3496).
Sind alle Daten eingegeben, klicken Sie auf „Send“. Der WLAN Rückmelder startet neu, die WLAN-Verbindung zum Browser bricht ab und der Rückmelder startet mit den neuen Parametern. Er meldet sich an Ihrem WLAN-Router an und beide Rückmelder senden ihren Initialzustand an die CS2.

der Anmeldung an den WLAN-Router und
Verbindung zur CS2
Ruft man die Webseite danach noch einmal auf, fällt auf, dass sich die Farbe der Überschrift von rot auf grün geändert hat. Das heißt, dass sich der WLAN Rückmelder korrekt am Router angemeldet hat und zusätzlich die Verbindung zur CS2 erfolgreich aufgebaut wurde.
Beim Einschalten der CS2 dauert es eine gewisse Zeit, bis sie sich mit dem Router verbindet. In der Zeit sind die WLAN-Rückmelder längst mit dem Router verbunden und versuchen sich mit der CS2 zu verbinden, die aber da noch hochfährt und nicht erreichbar ist. In dieser Zeit ist die Überschrift der Webseite orange. Ist die CS2 hochgefahren, verbindet sich der WLAN-Melder automatisch mit der Zentrale. Nach wenigen Sekunden kann man die Verbindung durch Aktualisieren des Browserfensters prüfen. Wird die Überschrift der Webseite nun grün, ist alles OK. Bleibt die Überschrift orange, muss die Konfiguration der CS2 und/oder die des Melders geprüft werden.
Wenn die WLAN-Verbindung zum Router steht, wird das temporäre WLAN Netz „APXXXX“ abgeschaltet. Sie wird jetzt nicht mehr benötigt.

Im Untermenü „CV Configuration“ können weitere Parameter eingestellt werden.
Sollten Sie in der Konfiguration noch mal etwas ändern wollen, können Sie das WLAN Rückmeldemodul über Geräte wie PC, Handy oder Tablet, die ebenfalls mit dem Modellbahnrouter verbunden sind, erreichen. Geben Sie in der Adresszeile des Browsers einfach die IP Nummer des Moduls ein.
Software über OTA laden
Im Normalfall wird die Software über USB geladen. Die Vorgehensweise mit dem Tool ESP8266Flasher wurde schon an vielen Stellen beschrieben. Mit dem Smartphone und einem OTG Kabel ist der Upload und das Debugging ebenfalls möglich. Ist der fertig programmierte Rückmelder einmal verbaut und mit dem USB-Kabel nicht mehr oder nur schwierig zu erreichen, kann er auch mit „OTA“ (Over The Air), also über WLAN, aktualisiert werden. Die Vorgehensweise mit dem Smartphone Schritt-für-Schritt:
- Laden Sie die Firmware in ein Verzeichnis Ihres Android Handys.
- Installieren Sie die App „ESP8266 Loader“ von Bluino Electronics aus Google Play.
- Verbinden Sie das Smartphone über WLAN mit dem WLAN-Router, an dem auch der Rückmelder angemeldet ist.
- In der App (Setting) geben Sie auch die SSID und das Passwort für den (Modellbahn-) WLAN-Router an.
- Immer noch unter Setting aktivieren Sie „Upload Code via – WiFi“.
- Schließlich wählen Sie immer noch unter Setting die IP des zu aktualisierenden ESP Entwicklungsmoduls aus. Hier in der App werden leider keine Hostnamen, sondern nur IP-Adressen akzeptiert. Wenn Sie unsicher sind, welche IP-Adresse Ihr WLAN Melder hat, schauen Sie in Ihrem Router nach. Alternativ „pingen“ Sie den WLAN-Melder mit seinem Hostnamen an. Für den Baustein mit der NID 2100 (Hostname „AP2100“) finden Sie so heraus, dass der Melder über DHCP die Adresse 192.168.20.102 erhalten hat. Das sieht dann im DOS-Fenster (in der Eingabeaufforderung) so aus:
C:\Users\Gerard Clemens>ping AP2100 Ping wird ausgeführt für AP2100.local [192.168.20.102] mit 32 Bytes Daten: Antwort von 192.168.20.102: Bytes=32 Zeit=114ms TTL=255 Antwort von 192.168.20.102: Bytes=32 Zeit=6ms TTL=255 Antwort von 192.168.20.102: Bytes=32 Zeit=3ms TTL=255 Antwort von 192.168.20.102: Bytes=32 Zeit=2ms TTL=255 Ping-Statistik für 192.168.20.102: Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0 (0% Verlust), Ca. Zeitangaben in Millisek.: Minimum = 2ms, Maximum = 114ms, Mittelwert = 31ms
- Zurück auf der Hauptseite wählen Sie das vorher geladene .BIN File aus, das dann in der obersten Zeile angezeigt wird.
- Drücken Sie den grünen Aufwärts-Pfeil auf der Hauptseite der App neben dem .Bin File.
- Nach einigen Sekunden erscheint ein grüner Haken und der Schriftzug „Finish“
Achtung: Mit OTA kann man die Firmware nur aktualisieren. „Leere“ ESP8266 Module kennen noch kein „OTA“ und müssen erst einmal über USB mit der Rückmelder-Firmware inklusive OTA geladen werden!
Nachbau
Die Rückmelder werden, wie in der „Dimo 2020/2″ beschrieben, auf oder unter einem Wemos D1 Mini Entwicklungsmodul aufgebaut.

Auf das Entwicklungsmodul wird die unten verlinkte Firmware aufgespielt, die den Status der beiden Eingänge INP1 und INP2 (optional auch INP3 und INP4) sowie der 8 virtuellen Melder auf das Layout Display der Märklin CS2 bringt. Es ist natürlich etwas unpraktisch, das Steckbrett auf der Anlage zu verdrahten. Viktor Krön hat deswegen 2 Platinen als Shield für das Wemos-Modul entwickelt.



© 2020–2023 Gerard Clemens – letzte Aktualisierung 29.07.2023
8. Februar 2022 um 19:36 Uhr
Hallo Gerard,
war unschlüssig, ob ich eher hier oder in deine Posts zur NextGen-Firmware kommentieren soll. Auch wenn dieser Blogeintrag schon älter ist, thematisch muss mein Kommentar vermutlich hierhin, weil es um Märklin und nicht das Z21-Protokoll geht – oder habe ich in Deinem NextGen-Ansatz eine CS2-Version übersehen?
Konkret will ich mal folgendes berichten: Da ich auf meinem RPi Zero W bereits
1. eine CS2 simuliere (mit CAN2LAN auf Rx-Port 15731/upd von Gerd Bertelsmann, https://github.com/GBert/railroad/tree/master/can2udp),
2. dieser RPi gleich als Modellbahn-WLAN-Accesspoint und Rocrail-Server agiert,
teste ich gerade Deinen hier beschriebenen, genialen WLAN-Rückmelder auf Basis des „Märklin CAN in UDP“-Telegramms!
Genial, es hat vom Fleck weg super funktioniert und ist perfekt für meine kleine Test-Teppichbahn! Man muss sich (anders als der Titel suggeriert) ja eben nicht mit S88 rumschlagen, sondern sieht die beiden Rückmelder gleich via WLAN in RocView. Und das sogar ohne CS2, nur auf einem kleinen RPi Zero W, den ich mit einem CAN-Interface auch noch an die Gleisbox gehängt habe… so überschaubar habe ich mir das erhofft!!
Jetzt überlege ich, wie ich diese Firmware hier mit Deiner Miniaturlösung „WLAN-Rückmelder im C-Gleis“ und Massemeldern zusammenbringe. Ich hoffe Du hast nichts gegen diese freie Kombination Deiner tollen Projekte?
Erlaube dazu ein paar Fragen/Ideen:
1. Hast Du mal eine CS2-Firmware online gestellt, die mehr als zwei GPIOs auswertet? Z.B. neben D2 und D5 noch D6 und D7?
2. Kann man in der Firmware irgendwie den WLAN-AP deaktivieren, sobald die Verbindung zum DiMo-WLAN steht?
Ansonsten habe ich derzeit nur ein Problem, das mir noch Kopfzerbrechen bereitet: Mit auf einem Breadboard beschalteten GPIOs konnte ich die Firmware nicht flashen, erst nach Trennung des D1 Mini vom Breadboard ging es. Hast Du vielleicht eine Erklärung? Sonst kann ich meine Idee verwerfen, auf Deiner Gerber-Platine (C-Gleis) gleich alle SMDs einschließlich des ESP12F verbauen zu lassen…
Ich sitze darüber hinaus gerade noch an der Überlegung, wie ich die Märklin-Rechteckspannung unter dem Gleis zwischen B und O gleichrichte und in SMD-Bauweise auf 3.3V runter bekomme 😉 Hast Du Dich damals beim C-Gleis bewusst gegen Gleichrichtung des Bahnstroms entschieden? Na, vielleicht diskutiert man das mal bei Stummi…
Danke Dir für Deine tolle Arbeit, ich hoffe ich konnte hiermit meinen (vielleicht etwas zu umfangreichen, hoffentlich interessanten) Beitrag leisten und würde mich sehr über Deine Rückmeldung freuen 😀
MfG Philipp
16. Januar 2021 um 9:56 Uhr
Hallo Johnny, Sie sollten sich das cs2-CAN Protokoll als .PDF Datei herunterladen oder es direkt aus der CS2 ziehen (Webserver in der CS2).
Da ist ausführlich erklärt, wie sich die Telegramme aufbauen. Was Sie als Beispiel aufführen, ist die Darstellung als CAN Telegramm. In meinem Beitrag geht es aber um die Darstellung der Befehle als Ethernet Paket. Da werden die die ersten 8 „Zahlen“ in 4 Bytes dargestellt, dann kommen die Telegrammlänge (DLC = 5), die eigentlichen 5 Byte Nutzdaten und 3 0-Bytes, so dass man insgesamt immer auf 13 Byte Telegrammlänge kommt .
Es fängt immer mit einem Byte für Priorität an. Das zweite Byte ist der eigentliche Befehl, in dem ein Bit verwendet wird, um anzugeben, dass es sich um eine Antwort handelt. In diesem Fall geht es um den Stopp Befehl 0. Bei diesem Befehl sind CAN und Ethernet Darstellung gleich, bei anderen Befehlen unterscheiden sie sich!
Dann kommt ein 2-Byte Hash Code, der für jedes Gerät aus der Seriennummer berechnet wird. Wie der Hash Code berechnet wird, steht ebenfalls im Dokument. Dann kommen der DLC und die restlichen 5 Nutz- und 3 0-Bytes.
Lesen und immer wieder Lesen der Spezifikation ist erste Voraussetzung für Erfolg. Erschwerend kommt hinzu, dass das Dokument aus 2012 ist, viele Fehler enthält, nicht alles erklärt und teilweise unvollständig ist. Dann hilft nur reverse Engineering oder Probieren.
Grüße
Gerard Clemens
15. Januar 2021 um 19:25 Uhr
Hallo, ich schreibe ein Program zur Modellbahnsteuerung. Jetzt möchte ich auch eine CS2 in mein Program integrieren.
Bisher habe ich nur die intellybox und die CS1 integriert.
Ich habe auch das von der Firma Märklin verwendete CAN-Bus-Protokoll. Nur verstehe ich die zusammensetzung der 13 byte des Telegramms nicht so ganz.
In dem Beispiel steht
00004711 5 00 00 00 00 00 Stopp an alle
die ersten 8 zahlen verstehe ich nicht.
der rest ist mir klar.
5 = DCL
00 = D-Byte-0
00 = D-Byte-1
00 = D-Byte-2
00 = D-Byte-3
00 = D-Byte-4 Sub-CMD Stopp
Vielleicht können Sie mir da weiter helfen.
Johnny Soyez
js747a2002@yahoo.de
http://www.johnny-modellbau.de/software.html