Hallo Kevin,
Zitat von 4000K
kurze Info zu meinem Stand: Ich hab mir Gerd's aktuelles Image (DHCP Client) von seiner Webseite runtergeladen, und auf meinem BPi gestartet. WLAN wieder konfiguriert. Nach dem Start den can2lan beendet
/etc/init.d/can2lan stop
und "mrsystem" gestartet:
/root/mrsystem.init start
Das sieht jetzt grundsätzlich schon ganz gut aus. "mrzentrale" stürzt nicht mehr ab. In /www/config wird eine lokomotive.cs2 geschrieben.
Prima. Dann kannst du ja jetzt tatsächlich mal versuchen auf die Loks zuzugreifen.
Zitat von 4000K
Im Moment sehe ich noch folgende Aufgaben (bitte um Verständnis, wenn ich mich komisch ausdrücke, Linux ist nicht so mein Fachgebiet):
- in der lokomotive.cs2 fehlt ein Eintrag. Ich meine, irgendwo hätte ich mal gelesen, dass die MS2 die Einträge etwas sonderbar/fehlerhaft meldet, und dass man von den zwei jeweils gemeldeten Loks nur die erste nehmen dürfe. Jedenfalls fehlt die Lok "151", aber in der "verbose"-Ausgaben von mrzentrale taucht mein "RegioShuttle" zweimal auf, in lokomotive ist "RegioShuttle" nur einmal drin, aber "151" fehlt. Könnt ihr Experten das bei euch auch nachvollziehen?
Haben beide Fahrzeuge die gleiche Adresse (id)? Ich hab in meiner Verwaltung als Schlüssel die Adresse benutzt. Aber durch meine Versuche mit dem Editieren der Dateien mit der cs2.exe und lesen der Doku und eine korrupte Datenbank in der MS2 hab ich gesehen, daß der Schlüssel der Name sein muß. Wenn du also mehrere Fahrzeuge mit der gleichen Adresse hast, findest du anschließend nur das letzte Fahrzeug in der lokomotive.cs2 Das möchte ich aber als nächstes noch ändern.
Du hast den RegioShuttle zweimal gesehen. Zweimal in den Loknamen oder einmal im Loknamen und einmal in der Lokinfo?
Womit wir bei den sonderbar/fehlerhaften Einträge der MS2 sind. Die MS2 liefert keine lokomotive.cs2. Ich muß zuerst die Loknamen abfragen. Ich bekomme immer Päckchen mit 2 Namen und der Anzahl Einträge. Und muß dann die nächsten Namen abfragen. Wenn ich alle Namen zusammen habe, kann ich pro Lok die Infos abfragen, die dann einem Eintrag in der lokomotive.cs2 entsprechen. Das ist anders als die lokomotive.cs2 abzufragen, aber Fehler hab ich da nicht gesehen. Es kann aber sein, daß die Lokliste in der MS2 selbst fehlerhaft ist. Ich hatte bei mir auch schon eine korrupte Liste mit einem doppelten Eintrag. Deshalb sind meine Loks mittlerweile alle auf Speicherkarten. Ich hab einfach alle Loks in der MS2 gelöscht und von den Karten wieder eingelesen.
Damit siehst du eine Lok im Trace zweimal, zum einen müßtest du die Ausgabe "lok name xxx in lok cfg" sehen. Wenn alle namen aufgesammelt sind dann pro Lok "request lokinfo n >xxx< from m".
Ist es möglich, mir den Trace zukommen zu lassen'? Ich kann dir dafür auch meine EMail Adresse geben. Dann kann ich das leichter beurteilen.
Zitat von 4000K
- mrsystem.init start sollte alle nötigen Prozesse starten. Aber "mrcs2eth" lebt anscheinend nicht lang. Sprich: in einer "ps"-Liste taucht es nicht mehr auf. Wenn ich das aber von Hand nochmal starte, bleibt es am Laufen. Dann bekommt auch das Handy die Zentrale mit, und zeigt die Loks an. Ideen? Müssen vielleicht in mrsystem.init irgendwo ein paar sleep-Sekunden oder eine andere Reihenfolge wegen gegenseitiger Abhängigkeiten rein?
Es muß tatsächlich zuerst die drehscheibe und danach alle anderen Programme gestartet werden. Aber da sollte eigentlich nach dem Start der drehscheibe schon eine Wartezeit drin sein. Es sei denn, Gerhard hat das geändert. Oder gibt es noch ein Problem mit dem Schließend des Ethernet sockets oder Beenden des can2lan von Gerhard? Wenn mrcs2eth nicht einen Socket auf dem von Märklin definierten Ethernet Port öffnen kann, beendet es sich auch von selbst.
Du hast oben von den Ausgaben gesprochen. Werden denn meine Programme mit Ausgaben gestartet? Wenn ja, siehst du Ausgaben vom ersten Start der mrcs2eth?
Zitat von 4000K
- wenn mrcs2eth läuft, erkennt das Handy auch die "Zentrale". (Nur so am Rande, an so Wortzerpflücker, für mich ist das Gespann aus BPi + CAN-Treiber + GBox + MS2 jetzt eine Zentrale.)
Man kann das auch so sehen wenn man möchte. Die MS2 macht die Lokanmeldung. Der BPi mit ist quasi eine Netzwerkerweiterung. Und von der Netzwerkseite aus sieht das wie eine Zentrale aus.
Zitat von 4000K
- die MS2-App aufm Handy zeigt keine Lokbilder. Ich vermute, Abhilfe wäre es, das "/www/config/icons" Verzeichnis zu füllen? Wäre der Inhalt vom Verzeichnis icons der CS2.exe passend? Außerdem ggf. in lokomotive.cs2 den Dateinamen des Lokbilds reinzuschreiben? Vermutlich wird die MS2 die Info zum Lokbild nicht liefern.
Ja genau, du mußt die Lokbilder in das "/www/config/icons" Verzeichnis kopieren. Du brauchst keinen Eintrag in der lokomotive.cs2 aber der Basisname des Bilds muß gleich dem Loknamen sein und im png Format vorliegen. Ich hab z.B. eine Lok mit dem Namen "280 003-5", damit brauch ein Bild mit dem Namen "280 003-5.png". Du kannst dich dabei bei den Bildern der cs2.exe bedienen. Wegen Copyright könne wir diese Bilder ja nicht beilegen.
Zitat von 4000K
- für mich Linux-Dummy: was ist das Äquivalent von autoexec.bat in Gerd's OpenWRT image, sprich: wo steht drin, welche Programme / Skripte beim Hochstarten gestartet werden? Wo lösche ich can2lan raus, wo schreibe ich mrsystem.init rein?
Das geht etwas ins Eingemachte mit init und symlinks und runlevel. Ich versuche es mal möglichst einfach. Da du "/etc/init.d" hast, hast du ein System V init. Das init ist das Programm, das eine UNIX System hochfährt, also alles startet. Du hast nicht ein einzelnes Script sondern pro Dienst bzw. Einstellung ein Skript. Diese ganzen Skripte sind in "/etc/init.d". Da sollte dann auch das mrsystem Skript liegen. Dann kennt Linux verschiedene "Runlevel" (als singleuser system laufen, als multiuser laufen, ...) in die es booten kann. Für jeden dieser Runlevel gibt es ein Verzeichnis, das sind die "/etc/rc*.d" Verzeichnisse. Man legt nun einen symbolischen Link von /etc/init.d in das entsprechende Verzeichnis des Runlevels an. Dabei gilt noch folgende Konvention: Der Name des Links ist der Name des Skripts aus dem "/etc/init.d" Verzeichnis mit dem Prefix "Kxx" oder "Sxx". Das K bedeutet, daß das Skript mit dem Parameter "stop" aufgerufen wird, also kill für den Dienst. Das S steht für Start. Die zweistellige Nummer dient dazu, eine Reihenfolge festzulegen. Z.B. wird bei mir auf dem BBB zuerst CAN gestartet, bevor mrsystem gestartet wird.
Du kannst also mein Startskript nach "/etc/init.d" kopieren. Dann kannst du einfach schauen, welche Links du von "can2lan" findest und einen Link mit identischen Prefix für mein mrsystem Startskript anlegen. Der Link für "can2lan" muß dann entfernt werden. Oder du editierst "/etc/init.d/can2lan" und kommentierst den Start des Damons aus.
Wenn du damit aber nicht so vertraut bist, würde ich empfehlen, jemand mit entsprechender UNIX Erfahrung mit hinzuzuziehen.
Zitat von 4000K
Bei allem, was nun geht, ist es wieder ein Anreiz, damit zu spielen. Ich muss nur noch mehr Zeit dafür finden ... Schon mal vielen Dank an die Experten dafür, was sie erreicht haben.
Erst mal Danke, daß dir die Lösung an und für sich gefällt. Wie du vielleicht schon bemerkt hast, bist du aber auch zu einem Tester geworden. Aber ich möchte versuchen, die Fehler zu beheben, damit das ganze eine brauchbare Lösung ergibt.
Tschüß
Michael