FRconfig auf dem PiLocoBuffer

Da die Konfiguration der FRED(i)´s mit JMRI immer wieder zu Fragen führte und manchen Nutzern die Programmierung in JMRI sehr zuwider war, wurde im FREMO in Diskussion mit Pål O., Knut. S.  und Knut H. ein einfaches Konfigurationstool nur für FRED(i)´s entwickelt.

Das ganze basiert auf einer Weboberfläche, die entweder online aufgerufen oder lokal gespeichert werden kann und einem WS2LbServer.

Eine Nutzung auf dem PiLocoBuffer ist sehr einfach zu realisieren. Nachfolgend dazu eine Anleitung zur Installation.

FREMO-Mitglieder finden nach Anmeldung im FREMO-Forum zu FRconfig weitere Informationen [LINK] .

Installation und Start von FRconfig mit WS2LbServer

FRconfig dient zur Konfiguration von FREDi-Geräten über den LocoBuffer. Damit FRconfig mit dem LocoBuffer kommunizieren kann, wird zusätzlich der WebSocket2LbServer (WS2LbServer) benötigt.

1. FRconfig aufrufen und lokal speichern

Zunächst im Browser auf dem PiLocoBuffer – gegebenenfalls über RealVNC – die FRconfig-Seite aufrufen:

FRconfig

Beim ersten Aufruf können zunächst Fehlermeldungen wie

No connection to WS2LbServer possible

erscheinen. Das ist zu diesem Zeitpunkt normal, da der WS2LbServer noch nicht gestartet wurde.

Soll FRconfig auch verwendet werden können, wenn der PiLocoBuffer keine Internetverbindung hat, sollte die Seite lokal gespeichert werden.

In Firefox beispielsweise:

Save Page As… / Seite speichern unter…

Als Dateiname wird in dieser Anleitung verwendet:

FRconfig_local.html

Die Datei wird im Ordner

/home/pi/Downloads/

gespeichert.

Wichtig: Der tatsächliche Dateiname muss später exakt mit dem im Startskript eingetragenen Dateinamen übereinstimmen. Linux unterscheidet dabei auch zwischen Groß- und Kleinschreibung.

2. WS2LbServer herunterladen

In FRconfig befindet sich oben rechts im Burger-Menü unter Hilfe ein Downloadlink für den WS2LbServer.

Die heruntergeladene Datei sollte anschließend unter

/home/pi/Downloads/WebSocket2LbServer.jar

liegen.

Der Online-Aufruf von FRconfig im Browser kann anschließend geschlossen werden.

3. WS2LbServer manuell testen

Bevor die automatische Startfunktion eingerichtet wird, empfiehlt sich ein einmaliger manueller Test.

Im Terminal:

java -jar /home/pi/Downloads/WebSocket2LbServer.jar localhost 1234

Bei erfolgreichem Start erscheint beispielsweise:

WebSocketServer v0.6 has started, listening on port 8080.

Waiting for a client?

Wird anschließend FRconfig geöffnet, sollte zusätzlich etwa Folgendes erscheinen:

A client connected from /0:0:0:0:0:0:0:1
Waiting for a client?
Connected to LbServer at localhost port 1234
> VERSION LbServer version 0.15 built Aug 29 2026

Damit ist die Kommunikationskette hergestellt:

FRconfig
    │
    │ WebSocket Port 8080
    ▼
WS2LbServer
    │
    │ TCP localhost:1234
    ▼
LbServer
    │
    ▼
LocoBuffer

Der manuell gestartete WS2LbServer kann mit Strg+C beendet werden.

FRconfig und WS2LbServer per Desktop-Symbol starten

Damit nicht bei jeder Verwendung zunächst ein Terminal geöffnet werden muss, kann auf dem Desktop ein Starter eingerichtet werden.

Dieser startet den WS2LbServer nur dann, wenn noch keine Instanz läuft, und öffnet anschließend die lokal gespeicherte FRconfig-Seite.

4. Startskript anlegen

Im Terminal:

nano /home/pi/frconfig-start.sh

Folgenden Inhalt einfügen:

#!/bin/bash

WS2LB_JAR="/home/pi/Downloads/WebSocket2LbServer.jar"
FRCONFIG="/home/pi/Downloads/FRconfig_local.html"
LOG="/tmp/ws2lbserver.log"

