User Tools

Site Tools


userpages:skippa:fremo-modelluhr

RocWatch Howto - Eine kabellose Modelluhr zum Einsatz im FREMO

Einleitung

Auf FREMO-Treffen werden Modelluhren an verschiedenen Standorten benötigt: an den Wänden der Halle und an den Betriebsstellen. Optimalerweise am Armband der Lokführer. Bisher wird dazu über RUT (Ringleitung für Uhr und Telefon) ein analoges Signal verteilt. Das bedeutet viele Meter Kabel ziehen und stundenlange Arbeit dazu.

Dies ist eine Anleitung für einen alternativen Ansatz: das Uhrensignal wird von Rocrail1 über WLAN an verschiedene digitale Uhren (Laptop, Monitore, Tablets, Smartphones, Smartwatches) verteilt. Zusammen mit einer kabellosen Lösung für das Telefon kann damit der Aufwand für das Legen der RUT Leitung eingespart werden. Und es findet sich ein guter Einsatz für alte Monitore, Laptops, Tablets und Handys.
modelluhr_rocwatch_in_action.jpg

Ich beschreibe meine gewählte Konfiguration. Es gibt natürlich jede Menge Spielarten und Kombinationsmöglichkeiten, gerade in der Hardware. Rocrail ist sehr flexibel und unterstützt fast alle Hardware. Beispielsweise die Nutzung eines Windows-Laptops statt des Raspberry Pis als Uhrenzentrale. Den kann man dann auch gleich an einer Betriebsstelle als Bahnhofsuhr verwenden.

Systembeschreibung

Ich beschreibe zunächst das allgemeine Zusammenspiel der Komponenten. Keine Angst vor lauter Abkürzungen und Fachbergriffen. Eine Schritt für Schritt Anleitung findet sich weiter unten.

Das Uhrensignal wird von Rocrail in der „Uhrenzentrale“ erzeugt und mittels WLAN an alle Uhren verteilt.
Rocrail ist eigentlich eine Software zur kompletten Steuerung von Modellbahnen. Damit sind automatische Steuerungen, Modulanlagen, Stellwerkssteuerungen und eben auch Modelluhren möglich.
Die Uhren an der Wand und auch jede andere Modelluhr sind dann die Rocrail-Clients, die aber nur die Uhr anzeigen und keinen Gleisplan. Der Client ist unter anderem als Webapplikation verfügbar, so dass nahezu jedes internetfähige Endgerät genutzt werden kann. Diese Applikation heisst Rocweb.
ASCII���   HB = 0,5,-6 FN=0 FB = 0 me = 0x0 ct = 4 lidx=316.52   FM0  
FC110000000:zzzzzz11213c 007804408ba6e613e14014c0 bac1031d8 34 3534a2522d6  0  0
 0  0 0 0 0 032631e53189 a114 031631e53189 a313 030631e53189 a3 a 02f631e53189
a38c 02e631e53189 a713 02d631e53189 a713 02c631e53189 a713 02ca31e53189 a313
02d031e53189 a313 02d631e53189 a514 02dc31e53189 a513 02e231e53189 a713
02e831e53189 a713 02ee31e53189 a713 02f431e53189 a713 02fa31e53189 a713
02ee31e53189 a613 02ee31e53189 a613 04144414441444144 f10 f10 f10 f10 c d c d c
d c d 9 a 9 a 9 a 9 a3b3d3b3d3b3d3b3d f10 f10 f10 f10 b c b c b c b c 9 a 9 a 9
a 9... Der Rocrail Server (ab sofort die „Uhrenzentrale“ genannt) läuft auf einem Raspberry Pi 1B (ab sofort Raspi genannt) mit Rasbian OS als Betriebssystem. Das ist ein zigarettenschachtelgroßer Minicomputer, der aber mit allem nötigem ausgestattet ist - USB, HDMI, Netzwerk. Da an der Zentrale während des Betriebes kein Monitor und keine Tastatur angeschlossen sind, wird die Uhrenzentrale ohne X-Server und entsprechend ohne Rocview genutzt. Das spart Ressourcen und Platz. (Ein X-Server ist übrigens der grafische Fenstermanager und Oberfläche des Betriebssystems, auch als Desktop bezeichnet. Rocview ist die grafische Benutzeroberfläche des Modellbahnsteuerungsprogrammes Rocrail). Rocrail und damit der Uhrendienst wird beim Hochfahren der Uhrenzentrale automatisch gestartet. Mehr muss nicht gemacht werden, man kann sofort die Uhrzeit einstellen und loslegen.
Das System der Uhrenzentrale wird per Systemaktion aus Rocrail heruntergefahren. Sowohl Einstellung der Uhrzeit als auch der Befehl zum Herunterfahren werden über den Webclient Rocview gegeben. Zur Bedienung benötigt man also nur ein Handy, Tablet oder Laptop, der genauso wie die Uhren mit der Uhrenzentrale verbunden wird.
Zur Erstkonfiguration wird ein Monitor an den HDMI Ausgang und eine Tastatur/Maus an den USB Ausgang angesteckt. Nach der Erstkonfiguration ist eigentlich nichts mehr am System zu tun. Sollte man doch einmal etwas verändern müssen, kann man entweder Monitor und Tastatur anstecken oder sich via SSH auf dem System einloggen.

