Hallo Gerd,
jetzt quäle ich dein Image vom 3.7.19 und habe folgende Erkenntnisse:
Zitat
Hallo Rainer,
...
im neuesten Image habe ich noch ein paar Bibliotheken hinzugefügt.
Hurra, dank den neu vorgeleisteten libxml-Headerdateien kann ich sofort mit Compilieren loslegen. Bei soviel Service wird man übermütig: ich vermisse noch die libpthread.a zum Linken von threadhaltigen Programmen. Bei musl ist das zwar nur eine Dummydatei (nur eine Kopfzeile), und bisher kopiere ich im Verzeichnis "/usr/lib/gcc/arm-openwrt-linux-muslgnueabi/5.4.0" die quasileere libm.a nach libpthread.a.
ZitatZitat
Der basrcpd versucht (derzeit zwar nicht mehr, aber ab der geplanten Version 1907 wieder) den Neuanmeldezähler in "/etc/srcpd.regcount" zu speichern (was jedoch dem read-only-Prinzip entgegensteht). Allerdings läuft der basrcpd unter dem User "daemon", der im /etc-Verzeichnis nicht schreiben darf. Man muss die Datei also händisch anlegen und dem daemon die erforderlichen Schreibrechte geben, ...Ist jetzt im neuesten Image mit drin.
Danke, funktioniert wie gewünscht.
ZitatZitat
Die Möglichkeit einer Fernsteuerung würde ich sehr begrüßen, doch hat uns der Maecan-Server wohl etwas verwirrt. Die ältere js-Version lässt die Loksteuerung (für mich Hauptmekmal) schon zu, die neuere C-Version dagegen noch nicht, obwohl sie mir vom Design her fortschrittlicher erscheint. Im aktuellen Image ist nun die C-Version (/usr/bin/maecanserver) drin, aber die alte nicht mehr, dafür wird im "can2lan"-Initskript versucht, den alten Server samt dem dafür notwendigen "can2udp" zu starten. Beide Alternativen können aber gar nicht laufen, weil die statischen Teile (Maecan-html-Zweige) sowie ein Verweis darauf in der httpd-Konfigurationsdatei fehlen.
Falls Maxi mitliest: sind die html-Zweige beider Serverversionen kompatibel oder muss man die beim Serverwechsel mit austauschen?Da habe ich auch den Überblick verloren ... Hoffen wir das Maxi nochmal antwortet. Ich habe jetzt mal den alten Server drin.
Das ist noch wirrer als gedacht; jetzt bin ich auf drei Versionen gestoßen:
- die frühe node-basierte vom Juni 18, die im GBert-Repository unter "maecan-server" steht und im aktuellen Image enthalten ist.
- die verbesserte node-basierte vom August 18 bei Maxi.
- die C-basierte im GBert-Repository unter "maecan-c".
Bei der dritten Version sind zwar die neuesten Datei-Versionen im html-Baum enthalten, aber die sind leider nicht mehr kompatibel: Listen werden statt synchronem "GET" über den Webserver jetzt per asynchronem Verfahren über Websocket abgeholt (falls ich den js-Code richtig verstehe).
Eine kleine Testreihe ergab folgendes Bild:
Aufgabe | Version Juni | Version August | html aus c-Version | CAN-Geräte auflisten | OK | OK | nicht möglich | basrcpd-Temperatur anzeigen | falsch, 50 statt 35°C | OK, 35°C | nicht möglich | Lokbilder hochladen | OK | OK | OK | Lok in Lokliste anlegen | ja, aber ohne Bild | ja, mit Bild | nicht möglich | Lok auswählen | ja, aber ohne Bild | ja, mit Bild | nicht möglich | Lok steuern | OK | OK | nicht möglich |
Wir sollten also erstmal von der ersten auf die zweite Version umsteigen.
Leider gibt es noch ein Problem mit dieser August-Version: node steigt aus. Das Auskommentieren der betreffenden Zeile half hier.
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Fehlermeldung:
/www/MaeCAN-Server/node/maecanserver.js:1180
locolist[i].functions_values[fn_number] = fn_value;
^
TypeError: Cannot set property '0' of undefined
at Socket.udpServer.on (/www/MaeCAN-Server/node/maecanserver.js:1180:49)
Schnelle Abhilfe:
1179 if (locolist[i].uid = uid) {
1180 - locolist[i].functions_values[fn_number] = fn_value;
1180 + // locolist[i].functions_values[fn_number] = fn_value;
1181 break;
1182 }
Die Zeile mit dem "if" und dem einfachen Gleichheitszeichen kommt mir auch seltsam vor, aber bisher äußert sich hier keine Fehlfunktion.
ZitatZitat
Zuletzt noch zu einem Punkt, der wohl schon länger so ist: kommt über ie IP-Schnittstelle ein verpacktes CAN-Paket mit der "Anforderung lokstat", sucht can2lan nach einer Datei "lokomotive.sr2", im Image heisst die entsprehende Datei aber "lokstat.sr2". Bei den anderen .sr2-Dateien ist das entsprechend. Ist das Absicht?
Ein Fehler meinerseits den ich korrigiert habe. Vielen Dank für den Hinweis. IMHO ist das nur für ein CS2 Kopplung notwendig. Das ist aber bisher nicht genutzt worden und wahrscheinlich deswegen nicht aufgefallen. Irgendwann, wenn ich mal viel Zeit habe, werde ich auch mal die Dateien mit Leben füllen
Laaaangfristig wollte ich die Dateien dazu nutzen, dass ich Einträge für meine srcp-Clients und den maecan-Server auch damit synchronisieren kann und habe mir das deshalb genauer angesehen. Habe dazu aber noch folgende Wünsche:
- Die bisherige Datei "fsstat.sr2" müsste noch in "fahrstrassen.sr2" umbenannt werden.
- In can2lan.c gäbe es noch folgende Änderung:
2
3
4
5
6
350 - syslog(LOG_NOTICE, "%s: sending gbsstat.sr2n", __func__);
351 - send_tcp_config_data("gbsstat.sr2", config_dir, canid, tcp_socket, CRC | COMPRESSED);
350 + syslog(LOG_NOTICE, "%s: sending gleisbild.sr2n", __func__);
351 + send_tcp_config_data("gleisbild.sr2", config_dir, canid, tcp_socket, CRC | COMPRESSED);
Gruß
Rainer