Funksensor mit Bosch sensortec BME680 / Luftgüte

Begonnen von juergs, 28 Oktober 2017, 18:05:43

Vorheriges Thema - Nächstes Thema

juergs

#225
Hallo Thomas,

habe ich so in der "Transaktions"-Klammer:
readingsBeginUpdate($rhash);
     readingsBulkUpdate($rhash, "state", $state) if( Value($rname) ne $state );
     readingsBulkUpdate($rhash, "temperature", $temperature);       
     readingsBulkUpdate($rhash, "humidity"   , $humidity);     
     readingsBulkUpdate($rhash, "pressure"   , $pressure );   
     readingsBulkUpdate($rhash, "iaq"        , $iaq );         
     readingsBulkUpdate($rhash, "lux"        , $lux );         
     readingsBulkUpdate($rhash, "battery"    , $vcc );         
     readingsBulkUpdate($rhash, "gas"        , $gas );         
    readingsEndUpdate($rhash,1);


Im Moment sorgt dieser Teil dafür, dass der Fehler nicht auftritt:
if ( !$modules{CustomSensor}{defptr}{$raddr} )
  {
Log3 $name, 3, "$name: Unknown device $rname,please define it!";
my $iohash = $rhash->{IODEV};
        return undef;
  }


Der Code-Teil ist in HCS's Beispiel mit drin und sorgt dafür dass der weitere Teil des Codes nicht aufgerufen wird.
Da kenne ich mich leider zu wenig aus ...  :-\ und muß mich in Perl + Hashes etwas aufschlauen...

War der Hoffnung, es funktioniert einfach...  ;)

Wo ist der Unterschied zu Deiner (laufenden) Implementierung?
Hast Du weniger LaCrosse-Sender in der Umgebung als ich?


hdgucken

Sorry, nach der Nachtschicht ist man einfach nicht mehr ganz so fit  ::)
Hab die ganzen "#" völlig übersehen, autsch 8)
Muss nochmal in Ruhe schauen ...


hdgucken

#227
Ich glaub, ich habs:
In Zeile 199 am Ende muss "$id" statt "$raddr" stehen, so:
my $rhash = $modules{CustomSensor}{defptr}{$id};

Dann sollte Zeile 202 bis 207 nicht mehr nötig sein.
Hab noch mal mit meiner Datei verglichen.

juergs

#228
ZitatNachtschicht
... verständlich  :)

Das Thema hat auch sein Gutes: so muß ich mich auch noch in das CustomSensor-Modul einarbeiten.
Ich orientiere mich am: https://forum.fhem.de/index.php/topic,78385.msg703398.html#msg703398

Sind halt noch ein paar Punkte zu klären...


juergs

#229
Zitat von: hdgucken am 04 Januar 2018, 16:02:01
Ich glaub, ich habs:
In Zeile 199 und 200 am Ende muss "$id" statt "$raddr" stehen, so:
my $rhash = $modules{CustomSensor}{defptr}{$id};
my $rname = $rhash?$rhash->{NAME}:$raddr;

Dann sollte Zeile 202 bis 207 nicht mehr nötig sein.

Ja,  hatte ich schon, da ich $id $raddr zuweise:
Zitatmy $raddr = $id;
  my $rhash = $modules{CustomSensor}{defptr}{$raddr};
ist das gleichwertig, aber überflüssig ..  ;)

$id wird aus
$id = sprintf( "%02X", $bytes[0] );
gebildet. Dort steht "06" drin.

Dann habe ich ein CustomSensor Device 06 zu definieren:
ZitatInternals:
   DEF        0.0 0.0
   ID         0.0
   NAME       bme680_cc
   NR         112
   STATE      Initialized
   TYPE       CustomSensor
   corrH      0
   corrT      0.0
Attributes:

Edit:
Zitatbme680_cc: unknown attribute ID. Type 'attr bme680_cc ?' for a detailed list.

Dort ist die ID "0.0", die kann ich nicht manuell per Attribut verändern ...
Damit es damit passt:
my $rhash = $modules{CustomSensor}{defptr}{$raddr};