Die Uhrenzentrale wird per Ethernetkabel an den WLAN-Router angeschlossen und bekommt automatisch eine Adresse zugewiesen, so wie auch alle anderen Clients. Man tut gut daran, der Zentrale immer die gleiche Adresse zuzuweisen. Das kann man normalerweise im WLAN-Router einstellen. Dort kann man auch sehen, welche Adresse das ist. Das ist später wichtig, um die Uhr im Browser auch aufrufen zu können.

ASCII���   HB = 0,5,-6 FN=0 FB = 0 me = 0x0 ct = 4 lidx=320.48   FM0  
FC111110111:zzzzzz0 b1404607804407d841e50436614c0 bac1031d8 34 3533523d31d  0  0
 0  0 0 0 0 031d412731b47d03a 131540ce31637d03a 030d40c7315a7d0 b
030540b5313e7d08c 031540a131187d03a 031940be31507d03a 031d40c031527d03a
032140ca31637d03a 032540d0316c7d03a 032940d3316e7d03a 032540cf315f7d039
020232023202320231f201f201f201f201011101110111011 f f f f f f f
f1c1d1c1d1c1d1c1d1b1b1b1b1b1b1b1b151415141514151410 f10 f10 f10... Die Wanduhren bestehen aus einem Raspberry Pi mit WLAN Unterstützung. Der Raspi speist über den HDMI Ausgang einen Monitor. Es läuft wiederum ein Rasbian, doch dieses Mal mit X-Server. Beim Hochfahren wird automatisch ein Chrome Browserfenster im Fullscreen-Modus gestartet, das dann über das WLAN die Uhr von der Uhrenzentrale lädt.
Das Ganze wird auf einem Trägerbrett befestigt, so dass die ganze Anordnung leicht aufgehängt werden kann. Jeder Monitor hat auf der Rückseite Löcher, über die er mit normalen M4 Gewindeschrauben auf dem Trägerbrett angeschraubt werden kann.
Damit die Wanduhren auch heruntergefahren werden kann, wird zusätzlich noch ein RocNetNode installiert. Das ist eine Art Erweiterung für Rocrail, über die man den Raspberry Pi zum schalten und melden für die Modellbahn verwenden kann. Diese tollen Funktionen nutzen wir hier aber nicht – sondern nur die Tatsache, dass sich auch die RocNetNodes am Rocrail Server der Uhrenzentrale anmelden. Und wenn diese heruntergefahren wird, folgt kurze Zeit später auch das rocnetnode (=Wanduhr) System.

Was man braucht

Für die Uhrenzentrale

  • Einen Raspberry Pi (ab Modell 1B) als Uhrenzentrale. Mit Netzteil und mind. 4GB SD Karte
  • Einen gültigen Rocrail Support Key
  • Einen WLAN-Router mit integriertem Netzwerk-Switch und DHCP Server, UDP fähig
  • Kabel zur Verbindung der beiden


Für die Wanduhr

  • Einen Monitor mit HDMI Eingang
  • Einen Raspberry Pi mit WLAN Unterstützung (daher ab Modell 3). Mit Netzteil und mind. 8 GB Micro SD Karte
  • Ein Holzbrett als Trägerplatte
  • 4x Schrauben M4 zur Befestigung des Monitors
  • Ein Stück Seil
  • HDMI Kabel
  • Eine Mehrfachsteckdose mit extra langem Kabel
  • Doppelseitiges Klebeband und Kabelbinder


Zur Konfiguration und Installation

  • Einen Rechner mit SD-Kartenleser und Ethernetbuchse
  • Einen Monitor oder Fernseher mit HDMI Eingang
  • Tastatur und Maus mit USB Anschluss

