Web4Rail - Einrichtung

Auf der Seite srsoftware.de/web4rail wird meine neue Modellbahnsteuerungssoftware Web4Rail vorgestellt. Hier nun eine Schritt-für-Schritt-Anleitung, um die Software inklusive S88-Rückmeldesystem auf einem Raspberry-Pi zum Laufen zu bekommen.

Das ganze gibt's auch als 40-minütiges Video bei Youtube.

Hardware-Setup

Serieller Port des Raspberry Pi

Um einen Booster direkt vom Raspberry Pi mit einem Digitalsignal zu versorgen, ist es notwendig, den Booster am Seriellen Port des Einplatinencomputers anzuschließen.

Der Serielle Port befindet ich an den Pins 8 und 10 des Raspberrys und gibt ein 3,3 V-Signal aus. Für meinen selbstgebauten Booster ist das ok und er wurde direkt angeschlossen. Falls euer Booster ein 5 V-Signal (oder mehr) braucht, müsst ihr einen Pegelkonverter dazwischenschalten. Wie das geht habe ich schonmal in einem anderen Blogbeitrag beschrieben.

Für die bastelwütigen unter euch ist hier auch der Schaltplan meines Boosters:

Schaltplan meines Boosters

Um S88-Rückmeldemodule mit meiner Software model-rail-control verwenden zu können, müssen diese ebenso an den Rasberry-Pi angeschlossen werden. Ich habe das an den Pins 2, 5, 7, 9, 11 und 13 meines Raspberrys angeschlossen:

Anschluss eines S88-Rückmeldemoduls

Das ist auch schon alles, der Rest ist eine Frage der Software.

Software-Installation

Betriebssystem

Ich habe auf meinem Raspberry Pi das Raspberry Pi OS Lite installiert. Dabei handelt es sich um eine Debian-Variante, die von der Raspberry-Pi-Website heruntergeladen werden kann. Hier kann entweder NOOBS verwendet werden, oder man schreibt das heruntergleadene SD-Karten-Abbild mit dieser Anleitung auf die Micro-SD-Karte. Ich möchte an dieser Stelle nicht in die Details gehen, dazu gibt es genügend Beschreibungen online.

Spracheinstellungen des Betriebssystems

Idealerweise hat man im NOOBS-Setup schon das deutsche Tastaturlayout ausgewählt. Falls man das – wie ich – vergessen hat, lässt es sich wie folgt ändern:

Zunächst meldet man sich mit dem Benutzernamen „pi“ und dem Passwort „raspberry“ an. Falls ihr Probleme bei der Anmeldung habt, liegt das möglicherweise am voreingestellten englischen Tastaturlayout – verwendet die „z“-Taste um das „y“ im Passwort einzugeben!

gebt dann sudo raspi-config [Enter] ein, um den Konfigurations-Manager zu starten. Dort geht ihr mit den Pfeiltasten eurer Tastatur zu „Update“ und drückt die Enter-Taste. Nach dem Update geht Ihr zu „Localisation options“ und wählt „Locale“.

Geht dort mit den Pfeiltasten zu „de_DE.UTF-8 UTF-8“ und setzt mit der Leertaste eine Markierung. Drückt Enter und wählt im nächsten Fenster abermals „de_DE.UTF-8“.

Bestätigt mit Enter und nachdem der Raspi die Einstellungen übernommen habt geht wieder zu „Localisation options“. Wählt diesmal „Timezone“ um die Zeitzone auf „Europe“ und „Berlin“ einzustellen – oder was auch immer für euch sinnvoll ist.

Danach solltet ihr noch das Tastaturlayout einrichten: Wählt erneut „Localisation options“ und dort „Keyboard“. Für die meisten Nutzer sollte das „Generic 105-key PC (intl.)“-Layout passen. Wählt in den Folge-Fenstern „Other“, dann „German“, dann „The default for the keyboard layout“ und letztlich „No compose key“.

weitere Einstellungen im Betriebssystem

Geht dann zu „System options“, wählt „Hostname“ und gebt dort „modellbahn“ ein. Ihr könnt auch einen anderen Namen angeben, dann müsst ihr dies aber auch später in der Konfiguration anpassen!

Wenn ihr den Hostnamen aktualisiert habt, geht noch zu „Interface“, dort zu „Serial Port“ und wählt bei der Frage „Would you like a login shell to be accessible over serial“ die Antwort „No“. Im nächsten Dialog „Would you like the serial port hardware to be enabled?“ wählt ihr „Yes“.

Damit ist die Grundkonfiguration abgeschlossen!

