Funksensor mit Bosch sensortec BME680 / Luftgüte

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

Vorheriges Thema - Nächstes Thema

PeMue

Hallo Jürgen,

so wie es aussieht funktioniert der BH1750 dann auch. Klasse!

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

#391
Zitat von: PeMue am 09 Dezember 2018, 18:36:20
Hallo Jürgen,

so wie es aussieht funktioniert der BH1750 dann auch. Klasse!

Gruß Peter

... und reagiert auch auf Licht  8):
(COM6) [9318468.00] P: 997.7| T: 36.86| rH: 18.86| IAQ: 176.24 (1)| Gas: 119326.00| Light: 4.53lx
(COM6) [9321468.00] P: 997.7| T: 36.86| rH: 18.86| IAQ: 176.13 (1)| Gas: 119412.00| Light: 4.53lx
(COM6) [9324468.00] P: 997.8| T: 36.85| rH: 18.86| IAQ: 182.48 (1)| Gas: 118898.00| Light: 4.53lx
(COM6) [9327468.00] P: 997.7| T: 36.88| rH: 18.83| IAQ: 172.83 (1)| Gas: 119758.00| Light: 4.30lx
(COM6) [9330468.00] P: 997.7| T: 36.85| rH: 18.87| IAQ: 169.13 (1)| Gas: 120280.00| Light: 4.30lx
(COM6) [9333468.00] P: 997.8| T: 36.77| rH: 18.92| IAQ: 186.66 (1)| Gas: 119069.00| Light: 17.92lx
(COM6) [9336468.00] P: 997.7| T: 36.83| rH: 18.89| IAQ: 175.83 (1)| Gas: 119585.00| Light: 18.33lx
(COM6) [9339468.00] P: 997.7| T: 36.85| rH: 18.89| IAQ: 176.95 (1)| Gas: 119240.00| Light: 19.17lx
(COM6) [9342468.00] P: 997.7| T: 36.88| rH: 18.85| IAQ: 178.00 (1)| Gas: 119069.00| Light: 19.58lx

PeMue

Zitat von: juergs am 09 Dezember 2018, 19:29:31
... und reagiert auch auf Licht  8):
Jupp, zwischen Straßenlampe und Wohnzimmer, Du solltest mal Deine Beleuchtung überprüfen  8) 8) 8).

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

#393
 ;D ;D
lol, war noch am Reagieren ...

Apropos Licht....

... sehr gute (Positionier-) Arbeit!    :D

juergs

#394
Mittlerweile hat sich einiges in der CO2-Szene getan:

Robin hat hier seine Variante mit MQTT-Anbindung präsentiert:
https://blog.moneybag.de/fhem-air-qualitysensor-bme-680-temperatur-luftfeuchte-luftdruck-ueber-mqtt-getestet/

Neue Hardware mit günstigeren Preisen:
Typ1 mit STM32

Typ2 nur Sensor

Typ1 verwendet diesen Controller:
https://www.st.com/en/microcontrollers/stm32f051k8.html

Nighthawk

Hallo Zusammen,

ich versuche hier den Sketch bei mir zum Laufen zu überreden, leider ziemlich erfolglos.
Die fertigkompilierte bin kann ich aufspielen und der Sensor läuft auch, nur bekomme ich ihn nicht in FHEM eingebunden.
Es sind wohl auch die Daten am LacrosseGateway angekommen, nur konnte FHEM nichts damit anfangen:

2018.12.22 18:02:21 3: myLaCrosseGateway: Unknown code OK CC 6 6 25 43 16 4 0 52 0 0 0 21 35 112 , help me!
2018.12.22 18:03:21 3: myLaCrosseGateway: Unknown code OK CC 6 6 25 43 16 4 0 72 0 0 0 21 6 144 , help me!
2018.12.22 18:04:21 3: myLaCrosseGateway: Unknown code OK CC 6 6 25 43 16 4 0 41 0 0 0 21 40 96 , help me!
2018.12.22 18:05:21 3: myLaCrosseGateway: Unknown code OK CC 6 6 25 43 16 4 0 39 0 0 0 21 41 96 , help me!
2018.12.22 18:06:21 3: myLaCrosseGateway: Unknown code OK CC 6 6 25 43 16 4 0 48 0 0 0 21 37 112 , help me!
2018.12.22 18:07:21 3: myLaCrosseGateway: Unknown code OK CC 6 6 25 43 16 4 0 55 0 0 0 21 21 112 , help me!
2018.12.22 18:08:21 3: myLaCrosseGateway: Unknown code OK CC 6 6 25 43 16 4 0 48 0 0 0 21 40 96 , help me!
2018.12.22 18:09:21 3: myLaCrosseGateway: Unknown code OK CC 6 6 25 43 16 4 0 50 0 0 0 21 37 112 , help me!