Und etwas grundlegende Linux-Kenntnisse sind hilfreich. Es haben aber auch schon Leute ohne geschafft. Das Rocrail-Wiki ist sehr ergiebig und fragen kann man ja auch noch.

Schritt für Schritt Anleitung

Konfiguration der Uhrenzentrale

1) Rasbian image herunterladen. Ich empfehle hier das „Rasbian stretch lite“, denn das kommt ohne X-Server aus. Natürlich kann man auch eine komplette Installation machen, benötigt aber eine größere SD-Karte. Einen Vorteil hat man nicht - außer, dass man für die Konfiguration auf eine grafische Oberfläche zurückgreifen kann.

2) Das Image auf die SD Karte schreiben ist ausführlich und für die verschiedenen Betriebsysteme auf den Seiten der Raspberry Foundation beschrieben. Das Beschreiben der SD Karte kann mehrere Minuten dauern. Nur Geduld. Aber wenn das erledigt ist, ist Rasbian schon installiert und muss „nur“ noch konfiguriert werden. SD Karte ordnungsgemäß auswerfen, nicht einfach rausziehen!

3) Monitor, Maus & Tastatur anstecken. SD Karte in den Raspi einstecken. Raspi mit Strom versorgen

4) Der Raspi bootet in eine Befehlszeile. Nun einloggen. User „pi“ Passwort „raspberry“. Achtung, bis nach ausführen von Schritt 6 ist die Tastatur Englisch, da sind "y" und "z" vertauscht. Also falls es nicht klappt, „raspberrz“ eingeben.
login pi
raspberry

5) Den raspi mit Internet (nicht der WLAN Router für die Uhr) versorgen. Am einfachsten geht das per Kabel in den Router des Hausnetzwerks. Alternativ gleich in der Konfiguration die WLAN Zugangsdaten des Hausnetzwerks eingeben.
Ob man Internetzugriff hat, kann man mit dem Befehl ping www.fremo-net.eu herausfinden. Der Output müsste dann etwa so aussehen:
pi@raspberrypi:~ $ ping www.fremo-net.eu
PING www.fremo-net.eu (134.119.10.86) 56(84) bytes of data.
64 bytes from forum.fremo-net.eu (134.119.10.86): icmp_seq=1 ttl=58 time=16.2 ms

Falls keine Antwort kommt, kann man mit dem Befehl ifconfig nachschauen, ob der Raspi eine IP-Adresse zugewiesen bekommen hat:
pi@raspberrypi:~ $ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.178.24 netmask 255.255.255.0 broadcast 192.168.178.255

6) Mit sudo raspi-config wird das System wie folgt konfiguriert. Nicht erwähnte Optionen einfach nicht beachten.

      a. change user Passwort: "FREMO-Uhr"
      b. Network 
          1. Hostname: "uhrenzentrale"
          2. WIFI SSID: "Uhrennetz" WIFI Passwort "Modelluhr"
      c. Localisation options
          1. change locale: de_DE.UTF-8 UTF-8
          2. timezone: Europe -> Berlin
          3. keyboard layout: Generic 101 -> other -> German -> German qwerty -> default -> no compose key
          4. wifi country -> DE
      d. Interfacing options
          1. SSH enable
      e. Advanced Options
          1. Expand file system

7) Nun wird das rasbian System auf den neusten Stand bringen.
sudo apt-get update
sudo apt-get upgrade

8) Rocrail herunterladen
wget http://rocrail.net/software/rocrail-snapshot/rocrail-xxxXXX-raspbian-stretch-armhf.deb
Dabei xxxXXX mit der aktuellen Versionsnummer ersetzen. Diese ist ersichtlich auf der Rocrail Download-Seite

9) Rocrail und die verwendeten Bibliotheken installieren.
sudo apt-get install libwxgtk3.0-dev libusb-1.0-0-dev
sudo dpkg -i rocrail-xxxXXX-raspbian-stretch-armhf.deb

10) Rocrail als deamon konfigurieren, so dass es beim Systemstart automatisch gestartet wird sudo update-rc.d rocraild defaults

11) Rocrail konfigurieren und für die Nutzung des Rocweb Services vorbereiten. Dazu am schnellsten die Uhrenzentrale herunterfahren, die SD-Karte entnehmen und auf einem anderen Rechner bearbeiten - oder einfach die vorgefertigten Konfigfiles herunterladen1 und in das Verzeichnis /pfad-zur-SD-Karte/opt/rocrail kopieren. Dann weitermachen bei 11e.
Alle Dateien befinden sich im Verzeichnis /pfad-zur-SD-Karte/opt/rocrail
11a. in der rocrail.ini wird der rocweb-dienst aktiviert und auf Port 8088 sowie den Pfad /opt/rocrail eingestellt
<http port="0" refresh="0">
<webclient port="8088" webpath="web" svgpath1="svg/themes/SpDrS60" svgpath2="svg/themes/Accessories" svgpath3="svg/themes/Roads" svgpath4="." svgpath5="." imgpath="images"» </http>