Installation notwendiger Komponenten für die nachfolgenden Programme

Meldet euch am Raspberry Pi an und gebt dann die folgenden Kommandos, jeweils quittiert mit einem [Enter] ein:

sudo apt-get update
sudo apt-get upgrade

Falls der upgrade-Befehl eine Bestätigung zur Aktualisierung möchte, drückt Enter. Nach dem Upgrade geht es weiter mit:

sudo apt-get install automake git libxml2-dev maven openjdk-11-jdk-headless screen

Auch hier werdet ihr die Installation mit Enter bestätigen müssen.

Installation von SRCPD

SRCPD ist die quelloffene Software, welche auf eurem Raspberry-Pi das Digital-Signal erzeugt. Den Download-Link findet ihr auf der Website unter srcpd → Download. Er führt zur Source-Forge-Seite, wo ihr den Ordner „srcpd“ und dort die neuste Version wählen solltet. Klickt dort auf srcpd-x.x.x.tar.gz und ihr kommt auf die Downloadseite, deren URL ihr gleich braucht:

Bei mir war das

https://sourceforge.net/projects/srcpd/files/srcpd/2.1.5/srcpd-2.1.5.tar.gz/download

Meldet euch nun am Raspberry Pi an, falls ihr das noch nicht habt und gebt cd [Enter] ein, um in euer Home-Verzeichnis zu wechseln.

Gebt dann

wget https://sourceforge.net/projects/srcpd/files/srcpd/x.x.x/srcpd-x.x.x.tar.gz/download

und anschließend [Enter] ein um den Quellcode von SRCPD herunterzuladen. Nachdem das fertig ist, sollte sich im Ordner eine Datei mit dem Namen download befinden, diese könnt ihr anzeigen, indem ihr

ls -l

eingebt.

Diese Datei können wir nun umbenennen und anschließend entpacken:

mv download download.tar.gz
tar xfvz download.tar.gz

Wenn ihr jetzt wieder

ls -l

eingebt, solltet ihr einen neuen Ordner srcpd-x.x.x sehen. Wechselt in diesen Ordner, indem ihr cd srcpd, gefolgt von [Tab] (⇄-Taste) und [Enter] tippt.

Dort gebt nacheinander die folgenden Befehle (die Ausführung eines jeden davon kann ein paar Minuten dauern, jeweils warten!) ein:

./configure
make
sudo make install

SRCPD sollte nun installiert sein.

Web4Rail

Web4Rail ist die von mir geschriebene Software, mit der die Modellbahn mittels eines Web-Browsers gesteuert werden kann.

Um diese Software zu installieren, gebt nacheinander die folgenden Befehle ein:

cd
git clone https://github.com/srsoftware-de/Web4Rail.git
cd Web4Rail
mvn clean install

Danach sollte auch diese Software betriebsbereit sein.

model-rail-control

Diese – ebenfalls von mir geschriebene – Software fragt den S88-Rückmeldebus ab und gibt die Rückmeldeinformationen an das Web4Rail-Programm weiter. Ihr braucht es also nur, wenn ihr S88-Rückmelder verwedet.

Um es zu installieren, führt die folgenden Befehle auf dem Raspberry aus:

cd
git clone -b S88 https://github.com/StephanRichter/model-rail-control.git

Konfiguration

Sowohl SRCPD als auch model-rail-control müssen nun noch konfiguriert werden.

SRCPD

Für die Konfiguration von SRCPD tippt ihr

nano /usr/local/etc/srcpd.config

ein und änder die Datei, dass sie so aussieht:

<?xml version="1.0"?>
<srcpd version="2.0">
  <bus number="0">
    <server>
      <tcp-port>4303</tcp-port>
      <pid-file>/var/run/srcpd.pid</pid-file>
      <username>pi</username>
      <groupname>pi</groupname>
    </server>
    <verbosity>0</verbosity>
  </bus>
  <bus number="1">
    <ddl>
      <enable_maerklin>no</enable_maerklin>
      <enable_nmradcc>yes</enable_nmradcc>
      <enable_usleep_patch>yes</enable_usleep_patch>
    </ddl>
    <use_watchdog>no</use_watchdog>
    <verbosity>0</verbosity>
    <auto_power_on>yes</auto_power_on>
    <device>/dev/ttyAMA0</device>
   </bus>
</srcpd>

Wobei ihr die Einträge enable_maerklin und enable_nmradcc an eure Bedürfnisse anpassen solltet.

Ihr könnt die Datei speichern, indem ihr [Strg] + [X] drück, dann [J] und [Enter].

