Funksensor mit Bosch sensortec BME680 / Luftgüte

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

Vorheriges Thema - Nächstes Thema

juergs

#210
Zitat von: PeMue am 01 Januar 2018, 21:56:43
Habe oben den Link zum aktuellen Schaltplan eingefügt.

Gruß PeMue

Danke, sehr  hilfreich. (BME ist auch Watterot wg. SD0...)
Sind da (noch) Platinen verfügbar?  ;D

Das nächste Objekt mit limitierten Resourcen an der Stiftleiste, aber mit Taster für Menü-Option + 18650 (inkl. Laderegler + Schutz):
(...kommt auch noch ein 3D-Gehäuse dazu ...)

hdgucken

#211
Hallo Jürgen,

Zitat von: juergs
Hier meine Code-Änderungen für das D1-mini Board.
Sowie ein vorläufiger Draft-Schaltpan dazu.
Die SSD1306ASCII-Lib und eine Bin-Datei ist mit beigefügt.
hab mir gerade Dein geändertes Projekt angesehen, gefällt mir auch sehr gut ;)
Zitat
Funktionierende VCC-Messung  für ESP mit Workaround eingebaut. (Siehe Kommentare in Code)
Hatte ich auch schon getestet, war aber ca. 0.4V daneben, vermutlich wegen dem externen Spannungsteiler auf den NodeMCU und D1 mini Board's ?!
Da ich aber einen zusätzlichen externen Spannungsteiler dran hab, bin ich wieder auf die normale Analogmessung zurück gegangen. Aber mit dem Korrekturfaktor
spart man sich natürlich die externen Bauelemente, muß ich nochmal testen  ;D
Zitat
Evtl. spendiere ich noch ein 100µF Elko auf die 3V3-Leitung oder einen separaten 3V3-LDO-Regler auf 5V.
Einen kleinen Elko und 100nF Abblock-C hab ich auch mit dran, trotzdem sieht man den Messrythmus des BME680 ganz leicht am Display,
die Helligkeit bricht alle 3 Sek. kurz etwas ein. Ein externer 5V nach 3.3V LDR wäre bestimmt die bessere Wahl  ;D
Zitat
Spezieller Dank an hdgucken.
Sehr gerne, Danke auch Dir und HCS, man lernt immer wieder dazu  :)

Was machen eigentlich Deine Perl Warnungen ? Sind die jetzt weg ?
Ich hänge Dir nochmal meine aktuellen Dateien mit ran:

Gruß Thomas


hdgucken

#212
Hallo Jürgen,

Zitat von: juergs
EDIT: nach FHEM Update:

    2018.01.01 20:11:07 3: LGW: Unknown code OK CC 6 6 8 42 9 135 0 98 0 0 0 17 0 96 , help me!
    2018.01.01 20:14:24 3: LGW: Unknown code OK CC 6 6 8 42 9 135 0 37 0 0 0 6 116 52 , help me!
    2018.01.01 20:20:24 3: LGW: Unknown code OK CC 6 6 9 42 9 135 0 41 0 0 0 16 137 96 , help me!
    2018.01.01 20:22:57 3: mapleCUL433: Unknown code P12#7511BA7BFF7F7F8F, help me!
    2018.01.01 20:27:22 3: LGW: Unknown code OK CC 6 6 16 42 9 135 0 37 0 0 0 6 113 99 , help me!
    2018.01.01 20:27:22 3: LGW: Unknown code OK CC 6 6 16 42 9 135 0 37 0 0 0 6 113 99 , help me!
    2018.01.01 20:29:53 3: LGW: Unknown code OK CC 6 6 16 42 9 135 0 37 0 0 0 6 68 100 , help me!
    2018.01.01 20:31:28 3: LGW: Unknown code OK CC 6 6 16 42 9 135 0 37 0 0 0 6 102 128 , help me!
    2018.01.01 20:31:28 3: LGW: Unknown code OK CC 6 6 16 42 9 135 0 37 0 0 0 6 102 128 , help me!
Da fehlen die zwei Änderungen in der 36_LaCrosseGateway.pm:
Zeile 10 am Ende > :CostumSensor" < einfügen und
Zeile 19 > "7:CustomSensor"     => "^OK\\sCC\\s", < einfügen. Dann geht's wieder  ;)

Gruß Thomas

PeMue

Hallo Thomas,

Zitat von: hdgucken am 31 Dezember 2017, 01:03:01
Habe gerade nachgeschaut, ich arbeite mit Arduino 1.8.5,
das esp Paket "esp8266 by ESP8266 Community" ist Version 2.3.0.
ich setze gerade meine Arduino IDE neu auf, ich bekomme die v2.4.0 angeboten. Spricht was gegen diese Version?

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

juergs