11b. ebenfalls in der rocrail.ini wird der RocNetNode Dienst aktiviert, mit dem nachher die Wanduhren automatisch heruntergefahren werden.
<digint iid="RocnetFREMOUhr" lib="rocnet" device="com1" sublib="udp" bps="19200" restricted="false" stress="false" libpath="/opt/rocrail" keepalive="10" localip="">
<rocnet id="1" addr="224.0.0.1" port="4321" crc="false" wd="true" sack="true" shutdownall="true" watchnodes="false" lcbus="0"/>
</digint>

11c. in der plan.xml wird ein Schalter hinzugefügt, der die Aktion zum Herunterfahren der Uhrenzentrale auslöst
<colist>
<co svgtype="1" id="output-shutdown" x="3" y="0" z="0" porttype="0" prev_id="output-shutdown" nr="0" desc="" decid="" show="true" blockid="" routeids="" grpid="" tristate="false" toggleswitch="false" operable="true" iid="" bus="0" uidname="" addr="0" port="0" gate="0" param="0" paramoff="0" value="1" delay="0" prot="D" inv="false" blink="false" colortype="false" asswitch="false" accessory="true" redChannel="0" greenChannel="0" blueChannel="0" whiteChannel="0" white2Channel="0" brightnessChannel="0" state="off">
<color blue="0" brightness="0" green="0" id="" red="0" saturation="254" white="0" white2="0"/>
<actionctrl id="ac-ShutdownSystem" state="on" desc="" lcid="" reset="true" allconditions="true" atcmd="true" atevt="false" auto="true" manual="true" substate="" duration="0" timer="0" callerid="output-shutdown" callerdesc="" calleruserdata=""/>
</co>
</colist>

11d. in das Verzeichnis /pfad-zur-SD-Karte/opt/rocrail wird eine Scriptdatei ShutdownRocrailSystem.sh angelegt, die das System herunterfährt:
#!/bin/sh
/etc/init.d/rocraild stop
sleep 15
shutdown -h now

11e. und schließlich muss noch der Rocrail Supportkey lic.dat nach /pfad-zur-SD-Karte/opt/rocrail kopiert werden. Zum Auspobieren wird der Key noch nicht benötigt, der Rocweb-Dienst läuft für 5 Minuten auch ohne.
11f. SD Karte ordentlich auswerfen, nicht einfach rausziehen!
12) Die SD Karte kommt wieder in die Uhrenzentrale und wird gestartet. Nach dem Login muss noch das Shutdown-script ausführbar gemacht werden:
cd /opt/rocrail
sudo chmod 755 ShutdownRocrailSystem.sh

Konfiguration des WLAN-Routers

Die genauen Konfigurationsschritte hängen sehr vom jeweiligen Router ab, deshalb beschreibe ich sie hier nicht im Detail, sondern nur die Einstellungen im allgemeinen.
13) Verbindung herstellen. Dazu den Konfigurationsrechner per Ethernetkabel direkt mit einem der LAN Ausgänge des Routers verbinden.
14) Einen Browser aufrufen und die Adresse 192.168.178.1 eingeben, damit kommt man auf die Konfigurationsoberfläche des Routers.
15) Den DHCP Server aktivieren. Adressbereich 192.168.14.2 bis 192.168.14.100. Der WLAN Router bekommt dann die 192.168.14.1. Normalerweise muss Schritt 13 mit der neuen Adresse wiederholt werden.
16) Das WLAN einschalten und konfigurieren:
SSID: "Uhrennetz"
WIFI Passwort "Modelluhr"
17) Die Uhrenzentrale einschalten. Nach einer Weile sollte dieser bei den aktiven DHCP Clients auftauchen. Wir nehmen im weiteren Verlauf an, die Uhrenzentrale hat die Adresse 192.168.14.3 bekommen. Diese Adresse merken, sie wird später noch wichtig (siehe Schritt 26).
18) Diesen Eintrag markieren, so dass diesem Gerät (= dieser MAC Adresse) immer diese Adresse zugewiesen bekommt.

Konfiguration der Wanduhr