Um zu testen, ob ihr erfolgreich wart, könnt ihr folgenden Befehl eingeben:

sudo /usr/local/sbin/srcpd -n

Damit sollte das SRCPD-Programm gestartet werden. Wenn es keine Ausgaben macht, ist alles gut. Wenn es einen Fehler meldet, habt ihr euch bei der Konfiguration vertippt.

Falls das Programm ohne Ausgabe läuft, brecht es ab, indem ihr [Strg] und [C] drückt.

model-rail-control

In diesem Programm müssen die Pins eingestellt werden, an welcher ihr euer S88-Modul angeschlossen habt. -Nummern könnt ihr hier ermitteln: DuckDuckGo-Suche

Außerdem braucht ihr die IP-Adresse eures Raspberrys. Diese bekommt ihr mit folgendem Befehl:

ip a | grep 24 | awk '{print $2}'

Entsprechend eurer Verkabelung müsst ihr die Programm-Datei anpassen:

cd
nano model-rail-control/src/sensor-proxy.py

Gebt dort die für euch zutreffenden Werte für RESET, LOAD (=PS), CLOCK und DATA ein. Bei Contacts müsst ihr eintragen, wieviele Rückmelde-Eingänge eure verketteten S88-Module haben. D.h. Zwei 16-Kontakt-Module + ein 8-Kontakt Modul ergibt z.B. 40.

Außerdem muss noch die IP-Adresse eures Raspberries (von oben) in der Zeile

proxy = RocrailProxy('192.168.1.225',4304);

eingetragen werden.

Ihr könnt die Datei wieder speichern, indem ihr [Strg] + [X] drück, dann [J] und [Enter].

Damit ist alles konfiguriert, man sollte den Raspberry nun so einrichten, dass die Programme automatisch starten:

Start-Scripte

SRCPD

Erzeugt ein Start-Script für SRCPD, indem ihr folgendes eingebt:

cd
nano start-srcpd

Schreibt folgende Zeilen in die Datei:

#!/bin/bash
echo Starte SRCPD...
sudo /usr/local/sbin/srcpd

Speichert mit [Strg] + [X], dann [J] und schließlich [Enter].

model-rail-control

Erzeugt ein Start-Script für model-rail-control, indem ihr folgendes eingebt:

cd 
nano start-proxy

Schreibt folgende Zeilen in die Datei:

#!/bin/bash
sleep 10
echo Starte Proxy...
cd /home/pi/model-rail-control/src
sudo python2.7 sensor-proxy.py

Speichert mit [Strg] + [X], dann [J] und schließlich [Enter].

Web4Rail

Erzeugt ein Start-Script für Web4Rail, indem ihr folgendes eingebt:

cd
nano start-web4rail

Schreibt folgende Zeilen in die Datei:

#!/bin/bash
echo Starte Web4Rail...
sleep 15
echo Starte Web4Rail...
cd /home/pi/Web4Rail && mvn exec:java

Speichert mit [Strg] + [X], dann [J] und schließlich [Enter].

Autostart

Erzeugt eine Konfigurationsdatei für das Programm screen, indem ihr folgendes eingebt:

cd
nano .screenrc

Schreibt folenden Inhalt in die Datei:

split
screen /home/pi/start-srcpd
screen /home/pi/start-proxy
screen /home/pi/start-web4rail

Speichert mit [Strg] + [X], dann [J] und schließlich [Enter].

Tragt das Screen in die Crontab ( = Autostart-Datei) ein. Tippt dazu crontabe -e [Enter] ein. Falls ihr gefragt werden, welchen Editor ihr verwenden möchtet, nehr z.B. die 1 für den bereits bekannten nano Editor.

Die Crontab enthält einige Zeilen an erläuternden Kommentaren, tragt darunter die folgende Zeile ein:

@reboot /usr/bin/screen -dm

Wenn ihr nun euren Raspberry Pi mittels sudo reboot neu startet, sollte dieser nach dem Neustart automatisch srcpd, den S88-Proxy und das Programm web4Rail starten. An eurem Booster sollte ein Digitalsignal ankommen und ihr solltet im Browser die Seite http://modellbahn:8080/plan öffnen können!

Einrichtung

Die Einrichtung der Software Web4Rail wird später in einem separaten Beitrag beschrieben.

Linksammlung:

Hier nochmal eine Übersicht der wichtigsten Links:

Add new comment

Restricted HTML

  • Allowed HTML tags: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Lines and paragraphs break automatically.
  • Web page addresses and email addresses turn into links automatically.