# Start WS2LbServer only if it is not already running
if ! pgrep -f "WebSocket2LbServer.jar" >/dev/null; then
    java -jar "$WS2LB_JAR" localhost 1234 >"$LOG" 2>&1 &
    sleep 2
fi

# Open FRconfig
xdg-open "$FRCONFIG" >/dev/null 2>&1 &

Datei speichern:

Strg+O → Enter → Strg+X

Anschließend ausführbar machen:

chmod +x /home/pi/frconfig-start.sh

Warum die Prüfung auf einen laufenden WS2LbServer wichtig ist

Ohne diese Prüfung würde jeder erneute Klick auf das Desktop-Symbol versuchen, einen weiteren WS2LbServer zu starten.

Da der erste WS2LbServer bereits auf Port 8080 lauscht, würde die zweite Instanz mit

java.net.BindException: Die Adresse wird bereits verwendet

abbrechen.

Das oben verwendete

pgrep -f "WebSocket2LbServer.jar"

verhindert diesen Mehrfachstart.

5. Desktop-Symbol anlegen

Im Terminal:

nano /home/pi/Desktop/FRconfig.desktop

Folgenden Inhalt einfügen:

[Desktop Entry]
Version=1.0
Type=Application
Name=FRconfig
Comment=FRconfig mit WS2LbServer starten
Exec=/home/pi/frconfig-start.sh
Icon=applications-system
Terminal=false
Categories=Utility;

Speichern:

Strg+O → Enter → Strg+X

Anschließend die Desktop-Datei ausführbar machen:

chmod +x /home/pi/Desktop/FRconfig.desktop

6. Verwendung

Auf dem Desktop befindet sich nun das Symbol FRconfig.

Ein Doppelklick darauf bewirkt:

  1. Es wird geprüft, ob WS2LbServer bereits läuft.

  2. Falls nicht, wird WebSocket2LbServer.jar gestartet.

  3. WS2LbServer öffnet seinen WebSocket-Server auf Port 8080.

  4. WS2LbServer verbindet sich mit dem LbServer auf localhost:1234.

  5. Anschließend wird die lokal gespeicherte FRconfig_local.html im Browser geöffnet.

  6. Läuft WS2LbServer bereits, wird keine zweite Instanz gestartet; FRconfig wird lediglich geöffnet.

FRconfig kann damit auch ohne Internetverbindung verwendet werden.

Fehlersuche

Sollte FRconfig

No connection to WS2LbServer possible

bzw.

Can not open connection to URL: ws://localhost:8080/

anzeigen, können folgende Prüfungen durchgeführt werden.

Läuft WS2LbServer?

ps aux | grep -i WebSocket2LbServer

Eine korrekte Ausgabe enthält beispielsweise:

java -jar /home/pi/Downloads/WebSocket2LbServer.jar localhost 1234

Lauscht WS2LbServer auf Port 8080?

ss -ltnp | grep 8080

Es sollte eine Ausgabe ähnlich dieser erscheinen:

LISTEN ... *:8080 ... java

Das Log des über das Desktop-Symbol gestarteten WS2LbServers kann mit

cat /tmp/ws2lbserver.log

angezeigt werden.

Falls dort

java.net.BindException: Die Adresse wird bereits verwendet

steht, war bereits eine andere WS2LbServer-Instanz aktiv. Mit dem oben beschriebenen korrigierten Startskript sollte dieser Fall bei weiteren Aufrufen des Desktop-Symbols nicht mehr auftreten.

Falls FRconfig beim Desktop-Start überhaupt nicht geöffnet wird, sollten außerdem die tatsächlichen Dateinamen geprüft werden:

ls -l /home/pi/Downloads/

Insbesondere müssen die im Skript eingetragenen Pfade

/home/pi/Downloads/WebSocket2LbServer.jar
/home/pi/Downloads/FRconfig_local.html

mit den tatsächlich vorhandenen Dateien exakt übereinstimmen.

Aufruf von einem anderen Device im Netzwerk.

Will man FRconfig nach erfolgreicher Installation und dem Start des WS2LbServer auf dem PiLocoBuffer von einem anderen Device, z. B. einem PC aufrufen, der sich im selben Netzwerk wie der PiLocoBuffer befindet, ist unter „setup“ die Adresse des PiLocoBuffer wie folgt einzugeben (im Beispiel hat der PiLocoBuffer die IP-Adresse 192.168.1.104): ws://192.168.1.104:8080/