19) Rasbian image herunterladen. Dieses mal „Rasbian stretch Desktop". Es benötigt eine 8GB SD Karte.

20) Das Image auf die SD Karte schreiben ist ausführlich und für die verschiedenen Betriebsysteme auf den Seiten der Raspberry Foundation beschrieben.
Das Beschreiben der SD Karte kann mehrere Minuten dauern. Nur Geduld. Aber wenn das erledigt ist, ist Rasbian schon installiert und muss „nur“ noch konfiguriert werden.
SD Karte ordnungsgemäß auswerfen, nicht einfach rausziehen!

21) Monitor, Maus & Tastatur anstecken. SD Karte in den Raspi einstecken. Raspi mit Strom versorgen.

22) Der Raspi bootet direkt in den Desktop. Ein Einloggen ist nicht erforderlich. Die Zugangsdaten sind trotzdem dieselben, sollte man sie mal benötigen (siehe 4). Das, was man bei Windows als Startmenü kennt, verbirgt sich hinter der kleinen lila Himbeere (=Raspberry) oben links in der Ecke. Von hier aus kann man die installierten Programme aufrufen und natürlich auch die Konfiguration ändern (→ Preferences → Raspberry Pi Configuration)

23) Ich mache die Konfiguration allerdings lieber in der bereits bekannten Befehlszeile (auch bekannt als "Terminal"). Die erreicht man über die Himbeere → Accessories → Terminal.
Darin geht die Konfiguration genau wie in Schritt 6 beschrieben. Auch die Einstellungen sind dieselben - nur, dass dieses Mal als Hostname z.B. "Wanduhr1" eingetragen wird. Zusätzlich habe ich noch "vnc" aktiviert. Dadurch kann man sich mit Hilfe eines vnc viewers von einem anderen Rechner aus auf der grafischen Oberfläche der Wanduhr1 einloggen.

24) Das Symbol mit den beiden blauen Pfeilen öffnet die Netzwerkverbindungen. Hier kann man auch die WLAN Zugangsdaten eingeben, falls etwas mit den Eingaben in der Konfiguration schief gegangen sein sollte.

25) Nun kommen wir aber endlich zur eigentlichen Uhr: Man muss dem System sagen, dass beim Systemstart ein Chrome browser im sogenannten "Kiosk Mode" gestartet werden soll und eine bestimmte Seite aufrufen. Und man muss den Bildschirmschoner ausschalten.
Beides macht man, in dem man die Datei /home/pi/.config/lxsession/LXDE-pi/autostart editiert:

26) Ein Terminal öffnen (siehe oben) und geany /home/pi/.config/lxsession/LXDE-pi/autostart eingeben. Die folgenden Einträge hinzufügen sorgen dafür, dass der Screensaver nicht aktiviert wird:
@xset s noblank
@xset s off
@xset -dpms


und der folgende Eintrag dafür, dass die Uhr aufgerufen wird
@chromium-browser –kiosk –disable-restore-session-state 192.168.14.3:8088/?z=1000

sollte die Uhrenzentrale eine abweichende IP adresse bekommen haben, als die 192.168.4.3, so muss natürlich entsprechend diese eingetragen werden.

27) Nun fehlt nur noch eine Sache: die Installation von RocNetNode, damit das System Wanduhr1 automatisch herunterfährt, wenn die Uhrenzentrale heruntegefahren wird.
Dazu öffnet man wiederum ein Terminal in der Uhrenzentrale und führt folgende Schritte aus:

28) RocNetNode herunterladen
wget http://rocrail.net/software/rocrail-snapshot/raspi/rocnetnode-xxxXX-raspbian-armhf.deb
Dabei xxxXX mit der aktuellen Versionsnummer ersetzen. Diese ist ersichtlich auf der Rocrail Download-Seite. Dieses mal muss natürlich bei "RocNetNode" geschaut werden.

29) rocnetnode installieren
sudo dpkg -i rocnetnode-xxxx-raspbian-armhf.deb

30) und neu starten
sudo reboot

31) Durch die Einstellungen in Schritt 11)b werden die RocNetNodes (=Wanduhren) von selbst erkannt und heruntergefahren, wenn die Uhrenzentrale heruntergefahren wird. Beziehungsweise, wenn der Rocrail Server auf der Uhrenzentrale gestoppt wird.

Viel Spaß beim Eisenbahn spielen mit Modelluhr!

Dateien

userpages/skippa/fremo-modelluhr.txt · Last modified: 2023/08/30 01:15 by rainerk