Den CustomSensor habe ich auch angelegt:

Internals:
   DEF        06
   ID         06
   NAME       BME680_CS_06
   NR         1328
   STATE      Initialized
   TYPE       CustomSensor
   corrH      0
   corrT      0
Attributes:


Kompiliere ich den Sketch selbst, startet der Sensor, fragt einiges an Daten ab und meldet anschließend "BME680 init ... Error while initializing BSEC library !"

Wo habe ich den Fehler im Sketch und wie bekomme ich den Sensor im FHEM zum laufen?

BME680 wireless sensor V3.0
Compiled: Sun Dec 23 01:47:57 2018
Protocol: UniversalSensor
BSEC version: 1.4.7.1
ESP Core Version: 2_4_1
ESP SDK Version: 2.2.1(cfd48f3)

OLED init ... not found

Do you want to delete settings in EEPROM (Y/N)?
Not deleted.

Settings from EEPROM:
Node-ID           : 222 (0xDE)
Altitude          : 66.0m
Temperature offset: 0.0 degrees celsius

RFM69  init ... done
BME680 init ... Error while initializing BSEC library !

PeMue

Hallo Alex,

Zitat von: Nighthawk am 22 Dezember 2018, 18:58:45
Die fertigkompilierte bin kann ich aufspielen und der Sensor läuft auch, nur bekomme ich ihn nicht in FHEM eingebunden. Es sind wohl auch die Daten am LacrosseGateway angekommen, nur konnte FHEM nichts damit anfangen:
schau mal hier, das sollte Dein Problem lösen.

Zitat von: Nighthawk am 22 Dezember 2018, 18:58:45
Den CustomSensor habe ich auch angelegt:
Das sollte FHEM per autocreate erledigen. Bitte vorher löschen.

Zitat von: Nighthawk am 22 Dezember 2018, 18:58:45
Kompiliere ich den Sketch selbst, startet der Sensor, fragt einiges an Daten ab und meldet anschließend "BME680 init ... Error while initializing BSEC library !"
Welche BSEC library hast Du eingebunden? Wie hast Du das gemacht? Ich hab's mal Anfang des Jahres gemacht, muss mal schauen, was ich damals aufgeschrieben habe. Aus diesem Grund bevorzuge ich die fertigen Binaries.

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

Nighthawk

Hallo Peter,

danke, probiere ich gleich mal aus.

Die BSEC Library habe ich nahc dieser Anleitung eingebunden:
https://github.com/BoschSensortec/BSEC-Arduino-library

das hat mir beim Kompilieren Fehler geschmissen.

Danach habe ich es eingebunden wie hier beschrieben:

https://www.bjoerns-techblog.de/2017/11/bme680-mit-nodemcu-an-ttn/

Darauf kamen keine Fehler mehr und der Sketch wurde kompiliert und auf das Wemos D1 übertragen, nur leider funktioniert es so nicht.

Gruß
Alex

PeMue

Hallo Alex,

Zitat von: Nighthawk am 22 Dezember 2018, 19:30:39
Danach habe ich es eingebunden wie hier beschrieben:
https://www.bjoerns-techblog.de/2017/11/bme680-mit-nodemcu-an-ttn/
Darauf kamen keine Fehler mehr und der Sketch wurde kompiliert und auf das Wemos D1 übertragen, nur leider funktioniert es so nicht.
das funktioniert nur für die v1.4.5.1 von letztem Jahr. In der neueren v1.4.7.1 gibt es eine Anleitung dazu (habe ich noch nicht ausprobiert), man muss den Linker aktualisieren. hdgucken hat meine ich noch mit der v1.4.5.1 compiliert.

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

Nighthawk

Leider hat es mit dem "ignore_battery" nicht funktioniert, es wird kein Device angelegt.

Die v1.4.5.1 habe ich leider auch nicht gefunden.

juergs

#400
ZitatmyLaCrosseGateway: Unknown code OK CC 6 6 25 43 16 4 0 39 0 0 0 21 41 96 , help me!

