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

bejxonojo

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