#214
Hallo Thomas,

ich habe mit Deiner Backup-Version immer noch den mehrfachen Fehler:
Zitat2018.01.02 20:00:59 1: readingsUpdate(,gas,45640) missed to call readingsBeginUpdate first.
2018.01.02 20:00:59 1: stacktrace:
2018.01.02 20:00:59 1:     main::readingsBulkUpdate            called by ./FHEM/36_CustomSensor.pm (251)
2018.01.02 20:00:59 1:     main::CustomSensor_Parse            called by fhem.pl (3703)
2018.01.02 20:00:59 1:     main::Dispatch                      called by ./FHEM/36_LaCrosseGateway.pm (707)
2018.01.02 20:00:59 1:     main::LaCrosseGateway_Parse         called by ./FHEM/36_LaCrosseGateway.pm (469)
2018.01.02 20:00:59 1:     main::LaCrosseGateway_Read          called by fhem.pl (3488)
2018.01.02 20:00:59 1:     main::CallFn                        called by fhem.pl (687)
2018.01.02 20:00:59 1: ERROR: >06< returned by the CustomSensor ParseFn is invalid, notify the module maintainer

Habe probiert das:
$hash->{AttrList}      = "$readingFnAttributes";

mal so zu ersetzen:
$hash->{AttrList} = . $readingFnAttributes;
oder so:
$hash->{AttrList} = "IODev ".$readingFnAttributes;

Aus Code-Beispiel Zeile 65 und Beispiel2.pm  Zeile 147

@PeMue
ich habe diese Version im Einsatz:
https://github.com/esp8266/Arduino/releases/download/2.4.0-rc1/package_esp8266com_index.json,

Vermutlich bereitet mir diese etwas ältere RC-Version Probleme muss aber nicht bei der stable-Edition (1.8.3) sein.
Ein Ersetzen durch die stable Community-Edition resultierte bei mir in einer Neuinstallation der Arduino-IDE, weil dananch nichts mehr ging ...
Da passte dann die Infrastruktur nicht mehr (Windows 10) weil ich unter %APPDATA% installiert hatte und nicht im Hardware-Ordener der IDE.
Das bewahrt einem bei einer neuen Version der Arduino-Ide vor einer Neuinstallation des ESP-Packages....
Evtl. resultieren meine WDT-Fehler auch daraus. Probiere das auf einer VM mal neu aus ...

Grüße,
Jürgen

36_CustomSensor (2).pm
ist Deine Backup-Version unten im Diff.

PeMue

Hallo Jürgen,

Zitat von: juergs am 02 Januar 2018, 20:09:23
@PeMue
ich habe diese Version im Einsatz:
https://github.com/esp8266/Arduino/releases/download/2.4.0-rc1/package_esp8266com_index.json,

Vermutlich bereitet mir diese etwas ältere RC-Version Probleme muss aber nicht bei der stable-Edition (1.8.3) sein.
Ein Ersetzen durch die stable Community-Edition resultierte bei mir in einer Neuinstallation der Arduino-IDE, weil dananch nichts mehr ging ...
Da passte dann die Infrastruktur nicht mehr (Windows 10) weil ich unter %APPDATA% installiert hatte und nicht im Hardware-Ordener der IDE.
ich nehme immer die ZIP Datei der IDE, extrahiere sie und erzeuge  da, wo ich sie extrahiert habe, ein Verzeichnis portable. Damit ist die komplette IDE portabel und ich muss nicht schauen, wo ich was installieren muss ...

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

juergs

Zitat... releases/download/2.4.0-rc1
Den Ordner gibt es nicht mehr....  :-\

Also ebenfalls neu installieren ...  ???
Hatte damals wohl eine andere Lösung erwischt ...

hdgucken

Hallo Jürgen,

Zitat von: juergs
ich habe mit Deiner Backup-Version immer noch den mehrfachen Fehler:
Habe probiert das:
$hash->{AttrList}      = "$readingFnAttributes";
mal so zu ersetzen:
$hash->{AttrList} = . $readingFnAttributes;
oder so:
$hash->{AttrList} = "IODev ".$readingFnAttributes;

so müsste es richtigerweise sein, hab ich auch gleich mal geändert:  ;)
$hash->{AttrList} = $readingFnAttributes;

@Peter:

Zitat von: PeMue
Hallo Thomas,
ich setze gerade meine Arduino IDE neu auf, ich bekomme die v2.4.0 angeboten. Spricht was gegen diese Version?

Nicht das ich wüßte, sollte funktionieren  :)

Gruß Thomas

PeMue

Hallo Jürgen,

Zitat von: juergs am 01 Januar 2018, 22:06:55
Sind da (noch) Platinen verfügbar?  ;D
aber klar doch, und auch (in homöopatischen Mengen) die zugehörigen Sensoren ...

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