Es gibt 2 Varianten der BME680-Sensor-Firmware. Die etwas ältere Variante "CustomSensor", die einige Code-Änderungen in FHEM bedarf und eine neuere von hdgucken die über das "UniversalSensor"-Protokoll läuft.
Die CustomSensor-Variante liefert obiges Fehlerbild, wenn keinen Code-Anpassungen in FHEM gemacht wurden.
Offensichtlich hast Du da irgendwie beide Varianten vermischt.

Ich benutze jetzt diese Version aus dem GIT-Repo von Thomas (hdgucken):UniversalSensor zusammen mit der Version: LaCrosseGateway V1.32 (noch in zwei verschiedenen fhem-Instanzen).
Damit sollte obiges Problem behoben sein.

Um ein Device davon in FHEM anzulegen habe ich die  Zeit für das Pairing auf 300 Sek erhöht um zumindest im Sendeinterval zu liegen.
Ich habe dazu auch die neueste "LaCrosseITPlusReader"-Firmware  für die LaCrosseGateway V1.32 aus fhem 5.9 verwendet.


UniversalSensor:

a.) der interne BME680 der LGW (LaCrosseGateway V1.32, liefert nicht IAQ, sondern nur GAS1):

ZitatInternals:
   DEF        76
   IODev      LGW
   LASTInputDev LGW
   LGW_MSGCNT 2417
   LGW_TIME   2018-12-22 22:57:21
   LaCrosse_lastRcv 2018-12-22 22:57:21
   MSGCNT     2417
   NAME       LaCrosse_76
   NR         99
   STATE      T: 29.2 H: 30
   TYPE       LaCrosse
   addr       76
   battery_new 0
   bufferedH  30
   bufferedT  29.2
   corr1      0
   corr2      0
   previousH  30
   previousT  29.2
   sensorType 4=LaCrosseGateway
   READINGS:
     2018-12-22 22:57:21   battery         ok
     2018-12-22 22:57:21   error           0
     2018-12-22 22:57:21   gas1            37666
     2018-12-22 22:57:21   gas2            0
     2018-12-22 22:57:21   humidity        30
     2018-12-22 22:57:21   pressure        1031
     2018-12-22 22:57:21   state           T: 29.2 H: 30
     2018-12-22 22:57:21   temperature     29.2
Attributes:
   IODev      LGW
   room       LaCrosse

Der externe (Universal-)Sensor:
ZitatInternals:
   DEF        70
   IODev      LGW
   NAME       LaCrosse_70
   NR         103
   STATE      T: 34.5 H: 19
   TYPE       LaCrosse
   addr       70
   corr1      0
   corr2      0
   READINGS:
     2018-12-10 20:59:49   battery         ok
     2018-12-10 20:59:49   error           0
     2018-12-10 20:59:49   gas1            25
     2018-12-10 20:59:49   gas2            89585
     2018-12-10 20:59:49   humidity        19
     2018-12-10 20:59:49   lux             4
     2018-12-10 20:59:49   pressure        1010.3
     2018-12-10 20:59:49   state           T: 34.5 H: 19
     2018-12-10 20:59:49   temperature     34.5
     2018-12-10 20:59:49   version         3
     2018-12-10 20:59:49   voltage         24.6
Attributes:
   IODev      LGW
   room       LaCrosse

CustomSensor (extern, deprecated, bei mir noch mit LaCrosseGateway V1.30):

ZitatInternals:
   CustomSensor_lastRcv 2018-12-22 22:54:00
   DEF        06
   ID         06
   LASTInputDev LGW
   LGW_MSGCNT 45
   LGW_TIME   2018-12-22 22:54:00
   MSGCNT     31
   NAME       bme680_cc
   NR         101
   STATE      19.1 °C, 57 %, 1010 hPa
   TYPE       CustomSensor
   corrH      0
   corrT      0
   READINGS:
     2018-12-22 22:54:00   battery         8
     2018-12-22 22:54:00   gas             809010
     2018-12-22 22:54:00   gas-kohm        809.1
     2018-12-22 22:54:00   humidity        57
     2018-12-22 22:54:00   iaq             226
     2018-12-22 22:54:00   lux             0
     2018-12-22 22:54:00   pressure        1010
     2018-12-22 22:54:00   state           T: 19.1 H: 57
     2018-12-22 22:54:00   temperature     19.1
Attributes:
   event-min-interval .*:1800
   event-on-change-reading .*
   icon       cul_wlan
   room       CO2-Messung,CustomSensor,LaCrosse
   stateFormat temperature °C, humidity %, pressure hPa
   userReadings gas-kohm { sprintf( "%.1f", ReadingsVal( $NAME,"gas",0 ) / 1000 + 0.05 ) }
   verbose    3

