co2mini co2mini wrong data format received or checksum error

Begonnen von arthur_dent_2015, 03 Dezember 2020, 19:09:09

Vorheriges Thema - Nächstes Thema

arthur_dent_2015

Hallo,
ich hab mir auch eins von diesen co2 Messgeräten angeschaft. Dieser soll an einem Raspi 4 mit Buster und Fhem laufen. Der tut aber leider nicht :(
List vom device:

Internals:
   DEF        /dev/co2mini1
   DEVICE     /dev/co2mini1
   FUUID      5fc7f3c2-f33f-052b-6d75-7687815c4c98ce4f
   FVERSION   38_co2mini.pm:?/2020-12-02
   NAME       co2
   NR         837
   NTFY_ORDER 50-co2
   STATE      disconnected
   TYPE       co2mini
   READINGS:
   helper:
     buf       
     mode       dev
Attributes:
   disable    1
   room       Klima
   verbose    5

Log Auszug mit verbose 5

2020.12.03 18:50:38 5: co2mini data received 129 157 234 233 34 60 91 119
2020.12.03 18:50:38 3: co2mini wrong data format received or checksum error
2020.12.03 18:50:38 5: co2mini data received 165 93 234 201 39 252 91 108
2020.12.03 18:50:38 3: co2mini wrong data format received or checksum error
2020.12.03 18:50:42 5: co2mini data received 10 93 236 169 35 188 91 134
2020.12.03 18:50:42 3: co2mini wrong data format received or checksum error
2020.12.03 18:50:42 5: co2mini data received 63 189 236 105 36 156 91 109
2020.12.03 18:50:42 3: co2mini wrong data format received or checksum error
2020.12.03 18:50:42 5: co2mini data received 125 61 236 73 33 124 91 119
2020.12.03 18:50:42 3: co2mini wrong data format received or checksum error
2020.12.03 18:50:42 5: co2mini data received 81 189 241 41 36 220 91 136
2020.12.03 18:50:42 3: co2mini wrong data format received or checksum error
2020.12.03 18:50:42 5: co2mini data received 158 29 241 201 37 188 91 126
2020.12.03 18:50:42 3: co2mini wrong data format received or checksum error
2020.12.03 18:50:42 5: co2mini data received 196 125 238 169 35 156 91 106
2020.12.03 18:50:42 3: co2mini wrong data format received or checksum error
2020.12.03 18:50:42 5: co2mini data received 228 125 234 137 35 156 91 110
2020.12.03 18:50:42 3: co2mini wrong data format received or checksum error

An einem Raspi 3 mit Stretch sieht es ähnlich aus :(
List vom device:

Internals:
   DEVICE     /dev/co2mini0
   FUUID      5fc92363-f33f-371b-bef8-db6a190e59c21fd5
   NAME       co2
   NR         1247
   NTFY_ORDER 50-co2
   STATE      disconnected
   TYPE       co2mini
   READINGS:
   helper:
     mode       dev
Attributes:
   disable    1
   verbose    5

Log Auszug mit verbose 5:

2020.12.03 18:46:34 5: co2mini data received 10 93 236 169 35 188 91 134
2020.12.03 18:46:34 3: co2mini wrong data format received or checksum error
2020.12.03 18:46:34 5: co2mini data received 255 125 236 105 36 156 91 109
2020.12.03 18:46:34 3: co2mini wrong data format received or checksum error
2020.12.03 18:46:34 5: co2mini data received 157 93 236 73 33 124 91 119
2020.12.03 18:46:34 3: co2mini wrong data format received or checksum error
2020.12.03 18:46:36 5: co2mini data received 113 221 241 41 36 220 91 136
2020.12.03 18:46:36 3: co2mini wrong data format received or checksum error
2020.12.03 18:46:36 5: co2mini data received 120 221 241 201 37 188 91 124
2020.12.03 18:46:36 3: co2mini wrong data format received or checksum error
2020.12.03 18:46:36 5: co2mini data received 109 253 238 169 35 124 91 132
2020.12.03 18:46:36 3: co2mini wrong data format received or checksum error
2020.12.03 18:46:36 5: co2mini data received 13 253 234 137 35 124 91 136
2020.12.03 18:46:36 3: co2mini wrong data format received or checksum error
2020.12.03 18:46:37 5: co2mini data received 129 157 234 233 34 60 91 119
2020.12.03 18:46:37 3: co2mini wrong data format received or checksum error
2020.12.03 18:46:37 5: co2mini data received 133 61 234 201 39 252 91 108
2020.12.03 18:46:37 3: co2mini wrong data format received or checksum error
2020.12.03 18:46:39 5: co2mini data received 10 93 236 169 35 188 91 134
2020.12.03 18:46:39 3: co2mini wrong data format received or checksum error
2020.12.03 18:46:39 5: co2mini data received 31 157 236 105 36 156 91 109
2020.12.03 18:46:39 3: co2mini wrong data format received or checksum error
2020.12.03 18:46:39 5: co2mini data received 157 93 236 73 33 124 91 119
2020.12.03 18:46:39 3: co2mini wrong data format received or checksum error

Bei beiden läuft die USB Anbindung über einen aktiven Hub, Stromversorgung scheidet also aus, denke ich...
Ich hab auch mal, auf dem Raspi 4, einen Server aufgesetzt. Da geht das device gleich auf disable. Die Fehlermeldungen kommen dann im Server :(

root@raspi4:/opt/fhem/FHEM# service co2mini status
● co2mini.service
   Loaded: loaded (/etc/init.d/co2mini; generated)
   Active: active (running) since Thu 2020-12-03 18:34:02 CET; 15min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 11284 ExecStart=/etc/init.d/co2mini start (code=exited, status=0/SUCCESS)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/co2mini.service
           └─11290 /usr/bin/perl -w /opt/fhem/FHEM/co2mini_server.pl /dev/co2mini1 15200

Dez 03 18:48:49 raspi4 co2mini[11284]: co2mini wrong data format received or checksum error at /opt/fhem/FHEM/co2mini_server.pl line 110.
Dez 03 18:48:52 raspi4 co2mini[11284]: co2mini wrong data format received or checksum error at /opt/fhem/FHEM/co2mini_server.pl line 110.
Dez 03 18:48:53 raspi4 co2mini[11284]: co2mini wrong data format received or checksum error at /opt/fhem/FHEM/co2mini_server.pl line 110.
Dez 03 18:48:54 raspi4 co2mini[11284]: co2mini wrong data format received or checksum error at /opt/fhem/FHEM/co2mini_server.pl line 110.
Dez 03 18:48:57 raspi4 co2mini[11284]: co2mini wrong data format received or checksum error at /opt/fhem/FHEM/co2mini_server.pl line 110.
Dez 03 18:48:58 raspi4 co2mini[11284]: co2mini wrong data format received or checksum error at /opt/fhem/FHEM/co2mini_server.pl line 110.
Dez 03 18:48:59 raspi4 co2mini[11284]: co2mini wrong data format received or checksum error at /opt/fhem/FHEM/co2mini_server.pl line 110.
Dez 03 18:49:02 raspi4 co2mini[11284]: co2mini wrong data format received or checksum error at /opt/fhem/FHEM/co2mini_server.pl line 110.
Dez 03 18:49:03 raspi4 co2mini[11284]: co2mini wrong data format received or checksum error at /opt/fhem/FHEM/co2mini_server.pl line 110.
Dez 03 18:49:04 raspi4 co2mini[11284]: co2mini wrong data format received or checksum error at /opt/fhem/FHEM/co2mini_server.pl line 110.

Hat sich da im Laufe der Jahre was am Protokoll geändert?
Gruß
Arthur

vbs

Sorry, da kann ich leider nix zu sagen. Hab mich mit dem Gerät selbst noch nie beschäftigt.

tomster

#2
Hmm, schon komisch, dass er falsches data format & checksum meldet, obwohl das Device gar nicht connected ist...
Bist Du sicher, dass das device auf den verschiedenen Systemen wirklich als /dev/co2mini0 oder /dev/co2mini1 eingehängt ist?

arthur_dent_2015

Zitat von: vbs am 22 Dezember 2020, 12:30:41
Sorry, da kann ich leider nix zu sagen. Hab mich mit dem Gerät selbst noch nie beschäftigt.

schade, dann muss ich das Ding wohl als Fehlkauf abschreiben :(
Der ursprüngliche Entwickler Henryk scheint hier ja nicht mehr aktiv zu sein.

Zitat von: tomster am 22 Dezember 2020, 12:39:16
Hmm, schon komisch, dass er falsches data format & checksum meldet, obwohl das Device gar nicht connected ist...
Bist Du sicher, dass das device auf den verschiedenen Systemen wirklich als /dev/co2mini0 oder /dev/co2mini1 eingehängt ist?

List vom Device und die Logauszüge sind nicht zeitgleich gemacht. Ich hab das Ding wohl vor dem list device abgezogen :(  Und ja, das Gerät taucht beim einhängen als /dev/co2mini1 auf. Hat mich erst etwas irritiert, in der Beschreibung steht ja was von /dev/co2mini0 als default.

tomster

#4
Hast Du unter /etc/udev/rules.d die entsprechende rules-Datei erstellt und auch die richtige Usergroup angegeben und/oder die Rechte auf 666 definiert?

Alternativ:
Nimm Mal testweise den Hub raus.

arthur_dent_2015

Zitat von: tomster am 22 Dezember 2020, 12:57:31
Hast Du unter /etc/udev/rules.d die entsprechende rules-Datei erstellt und auch die richtige Usergroup angegeben und/oder die Rechte auf 666 definiert?

definitiv. Ich hab auch die mitgeliefert Windoof Software ausprobiert, die zeigt ebenfalls nicht an. Vom Verkäufer hab ich jetzt eine aktuelle Version bekommen die funktioniert. Ne hübsche Graphik auf meinem Laptop hilft aber nicht, ich krieg die Daten ja nicht im Fhem :-(

tomster

Ich hab gerade Mal meine rules angeschaut. Ich weiß zwar heute nicht mehr warum, aber ich hab als usergroup "dialout" angegeben.
Hast Du auch Mal die Modulversion von vbs probiert?
https://forum.fhem.de/index.php/topic,41750.msg397497.html#msg397497

arthur_dent_2015

Zitat von: tomster am 22 Dezember 2020, 13:08:59
Ich hab gerade Mal meine rules angeschaut. Ich weiß zwar heute nicht mehr warum, aber ich hab als usergroup "dialout" angegeben.
Hast Du auch Mal die Modulversion von vbs probiert?
https://forum.fhem.de/index.php/topic,41750.msg397497.html#msg397497

Meine 90-co2mini.rules sieht so aus:

ACTION=="remove", GOTO="co2mini_end"
SUBSYSTEMS=="usb", KERNEL=="hidraw*", ATTRS{idVendor}=="04d9", ATTRS{idProduct}=="a052", GROUP="plugdev", MODE="0666", SYMLINK+="co2mini%n", GOTO="co2mini_end"
LABEL="co2mini_end"

ja, beide Versionen ausprobiert, auch die Variante mit dem Server, Ergebnis siehe oben. Da der Hersteller im September 2019 ne neue Software auf den Markt gebracht hat, gehe ich mal davon aus dass sich was am Protokoll geändert haben muss.

henryk

Huhu. Ich hab den Thread hier grade zufällig gefunden als ich heute ebenfalls ein neues co2mini anschließen wollte. Ich benutze das mittlerweile mit Python und Home Assistant (via https://github.com/henryk/co2mini-mqtt) aber das Problem wird das gleiche sein.

Stellt sich raus, bei neueren Geräten wird die Übertragung die vom Gerät kommt nicht mehr "verschlüsselt". Das ist unfair, ich hab mir so viel Mühe gegeben!

Ich hab den Perl-Code grade nicht zur Hand und auch keine Umgebung um es zu testen, aber es sollte funktionieren einfach den Funktionsaufruf der die Entschlüsselung macht durch eine normale Variablenzuweisung zu ersetzen.

Grüße aus Berlin, bleibt gesund, Henryk

arthur_dent_2015

Zitat von: henryk am 22 Dezember 2020, 16:41:05
Huhu. Ich hab den Thread hier grade zufällig gefunden als ich heute ebenfalls ein neues co2mini anschließen wollte. Ich benutze das mittlerweile mit Python und Home Assistant (via https://github.com/henryk/co2mini-mqtt) aber das Problem wird das gleiche sein.

Stellt sich raus, bei neueren Geräten wird die Übertragung die vom Gerät kommt nicht mehr "verschlüsselt". Das ist unfair, ich hab mir so viel Mühe gegeben!

Ich hab den Perl-Code grade nicht zur Hand und auch keine Umgebung um es zu testen, aber es sollte funktionieren einfach den Funktionsaufruf der die Entschlüsselung macht durch eine normale Variablenzuweisung zu ersetzen.

Grüße aus Berlin, bleibt gesund, Henryk

oh, doch noch aktiv :)
Versteh ich Dich richtig dass Du noch mal Hand an den Code legen wirst?
Danke vorab und Gruß nach Berlin!

henryk

Nein, ich hab wie gesagt gerade keine Umgebung wo ich das testen kann. Aber die Änderung ist wie gesagt minimal, das schaffst du :)

arthur_dent_2015

Zitat von: henryk am 22 Dezember 2020, 17:15:47
Aber die Änderung ist wie gesagt minimal, das schaffst du :)

Ich habe von Perl keine Ahnung  :'(
Da gibts ne Routine co2mini_decrypt die in co2mini_Read in einem elseif aufgerufen wird

} elsif($hash->{helper}{mode} eq "dev") {
    while ( defined($readlength = sysread($hash->{HANDLE}, $buf, 8)) and $readlength == 8 ) {
      my @data = co2mini_decrypt($key, $buf);

Ich vermute mal dass my @data = co2mini_decrypt($key, $buf); durch my @data = $co2 $temperature; ersetzt werden muss. Humidity gibts im aktuellen Gerät nicht mehr.

Help needed :(

fireball

Hallo Freunde,

schön zu hören, das es noch jemand mit dem Gerät gibt.

Mein Problem ist folgendes und daher seit gut einem Jahr nicht mehr in Betrieb...

Ich hab letztes Jahr XMAS von Rasp 2b und Jessie auf Rasp4 und neustes Betriebssystem gewechselt...
Seit dem bekomme ich keine Verbindung mehr... manchmal kurz und einmal, restartet man das System/FHEM geht die Verbindung verloren..

Ich war jetzt schon drauf und dran mich in die UDEV Rules reinzulesen oder ein paar Hinweise zu folgen oder das Gerät per Serial-ID anzusprechen, aber das alles funktioniert irgendwie nicht mehr...

https://wiki.fhem.de/wiki/Mehrere_USB-Ger%C3%A4te_einbinden#Nutzen_der_Serial_ID

Ich bekomme keine Werte mehr ausgelesen.
Das Gerät ansich ist da, wenn ich lsusb machen:
pi@raspberrypi:~ $ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 04d9:a052 Holtek Semiconductor, Inc. USB-zyTemp
Bus 001 Device 005: ID 0658:0200 Sigma Designs, Inc. Aeotec Z-Stick Gen5 (ZW090) - UZB
Bus 001 Device 003: ID 214b:7250
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub


ich habe auch schon alle Versionen von den Modulen durch, die man im Netz finden kann.
Jemend noch ne schlaue Idee, wie ich das wieder zum laufen bringe... viell. liegts ja auch am Ende an Pi4 und Buster?

Ich habe mal den Perl Code durchsuchen lassen nach Fehlern... da wurde ein Fehler bei eine Variablendeklaration angemeckert, aber auch das half nix...

VG
René

fireball


nc77

Da die FHEM Integration mich als frischgebackener Eigentümer eines ,,TFA-Dostmann AirControl Mini CO2 Messgerät TFA 31.5006 Raumluftüberwachung" einiges an Zeit gekostet hat. Hier nun für potentielle Googlesuchen noch mal etwas ausführlicher.

Problem ist, dass die neuen Versionen der CO2 Messgeräte (bcdDevice= 2.00) wohl keine Verschlüsselung mehr haben. Aber die im Forum verlinkten bestehenden co2mini FHEM Module ,,entschlüsseln" (Funktion ,,co2mini_decrypt") fälschlicherweise den bereits unverschlüsselten Datenstrom der neueren CO2 Messgeräte was dann zur folgenden Fehlermeldung führt: ,,co2mini wrong data format received or checksum error".

Überprüfung, ob neue Version des CO2 Messgerätes vorliegt (bcdDevice= 2.00):

pi@raspberrypi:~ $ dmesg | grep usb
New USB device found, idVendor=04d9, idProduct=a052, bcdDevice= 2.00


Um den Datenstrom unangetastet zu lassen sollte man die ,,38_co2mini.pm" verändern (siehe Vorschlag von Henryk):
Folgende Zeile:

my @data = co2mini_decrypt($key, $buf);


Durch folgende Zeile ersetzen:

my @data = map { ord } split //, $buf;


Danach FHEM neu starten bzw. in der FHEM Befehlsszeile ,,reload 38_co2mini"     

Oder ggf. die ,,co2mini_server.pl" entsprechend anpassen und dann ,,sudo service co2mini restart"