juergs

#219
Hallo,
bin immer noch am Rätseln wo das Problem liegen könnte:
ERROR: empty name in readingsBeginUpdate
2018.01.03 18:20:50 1: stacktrace:
2018.01.03 18:20:50 1:     main::readingsBeginUpdate           called by ./FHEM/36_CustomSensor.pm (212)
2018.01.03 18:20:50 1:     main::CustomSensor_Parse            called by fhem.pl (3703)
2018.01.03 18:20:50 1:     main::Dispatch                      called by ./FHEM/36_LaCrosseGateway.pm (707)
2018.01.03 18:20:50 1:     main::LaCrosseGateway_Parse         called by ./FHEM/36_LaCrosseGateway.pm (469)
2018.01.03 18:20:50 1:     main::LaCrosseGateway_Read          called by fhem.pl (3488)
2018.01.03 18:20:50 1:     main::CallFn                        called by fhem.pl (687)
2018.01.03 18:20:50 1: readingsUpdate(,temperature,20.5) missed to call readingsBeginUpdate first.


ZitatERROR: empty name in readingsBeginUpdate

2018.01.03 18:53:50 1: PERL WARNING: Use of uninitialized value $d in hash element at fhem.pl line 4152.
2018.01.03 18:53:50 1: ERROR: >06< returned by the CustomSensor ParseFn is invalid, notify the module maintainer
2018.01.03 18:53:50 5: LGW: dispatch OK 9 8 1 4 66 106
2018.01.03 18:53:50 4: LaCrosse: Unknown device 08, please define it
2018.01.03 18:53:53 5: LGW: dispatch OK 22 124 12 0 66 225 242 0 9 247 81 0 0 15 37 0 5 62 213 0 0
2018.01.03 18:53:54 5: LGW: dispatch OK 9 8 1 4 66 106
2018.01.03 18:53:54 4: LaCrosse: Unknown device 08, please define it
2018.01.03 18:53:58 5: LGW: dispatch OK 22 124 12 0 66 225 247 0 9 247 86 0 0 15 37 0 5 62 213 0 0


Zitat2018.01.03 19:10:51 5: LGW: dispatch OK CC 6 6 17 38 9 146 0 37 0 0 0 9 85 118
2018.01.03 19:10:51 3: LGW: CustomSensor-Frame: OK CC 6 6 17 38 9 146 0 37 0 0 0 9 85 118
2018.01.03 19:10:51 1: ERROR: empty name in readingsBeginUpdate
2018.01.03 19:10:51 1: stacktrace:
2018.01.03 19:10:51 1:     main::readingsBeginUpdate           called by ./FHEM/36_CustomSensor.pm (220)
2018.01.03 19:10:51 1:     main::CustomSensor_Parse            called by fhem.pl (3703)
2018.01.03 19:10:51 1:     main::Dispatch                      called by ./FHEM/36_LaCrosseGateway.pm (707)
2018.01.03 19:10:51 1:     main::LaCrosseGateway_Parse         called by ./FHEM/36_LaCrosseGateway.pm (469)
2018.01.03 19:10:51 1:     main::LaCrosseGateway_Read          called by fhem.pl (3488)
2018.01.03 19:10:51 1:     main::CallFn                        called by fhem.pl (687)

hdgucken

Hallo Jürgen,

Zitat von: juergs
ERROR: empty name in readingsBeginUpdate
2018.01.03 18:20:50 1: stacktrace:
2018.01.03 18:20:50 1:     main::readingsBeginUpdate           called by ./FHEM/36_CustomSensor.pm (212)
2018.01.03 18:20:50 1:     main::CustomSensor_Parse            called by fhem.pl (3703)
2018.01.03 18:20:50 1:     main::Dispatch                      called by ./FHEM/36_LaCrosseGateway.pm (707)
2018.01.03 18:20:50 1:     main::LaCrosseGateway_Parse         called by ./FHEM/36_LaCrosseGateway.pm (469)
2018.01.03 18:20:50 1:     main::LaCrosseGateway_Read          called by fhem.pl (3488)
2018.01.03 18:20:50 1:     main::CallFn                        called by fhem.pl (687)
2018.01.03 18:20:50 1: readingsUpdate(,temperature,20.5) missed to call readingsBeginUpdate first.