liefert bei mir in der LaCrosseGateway V1.32-FHEM-Instanz auch diesen Output:
Zitat2018.12.22 23:28:00 3: LGW: Unknown code OK CC 6 5 147 58 16 17 2 67 0 0 80 117 128 32 , help me!

Benutze auber auch noch nicht für meine Sketche die neuste BSEC-Variante, bin aber mit den Ergebnissen sehr zufrieden,
nachts steigen die CO2-Werte relativ hoch an und gehen tagsüber nach Lüften wieder auf bessere Werte zurück.


BME680 wireless sensor V3.0
Compiled: Fri Dec 07 17:57:22 2018
Protocol: UniversalSensor
BSEC version: 1.4.5.1
ESP Core Version: 2_4_0_RC1
ESP SDK Version: 2.0.0(656edbf)

Do you want to delete settings in EEPROM (Y/N)?
Not deleted.

Settings from EEPROM:
Node-ID           : 201 (0xC9)
Altitude          : 180.0m
Temperature offset: 0.0 degrees celsius


Grüße,
Jürgen

juergs

#401
Änderungen in hdguckens für den nanoLGW-code mit bme680:
... IDE hat bei mir trotz "false" gemosert:

#define HAS_RFM69             true   //is auto detected, if not found, sensor works without RFM69, data only on serial port
#define HAS_OLED              false   //is auto detected, if not found, sensor works without OLED (SH1106 or SSD1306)
#define HAS_LIGHTSENSOR       false   //is auto detected, if not found, sensor works without BH1750
#define VCC_MEASURE           false   //if not needed, you can disable it here
#define SOFT_SPI             false   //if you need SOFT-SPI, set true
#define DEBUG               false   //activate debug mode


void dim_display (byte brightness)
{
  #if HAS_OLED
   display.ssd1306_command(SSD1306_SETCONTRAST);
   display.ssd1306_command(brightness);
  #endif
}



juergs

#402
Einbindung hier: https://forum.fhem.de/index.php/topic,78619.msg706765.html#msg706765

Zitatwhere the board support package for our board is installed. On Windows, this could be for example in <USER -
_HOME>\AppData\Local\Arduino15\packages\esp8266\hardware or in <ARDUINO_ROOT>\hardware. Once we
found the location, we need to perform the following steps. Please keep in mind that the target paths might differ
slightly depending on the ESP8266 package version you are using.
1. We need to copy the file binaries\staticlib\ESP8266\libalgobsec.a from the BSEC package into the
hardware\esp8266\2.3.0\tools\sdk\lib folder.
2. The linker file found at hardware\esp8266\2.3.0\tools\sdk\ld\eagle.app.v6.common.ld needs to be modifed
by inserting the line
*.cpp.o(.literal*, .text*)
    *libc.a:(.literal .text .literal.* .text.*)
    *libm.a:(.literal .text .literal.* .text.*)
    *libalgobsec.a:(.literal .text .literal.* .text.*)
    *libgcc.a:_umoddi3.o(.literal .text)
    *libgcc.a:_udivdi3.o(.literal .text)


libalgobsec.a:(.literal .text .literal. .text.) after the line libm.a -

3. Finally, we need to change the linker argument, telling the linker to include BSEC. This is achieved by adding the
argument -lalgobsec to the line compiler.c.elf.libs=-lm -lgcc ... found in
hardware\esp8266\2.3. -0\platform.txt.