hdgucken

LaCrosse Sensoren hab ich 7 plus CC Sensor plus LGW KVP. Dann schwirren noch diverse Funkthermometer von Nachbarn mit rein  :)
Sollen noch mehr werden  :)
Zitat von: juergs
Ich orientieren mich am: https://forum.fhem.de/index.php/topic,78385.msg703398.html#msg703398
Auch interessant ...  :)

juergs

Zitat################################################
define bme680_cc CustomSensor  0.0 0.0
attr bme680_cc ID 06
################################################

@Thomas, wie sieht deine Def aus?

hdgucken

Hier mal meine Sensor Definition aus der fhem.cfg:

juergs

#233
Vielen Dank!
Zitatdefine BME680_CS_06 CustomSensor 06
da war ich (fast) auf dem richtigen Weg. Die ID fehlte ....

Das CustomSensor-Device muss manuell angelegt werden!?

juergs

#234
Hallo Leute,

... schwere Geburt:  Der Sensor muss manuell angelegt werden ..... (!)
So einfach, trivial ist das ...

Na ja, immerhin weiß ich jetzt wie ein neuer Sensor implementiert wird,
dann hat das auch was Gutes  ;) ;) ;)

hdgucken

#235
Super, das es jetzt bei Dir funktioniert !
Hatte gar nicht mehr daran gedacht, daß ich den Sensor von Hand angelegen mußte,
wäre ein entscheidener Hinweis gewesen, sorry.
Das autocreate müsste noch eingepflegt werden, bin ich noch nicht dazu gekommen :o

Gruß Thomas

P.S.:  Anbei noch ein aktuelles Bild von meiner config.
        Das Reading "dewpoint" kommt von fhem, ist universell für alle Temperatur/Feuchte Sensoren im System,
        siehe hier https://wiki.fhem.de/wiki/Dewpoint

PeMue

Zitat von: hdgucken am 04 Januar 2018, 17:59:21
Das autocreate müsste noch eingepflegt werden, bin ich noch nicht dazu gekommen :o
Ok, dann warte ich solange, bis das erledigt ist bzw. es eine Anleitung für "Dummies" gibt   ;D ;D ;D
Aber es ist spannend, bei Euch mitzulesen ...

Gruß PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

hdgucken

Hallo Peter,

Sensor anlegen geht im Moment eigentlich auch recht einfach.
Einfachdefine BME680_CS_06 CustomSensor 06
und fertig.
Wobei die 06 durch Deine eigene beliebige ID (1-255) ersetzt wird.
Dann noch ein paar Attribute nach Wahl und gut is  ;)
Oder meine Vorlage benutzen und in die fhem.cfg kopieren und abändern.
Aber ich werde mich mal noch um's autocreate kümmern, wäre schon besser  ;)

Gruß Thomas

PeMue

Hallo Thomas,

Zitat von: hdgucken am 04 Januar 2018, 18:27:04
Sensor anlegen geht im Moment eigentlich auch recht einfach.
...
ich fürchte, das ist nicht das Problem. Die Firmware auf dem WemosD1 mini (oder was auch immer) könnte das Thema sein:
Gibt es schon eine fertige .bin, die auf einem WeMos D1 mini inkl. RFM69CW und BME680, aber ohne OLED bzw. Helligkeitssensor läuft? Ich vermute, das ist die letzte (1.5B2-prel irgendwas von Jürgen)  8) 8) 8)? Oder muss ich gar selber compilieren und Code ändern  ??? ::)?
Ich schau mir gerade den nano LGW an, ob da der LM75 runter und der BH1750 draufgeht  ;)

Danke + Gruß

Peter
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

hdgucken

Hallo Peter,

hier mal meine aktuelle Version fertig kompiliert für NodeMCU nur mit RFM69,
NodeID 6, serielle Ausgabe 115200 Baud, BME680 auf 0x77.
Sollte auch mit D1 mini gehen.
Versuch doch mal ...  ;)

Gruß Thomas