FHEM Forum

FHEM - Hausautomations-Systeme => Sonstige Systeme => Thema gestartet von: arthur_dent_2015 am 03 Dezember 2020, 19:09:09

Titel: co2mini co2mini wrong data format received or checksum error
Beitrag von: arthur_dent_2015 am 03 Dezember 2020, 19:09:09
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
Titel: Antw:co2mini co2mini wrong data format received or checksum error
Beitrag 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.
Titel: Antw:co2mini co2mini wrong data format received or checksum error
Beitrag 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?
Titel: Antw:co2mini co2mini wrong data format received or checksum error
Beitrag von: arthur_dent_2015 am 22 Dezember 2020, 12:53:39
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.
Titel: Antw:co2mini co2mini wrong data format received or checksum error
Beitrag 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?

Alternativ:
Nimm Mal testweise den Hub raus.
Titel: Antw:co2mini co2mini wrong data format received or checksum error
Beitrag von: arthur_dent_2015 am 22 Dezember 2020, 13:02:57
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 :-(
Titel: Antw:co2mini co2mini wrong data format received or checksum error
Beitrag 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
Titel: Antw:co2mini co2mini wrong data format received or checksum error
Beitrag von: arthur_dent_2015 am 22 Dezember 2020, 13:20:09
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.
Titel: Antw:co2mini co2mini wrong data format received or checksum error
Beitrag 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
Titel: Antw:co2mini co2mini wrong data format received or checksum error
Beitrag von: arthur_dent_2015 am 22 Dezember 2020, 16:45:30
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!
Titel: Antw:co2mini co2mini wrong data format received or checksum error
Beitrag von: henryk am 22 Dezember 2020, 17:15:47
Nein, ich hab wie gesagt gerade keine Umgebung wo ich das testen kann. Aber die Änderung ist wie gesagt minimal, das schaffst du :)
Titel: Antw:co2mini co2mini wrong data format received or checksum error
Beitrag von: arthur_dent_2015 am 22 Dezember 2020, 17:53:16
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 :(
Titel: Antw:co2mini co2mini wrong data format received or checksum error
Beitrag von: fireball am 26 Dezember 2020, 16:55:12
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é
Titel: Antw:co2mini co2mini wrong data format received or checksum error
Beitrag von: fireball am 02 Februar 2021, 20:29:33
Hi, ich habe mein Problem gelöst
https://forum.fhem.de/index.php/topic,41750.msg1128506.html#msg1128506

VG
René
Titel: Antw:co2mini co2mini wrong data format received or checksum error
Beitrag von: nc77 am 14 Februar 2021, 14:48:05
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"
Titel: Antw:co2mini co2mini wrong data format received or checksum error
Beitrag von: bejxonojo am 11 September 2021, 21:13:40
Hallo Zusammen,

nachdem der co2mini von TFA bei Amazon für 50€ angeboten wurde habe ich auch mal zugeschlagen.
Ich betreibe den co2mini an meinem rasberry pi in dem fhem in einem docker container läuft.

Reibungslos war die Inbetriebnahme in fhem allerdings nicht.
Leider läuft das Modul 38_co2mini.pm mit der fhem version 24651 (und der neuen Hardware) nicht ohne Modifikationen.

Nach einigem suchen bin ich auf diesen Post gestoßen, danke schon mal an nc77 :)

Zum einen benötigt man bei der aktuell im Handel verkauften Hardware keine dekodierung mehr wie nc77 bereits geschrieben hat.
Doch das alleine hat bei mir noch nicht gereicht um die Daten in fhem importiert zu bekommen, deshalb gebe ich hier noch meinen Senf dazu ;).

Den Modus mit zusätzlichem Server/Prozess wollte ich nicht verwenden, da der Sensor direkt an meinem fhem raspi dranhängt.
Dieser hat aber interessanterweise nach den von nc77 empfohlenen Änderungen bereits funktioniert. Naja zumindest wurde der Sensor erkannt und es kamen Messergebnisse rein, allerdings nur sporadisch und das Log wurde von Verbindungs Meldungen vollgespamt.

Nach einer debugging Session habe ich herausgefunden das in der co2mini_Ready() Funktion eine Bedingung vorliegt welche nicht erfüllt werden kann, und damit das initalisieren der Verbindung zum Sensor verhindert.

folgender Codezeilen müssen für den erfolgreichen Verbindungsaufbau abgeändert werden:
} elsif($hash->{helper}{mode} eq "dev") {
in:
} elsif(!defined($hash->{helper}{mode})) {

Außerdem kann man in der co2mini_UpdateData() Funktion noch folgende Ergänzungen vornehmen
von:
if($item == 0x50) {
    readingsBulkUpdate($hash, "co2", $value);
  } elsif($item == 0x42) {
    readingsBulkUpdate($hash, "temperature", $value/16.0 - 273.15);

zu:
if($item == 0x50) {
    readingsBeginUpdate($hash);
    readingsBulkUpdate($hash, "co2", $value);
    readingsEndUpdate($hash, 1);
  } elsif($item == 0x42) {
    readingsBeginUpdate($hash);
    readingsBulkUpdate($hash, "temperature", $value/16.0 - 273.15);
    readingsEndUpdate($hash, 1);

um das Log nicht mit stack traces/Fehlermeldungen zu füllen.

Nach diesen Anpassungen hat das Modul bei mir brav gemacht wofür es geschrieben wurde und hat die Messwerte in fhem angezeigt.

lg Steffen