Beim Compilieren muss dann der Linker das Flag: -lalgobsec anzeigen:
Linking everything together...
"C:\Users\juergs\AppData\Local\Arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2/bin/xtensa-lx106-elf-gcc"
-g  -Os -nostdlib -Wl,--no-check-sections -u call_user_start -u _printf_float -u _scanf_float -Wl,
-static "-LC:\Users\juergs\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc1/tools/sdk/lib"
"-LC:\Users\juergs\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc1/tools/sdk/ld"
"-LC:\Users\juergs\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc1/tools/sdk/libc/xtensa-lx106-elf/lib"
"-Teagle.flash.4m.ld" -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,spi_flash_read 
-o "C:\Users\juergs\AppData\Local\Temp\arduino_build_548430/BME680_UniversalSensor.ino.elf" -Wl,
--start-group "C:\Users\juergs\AppData\Local\Temp\arduino_build_548430\sketch\bme680.c.o"
"C:\Users\juergs\AppData\Local\Temp\arduino_build_548430\sketch\bsec_integration.c.o"
"C:\Users\juergs\AppData\Local\Temp\arduino_build_548430\sketch\BME680_UniversalSensor.ino.cpp.o"
"C:\Users\juergs\AppData\Local\Temp\arduino_build_548430\sketch\HandleEeprom.cpp.o"
"C:\Users\juergs\AppData\Local\Temp\arduino_build_548430\sketch\RFMxx.cpp.o"
"C:\Users\juergs\AppData\Local\Temp\arduino_build_548430\sketch\SensorBase.cpp.o"
"C:\Users\juergs\AppData\Local\Temp\arduino_build_548430\sketch\UniversalSensor.cpp.o"
"C:\Users\juergs\AppData\Local\Temp\arduino_build_548430\libraries\Wire\Wire.cpp.o"
"C:\Users\juergs\AppData\Local\Temp\arduino_build_548430\libraries\EEPROM\EEPROM.cpp.o"
"C:\Users\juergs\AppData\Local\Temp\arduino_build_548430\libraries\SPI\SPI.cpp.o"
"C:\Users\juergs\AppData\Local\Temp\arduino_build_548430/arduino.ar"
-lhal -lphy -lpp -lnet80211 -llwip_gcc -lwpa -lcrypto -lmain -lwps -laxtls -lespnow -lsmartconfig -lmesh -lwpa2 -lstdc++ -lm -lc -lgcc
-lalgobsec
-Wl,--end-group  "-LC:\Users\juergs\AppData\Local\Temp\arduino_build_548430"

juergs

#403
Erfahrungen zur nanoLGW-Platine V1.5 mit BME680+BH1750:
https://forum.fhem.de/index.php/topic,51329.msg876501.html#msg876501

juergs

#404
Aus meinen Tests mit pemue's nanoLGW-Platine hier die etwas geänderte UniversalSensor- Code (Dank @hdgucken!):

BME680_LaCrosse_UniversalSensor

Mit BME680 + Lichtsensor bh1750, ohne OLED.

Die LED an GPIO16 wird nicht angesteuert, sondern die des ESP-Moduls. Der WiFi-Teil des ESPs ist abgeschalten.

[5698320.00] P: 1044.5| T: 25.83| rH: 28.66| IAQ: 43.88 (1)| Gas: 106717.00| Light: 286.25lx

Offiziell:
1020,5 hPa (1037 bezogen auf NN)

Im Gegensatz zu den Readings des CustomSensors (plausibler):
battery   8
2018-12-25 18:37:37 gas 0
2018-12-25 18:37:37 gas-kohm 0.1
2018-12-25 18:37:37 humidity   47
2018-12-25 18:36:37 iaq  102
2018-12-25 18:37:37 lux  0
2018-12-25 18:37:37 pressure 1023
2018-12-25 18:36:37 state T: 19.9 H: 47
2018-12-25 18:37:37 temperature 19.9


/edit: Der Sensor braucht einige Tage (Bosch:4) Dauerbetrieb!

Parametrierung: SensorID, Temperatur-Offset und Meereshöhe mittels Arduino integriertem Serial Monitor (Shift+CTRL M).

Der unten angefügte Code bezieht sich auf die nanoLGW-Platine V1.5 von hier,
lässt sich aber auch 1:1 auf einen Wemos D1 mini oder mit einem ESP8266-F-Modul betreiben ...
Schaltplan nanoLGW V1.5

ZitatBSEC 1.4.7.1 (v1.4.7.1 | Sept. 18th, 2018)
• New outputs added (see bsec_datatypes.h)
• Simulate data sets from multiple sensors using 1 BSEC instance, e.g. on a cloud server (see chapter 2.8 in the SW integration guide)
• Added Arduino library to log BME680 data without the need of BSEC (bme680_data)
• Enable an ODR of 1/3 s for Temperature, Pressure, Humidity while IAQ is in ULP (example: basic_config_state_ULP_LP)
BSEC 1.4.6.0
• New ULP+ feature for additional measurements on demand,
• Improved behavior on dynamic changes in LP mode,
• BSEC lite version with reduced memory requirements included,
• size of state string defined, size of config string reduced,
• Option to (temporarily) disable baseline tracker for special applications,
• Documentation & code improvements.
BSEC 1.4.5.1
• Improved humidity compensation,
• Improved accuracy status,
• Additional config strings included,
• Fixed accuracy / IAQ value after initialization,
• Code optimization.

Musste also für die letzte Version nur die libalgobsec.a ersetzen.  :D