NEWS
Maxcul ist komplett unbrauchbar (geloest mit 0.5.2)
-
Für cul Adapter hat in einem anderen Thread einnistet folgendes mit nanocul herausgefunden: http://forum.iobroker.net/viewtopic.php?t=9286
Jetzt ist die Frage ob das was ist was speziell der nanocul befindet Initialisierung braucht …
Ich schaue mir das heute Abend beides mal an.
Es gab für beide Adapter bei den letzten Updates entsprechende Threads im Tester Forum aber keiner hat dort getestet. Da ich selbst die Hardware nicht habe Ist es damit dann schwierig.
Da wir aber immer alles versuchen was wir können bin ich sicher das wir das, wenn Nutzer mithelfen beim testen, alles GEMEINSAM hinbekommen.
-
Ich habe den Code mittlerweile etwas gelesen und verstehe nicht woher Du das Kommando "Za
<address>" hast. Im Command Ref von CULFW kommt das nicht vor:
http://culfw.de/commandref.html
Da gibts nur Zr Zs Zx</address>
-
Ich habe jetzt mal testweise den Code so geaendert:
env.logger.debug('enable MAX! Mode of the CUL868'); return _this._serialDeviceInstance.writeAsync('X20\r\n').then(function() { return _this._serialDeviceInstance.writeAsync('Zr\r\n').then(function() { // return _this._serialDeviceInstance.writeAsync('Za' + _this._baseAddress + '\n'); }); })['catch'](reject);
Aber ich glaube dass die "\r" nichts bringen, der macht den "V\n" vorher ja auch, das Ergebnis kommt ja, aber halt in Teile zerhackt. Das Problem liegt ziemlich sicher im Handling der seriellen Schnittstelle. Sowas simples wie einen fgets() gibts hier wohl nicht (liest so lange Zeichen bis ein [<cr>][<lf>] kommt, oder EOF)?</lf></cr>
-
Um die Frage mit dem Init des nanoCUL zu beantworten. Mir scheint dass man ausser dem "Zr" fuer MORITZ praktisch nichts tun muss. Gut, wenn man die RSSI will, dann vorher ein "X20", aber das sollte auch schon genuegen…
-
Hier ist der Hund begraben (communication-layer.js):
return function() { var resolver, timeout; resolver = null; timeout = 30000; env.logger.info('serialPort ' + _this.serialPortName + ' is open!'); _this._serialDeviceInstance.on('data', function(data) { var dataString; dataString = '' + data; dataString = dataString.replace(/[\r]/g, ''); if (/^\d+\s+\d+$/.test(dataString)) { var m = dataString.match(/^(\d+)\s+(\d+)$/); return _this.emit('creditsReceived', m[2], m[1]); } env.logger.debug('incoming raw data from CUL: ' + data); if (/^V(.*)/.test(dataString)) { _this.emit('culFirmwareVersion', dataString); _this.ready = true; return _this.emit('ready'); } else if (/^Z(.*)/.test(dataString)) { return _this.emit('culDataReceived', dataString); } else if (/^LOVF/.test(dataString)){ return _this.emit('LOVF', true); } else { return env.logger.info('received unknown data: ' + dataString); } });
Dieser ganze Code geht nur wenn die Daten tatsaechlich als komplette Zeilen mit "\r" am Ende ankommen. Wenn das serielle Interface das nicht macht, geht davon nichts mehr.
Die Tests testen alle nur den String-Anfang, das Loeschen des "\r" geht nur korrekt, wenn das das letzte Zeichen ist. Wenn kein "\r" vorkommt ist der String zerhackt und wird von der naechsten Schicht nicht mehr erkannt. Noch schlimmer waere der Fall wenn der gelieferte String den letzten Teil von Zeile X und den ersten Teil von Zeile X+1 enthaelt. Dann gehen gleich zwei Zeilen vom CUL baden. Durch den Replace werden die beiden einfach zusammengehaengt.
Mir scheint die alten serialport Routinen funktionierten gaenzlich anders als die neu in V0.4.0 ge-upgrade-ten.
-
Ich hab eine Idee. Ja es hat sich beim serialport Update was geändert, dachte habe es korrekt umgestellt. Checke es heute Abend und melde mich ggf mit einer Version zum testen auf github. Denke das der Readline parser die Ursache ist.
-
Ich moechte darauf hinweisen dass ich glaube dass auch das Schreiben auf das Device nicht korrekt geht.
Mir fallen diese staendigen Zeilen auf:
maxcul.0 2018-02-18 18:32:12.720 info received unknown data: 20 531 maxcul.0 2018-02-18 18:32:12.719 debug incoming raw data from CUL: 20 531 maxcul.0 2018-02-18 18:32:07.717 info received unknown data: 20 526 maxcul.0 2018-02-18 18:32:07.716 debug incoming raw data from CUL: 20 526 maxcul.0 2018-02-18 18:32:02.715 info received unknown data: 20 521 maxcul.0 2018-02-18 18:32:02.714 debug incoming raw data from CUL: 20 521 maxcul.0 2018-02-18 18:31:57.712 info received unknown data: 20 516 maxcul.0 2018-02-18 18:31:57.711 debug incoming raw data from CUL: 20 516 maxcul.0 2018-02-18 18:31:52.708 info received unknown data: 20 511 maxcul.0 2018-02-18 18:31:52.708 debug incoming raw data from CUL: 20 511 maxcul.0 2018-02-18 18:31:47.704 info received unknown data: 0 506 maxcul.0 2018-02-18 18:31:47.704 debug incoming raw data from CUL: 0 506 maxcul.0 2018-02-18 18:31:47.690 info received unknown data: 2 maxcul.0 2018-02-18 18:31:47.690 debug incoming raw data from CUL: 2
Es sind Zeilen ala " 20 526". Ich weiss nicht was das ist, ich kenn CUL zuwenig. Aber ich wuerde sagen das ist etwas was nach "Zr" gar nicht kommen duerfte.
Deshalb ist meine Vermutung dass in Wirklichkeit nur das Schreiben von "V\n" geht und die Version kommt, aber die Kommandos danach "X20\nZr\n" gar nicht mehr beim nanoCUL ankommen und deshalb diese Daten im Sekundentakt erscheinen…
-
… und wenn Du schon mal am Code-Aendern bist, "Received" schreibt man nicht "Recieved" Kommt 4-5 Mal vor im Code ...
Ist mir in der Ausgabe aufgefallen, kommt aber als Token auch vor.
-
;-)) fixe ich gern mit. Der Adapter ist auch nicht von mir von daher kann ich noch mehr blind Änderungen machen. Aber mit Testern geht alles
-
So, jetzt dann hier mal als ersten Schritt eine 0.4.2 auf GitHub. Diese sollte das vollständige Zeilenlesen fixen und damit genau so funktionieren wie vorher. Weiterhin sind die "Recieved" in "Received" geändert … Hoffe es sind wirklich die Nachrichten falsch.
Bitte testen und berichten.
-
Geht nicht. wie man hier sieht sind die Zeilen immer noch zerhackt, schon die erste Ausgabe der Version ist zerteilt:
maxcul.0 2018-02-19 02:18:26.723 info received unknown data: 20 465 maxcul.0 2018-02-19 02:18:21.691 info received unknown data: 20 460 maxcul.0 2018-02-19 02:18:17.417 info received unknown data: CC123456001064 maxcul.0 2018-02-19 02:18:16.690 info received unknown data: 20 464 maxcul.0 2018-02-19 02:18:11.690 info received unknown data: 20 459 maxcul.0 2018-02-19 02:18:11.607 info received unknown data: Z0B4106301337CC123456001263 maxcul.0 2018-02-19 02:18:06.686 info received unknown data: 20 463 maxcul.0 2018-02-19 02:18:01.687 info received unknown data: 20 458 maxcul.0 2018-02-19 02:17:56.680 info received unknown data: 00 453 maxcul.0 2018-02-19 02:17:53.737 info received unknown data: anoCUL868 maxcul.0 2018-02-19 02:17:53.719 info CUL FW Version: V 1.67 n maxcul.0 2018-02-19 02:17:51.697 info serialPort /dev/ttyUSB0 is open! maxcul.0 2018-02-19 02:17:51.670 info using serial device /dev/ttyUSB0@38400 maxcul.0 2018-02-19 02:17:51.198 info starting. Version 0.4.2 in /opt/iobroker/node_modules/iobroker.maxcul, node: v6.13.0
-
Und es gibt noch ein Problem. Der Adapter laesst sich eigentlich nicht aus dem Github installieren. Ich habe ein frisches Image verwendet und versucht maxcul aus dem github zu installieren. Zwar installiert scheinbar der Adapter irgendwie/irgendwo, aber die Konfiguration springt nicht an und er erscheint auch nicht in der Instanzliste, obwohl er in der Adapterliste mit Version 0.4.2 und Status "installiert" steht.
Da geht wohl was waehrend der Installation nicht…
Hier das Logfile:
host.ioBroker-Pi 2018-02-19 03:35:37.807 info Update repository "default" under "[http://download.iobroker.net/sources-dist.json](http://download.iobroker.net/sources-dist.json)" iobroker 2018-02-19 03:35:36.910 info exit 0 iobroker 2018-02-19 03:35:36.788 info upload [0] maxcul.admin /opt/iobroker/node_modules/iobroker.maxcul/admin/index.html index.html text/html iobroker 2018-02-19 03:35:36.654 info upload [1] maxcul.admin /opt/iobroker/node_modules/iobroker.maxcul/admin/maxcul.png maxcul.png image/png iobroker 2018-02-19 03:35:36.625 info got /opt/iobroker/node_modules/iobroker.maxcul/admin iobroker 2018-02-19 03:35:10.080 info prebuild-install WARN install No prebuilt binaries found (target=6.13.0 runtime=node arch=arm platform=linux) iobroker 2018-02-19 03:35:10.057 info prebuild-install http 404 [https://github.com/node-serialport/node … arm.tar.gz](https://github.com/node-serialport/node-serialport/releases/download/v6.0.5/serialport-v6.0.5-node-v48-linux-arm.tar.gz) iobroker 2018-02-19 03:35:09.339 info prebuild-install http request GET [https://github.com/node-serialport/node ... arm.tar.gz](https://github.com/node-serialport/node-serialport/releases/download/v6.0.5/serialport-v6.0.5-node-v48-linux-arm.tar.gz) iobroker 2018-02-19 03:35:09.336 info prebuild-install info looking for cached prebuild @ /root/.npm/_prebuilds/https-github.com-node-serialport-node-serialport-releases-download-v6.0.5-serialport-v6.0.5-node-v48-linux-arm.tar.gz iobroker 2018-02-19 03:35:09.328 info prebuild-install info looking for local prebuild @ prebuilds/serialport-v6.0.5-node-v48-linux-arm.tar.gz iobroker 2018-02-19 03:35:09.315 info info begin Prebuild-install version 2.5.1 iobroker 2018-02-19 03:35:09.313 info iobroker 2018-02-19 03:35:09.307 info prebuild-install iobroker 2018-02-19 03:34:04.462 info npm install [https://github.com/ioBroker/ioBroker.ma ... all/master](https://github.com/ioBroker/ioBroker.maxcul/tarball/master) --production --prefix "/opt/iobroker" (System call) iobroker 2018-02-19 03:34:03.895 info install [https://github.com/ioBroker/ioBroker.ma ... all/master](https://github.com/ioBroker/ioBroker.maxcul/tarball/master) iobroker 2018-02-19 03:34:02.656 info url "[https://github.com/ioBroker/ioBroker.ma ... all/master](https://github.com/ioBroker/ioBroker.maxcul/tarball/master)" maxcul
-
Die Erkenntnisse von heute sind folgende:
Es ist mir jetzt gelungen in einer frischen Installation die Version 0.3.0 von maxcul zu installieren. Ich stelle fest sie geht voellig einwandfrei. Und ich hatte scheinbar mit meiner obigen Analyse recht, die neuen Versionen haben allesamt ein Problem mit dem Senden der Init-Kommandos. Im 0.3.0 erscheinen keinerlei wilde Meldungen im Mehrsekunden-Takt. Es kommen nur die erwuenschten MORITZ-Meldungen und sonst nichts.
Das bedeutet das "neue" Handling der seriellen Schnittstelle ist komplett kaputt.
-
Und es gibt noch ein Problem. Der Adapter laesst sich eigentlich nicht aus dem Github installieren. Ich habe ein frisches Image verwendet und versucht maxcul aus dem github zu installieren. Zwar installiert scheinbar der Adapter irgendwie/irgendwo, aber die Konfiguration springt nicht an und er erscheint auch nicht in der Instanzliste, obwohl er in der Adapterliste mit Version 0.4.2 und Status "installiert" steht.
Da geht wohl was waehrend der Installation nicht… `
Ne das passt alles. Bei Github-Installs werden nicht automatisch Adapterinstanzen angelegt wie sonst. Du musst die ggf manuell unter Adapter über den "+"-Button bei entsprechenden Adapter anlegen (lassen).Das ist "absicht".
Ich schaue nachher nochmal in die Parser-Logik rein und versuche es mal umzubauen. Gibt noch nen zweiten Weg wie es gehen kann
-
So ich habe auf Github nochmal die Parserei umgebaut, wie Sie hoffentlich laut Anleitung gehen sollte. Bitte nochmal testen. Versions nummer bleibt gleich. Kannst den Adapter einfach drüberinstallieren
-
Also nach 2 Minuten Test kann ich schon mal sagen, dass es sich jedenfalls besser anfuehlt als vorher. Ich sehe keine "unknown data" mehr durchscrollen. Ich lass das jetzt mal 1-2 Tage laufen und geb dann nochmal Bescheid ob noch irgendwas passiert ist. Schaut aber gut aus.
Du kannst Dich noch dran erinnern, dass der CUL-Adapter wahrscheinlich dasselbe Problem hatte?
-
Beim cul Adapter ist das problem vorauss anders gelagert. Da scheint die Kommunikation zu klappen, da ist es scheinbar bei einem nanocul "zu wenig" bei der Initialisierung. Der MaxCul sendet wirklich V, dann X01 und dann T01 als Befehle wie FHEM auch.
Der Cul-Adapter bisher nur "X21". was reichen sollte und auch bei "Normalen CULSticks ausreicht, aber bei nanocul wohl nicht.
Da sind wir noch dran.
-
PS: Wenn besser geht als vorher dann publishe ich das heute Abend und damit ist es wenigstens im "Latest".
-
Also das geht definitiv viel besser, um nicht zu sagen, es geht ueberhaupt mal
PS: Mir ist immer noch nicht klar woher Du den "Za
<address>" hast … ?</address>
-
Ich denke das kommt von "FHEM Research" … tippe jemand hat FHEM geschaut und identisch hier nachgebaut.
Da findet man es auch: https://github.com/mhop/fhem-mirror/blo ... MAX.pm#L63
PS: setzt du bitte ein "gelöst" in den Thread Titel des ersten Posts? :-)!