2018.01.03 18:53:50 1: PERL WARNING: Use of uninitialized value $d in hash element at fhem.pl line 4152.
2018.01.03 18:53:50 1: ERROR: >06< returned by the CustomSensor ParseFn is invalid, notify the module maintainer
2018.01.03 18:53:50 5: LGW: dispatch OK 9 8 1 4 66 106
2018.01.03 18:53:50 4: LaCrosse: Unknown device 08, please define it
2018.01.03 18:53:53 5: LGW: dispatch OK 22 124 12 0 66 225 242 0 9 247 81 0 0 15 37 0 5 62 213 0 0
2018.01.03 18:53:54 5: LGW: dispatch OK 9 8 1 4 66 106
2018.01.03 18:53:54 4: LaCrosse: Unknown device 08, please define it
2018.01.03 18:53:58 5: LGW: dispatch OK 22 124 12 0 66 225 247 0 9 247 86 0 0 15 37 0 5 62 213 0 0


Bin ebenfalls am rätseln, welche LGW Firmware verwendest Du, V1.30 ?
Sieht so aus, als wenn Deine "36_CostumSensor.pm" irgendwie verändert wurde.
Irgendwo bei den Zeilen 217-219. Da wird das temperature Reading gesetzt.
Fehlt evtl. Zeile 212 oder ist anders als:
readingsBeginUpdate($rhash);

Gruß Thomas

 

juergs

#221
Hallo Thomas,

LGW-Version:
ZitatLaCrosseITPlusReader.Gateway.1.30

Mittlerweile bin ich hier angekommen:
Zitat2018.01.03 20:56:40 5: LGW: dispatch OK CC 6 6 7 37 9 147 0 37 0 0 0 21 86 112
2018.01.03 20:56:40 3: LGW: CustomSensor-Frame: OK CC 6 6 7 37 9 147 0 37 0 0 0 21 86 112
2018.01.03 20:56:40 3: LGW: ID: 06 | T: 20.7 | H: 37 | P: 993 | L: 0 | V: 0 | G: 155670 | I: 25
2018.01.03 20:56:40 3: LGW: Unknown device 06,please define it!
2018.01.03 20:56:40 3: LGW: Unknown code OK CC 6 6 7 37 9 147 0 37 0 0 0 21 86 112 , help me!


Habe https://forum.fhem.de/index.php/topic,39920.0.html  mit dem CustomSensor-Sample von HCS gefunden.
Ich hab mal im Perl-Code herumgepfriemelt und rumprobiert und geändert, bin aber jetzt mit meinem Perl-Latein am Ende,
da ich die FHEM-Archtektur nicht kenne und meine Freundschaft zu Perl ... naja! 

Das hier scheint das Grundproblem zu sein:
ERROR: empty name in readingsBeginUpdate
$rhash->{NAME} fehlt?
Dann ist mir aufgefallen: habe ja VCC geändert ...  aber die 0 kommt ja durch ...

ZitatLGW: Unknown device 06,please define it!
Kein autocreate ?

hdgucken

Dein vdd im Sketch muss bei bytes[12] als Wert in etwa 33 enthalten (für 3.3V) da stimmt die Berechnung bei Dir nicht:
/*** BATTERY VOLTAGE ***/
        bytes[12] = (vdd + 5) / 10;                  //was vcc = 330mV at 3,3V

Dein vdd Wert ist float und ich meine ca. 3.04, müsste also so sein:

(vdd + 0.05) * 10



juergs

#223
bytes[12] = (vdd + 5) / 10;
Ok,ja stimmt!
bytes[12] = ((uint8_t) vdd + 5 ) * 10;
Sollte aber das Protokoll nicht stören da in bytes[12] ein x-beliebiges Byte stehen würde (im Log = 0 )
und nicht die Ursache des problems mit "readingsBeginUpdate" ....

Schaust Du mal meinen geänderten CustomSensor-Code an?

Beispiel:
ZitatreadingsBeginUpdate($hash);
    readingsBulkUpdate($hash,'state','Initialized');
    readingsEndUpdate($hash,1);

Sollte so OK sein (aus anderen Beispielcodes)...

Grüße,
Jürgen

hdgucken

#224
Hallo Jürgen,

Zitat von: juergs
bytes[12] = (vdd + 5) / 10;
Ok,ja stimmt!
bytes[12] = ((uint8_t) vdd + 5 ) * 10;
Sollte aber das Protokoll nicht stören da in bytes[12] ein x-beliebiges Byte stehen würde (im Log = 0 )
und nicht die Ursache des problems mit "readingsBeginUpdate" ....
Ist nicht das Problem und stört auch nicht das Protokoll, stimmt, ist mir nur beim drüberschauen aufgefallen  ;)

Das Problem ist, das "ReadingsBeginUpdate..." muß weiter nach oben,
vor den ersten Aufruf von "ReadingsBulkUpdate...", so etwa:
Log3 $name, 3, "$name in ID ==6 vor readingsBeginUpdate";

readingsBeginUpdate($rhash);

# write temperature, humidity, ...
     
Das sollte es gewesen sein, deckt sich auch mit den Fehlermeldungen  :)

Gruß Thomas