FHEM Forum

Verschiedenes => Bastelecke => Thema gestartet von: juergs am 28 Oktober 2017, 18:05:43

Titel: Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 28 Oktober 2017, 18:05:43
Seit einiger Zeit beobachte ich das Geschehen um CO2/VOC-Luftgüte-Sensoren, auch um den relativ neuen BME680 Sensor von Bosch sensortec,
mit diesen Eckdaten (https://download.mikroe.com/documents/datasheets/BME680.pdf):
Zitat
    Bosch BME680 Integrated Environmental Sensor (Air Quality, Humidity, Pressure and Temperature)
    Temperature Sensor -40...85°C
    Pressure Sensor 300...1100hPa (+9000...-500m above/below sea level)
    Humidity Sensor 0...100%
        Accuracy tolerance: +/-3 % relative
        Hysteresis: <1.5% relative
    Gas Sensor for Air Quality (IAQ)
    SPI Interface (up to 10MHz)
    TWI/I2C Interface (address 0x76 when SDO=0 or 0x77 when SDO=1, CS=1 for I2C)
    3.3V - 5V Power Supply and Logic Level

Hardware: BME680-Breakout (https://github.com/watterott/BME680-Breakout) oder nur 3V3-Typ oshpark DIY  (https://oshpark.com/shared_projects/LXuNziGd)

Da es aber Softwaremässig eher bescheiden um den Sensor bestellt ist, möchte ich Euch mein Projekt
schon in der Anfangsphase vorstellen.

Die von Sensortec vorgestellte Software BME680_driver (https://github.com/BoschSensortec/BME680_driver) ist durchaus etwas
zu "kompliziert", umfangreich und zu allgemein gehalten, um gleichzeitig auch in die Tiefen von I2C und dem Sensor einzusteigen.
Deshalb hier erst mal die "einfachere" Lösung mit Breakboard und Arduino NANO um in das Thema einzusteigen.

Software:

1. Schritt: Implementierung der Grundfunktionalität für das Breakout-Board.

Hardware setup:
VCC ----------------------- NANO.5V
SDA ----------------------- NANO.A4 = PC5
SCL ----------------------- NANO.A5 = PC4
CS ------------------------ High (select i2c-Interface)
GND ----------------------- NANO.GND


Erstes-Ergebnis:

ZitatOpening port
Port open
Scanning...
Ok, I2C device found at address 0x77  !
done

BME680 I am: 61 I should be 61

Calibration coeficients:
dig_T1 =26583
dig_T2 =26571
dig_T3 =3
dig_P1 =35016
dig_P2 =-10322
dig_P3 =88
dig_P4 =5660
dig_P5 =17
dig_P6 =30
dig_P7 =19
dig_P8 =200
dig_P9 =-3762
dig_P10 =30
dig_H1 =773
dig_H2 =1011
dig_H3 =0
dig_H4 =45
dig_H5 =20
dig_H6 =120
dig_H7 =-100
dig_GH1 =-29
dig_GH2 =-13303
dig_GH3 =18
gas wait time = 0x59
resistance Heat = 20
CTRL_GAS_1 = 0x10
gas wait = 0x59
res heat = 0x20
New data in field 0!
Gas measurement Index = 0
gas range = 4
BME680:
Altimeter temperature = 21.84 C
Altimeter temperature = 71.31 F
Altimeter pressure = 1007.93 mbar
Altitude = 145.55 feet
Altimeter humidity = 49.0 %rH
Gas Sensor raw resistance = 0
Gas Sensor resistance = 806516.4 Ohm

New data in field 0!
Gas measurement Index = 0
Field 0 gas data valid

Gas measurement Index = 0
Field 0 gas data valid
gas range = 0
BME680:
temperature = 21.87 C
temperature = 71.37 F
pressure = 1007.85 mbar
Altitude = 147.74 feet
humidity = 48.9 %rH
Gas Sensor raw resistance = 0
Gas Sensor resistance = 12917166.0 Ohm


2. Schritt: Abwägen der existierenden Libraries.
Hier die Library für das Breakout-Board:
BME680_Library (https://github.com/vicatcu/BME680_Breakout/tree/master/BME680_Library). Das ist der gesuchte Wrapper um den (original)  BME680_driver (https://github.com/BoschSensortec/BME680_driver)

In "BME680_V2" (https://forum.fhem.de/index.php?action=dlattach;topic=78619.0;attach=87706) hab ich die BME680-Library zusammen gepackt und etwas "angepasst".

3.Schritt. Umschwenken auf BSEC mit dem ESP8266(nodeMCU)
macht noch Ärgen mit fiesem WDT-Fehler ... Erst mal ausgesetzt.

4. Schritt: Datenübertragung mittels Standard- 433MHz-OOK-Sender an FHEM:
Der Prototyp mit 433 MHz Lacrosse Protokoll ist fertig.
Der Sender wird an D13 angeschlossen, wenn D10 gegen GND gejumpert wird dann zeigt der Serial-Output auch ein Timestamp an.
Der CO2-Wert pegelt sich bei mir um die 120.000 ein, deshalb teile ich dur 10.000 um in den übertragbaren Wertebereich zu kommen.
Die Datenübermittling wird per Interrupt alle 30 Sekunden übertragen, da sich heraus gestellt hat, dass der Sensor häufiger abgefragt werden muss,
wohl um seine Betriebstemperatur zu stablisieren...     

Der Sensor baut zwei Devices auf:
ID 100 - Kanal 1: Temperatur
             Kanal 2: Luftfeuchte
ID 101-  Kanal 1: CO2 Widerstand als Roh-Sensor-Wert
             Kanal 2: als gemittelter Sensorwert.

Hardware:



D13 => 433MHz-OOK-Modul-DATA-Pin
D10 => Jumper gegen GND = Debugausgaben mit Text, offen = nur Zahlen für Plotanzeige

Die Werte für Temperatur, Luftfeuchte sind nicht gemittelt. Den Luftdruck habe ich erst mal zu Gunsten
der CO2-Ausgabe geopfert. In Zukunft wird sich aber der gemittelte Wert eher anbieten.
Dann werde ich den Luftdruck mit übertragen.
Das ist mal die erste Variante mit einem Nano, bis ich den WDT-Fehler beim ESP gefunden habe.
Evtl. lassen sich dann auch die Relation Richtung IAQ und ppm finden ...
Verbesserte Variante in der Version 2.1.

Schritt 5: Einbindung AMS iAQ-core Sensor, der ebenfall Resistance, CO2 [ in ppm] und tvoc - nach intern implementierten Algorithmus schon überarbeitete Daten liefert.
Um die Ausgaben des BME680 korrelieren zu können. Ebenfalls Einbindung über TX3-LaCrosse-Protokoll bis dato.
Den passenden Code "iAQ-NANO-LACROSSE-TX3" dazu habe ich hier hier bei Github (https://github.com/juergs/iAQ_NANO_328_LaCrosse) veröffentlicht.

Schritt 6: Überarbeitung des BME680-Codes und Anpassung auf den ESP8266, um die Ausreißer-Werte und das nervige WDT-Problem (https://forum.fhem.de/index.php/topic,78931.0.html) zu eliminieren ...

/edit 20181226: Implementierung als "UniversalSensor" mit RFM69CW/868Mhz und LaCrosseGateway: https://forum.fhem.de/index.php/topic,78619.msg876544.html#msg876544 (https://forum.fhem.de/index.php/topic,78619.msg876544.html#msg876544)

/edit 20190430: Einbindung BME680 in OLED-Wetterstation (https://forum.fhem.de/index.php/topic,52403.msg934892.html#msg934892) mit TFT-Display.

/edit 20190921: Implementierung mit ESPEasy (MQTT + SLINK) + WLAN. Mit entsprechender Konfigurationsmöglichkeiten und Filterung.   
https://forum.fhem.de/index.php/topic,78619.msg974829.html#msg974829 (https://forum.fhem.de/index.php/topic,78619.msg974829.html#msg974829) und
hier: https://forum.fhem.de/index.php/topic,78619.msg984732.html#msg984732 (https://forum.fhem.de/index.php/topic,78619.msg984732.html#msg984732)
ESPEasy-Code + Erläuterungen dazu: https://github.com/juergs/ESPEasy_BME680_TVOC (https://github.com/juergs/ESPEasy_BME680_TVOC)
Für UDP-SLINK-Betrieb ein define slink SLink für Device autocreate definieren.
Für MQTT2 ein mqtt2_client-Device definieren:
Internals:
   BUF       
   DEF        127.0.0.1:1883
   DeviceName 127.0.0.1:1883
   FD         4
   FUUID      5d96097a-f33f-xxxx-9d65-6809e95ca4eddf32
   NAME       mqtt2_client
   NR         144
   PARTIAL   
   STATE      opened
   TYPE       MQTT2_CLIENT
   WBCallback
   clientId   mqtt2_client
   lastMsgTime 1570286545.49909
   nextOpenDelay 5
   READINGS:
     2019-10-03 17:57:11   state           opened
Attributes:
   room       MQTT2_DEVICE


Basierend auf diesem Device den MQTT2_CLIENT mit entsprechenden Topic-RegEx definieren:
ZitatInternals:
   CID        mqtt2_client
   DEF        mqtt2_client
   DEVICETOPIC MQTT2_mqtt2_client
   FUUID      5d83c849-f33f-72b0-xxxx-d8648a4fbbcc7191
   IODev      mqtt2_client
   LASTInputDev mqtt2_client
   MSGCNT     11296
   NAME       MQTT2_mqtt2_client
   NR         131
   STATE      ???
   TYPE       MQTT2_DEVICE
   mqtt2_client_MSGCNT 11296
   mqtt2_client_TIME 2019-10-05 16:44:20
   READINGS:
     2019-10-05 10:44:59   ESP_Easy        connected!
     2019-10-05 16:44:20   Humidity        48.1
     2019-10-05 16:44:20   Pressure        999.1
     2019-10-05 16:44:20   TVOC            259.6
     2019-10-05 16:44:20   Temperature     20.1
Attributes:
   IODev      mqtt2_client
   disable    0
   readingList mqtt2_client:fhem/out/LWT:.* LWT
mqtt2_client:Test/Temp:.* Temp
mqtt2_client:Connect:.* Connect
mqtt2_client:ESP_Easy:.* ESP_Easy
mqtt2_client:ESP_Easy/bme680/Temperature:.* Temperature
mqtt2_client:ESP_Easy/bme680/Humidity:.* Humidity
mqtt2_client:ESP_Easy/bme680/Pressure:.* Pressure
mqtt2_client:ESP_Easy/bme680/TVOC:.* TVOC
   room       MQTT2_DEVICE

Regex basierend auf MQTT-Definitionen im ESP_Easy-Device in der MQTT-Definitin der zu übertragenden Meßwerten:
Attribute: readingList

mqtt2_client:fhem/out/LWT:.* LWT
mqtt2_client:Test/Temp:.* Temp
mqtt2_client:Connect:.* Connect
mqtt2_client:ESP_Easy:.* ESP_Easy
mqtt2_client:ESP_Easy/bme680/Temperature:.* Temperature
mqtt2_client:ESP_Easy/bme680/Humidity:.* Humidity
mqtt2_client:ESP_Easy/bme680/Pressure:.* Pressure
mqtt2_client:ESP_Easy/bme680/TVOC:.* TVOC
/edit 20230115
1.) FHEM-Implementierung mit CC-Modul:
CustomSensor-Implementierung (@hdgucken) mittels LaCrosse-Gateway:
Zusammenfassung bzw. letzter Stand der CustomSensor (CC)-Implementierung und erforderliche FHEM-Module.
Hinweis: Diese Module sind nicht Bestandteile des aktuellen FHEM-Repositorys und könnten bei einem Update überschrieben werden!
Deshalb lohnt es sich immer ein Backup davon in Reserve zu halten!  :(
In der noch aktuell + letzten Version befinden sich alle Sketche, Bins und Module in der angehängten Zip-Datei: BME680_CC_SENSOR

Achtung: Auto-Erkennung der CCs ist in den Modulen nicht implementiert. D.h. manuell die Definition der CC-Devices selbst manuell in der Fhem-Kommando-Zeile anlegen!
Beispiel der Konfiguration ist in der Zip-Datei enthalten. Die Dateien sind nach der übertragung noch auf User/Gruppe fhem/dialout mittels
Zitatsudo chown fhem:dialout 36_*.pm
zu ändern.

2.) FHEM-Implementierung mit SLINK-Modulen über WLAN/LAN mit ESPEasy
siehe Beschreibung:  /edit 20190921
[/list]
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 28 Oktober 2017, 18:45:05
Eventuell sollten wir uns zusammentun.
Ich bin gerade hier
https://forum.fhem.de/index.php/topic,78128.msg700815.html#msg700815
dabei, den BME680 in das LaCrosseGateway zu integrieren.

Das läuft so weit auch schon, nur die Umrechnung des Widerstandswerts in die IAQ, fehlt noch.
Die Formel verrät Bosch seltsamerweise nicht.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 28 Oktober 2017, 19:10:27
Hallo HCS,
Danke fürs Feedback.

Für mich war heute erst Mal die Anbindung über I2C wichtig.
Morgen schaue ich mir Mal die Driver_FW genauer zu dem Thema an.

Hast Du schon einen weiteren SW-Stand?
Da können wir gerne zusammen kommen.  :-)

Grüße
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 28 Oktober 2017, 19:41:28
Hallo zusammen,

ich bin gerade am Komplettieren meines nano LGWs. Dauer leider ein bisschen, weil zu viele (unversandte) Platinen und Zeugs rumliegen  :(

Gruß Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 28 Oktober 2017, 22:34:48
Hier die Arduino-Library für das Breakout-Board:
BME680_Library (https://github.com/vicatcu/BME680_Breakout/tree/master/BME680_Library). Das ist der gesuchte Wrapper um den BME680_driver (https://github.com/BoschSensortec/BME680_driver). Sowie Beispiele dazu.
Ebenfalls hier (https://github.com/DFRobot/DFRobot_BME680) und hier (https://github.com/kriswiner/BME680/blob/master/BME680_t3.ino).
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: KölnSolar am 28 Oktober 2017, 23:25:05
Feines Projekt ! Freue mich auf Fortschritte und Endergebnis. Bin selber zu verhaftet in Betty, Samsung, Feinstaub.... und letzteres als Innensensor. Den BME680 direkt an den Wemos anschließen ?
Grüße Markus
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 29 Oktober 2017, 11:19:37
Hallo Markus,

ZitatDen BME680 direkt an den Wemos anschließen
das wird gehen.

Habe mich aber noch nicht auf ein Transport-Medium festgelegt.
Hier gibt es z.B. ja auch noch: Vorgänger-Threads (https://forum.fhem.de/index.php/topic,20956.0.html) und hier AMS-IAQ (https://forum.fhem.de/index.php?topic=60204.0)
oder CUL_TX, Asksin, LGW, ESP etc. (mal schauen, zum gegebenen Zeitpunkt, was für FHEM mehr Sinn macht.)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 29 Oktober 2017, 11:49:51
Hier die Version mit der "Orginal"-Lib basierend auf dem sensortec-Code.
Habe alles in ein Verzeichnis gelegt um ein eigenständiges Projekt (ohne Arduino-Repository-Verweise) zu erzeugen.
In den Libs musste ich noch einiges anpasssen, dass sie unter VisualMicro compiliert werden können,
bzw. nicht dauernd Fehler (zB. int8_t unbekannt) anzeigen.

ZitatOpening port
Port open
BME Initialization...Succeeded!
Configuring Forced Mode...Succeeded!
Temperature(degC),Relative_Humidity(%),Pressure(hPa),Gas_Resistance(Ohms)
22.57,51.37,1004.47,0
22.72,51.43,1004.21,121377
22.69,51.30,1004.25,125656
22.66,51.26,1004.29,127570
22.65,51.27,1004.35,128451
22.63,51.27,1004.37,128648
Einige Dinge kann klar noch noch verbessern: z.B. die Normalisierung des Luftdrucks auf Meereshöhe ...
Diese Lib scheint die bessere Version zu sein. Jetzt geht es erst ma wieder ans Datenblatt um wie HCS schon erwähnte
die Bedeutung der Widerstandswerte herauszufinden und ob der Forced-Mode die richtige Betriebsvariante ist.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 29 Oktober 2017, 14:09:57
Nach Durchlesen der BME680-Dokumentation, werden Lösungen mit zwei "Ausbaustufen" : IAQ + ALL
mit den entsprechenden Algorithmen als Arduino-Code. (siehe S.21, Datasheet)  :)

BSEC-code (https://www.bosch-sensortec.com/bst/products/all_products/BSEC) "Bosch Sensortec Environmental Cluster"

bsec_integration.c
bsec_integration.h
bsec_iot_example.c
bsec_iot_example.ino
doc_bsec_step_by_step.md


Zitat
C:.
├───algo
│   └───bin
│       ├───ARM_CORTEX
│       │   ├───ARMCC
│       │   │   └───IAQ_OUT
│       │   │       ├───Cortex_M0
│       │   │       ├───Cortex_M0+
│       │   │       ├───Cortex_M3
│       │   │       ├───Cortex_M4
│       │   │       └───Cortex_M4F
│       │   └───GCC
│       │       └───IAQ_OUT
│       │           ├───Cortex_M0
│       │           ├───Cortex_M0+
│       │           ├───Cortex_M3
│       │           ├───Cortex_M4
│       │           └───Cortex_M4F
│       ├───ESP8266
│       └───RL78
├───API
├───config
│   └───iot_lp_3_3v
├───Doc
└───example


Zitat- Available binaries for download - ARM CortexM0+,M3,M4,M4F,x86,x64
... und Arduino mit ESP  ;)

@HCS:
Hier sollte die Vorgehensweise der Umrechnung beschrieben sein (siehe auch S.9 + 18ff. Datasheet) :

Zitat[300345.00] T: 33.30| rH: 22.73| IAQ: 25.00 (3)
[303346.00] T: 33.30| rH: 22.76| IAQ: 26.30 (3)
[306346.00] T: 33.26| rH: 22.81| IAQ: 27.90 (3)
[309346.00] T: 33.26| rH: 22.84| IAQ: 19.72 (3)
[312346.00] T: 33.20| rH: 22.93| IAQ: 25.02 (3)
[315346.00] T: 33.19| rH: 22.94| IAQ: 20.70 (3)
[318346.00] T: 33.14| rH: 22.97| IAQ: 28.80 (3)

=>Widerstandswert
=> IAQ_Index [0-50,51-100,101-150,151-200,201,300,301-500] 
=> Air_Quality [good,average,little bad, bad, worse, very bad]

Aber: CO2-LED-Ampelanzeige: (bis 800 ppm: grün, 800-1200 ppm: gelb, über 1200 ppm: rot)

Mal schauen... und den "BSECIntegrationGuide" (PDF im \Doc-Verzeichnis) durchwälzen...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 29 Oktober 2017, 18:09:57
Zitat von: juergs am 29 Oktober 2017, 14:09:57
... und Arduino mit ESP  ;)
Hast Du eine Idee, wie man die libalgobsec.a einbindet?
Meiner Meinung nach gibt es die Berechnung der IAQ nur in precompiled libs.
https://github.com/BoschSensortec/BME680_driver/issues/6#issuecomment-337134651

Zitat von: juergs am 29 Oktober 2017, 14:09:57
Hier sollte die Vorgehensweise der Umrechnung beschrieben sein (siehe auch S.9 + 18ff. Datasheet) :
Das beschreibt nur, wie man den Senosr heizt und den Widerstandswert ausliest und berechnet.
Aber nicht, wie die IAQ daraus berechnet wird.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 29 Oktober 2017, 18:33:10
Hallo HCS,

ja sieht in der Tat so aus:

Zitatbsec_do_steps()
scheint nur in den precompiled libs zu existieren.
Dort werden die IAQ Berechnungen durchgeführt ...

Ich muss mich durch den "BSEC Integration Guide" duchkämpfen.
Was mich wundert ist, dass ein explizites Arduino-Beispiel mitgeliefert wird.

So eine adhoc Idee wäre, durch Referenzmessungen, sich einfach eine Funktion zu erstellen, welche
die Widerstandswerte in die IAQ-Kategorien umwandelt. (airco2ntrol (https://maker-tutorials.com/guenstiges-co2-messgeraet-airco2ntrol-im-test-1-raspberry-pi-fhem-usb/))

Vielleicht hast Du da schon mehr Erfahrungswerte in Bezug auf der Widerstands-Ausgabe ?

Letztendlich kommt es da nicht auf den IAQ-Absolutwert an (?) ...


Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 29 Oktober 2017, 18:57:33
Zitat von: juergs am 29 Oktober 2017, 18:33:10
Vielleicht hast Du da schon mehr Erfahrungswerte in Bezug auf der Widerstands-Ausgabe ?
Ein wenig. Siehe hier: https://forum.fhem.de/index.php/topic,78128.msg700815.html#msg700815
Ich kann zumindest ablesen (angehängtes Chart), wann meine Frau gekocht hat und wann gelüftet wurde.
Ich müsste mal die Fenster zu lassen, bis ich umkippe, um den Grenzwert zu ermitteln  ;D ;D

Zitat von: juergs am 29 Oktober 2017, 18:33:10
Letzendlich kommt es da nicht auf den IAQ-Absolutwert an (?) ...
Denke ich auch. Wir brauchen ja nicht unbedingt eine "Bosch-Kompatible" IAQ, wenn die nicht verraten wollen, wie man sie berechnet.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 29 Oktober 2017, 19:00:44
ZitatIAQ, wenn die nicht verraten wollen, wie man sie berechnet.

Ja, magic...  und ein riesen Aufwand für das Framework.
Die scheinen Angst vor den Chinesen zu haben ...  :( :( :(

Über den "gas_range" scheint die Werteausgabe  auch nicht kontinuierlich zu sein. (Siehe Seite 20, Tabelle 12) ...

Dann baue ich mal die Chart-Ausgabe für die Arduino-IDE ein und analysiere die Ergebnisse wie hier (https://forum.fhem.de/index.php/topic,60204.15.html) und hier (https://forum.fhem.de/index.php/topic,13166.0.html) mit Modul (https://forum.fhem.de/index.php/topic,41750.0.html)
vielleicht auch parallel mit dem IAQ-Sensor von AMS.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: KölnSolar am 29 Oktober 2017, 19:21:05
ZitatIch müsste mal die Fenster zu lassen, bis ich umkippe, um den Grenzwert zu ermitteln  
Beim CO2-Sensor(Velux etc.) genügen 1-2 Zigaretten  ;)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 29 Oktober 2017, 19:26:14
Zitatgenügen 1-2 Zigaretten
Das beste Beispiel für VOCs (Organic Volatile Compounds)  :)

CO2-LED-Ampelanzeige: (bis 800 ppm: grün, 800-1200 ppm: gelb, über 1200 ppm: rot)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 29 Oktober 2017, 20:01:52
Die precompiled Libs wären z.B. für den STM32 (STM32F103CB) aus dem MapleCul möglicherweise geeignet ...
Dann wäre ein Umschwenken auf den Maple wohl sinnvoll ...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 29 Oktober 2017, 20:23:43
Zitat von: juergs am 29 Oktober 2017, 20:01:52
Dann wäre ein Umschwenken auf den Maple wohl sinnvoll ...
Für das LaCrosseGateway definitiv nicht. Aber eventuell um Referenzwerte zu produzieren.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 29 Oktober 2017, 21:09:45
Der erste Plot-Output mit Raw- und gleitendem Mittelwert.

https://www.umweltbundesamt.de/sites/default/files/medien/pdfs/kohlendioxid_2008.pdf (https://www.umweltbundesamt.de/sites/default/files/medien/pdfs/kohlendioxid_2008.pdf)

Apropos Chinesen: Modul-Luft-Air-Quality-Staub-Sensor-LCD-Anzeige-Monitor (https://www.ebay.de/itm/Haushalt-PM2-5-Detektor-Modul-Luft-Air-Quality-Staub-Sensor-LCD-Anzeige-Monitor-/122638587529?&_trksid=p2056016.l4276)

Kommentar:
Zitat
Im Alltag ist der CO2 Wert in einem Wohnraum meist im roten Bereich, ohne sich Sorgen machen zu müssen, sprich die Skala ist sehr streng ausgelegt).
AIQ-Index: https://en.wikipedia.org/wiki/Air_quality_index (https://en.wikipedia.org/wiki/Air_quality_index)

https://forum.mysensors.org/topic/7788/bosch-bme680-sensor (https://forum.mysensors.org/topic/7788/bosch-bme680-sensor)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 30 Oktober 2017, 11:12:43
@HCS: Einbindung precompiled libs
ZitatThe last step we need to do is to ensure that the pre-build `libalgobsec.a` library is linked when we compile our project. Unfortunately, this process is somewhat tricky when it comes to Arduino IDE. We first need to find where 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 `*libalgobsec.a:(.literal .text .literal.* .text.*)` after the line `*libm.a:(.literal .text .literal.* .text.*)`.
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`.

Dann sollte eine Vergleichs-Variante mit dem ESP8266 (http://fab-lab.eu/octopus/)  möglich sein.  :)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 30 Oktober 2017, 15:04:19
Zitat von: juergs am 30 Oktober 2017, 11:12:43
Dann sollte eine Vergleichs-Variante mit dem ESP8266 möglich sein
Ja, ich habe den BSEC gestern Abend auf dem 8266 zum laufen bekommen.
Und gleich festgestellt, dass meine Widerstandsberechnung auch nicht stimmt.
Aber damit kann man evtl. Vergleiche anstellen, wie sich die IAQ bezüglich Widerstand und rH verhält.
Habe sie noch erweitert, um den Widerstand mit auszugeben (Gas:).
Es dauert einige Minuten, bis die BSEC anfängt, eine IAQ zu liefern.

Sieht dann so aus:
[459268.00] T: 20.69| rH: 53.80| IAQ: 37.18 (3)| Gas: 1705.81
[462268.00] T: 20.70| rH: 54.05| IAQ: 47.76 (3)| Gas: 1686.11
[465268.00] T: 20.69| rH: 54.24| IAQ: 57.98 (3)| Gas: 1668.97
[468268.00] T: 20.68| rH: 54.41| IAQ: 64.52 (3)| Gas: 1657.38
[471268.00] T: 20.69| rH: 54.50| IAQ: 69.20 (3)| Gas: 1649.06
[474269.00] T: 20.68| rH: 54.60| IAQ: 71.25 (3)| Gas: 1644.93
[477269.00] T: 20.67| rH: 54.70| IAQ: 77.16 (3)| Gas: 1635.71
[480269.00] T: 20.65| rH: 54.86| IAQ: 78.94 (3)| Gas: 1632.66
[483269.00] T: 20.66| rH: 54.88| IAQ: 84.28 (3)| Gas: 1623.58
[486269.00] T: 20.65| rH: 54.95| IAQ: 85.60 (3)| Gas: 1621.58
[489269.00] T: 20.63| rH: 55.04| IAQ: 88.93 (3)| Gas: 1616.59
[492269.00] T: 20.62| rH: 55.11| IAQ: 89.28 (3)| Gas: 1615.59
[495269.00] T: 20.84| rH: 55.60| IAQ: 250.00 (3)| Gas: 909.62
[498269.00] T: 21.12| rH: 57.56| IAQ: 388.20 (3)| Gas: 606.41
[501269.00] T: 21.36| rH: 58.37| IAQ: 437.31 (3)| Gas: 521.63
[504269.00] T: 21.53| rH: 59.59| IAQ: 476.07 (3)| Gas: 461.52
[507269.00] T: 21.45| rH: 60.56| IAQ: 492.55 (3)| Gas: 439.29
[510270.00] T: 21.56| rH: 59.64| IAQ: 500.00 (3)| Gas: 427.84
[513270.00] T: 21.46| rH: 58.98| IAQ: 500.00 (3)| Gas: 423.98
[516270.00] T: 21.36| rH: 57.85| IAQ: 500.00 (3)| Gas: 426.18
[519270.00] T: 21.23| rH: 57.01| IAQ: 500.00 (3)| Gas: 431.21


Ich habe den Sensor mal heftig eingenebelt, um eine Reaktion hervorzurufen.

Anbei die firmware, damit könnt ihr selbst mal testen.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 30 Oktober 2017, 15:17:38
Hallo HCS, super!

4 Tage "BurnIn"-Zeit für den Sensor sind zu veranschlagen.  :D

ZitatThe IAQ scale ranges from 0 (clean air) to 500 (heavily polluted air). During operation, the algorithms automatically calibrate
and adapt themselves to the typical environments where the sensor is operated (e.g., home, workplace, inside a car, etc.).
This automatic background calibration ensures that users experience consistent IAQ performance. The calibration process
considers the recent measurement history (typ. up to four days) to ensure that IAQ ~ 25 corresponds to "typical good" air
and IAQ ~ 250 indicates "typical polluted" air.

ZitatEs dauert einige Minuten, bis die BSEC anfängt, eine IAQ zu liefern.
Ja, wegen Ringpuffer ...


Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 30 Oktober 2017, 15:45:23
So, habe die BIN geflasht und an den Raspberry Pi rangehängt. Diesmal ist die Baudrate 115200 baud  ;), d.h. der Code lautet:
sudo stty -F /dev/ttyUSB1 115200
sudo cat /dev/ttyUSB1 > /tmp/bme680.txt &


dann kommt (ohne das > ...) Folgendes raus:
[126249.00] T: 28.88| rH: 31.40| IAQ: 0.00 (0)| Gas: 68330.16
[129249.00] T: 28.85| rH: 31.46| IAQ: 0.00 (0)| Gas: 68497.20
[132249.00] T: 28.81| rH: 31.55| IAQ: 0.00 (0)| Gas: 69287.61


Gruß PeMue

Edit:
Lüften scheint echt zu helfen (IAQ zwischen 1 700 000 und 2 400 000)  ;D bzw. vorher kurz dagegengeblasen. Ich sollte den Raspberry Pi vielleicht mal im Schlafzimer aufstellen  ???

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 30 Oktober 2017, 17:40:57
Zitat von: PeMue am 30 Oktober 2017, 15:45:23
Diesmal ist die Baudrate 115200 baud
Das habe ich vergessen zu sagen ...  :)

Zitat von: PeMue am 30 Oktober 2017, 15:45:23
Lüften scheint echt zu helfen
Das hätte ich dir auch ohne BME680 sagen können  ;D ;D ;D

Der Kalibrierungsprozess von vier Tagen ist mir noch etwas suspekt. Das kann ja die Werte der vier Tage nur im RAM haben. Bedeutet das, dass, wenn man die Spannugsversorgung getrennt hatte, eneut vier Tage Kalibrierung erforderlich sind?
Lotet der algo vier Tage lang die obere und untere Grenze aus?

Eventuell sollten wir versuchen herauszubekommen, welcher Widerstandswert wieviel ppm Schadstoff entspricht und dann unsere eigenen Schlüsse ziehen.
Die libalgobsec.a und das irre framework von Bosch scheiden für das LGW eh aus.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 30 Oktober 2017, 18:37:07
Zitat von: HCS am 30 Oktober 2017, 17:40:57
... herauszubekommen, welcher Widerstandswert wieviel ppm Schadstoff entspricht und dann unsere eigenen Schlüsse ziehen.
Die libalgobsec.a und das irre framework von Bosch scheiden für das LGW eh aus.

Zitatbsec_codegen_do_steps.o/
bsec_codegen_get_configuration.o/
bsec_codegen_get_state.o/
bsec_codegen_get_version.o/
bsec_codegen_init.o/
bsec_codegen_reset_output.o/
bsec_codegen_rtwutil.o/
bsec_codegen_sensor_control.o/
bsec_codegen_set_configuration.o/
bsec_codegen_set_state.o/
bsec_codegen_update_subscription.o/
bsec_interface.o/
constructor_bsec.o/
convertHumidity.o/
ExpSmoothingBsec.o/
GasHumidityBaselineTracker.o/
GasHumidityPreProcessor.o/
HumidityTemperatureCorrector.o/
normalizeFilterBw.o/
RingBufferBsec.o/
SensorHeatCompensator.o/
SensorStatusTracker.o/
absHum.o/

Da ist Temperatur und Feuchte ebenfalls darin "vermauschelt".
Das wird mathematisch interessant.  ;)

Entäuschend, dass sensortec nur die 32-Bitter im Fokus hat...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 30 Oktober 2017, 22:13:03
Der ESP-Compile ist mir jetzt endlich auch gelungen!
:D

Liebe Boschler, das wäre auch einfacher zu machen gewesen!

ZitatOnce we are set with our hardware and development environment, we need two pieces of software to get the most out of our BME680 sensor
Das hat mich in die Irre geleitet und hatte die bme680.c + .h aus dem BME680-Driver genommen.
Ist nicht notwendig: die Richtigen Basis-Dateien liegen im "\API"-Verzeichnis des BSEC-Frameworks.

Dann muss ich noch schauen, ob ich mein ESP8266 endlich geflasht bekomme.

@Peter, HCS
Wie  habt Ihr den ESP verbunden?

Grüße
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 30 Oktober 2017, 22:20:49
Zitat von: juergs am 30 Oktober 2017, 22:13:03
@Peter, HCS
Wie  habt Ihr den ESP verbunden?
Ich habe einen nanoCUL, der aber dieselbe Beschaltung hat wie z.B. der NodeMCU. Dann per USB mit dem NodeMCU Flasher oder dem ESPTool flashen.

Gruß PeMue
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 31 Oktober 2017, 00:19:27
Meiner läuft jetzt schon einige Stunden mit. Fing mit IAQ Werten um 25-30 an ging dann hoch bis 180,
jetzt ist er wieder bei ca. 110. Schwingt sich wohl gerade ein  :)
Bild vom aktuellen Stand:
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: Markus M. am 31 Oktober 2017, 03:55:28
Zitat von: KölnSolar am 29 Oktober 2017, 19:21:05
Beim CO2-Sensor(Velux etc.) genügen 1-2 Zigaretten  ;)

Ich weiss ja nicht was du rauchst, aber der einfachste Weg das Ding auf Anschlag zu bringen, ist den Sensor kurz an der Spiritus-Flasche schnüffeln zu lassen.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 31 Oktober 2017, 06:52:34
tutorial-multiple-values-in-the-arduino-ide-serial-plotter (https://www.norwegiancreations.com/2016/01/tutorial-multiple-values-in-the-arduino-ide-serial-plotter/)

ZitatWhen the serial plotter receives a line break, it plots all values on that line as one time step. Each variable need to be seperated by either a comma, tab or a space (might work with other characters as well).

oder TelemetryViewer (http://www.farrellf.com/TelemetryViewer/) zum Speichern der Daten als CSV.
Beispiel: Öffnen- und Schließen des Fensters.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 31 Oktober 2017, 09:09:25
Zitat von: juergs am 30 Oktober 2017, 18:37:07
Da ist Temperatur und Feuchte ebenfalls darin "vermauschelt".
Das wird mathematisch interessant.  ;)
Mir ist noch unklar, ob Temperatur und Feuchte zur Kompensation oder als Wohlfühlanteil eingerechnet werden.

Jetzt wäre zu klären, was wir eigentlich als Ergebnis wollen. Mir schwebt da eher die reine Schadstoffkonzentration vor.
Einen Wohlfühlwert kann man dann in FHEM immern noch aus VOC, rH und Temperatur berechnen, sofern man will.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 31 Oktober 2017, 09:25:27
ZitatJetzt wäre zu klären, was wir eigentlich als Ergebnis wollen. Mir schwebt da eher die reine Schadstoffkonzentration vor.
Einen Wohlfühlwert kann man dann in FHEM immern noch aus VOC, rH und Temperatur berechnen, sofern man will.

Ja, wäre der übernächste Schritt (nach Funkanbindung). Auch die PPM-Angabe wäre interessant, da sie konkreter zu schein scheint
wie der IAQ-Wert. (kaum hat man den IAQ-Wert, schon will man mehr...  ;) )   

Hatte aus Zeitmangel, nicht intensiver in Euer  ESP-LGW-Projekt geschaut.
D.h. muss mich mit dem ESP erst mal (wieder) im Info-Dchungel dazu orientieren
und baue mir ein neues ESP-System auf. Mein NodeMCU scheint nicht reagieren zu wollen.

Zur Klarheit, für mich als ESP-(Wieder-)Einsteiger:

Nodemcu Firmware-Programmer auf Dev-Kit1:

1.) die "Test680.bin"-Datei auf Adresse 0x00000 flashen
2.) mit folgenden Einstellungen:  Bitrate 115200, Flashsize 4M, Flashspeed 80MHz, SPImode DIO


Kommen die Debug-Ausgaben über eine andere Serielle?

Bin mir nicht sicher, ob vorher noch nodemcu.bin geflasht werden muss oder nicht... 

Da mein System keine Ausgaben mehr danach macht.
Habe allerdings den Sensor noch nicht angeschlossen. Also fange ich erst mal mit "Blink" an. :'(

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 31 Oktober 2017, 09:36:45
Zitat//
... //--- globales Objekt
   movingAvg IAQ;
....

---hier der gleitende Mittelwert in loop()
IAQ.reading(bme680.getGasResistance());
Serial.print(IAQ.getAvg());  // int
Serial.println();

Anbei die angepasste Lib.

Ah, ... und die Includes nicht zu vergessen:
#include "utility\movingAvg.h"
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 31 Oktober 2017, 10:07:25
@juergs: meine NodeMCU wollte mit der zweiten Firmware von HCS auch erst nicht so richtig, nach dem dritten flashen gings dann.
               Einfach zwei drei mal probieren. Im NodeMCU Flasher alles auf "standard" lassen, die *.bin ab Adresse 0x00000 laden
               bei "default" ist die Baudrate 230400, Speed 40MHz, müsste aber auch mit 115200 und 80 MHz gehen.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 31 Oktober 2017, 10:22:07
Hallo Jürgen,

Zitat von: juergs am 31 Oktober 2017, 09:25:27
1.) die "Test680.bin"-Datei auf Adresse 0x00000 flashen
2.) mit folgenden Einstellungen:  Bitrate 115200, Flashsize 4M, Flashspeed 80MHz, SPImode DIO

Passt, siehe auch das angehängte Bild.

Zitat von: juergs am 31 Oktober 2017, 09:25:27
Kommen die Debug-Ausgaben über eine andere Serielle?
Nein, aber ggf. den NodeMCU stromlos machen.

Zitat von: juergs am 31 Oktober 2017, 09:25:27
Bin mir nicht sicher, ob vorher noch nodemcu.bin geflasht werden muss oder nicht... 
Nein, ist nicht notwendig. Falls der NodeMCU schon öfter geflasht wurde, lohnt es sich, den Speicher komplett zu löschen.

Zitat von: juergs am 31 Oktober 2017, 09:25:27
Da mein System keine Ausgaben mehr danach macht.  Habe allerdings den Sensor noch nicht angeschlossen. Also fange ich erst mal mit "Blink" an. :'(
Ich denke, dann kommt auch nichts über die serielle Schnittstelle. Also Sensor anschließen und nochmal probieren.

Sind denn momentan alle BME680 breakout boards verkauft  :o?

Gruß Peter

Edit:
Angehängt die Ergebnisse von gestern bis heute morgen. Man sieht, wann das Wohnzimmer (radikal) gelüftet wurde. Ich komme immer mehr zu dem Schluss, dass der BME680 doch noch funktioniert  ;D
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 31 Oktober 2017, 11:29:52
Vielen Dank an alle ! :D

Hatte den ESP doch schon etwas länger vernachlässigt ...  :'(
Hatte auch die Buttonlogik noch außen vor gelassen (Flash + Reset). 

Zitatden Speicher komplett zu löschen
mit INTERNAL://BLANK vermutlich....

ZitatSind denn momentan alle BME680 breakout boards verkauft?
Uuups !!!  ???

Ich habe mir das Octopus-Board als Alternative bestellt:
https://www.tindie.com/products/FabLab/iot-octopus-badge-for-education-and-innovation/ (https://www.tindie.com/products/FabLab/iot-octopus-badge-for-education-and-innovation/)
Allerdings für 35,50 € teurer als das Breakboard aber mit BME680 + BME280 on board ....  :'(
Der Lieferant sitzt übrigends in Stuttgart ...   ;)

Wollte nicht warten, deshalb läuft der Lötkolben heiß ...  ;D

Oder die OSH-Park-Platinen #1 (https://oshpark.com/shared_projects/yRIhJcpg) + #2 (https://oshpark.com/shared_projects/LXuNziGd) selbst bestücken (https://forum.fhem.de/index.php/topic,78593.0.html), woher bekommt man die BME-Chips in kleineren Stückzahlen? 
Wobei die #1-Variante eine "von Hand" Lötbarkeit suggeriert?
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 31 Oktober 2017, 11:40:59
Zitat von: juergs am 31 Oktober 2017, 11:29:52
mit INTERNAL://BLANK vermutlich....
ich würde es mit
epstool --port COM3 erase_flash
machen

Mit der seltsamen NodeMCU-Software hat es kürzlich schon mal jemand nicht richtig leer bekommen.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 31 Oktober 2017, 12:22:11
NodeMCU_V1-I2C-Pinout: 
Zitat
    I2C Backpack to NodeMCU Connections

    I2C Backpack GND Pin to NodeMCU GND Pin

    I2C Backpack VSS Pin to NodeMCU 5Vin / 5V    3V3 Pin

    I2C Backpack SCL Pin to NodeMCU D1 Pin

    I2C Backpack SDA Pin to NodeMCU D2 Pin
?

ZitatThe default pins are defined in variants/nodemcu/pins_arduino.h as SDA=4 and SCL=5, but those are not pins number but GPIO number, so since the pins are D1=5 and D2=4.
Anyway, you can also choose the pins yourself using the I2C constructor Wire.begin(int sda, int scl);
?

Wire.begin(); also Default-Belegung.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 31 Oktober 2017, 12:39:56
https://www.haustechnikdialog.de/Forum/t/197255/Schlafzimmer-CO2-Wert-von-408-auf-2900 (https://www.haustechnikdialog.de/Forum/t/197255/Schlafzimmer-CO2-Wert-von-408-auf-2900)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 31 Oktober 2017, 13:04:58
@juergs: NodeMCU_V1-I2C-Pinout:   ?
               Ja, D1 ist SCL, D2 ist SDA.

@PeMue:
Zitat von: PeMue am 31 Oktober 2017, 10:22:07
Sind denn momentan alle BME680 breakout boards verkauft  :o?
Ja, scheint so. Wollte auch noch ein zwei BlueDot's bestellen, ausverkauft  :'(
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 31 Oktober 2017, 13:47:43
Zitat von: juergs am 31 Oktober 2017, 12:39:56
NodeMCU_V1-I2C-Pinout:   ?
               Ja, D1 ist SCL, D2 ist SDA.

Ja, I2C (mit HCSs + meinem Compile) läuft (bekanntes Signalbild, aber "schlechter" als beim Nano), aber es kommen (noch) keine seriellen Ausgaben über USB ...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 31 Oktober 2017, 14:34:23
Zitat von: juergs am 31 Oktober 2017, 13:47:43
... aber "schlechter" als beim Nano), aber es kommen (noch) keine seriellen Ausgaben ...
Ich vermute mal, Du hast sie dran, aber prüfe lieber noch mal, ob Du die zwei 4,7 k PullUp Widerstände irgendwo drauf hast ...

Gruß PeMue
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 31 Oktober 2017, 14:41:38
Zitat von: PeMue am 31 Oktober 2017, 14:34:23
Ich vermute mal, Du hast sie dran, aber prüfe lieber noch mal, ob Du die wzei 4,7 k PullUp Widerstände irgendwo drauf hast ...

Gruß PeMue

Hallo Peter,
auf dem Watterot-Breakoutboard sind Level-Shifter mit jeweils 2*Rs und FET gegen 3V3. Auf dem NANO waren 5V mit TTL-Level gegen den den BME.
Eigentlich sollten die Pullups reichen ...  5V und 3V3 Betrieb sind möglich. Bei 3V3 muss dessen Spannungsregler aber wirklich LowDrop sein...

https://github.com/watterott/BME680-Breakout/blob/master/hardware/BME680-Breakout_v10.pdf (https://github.com/watterott/BME680-Breakout/blob/master/hardware/BME680-Breakout_v10.pdf)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 31 Oktober 2017, 16:46:11
Hallo Zusammen,

... tja, kleine Ursache ... große Wirkung. Für alle die auch suchen (http://www.instructables.com/id/Programming-ESP8266-ESP-12E-NodeMCU-Using-Arduino-/) sollten...

Die Arduino-Ide stand noch auf "Generic ESP" und nicht auf "nodeMCU", dann passt das Pin-Mapping nicht.
Ebenso funktioniert dann auch die Serielle via USB nicht. Aua!

Hat mich heute doch etwas Zeit gekostet, bin dafür wieder im ESP eingearbeitet, wenn auch nicht gerade freiwillig  ;)

Dann werde ich mich wieder dem Thema zuwenden können. ;-)

Vielen Dank für die Hilfe.
Grüße
Jürgen 
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 31 Oktober 2017, 17:35:12
@HCS:
dann müssten wir noch klären für welche HW-Konfiguration Deine Bin-Datei kompiliert wurde...
Bzw. welche Settings?

Momentan habe ich die wdt-Outputs wie hier (https://forum.fhem.de/index.php/topic,43672.msg356095.html#msg356095)
... ich wusste, warum mir der ESP nicht so behagt....

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 01 November 2017, 06:26:41
Im Moment will die FW noch nicht so richtig auf dem ESP:
Opening port
Port open

ets Jan  8 2013,rst cause:4, boot mode:(1,6)
wdt reset

rll��|�l�| ...

Setup bevor bsec_init ...

Setup nach bsec_init ...

ets Jan  8 2013,rst cause:4, boot mode:(3,6)

wdt reset
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
vf6d232f1
~ld

Setup bevor bsec_init ...
Setup nach bsec_init ...


Werde noch mal die gesamte Konfiguration prüfen ...  :'(
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 01 November 2017, 07:47:28
Die Prüfung der Linker-Konfiguration ergab: OK!

Zum Testen, ob es systematisch mit dem ESP unter 3V3 funktioniert kompilierte ich den Sketch ohne BSEC-Aufrufe.

... und siehe da, vermutlich reicht der LDO-Output bei 3V3 nicht ganz aus? 

Verträgt es der ESP-Port, wenn der Pullup mit 4K7 gegen 5V statt 3V3 betrieben wird? Wenn das Breakoutboard mit 5V versorgt würde?

Checken werde ich auch noch, ob es an meinem Steckbrettaufbau mit evtl. zu langen Leitungen liegt ...

https://ba0sh1.com/blog/2016/08/03/is-esp8266-io-really-5v-tolerant/ (https://ba0sh1.com/blog/2016/08/03/is-esp8266-io-really-5v-tolerant/)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 01 November 2017, 08:20:36
Es ist nicht die Hardware:

Opening port
Port open
Succeeded!
Configuring Forced Mode...Succeeded!
Temperature(degC),Relative_Humidity(%),Pressure(hPa),Gas_Resistance(Ohms), Gas_Resistance_Average (Ohms)
22.68,42.94,1015.71,0,0
22.78,42.96,1015.53,117709,19618
22.66,42.78,1015.75,118207,39319
22.56,42.73,1015.97,117875,58965
22.48,42.74,1016.09,117379,78528

ets Jan  8 2013,rst cause:4, boot mode:(3,6)

wdt reset
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
vf6d232f1
~ld
BME Initialization...Succeeded!
Configuring Forced Mode...Succeeded!
Temperature(degC),Relative_Humidity(%),Pressure(hPa),Gas_Resistance(Ohms), Gas_Resistance_Average (Ohms)
22.13,43.16,1016.66,0,0
22.27,43.21,1016.38,94072,15679
22.26,43.13,1016.42,98529,32100
22.25,43.09,1016.44,103077,49280
22.24,43.04,1016.46,105946,66937


Vielleicht hilft das hier https://forum.fhem.de/index.php?topic=44603.0 (https://forum.fhem.de/index.php?topic=44603.0)
Crash Diagnose (http://arduino-esp8266.readthedocs.io/en/latest/faq/a02-my-esp-crashes.html)
esp8266-nodemcu-v1-0-and-wdt-resets (https://community.blynk.cc/t/solved-esp8266-nodemcu-v1-0-and-wdt-resets/7047)

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 01 November 2017, 08:22:18
Zitat von: juergs am 01 November 2017, 07:47:28
Verträgt es der ESP-Port, wenn der Pullup mit 4K7 gegen 5V statt 3V3 betrieben wird? Wenn das Breakoutboard mit 5V versorgt würde?
Das würde ich nicht tun.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 01 November 2017, 08:34:28
Der TS9011-LDO (http://www.mouser.com/ds/2/395/TS9011_H1608-1115585.pdf) ist gut genug.
Bei der geringen Belastung durch den Sensor regelt der LDO sehr gut aus.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 01 November 2017, 14:08:27
Der Prototyp mit 433 MHz Lacrosse Protokoll ist fertig.

Der Sender wird an D13 angeschlossen, wenn D10 gegen GND gejumpert wird dann zeigt der Serial-Output auch ein Timestamp an.
Der CO2-Wert pegelt sich bei mir um die 120.000 ein, deshalb teile ich dur 10.000 um in den übertragbaren Wertebereich zu kommen.

Die Datenübermittling wird per Interrupt alle 30 Sekunden übertragen, da sich heraus gestellt hat, dass der Sensor häufiger abgefragt werden muss,
wohl um seine Betriebstemperatur zu stablisieren...     

Der Sensor baut zwei Devices auf:
ID 100 - Kanal 1: Temperatur
             Kanal 2: Luftfeuchte
ID 101-  Kanal 1: CO2 Widerstand als Roh-Sensor-Wert
             Kanal 2: als gemittelter Sensorwert.

Die Werte für Temperatur, Luftfeuchte sind nicht gemittelt. Den Luftdruck habe ich erst mal in favor
der CO2-Ausgabe geopfert. In Zukunft wird sich aber der gemittelte Wert eher anbieten.
Dann werde ich den Luftdruck mit übertragen.

Das ist mal die erste Variante mit einem Nano, bis ich den WDT-Fehler beim ESP gefunden habe.

Evtl. lassen sich dann auch die Relation Richtung IAQ und ppm finden ...

Viel Spaß beim Testen.
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 01 November 2017, 15:28:42
Der Einfluss der Senderoutine macht sich bemerkbar!
... da ich während des Interrupts (quasi asynchron) auch direkt  den Sensor auslese.
Das lässt sich aber einfach beheben ... in der nächste Version.  ;)

Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 01 November 2017, 15:57:53
Zitat von: juergs am 01 November 2017, 14:08:27
Der Prototyp mit 433 MHz Lacrosse Protokoll ist fertig.
das hört sich sehr interessant an ! Habe selbst auch einige LaCrosse Sensoren aufgebaut,
einen mit zwei Kanälen (2xDS18B20) und mehrere mit einem Kanal (DHT22). Das ganze auf Basis
des ATTiny84 + RFM69CW auf 868,3MHz, laufen sehr zuverlässig.
Für den BME680 bietet sich ja da eher das KeyValueProtokoll an, da kann man alle Werte auf einmal übertragen,
inklusive z.B. Batteriespannung  8)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 01 November 2017, 16:03:12
Hallo hdgucken,

die Varianten:

interessieren mich ebenfalls. Der RFM sendet ja FSK. Das K-V-Protokoll seriell übertragen? 

Jürgen

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 01 November 2017, 17:23:02
Könnte aber auch der Einfluss des OOK-Senders auf den AD-Wandler sein, ist direkt hinter dem Breakoutboard angeordnet.
Werde mal den Sender Weiter weg platzieren oder komplett abschirmen....
Dann noch mal checken ...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 01 November 2017, 17:24:14
Hallo zusammen,

so ganz komme ich mit den Daten noch nicht klar. Folgende Fragen:
- Das Sendeintervall ist 3 s, stimmt das? Also die Zahl am Anfang / 1000?

Was mir auffällt:
- Der IAQ Wert geht hoch, wenn gekocht wird und geht extrem runter wenn gelüftet wird. Das ist soweit auch richtig. ABER:
- Kurz nach dem Lüften ging der IAQ-Wert wieder extrem hoch. Vielleicht war der Geruch der Gans heute unangenehm  ;D
- Was man machen könnte, ist einfach mal den IAQ Wert mit dem Gaswert korrelieren, ggf. noch unter Berücksichtigung der Temperatur.

@HCS:
Wenn die 3 s korrekt sind, könntest Du bitte eine Firmware bauen mit 60 s oder sogar noch längerer Zeit? Und alle [], | bei der Gelegenheit auch noch weglassen  ;).

Oder habt Ihr ein Programm zur Visualisierung, das mit den Zeichen klarkommt? Ich meine, ich hätte einmal ein Programm zur Visualisierung von Kurven von Batterieladegeräte gehabt, das ganz gut war, da muss ich mal suchen gehen ...

Danke + Gruß

Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 01 November 2017, 17:38:04
Hallo Peter,
der Einfluss des Senders macht sich bei mir bemerkbar.
Auch scheint die Zylkluszeit des Messens ein Faktor zu sein.

Zum Visualisieren benutze ich den TelemetryViewer. Der erwartet durch Leerzeichen getrennte Werte ohne Text.
Ich habe den zusätzlichen DebugText in der seriellen Ausgabe einfach per Jumper abschaltbar gemacht.
Liegt D10, auf Masse dann kommen timestamp und weitere Debugausgaben ...  ;)

Bei dem "komischen" Verhalten des Sensors muss ich noch forschen ...  :(
Allerdings ist die Tendenz immer richtig: Fenster zu - fallend, Fenster auf - steigend.
Man bräuchte zum Kalibrieren ein Vergleichsgerät, welches ggf. IAQ und PPM CO2-Gehalt anzeigt.
Dann Draußen als niedrige (konstante?) Referenz und als obere Referen eine CO2-Quelle. (CO2-Patrone...)

Interessant ist, dass beim Fensteröffnen der Luftdruck bei mir steigt, die Luftfeuchte geht bei trockener Luft dann runter.
Also genau so wie vermutet...  ;) 

ZitatWas man machen könnte, ist einfach mal den IAQ Wert mit dem Gaswert korrelieren, ggf. noch unter Berücksichtigung der Temperatur.
Ja, das ist der Plan ....

Ich schaue mal ob ich das Ganze in der BSEC-Form auf den MiniMaple verdröselt bekomme.
Evtl. funktioniert das ähnlich wie beim ESP, aber ohne WDT-Problem.... 


Die korrigierte und ergänzte SW-Version für den Nano  (ohne BSEC) habe ich diesmal im ersten Post dieses Threads verankert. (V2.1).
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 01 November 2017, 17:48:41
Zitat von: PeMue am 01 November 2017, 17:24:14
Was mir auffällt:
- Der IAQ Wert geht hoch, wenn gekocht wird und geht extrem runter wenn gelüftet wird. Das ist soweit auch richtig. ABER:
- Kurz nach dem Lüften ging der IAQ-Wert wieder extrem hoch. Vielleicht war der Geruch der Gans heute unangenehm  ;D
- Was man machen könnte, ist einfach mal den IAQ Wert mit dem Gaswert korrelieren, ggf. noch unter Berücksichtigung der Temperatur.
Ich bin auchn noch am rätseln. Ich hatte den Fall, dass IAQ heftige Änderungen gemacht hat, der Widerstand aber konstant blieb.
Fende es blöd, das Bosch nicht verrät, was die IAQ-Berechnung eigentlich macht.

Zitat von: PeMue am 01 November 2017, 17:24:14
@HCS: Wenn die 3 s korrekt sind, könntest Du bitte eine Firmware bauen mit 60 s oder sogar noch längerer Zeit? Und alle [], | bei der Gelegenheit auch noch weglassen  ;).
Ich könnte für die Vergleichsfirmware, die auf BSEC basiert, ein Ausgabeformat machen, das ein gplot in FHEM verarbeiten kann.
Ich habe auch fast ein LGW incl. dem kompletten Datenpfad bis ins LaCrosse-Modul rein, gibt es in Kürze im anderen Thread dann.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 01 November 2017, 17:50:27
.. auch ein Grund ein LGW aufzubauen  :) :)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 01 November 2017, 17:53:03
Zitat von: juergs am 01 November 2017, 17:50:27
.. auch ein Grund ein LGW aufzubauen  :) :)
Es gibt 512 Gründe, eins zu bauen.  ;D ;D ;D
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 01 November 2017, 17:57:26
Zitat von: HCS am 01 November 2017, 17:53:03
Es gibt 512 Gründe, eins zu bauen.  ;D ;D ;D
Jürgen überlegt schon, wie viele Platinen er haben will  ;D ;D ;D
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 01 November 2017, 21:33:34
Zitat von: PeMue am 01 November 2017, 17:24:14
@HCS:
Wenn die 3 s korrekt sind, könntest Du bitte eine Firmware bauen mit 60 s oder sogar noch längerer Zeit? Und alle [], | bei der Gelegenheit auch noch weglassen  ;).
Anbei erst mal eine BSEC basierte Test-Firmware, die Deinen Wünschen entspricht.
Gibt alle 60 Sekunden eine Messung raus.
Ist jetzt wieder 57600 baud.
Format ist nun so:
TS: 60 T: 33.6 H: 28.0 P: 995.9 Gas: 2460 IAQ: 0
TS: 120 T: 33.3 H: 28.4 P: 995.9 Gas: 2474 IAQ: 0
TS: 180 T: 33.3 H: 28.4 P: 995.9 Gas: 2502 IAQ: 0
TS: 240 T: 33.8 H: 27.7 P: 995.9 Gas: 2524 IAQ: 0
TS: 300 T: 34.2 H: 27.2 P: 995.9 Gas: 2546 IAQ: 0
TS: 360 T: 34.1 H: 27.2 P: 995.8 Gas: 2561 IAQ: 28
TS: 420 T: 34.1 H: 27.2 P: 995.8 Gas: 2576 IAQ: 25
TS: 480 T: 34.1 H: 27.1 P: 995.8 Gas: 2589 IAQ: 24
TS: 540 T: 34.2 H: 27.0 P: 995.8 Gas: 2607 IAQ: 25
TS: 600 T: 34.1 H: 27.2 P: 995.9 Gas: 2615 IAQ: 25
TS: 660 T: 34.2 H: 27.0 P: 995.9 Gas: 2628 IAQ: 30
TS: 720 T: 34.0 H: 27.2 P: 995.9 Gas: 2644 IAQ: 25


TS: Sekunden seit Start
T: Temperatur in °C
H: Feuchte
P: Druck (nicht auf NN normalisiert)
Gas: Widerstand vom Gas-Sensor
IAQ: von BSEC gelieferte IAQ

Die Lib, die ich gerade für das LGW baue, liefert andere Werte als die BSEC, wird wohl doch noch etwas dauern, bis das passt.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 01 November 2017, 21:43:00
... dann bin ich mal gespannt, wann es wieder verfügbare Breakboards gibt.  :-\
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 02 November 2017, 20:15:02
Zitat von: juergs am 01 November 2017, 21:43:00
... dann bin ich mal gespannt, wann es wieder verfügbare Breakboards gibt.  :-\

Bei Amazon.de gibt es noch verfügbare Blue-Dot-Boards  ! (Heute Mittag 14, jetzt noch 10) ....
Allerdings kosten die deutlich mehr, als die von Watterott...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 02 November 2017, 20:17:50
Ich habe mich dazu entschlossen meinen AMS-iAQ-Core (https://www.allaboutcircuits.com/projects/build-an-arduino-ble-enabled-air-quality-monitor/)  wieder zu beleben und parallel zum BME680 zu betreiben (Infos (https://forum.fhem.de/index.php/topic,60204.msg521218.html#msg521218)). Der iAQ-core besitzt einen sog. Prediction-Wert der nach der AMS-internen Formel den IAQ-Wert wiederspiegeln soll und ebenfalls einen Widerstandswert ausgeben, der mit dem CO2-Gehalt korreliert. Somit hätten wir eine  "Referenz" zu den BME-Werten. (Beispielcode (https://github.com/lycannon/ajwrs/tree/master/amsRenesasSensorBoard/src))

Quasi zeitgleich hat AMS auch ihren CCS811 (https://media.digikey.com/pdf/Data%20Sheets/Sparkfun%20PDFs/AirQualityMeasurementswith_CCS811_Web.pdf) herausgebracht, der etwa zum gleichen Preis des BME alleine den CO2-Wert misst. Also ohne T/HUM/P-Messung. Lesenswert der Abschnitt über "CO2 equivalent units".
Deshalb ist der BME natürlich unschlagbar.  Aber der Chip wäre ebenfalls eine Betrachtung wert ( + BME280  ;) ).

ZitatBut before I show you the few readings that I took, there's so
mething I want to point out. You may have noticed in the comments of
the code above that this sensor requires a 48-hour "burn in" period when it's first installed. Beyond that, every time the sensor
is powered on, it requires 20 minutes of "run-in" before the
readings are considered usable. At the time that these pictures were
taken, the sensor had only burned in for about 15 hours so the readings aren't necessarily accurate

Im Screenshot ist die heutige "Ausbeute" allerdings ohne CO2-Erzeuger und hereingestelltem Fenster ;).
Man sieht auch einige Ausreißer (https://forum.fhem.de/index.php/topic,76654.msg686889.html#msg686889), deren Ursache ich noch erforschen muss. Evtl. können die auch von FHEM weggerechnet werden. Die angezeigten Werte sind alle gleitent gemittelt.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 02 November 2017, 21:12:19
Zitat von: HCS am 01 November 2017, 21:33:34
Anbei erst mal eine BSEC basierte Test-Firmware, die Deinen Wünschen entspricht.
Vielen Dank dafür. Mein nanoLGW rennt mit der neuen Software.

Nun müsste man noch soviel Unix/bash können, um mit
date -I bzw. einer entsprechenden Formatierung folgendes davor hängen zu können:
2017-11-02_19:37:03
dann könnte man mit FHEM die Plots machen. Aber ich arbeite dran  ;D

Gruß PeMue

Edit1:
Mit
date '+%Y-%m-%d_%H:%M:%S'
kommt zumindest das Datum im korrekten Format. Jetzt muss das nur noch vorne dran  :-\

Edit2:
Mit
echo `date +%Y-%m-%d_%H:%M:%S`  `vcgencmd measure_volts`
kommt ein Datum vor die Messung:
2017-11-03_23:40:38 volt=1.2000V

aber wenn ich statt dessen folgendes mache
echo `date +%Y-%m-%d_%H:%M:%S` `cat /dev/ttyUSB0`
kommt gar nichts  >:(

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 03 November 2017, 17:59:21
Ich habe noch mal Richtung AMS - CCS811 geforscht.

Es gibt dieses Breakoutboard (https://www.sparkfun.com/products/14193)  nur mit dem CCS811 bestückt, für ca. 19.95$ und
die Kombi mit CCS811 + BME280 für 29.95$, also eigentlich teurer als der BME680, der insgesamt All-in-One bietet. Geschmackssache,
die Doku dazu ist aber überragend  ;), im Vergleich zum BME.

Betrachtet man die Kombi CCS+BME280, dann ergibt sich das, preislich gesehen, dennoch als eine denkbare Alternative.

Der BME680 erfordert die Einbindung einer precompilierte Lib um die IAQ-Werte berechnet zu erhalten, der CCS geht einen anderen Weg: über Beschreiben von Registern
um die Umwelteinflüsse intern verrechnet mit in die Ausgabe mit einzubeziehen (Finde ich fast attraktiver (https://learn.sparkfun.com/tutorials/ccs811-air-quality-breakout-hookup-guide) als der BME). Dh. man kann von einem NTC über einen Dallas-Sensor bis zum BME280
alles mit zur Kompensation mit einzubeziehen. Die Ausgabe erfolgt als [ppm] und [tVOC] (Anmerk.: Total Volatile Org. Compounds).  CCS811_Air_Quality_Breakout_Source (https://github.com/sparkfun/CCS811_Air_Quality_Breakout)

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: JoWiemann am 03 November 2017, 18:15:45
Adafruit hat eine neue Version seiner Lib veröffentlicht:https://github.com/adafruit/Adafruit_BME680

Grüße Jörg
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 03 November 2017, 18:37:37
Hallo Jörg,
... interessant + umfangreich ...
Mit SPI-Interface-Nutzung.

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 03 November 2017, 18:41:48
Zitat von: juergs am 03 November 2017, 18:37:37
interessant. Umfangreich ...
Und auch nicht weiter als wir, keine IAQ Berechnung.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: JoWiemann am 03 November 2017, 18:56:14
Zitat von: HCS am 03 November 2017, 18:41:48
Und auch nicht weiter als wir, keine IAQ Berechnung.

Die Frage wird sein, ob Bosch die verwendeten Algorithmen jemals open source stellen wird. Irgendwie scheint der Sensor mit der Library von Bosch verheiratet zu sein. Frei nach dem Motto: Die Berechnung hat leider nicht mehr in den Sensor gepasst.

Grüße Jörg
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 04 November 2017, 10:40:12
Zitat von: PeMue am 02 November 2017, 21:12:19

aber wenn ich statt dessen folgendes mache
echo `date +%Y-%m-%d_%H:%M:%S` `cat /dev/ttyUSB0`
kommt gar nichts  >:(
Ich bin auch nicht der Linux-Profi, aber versuch mal folgendes:
echo `date +%Y-%m-%d_%H:%M:%S` > /dev/ttyUSB0
Muss nicht stimmen, aber irgendwie so in der Richtung müsste es gehen
(umleiten von Console nach seriellem Gerät).

P.S.: hab mir noch zwei BlueDot Module von amazon gesichert  ;)

Gruss Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 04 November 2017, 18:22:16
Der AMS-iAQ-core mag gerade mal nicht (https://arduino.stackexchange.com/questions/21850/what-does-it-mean-in-i2c-nack-received) ...  :'(
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 04 November 2017, 19:52:27
Geht doch, brauch wohl etwas interne "Verweildauer" ...
Nein .... SDA + SCL waren vertauscht (Levelshifter dazwischen) .. ;)

Zitat
CO2 [ppm] , resistance, TVOC

1583,19588,437
1590,19147,439
1590,19147,439
1590,19147,439
1590,19147,439
1590,19147,439
1595,18854,441
1595,18854,441
1595,18854,441
1595,18854,441
1595,18854,441
1598,18708,442
1598,18708,442
1598,18708,442
1598,18708,442
1598,18708,442
1598,18708,442
1600,18562,442
1600,18562,442
1600,18562,442
1600,18562,442
1600,18562,442
1605,18270,443
1605,18270,443
1605,18270,443

Werte sehen schon mal gut und realistisch aus ...  :D

Ich versuche mal den Code auf dem ESP8266 zum Laufen zu bringen ...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 04 November 2017, 20:38:50
Hallo Thomas,

Zitat von: hdgucken am 04 November 2017, 10:40:12
echo `date +%Y-%m-%d_%H:%M:%S` > /dev/ttyUSB0
Muss nicht stimmen, aber irgendwie so in der Richtung müsste es gehen
(umleiten von Console nach seriellem Gerät).
nein, so geht es nicht. Das schreibt das Datum auf die serielle Schnittstelle.

Mit folgendem Skript geht es:
#!/bin/sh
# reads data from nanoLGW and adds FHEM readable date in the first column
while read -r line < /dev/ttyUSB1; do
  echo `date +%Y-%m-%d_%H:%M:%S` $line
done

Das unter bme680read.sh speichern, Rechte anpassen und dann so laufen lassen:
./bme680read.sh >> /tmp/bme680-2017-11.log &
Irgendwie will er (trotz sudo) noch nicht, wenn man in /opt/fhem/log speichern will  >:(
Heraus kommt folgender Dateiinhalt:
2017-11-04_20:32:12 TS: 170820 T: 29.9 H: 31.6 P: 982.3 Gas: 139407 IAQ: 93
2017-11-04_20:33:12 TS: 170880 T: 29.9 H: 31.6 P: 982.3 Gas: 138832 IAQ: 94
2017-11-04_20:34:12 TS: 170940 T: 29.8 H: 31.7 P: 982.3 Gas: 139176 IAQ: 93
2017-11-04_20:35:12 TS: 171000 T: 30.0 H: 31.4 P: 982.3 Gas: 138261 IAQ: 94
2017-11-04_20:36:12 TS: 171060 T: 31.3 H: 29.3 P: 982.3 Gas: 137021 IAQ: 98
2017-11-04_20:37:12 TS: 171120 T: 31.3 H: 29.5 P: 982.2 Gas: 136576 IAQ: 101

Sollte mit SVG darstellbar sein  ;)

Gruß Peter

Edit1:
Ersten Plot angehängt, morgen gibt es eine Feier mit >10 Personen im Raum. Mal sehen, was da passiert  ;D
Edit2:
Nächsten Plot angehängt mit ein paar mehr Daten ...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 04 November 2017, 21:55:00
Hallo Peter,
das sieht ja schon ganz gut aus ...  :D

Bei mir läuft der iAQ-core ebenfalls, vermutlich macht er gerade seine Burn-In-Phase.
Mal schauen wie er sich weiter verhält...

Die Plausibilität der iAQ-Werte muss ich noch mal mit den Registerwerten vergleichen und prüfen.
Interessant wäre noch darauf eine Temperatur-Kompensation zu legen, bzw. zu erfassen, wie sich das auswirken würde.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 04 November 2017, 23:25:03
Hallo Peter,

Zitat von: PeMue am 04 November 2017, 20:38:50
nein, so geht es nicht. Das schreibt das Datum auf die serielle Schnittstelle.
Ups, stimmt natürlich, war wohl nicht ganz bei der Sache  ;)
Aber das Script sieht gut aus ! Könnte ein Linuxprofi auch nicht besser  ;D

Bin ja mal auf die morgigen Messwerte (Feier) gespannt ...

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 05 November 2017, 15:18:47
So, der Referenzwert-Sender über LaCrosse für den iAQ-core-Sensor ist ebenfalls fertig und funkt seine Werte an FHEM.  :D

Man kann schon erkennen, der iAQ hat schon wesentlich besseren Glättungs-Algorithmus eingebaut.
Beim BurnIn zeigte er etwas "abstruse" Werte an, die sich nach einiger Zeit in realistische Werte-Bereiche änderten.
Status 4 ist nicht im Datenblatt (http://www.mouser.com/ds/2/588/iAQ-core_Datasheet_EN_v1-775852.pdf) ... 

ZitatCO2:1458, Status:4, Resistance:28062, TVoC:403
2017-11-04 19:36:23   Message   BurnIn?

Die Grafik zeigt mal wieder die bekannten Fenster-Öffnen-Aktionen und die Reaktion des Sensors darauf.
Jetzt müssen doch noch Langzeitwerte gesammelt werden. Man sieht auch, dass die Werte von CO2 + TVOC (https://www.umweltbundesamt.de/sites/default/files/medien/pdfs/TVOC.pdf) eigentlich korrelieren.
So dass sich je nach Gusto noch ein Dallas18B20 oder BME280-Sensor zur möglichen Temperatur-Kompensation anbieten würde. 

In der Zwischenzeit kümmere ich mich um die Außreißer der BME680-Werte, die die SVG-Grafik ungünstig skalieren.
Mal schauen, ob das per FHEM/Perl oder eher im Code passieren kann.

Als Option wären dann Status-Icons, die abhängig vom CO2 farblich den Zustand anzeigen sinnvoll. In FHEM habe ich Entsprechendes schon gesehen ...

Den passenden VisualMicro-Code "iAQ-NANO-LACROSSE-TX3" dazu habe ich hier bei Github (https://github.com/juergs/iAQ_NANO_328_LaCrosse) veröffentlicht.
Voreingestellt ist die SensorID: 92.

Anbei ein paar CSV-Daten zum analysieren ...

PS: Bei Amazon sind die BME-Breakboards wech ...  :'(
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 05 November 2017, 21:14:26
Beim 3D-Drucken...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 06 November 2017, 19:55:59
Zu erkennen ist:
Einfluß der Temperatur-Gradienten auf den TVOQ, sowohl iAQ-Core als auch BME.
Fenster öffnen und wieder Fenster zu und Heizung an. Der Sensor befindet sich in Nähe des Fensters.   
Zwei Störende Pearl Funksensoren habe ich die Batterien entfernt um deren Einfluß bei der Übertragung zu minimieren.
Sie haben kurze Intervallzeiten und viele Repetitions. Evtl. hat das zu den fehlenden Daten geführt ... 
Zumindest beim iAQ wird man nicht um eine Temperatur-Kompensation herumkommen.
Besonders bei großen Delta-T's, da reagiert der iAQ empfindlich. 

Beim BME habe ich testweise eine Ausreißer-Erkennung in die Resistance-Ausgabe eingebaut.
Mal schauen, ob sich die SVG-Grafik dadurch verbessert.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 06 November 2017, 21:35:09
Zitat von: hdgucken am 04 November 2017, 23:25:03
Bin ja mal auf die morgigen Messwerte (Feier) gespannt ...
Da war CO2/IAQ-mäßig (und auch sonst  ;D) ziemlich was los, siehe Anhang.

Ich hatte die Gelegenheit, mit einem "Insider" zu sprechen:
- Der BME680 sollte eine ähnliche Charakteristik haben, wie der AMS Sensor.
- Der BME680 braucht etwa 4 Tage (eigentlich sollte es weniger sein), bis er sich kalibriert hat (soll vermutlich heißen, die Einschaltdrift ausgeregelt hat).
- Der IAQ ist mathematisch nicht definiert, d.h. jeder Hersteller kann den Wert irgendwie berechnen.
- So wie es scheint, macht der BME680 auch eine Driftkorrektur (nach unten), wenn lange im Raum nichts passiert (warum auch immer).

Gruß PeMue
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: icey am 06 November 2017, 23:59:21
Hallo zusammen,

bin neu hier und komme von der IP Symcon Fraktion. Wir versuchen gerade auch dem BME680 anständige CO2/ppm Werte zu entlocken. Meine ersten Versuche den BME680 parallel zum iAQ laufen zu lassen, empirisch anzugleichen,  könnt ihr hier sehen. https://www.symcon.de/forum/threads/32284-Modul-zur-Nutzung-der-Raspberry-Pi-GPIO?p=340551#post340551 (https://www.symcon.de/forum/threads/32284-Modul-zur-Nutzung-der-Raspberry-Pi-GPIO?p=340551#post340551)

Gruss
Bernd
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 07 November 2017, 07:13:45
Hallo Bernd,
Schön auf gleichgesinnte Mitstreiter zu treffen  :)
Schau gerne mal dort bei Euch vorbei ...

Die Interpretation der Messergebnisse steht erst mal im Raum.
Sowie eine Verbesserung der Ausgaben .... Strategie?

Ich würde vorschlagen, wir stellen unsere Messergebnisse als CSV-Datei zur weiteren
Analyse zur Verfügung?

Vorschlag-Format:
Timestamp | Temperatur | Luftfeuchte | Resistance_680 | CO2_680 | Resistance_iAQ | IAQ_iAQ

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: joschi2009 am 07 November 2017, 09:25:56
Zitat- So wie es scheint, macht der BME680 auch eine Driftkorrektur (nach unten), wenn lange im Raum nichts passiert (warum auch immer).

Vielleicht denkt er dann, er sei auf einem Prüfstand.  ;D ;D ;D ;D
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: icey am 07 November 2017, 09:45:47
Zitat von: juergs am 07 November 2017, 07:13:45
.... Strategie?

Ich würde vorschlagen, wir stellen unsere Messergebnisse als CSV-Datei zur weiteren
Analyse zur Verfügung?

Vorschlag-Format:
Timestamp | Temperatur | Luftfeuchte | Resistance_680 | CO2_680 | Resistance_iAQ | IAQ_iAQ

Grüße,
Jürgen

Hallo Jürgen,

genau das war auch meine Idee. Ich lasse jetzt mal den BME680 und den iAQ mehrere Tage am selben Ort laufen, ich schaue mir das dann mal näher an. Das mit der Driftkorrektur macht es nicht einfacher. Bei meine ersten Kurven habe ich schon so etwas vermutet.

Hoffnung ist aber immer noch, dass Bosch die Umrechnungsformel von Widerstand auf CO2/ppm oder TVOC/ppm bereit stellt.

Gruss
Bernd
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 07 November 2017, 10:12:16
Zitat von: icey am 07 November 2017, 09:45:47
Hoffnung ist aber immer noch, dass Bosch die Umrechnungsformel von Widerstand auf CO2/ppm oder TVOC/ppm bereit stellt.
Das wäre wirklich hilfreich. Die Bosch-IAQ ist eigentlich nutzlos, wenn man nicht weiß, wie sie zustande kommt.
Nur zu sagen "die Luft ist gut" ohne die Grenzwerte zu "schlecht" zu kennen macht wenig Sinn.

Ich habe eine Test-Firmware laufen, die auf der Bosch BSEC basiert.
Die habe ich etwas erweitert, dass ich auch den Widerstand und die Heizparameter für die hotplate bekomme (weil mir auch noch völlig unklar ist, welchen Einfluss die Zieltemperatur, die zwischen 200 und 400 °C liegen kann, hat).
So wie es aussieht, heizt die BSEC immer auf 320°C mit einer Heizdauer von 192ms.

Was man erkennen kann ist, dass der Widerstand kontinuierlich steigt und die IAQ sich nur ändert, wenn der Widerstand nicht mehr der ursprünglichen Steigung folgt.
Ich lasse das jetzt mal einige Tage laufen, um zu sehen, wo das hinführt. Der Widerstand kann ja nicht unendlich steigen.
Momentan ist die Messreihe noch zu kurz und nicht lange genug gelaufen, um da schon was vernünftig rauszuinterpretieren.

Und ich habe den Eindruck, dass die gemessene Temperatur nicht so deutlich zu hoch liegt, wie bei den BME280, die ich habe. Das scheint beim BME680 besser zu sein.

Vielleicht sollten wir eine "was noch unklar ist" Liste führen. Zusammengetragen könnten die bereits gefundenen Antworten dann mit etwas Glück ein Bild ergeben.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: blehnert am 07 November 2017, 13:05:40
Hallo Ihr fleißigen Entwickler,
Zitat von: juergs am 07 November 2017, 07:13:45
Hallo Bernd,
Schön auf gleichgesinnte Mitstreiter zu treffen  :)
Schau gerne mal dort bei Euch vorbei ...

Die Interpretation der Messergebnisse steht erst mal im Raum.
Sowie eine Verbesserung der Ausgaben .... Strategie?

Ich würde vorschlagen, wir stellen unsere Messergebnisse als CSV-Datei zur weiteren
Analyse zur Verfügung?

Vorschlag-Format:
Timestamp | Temperatur | Luftfeuchte | Resistance_680 | CO2_680 | Resistance_iAQ | IAQ_iAQ

Grüße,
Jürgen

Ich würde gerne Unterstützung anbieten durch Bereitstellen meiner Messdaten.
Habe bislang eine Messreihe der letzten sechs Tage, erstellt mit der "Test680.bin" von HCS vom 30.10. (aus diesem Thread).

Wäre vielleicht gut, wir würden alle die selbe 'Firmware' verwenden, welche hier genannten Ansprüchen genügt.

@HCS: würdest du Deine aktuelle FW wieder zur Verfügung stellen (oder habe ich diese übersehen)?

Habe drei BME680 zur Verfügung und würde wirklich gerne mit den Logs weiterhelfen (mehr kann ich nicht)

Grüße, Bernd
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 07 November 2017, 13:22:16
Zitat von: blehnert am 07 November 2017, 13:05:40
@HCS: würdest du Deine aktuelle FW wieder zur Verfügung stellen (oder habe ich diese übersehen)?
Ja, klar, heute Abend oder so. Muss die Normaliserung vom Luftdruck auf meine Meereshöhe für euch wieder ausbauen.

Mit "Resistance_iAQ | IAQ_iAQ" kann ich nicht dienen, weil ich diesen Sensor nicht habe.

Die Firmware läuft auf einem ESP8266 und liefert auf der Seriellen dieses Format:
TS: 52620 T: 19.8 H: 57.5 P: 1020.1 Gas: 5472 IAQ: 71 HT: 320 HD: 197 AC: 3
TS: 52680 T: 19.8 H: 57.4 P: 1020.1 Gas: 5467 IAQ: 72 HT: 320 HD: 197 AC: 3

TS: Zeitstempel
T: Temperatur
H: Feuchte
P: Druck
Gas: Widerstand
IAQ: von Bosch berechete IAQ
HT: Zieltemperatur hotplate (von BSEC gesetzt)
HD: Heizdauer hotplate (von BSEC gesetzt)
AC: Genauigkeit IAQ (1...3) (von BSEC geliefert)

Es wird alle 60 Sekunden ein Datensatz rausgegeben.

Mit dem bash script vom PeMue setze ich es in ein Logfile für FHEM um, auf dem der SVG von weiter oben läuft.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: djbugs am 07 November 2017, 15:41:44
HD: 197 passt nicht für ein 60s Intervall.
Die Heizdauer bei der BSEC ist abhängig vom Messintervall auch die internen Berechnungen bauen auf diese Timings auf.
ca 190ms beim LP Mode also alle 3s. Bei ULP sind es ca 2s und Messintervall 5min.

Bugs
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 07 November 2017, 15:49:05
Zitat von: djbugs am 07 November 2017, 15:41:44
HD: 197 passt nicht für ein 60s Intervall.
Die Messung findet alle drei Sekunden statt, aber es wird nur ein mal pro Minute der Wert übermittelt, um das log im Zaum zu halten.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 07 November 2017, 21:18:14
ZitatDas wäre wirklich hilfreich. Die Bosch-IAQ ist eigentlich nutzlos, wenn man nicht weiß, wie sie zustande kommt.
Nur zu sagen "die Luft ist gut" ohne die Grenzwerte zu "schlecht" zu kennen macht wenig Sinn.
Das macht nur Sinn wenn die Werte generell vergleichbar wären. Ich glaube [ppm] ist da Aussage-kräftiger.

ZitatIch habe eine Test-Firmware laufen, die auf der Bosch BSEC basiert.
Worauf basiert Deine Lösung?

ZitatVielleicht sollten wir eine "was noch unklar ist" Liste führen. Zusammengetragen könnten die bereits gefundenen Antworten dann mit etwas Glück ein Bild ergeben.
Sehr guter Vorschlag.  "was noch unklar ist" Liste => Github?

Zitatblehnert
Gerne.

Bei mir kann ich schon mal anfangen, fallls  es Sinn, macht den iAQ sinnvoll als Referenz mit einzubinden, dazu muss ich es schaffen den Resistance-Wert des BMEs zu glätten
(oder den möglichen Fehler zu finden  :( ... )

Vielleicht ist es im Vorfeld aber auch egal, wenn CSV-Werte vorliegen. Das lässt sich dann in der Tabellen-Kalulation besser prüfen bzw. ausblenden.

@HCS
Habe den Fehler bei meiner nodeMCU gefunden: I2C-Standard ist nicht auf D4/D5 (Weil GPIO) sondern auf D1 (SCL) / D2 (SDA).
War wohl in meiner Doku nicht sofort ersichtlich was "D"-Port und was GPIO ist ...
Versuche dann mal mein Compile ohne die WDT-Problematik durch zu  bekommen ...  oder Deine (neue) BIN einzusetzen.  ;)
Frage: Deine BIN ist für die gesamte LaCrosseGateway-Infrastrucktur oder nur für den BME? Falls ja, läuft das ohne den RFM69 nicht ...
Dann muss ich noch nachrüsten ...
Heute ist das bestellte BlueDot-Board gekommen, dann kann ich zusätzlich die ESP-Version ans laufen bringen.
Wegen dem CSV-Format würde ich für einen Standard plädieren, sonst muss man jedesmal umbauen ... oder Skripte dafür schreiben...  :'(

@bugs
ZitatHD: 197 passt nicht für ein 60s Intervall.
Die Heizdauer bei der BSEC ist abhängig vom Messintervall auch die internen Berechnungen bauen auf diese Timings auf.
ca 190ms beim LP Mode also alle 3s. Bei ULP sind es ca 2s und Messintervall 5min.
Sobald bei mir die BSEC-Version läuft, werde ich mir die Timing-Details noch genauer anschauen. Danke für den Hinweis.

Heute reicht es bei mir leider nicht zu mehr ...

Grüße,
Jürgen




Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 07 November 2017, 22:09:16
Zitat von: juergs am 07 November 2017, 21:18:14
Das macht nur Sinn wenn die Werte generell vergleichbar wären. Ich glaube [ppm] ist da Aussage-kräftiger.
Ja, wenn wir wüssten, wie sich der Widerstand in ppm umrechnet.
Aber vielleicht ist das ja gar nicht möglich, siehe unten.

Zitat von: juergs am 07 November 2017, 21:18:14
Worauf basiert Deine Lösung?
https://www.bosch-sensortec.com/bst/products/all_products/bsec

Zitat von: juergs am 07 November 2017, 21:18:14
Wegen dem CSV-Format würde ich für einen Standard plädieren, sonst muss man jedesmal umbauen ... oder Skripte dafür schreiben...  :'(
Ich kenne mindestns zwei, die das ins Log-Format von FHEM bringen wollen, das klappt mit dem aktuellen Format und dem PeMue-Script prima.

Wenn mir jemand einen Vorschlag für das "Standard-Format" macht, dann mache ich gerne auch eine zweite Version, die die Daten in diesem Format liefert.

Zitat von: juergs am 07 November 2017, 21:18:14
dazu muss ich es schaffen den Resistance-Wert des BMEs zu glätten
Ich würde vorerst nichts glätten. Die realen Werte sind erst mal interessanter. Hatte gerade zu Beginn vom Lüften einen heftigen IAQ-Peak nach oben (also schlechter) und so etwas sollte man erst mal sehen und verstehen und nicht glattrechnen.

Dieser Satz aus der Bosch-Doku gibt mir zu denken:
ZitatIndoor-air-qualiy estimate [0-500]. Indoor-air-quality (IAQ) gives an indication of the relative change in ambient TVOCs detected by BME680.
Will Bosch uns hier mitteilen, dass es gar keinen Absolutwert gibt sondern nur die Information, ob es besser oder schlechter wird?

Und:
ZitatNote
The IAQ scale ranges from 0 (clean air) to 500 (heavily polluted air). During operation, algorithms automatically calibrate and adapt
themselves to the typical environments where the sensor is operated (e.g., home, workplace, inside a car, etc.).This automatic background calibration ensures that users experience
consistent IAQ performance. The calibration process considers the recent measurement history (typ. up to four days) to ensure that IAQ=25 corresponds to typical good air and IAQ=250 indicates typical polluted air.
Somit ist dann IAQ=25 der beste und IAQ=250 der schlechteste reale Wert, der in den vier Tagen zufällig auftrat, was auch immer das dann konkret war?
Wenn ich das jetzt nicht völlig falsch interpretiere, dann ist die Aussagekraft der IAQ sehr begrenzt, um es mal Bosch-freundlich zu formulieren.

Anbei wie versprochen das binary.

Und das Chart mit dem Rest des heutigen Tages. Das gibt mir auch Rätsel auf.
Aber es kann ja noch realistisch werden, wenn die vier Tage rum sind  :)

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 07 November 2017, 22:14:00
ZitatWenn mir jemand einen Vorschlag für das "Standard-Format" macht, dann mache ich gerne auch eine zweite Version, die die Daten in diesem Format liefert.
Dachte da eher an Excel-freundlich als Rohdaten ohne redundante String-Info ...

Aber kein Problen, dann wndle ich die CSV-Daten vorher um ...  ;)

ZitatUnd das Chart mit dem Rest des heutigen Tages. Das gibt mir auch Rätsel auf.
Dann brauchen wir auch noch eine Meßwert-Interpretationsliste ...

Aber wie beim iAQ-core. Hohe Flankensteilheit der Temperaturwerte, sowohl nach oben als auch nach unten sind Gift für die Messungen
bzw. Kompensation  ...

Bei mir ist lange etwa gleiches Temperaturverhalten bis zum Gradienten, dann reagiert der iAQ wieder etwas sensibel
und braucht recht lange um sich aus der Situation zu erholen (fast 1 Stunde !).
Der BME aber komischerweise nicht so stark wie bei Dir, abgesehen von den Ausreißern, die noch beseitigt werden müssen ...

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: blehnert am 08 November 2017, 15:08:39
Hallo Zusammen,
@HCS: zunächst mal danke für die FWs.
anbei mal drei (unaufbereitete) Logs der BME680 mit den FWs von HCS.

bme680Sensor_war_neu_FW_HCS20171020.txt : seinerzeit jungfräulicher Sensor mit der HCS-FW vom 30.10., Sensor lief ca sechs Tage ohne Unterbrechung.
bme680Sensor_alt_FW_HCS20171107.txt : derselbe Sensor nun mit der HCS-FW vom 07.11. (läuft jetzt seit einer Std)
bme680Sensor_neu_FW_HCS20171107.txt : jungfräulicher Sensor mit HCS-FW vom 07.11. (zeitgleich gestartet mit dem zweiten)

Bemerkenswert für mich die Korrelation zwischen 2. und 3. betr. Temp, Hum und Pressure, zum Rest kann ich nix sagen.
Werde die Sensoren mal drei/vier Tage ununterbrochen laufen lassen und die Logs dann anhängen.

Hoffe, ich kann so ein bisschen helfen,

danke,

Bernd
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 08 November 2017, 20:07:10
Hallo Bernd,

anbei erstmal (..aus Zeitmangel), meine fhem-log-Datei (leider noch mit Ausreißer) .
Der bearbeitete Rest folgt noch ...

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 08 November 2017, 20:52:51
Zitat von: HCS am 07 November 2017, 22:09:16
Anbei wie versprochen das binary.
Vielen Dank, rennt seit ca. 20 Minuten (TS: 1140) und hängt die Daten an die vorigen ran. Irgendwie hat mein gplot noch Schwierigkeiten mit der Feuchte, warum auch immer. Gestern ist auch das BlueDot Modul gekommen. Ich gehe mal davon aus, dass die Firmware keinen RFM69CW braucht, um zu laufen, oder?
Aber jetzt muss ich erst mal Leiterplatten eintüten  ???

Gruß PeMue
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: blehnert am 08 November 2017, 21:12:07
Hallo PeMue,
habe die FW einfach auf meine NodeMCU Dev V2 geflashed. Sie logen munter über den USB Anschluss (virtueller COM) zum Raspberry (57600),

Bernd
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 08 November 2017, 21:45:44
Hallo PeMue,

ha, auch BlueDot? !  ;D :D
ZitatSo far I didn't manage to calculate the IAQ index (Indoor Air Quality), based on the measured gas resistances.
Die haben einfach die CO2-Messung in Ihrem Beispiel zur  Lib (https://github.com/BlueDot-Arduino/BlueDot_BME680/blob/master/BlueDot_BME680.cpp) weggelassen!
float readGas(void);
  void calculateHotPlateRes(void);
  void calculateHotPlateTime(void);
  void setHotPlateProfile(void);

ist aber im Header vorhanden.

Habe es gerade bei mir in ein nodeMCU eingebunden bekommen.
War doch etwas verwirrt, wo auf dem ESP jetzt endlich I2C heraus kommt, wenn der Standard-Konstruktur ohne Parameter verwendet wird.
In der Doku sind meist verschiedene Ports erwähnt (D-Ports oder GPIOs)   ....
Beim NodeMCU ist es letztendlich doch D1 (SCL) / D2 (SDA) zuständig. Manchmal kommt in der Doku auch D4/D5 vor ....
Dann ist beim Bluedot die Doku noch auf Stand BME280 ...  >:(
Ob nun bei High auf CS die Adresse 0x76 oder 0x77 erscheint... ist auch widersprüchlich angegeben...

Diese Frage beschäftigt mich auch:
ZitatIch gehe mal davon aus, dass die Firmware keinen RFM69CW braucht, um zu laufen, oder?
Ich vermute HCS hat die LaCrosseGateway-Konfiguration genommen mit D1=SCL und D2=SDA ?
Da ich noch kein RFM angeschlossen habe, funktioniert da bei mir noch nichts ...  :'(

Dann werde ich dann doch mein ESP-Compile am Wochenende glattziehen müssen ...
Das Watchdog-Problem lässt sich wirklich durch mehr oder weniger geschickte Platzierung von yield() vermeiden  :)

Dann mache ich mal den Steckbrettaufbau RFM-tauglich (https://forum.fhem.de/index.php?action=dlattach;topic=43672.0;attach=41968;image), reicht da ein RFM Modul aus?


@blehnert
ZitatNodeMCU Dev V2 ?


Heute komme ich da nicht weiter .... doch zu viele Baustellen ...

Grüße,
Jürgen


PS: Anbei die BIN  mit dem Output der BlueDot-Lib mit CO2.
D1 = SCL
D2 = SDA
nodeMCU-Belegung. Analog zum ESP12E-Modul.

 
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 08 November 2017, 22:47:11
Zitat von: juergs am 08 November 2017, 21:45:44
Die haben einfach die CO2-Messung in Ihrem Beispiel zur  Lib (https://github.com/BlueDot-Arduino/BlueDot_BME680/blob/master/BlueDot_BME680.cpp) weggelassen!
Wie alle anderen auch ...

Zitat von: juergs am 08 November 2017, 21:45:44
Ich vermute HCS hat die LaCrosseGateway-Konfiguration genommen mit D1=SCL und D2=SDA ?
Richtig vermutet, er hat.
Und ein RFM69 ist nicht erforderlich.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 08 November 2017, 22:55:05
@HCS
ich kann zwar die I2C Zugriffe sehen, aber es kommt nichts über die Serielle  :-\
115200 und 57600 Baud als Bitrate, kommen keine Werte ...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: blehnert am 08 November 2017, 23:03:31



Zitat von: juergs am Heute um 21:45:44

Ich vermute HCS hat die LaCrosseGateway-Konfiguration genommen mit D1=SCL und D2=SDA ?


Richtig vermutet, er hat.
Und ein RFM69 ist nicht erforderlich.

Und fürs Bluedot mit HCS-FW gilt:

SCL=SCK=D1
SDA=SDI=D2
CS=high (enable i2c)
SD0=low (0x76)

so läufts jedenfalls bei mir,

Bernd


Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 09 November 2017, 06:56:46
Hallo Bernd,

Die Adresse 0x76 ist der Knackpunkt gewesen....  ;)
Beim BlueDot kann man CS für high unbeschalten lassen.
Im Code hätte man nachschauen können..... Schade, hätte Zeit sparen können.  :'(


Danke!
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 09 November 2017, 11:13:41
Zitat von: juergs am 09 November 2017, 06:56:46

Die Adresse 0x76 ist der Knackpunkt gewesen....  ;)
Beim BlueDot kann man CS für high unbescholten lassen.
Hab von Anfang an den BlueDot gehabt, war bei mir auch das ,,Problem" mit der Adresse 0x76,
die Doku hatte mich aber schnell drauf gebracht. Hab gestern noch 2 Stück von A...n dazu bekommen.
Im Moment versuche ich, die Bibliotheken in Arduino einzubinden um das ganze mal mit z.B. dem CustomSensor Protokoll über einen RFM69 zu versenden. KeyValueProtokoll geht ja nur seriell am LGW.
Hab nur recht begrenzt Zeit  :(
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: blehnert am 10 November 2017, 13:01:32
kleiner Zwischenstand nach zwei Tagen:

BME680"alt":
TS: 170040 T: 21.6 H: 46.2 P: 985.9 Gas: 156250 IAQ: 242 HT: 320 HD: 197 AC: 3
TS: 170100 T: 21.6 H: 46.1 P: 985.9 Gas: 156396 IAQ: 242 HT: 320 HD: 197 AC: 3
TS: 170160 T: 21.6 H: 46.2 P: 985.9 Gas: 155093 IAQ: 246 HT: 320 HD: 197 AC: 3
TS: 170220 T: 21.7 H: 46.2 P: 985.8 Gas: 155959 IAQ: 242 HT: 320 HD: 197 AC: 3
TS: 170280 T: 21.7 H: 46.2 P: 985.8 Gas: 154094 IAQ: 249 HT: 320 HD: 197 AC: 3
TS: 170340 T: 21.7 H: 46.1 P: 985.9 Gas: 155669 IAQ: 243 HT: 320 HD: 197 AC: 3

BME680"neu":
TS: 169860 T: 21.5 H: 44.7 P: 985.6 Gas: 96653 IAQ: 230 HT: 320 HD: 197 AC: 3
TS: 169920 T: 21.5 H: 44.7 P: 985.5 Gas: 97725 IAQ: 224 HT: 320 HD: 197 AC: 3
TS: 169980 T: 21.6 H: 44.7 P: 985.6 Gas: 96821 IAQ: 229 HT: 320 HD: 197 AC: 3
TS: 170040 T: 21.6 H: 44.8 P: 985.5 Gas: 95879 IAQ: 233 HT: 320 HD: 197 AC: 3
TS: 170100 T: 21.7 H: 44.7 P: 985.5 Gas: 96209 IAQ: 232 HT: 320 HD: 197 AC: 3
TS: 170160 T: 21.7 H: 44.6 P: 985.5 Gas: 96933 IAQ: 228 HT: 320 HD: 197 AC: 3


IAQ scheinen sich einander anzupassen, Gas auch ein wenig...
schaun wir mal weiter.
Sensoren sind unmittelbar nebeneinander,

Bernd
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 10 November 2017, 13:12:37
Zitat von: blehnert am 10 November 2017, 13:01:32
kleiner Zwischenstand nach zwei Tagen
Solltest jetzt doch mal lüften ...  ;D ;D
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: blehnert am 10 November 2017, 14:25:45
dachte, ich soll vier Tage garnix machen  :P

also Lüften startet "alt" TS:174240 und endet 174720 ("neu" hat TS Offset von -180):

alt:
TS: 174240 T: 21.9 H: 47.1 P: 985.5 Gas: 157129 IAQ: 218 HT: 320 HD: 197 AC: 3
TS: 174300 T: 21.9 H: 47.1 P: 985.5 Gas: 158019 IAQ: 215 HT: 320 HD: 197 AC: 3
TS: 174360 T: 21.6 H: 47.2 P: 985.6 Gas: 162464 IAQ: 202 HT: 320 HD: 197 AC: 3
TS: 174420 T: 20.3 H: 48.1 P: 985.5 Gas: 183864 IAQ: 140 HT: 320 HD: 197 AC: 3
TS: 174480 T: 19.3 H: 49.3 P: 985.5 Gas: 196906 IAQ: 101 HT: 320 HD: 197 AC: 3
TS: 174540 T: 19.0 H: 49.6 P: 985.5 Gas: 208367 IAQ: 67 HT: 320 HD: 197 AC: 3
TS: 174600 T: 18.5 H: 50.7 P: 985.5 Gas: 213361 IAQ: 54 HT: 320 HD: 197 AC: 3
TS: 174660 T: 18.4 H: 50.9 P: 985.5 Gas: 214613 IAQ: 48 HT: 320 HD: 197 AC: 3
TS: 174720 T: 18.7 H: 50.2 P: 985.5 Gas: 217160 IAQ: 43 HT: 320 HD: 197 AC: 3
TS: 174780 T: 18.9 H: 49.9 P: 985.4 Gas: 217160 IAQ: 43 HT: 320 HD: 197 AC: 3
TS: 174840 T: 19.2 H: 49.2 P: 985.4 Gas: 215737 IAQ: 47 HT: 320 HD: 197 AC: 3
TS: 174900 T: 19.5 H: 48.4 P: 985.5 Gas: 217734 IAQ: 43 HT: 320 HD: 197 AC: 3
TS: 174960 T: 19.9 H: 47.7 P: 985.5 Gas: 216020 IAQ: 49 HT: 320 HD: 197 AC: 3

neu:
TS: 174060 T: 21.9 H: 45.5 P: 985.2 Gas: 97611 IAQ: 218 HT: 320 HD: 197 AC: 3
TS: 174120 T: 21.9 H: 45.6 P: 985.2 Gas: 97725 IAQ: 217 HT: 320 HD: 197 AC: 3
TS: 174180 T: 21.7 H: 45.9 P: 985.2 Gas: 100420 IAQ: 203 HT: 320 HD: 197 AC: 3
TS: 174240 T: 20.5 H: 46.2 P: 985.2 Gas: 120504 IAQ: 110 HT: 320 HD: 197 AC: 3
TS: 174300 T: 19.6 H: 47.2 P: 985.0 Gas: 134107 IAQ: 49 HT: 320 HD: 197 AC: 3
TS: 174360 T: 19.1 H: 47.9 P: 985.2 Gas: 143654 IAQ: 16 HT: 320 HD: 197 AC: 3
TS: 174420 T: 18.7 H: 48.8 P: 985.2 Gas: 150494 IAQ: 5 HT: 320 HD: 197 AC: 3
TS: 174480 T: 18.5 H: 49.3 P: 985.1 Gas: 152550 IAQ: 11 HT: 320 HD: 197 AC: 3
TS: 174540 T: 18.7 H: 48.7 P: 985.1 Gas: 152273 IAQ: 25 HT: 320 HD: 197 AC: 3
TS: 174600 T: 18.9 H: 48.3 P: 985.1 Gas: 150901 IAQ: 32 HT: 320 HD: 197 AC: 3
TS: 174660 T: 19.2 H: 47.6 P: 985.1 Gas: 151859 IAQ: 30 HT: 320 HD: 197 AC: 3
TS: 174720 T: 19.6 H: 46.9 P: 985.1 Gas: 150224 IAQ: 36 HT: 320 HD: 197 AC: 3
TS: 174780 T: 19.8 H: 46.3 P: 985.1 Gas: 147968 IAQ: 44 HT: 320 HD: 197 AC: 3

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 12 November 2017, 21:34:13
Auch eine Variante (SW+HW):
https://github.com/closedcube/ClosedCube_BME680_Arduino
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: blehnert am 13 November 2017, 17:35:30
So, anbei die Logs der beiden bme680.

Beide Sensoren haben die letzten sechs Tage ununterbrochen Seite an Seite verbracht.
Die Logs sind nicht aufbereitet und entstammen der HCS-FW vom 06.11.

"alt" bedeutet: der Sensor war zuvor schon einige Tage in Betrieb, wurde aber natürlich neu gestartet.
"neu" bedeutet: der Sensor war (bei mir) noch nie in Betrieb.
Sensor "neu" wurde drei Min. später gestartet, daher TimeStamp offsett 180.

Grüße, Bernd
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 13 November 2017, 19:34:28
ich habe mal "versucht" bestimmte Kurven-Abschnitte zu kategorisieren.
(Danke @blehnert für die bereitgestellten Daten.)
Ich kann im Moment folgendes Verhalten zwischen IAQ und rel. CO2-Wert erkennen
(trotz Auseinanderlaufen der X-Sklalierung):

1. der CO2-Wert lässt durchaus stabile Zonen mit steitiger Steigung erkennen.
2. Temperatur-Differenzen haben einen destabilisierenden Einfluß. (Mit und ohne Lüften...)
3. Temperatur-Einfluß für sich muss nochmal separat (https://www.youtube.com/watch?v=SLcUALXZcLY) betrachtet werden (am besten bei konstanter CO2-Menge).

Ansonsten sieht das nach einer Skalierung und  Spiegelung der Y-Achsenwerte um einen abschnittsweisen Median aus?
(In Annäherung an einen möglichen Algorithmus für CO2 -> IAQ).
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 14 November 2017, 08:52:09
Die Kurve in SVG_CUL_TX_92 soll CO2 in ppm sein. Die liegt irgendwo bei 50ppm, was eigentlich nicht sein kann, da man selbst draußen in frischer Landluft schon mindestens 400ppm CO2 hat.

In  SVG_CUL_TX_91 ist die Y-Achse "CO2 rel in Ohm"
Der Widerstand beim BME680 ist aber definitiv nie in Bereich von 30 Ohm. Eher irgendwo zwischen 2000 Ohm und 10000 Ohm.


Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 14 November 2017, 08:58:52
ZitatDie Kurve in SVG_CUL_TX_92 soll CO2 in ppm sein. Die liegt irgendwo bei 50ppm, was eigentlich nicht sein kann, da man selbst draußen in frischer Landluft schon mindestens 400ppm CO2 hat.

In  SVG_CUL_TX_91 ist die Y-Achse "CO2 rel in Ohm"
Der Widerstand beim BME680 ist aber definitiv nie in Bereich von 30 Ohm. Eher irgendwo zwischen 2000 Ohm und 10000 Ohm.

Das sind einfach "Anpassungen" an das LaCrosse-Protokoll, welches nur einen eingeschränkten Wertebereich übertragen kann ...
Müsste es dann in FHEM wieder zurückrechnen ....  ;)   
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 14 November 2017, 09:01:53
Zitat von: juergs am 14 November 2017, 08:58:52
Müsste es dann in FHEM wieder zurückrechnen ....  ;)
Und wieviel sind die 50ppm dann wirklich?
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: blehnert am 14 November 2017, 09:55:37
Wie erklärt Ihr Euch die Unterschiede zwischen den beiden Sensoren? Hätte noch einen dritten jungfräulichen.
Wenn ich mit Messungen unterstützen kann, sagt bitte was ich tun soll.

Grüße, Bernd
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 14 November 2017, 10:23:05
Zitat von: blehnert am 14 November 2017, 09:55:37
Wenn ich mit Messungen unterstützen kann, sagt bitte was ich tun soll.
Es wäre hilfreich, charts zu erzeugen (logfile wie von PeMue beschrieben für FHEM produzieren) und diese zu kommentieren, was bei Änderungen der IAQ zu demZeitpunkt passiert ist oder wo Du der Ansicht bist, dass die Werte nicht mir der Realität übereinstimmen.

Im Anhang ein Beispiel.
Der Sensor steht im Arbeitszimmer, die Tür zum Schlafzimmer ist fast immer offen, um die Ecke geht es zu einem Badezimmer.
Muss jetzt wohl mein Leben offenlegen  :o ;D ;D
Um 00:00 in Bett gegangen, um 07:30 sind wir aufgestanden und haben geduscht. Danach kurz gelüftet. Ab 08:15 war bis 19:30 niemand da (außer die Katze vielleicht mal)
Und nun frage ich mich: warum wird nach dem Lüften, wenn dann keiner mehr da war, die IAQ erst mal schlechter?
Und warum wurde sie nachts erst kurz schlechter und dann wieder besser?
Und wie stark geht die Luftfeuchtigkeit ein? Eigentlich uinteressiert mich, wie hoch der Schadstoffgehalt in der Luft ist. Ob sie mir zu trocken ist, beurteile ich lieber separat mit einem Hygrometer.

Ich bekomme die Kurven noch nicht so recht in Einklang mit dem, was sich im Haus abspielt.
ich will nicht völlig ausschließen, dass die Luftqualität wirklich diesen Verlauf hat aber seltsam ist es.
Darum wäre es hilfreich wenn Du auch so vorgehen würdest, also Kurven produzieren und dazu beschreiben, wie es mit dem realen Leben übereinstimmt.

Den Zusammenhang zwischen gemessenem Widerstand und IAQ zu ergründen ist dann nochmal ein ganz anderes Thema.

Die Daten der "HCS-FW" werden übrigens von den original Bosch-Routinen incl. der geheimen libalgobsec.a IAQ-Formel geliefert, da kommt also genau das raus, was Bosch sich als IAQ vorgestellt hat.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 14 November 2017, 17:40:51
ZitatUnd wieviel sind die 50ppm dann wirklich?
Der iAQ-core kann 450-2000 ppm CO2 equivalents und 125-600 ppb TVOC equivalents messen.
Für den CO2-Wert dividiere ich durch 10. Das passt zwar nicht komplett mehr in den oberen Werten ...
reicht aber erst mal für diesen Anwendungsfall. Für TVOC wird ebenfalls durch 10 dividiert.

Für den BME, um in den Wertebereich von [-40..120] zu kommen:
LaCrosse.t = (float) bme680_gas / 10000;

Anmerkung von hier (https://www.allaboutcircuits.com/projects/build-an-arduino-ble-enabled-air-quality-monitor/):
ZitatThe iAQ-Core indoor air quality sensor module is the heart of the project and is used to provide CO2 and total volatile organic compounds (TVOC) equivalent predictions. The sensing range from the datasheet is as follows: 450-2000 ppm CO2 equivalents and 125-600 ppb TVOC equivalents. "Equivalents" are somewhat vague units and are not defined as well as I would have liked.

From doing a little background reading, it seems like a CO2 equivalent unit includes CO2 and other "greenhouse" gasses, apparently scaled to a property of CO2. TVOC equivalent units also appears to be a somewhat vague measure. It seems that there are a number of compounds considered to be VOCs with particular relevance to indoor air quality and these are totaled and expressed as some standardized measure.

In all fairness, I have seen the use of these "equivalent" units on several commercial indoor air monitors. Still, I would have liked to have seen a more rigorous definition.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 14 November 2017, 17:45:06
Zitat von: juergs am 14 November 2017, 17:40:51
Der iAQ-core kann 450-2000 ppm CO2 equivalents und 125-600 ppb TVOC equivalents messen.
OK, aber wieviel ist es denn in Deinem Chart, das Du angehängt hast, wenn die Kurve bei 50ppm lang läuft, tatsächlich?
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 14 November 2017, 17:48:41
500?

iAQ-core nach dem Einschalten:

*** Running.

CO2 [ppm] , resistance, TVOC

450;1820;125
450;1820;125
450;1820;125
450;1820;125
450;1820;125
450;11964;125
450;11964;125
450;11964;125
450;11964;125
450;11964;125
450;17046;125
450;17046;125
450;17046;125
450;17046;125
450;17046;125
450;19358;125
450;19358;125
450;19358;125


909;2205;252
909;2205;252
909;2205;252
[462.79] Timer-Interrupt!   = LaCrosse senden.
[462.79] CO2: 90.90 TVOC: 25.20
909;2205;252
909;2205;252
909;2205;252
909;2205;252
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 14 November 2017, 18:16:59
BME680: CO2 gespiegelt an der X-Achse, im Vergleich zu BME-IAQ.
Der zweite Screenshot war der Versuch den Offset und die Skalierung des CO2-Wertes
anzupassen. Man sieht aber deutlich, die Kurven bei Skalierung mit konstantem Faktor nicht 100%ig übereinstimmen.

Überlegungen:

1.) Spiegelung wäre einfach, dann aber den Korrektur-Offset herauszufinden ...
     (Mittelwert, Median oder doch immer konstanter Offset ....)

2.) Dann die Skalierung in den IAQ-Bereich .... dann  Temperatur, Luftdruck + Luftfeuchtekompensation.

Ideen, Vorschläge?
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: sebswed am 15 November 2017, 08:17:44
Ich habe dieses Thema mit Hilfe von Google translate verfolgt und nutze es auch, um hier zu antworten. Ich habe 2 Module, die ich von Pimoroni gekauft habe. Ich bin kein Experte, aber ich bin bereit, bei jedem Test zu helfen. Ich habe ein unbenutztes Modul und eines, das ich ein paar Tage benutzt habe. Das ist das einzige Thema, das ich finden konnte, das wirklich lebendig ist. Ein weniger lebhaftes Thema findet sich hier https://github.com/DFRobot/DFRobot_BME680/issues/5
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 15 November 2017, 19:18:59
Hello sebswed,

thank you, for joining us and politely translating to german...  :)

You are welcome!

Pointing out to the new BCE-capable dfrobot-Lib (https://github.com/DFRobot/DFRobot_BME680) was great.  :D :D :D
They had done that special job, that Bosch was not doing so far ...

bme680 test
[55.00] T: 23.04| rH: 40.21| P: 101374.80| IAQ: 0.00 (0) | gas: 3993.10
[3055.00] T: 22.32| rH: 41.17| P: 101369.15| IAQ: 0.00 (0) | gas: 4278.49
[6055.00] T: 22.30| rH: 40.80| P: 101370.21| IAQ: 0.00 (0) | gas: 4699.27
[9055.00] T: 22.27| rH: 40.54| P: 101369.99| IAQ: 0.00 (0) | gas: 5114.61
[12055.00] T: 22.27| rH: 40.28| P: 101368.87| IAQ: 0.00 (0) | gas: 5538.87
[15055.00] T: 22.26| rH: 40.11| P: 101367.79| IAQ: 0.00 (0) | gas: 5923.12


Now i was able to compile the BCE-Code completely and at the same time realized how my nodeMCU
is ticking against a new flashed Firmware.  Apparently it is not sufficient to reset the the device,
but also necessary to do a cold reset:
After compile and flashing by Arduino IDE with DTE-soft-reset,  only "bme test" from setup-function is appearing through serial monitor and nothing else -> hang + WDT-error.
After switching off and on power supply (usb) the program is running surprisingly how expected....

So that's the difference, why HCSs-Binary apparently  was not running at my system,
not having noticed enough this circumstance ... my fault! (ESP newbie + sorry HCS)   :'(

I2C-Address for this LIB is 0x77 by leaving SDO open on my BlueDot-breakout-board. (Otherwise SDO connected to GND will be 0x76.)

... passing some time, IAQ is appearing:
[267057.00] T: 22.24| rH: 38.77| P: 101368.09| IAQ: 0.00 (0) | gas: 14137.41
[294058.00] T: 22.23| rH: 38.47| P: 101366.61| IAQ: 0.00 (0) | gas: 14330.94
[297058.00] T: 22.23| rH: 38.38| P: 101368.09| IAQ: 0.00 (0) | gas: 14321.14
[300058.00] T: 22.23| rH: 38.37| P: 101368.63| IAQ: 25.00 (3) | gas: 14340.75
[303058.00] T: 22.22| rH: 38.37| P: 101366.02| IAQ: 19.61 (3) | gas: 14429.70
[306058.00] T: 22.22| rH: 38.41| P: 101367.09| IAQ: 25.00 (3) | gas: 14370.28
[309058.00] T: 22.23| rH: 38.47| P: 101366.72| IAQ: 25.67 (3) | gas: 14350.58
[312058.00] T: 22.23| rH: 38.54| P: 101369.59| IAQ: 23.93 (3) | gas: 14380.15
[315058.00] T: 22.24| rH: 38.57| P: 101368.81| IAQ: 25.00 (3) | gas: 14370.28
[318058.00] T: 22.24| rH: 38.58| P: 101369.83| IAQ: 23.47 (3) | gas: 14409.84
[321058.00] T: 22.23| rH: 38.48| P: 101366.20| IAQ: 25.00 (3) | gas: 14419.77


... and i can imagine, why this behavior would happen .... initially filling up a complete ringbuffer with data for further
analysis ...

Ok, some little error-corrections are needed, regarding airpressure... and this

[1035072.00] T: 22.63| rH: 38.59| P: 101354.81| IAQ: 26.44 (3) | gas: 17105.80
[1038072.00] T: 22.64| rH: 38.56| P: 101354.08| IAQ: 27.47 (3) | gas: 17091.84
[1041072.00] T: 22.63| rH: 38.55| P: 101353.67| IAQ: 25.00 (3) | gas: 17147.83

ets Jan  8 2013,rst cause:4, boot mode:(3,7)

wdt reset
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
vf6d232f1
~ld


bme680 test
[57.00] T: 22.58| rH: 38.81| P: 101356.97| IAQ: 0.00 (0) | gas: 15934.17
[3057.00] T: 22.62| rH: 38.74| P: 101354.65| IAQ: 0.00 (0) | gas: 16031.78
[6057.00] T: 22.64| rH: 38.67| P: 101355.83| IAQ: 0.00 (0) | gas: 16230.62


regards,
Juergen

 
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 15 November 2017, 20:15:51
Oh, da ist mir jemand für den MapleMini zuvorgekommen ...  ;)


indoor-air-quality-iaq-measurement-with-bosch-bme680-and-stm32f103c8t6/ (https://wolfgangklenk.wordpress.com/2017/11/05/indoor-air-quality-iaq-measurement-with-bosch-bme680-and-stm32f103c8t6/)


Mit ein paar wertvollen Hinweisen ...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 15 November 2017, 21:16:10
Der Einfluss der Luftfeuchte scheint stärker gewichtet zu sein wie den der Temperatur. (CO2, nicht der IAQ-Wert).
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 19 November 2017, 12:17:06
Zum Aufpeppen der ESP-BME680-Ergebnisse als Grundlage/Anregung:
wlan-lufttemperatur-und-feuchte-logger-mit-grafischer-darstellung-fuer-esp8266/ (https://blog.thesen.eu/wlan-lufttemperatur-und-feuchte-logger-mit-grafischer-darstellung-fuer-esp8266/)
https://github.com/G6EJD/ESP8266-Autonomous-Graphing-Data-Logger (https://github.com/G6EJD/ESP8266-Autonomous-Graphing-Data-Logger)
oder diese Controls:
SteelSeries-Canvas (https://github.com/vsky279/SteelSeries-Canvas)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 20 November 2017, 20:12:10
Nach einigen Versuchen ist mir der Compile für den MapleMini STM32 ARM M3  ebenfalls gelungen:

*** Setup Bosch Maple
*** bsec_iot_init
[2509.00] T: 22.21| rH: 39.76| IAQ: 0.00 (0)
[5509.00] T: 22.22| rH: 39.75| IAQ: 0.00 (0)
[8509.00] T: 22.21| rH: 39.78| IAQ: 0.00 (0)
[11509.00] T: 22.20| rH: 39.78| IAQ: 0.00 (0)


[284509.00] T: 22.35| rH: 39.67| IAQ: 0.00 (0)
[287509.00] T: 22.35| rH: 39.68| IAQ: 0.00 (0)
[290509.00] T: 22.35| rH: 39.69| IAQ: 0.00 (0)
[293509.00] T: 22.35| rH: 39.70| IAQ: 0.00 (0)
[296509.00] T: 22.35| rH: 39.69| IAQ: 0.00 (0)
[299509.00] T: 22.35| rH: 39.68| IAQ: 0.00 (0)
[302509.00] T: 22.34| rH: 39.69| IAQ: 0.00 (0)
[305509.00] T: 22.35| rH: 39.70| IAQ: 25.00 (3)
[308509.00] T: 22.36| rH: 39.68| IAQ: 25.00 (3)
[311509.00] T: 22.35| rH: 39.71| IAQ: 25.00 (3)
[314509.00] T: 22.35| rH: 39.70| IAQ: 25.17 (3)
[317509.00] T: 22.35| rH: 39.70| IAQ: 25.28 (3)
[320509.00] T: 22.35| rH: 39.69| IAQ: 25.31 (3)
[323509.00] T: 22.35| rH: 39.69| IAQ: 25.31 (3)
[326509.00] T: 22.35| rH: 39.67| IAQ: 25.30 (3)
[329509.00] T: 22.35| rH: 39.68| IAQ: 25.38 (3)

[5558509] T: 22.59| rH: 40.09| IAQ: 248.11 (3)
[5561509] T: 22.60| rH: 40.09| IAQ: 247.76 (3)

Dann erwarte ich mal die OLED-Displays...  :)


ZitatC:\Users\<user>\Documents\Arduino\hardware\Arduino_STM32/tools/win/maple_upload.bat COM6 1 1EAF:0003 <path>bme680__BSEC_Bosch_Maple[0x77].ino.bin
I2C1 mit PIN 15 SDA und PIN16 SCL
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 20 November 2017, 22:26:06
So, da bin ich mal wieder. Hab einiges geschafft, letzte Woche, mein Sensor läuft, samt Anbindung an FHEM  :D
Protokoll: CustomSensor, sendet auf 868,3 MHz über RFM69CW. Musste "nur" noch das Modul 36_CustomSensor.pm
erstellen  :o Das hat mich doch etwas aufgehalten  :-[ Aber es läuft erstmal. Jetzt kann ich mal ein wenig loggen ...
Anbei mal ein paar Impressionen  8)

Gruß Thomas

P:S: Das Log ist noch "etwas komisch" am Anfang, ist noch vom testen, aber ich wollte es Euch nicht vorenthalten  ;)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 21 November 2017, 23:23:05
So, hier kurz das Log von heute...
Kurz vor sieben gings los, aufstehen. Im Nachbarraum Fenster geöffnet.
Kurz vor acht, Fenster wieder zu. Dann kaum Bewegung im Raum, alle Türen offen.
Von 16 -20 Uhr wieder etwas Bewegung. 20 Uhr dann kurz lüften im Nachbarraum,
diesmal geht der IAQ nach unten ?!
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 22 November 2017, 12:14:34
Hallo hdgucken,

ZitatProtokoll: CustomSensor, sendet auf 868,3 MHz über RFM69CW.
könntest bitte zu Deinem verwendeten Protokoll "CustomSensor" nähere Angaben machen?

Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 23 November 2017, 00:57:22
Na klar  ;)
Der Aufbau ist so:

OK CC  ID  T1 T2  HH  P1 P2  I1 I2  L1 L2  UB  G1 G2 G3 CRC     

100er + 10er bedeutet linkes Nibble 100er, rechtes Nibble 10er usw. (BCD Code) !

OK CC - fest für CustomSensor Protokoll
ID - Sensor ID (0-FF)
T1 - (Temp + 40 * 10): 100er
T2 - (Temp + 40 * 10): 10er + 1er
HH - humidity 1-99
P1 - pressure = 1000er + 100er                                   
P2 - pressure = 10er + 1er
I1 - IAQ = 100er
I2 - IAQ = 10er + 1er
L1 - LightLevel = 1000er + 100er
L2 - LightLevel = 10er + 1er
UB - BatteryVoltage * 10 = (0-255; 3,3V = 33)
G1 - gas resistance = 100.000er + 10.000er
G2 - gas resistance = 1.000er + 100er
G3 - gas resistance = 10er + 1er
CRC - crc byte

IAQ muss ich evtl. noch auf 100er, 10er und 1er Stelle ändern.
erledigt  ;)

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 29 November 2017, 18:31:20
Neue BSEC LIb ist verfügbar mit weiteren Controller-Libs:
https://www.bosch-sensortec.com/bst/products/all_products/bsec (https://www.bosch-sensortec.com/bst/products/all_products/bsec)

Inklusive Raspi und 8Bit-AVR-Support:
AVR_8bit AVR-GCC 41k 1k MegaAVR, XMEGA

Z.B. AVR-XMEGA mit Oled:
https://www.element14.com/community/docs/DOC-71436 (https://www.element14.com/community/docs/DOC-71436)

und Arduino-Integration: Xmegaduino (https://github.com/Xmegaduino/Xmegaduino)

Hier gibt es weitere Anleitungen  BSEC Library Version 1.4.5.1 vom 16.11.2017:
bme680-mit-nodemcu-an-ttn (https://www.bjoerns-techblog.de/2017/11/bme680-mit-nodemcu-an-ttn/) in LoRaWAN (https://www.bjoerns-techblog.de/2017/08/lorawan-gateways-fuer-ttn-eine-uebersicht/)-Ausführung.
uftguetesensor-mit-bme680-und-mh-z14a (https://www.bjoerns-techblog.de/2017/11/luftguetesensor-mit-bme680-und-mh-z14a/) 

In puncto 8Bit-Controller eine interessante Alternative zur Berechnung/Bewertung des Widerstandwertes ohne BSEC-Lib
unter Einbeziehung von Temperatur und Luftfeuchte: BME680-Example (https://github.com/G6EJD/BME680-Example)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 30 November 2017, 22:02:13
Schöne Korrelation zwischen Widerstand-Reading BME und CO2-Wert AMS-iAQ-core.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: SusisStrolch am 01 Dezember 2017, 06:27:52
Welche Einheit/Skalierung haben die Werte?
BME in kOhm? Und IAQ-Core?
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 01 Dezember 2017, 08:39:21
Hier meine Aufzeichnung von gestern, die Spitzen sind evtl. "heftige Luftbewegungen" in der Nähe des Sensors,
können aber auch von FHEM Neustarts stammen, bin noch am arbeiten mit "Firmata" und dem ESP8266. Auch nicht ganz unproblematisch  :)

Hab noch ein kleines Problemchen mit der Übertragung beim CC-Protokoll:
Ab und zu gibt es CRC-Fehler. Obwohl mein Sensor wirklich alle Werte korrekt verarbeitet und auch richtig an den RFM69 übergibt, kommen am LGW einige Pakete mit CRC Fehler raus.
Bin schon am suchen, auch im LGW Code, konnte aber bisher nichts verdächtiges finden. Vielleicht gehen Sie ja auch "over the air" verloren.
Aber im großen und ganzen funktioniert es sehr gut.
Wenn jemand Interesse am Quellcode hat, einfach bescheid sagen  ;)

@PeMue: Meine Platinen sind gestern angekommen, vielen Dank !!!

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 01 Dezember 2017, 09:41:52
Hallo Thomas,

"Bescheid"  ;) :D :D :D ;D

Habe mir mal einige RFMs bestellt  ;)

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 01 Dezember 2017, 09:52:25
@SusisStrolch
ich benutze ja OOK mit dem LaCrosse Protokoll zum Übertragen.
Leider bleibt es bei den Wertigkeiten etwas beschränkt, so dass ich die Orginalwerte im Moment duch 10 teilen muss.
Bei Werten über 110 gibt es leider noch ein Problem, das ich noch lösen muss.
Als Alternative wäre auch eine Division durch 100 möglich.

Bem iAq sind es CO2- in ppm, beim BME ist es der Resistance-Wert.
Diese Werte sind start Luftfeuchte und Temepratur-Gradientabhängig, so dass man eigentlich nur bei stabilen Rahmenbedingungen
vernünftige Werte zum Auswerten bekommt. Bei starken Delta-T und -HUMs  müsste man über z.B. Standardabweichung oder Varianz
die starken Schwankungen herausrechnen. Der iAQ nimmt Schwankungen in den Rahmenbedingungen eher etwas länger übel.

Die reinen Absolutwerte sind, meiner Meinung nach, eher von geringerem Interessse, sondern eher die Tendenz (Steigung) und das Erreichen von Schwellwerten.

Mal schauen ob ich das in einen kompakten Sensor packen kann...

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 01 Dezember 2017, 19:43:06
Hier dann mal was zum basteln, viel Spaß  ;)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 01 Dezember 2017, 21:47:59
Hallo Thomas,

vielen Dank fürs Teilen.
Bin leider noch in der Warteschleife für die RFMs ....

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 01 Dezember 2017, 22:16:55
Hallo Jürgen,

kein Problem, hoffentlich kommen die RFM's bald  :)
Oder Du kommentierst das Senden und RFM init zum testen mal aus.

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 02 Dezember 2017, 21:03:07
So, war fleißig  :)
Version 1.5 ist fertig, hab die neue Version der BSEC Software eingebunden (Ver. 1.4.5.1 vom 16.11.2017).
Neu ist, daß der IAQ jetzt am Anfang als "25" ausgegeben wird, nach ca. 5,5 Minuten kommen dann die berechneten Werte.

Dann hab ich noch eingebaut, daß man jetzt direkt im Sketch die I2C Adresse des BME680 einstellen kann. Viel bequemer !
Außerdem hab ich noch die fertige Binärdatei zum direkten flashen beigelegt  8) (diese läuft mit Adresse 0x77 !)

Na dann viel Spaß damit !

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 02 Dezember 2017, 21:07:04
So sieht es gleich nach dem Start des Sensors und dann nach gut 5 Minuten aus:
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 03 Dezember 2017, 22:38:06
Der Log von heute sieht irgendwie viel besser aus, die neue Lib scheint "geschmeidiger" zu berechnen,
die Werte springen nicht mehr ganz so schlimm hin und her.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 05 Dezember 2017, 22:10:42
Heute sieht es auch nicht schlecht aus, ganz ordentliche Kurve  :D

Anbei der aktuelle Stand von heute, hab noch ein paar Kleinigkeiten überarbeitet und aktualisiert.
Dieses mal sind auch zwei fertige Binärdateien dabei, einmal mit Adresse 0x76 und einmal 0x77,
beide ohne debug Ausgaben, nur Messwerte.

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 13 Dezember 2017, 23:36:59
Habe die Tage mein Fhem vom RaspberryPi 2 auf einen RaspberryPi 3 übertragen, 
hier nun ein Log vom neuen System :)
Gegen 1:15 ins Bett, 7:00 aufgestanden, gegen 8:15 etwas länger Haustür geöffnet, das
gleiche gegen 10:45. 21:15 - 22:00 mehrere Leute im Raum.
Sieht eigentlich alles sehr plausibel aus, finde ich.

@juergs: sind die RFM's schon eingetroffen, konntest Du schon mal etwas testen ?
              Die können übrigends auch OOK  ;)

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 14 Dezember 2017, 09:46:15
Hallo Thomas,
sind eingetroffen und werden am WoE verbaut.  ;)

HCS's neue LIB-Version liefert bei mir, sagen wir mal etwas "komische"
bzw. schwer zu interpretierende Ergebnisse.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 14 Dezember 2017, 09:50:01
Zitat von: juergs am 14 Dezember 2017, 09:46:15
HCS's neue LIB-Version liefert bei mir, sagen wir mal etwas "komische"
meinst Du damit die Test-Firmware oder die LGW-Beta?
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 14 Dezember 2017, 10:03:50
Hallo HCS,
die LGW-FW mit der Bosch 1.4 BSEC-Lib.

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 14 Dezember 2017, 20:58:06
Hier die Gegenüberstellung iAQ-core-Readings gegen BME-Readings.
Das Verhalten auch gegenüber gegenüber der Bosch-Lib-Vorversion kann ich nicht erklären ...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 14 Dezember 2017, 23:33:35
@Jürgen: sind ganz schöne Sprünge, eigenartig.

Bei mir sah es heute so aus:
(kaum zu Hause gewesen, Werte sind plausibel)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 15 Dezember 2017, 17:01:29
Hallo Thomas,
sieht sehr plausibel und gut aus.

Bei meinem LGW nicht so... Stetigkeit diesmal ok und plausibel, aber der Sprung von 250 auf 50 ... ?
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 15 Dezember 2017, 21:33:06
Zitat von: juergs am 15 Dezember 2017, 17:01:29
Bei meinem LGW nicht so...
Ja, die Kurven, die ich vom LGW bekomme sind auch sehr seltsam. Irgndwie passt da was nicht.
Das ist auf dem LGW aber auch etwas heikel um das Timing vernünftg hinzubekommen.

Zitat von: hdgucken am 14 Dezember 2017, 23:33:35
Bei mir sah es heute so aus:
(kaum zu Hause gewesen, Werte sind plausibel)
Aber eine IAQ von knapp 500, Du müsstest eigentlich direkt umkippen, wenn Du reingehst.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 16 Dezember 2017, 01:45:19
@HCS: Umgekippt bin ich bis jetzt noch nicht ;D
           IAQ ist die rote Kurve, der Wert lag bei max. 259, das ist eigenartigerweise immer dann so hoch, wenn die Haustür etwas länger offen ist !?

Die Kurve von heute sieht auch ganz ordentlich aus (ähm gestern  ;)):
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 16 Dezember 2017, 09:44:27
Zitat von: hdgucken am 16 Dezember 2017, 01:45:19
@HCS: Umgekippt bin ich bis jetzt noch nicht ;D
           IAQ ist die rote Kurve, der Wert lag bei max. 259, das ist eigenartigerweise immer dann so hoch, wenn die Haustür etwas länger offen ist !?
Bei mit ist rot der Widerstand und grün IAQ. Hatte die Beschriftung nicht angeschaut  :-[

Ich habe gestern Abend mal die Test-Firmware von weiter oben auf Bosch 1.4 hochgezogen, da kommen tatsächlich ganz andere Werte als vom LGW.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 16 Dezember 2017, 10:35:28
Zitat von: HCS am 16 Dezember 2017, 09:44:27
Bei mit ist rot der Widerstand und grün IAQ. Hatte die Beschriftung nicht angeschaut  :-[
Kein Problem, hab die Farben gleich geändert, weil irgendwie logischer, wenn die Luftqualität grün dargestellt wird  ;)

Zitat von: HCS am 16 Dezember 2017, 09:44:27
Ich habe gestern Abend mal die Test-Firmware von weiter oben auf Bosch 1.4 hochgezogen, da kommen tatsächlich ganz andere Werte als vom LGW.
Das ist mir auch aufgefallen, als ich auf die neue Bosch 1.4 umgestellt habe, berechnet irgendwie plausiblere Werte. Allerdings auf meinem CC Sensor,
wollte meinen LGW damit nicht weiter belasten  :)

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 16 Dezember 2017, 18:22:31
Ich habe mal versucht meine Ergebnisse der Vergleichsmessungen BME680 mit iAQ-core
gegenüberzustellen.

Die oberen beide Graphen T/H und Resistance eines BME680 (ohne Lib) praktisch die direkten Werte per CUL_TX-Protokoll versendet (ohen Temperatur und Luftdruck-Einfluss).
(Das Protokoll verarbeitet leider nur Werte bis 110)
Die beiden mittleren Graphen zeigt die Messungen eines AMS-iAQ-core .
Der Untere Graph zeigt die Werte des zweiten BME680 an LGW mit Bosch 1.4 Lib.

Es scheint durchaus Abschnitte zu geben, die sich ähnlich verhalten (R und IAQ verlaufen gegensinnig),
dann aber unterschiedliche Reaktionen zw. iAQcore und BME.

Morgen Dann werde ich mich an Thomas Variante versuchen....

Außerdem habe ich diesen Algorithmus gefunden, der sich vielleicht für das Auswerten des Verhaltens des BME680 eignet:
https://www.codeproject.com/Articles/999650/Signal-Segmentation-Algorithm-of-Radhakrishnan-et (https://www.codeproject.com/Articles/999650/Signal-Segmentation-Algorithm-of-Radhakrishnan-et)
Improved Signal Segmentation Using Moving Average and Savitzky-Golay Filter (http://file.scirp.org/pdf/JSIP20120100004_82726895.pdf)
Den werde ich mir mal mit meiner Maple-Variante genauer anschauen und die Verwendbarkeit prüfen.

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 17 Dezember 2017, 21:30:44
Zitat von: hdgucken am 05 Dezember 2017, 22:10:42
Anbei der aktuelle Stand von heute, hab noch ein paar Kleinigkeiten überarbeitet und aktualisiert.
Dieses mal sind auch zwei fertige Binärdateien dabei, einmal mit Adresse 0x76 und einmal 0x77,
beide ohne debug Ausgaben, nur Messwerte.
Hast Du an der 36_LaCrosseGateway.pm, die im ZIP ist, Anpassungen gemacht?
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 17 Dezember 2017, 23:05:12
Ja, bei "$clients" und bei der matchlist. Müsste so stimmen, funktioniert was nicht ?

Anbei die aktuellen Dateien von "jetzt"  ;)

Hab mir mal ein userreading "gas_kOhm" erstellt, dann sind die Zahlen im SVG Plot nicht so lang, siehe Bild  :)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 18 Dezember 2017, 00:21:28
Zitat von: hdgucken am 17 Dezember 2017, 23:05:12
Ja, bei "$clients" und bei der matchlist. Müsste so stimmen, funktioniert was nicht ?
Alles gut. Wollte nur wissen, ob es was gibt, das ich offiziell reinnehmen müsste.
clients und matchlist könnte ich so übernehmen und einchecken, das ist eigentlich universell für jeden customsensor, der so arbeitet.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 18 Dezember 2017, 00:33:07
Zitat von: HCS am 18 Dezember 2017, 00:21:28
Alles gut. Wollte nur wissen, ob es was gibt, das ich offiziell reinnehmen müsste.
clients und matchlist könnte ich so übernehmen und einchecken, das ist eigentlich universell für jeden customsensor, der so arbeitet.

Das wäre super, dann muss man nicht nach dem Update seine Dateien wieder reinkopieren  ;)

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 18 Dezember 2017, 20:49:05
Zitat von: juergs am 16 Dezember 2017, 18:22:31
Morgen Dann werde ich mich an Thomas Variante versuchen....

Hallo Jürgen, konntest Du was erreichen, funktioniert Dein Sensor ?
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 18 Dezember 2017, 21:00:56
Hallo Thomas,
war noch mit anderen Projekten beschäftigt. Dann widme ich mich wieder dem Thema.
Muss noch die LGW-Platine V1.2 von PeMue mit den RF69CW aufbauen.
Hab leider gerade nur zwei NodeMCU zur Verfügung, aber kein OLED-Display.
Warte auch noch auf NodeMCU-Platinen mit integriertem OLED-Display, die ich bestellt habe.
Das würde genau passen, wenn die demnächst kommen. (;-)

Mal schauen wie ich die RFMs separat auf eine Trägerplatine bekomme....
ESP-12-Module habe ich genügend...

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 18 Dezember 2017, 21:04:46
Hallo Jürgen,

Zitat von: juergs am 18 Dezember 2017, 21:00:56
Warte auch noch auf NodeMCU-Platinen mit integriertem OLED-Display, die ich bestellt habe.
hast Du davon einen Link? Klingt echt interessant.

Danke + Gruß

PeMue
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 18 Dezember 2017, 21:07:00
Hallo Peter,

diese hier, Wemos:
https://www.ebay.de/itm/wemos-esp-wroom-02-Hauptplatine-WiFi-Modul-ESP8266-18650-Batterie-0-96-OLED-/362094206879 (https://www.ebay.de/itm/wemos-esp-wroom-02-Hauptplatine-WiFi-Modul-ESP8266-18650-Batterie-0-96-OLED-/362094206879)

Gäbe es auch noch ohne die 18650-Option:
0-96-OLED-NODEMCU-Wemos-Wifi-ESP8266-ESP-12F-CP2102-Micro-USB-Development-Board (https://www.ebay.de/itm/0-96-OLED-NODEMCU-Wemos-Wifi-ESP8266-ESP-12F-CP2102-Micro-USB-Development-Board/222688392851?_trkparms=aid%3D222007%26algo%3DSIM.MBE%26ao%3D2%26asc%3D49571%26meid%3D454a5d85ef674757bcf130a1857b1d1f%26pid%3D100623%26rk%3D5%26rkt%3D6%26sd%3D362094206879&_trksid=p2047675.c100623.m-1)

Die würde genau für den Anwendungszweck passen ...

Halter für die 18650 habe ich massive Überbestände ...  ;D
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 18 Dezember 2017, 22:06:43
Hallo Jürgen,

Zitat von: juergs am 18 Dezember 2017, 21:00:56
war noch mit anderen Projekten beschäftigt...
Das kenne ich  ;)

Zitat von: juergs
Warte auch noch auf NodeMCU-Platinen mit integriertem OLED-Display, die ich bestellt habe.
Das würde genau passen, wenn die demnächst kommen. (;-)

Mal schauen wie ich die RFMs separat auf eine Trägerplatine bekomme....
Hab mir gerade die NodeMCU Platinen mit dem OLED Display angeschaut,
die sind ja wie geschaffen für das Sensorprojekt ! Den RFM bekommt man
schon irgendwie mit "angeheftet"  :)

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 18 Dezember 2017, 22:30:31
ZitatPlease allow 1-2cm error due to manual measurement

In China ist man präzise  ;D ;D ;D
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 19 Dezember 2017, 22:46:08
Zitat von: juergs
In China ist man präzise  ;D ;D ;D
Ja genau, Pi * Daumen * Fensterkreuz , passt  ;D

Hab hier noch ein Log von heute:
(IAQ jetzt grün und Gas in kOhm, sieht viel besser aus  ;))
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 21 Dezember 2017, 14:58:28
Hallo Thomas,

noch eine Frage zu Deiner Software: würde diese auch auf einem Atmega328p (mit RFM69, BH1750, etc.) laufen? Da müsste man vermutlich einen anderen Teil der BSEC Library einbinden ...
Im LaCrosse Thread habe ich ja schon zusammengefasst, wie es weitergehen könnte.
Welche I2C Adresse des BME680 sollte gewählt werden, oder ist das ggf. egal?
Bin gespannt auf Deine Antwort.

Gruß Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 21 Dezember 2017, 15:07:12
Hätte die Bosch-Aussage im anderen Thread gleich komplett zitieren sollen  :)

https://github.com/BoschSensortec/BME680_driver/issues/6#issuecomment-351274972
ZitatWe will not disclose the exact nature of how the IAQ index can be calculated. In order to achieve the same performance as our BSEC algorithm, the code will not fit on Arduino boards based on the Atmel AVR series that have 32kB flash and 2kB of RAM.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 21 Dezember 2017, 15:55:57
Zitat
noch eine Frage zu Deiner Software: würde diese auch auf einem Atmega328p (mit RFM69, BH1750, etc.) laufen? Da müsste man vermutlich einen anderen Teil der BSEC Library einbinden ..
STM32 (MapleMini) geht. Läuft bei mir mit CUL_TX (https://forum.fhem.de/index.php/topic,78619.msg718917.html#msg718917).
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 21 Dezember 2017, 18:45:41
Hallo Peter,

Zitat von: PeMue
würde diese auch auf einem Atmega328p (mit RFM69, BH1750, etc.) laufen? Da müsste man vermutlich einen anderen Teil der BSEC Library einbinden ...
Diese Frage hat HCS ja schon beantwortet, geht leider nicht, vermutlich aber auf nem ATMega 644 oder 1284, müßte man mal testen.

Zitat von: PeMue
Welche I2C Adresse des BME680 sollte gewählt werden, oder ist das ggf. egal?
Das läßt sich in der Software auswählen, standard ist 0x77, einstellbar ist aber auch 0x76  ;)

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 21 Dezember 2017, 19:45:21
Zitat von: juergs am 20 November 2017, 20:12:10
Nach einigen Versuchen ist mir der Compile für den MapleMini STM32 ARM M3  ebenfalls gelungen ...
Und was braucht der an Hardware? Maple mini + BME680? Oder auch noch das OLED?

Gruß PeMue
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 21 Dezember 2017, 20:07:50
ZitatUnd was braucht der an Hardware? Maple mini + BME680? Oder auch noch das OLED?
Ich wollte nur die BOSCH - ARM Lib - Variante prüfen. (MapleCUL-Aufbau mit dem STM32F103 + Erweiterungsmöglichkeiten nach Bedarf)
Ich vermute sogar, dass hdgucken's FW in dieser Variante ebenfalls laufen würde ...

Wie es von da aus weitergeht ist ja offen. Das CUL-TX-Protokoll verträgt Werte bis max. um die 110. Dann müsste man IAQ/10 übertragen   
und in FHEM wieder  zurückrechnen, geht ja mit Userreadings.

Als weitere Möglichkeit mit der NewASKSIN-Library  classTHSensor (http://trilu2000.github.io/NewAskSin/classTHSensor.html) auf CC1101-Basis mit einem Arduino zu agieren.
Mit Homematic kenne ich mich aber nicht aus,  vielleicht kann mich da jemand auf's Gleis heben...


Prinzipiell sehe ich auch die Firmware von hdgucken als bereits existierenden und guten Weg IAQ-Werte zu übertragen.
Mittlerweile habe ich zwei der ESP-OLED-Module bekommen und werde die mit hdguckens FW bestücken und über die LGW empfangen ...
Ggf. mit den Platinen-Resourcen erweitern Joggle-Button etc.

Dann versuche ich den BME-Resistancewert ohne BME-Lib mit Temp + Hum über CUL_TX-Protokoll zu berücksichtigen  (mit dem SegmentedSignal-Algorithmus).
Das Ergebnis wäre wohl ein iAQ-ähnlicher Wert. Aber eigentlich reicht auch nur eine Einstufung des Signals in
Tendenz und eine Unterteilung in "sehrgut", "gut", "annehmbar", "schlecht", "sehr schlecht" aus.
Also nur eine momentane Beurteilung der Luftqualität ... Je nachdem wie man den Output verwerten möchte (Regelung/Visualisierung?)

Diese LoRa (http://www.kh-gps.de/lora.htm)-Variante fände ich auch interressant: http://www.kh-gps.de/lora_bt.htm (http://www.kh-gps.de/lora_bt.htm)  Schaltung (http://www.kh-gps.de/lora_uni_rx.jpg). (tnx@ranseyer)
Da stellt sich aber wieder die Gateway-Frage....

Und da wäre noch die djbugs-BLE-Variante: https://forum.fhem.de/index.php/topic,78098.15.html (https://forum.fhem.de/index.php/topic,78098.15.html). Leider hat er seine Ergebnisse bisher noch nicht veröffentlicht....

Schauen wir mal, wie man die Prios verteilen kann ...  :D

Jürgen



Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 21 Dezember 2017, 21:05:09
Apropos Pläne:

Interessehalber hatte ich auch ein AMS-CCS811 (http://ams.com/eng/Products/Environmental-Sensors/Air-Quality-Sensors/CCS811)-Breakout (https://www.banggood.com/CJMCU-8128-CCS811-SI7021-BMP280-Carbon-Dioxide-CO2-VOCs-Temperature-Humidity-Gas-Pressure-Sensor-p-1167432.html?cur_warehouse=CN) bestellt (~10..17€, Kombi mit  CCS811+SI7021 (https://www.silabs.com/documents/public/data-sheets/Si7021-A20.pdf)+BMP280).
air-quality-sensors (https://www.tindie.com/products/onehorse/air-quality-sensors/)
Nach den guten Erfahrungen mit dem iAQ-core ...

Der kam leider mit abgehobenem Gehäuse an  >:(.

ZitatNo need for continuous monitoring in software

Vielleicht funktioniert er trotzdem....
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 22 Dezember 2017, 22:47:40
Für die Wemos® D1 Esp-Wroom-02 Motherboard ESP8266 Mini-WiFi-Boards (https://www.banggood.com/Wemos-D1-Esp-Wroom-02-Motherboard-ESP8266-Mini-WiFi-NodeMCU-Module-p-1224577.html?cur_warehouse=CN)  (ohne OLED) (https://www.ebay.de/itm/Esp-Wroom-02-WeMos-D1-Motherboard-ESP8266-Mini-WiFi-Nodemcu-Module-18650-Battery-/192272587744) gibt es wohl kein Schaltplan (!) ....
Zitatscheme is not available, libraries is here: https://github.com/LilyGO/ESP32-OLED0.96-ssd1306 (https://github.com/LilyGO/ESP32-OLED0.96-ssd1306)


Hier mal die OLED-LIB für die Demo dazu ( nach langer Sucherei gefunden):
https://github.com/squix78/esp8266-oled-ssd1306 (https://github.com/squix78/esp8266-oled-ssd1306)
Funktioniert ...

ZitatProgrammable LED, you can use GPIO16
OLED's SDA and SCL connect to the D1 pin and the D2 pin respectively.
The five buttons are controlled by FLASH, RSET, D5, D6, and D7 respectively.

Auf den Boards ist das "SSD1306SimpleDemo" geladen ...  ;)

LiPo (https://myesp8266.blogspot.de/2017/07/battery-powered-wemos-d1-with-wemoss.html)
PacketMonitor (https://github.com/spacehuhn/PacketMonitor)
Board-Varianten (https://www.tindie.com/stores/lspoplove/)
Antenne (https://www.aliexpress.com/item/IPEX-2dBi-wire-Antenna-for-ESP-07-ESP32-Wrover/32846319018.html?spm=2114.10010108.100009.4.44770d5dmM0HBV&traffic_analysisId=recommend_2037_null_null_null&scm=1007.13482.91320.0&pvid=ad7c8e89-3b4b-4faa-8788-504e37ebf5d4&tpp=1)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 23 Dezember 2017, 18:00:15
Die vorkompilierte-BSEC-Lib "libalgobsec.a" ist immer noch vom 16.11.2017.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 23 Dezember 2017, 21:29:16
Die Adafruit-OLED-Lib die von hdgucken verwendet wird, läuft nicht auf dem Board.
Diese funktioniert für die Verwendung von display.println:
https://github.com/klarsys/esp8266-OLED (https://github.com/klarsys/esp8266-OLED)

@hdgucken:
wird die INT-Port-Verbindung  DIO0 (http://thebillplease.net/play/esp8266-with-rfm69-using-lowpowerlab/) zum Senden beim RFM69CW benötigt?

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 23 Dezember 2017, 22:03:11
Hallo Jürgen,

Zitat von: juergs
Die Adafruit-OLED-Lib die von hdgucken verwendet wird, läuft nicht auf dem Board.
Diese funktioniert für die Verwendung von display.println:
https://github.com/klarsys/esp8266-OLED (https://github.com/klarsys/esp8266-OLED)
Da musst Du nur in \libraries\Adafruit_SSD1306\Adafruit_SSD1306.h Zeile  81: "#define SH1106" auskommentieren,
da auf Deinem Board der SSD1306 verwendet wird, ich hab den SH1106 Controller  ;)

Zitat
@hdgucken:
wird die INT-Port-Verbindung zum Senden beim RFM69CW benötigt?
eigentlich definitiv nicht, da der Sensor ja nichts empfangen muss (ist bei mir auch nicht angeschlossen, muss ich in der Doku ändern) :-[

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 23 Dezember 2017, 22:32:53
Hallo Thomas,
vielen Dank.

Der Controllertyp ist schon eingestellt (http://arduino-er.blogspot.de/2016/04/hello-world-nodemcu-esp8266-128x64-i2c.html), vermute aber, dass I2C auf SCL/SDA mit D1,D2 nicht zieht....
I2C wir nur mittels Konstruktor mit OLED_RESET  und Adresse eingestellt...
Vielleicht finde ich noch die Stelle in der Lib um das ggf. vom Default D4/D5  (ist ja ESP und soll nodeMCU komp. sein ...) wegzubekommen.
Vermutlich bei Wire.begin (); im Konstruktor....

/*=========================================================================
    SSD1306 Displays
    -----------------------------------------------------------------------
    The driver is used in multiple displays (128x64, 128x32, etc.).
    Select the appropriate display below to create an appropriately
    sized framebuffer, etc.
    SSD1306_128_64  128x64 pixel display
    SSD1306_128_32  128x32 pixel display
    SSD1306_96_16
    -----------------------------------------------------------------------*/
   #define SSD1306_128_64
//   #define SSD1306_128_32
//   #define SSD1306_96_16
/*=========================================================================*/


Ggf. implentiere ich die display.println()-Funktion in der Lib, die geht, nach und verzichte auf die Adafruit-Variante.

Die Hardware-Verdrahtung des RFM69CWs habe ich so ausgeführt:

Zitat
RFM.MISO  [8]      = ESP.D9   [GPIO3]
RFM.NSS    [7]      = ESP.D8   [GPIO15]
RFM.SCK    [6]      = ESP.D4   [GPIO14]
RFM.MOSI  [5]      = ESP.D3   [GPIO0]
RFM.GND   [3]      = ESP.GND [15] 
RFM.3V3    [2]      = ESP.VCC  [8]

Den (belegten) OLED-I2C Anschluss für den BME muss ich noch auf dem Board suchen
und separat herausführen ... Reicht evtl. direkt den ESP.D1 und ESP.D2 -Anschluss zu nehmen.

Das LGW mit den RFMs ist aufgebaut und muss noch in Betrieb genommen werden,
dann den Sensor-Sender prüfen .....

Doch etwas aufwändiger, als ich dachte ...

Einfach Mist, wenn weder Schaltplan noch Infos dazu geliefert werden ...
Edit: oder man findet einen Ähnlichen (https://github.com/lspoplove/D-duino/blob/master/D-duino-V3.pdf)  :D

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 23 Dezember 2017, 23:56:43
Die Adafruit-LIB geht auch, wenn:

Zitat// OLED display TWI address
#define OLED_ADDR   0x3C
Adafruit_SSD1306 display(-1);

der Konstruktor so definiert wird.  Tssss. :o
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 24 Dezember 2017, 00:01:01
@Jürgen: ich hatte die Adafruit Lib extra für meine Zwecke (SH1106) verändert, deshalb müsstest Du dort die Zeile 81 auskommentieren,
oder noch einfacher die original SSD1306 Lib von Adafruit verwenden.

Zitat von: juergs
Die Adafruit-LIB geht auch, wenn:

der Konstruktor so definiert wird.  Tssss. :o
interessant ...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 24 Dezember 2017, 00:22:49
Hallo Thomas,
hatte die Orginal-LIB heruntergeladen und benutzt ...  :)

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 24 Dezember 2017, 00:59:25
Zitat von: juergs
Die Hardware-Verdrahtung des RFM69CWs habe ich so ausgeführt:
SPI läuft in meiner Config über Hardware, also D5,D6,D7 und D8 vom ESP.
Ich hatte das mal als Softwarevariante genutzt, müsste man in den RFMxx Dateien ein paar Sachen anpassen.
Dann kann man die SPI Pins im Sketch nach Wunsch definieren  :)

Zitat
Den (belegten) OLED-I2C Anschluss für den BME muss ich noch auf dem Board suchen
und separat herausführen ... Reicht evtl. direkt den ESP.D1 und ESP.D2 -Anschluss zu nehmen.
Genau.

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 26 Dezember 2017, 22:04:38
Hier die Lösung für die ADAFRUIT-Bibliothek und den OLED-SSD1306-Controller:

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define OLED_RESET  D0  // RST-PIN for OLED (not used)
#define OLED_SDA     D1  // SDA-PIN for I2C OLED
#define OLED_SCL     D2  // SCL-PIN for I2C OLED
Adafruit_SSD1306 display(OLED_RESET);


Und das wars (!):

  // initial I2C bus and OLED display
  Wire.begin(OLED_SDA, OLED_SCL);
  Wire.setClock(400000);
  // by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3C (for the 128x64)
  // init done


Wire.begin(OLED_SDA, OLED_SCL);
Wire.setClock(400000);


Deshalb liefen die Adafruit-Beispiele nicht.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 28 Dezember 2017, 01:37:44
Hallo Jürgen,

so müsste es auch funktionieren:

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

Adafruit_SSD1306 display();


  // initial I2C bus and OLED display
  Wire.begin();
  Wire.setClock(400000);
  // by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3C (for the 128x64)
  // init done


Hab die Tage auch etwas an meiner Software gearbeitet:
Beim starten des Sensors wird die BSEC Version angezeit.
Vcc Messung ist jetzt, ebenso wie das OLED Display, abwählbar.
Dann hatte ich ja ab und an CRC-Fehler bei der Übertragung, das lag am SPI Clock (RFM69),
der war zu hoch, bin jetzt runter auf 400kHz, seitdem keine Fehler mehr  :D

anbei die aktuelle Version  :)

P.S.: hab eben die 36_CustomSensor.pm noch korrigiert und mit eingepackt ...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 28 Dezember 2017, 13:15:23
Hallo Thomas,
dann kann ich an dem System auch weitermachen.
Ich denke das ist der Knackpunkt gewesen:
  Wire.setClock(400000);

Interessant ist auch, dass die Einstellung zufällig beim Ausprobieren verschiedener Libs bestehen bleibt.
Schaltet man komplett aus und wieder ein, funktioniert plötzlich nichts mehr ...
Die Einstellung gehört eigentlich in den Konstruktor ...

Ursache war eigentlich die Suche nach display.println ... (Wenn jetzt die Adafruit-Lib geht ...)
Weder in der Lib noch in der GFX.h ist diese Methode enthalten. (print.h?)

In der OLED Lib für den STM32 sind noch einige zusätzliche Methoden zum Anzeigen von Float mit dabei ....
Bei mir unter:
ZitatC:\Users\<user>\Documents\Arduino\hardware\Arduino_STM32\STM32F1\libraries\OLED_I2C

Bei den WEMOS-Esp-Wroom-02-Modulen mit integriertem OLED-Display kommt jetzt das Problem hoch, dass sich die Seriellen immer wieder
ab- und einschalten.  Vermutlich Resetten die CP2102 (https://www.sparkfun.com/datasheets/IC/cp2102.pdf) oder es ist das USB-Kabel...  :(

Edit: Flashen bei eingelegtem 18650 Akku mag die Schaltung wohl nicht, ohne 18650 ist der Reset-Effekt weg. 

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 28 Dezember 2017, 18:23:48
OK, die display.println zickt:


BME680 wireless sensor V1.5
Protocol: CustomSensor
BSEC Version: 1.4.5.1
NODE-ID : 6
begin init Wire.
init wire done.
init OLED.
basic inits OLED done.
before yield.


Hatte die  display.println-Statements auskommentiert. Vorher kam die Exception vor den println-Statements.
Der compiler meckert nicht (?).
Yield hatte ich in die 8 Sekunden Warteschleife eingebaut.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 28 Dezember 2017, 18:29:44
Hallo Jürgen,

Zitat von: juergs am 21 Dezember 2017, 15:55:57
STM32 (MapleMini) geht. Läuft bei mir mit CUL_TX (https://forum.fhem.de/index.php/topic,78619.msg718917.html#msg718917).
Du bekommst aber die Daten über die USB Schnittstelle an FHEM, oder? Bei Thomas werden die Daten über den RFM69 geschickt (denke ich mal).

Danke + Gruß

Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 28 Dezember 2017, 19:14:48
Hallo Peter,

war ja nur eine Machbarkeitsstudie, da ich Probleme mit den ESP-Exceptions hatte (... yield) .

Aber: den RFM69 an den Maple (bzw. den F103) anzuschließen sollte auch einfach gehen.
War eigentlich mein erster Plan. Als Basis könnte man ebenfalls hdgucken's Sketch nehmen.
Die Einbindung der BSEC-vorkompilierten Libs beim Maple geht ja.

Mit fehlen bis jetzt nur die separaten OLED-Displays, deshalb bin ich gerade dabei den WEMOS
mit integrierten OLED anzubinden. Wie man sieht mit einigen Hürden  ;)

Anbei eine mögliche Implementierung für OLED für den Maple mit Anbindung eines BMP085/180 und I2C von hier (https://www.hackster.io/rayburne/oled-temperature-barometer-for-10-b81b28):
ZitatThis is a hacked version of the official library only I2C1 on Maple Mini

oder dieses Beispiel:
ZitatC:\Users\<user>\Documents\Arduino\hardware\Arduino_STM32\STM32F1\libraries\OLED_I2C

Der Maple mit RFM und OLED mit BME680 wäre das nächste Ziel, wenn das Wroom2-Board soweit zum Laufen zu bringen ist ....  ;)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 28 Dezember 2017, 19:24:14
BME680 wireless sensor V1.5
Protocol: CustomSensor
BSEC Version: 1.4.5.1
NODE-ID : 6
begin init Wire.
init wire done.
init OLED.
basic inits OLED done.
before yield.
after yield.
begin init RFM.


Immerhin etwas weiter ....
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 28 Dezember 2017, 19:27:39
Hallo Jürgen,

Zitat von: juergs am 28 Dezember 2017, 19:14:48
Anbei eine mögliche Implementierung für OLED für den Maple mit Anbindung eines BMP085/180 und I2C von hier (https://www.hackster.io/rayburne/oled-temperature-barometer-for-10-b81b28):
oder dieses Beispiel:
Der Maple mit RFM und OLED mit BME680 wäre das nächste Ziel, wenn das Wroom2-Board soweit zum Laufen zu bringen ist ....  ;)
ich hätte da vorher ziemliche Probleme, die Entwicklungsumgebung für den maple Mini zu installieren. Daher bleibe ich erst mal bei der Arduino IDE für Atmega's bzw. ESP8266  ;D

Gruß PeMue
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 28 Dezember 2017, 19:35:08
ZitatProbleme, die Entwicklungsumgebung für den maple Mini zu installieren
Die Arduino-Maple-HW oder die BOSCH-BSEC-LIBS?
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 28 Dezember 2017, 19:37:36
Zitat von: juergs am 28 Dezember 2017, 19:35:08
Die Arduino-Maple-HW oder die BOSCH-BSEC-LIBS?
eher (erstmal) ersteres, aber ich habe es auch nicht wirklich ernsthaft probiert ...

Gruß PeMue
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 28 Dezember 2017, 20:09:44
Arm- / Maple ja eigentlich nur, weil Bosch die 8-Bitter nicht  unterstüzt ... schade.
Aber im Prinzip geht ja der BME-Wiederstand über CUL_TX in 433MHz-OOK.  ;)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 28 Dezember 2017, 20:18:46
Hmm, habe die Originl-Libs von https://learn.adafruit.com/adafruit-oled-featherwing/usage (https://learn.adafruit.com/adafruit-oled-featherwing/usage) Adafruit heruntergeladen ....
... und siehe da: Das Beispiel stürzt beim ersten display.println ebenfalls ab. 

Ein Diff auf Thomas Lib-Version zeigt nur die /* --- SH1106 --- */ - Patchs ... sonst eigentlich identisch. 

Ist es die ESP-SDK-Version ?
ZitatArduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26

Aha, hier:
https://github.com/sparkfun/SparkFun_Micro_OLED_Arduino_Library/issues/5 (https://github.com/sparkfun/SparkFun_Micro_OLED_Arduino_Library/issues/5)

OK, diese hier funktioniert bei dem Wemos-D1-Board:
https://github.com/greiman/SSD1306Ascii (https://github.com/greiman/SSD1306Ascii) 
wegen http://www.esp8266.com/viewtopic.php?f=29&t=7841 (http://www.esp8266.com/viewtopic.php?f=29&t=7841) und https://github.com/adafruit/Adafruit_SSD1306/issues/54 (https://github.com/adafruit/Adafruit_SSD1306/issues/54)

trotz:
src/SSD1306AsciiWire.h:61:2: warning: #warning set400kHz() disabled for this CPU. [-Wcpp]
#warning set400kHz() disabled for this CPU.


Fragezeichen, und staune ! (Edit: Wire-Setting auf 400KHz reicht aus)

Das Board und die OLED-Lib-Fehler/Unzulänglichkeiten nerven schon etwas....

Dann werfe ich die Adafruit-Lib bis auf Weiteres raus ...  :'(

BME680 wireless sensor V1.5
Protocol: CustomSensor
BSEC Version: 1.4.5.1
NODE-ID : 6
begin init Wire.
init wire done.
init OLED.
basic inits OLED done.
text display tests.
Test OLED done.
before yield.
after yield.
begin init RFM.
RFM69 failed, stop!
Soft WDT reset


Hatte den RFM noch nicht angeschlossen, das Display zeigt den Text an ...  :)

Bei angeschlossenem RFM geht nichts mehr, also erst mal Aufbau, Verdrahtung und die Soft-SPI-Funktionalität prüfen...

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 28 Dezember 2017, 22:07:35
Hallo Jürgen,

Zitat von: juergs am 28 Dezember 2017, 20:09:44
Arm- / Maple ja eigentlich nur, weil Bosch die 8-Bitter nicht  unterstüzt ... schade.
Aber im Prinzip geht ja der BME-Widerstand über CUL_TX in 433MHz-OOK.  ;)
wenn ich mir die BSEC Library anschaue, dann müsste aber der ATXMEGA32 eigentlich funktionieren, oder?
Meine Idee ist es, Dirk's Innensensor (https://wiki.fhem.de/w/images/2/28/Universalsensor-CC1101-Innen_platine.jpg) um einen Atxmega 32 bzw. einem BME680 zu erweitern, ggf. noch einen RFM69 draufzumachen und zu schauen, ob die Sache auch mit Batteriebetrieb funktionieren könnte. Ggf. findet sich ja auch jemand, der sich um die Homematic Software kümmert ...

Gruß PeMue
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 28 Dezember 2017, 22:17:04
Hallo Peter,
hatte die XMega-Variante auch gesehen, aber noch nicht eingeordnet ...

ZitatDirk's Innensensor
Falls das geht, wäre das eine super Lösung.

Ich habe hier noch zwei ATXMega32-A4-AU hier auf DIP-Extention-Boards herumliegen.
War damals ein Fehlkauf, hatte sie mit ATMEGA32-U4 "verwechselt"  :'(
Zum Testen kann ich sie Dir gerne zuschicken ...

Mir ist in der neuen Doku aufgefallen, dass sie die Beschreibung für den Einbau der vorkompilierten Libs in Arduino herausgenommen haben ....   

In der Release_20171214 ist auch der megaAVR mit dabei, also nicht unbedingt XMega.  :D
Unter BSEC_1.4.5.1_Generic_Release_20171214\algo\bin\avr
ZitatAVR32
AVR8_megaAVR
AVR8_XMEGA

Dann müsste ja auch ein NANO usw. direkt mit der Innensensor-Platine gehen ...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 29 Dezember 2017, 10:49:25
Hallo Jürgen,

Zitat von: juergs am 28 Dezember 2017, 22:17:04
Mir ist in der neuen Doku aufgefallen, dass sie die Beschreibung für den Einbau der vorkompilierten Libs in Arduino herausgenommen haben ....   
hast Du die alte Beschreibung noch irgendwo?

Danke + Gruß

PeMue
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 29 Dezember 2017, 10:52:20
Zitat von: juergs am 28 Dezember 2017, 22:17:04
Mir ist in der neuen Doku aufgefallen, dass sie die Beschreibung für den Einbau der vorkompilierten Libs in Arduino herausgenommen haben ....   
Möglicherweise weil man ab der kommenden Aduino-Version (> 1.8.5) wohl compiled libs ohne Gebastel verwenden können soll
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 29 Dezember 2017, 11:40:30
Hallo Peter,

https://forum.fhem.de/index.php?action=dlattach;topic=78619.0;attach=87791 (https://forum.fhem.de/index.php?action=dlattach;topic=78619.0;attach=87791) habe ich das PDF abgelegt.

Und die Einbindung für den ESP8266:
https://www.bjoerns-techblog.de/2017/11/bme680-mit-nodemcu-an-ttn/

Könnte ähnlich für den AVR zu handhaben sein ...

Eclipse-Variante (http://andybrown.me.uk/2010/10/24/the-arduino-library-compiled-and-ready-for-linking/)

ZitatThe Arduino IDE now supports .a and .so files in libraries. See instructions in the precompiled property documentation here:
https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5:-Library-specification#libraryproperties-file-format.
Ausschnitt:
precompiled - (feature not yet released, will be available in arduino-builder >1.3.25) set to true to allow the use of .a (archive) and .so (shared object) files.
The .a/.so file must be located at src/{build.mcu} where {build.mcu} is the architecture name of the target the file was compiled for.
Ex: cortex-m3 for the Arduino DUE. The static library should be linked as an ldflag.

ZitatLong story short, binary libraries are more complex than you think and you should avoid them in open source projects, especially when using C++



Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 29 Dezember 2017, 13:51:17
Hallo Jürgen,

bin bei den vielen Beiträgen in den letzten Stunden gar nicht recht hinterher gekommen  ;D

Also,
Zitat von: juergs
Ist es die ESP-SDK-Version ?
Nein, habe die selbe Version: 1.20.0-26

src/SSD1306AsciiWire.h:61:2: warning: #warning set400kHz() disabled for this CPU. [-Wcpp]
#warning set400kHz() disabled for this CPU.

Das habe ich nicht ! Vielleicht mit etwas geringerem Takt probieren ?

Zitat
Bei angeschlossenem RFM geht nichts mehr, also erst mal Aufbau, Verdrahtung und die Soft-SPI-Funktionalität prüfen...
Hier ist SoftSPI angesagt, damit Du die Pins frei wählen kannst. Musst aber bestimmt einige Warteschleifen einfügen,
habe SoftSPI bei 8MHz Systemtakt verwendet, beim ESP sind es jetzt aber 80MHz !

Gruß Thomas

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 29 Dezember 2017, 16:08:29
Hallo Thomas,

danke für die Infos.

Habe das Gefühl: OLED und ESP ist ein richtig kniffliges Thema.
Verwendet man verschiedene Libs beeinflussen die sich gegenseitig. Schaltet man aus und wieder ein, funktioniert es plötzlich nicht mehr ...
Dieser Fehler ist tückisch:
Zitatespcomm_sync failed error: espcomm_open failed
Der schließt und öffnet die Serielle im Sekundentakt....

Ich versuche eine passende Soft-SPI-Lib u finden, die das für den ESP regeln kann ....

Heute habe ich Wemos D1 und separate OLED-Module bekommen, diese laufen allerdings mit Adresse 0x78 ....
... und habe sie noch nicht zum Laufen gebracht ....

Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 29 Dezember 2017, 17:03:34
Hallo Jürgen,

Zitat
Dieser Fehler ist tückisch: Der schließt und öffnet die Serielle im Sekundentakt....
Das könnte an der Verdrahtung von GPIO3 (ESP.D9) bei Dir liegen, das ist RXD0 der Seriellen,
den und GPIO1 = TXD0 (D10 an Deinem Board) darfst Du nicht verwenden, wenn die Serielle verwendet wird  :o

Ich fürchte, Du mußt den RFM doch direkt and den ESP löten, wäre aber auch nicht weiter tragisch, denke ich  ;)

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 30 Dezember 2017, 13:04:04
Hallo Thomas,

das Board bekommt man in der Arduino-IDE in dem Modus nicht wieder zurück...
Mit dem ESP8266Flasher nur, wenn man den ricchtigen Zeitpunkt erwischt ....
War schon am Überlegen, den ESP auszulöten und zu ersetzen.

Aktueller Stand: OLED auf dem Wroom2-Board funktioniert, mit Wemos-D1 und 128x64-OLED
geht noch nicht. Habe auch die Info gefunden, dass der Controller SSD1106 auch verbaut sein könnte.

ZitatOLED screen, internal drive chip: SH1106 (Operation and SSD1306 same)

Mühsam nährt sich das Eichhörnchen...  :o

/EDIT: Habe mal versuchsweise ESPEASY auf dem D1 installiert. Das OLED konfiguriert (0x3C ist Standard-Einstellung)
Und siehe da, Display geht mit I2C-Adresse 0x3C. Trotz auf dem Display aufgedruckte I2C-Adresse 0x77 (!?).
Ich probiere mal die Initialisierung des OLEDS von ESPEASY aus....
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 30 Dezember 2017, 22:01:33
Hallo Jürgen,

auf dem WEMOS D1 mini mit dem SH1106 Controller, sollte meine Software laufen, schon mal probiert ?

Ohne BH1750 und RFM69 müsstest Du im Setup halt
for (;;); // spin fo rever
vorrübergehend auskommentieren (beim RFM69 und BH1750) und mal sehen, was dann passiert  8)

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 30 Dezember 2017, 22:49:31
Hallo Thomas,

mit der Adafruit-Lib funktionieren (bei mir) die display.println Methoden-Aufrufe nicht.
Die Original-Lib hat vermutlich Problem beim Zugriff auf das pgm_read-Makro (nur Warning).
Unter der ESP-Infrastruktur reicht es aus ein #include <pgmspace> zu setzen.
Dann ist zwar das Warning des Compilers weg, Textausgabe funktioniert trotzdem nicht.

Ich weiß jetzt, dass die println-Methode als Vererbung auf die Print-Klasse zur Verfügung steht.
Diese verlangt eigentlich "nur" die Implementierung von zwei abstrakten write-Methoden.

Die Ursache, warum das mit meiner (original) Adafruit-Version nicht klappt .... schwierig herauszufinden.
Deshalb wird das bei mir wohl mit Deiner Version (mit meinem Compile) wohl nicht klappen.
Der Diff auf Deine LIB ergab bei mir nichts wesentlich unterschiedliches.
Compiliere mit Arduino-Version 1.8.3.

Dann muss ich eine abgespeckte Version von Deinem Code erstellen ...   

Ich habe ein kleine OLED-Lib bei der man die Cursor-Position setzen muss um Text auszugeben,
aber auf den Komfort der println-Methode verzichten muss. (Zumindest im Moment.)

Diese hier bietet ein Menü: https://github.com/lexus2k/ssd1306 (https://github.com/lexus2k/ssd1306)
ist aber etwas umfangreich ...

Die hier ist klein:
https://github.com/bentor/oled/tree/master/OzOLED (https://github.com/bentor/oled/tree/master/OzOLED)

Oder diese hier: https://github.com/greiman/SSD1306Ascii (https://github.com/greiman/SSD1306Ascii) funktioniert ebenfalls.
Die sehen vielversprechend aus. Die SSD1306Ascii hat auch ein println implementiert. Funktioniert aber nicht mit dem D1 ... :-\
/Edit:
//Wire.begin(D1,D2);         
  Wire.begin();

Die LIB "SSD1306Ascii" mag die Initialisierung von Wire nicht: Konstruktor mit explizit D1 und D2 gesetzt.  ::)
Bei den verschiedenen Libs ist die Reihenfolge im Konstruktor auch SCl und SDA gedreht ...

Kann jetzt also die "SSD1306Ascii" verwenden!  :D
Prüfe auch noch mal auf dem WROOM2-Board nach ...


Schwierig, sich nicht zu verzetteln ...

Auch hier nutzbar:
Zitat/**
*   Attiny85 PINS
*             ____
*   RESET   -|_|  |- 3V
*   SCL (3) -|    |- (2)
*   SDA (4) -|    |- (1)
*   GND     -|____|- (0)
*
*   Atmega328 PINS: connect LCD to A4/A5
*/

Widme mich jetzt dem RFM69 und SPI auf dem D1-mini ....
Wenn das geht, auch das Wroom2-Board ...

Grüße
Jürgen




Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 30 Dezember 2017, 23:24:55
Sorry, wenn ich wegen dem OT-OLED-Gedöns nerve:

Beim D1-mini-Board funktioniert eine Anzeige nur mit:
Wire.begin();

Beim Wroom2-Board nur mit
Wire.begin(D1,D2);     
Jeweils mit der gleichen Arduino Board-Einstellung auf "WEMOS D1 R2 & mini" und dem gleichen Code!

Das OLED-Display erwartet 400KHz I2C-Takt. 100 KHz geht nicht.
Das D1-Board regiert sehr sensibel mit Resets und "USB-Port busy" Meldungen.
Ist schwierig, es wieder zum "Kooperieren" zu überzeugen ...
Irgendwie hat sich auch die Autoreset-Funktion verabschiedet ... Vielleicht nützt ein 100nF an Reset.

Das sollte es jetzt gewesen sein. Ein "println" ist also mit "SSD1306Ascii" machbar.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 31 Dezember 2017, 01:03:01
Hallo Jürgen,

alles gut, bei den Problemen würde ich auch verrückt werden  ;)
Habe gerade nachgeschaut, ich arbeite mit Arduino 1.8.5,
das esp Paket "esp8266 by ESP8266 Community" ist Version 2.3.0.

RFM auf dem D1 mini sollte ja eigentlich relativ problemlos gehen  8)
Auf dem Wroom2 würde ich direkt an das esp Modul löten.

So, dann viel Erfolg ...

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 01 Januar 2018, 19:50:55
Hallo Zusammen,
ein gutes neues Jahr !

@hdgucken:
bin jetzt mit dem D1-mini soweit, dass alles geht!
Bis auf die fehlermeldung in FHEM: 

Zitat
2018.01.01 19:37:04 0: Server started with 1055 defined entities (fhem.pl:15676/2017-12-23 perl:5.014002 os:linux user:fhem pid:22900)
2018.01.01 19:37:29 1: PERL WARNING: Use of uninitialized value in addition (+) at ./FHEM/36_CustomSensor.pm line 217.
2018.01.01 19:37:29 1: PERL WARNING: Use of uninitialized value in addition (+) at ./FHEM/36_CustomSensor.pm line 218.
2018.01.01 19:37:29 1: ERROR: empty name in readingsBeginUpdate
2018.01.01 19:37:29 1: stacktrace:
2018.01.01 19:37:29 1:     main::readingsBeginUpdate           called by ./FHEM/36_CustomSensor.pm (226)
2018.01.01 19:37:29 1:     main::CustomSensor_Parse            called by fhem.pl (3702)
2018.01.01 19:37:29 1:     main::Dispatch                      called by ./FHEM/36_LaCrosseGateway.pm (686)
2018.01.01 19:37:29 1:     main::LaCrosseGateway_Parse         called by ./FHEM/36_LaCrosseGateway.pm (460)
2018.01.01 19:37:29 1:     main::LaCrosseGateway_Read          called by fhem.pl (3487)
2018.01.01 19:37:29 1:     main::CallFn                        called by fhem.pl (685)
2018.01.01 19:37:29 1: PERL WARNING: Use of uninitialized value $name in concatenation (.) or string at fhem.pl line 4416.

...
Zitat2018.01.01 19:37:29 1: PERL WARNING: Use of uninitialized value $d in hash element at fhem.pl line 4151.
2018.01.01 19:37:29 1: ERROR: >06< returned by the CustomSensor ParseFn is invalid, notify the module maintainer
2018.01.01 19:38:07 1: PERL WARNING: Bareword found where operator expected at (eval 222) line 1, near "] CO2"
2018.01.01 19:38:07 3: eval: { LGW [BME680] CO2 }
2018.01.01 19:38:07 1: PERL WARNING:    (Missing operator before CO2?)
2018.01.01 19:38:07 3: eval: { LGW [BME680] CO2 }
2018.01.01 19:38:07 1: ERROR evaluating { LGW [BME680] CO2 }: syntax error at (eval 222) line 1, near "LGW ["

Daten und IAQ werden erzeugt
Zitat[647233] P: 987.03| T: 20.67| rH: 41.70| IAQ: 30  30 (1)| Gas: 111.62| UBat: 3.27V| Light: 0lx
[650233] P: 987.01| T: 20.67| rH: 41.72| IAQ: 33  31 (1)| Gas: 111.25| UBat: 3.27V| Light: 0lx
[653233] P: 986.94| T: 20.67| rH: 41.76| IAQ: 36  33 (1)| Gas: 110.88| UBat: 3.27V| Light: 0lx
[656233] P: 987.01| T: 20.67| rH: 41.79| IAQ: 34  34 (1)| Gas: 110.95| UBat: 3.27V| Light: 0lx
[659233] P: 987.01| T: 20.67| rH: 41.80| IAQ: 37  35 (1)| Gas: 110.66| UBat: 3.27V| Light: 0lx
[662233] P: 986.97| T: 20.67| rH: 41.80| IAQ: 37  35 (1)| Gas: 110.66| UBat: 3.27V| Light: 0lx
[665233] P: 986.92| T: 20.68| rH: 41.82| IAQ: 32  35 (1)| Gas: 110.95| UBat: 3.27V| Light: 0lx
[668233] P: 986.86| T: 20.67| rH: 41.85| IAQ: 37  36 (1)| Gas: 110.51| UBat: 3.27V| Light: 0lx

Habe noch eine Mittelwert-Bildung hinzugefügt, mit dem Risiko das BSEC-Timing zu stören ....
Steigt aber nach einiger Zeit mit einem WDT-Error aus.

Grüße,
Jürgen

EDIT: nach FHEM Update:
Zitat2018.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!
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 01 Januar 2018, 20:04:59
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.

Erweitert: Vcc für den ESP und Mittelwertbildung für IAQ mit 6 Readings.
Die Unterscheidung Adafruit- und SSD1306ASCII-Lib ist nur auf letztere ausgeprägt, baue ich aber ein.
Falls es keine Probleme mit der Adafruit-Lib geben sollte, kann man switchen.
Funktionierende VCC-Messung  für ESP mit Workaround eingebaut. (Siehe Kommentare in Code)

BME680-Breakout: Watterot
OLED-Modul: weiss .

Der WDT-Fehler kommt sporadisch nach unterschiedlichen Zeiten ...
Mein D1mini ist allerdings auch sehr unstabil ...  :o

Evtl. spendiere ich noch ein 100µF Elko auf die 3V3-Leitung oder einen separaten 3V3-LDO-Regler auf 5V.

Spezieller Dank an hdgucken.

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 01 Januar 2018, 20:08:26
Zitat von: juergs am 01 Januar 2018, 20:04:59
Hier meine Code-Änderungen für das D1-mini Board.
Bis auf das OLED macht der nano LGW (https://forum.fhem.de/index.php?action=dlattach;topic=51329.0;attach=86429) das gleiche (oder war's dasselbe  ????).

Gruß PeMue
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: JoWiemann am 01 Januar 2018, 20:10:56
Zitat von: PeMue am 01 Januar 2018, 20:08:26
Bis auf das OLED macht der nano LGW das gleiche (oder war's dasselbe  ????).

Gruß PeMue

Nun ja, wir essen die gleiche Birne, können unser aber die selbe nur teilen  ;)

Grüße Jörg
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 01 Januar 2018, 20:16:48
Zitat von: PeMue am 01 Januar 2018, 20:08:26
Bis auf das OLED macht der nano LGW das gleiche (oder war's dasselbe  ????).

Gruß PeMue

Hallo PeMue,
ja im Prinzip vom Schaltplan her schon, ist aber für die CustomSensor-Implementierung von hdgucken.
Aber auch die Vorstufe für das andere WROOM2-Board, welches wohl nur mit Soft-SPI läuft. 
Leider nur Draft-Version .. mit Adapter für das D1+OLED-Board und Verkabelung für den RFM69  ;)
Für den Fall, dass es jemand interessieren sollte...  :D
Zitatnano LGW
Schau mir den mal an ...

ZitatNun ja, wir essen die gleiche Birne, können unser aber die selbe nur teilen  ;)
Softwaretechnisch:  gleiche = Typ  und  selbe = Instanz
Automobiltechnisch: SachNummer und   IdentNummer  ....    ;)


Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 01 Januar 2018, 21:56:43
Zitat von: PeMue am 01 Januar 2018, 20:08:26
Bis auf das OLED macht der nano LGW (https://forum.fhem.de/index.php?action=dlattach;topic=51329.0;attach=86429) das gleiche (oder war's dasselbe  ????).
Habe oben den Link zum aktuellen Schaltplan eingefügt.

Gruß PeMue
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 01 Januar 2018, 22:06:55
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 ...)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 01 Januar 2018, 22:51:47
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

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 01 Januar 2018, 23:44:32
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
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 02 Januar 2018, 14:43:15
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
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 02 Januar 2018, 20:09:23
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 (https://github.com/jowiemann/DBPlan-for-Fhem/blob/master/FHEM/98_DBPlan.pm) Zeile 65 und Beispiel2.pm (https://github.com/jowiemann/fhemduino_modules/blob/master/14_FHEMduino_Gas.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.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 02 Januar 2018, 20:49:57
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
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 02 Januar 2018, 21:08:23
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 ...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 03 Januar 2018, 00:33:24
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
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 03 Januar 2018, 08:00:08
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
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 03 Januar 2018, 18:27:19
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)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 03 Januar 2018, 21:01:24
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

 
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 03 Januar 2018, 21:07:16
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 (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 ?
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 03 Januar 2018, 21:13:38
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


Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 03 Januar 2018, 21:28:15
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 (https://forum.fhem.de/index.php?action=dlattach;topic=78619.0;attach=92760) an?

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

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

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 04 Januar 2018, 08:11:23
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
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 04 Januar 2018, 11:04:37
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?

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 04 Januar 2018, 15:52:53
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 ...

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 04 Januar 2018, 16:02:01
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.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 04 Januar 2018, 16:03:48
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 (https://forum.fhem.de/index.php/topic,78385.msg703398.html#msg703398)

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

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 04 Januar 2018, 16:10:27
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};
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 04 Januar 2018, 16:11:36
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 (https://forum.fhem.de/index.php/topic,78385.msg703398.html#msg703398)
Auch interessant ...  :)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 04 Januar 2018, 16:20:07
Zitat################################################
define bme680_cc CustomSensor  0.0 0.0
attr bme680_cc ID 06
################################################

@Thomas, wie sieht deine Def aus?
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 04 Januar 2018, 16:23:04
Hier mal meine Sensor Definition aus der fhem.cfg:
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 04 Januar 2018, 16:24:41
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!?
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 04 Januar 2018, 16:50:41
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  ;) ;) ;)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 04 Januar 2018, 17:59:21
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 (https://wiki.fhem.de/wiki/Dewpoint)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 04 Januar 2018, 18:06:06
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
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 04 Januar 2018, 18:27:04
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
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 04 Januar 2018, 20:16:14
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
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 04 Januar 2018, 21:16:20
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
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 04 Januar 2018, 21:53:53
Hallo Zusammen,

ich habe heute noch die Installation der ESP-Lib auf die 2.4 hochgehoben und die BSEC für den ESP
auf meinem Laptop installiert, außer den einfachen Hürden bei der Konfiguration nachzujagen.    ;) ;) ;)

Ziel: Abhängigkeit der WDT-Fehler zum verwendeten 2.4RC-Package zu prüfen.
Leider ohne Erfolg. Es kommen immer noch zu viele WDT-Resets zustande, aber in geringerer Häufigkeit ....

Dann habe ich heute die 18650-Powerbank-Platinen (https://www.ebay.com/p/Raspberry-Pi-WeMos-18650-Battery-Shield-V3-Esp32-for-Arduino/23005990202) bekommen, die ein StepUp-Regler für 5V (5A) und einen für 3V3 (3A) haben ...
Jetzt lassen sich die WemosD1 auch autark über längere Zeit betreiben.

Dann probiere ich auch mal hdgucken's BIN-Version aus:
Edit: geht nicht mit D1 mini + 0x77 + oled ...

Grüße,
Jürgen

By-the-way "Deep Sleep": https://myesp8266.blogspot.de/2017/07/battery-powered-wemos-d1-with-wemoss.html (https://myesp8266.blogspot.de/2017/07/battery-powered-wemos-d1-with-wemoss.html)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 04 Januar 2018, 22:30:08
Hallo Jürgen,

Zitat von: juergs
Dann probiere ich auch mal hdgucken's BIN-Version aus:
Edit: geht nicht mit D1 mini + 0x77 + oled ...
Ist nur NodeMCU(D1mini) und RFM69, ohne OLED usw., kommt was auf der seriellen ?

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 04 Januar 2018, 22:42:58
Nein, immer das "Aufhäng"-Problem: bläst gefühlt 80MHZ auf D3 raus... New Serial im Sekundentakt.....
Schwierig den Mini da wieder herauszubekommen. Geht nur manchmal mit "Blank" über den ESP6288-Flasher ...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 04 Januar 2018, 22:48:33
OK, nicht schön.
Dann teste ich morgen mal ein wenig,
mal sehen ob es auf einer NodeMCU läuft.

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 04 Januar 2018, 22:56:53
Kein Problem ...
Man sollte über ein Auto-Config nachdenken ...

Was mich noch stört ist, dass bei Dir die Adafruit-Lib geht ....

Für Peter kann ich gerne eine Version ohne OLED bauen ...


Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 04 Januar 2018, 23:01:28
So, nur als Gag:
https://www.neowin.net/news/microsoft-unveils-pre-order-information-on-the-windows-10-glas-thermostat (https://www.neowin.net/news/microsoft-unveils-pre-order-information-on-the-windows-10-glas-thermostat)
Kostet nur 319$
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 05 Januar 2018, 07:53:53
So, hab jetzt mal zwei Binarys kompiliert, einmal für NodeMCU und einmal für D1 mini.
Jeweils nur mit BME680 und RFM69. Ohne OLED und Lichtsensor, keine Vcc Messung.
Vielleicht klappt es ja jetzt mit dem D1 mini :)

Gruß Thomas

Edit: für NodeMCU funktioniert es bei mir:
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 05 Januar 2018, 08:43:11
Hallo Thomas,

D1 mini geht, aber (auch) WDT-Problem:
ZitatBME680 wireless sensor V1.6
Protocol: CustomSensor
BSEC Version: 1.4.5.1
NODE-ID : 6
RFM69 found.
RFM69 initialized.
BME680: try init on 0x77 ... done.
Ready, start measuring ...

[3091.00] P: 988.27| T: 17.48| rH: 51.32| IAQ: 25.00 (0)| Gas: 115885.00
[6091.00] P: 988.25| T: 17.48| rH: 51.33| IAQ: 25.00 (0)| Gas: 123246.00
[9091.00] P: 988.25| T: 17.50| rH: 51.18| IAQ: 25.00 (0)| Gas: 129060.00
[12091.00] P: 988.27| T: 17.51| rH: 51.06| IAQ: 25.00 (0)| Gas: 132126.00
[15091.00] P: 988.25| T: 17.52| rH: 50.98| IAQ: 25.00 (0)| Gas: 135450.00

ets Jan  8 2013,rst cause:4, boot mode:(3,7)

wdt reset
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
ve9e0c112
~ld

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 05 Januar 2018, 10:48:40
Ich habe noch mal das Bosch-Original-Beispiel laufen lassen (ausser: Luftdruck noch in die serielle Ausgabe gepackt)

Zitat[213275.00] T: 16.49| rH: 56.84| P: 98837.00| IAQ: 25.00 (0)
[216275.00] T: 16.49| rH: 56.83| P: 98835.00| IAQ: 25.00 (0)

ets Jan  8 2013,rst cause:4, boot mode:(1,6)

wdt reset

Was zu beweisen war ...  :'(
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 05 Januar 2018, 10:56:31
Daraufhin habe ich geprüft, wie die sleep-Methode aus der Lib aufgerufen wird:
Zitat[12082.00] T: 16.56| rH: 57.51| P: 98825.00| IAQ: 25.00 (0)
sleep: 2756
sleep: 218
sleep: 5
sleep: 5
sleep: 5
sleep: 5
[15082.00] T: 16.57| rH: 57.42| P: 98825.00| IAQ: 25.00 (0)
sleep: 2755

Der Wert "sleep: 2756" mit ca. 2.7 Sekunden ist mit den anderen Aktivitäten OLED und RFM sehr nahe an den kritischen 3.6 Sekunen!

Mit micros() Auflösung:
Zitat*9*   [6.32]  T: 16.76| rH: 57.35| P: 98746| IAQ: 25.00 (0)
*10*   [9.32]  T: 16.78| rH: 57.06| P: 98744| IAQ: 25.00 (0)
*9*   [12.32]  T: 16.80| rH: 56.68| P: 98744| IAQ: 25.00 (0)
*10*   [15.32]  T: 16.80| rH: 56.49| P: 98746| IAQ: 25.00 (0)
*195*   [18.32]  T: 16.81| rH: 56.29| P: 98744| IAQ: 25.00 (0)
*10*   [21.32]  T: 16.81| rH: 56.18| P: 98744| IAQ: 25.00 (0)
*9*   [24.32]  T: 16.83| rH: 56.02| P: 98746| IAQ: 25.00 (0)
*9*   [27.32]  T: 16.82| rH: 55.89| P: 98744| IAQ: 25.00 (0)
*10*   [30.32]  T: 16.82| rH: 55.74| P: 98746| IAQ: 25.00 (0)
*9*   [33.33]  T: 16.83| rH: 55.64| P: 98746| IAQ: 25.00 (0)
*10*   [36.33]  T: 16.84| rH: 55.63| P: 98746| IAQ: 25.00 (0)
*9*   [39.33]  T: 16.83| rH: 55.70| P: 98746| IAQ: 25.00 (0)
*9*
ets Jan  8 2013,rst cause:4, boot mode:(3,6)

wdt reset
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
vf6d232f1
~ld


Lib sleep-Anforderungen mit yield():
Zitat*2756046µS,    2756mS *
*218045µS,    218mS *
*5035µS,    5mS *
*5026µS,    5mS *
*5028µS,    5mS *
*5028µS,    5mS *
   [27.60]  T: 16.86| rH: 58.12| P: 987| IAQ: 25.00 (0)

Zitat/*!
* @brief           System specific implementation of sleep function
* @param[in]       t_ms    time in milliseconds
* @return          none
*/
void sleep(uint32_t t_ms)
{
    int32_t duration = 0;
    int32_t duration_all = 0;
    int32_t start = micros();;
         
    yield();   
    delay(t_ms);   
    yield();
   
    duration_all = (micros() - start);       
   
    Serial.print("*");     
    Serial.print(duration_all);Serial.print("µS, \t");
    Serial.print(t_ms);Serial.println("mS *");
}

2 * yield() läuft bisher am "stabilsten"...

Umsonst, nach 24 Sekunden:
Zitat[3]  T: 17.3 | rH: 57.6 | P: 987 | IAQ: 25 (0)
   [6]  T: 17.3 | rH: 57.6 | P: 987 | IAQ: 25 (0)
   [9]  T: 17.3 | rH: 57.4 | P: 987 | IAQ: 25 (0)
   [12]  T: 17.3 | rH: 57.4 | P: 987 | IAQ: 25 (0)
   [15]  T: 17.3 | rH: 57.3 | P: 987 | IAQ: 25 (0)
   [18]  T: 17.3 | rH: 57.3 | P: 987 | IAQ: 25 (0)
   [21]  T: 17.3 | rH: 57.3 | P: 987 | IAQ: 25 (0)
   [24]  T: 17.3 | rH: 57.2 | P: 987 | IAQ: 25 (0)

ets Jan  8 2013,rst cause:4, boot mode:(3,6)

wdt reset
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
vf6d232f1
~ld
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 05 Januar 2018, 23:08:27
Wegen den WDT-Fehlern habe ich versucht, mal ohne den ESP8266 auszukommen
und habe einen ehemaligen MapleCUL (MapleMini (http://wiki.stm32duino.com/images/2/26/Maple_mini_clone_schematic.JPG)) wieder auf den Arduino-DFU-Bootloader  "zurückgeholt",
(was wirklich nicht einfach ist...) und den BME680_CC-Sketch auf STM32-MapleMini gehievt.

Es ist noch ohne Senden über RFM und Vcc-Erkennung implementiert, funktioniert soweit mit 100 KHz I2C
an I2C-Schnittstelle 1 des Maples. Das lässt sich wahrscheinlich noch optimieren ...

Wichtig ist ja die 4-Tage-Einlaufphase .... (Mit WDT-Fehlern beim ESP wird das nichts...)

Mal schauen, wie es auf dieser Plattform funktioniert.
Dann kommt der RFM noch hinzu....

Zitat[2555705] P: 991.67| T: 20.79| rH: 50.39| IAQ: 26  30 (1)| Gas: 181.28| UBat: 3.59V| Light: 0lx
[2558705] P: 991.69| T: 20.78| rH: 50.36| IAQ: 36  31 (1)| Gas: 180.11| UBat: 3.59V| Light: 0lx
[2561705] P: 991.65| T: 20.79| rH: 50.29| IAQ: 32  32 (1)| Gas: 180.69| UBat: 3.59V| Light: 0lx
[2564705] P: 991.65| T: 20.79| rH: 50.29| IAQ: 28  31 (1)| Gas: 181.47| UBat: 3.59V| Light: 0lx
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 05 Januar 2018, 23:48:56
Hey, das sieht doch mal gut aus ;)
Habe heute auch meine Software überarbeitet, hatte einen kleinen Verrechnungsfehler beim Gas Wert  entdeckt :o,
ist aber behoben. Bin jetzt doch auf die Vcc intern Methode gegangen, entsprechend korrigiert,
sieht ganz gut aus. Debug für den RFMxx etwas erweitert, einige Kleinigkeiten korrigiert, alle Extras sind jetzt An/Abwählbar.
Muss alles noch ordentlich verpacken  ;D Stelle ich Euch morgen früh zur Verfügung  :)

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 06 Januar 2018, 00:05:14
Soft-SPI für das Wroom2.Board:
https://github.com/gieemek/RFM69_softSPI (https://github.com/gieemek/RFM69_softSPI)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 06 Januar 2018, 08:36:03
Hier wie versprochen das komplette Paket auf dem neuesten Stand (V1.7):

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 06 Januar 2018, 08:56:50
Guten Morgen Thomas,

vielen Dank. Zwei Punkte von meiner Seite:
- Was ist der Unterschied zwischen NodeMCU und WemosD1 mini?
- Könntest Du die beiden bitte noch für 0x76 (ist leider bei meinem nanoLGW eingestellt, der Jumper ist unter dem ESP8266 (ich könnte den Layouter killen  ::) ::) ::))) compilieren?

Danke + Gruß

Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 06 Januar 2018, 10:01:59
Guten Morgen Peter,

hier nochmal die Versionen mit Adresse 0x76 und 0x77  ;)
D1 mini und NodeMCU sind eigentlich fast identisch, D1 mini hat weniger Pins nach außen geführt und die LED sitzt woanders,
und die USB Chips sind verschieden, aber da baut ja eh jeder Hersteller was anderes ein  :o
Edit: die LED an GPIO16 (D0) der NodeMCU gibt es beim D1 mini nicht.

Für Jürgen hab ich auch was zusammengestellt, die Version mit SoftSPI !
Funktioniert, hab bei mir getestet  :D
Änderungen sind im Sketch und den Dateien RFMxx.h / RFMxx.cpp.
Edit: einfach im Sketch die gewünschten Pins für MOSI,MISO,SCLK und CS eintragen, fertig  :)

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 06 Januar 2018, 11:33:45
Hallo Thomas,

das ist ja ein Service, vielen Dank!  :D

Mein Maple-Aufbau ist diese Nacht durchgelaufen und reagiert
(was hätte man anders erwartet!) stabil mit durchaus plausiblen Werten.
Auch mit schneller Reaktion z.B. beim Fenster öffnen (von 150 wieder auf 30 zurück) ....
Da muss ich aber die BurnIn-Phase von 4 Tagen noch abwarten ...  :)

Nach dem die SW auf dem ESP nicht  mehr bei der Analyse her gibt. Müsste ich mich noch auf den I2C-Bus konzentrieren.
Vielleicht liegt da das Problem ...

Dann kann ich den Code schon mal im Wroom-Board einbauen ....

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 06 Januar 2018, 20:38:41
Macht es Sinn?
https://forum.fhem.de/index.php/topic,52921.135.html (https://forum.fhem.de/index.php/topic,52921.135.html)
https://forum.fhem.de/index.php/topic,52921.msg527954.html#msg527954 (https://forum.fhem.de/index.php/topic,52921.msg527954.html#msg527954)

Zitatch habe auch diverse NodeMCUs (v0.9, v2, v3) und ESP12, ESP12e, z.T. mit den unterschiedlichsten Problemen. Nachdem ich aber das BIOS ESP8266_NONOS_SDK_V2.0.0 (http://bbs.espressif.com/viewtopic.php?f=46&t=2502) aufgespielt habe, sind meine Probleme alle weg.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 06 Januar 2018, 21:25:24
Maple-Mini: Soft SPI scheint mal zu "zucken"
#if (HAS_RFM_MODULE)
    /* RFM69, PIN-config SPI (GPIO XX): */
    #define RFM_SS           PA4 //(15,D8)   SS  -> RFM69 (NSS)
    #define RFM_MISO         D12 //(12,D6) MISO  <- RFM69 (MOSI) //only used by soft spi
    #define RFM_MOSI         D11 //(13,D7) MOSI  -> RFM69 (MISO) //only used by soft spi
    #define RFM_SCK          D13 //(14,D5)  SCK  -> RFM69 (SCK)  //only used by soft spi
    #define RFM_IRQ          PB0 //(2,D4)  IRQ  <- RFM69 (DIO0) (Not Connected)
   
    //--- create rfm instance
    RFMxx                    rfm(RFM_MOSI, RFM_MISO, RFM_SCK, RFM_SS, RFM_IRQ);
#endif

LGW empfängt aber noch nichts .... muss noch gegen den ESP checken ...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 06 Januar 2018, 22:11:18
ESP8266-SPI

Der Maple (~96KHz) taktet den SPI doppelt so schnell wie der ESP (~40KHz) ...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 06 Januar 2018, 22:35:30
Na, geht doch...  ;D

DeviceId=7

Während der ESp immer noch schön WDT-resettet ...   :(
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 06 Januar 2018, 23:35:06
Noch zum Thema "WDT-Reset":

https://www.hackster.io/rayburne/esp8266-turn-off-wifi-reduce-current-big-time-1df8ae (https://www.hackster.io/rayburne/esp8266-turn-off-wifi-reduce-current-big-time-1df8ae)

Das sollte die Lösung sein:

    1) Include a minimum of the below before setup(void)

// ------------------begin ESP8266'centric----------------------------------
#define FREQUENCY    160                  // valid 80, 160
//
#include "ESP8266WiFi.h"
extern "C" {
#include "user_interface.h"
}
// ------------------end ESP8266'centric------------------------------------

    2) Include a minimum of the below in setup(void)

/* Initializations */
// ------------------begin ESP8266'centric----------------------------------
WiFi.forceSleepBegin();                  // turn off ESP8266 RF
delay(1);                                // give RF section time to shutdown
system_update_cpu_freq(FREQUENCY);
// ------------------end ESP8266'centric------------------------------------

    3) Include a minimum of the below in loop(void)

// ------------------begin ESP8266'centric----------------------------------
// patch the watchdog timer
wdt_reset();
// ------------------end ESP8266'centric------------------------------------


In unserem Fall also in Funktion output_ready  :D

Und läuft seit einer Stunde ohne WDT-Reset!  :D :) :)
(.. obwohl ich das Frequenzsetting auf 160 belassen hatte, sollte 80 sein ...)

EDIT:
Der ESP ist die ganze Nacht ohne WDT-Reset durchgelaufen !  :D :)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 06 Januar 2018, 23:51:36
Hallo Jürgen,

Zitat von: juergs
https://www.hackster.io/rayburne/esp8266-turn-off-wifi-reduce-current-big-time-1df8ae (https://www.hackster.io/rayburne/esp8266-turn-off-wifi-reduce-current-big-time-1df8ae)
Das hatte ich mir auch schon angesehen, könnte tatsächlich die Lösung sein.

Wobei dieses hier "ESP8266_NONOS_SDK_V2.0.0" sich noch besser anhört, finde ich, weil man da offensichtlich
nichts mehr weiter am Programm machen muss. Für mich hört sich das so an, als ob mit dieser Firmware der
ESP8266 ohne WiFi im Hintergrung läuft, wenn das überhaupt machbar ist ?!

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 06 Januar 2018, 23:57:57
Hi,

läuft immer noch ...  :)
Die Stromreduzierung sollte auch beachtlich sein ...
Schaue mir das morgen früh mal an, wie stabil das Ganze jetzt ist ....
Der BME muss auch mit dem ESP mal Laufzeit zum BurnIn bekommen ...

Edit: Läuft stabil! (Laut Log, die gesamte Nacht ohne WDT-Reset)  :)

Das Thema "ESP8266_NONOS_SDK_V2.0.0" werde ich mal in Ruhe separat betrachten  ;)

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 07 Januar 2018, 11:47:22
Hallo hdgucken,

hatte Deine Anmerkung im Thread:
https://forum.fhem.de/index.php/topic,78128.msg740119.html#msg740119 (https://forum.fhem.de/index.php/topic,78128.msg740119.html#msg740119)
gesehen und werde mal mit dem Maple etwas experimentieren müssen ...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 07 Januar 2018, 12:47:53
Hallo Jürgen,

beim Maple wäre es mal interessant, wie hoch man mit dem SPI Takt kommt, laut Datenblatt sollte der RFM69CW bis 10MHz können !
Ich denke, 1MHz bei der Hardware-SPI Variante sollte kein Problem sein (1MHz ergibt sich beim ESP8266, wenn man keine Frequenz vorgibt),
bei mir (mit Hardware-SPI) geht es tatsächlich nur mit 400kHz, hab gestern mal mein neues "Spielzeug" ausprobiert, siehe Bild  :)


Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 07 Januar 2018, 15:27:47
Ist der Lüfter des Rigols auch so laut wie mein DS?   :(
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 07 Januar 2018, 15:37:05
Ja, leider. Ist mir auch gleich als erstes sehr unangenehm aufgefallen  :-[
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 07 Januar 2018, 15:40:59
Ich habe mir eine Haube 3D-gedruckt, die den Luftstrom nach hinten ablenkt ....
Jetzt ist das Geräusch auf Dauer erträglicher ...  ;)
Aber trotzdem, dass die Rigol'er das nicht besser können ....

Schön, mit Seriell-Modul ....  :)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 09 Januar 2018, 18:42:05
Anmerkung zum Wroom2-Oled-Board:

/* init I2C */
    #if (IS_WROOM2_BOARD) 
      //--- für Wroom2-Board geht nur diese Variante(!):
      //--- Grund: https://github.com/esp8266/Arduino/blob/master/libraries/Wire/Wire.cpp
  //--- Konstruktor: TwoWire::begin(int sda, int scl)
  //--- ESP8266-Hardware: SDA = D2 und SCL = D1, ergo: auf dem Wroom2-Board ist die Standard-I2C-Belegung verdreht!
      Wire.begin(D1,D2);         
    #else
      Wire.begin();         
    #endif


Deswegen funktioniert die übliche Variante nicht.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 09 Januar 2018, 20:45:46
Hallo Jürgen,

auf die Drehung der Signale hatte ich gar nicht geachtet, hab nur D1 und D2 gesehen und dachte paßt  :o
Hab jetzt für den BME680 automatische Erkennung auf 0x76 oder 0x77 beim Universalsensor eingebaut,
endlich ist das Problem auch gelöst  ;)
Siehe hier:https://forum.fhem.de/index.php?topic=78128.msg745634#msg745634 (https://forum.fhem.de/index.php?topic=78128.msg745634#msg745634)

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 09 Januar 2018, 20:50:14
Zitathatte ich gar nicht geachtet, hab nur D1 und D2 gesehen und dachte paßt

ja, so ging's mir auch. Man wundert sich nur dass der Sketch für OLED nicht geht. Klar wenn die Signale gedreht sind...
Im Moment suche ich noch Pins für den RFM. Irgendwie wollen die, die ich verwende, nicht ...
Da Board benutzt 2 LEDS D4 + D0, dann noch I2C mit D1 + D2

Eigentlich sollten:
SCK   = D5
MISO = D6
MOSI = D7
SS     = D8
des ESPs funktionieren....


Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 09 Januar 2018, 21:27:48
Ja, D5-D8 wäre optimal, Hardware SPI. Das klappt nicht ?
Versuch mal, wenn Du Soft-SPI benutzt, die GPIO Nummern zu verwenden, also für D5: 14, D6: 12, D7: 13 und D8: 15.
Vielleicht will es deswegen nicht.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 11 Januar 2018, 17:24:30
Hallo zusammen,

welche Einstellungen nehmt Ihr zum Kompilieren?
Generic ESP module
Flash mode: DIO
Flash size: 4 MB/1MB SPIFFS

Ist das so ok? Zumindest habe ich mal die IDE eingerichtet, dass Thomas' Projekt compiliert wird  ;D ;D ;D

BTW: Ohne Jürgen's verlinkte Dokumentation wäre ich nicht in der Lage gewesen, die Bibliothek einzubinden  >:( >:( >:(

Danke + Gruß

Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 11 Januar 2018, 20:39:10
Hallo Peter,

Zitatwelche Einstellungen nehmt Ihr zum Kompilieren?
Board: "NodeMCU 1.0 (ESP-12E Module)" oder "WEMOS D1 R2 & mini", je nach Board.
Flash Size: "4M (3M SPIFFS), CPU Freq.: 80MHz, Upload Speed: 921600

ZitatBTW: Ohne Jürgen's verlinkte Dokumentation wäre ich nicht in der Lage gewesen, die Bibliothek einzubinden  >:( >:( >:(
Das ist natürlich etwas fummelig, hatte ich in meiner Doku nur zur Hälfte aufgeschrieben, hab auch wieder etwas gesucht,
als ich die esp8266 V2.4.0 aufgespielt hab, wußte aber zum Glück noch, wo es geschrieben steht  ;D

Boards einfügen:
unter "Datei" -> "Voreinstellungen" -> "Zusätzliche Boardverwalter-URL's" folgendes eintragen: "http://arduino.esp8266.com/stable/package_esp8266com_index.json"
Danach kannst Du unter "Werkzeuge" -> "Board" das passende auswählen  ;)

Edit: Für Peter zum kompilieren mal die V2.0 alpha anbei, viel Erfolg  ;)

Gruß Thomas





Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 11 Januar 2018, 21:55:10
Hallo Thomas,

ich kämpfe wieder mit den Tücken des Wroom2-Boards:

Wir benutzen:
RFMxx  rfm(RFM_MOSI, RFM_MISO, RFM_SCK, RFM_SS);
zur Initialisierung der RFM-Lib.

Als Konstruktor in der Lib steht:
RFMxx::RFMxx(byte mosi, byte miso, byte sck, byte ss, byte irq, TPinCallback pinFunction)

Dann als CodeBeispiel der Lib:

bool RFMxx::Begin(bool isPrimary) {
  // No radio found until now
  m_radioType = RFMxx::None;

  if (m_pinCallback) {
    m_pinCallback(1, m_ss, OUTPUT);
    m_pinCallback(2, m_ss, HIGH);

...
  }


und
void RFMxx::SetPin(byte pin, bool value) {
  if (m_pinCallback) {
    m_pinCallback(2, pin, value);
  }
  else {
    digitalWrite(pin, value);
  }
}


Wenn "m_pinCallback" nicht true ist wird der SS-Pin nicht korrekt initialisiert.
Die Funktionalität ist mir nicht ganz klar ... Grübel. (und die Pins machen im Wroom mit der RFM-Lib kein Muckser  :'(,   
obwohl ein Blink auf jeden einzelnen Pin geht ... ) .
Mal schauen wie die Implementierung hier eigentlich gedacht ist..
Für den ESP habe ich auch nicht wirklich gute (passende) Ersatz-RFM-Libs gefunden ....

Mich wundert nur, dass es im NodeMCU einfach "so" geht....  (Initialisierung ohne IRQ und den Callback.) ???

EDIT, Deswegen im Header:
ZitatRFMxx(byte mosi=255, byte miso=255, byte sck=255, byte ss=255, byte irq=255, TPinCallback pinFunction = NULL);


Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 11 Januar 2018, 22:02:03
Hallo Thomas,

Zitat von: hdgucken am 11 Januar 2018, 20:39:10
Boards einfügen:
unter "Datei" -> "Voreinstellungen" -> "Zusätzliche Boardverwalter-URL's" folgendes eintragen: "http://arduino.esp8266.com/stable/package_esp8266com_index.json"
Danach kannst Du unter "Werkzeuge" -> "Board" das passende auswählen  ;)
das war nicht das Problem, das hatte ich schon drin. Bei mir war das Thema die BSEC Library. Das was Bosch da gerade noch in der Dokumentation hat, reicht m.E. nicht aus, um die IDE einzurichten  :o

Zitat von: hdgucken am 11 Januar 2018, 20:39:10
Board: "NodeMCU 1.0 (ESP-12E Module)" oder "WEMOS D1 R2 & mini", je nach Board.
Flash Size: "4M (3M SPIFFS), CPU Freq.: 80MHz, Upload Speed: 921600
Ich hätte das Ganze unter Generic ESP Module (so wie ich damals ESPEasy compiliert habe) compiliert. Die Unterschiede ja quasi nicht vorhanden ...
Ist der Flash mode egal? Oder muss der nachher nur zum Flasher passen?

Danke + Gruß

PeMue
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 11 Januar 2018, 22:06:49
Hallo Peter,

die Unterschiede sind in der Boards.txt Datei der Plattform ersichtlich.

Bei mir liegt die dort:
C:\Users\<user>\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc1\boards.txt

"d1_mini.name=WeMos D1 R2 & mini" gegen "Generic ESP8266 Module"  vergleichen.

Da gibt es schon Unterschiede: siehe unten ...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: SimGa am 11 Januar 2018, 22:43:08
Hallo zusammen,

hat eigentlich jemand den Ansatz weiter verfolgt, aus den aufgezeichneten Sensordaten Rückschlüsse auf den Algorithmus zu schließen?

Im internet habe ich bisher nur einen eher schlechten(zumindest hier in Colorado funktioniert er schlecht) alternativen Algorithmus gefunden, der sich aus dem Widerstand und der Luftfeuchte nährt.

Ich bin bezüglich des FHEM-Projects vollkommen fremd, aber viele von euch scheinen sich da schon echt den Kopf über den Sensor zerbrochen haben...

viele Grüße
SimGa
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: HCS am 12 Januar 2018, 11:30:09
Zitat von: SimGa am 11 Januar 2018, 22:43:08
hat eigentlich jemand den Ansatz weiter verfolgt, aus den aufgezeichneten Sensordaten Rückschlüsse auf den Algorithmus zu schließen?
Ich denke, dass das Grundprinzip so aussieht: Die BSEC-Software rechnet sich über einen Zeitraum von einigen Tagen eine basline, wobei die niedrigste gesehene Schadstoffkonzentration als IAQ25 betrachtet wird und bei einem sinkenden Widerstand dreht sie die IAQ hoch und umgekehrt, unabhängig vom jeweiligen Absolutwert.
Und irgendwie rechnet sie die Luftfeuchtigkeit noch mit rein.

Ich finde es aber ein Unding, einen Sensor auf den Markt zu bringen und nicht zu verraten, was er (und die erforderliche Lib) eigentlich wirklich macht.
Zumindest den Einfluss von Heizdauer und Zieltemperatur und die Bedeutung des resultierenden Widerstands sollte man erfahren, um den Sensor vernünftig verwenden zu können.

Zitat von: SimGa am 11 Januar 2018, 22:43:08
..., aber viele von euch scheinen sich da schon echt den Kopf über den Sensor zerbrochen haben...
Bisher der Kopf zerbrochen, jetzt bin ich aber kurz davor, den Sensor zu zerbrechen ...  ;D ;D ;D
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 12 Januar 2018, 16:54:28
Zitat von: hdgucken am 11 Januar 2018, 20:39:10
Für Peter zum kompilieren mal die V2.0 alpha anbei, viel Erfolg  ;)
Grrr, mit Lichtsensor geht es nicht
ZitatAS_BH1750.h nicht gefunden
aber ohne dann doch (wegen Compiler direktive). Ich dachte immer, es reicht auch, wenn man die Bibliotheken in ein Verzeichnis libraries im Projektverzeichnis legt, aber dem ist scheinbar nicht so  >:( >:( >:(
Ich denke, die die Arduino IDE und ich werden keine Freunde mehr  :P

Zitat von: HCS am 12 Januar 2018, 11:30:09
Bisher der Kopf zerbrochen, jetzt bin ich aber kurz davor, den Sensor zu zerbrechen ...  ;D ;D ;D
Hm, dafür war der aber zu teuer  ;D ;D ;D

Gruß PeMue
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 12 Januar 2018, 17:02:44
Zitat von: PeMue am 12 Januar 2018, 16:54:28
Grrr, mit Lichtsensor geht es nicht  aber ohne dann doch (wegen Compiler direktive). Ich dachte immer, es reicht auch, wenn man die Bibliotheken in ein Verzeichnis libraries im Projektverzeichnis legt, aber dem ist scheinbar nicht so  >:( >:( >:(
Ich denke, die die Arduino IDE und ich werden keine Freunde mehr  :P

#if HAS_LIGHTSENSOR
  #include <AS_BH1750.h>
#endif


Dann ist die Lib im Library-Verzeichnis gemeint. Im Selben Verzeichnis mit #include "AS_BH1750.h" liegt der Lib-Code im selben Verzeichnis..
Komischerweise findet die Arduinino-Ide den Code auch im Lib-Verzeichnis, wenn  Anführungstriche verwendet werden ...

PS: Wo gibt's den Lichtsensor ?

Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 12 Januar 2018, 17:08:33
Hallo Thomas,

hier gäbe es noch "Inspirationen" zum Thema OLED:

http://www.technoblogy.com/show?WNM (http://www.technoblogy.com/show?WNM)

Z.B. "schneller Display-Puffer"

... und noch einige andere Interessantheiten  ;D

Grüße,

Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 12 Januar 2018, 19:15:00
Neuigkeiten zum Wroom2-Board:

Die RFMxx-Lib lässt sich zwar auf Soft-SPI konfigurieren, aber die zugrunde liegende SPI.h aus
der ESP-Plattform Lib leider nicht!

Aus der SPI.cpp:
Zitatbool SPIClass::pins(int8_t sck, int8_t miso, int8_t mosi, int8_t ss)
{
    if (sck == 6 &&
        miso == 7 &&
        mosi == 8 &&
        ss == 0) {
        pinSet = SPI_PINS_HSPI_OVERLAP;
    } else if (sck == 14 &&
              miso == 12 &&
               mosi == 13) {
        pinSet = SPI_PINS_HSPI;
    } else {
        return false;
    }

    return true;
}

Nach Korrektur der Verdrahtung des RFM69 auf:
MOSI  = D7  (GPIO_13)
MISO  = D6  (GPIO_12)
SCK   = D5  (GPIO_14)
SS    = D8  (GPIO_15)


... also ESP-Standard-Belegung! Kein Soft-SPI!
In dieser Konstellation funktioniert das Board endlich.  :D
Leider bietet das Board die SPI-Pins nicht nach aussen an ...  :(
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 12 Januar 2018, 19:56:59
@HCS, hdgucken:
Zitat2018-01-12 19:54:12 LaCrosseGateway LGW UpTime: 0Tg. 7Std. 50Min. 49Sek.
2018-01-12 19:54:12 LaCrosseGateway LGW UpTimeSeconds: 28249
2018-01-12 19:54:12 LaCrosseGateway LGW RSSI: -63
2018-01-12 19:54:14 CustomSensor bme680_cc iaq: 222
2018-01-12 19:54:14 CustomSensor bme680_cc gas: 227150
2018-01-12 19:54:14 CustomSensor bme680_cc gas-kohm: 227.2

Fehlt da noch die ID des Sensors im output?
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 12 Januar 2018, 19:59:14
Hallo Jürgen,

Zitat von: juergs
Die RFMxx-Lib lässt sich zwar auf Soft-SPI konfigurieren, aber die zugrunde liegende SPI.h aus
der ESP-Plattform Lib leider nicht!
Die SPI Lib wird bei Soft SPI doch gar nicht eingebunden !? Merkwürdig  :o

Die Arduino IDE ist schon sehr eigenartig, Bibliotheken müssen entweder direkt im Projektordner oder
im Ordner libraries sein, stimmt.

Den Lichtsensor hab ich von Segor (www.segor.de).

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 12 Januar 2018, 20:01:08
Hatte ich auch gedacht, aber hier:
byte RFMxx::ReadReg(byte addr) {
  SetPin(m_ss, LOW);
  SPI.transfer(addr & 0x7F);
  //spi8(addr & 0x7F);
  byte result = SPI.transfer(0);
  //byte result = spi8(0);
  SetPin(m_ss, HIGH);
  return result;
}

void RFMxx::WriteReg(byte addr, byte value) {
  SetPin(m_ss, LOW);
  SPI.transfer(addr | 0x80);
  SPI.transfer(value);
  //spi8(addr | 0x80);
  //spi8(value);
  SetPin(m_ss, HIGH);
}


Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 12 Januar 2018, 20:03:10
Die "SPI.transfer..." müssen gegen die "spi8..." Befehle getauscht werden, bei Soft SPI !
Hatte ich das vergessen ?

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 12 Januar 2018, 20:09:49
Danke für den Hinweis.  :)
Werde mal die Version wechseln...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 12 Januar 2018, 22:39:34
Zitat von: SimGa am 11 Januar 2018, 22:43:08
Hallo zusammen,
hat eigentlich jemand den Ansatz weiter verfolgt, aus den aufgezeichneten Sensordaten Rückschlüsse auf den Algorithmus zu schließen?
Im internet habe ich bisher nur einen eher schlechten(zumindest hier in Colorado funktioniert er schlecht) alternativen Algorithmus gefunden, der sich aus dem Widerstand und der Luftfeuchte nähert.

Hallo SimGa,
hier noch der Versuch einer Berechnung ohne Lib:
https://github.com/pimoroni/bme680/blob/master/examples/indoor-air-quality.py (https://github.com/pimoroni/bme680/blob/master/examples/indoor-air-quality.py)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 13 Januar 2018, 11:44:16
Ach ja, hatte ich schon erwähnt, daß man die ADAFRUIT-OLED-LIB nicht auf das WROOM-Board flashen sollte?
Einmal unbedacht den Universalsensor-Code geflasht, das wars dann: keine Serielle mehr zum Wiedererwecken ... 
Da hilft nur noch herausoperieren des ESP-Moduls ...  :'(
OLED-Modul hat etwas Hitzetechnisch gelitten, aber alles geht wieder ... :)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 13 Januar 2018, 13:45:02
Diesmal ist der zweite Sensor konfiguriert, dennoch kommt dieser Fehler from LGW:

ERROR: empty name in readingsBeginUpdate
ERROR: >0B< returned by the CustomSensor ParseFn is invalid, notify the module maintainer

ZitatInternals:
   DEF        07
   ID         07
   NAME       bme680_cc_07
   NR         114
   STATE      Initialized
   TYPE       CustomSensor
   corrH      0
   corrT      0
   READINGS:
     2018-01-06 22:01:22   battery         8
     2018-01-06 22:01:22   gas             153280
     2018-01-06 22:01:22   gas-kohm        153.3
     2018-01-06 22:01:22   humidity        53
     2018-01-06 22:01:22   iaq             99
     2018-01-06 22:01:22   lux             0
     2018-01-06 22:01:22   pressure        997
     2018-01-06 22:01:22   state           T: 20.5 H: 53
     2018-01-06 22:01:22   temperature     20.5
Attributes:
   event-min-interval .*:1800
   event-on-change-reading .*
   room       CustomSensor,CO2-Messung
   stateFormat temperature °C, humidity %, pressure hPa
   userReadings gas-kohm { sprintf( "%.1f", ReadingsVal( $NAME,"gas",0 ) / 1000 + 0.05 ) }
   verbose    5

Zitat2018.01.13 12:40:12 1: ERROR: empty name in readingsBeginUpdate
2018.01.13 12:40:12 1: stacktrace:
2018.01.13 12:40:12 1:     main::readingsBeginUpdate           called by ./FHEM/36_CustomSensor.pm (207)
2018.01.13 12:40:12 1:     main::CustomSensor_Parse            called by fhem.pl (3684)
2018.01.13 12:40:12 1:     main::Dispatch                      called by ./FHEM/36_LaCrosseGateway.pm (707)
2018.01.13 12:40:12 1:     main::LaCrosseGateway_Parse         called by ./FHEM/36_LaCrosseGateway.pm (469)
2018.01.13 12:40:12 1:     main::LaCrosseGateway_Read          called by fhem.pl (3488)
2018.01.13 12:40:12 1:     main::CallFn                        called by fhem.pl (687)
2018.01.13 12:40:12 1: readingsUpdate(,temperature,21) missed to call readingsBeginUpdate first.
2018.01.13 12:40:12 1: stacktrace:
2018.01.13 12:40:12 1:     main::readingsBulkUpdate            called by ./FHEM/36_CustomSensor.pm (210)
2018.01.13 12:40:12 1:     main::CustomSensor_Parse            called by fhem.pl (3684)
2018.01.13 12:40:12 1:     main::Dispatch                      called by ./FHEM/36_LaCrosseGateway.pm (707)
2018.01.13 12:40:12 1:     main::LaCrosseGateway_Parse         called by ./FHEM/36_LaCrosseGateway.pm (469)
2018.01.13 12:40:12 1:     main::LaCrosseGateway_Read          called by fhem.pl (3488)
2018.01.13 12:40:12 1:     main::CallFn                        called by fhem.pl (687)
2018.01.13 12:40:12 1: readingsUpdate(,humidity,43) missed to call readingsBeginUpdate first.
2018.01.13 12:40:12 1: stacktrace:
2018.01.13 12:40:12 1:     main::readingsBulkUpdate            called by ./FHEM/36_CustomSensor.pm (214)
2018.01.13 12:40:12 1:     main::CustomSensor_Parse            called by fhem.pl (3684)
2018.01.13 12:40:12 1:     main::Dispatch                      called by ./FHEM/36_LaCrosseGateway.pm (707)
2018.01.13 12:40:12 1:     main::LaCrosseGateway_Parse         called by ./FHEM/36_LaCrosseGateway.pm (469)
2018.01.13 12:40:12 1:     main::LaCrosseGateway_Read          called by fhem.pl (3488)
2018.01.13 12:40:12 1:     main::CallFn                        called by fhem.pl (687)
2018.01.13 12:40:12 1: readingsUpdate(,state,T: 21 H: 43) missed to call readingsBeginUpdate first.
2018.01.13 12:40:12 1: stacktrace:
2018.01.13 12:40:12 1:     main::readingsBulkUpdate            called by ./FHEM/36_CustomSensor.pm (226)
2018.01.13 12:40:12 1:     main::CustomSensor_Parse            called by fhem.pl (3684)
2018.01.13 12:40:12 1:     main::Dispatch                      called by ./FHEM/36_LaCrosseGateway.pm (707)
2018.01.13 12:40:12 1:     main::LaCrosseGateway_Parse         called by ./FHEM/36_LaCrosseGateway.pm (469)
2018.01.13 12:40:12 1:     main::LaCrosseGateway_Read          called by fhem.pl (3488)
2018.01.13 12:40:12 1:     main::CallFn                        called by fhem.pl (687)
2018.01.13 12:40:12 1: readingsUpdate(,pressure,1011) missed to call readingsBeginUpdate first.
2018.01.13 12:40:12 1: stacktrace:
2018.01.13 12:40:12 1:     main::readingsBulkUpdate            called by ./FHEM/36_CustomSensor.pm (228)
2018.01.13 12:40:12 1:     main::CustomSensor_Parse            called by fhem.pl (3684)
2018.01.13 12:40:12 1:     main::Dispatch                      called by ./FHEM/36_LaCrosseGateway.pm (707)
2018.01.13 12:40:12 1:     main::LaCrosseGateway_Parse         called by ./FHEM/36_LaCrosseGateway.pm (469)
2018.01.13 12:40:12 1:     main::LaCrosseGateway_Read          called by fhem.pl (3488)
2018.01.13 12:40:12 1:     main::CallFn                        called by fhem.pl (687)
2018.01.13 12:40:12 1: readingsUpdate(,iaq,41) missed to call readingsBeginUpdate first.
2018.01.13 12:40:12 1: stacktrace:
2018.01.13 12:40:12 1:     main::readingsBulkUpdate            called by ./FHEM/36_CustomSensor.pm (232)
2018.01.13 12:40:12 1:     main::CustomSensor_Parse            called by fhem.pl (3684)
2018.01.13 12:40:12 1:     main::Dispatch                      called by ./FHEM/36_LaCrosseGateway.pm (707)
2018.01.13 12:40:12 1:     main::LaCrosseGateway_Parse         called by ./FHEM/36_LaCrosseGateway.pm (469)
2018.01.13 12:40:12 1:     main::LaCrosseGateway_Read          called by fhem.pl (3488)
2018.01.13 12:40:12 1:     main::CallFn                        called by fhem.pl (687)
2018.01.13 12:40:12 1: readingsUpdate(,lux,0) missed to call readingsBeginUpdate first.
2018.01.13 12:40:12 1: stacktrace:
2018.01.13 12:40:12 1:     main::readingsBulkUpdate            called by ./FHEM/36_CustomSensor.pm (236)
2018.01.13 12:40:12 1:     main::CustomSensor_Parse            called by fhem.pl (3684)
2018.01.13 12:40:12 1:     main::Dispatch                      called by ./FHEM/36_LaCrosseGateway.pm (707)
2018.01.13 12:40:12 1:     main::LaCrosseGateway_Parse         called by ./FHEM/36_LaCrosseGateway.pm (469)
2018.01.13 12:40:12 1:     main::LaCrosseGateway_Read          called by fhem.pl (3488)
2018.01.13 12:40:12 1:     main::CallFn                        called by fhem.pl (687)
2018.01.13 12:40:12 1: readingsUpdate(,battery,7) missed to call readingsBeginUpdate first.
2018.01.13 12:40:12 1: stacktrace:
2018.01.13 12:40:12 1:     main::readingsBulkUpdate            called by ./FHEM/36_CustomSensor.pm (240)
2018.01.13 12:40:12 1:     main::CustomSensor_Parse            called by fhem.pl (3684)
2018.01.13 12:40:12 1:     main::Dispatch                      called by ./FHEM/36_LaCrosseGateway.pm (707)
2018.01.13 12:40:12 1:     main::LaCrosseGateway_Parse         called by ./FHEM/36_LaCrosseGateway.pm (469)
2018.01.13 12:40:12 1:     main::LaCrosseGateway_Read          called by fhem.pl (3488)
2018.01.13 12:40:12 1:     main::CallFn                        called by fhem.pl (687)
2018.01.13 12:40:12 1: readingsUpdate(,gas,365650) missed to call readingsBeginUpdate first.
2018.01.13 12:40:12 1: stacktrace:
2018.01.13 12:40:12 1:     main::readingsBulkUpdate            called by ./FHEM/36_CustomSensor.pm (244)
2018.01.13 12:40:12 1:     main::CustomSensor_Parse            called by fhem.pl (3684)
2018.01.13 12:40:12 1:     main::Dispatch                      called by ./FHEM/36_LaCrosseGateway.pm (707)
2018.01.13 12:40:12 1:     main::LaCrosseGateway_Parse         called by ./FHEM/36_LaCrosseGateway.pm (469)
2018.01.13 12:40:12 1:     main::LaCrosseGateway_Read          called by fhem.pl (3488)
2018.01.13 12:40:12 1:     main::CallFn                        called by fhem.pl (687)
2018.01.13 12:40:12 1: ERROR: >0B< returned by the CustomSensor ParseFn is invalid, notify the module maintainer
2018.01.13 12:40:13 5: LGW: dispatch OK CC 11 6 16 43 16 17 0 65 0 0 70 54 86 80
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 13 Januar 2018, 20:46:23
Ok, hab's herausgefunden:

Zitat2018.01.13 20:41:15 3: LGW: CustomSensor-rname: bme680_cc
2018.01.13 20:41:17 5: LGW: dispatch OK CC 11 6 6 49 16 9 0 113 0 0 70 49 152 96
2018.01.13 20:41:17 5: LGW: CustomSensor-Frame: OK CC 11 6 6 49 16 9 0 113 0 0 70 49 152 96
2018.01.13 20:41:17 3: LGW: CustomSensor-rname: 0B

Der Sensor ist als dezimal 11 deklariert (weil bei miir einige niedrige LaCrosse-Devices herumschwirren...)
in $rname wird die ID hex übergeben und nicht als String ... Ich hatte es geahnt ...  :(

ZitatInternals:
   CHANGED   
   CustomSensor_lastRcv 2018-01-13 20:55:17
   DEF        0B
   ID         0B
   LASTInputDev LGW
   LGW_MSGCNT 2
   LGW_TIME   2018-01-13 20:55:17
   MSGCNT     2
   NAME       bme680_cc_11
   NR         118
   STATE      20.7 °C, 49 %, 1008 hPa
   TYPE       CustomSensor
   corrH      0
   corrT      0
   READINGS:
     2018-01-13 20:55:17   battery         7
     2018-01-13 20:55:17   gas             315880
     2018-01-13 20:55:17   gas-kohm        315.9
     2018-01-13 20:55:17   humidity        49
     2018-01-13 20:55:17   iaq             78
     2018-01-13 20:55:17   lux             0
     2018-01-13 20:55:17   pressure        1008
     2018-01-13 20:55:17   state           T: 20.7 H: 49
     2018-01-13 20:55:17   temperature     20.7
Attributes:
   event-min-interval .*:1800
   event-on-change-reading .*
   room       CO2-Messung,CustomSensor,LaCrosse
   stateFormat temperature °C, humidity %, pressure hPa
   userReadings gas-kohm { sprintf( "%.1f", ReadingsVal( $NAME,"gas",0 ) / 1000 + 0.05 ) }
   verbose    5

Die angepasste CodeVersion habe ich hier für ESP8266_D1_WROOM_Board (https://github.com/juergs/BME680_cc_sensor_v1_5_V3_D1_WROOM_VS) hinterlegt.
Habe ein Rollback der RFM-Lib auf ein Beispiel von HCS eingebaut, um eine Funkübertragung zustande zu bekommen.

Ein FHEM-Update beinhaltet noch keine aktuelle Version der 36_LaCrossGateWay.pm und der 36_CustomSensor.pm.
Anmerkung: die Reichweite des RFM69 scheint suboptimal zu sein ... 
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 13 Januar 2018, 23:20:18
Hallo Jürgen,

hatte wenig Zeit die Tage, sorry.

Zitat von: juergs
Ach ja, hatte ich schon erwähnt, daß man die ADAFRUIT-OLED-LIB nicht auf das WROOM-Board flashen sollte?
Einmal unbedacht den Universalsensor-Code geflasht, das wars dann: keine Serielle mehr zum Wiedererwecken ... 
Da hilft nur noch herausoperieren des ESP-Moduls ...  :'(
OLED-Modul hat etwas Hitzetechnisch gelitten, aber alles geht wieder ... :)
Das ist schon heftig. Das liegt bestimmt an dem "verdrehten" I2C Anschluss vom WROOM2 (D1 und D2 vertauscht).
Sollte aber mit gedrückter "Flash" Taste (GPIO 0 auf GND) beim booten in den Flash Mode gehen ?!

ZitatDer Sensor ist als dezimal 11 deklariert (weil bei miir einige niedrige LaCrosse-Devices herumschwirren...)
in $rname wird die ID hex übergeben und nicht als String ... Ich hatte es geahnt ...  :(
Darüber hatte ich auch eine ganze Zeit gegrübelt, jetzt wo Du es herausgefunden hast, erklärt es die Fehlermeldungen natürlich ;)

Die RFMxx Lib hatte ich mir auch nur "ausgeborgt" und zurechtgestückelt, das mit dem TPinCallback hatte ich ebenfalls schon im Auge,
kann man getrost entfernen, hatte ich auch schon ohne getestet. War bestimmt dazu gedacht, um ohne Arduino IDE Pins umzudefinieren oder so etwas ?!

Edit: Hab die RFMxx Lib im Universalsensorprojekt V2.0 bzgl. TPinCallback und Soft-SPI geändert  ;)
https://forum.fhem.de/index.php/topic,78128.msg748272.html#msg748272 (https://forum.fhem.de/index.php/topic,78128.msg748272.html#msg748272)

Gruß Thomas

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 14 Januar 2018, 07:58:42
Hallo Thomas,
danke für die Rückmeldung.
ZitatDas liegt bestimmt an dem "verdrehten" I2C Anschluss vom WROOM2 (D1 und D2 vertauscht).
Sollte aber mit gedrückter "Flash" Taste (GPIO 0 auf GND) beim booten in den Flash Mode gehen ?!

Denke ich auch, wollte aber nicht noch tiefer suchen ... ;)

Das Problem ist, dass die Serielle über den CP2102 Chip blockiert ist ... der ESP schwingt auf allen Ports ...
Da fällt mir auf: auf dem Wroom-Board fehlt der Aufdruck auf dem CP2xxx  Chip ....

GPIO 0 auf GND explizit auf GND ziehen, werde ich beim nächsten Mal probieren ...  ;D ;D ;D
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 14 Januar 2018, 13:20:24
Hallo Jürgen,

Zitat von: juergs
GPIO 0 auf GND explizit auf GND ziehen, werde ich beim nächsten Mal probieren ...  ;D ;D ;D
Hoffentlich passiert Dir das nicht nochmal  ;)
Hatte dazu mal gesehen, das der kleine Joystick mit Reset und Flash verdrahtet sein sollte,
evtl. müsstest Du nur den Stick beim einschalten in Stellung "Flash" drücken, siehe Bild:

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 14 Januar 2018, 15:05:12
Hi,
es geht, wenn man Flash und Reset gleichzeitig drückt, den Flashvorgang anstößt
und erst dann Reset loslässt.
Damit konnte ich ein D1-Board reaktivieren ... da die Serielle (USB) dann bleibt ... 

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 14 Januar 2018, 19:45:40
Zitat von: juergs
es geht, wenn man Flash und Reset gleichzeitig drückt, den Flashvorgang anstößt
und erst dann Reset loslässt.
Damit konnte ich ein D1-Board reaktivieren ... da die Serielle (USB) dann bleibt ... 
Cool, dann bin ich ja gerüstet, wenn es mich mal erwischt  ;D ;)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 14 Januar 2018, 19:50:43
Hallo Thomas,

noch zum Thema Reichweite:
Habe einen separaten Testaufbau gemacht, weil ich den 3ten Sensor einfach nicht empfangen habe...
Obwohl er ca. 50cm neben der LGW stand und der Logikanalyser andeutet dass die Kommunikation funktioniert.
Mußte sogar die Empfindlichkeit des SDR weiter hochdrehen ...

Der höchste PA-Level scheint der Kleinste zu sein! (Ohne ins Datenblatt zu schauen ..)
Man bemerke den Unterschied zum anderen LaCrosse-Sender ... 
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 14 Januar 2018, 20:45:51
Hi,

hab eben nochmal schnell ins Datenblatt und die RFMxx Lib geschaut, steht alles auf "max. Power".
Auszug aus dem Datenblatt: "Pout = -18 + OutputPower [dBm] , with PA0"
PA0 Output Power mit allen Bits auf 1 (5 Bits), ergibt max. Power.
Alles ok eigentlich.

Gruß Thomas

 
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 14 Januar 2018, 20:48:25
Zitat von: hdgucken am 14 Januar 2018, 20:45:51
Hi,

hab eben nochmal schnell ins Datenblatt und die RFMxx Lib geschaut, steht alles auf "max. Power".
Auszug aus dem Datenblatt: "Pout = -18 + OutputPower [dBm] , with PA0"
PA0 Output Power mit allen Bits auf 1 (5 Bits), ergibt max. Power.
Alles ok eigentlich.

Gruß Thomas

Ja ich hab's auch in der Referenzimplementierung gesehen, aber:

Quer durch die Wohnung, auf dem Balkon (3 Stahlbeton-Wände. Habe es (_10110, mach noch eine Meßreihe!) nur mal zufällig versucht einen anderen Wert zu nehmen...:


Man sieht auch: es gibt noch wesentlich Stärkere ...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 14 Januar 2018, 20:53:19
Eigenartig, vielleicht ist max. Power nicht immer gut !?
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 14 Januar 2018, 20:58:05
Ja, ein RSSI-Wert wäre nicht schlecht ...

EDIT: Oh! hier (https://andrehessling.de/2015/02/07/figuring-out-the-power-level-settings-of-hoperfs-rfm69-hwhcw-modules/). Das bestätigt mich ( kurios: PA0?!, verhält sich so wie Pa1+PA2?): https://www.andrehessling.de/wp-content/uploads/2015/02/RFM69HW_RSSIVsPowerLevel.png (https://www.andrehessling.de/wp-content/uploads/2015/02/RFM69HW_RSSIVsPowerLevel.png)

Aber: ab 30 kann ich so gerade nicht bestätigen (die 15 passt, mal schauen wie weit ich da wieder heruntergehen kann) ...  ???

ZitatSet reg 0x58 to 0x2D
It increases the sensitivity by 2-3db by enabling the low noise pre-amp.
Good for more distance!
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 14 Januar 2018, 23:09:21
Sehr interessant !!!
Zitat von: juergs
EDIT: Oh! hier (https://andrehessling.de/2015/02/07/figuring-out-the-power-level-settings-of-hoperfs-rfm69-hwhcw-modules/). Das bestätigt mich ( kurios: PA0?!, verhält sich so wie Pa1+PA2?): https://www.andrehessling.de/wp-content/uploads/2015/02/RFM69HW_RSSIVsPowerLevel.png (https://www.andrehessling.de/wp-content/uploads/2015/02/RFM69HW_RSSIVsPowerLevel.png)
Aber: ab 30 kann ich so gerade nicht bestätigen (die 15 passt, mal schauen wie weit ich da wieder heruntergehen kann) ...  ???
Die RFM69HW, HCW sind leider nicht pinkompatibel, aber sonst ne echte alternative !

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 16 Januar 2018, 21:36:51
Hallo zusammen,

hat jemand von Euch schon das BSEC Beispiel für AVRmega (ich meine, da müsste der Atmega644 passen?) compiliert? Für ESP8366 bekomme ich es hin, für Atmel motzt der Linker, dass die Bibliotheken inkompatibel seien  :o :o :o.

Gruß PeMue
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 17 Januar 2018, 12:45:35
Hallo Peter,
hast Du die Dot-a-linkage probiert?
https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5:-Library-specification#libraryproperties-file-format (https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5:-Library-specification#libraryproperties-file-format)
Zitatdot_a_linkage - (available from IDE 1.6.0 / arduino-builder 1.0.0-beta13) when set to true, the library will be compiled using a .a (archive) file.
First, all source files are compiled into .o files as normal. Then instead of including all .o files in the linker command directly, all .o files are saved into a .a file,
which is then included in the linker command. 1.5 format library folder structure is required.
precompiled - (feature not yet released, will be available in arduino-builder >1.3.25) set to true to allow the use of .a (archive) and .so (shared object) files.
The .a/.so file must be located at src/{build.mcu} where {build.mcu} is the architecture name of the target the file was compiled for. Ex: cortex-m3 for the Arduino DUE. The static library should be linked as an ldflag.
ldflags - (feature not yet released, will be available in arduino-builder >1.3.25) - the linker flags to be added. Ex: ldflags=-lm

Zusammen mit makefile (http://www.avrfreaks.net/forum/include-static-library-within-makefile)? oder Arduino-Makefile (https://github.com/sudar/Arduino-Makefile)

Auch hier:
ZitatWe have precompiled functions implementing all instructions sepa
rately (thus, got object file for  every  each  instruction)  and 
packed  it  to  a  single  *.a  file  (standard  library  of  gcc  is 
precompiled  in  this  way).  This  library  does  not  include  hardware  access  layer  and  thus  is 
completely device independent – it works on different microcontrollers from AVR8 family.
On  the  other  hand,  library  functions  expect  the  hardware  access  layer  implemented  outside 
and  specific  to  used  microcontroller  –  the  code  in  the  library  is  not  linked.  There  are 
"unconnected"     calls     for     functions     spiMasterINIT(),     spiMasterTRANSMIT()     and     spiMasterChipSelect(). The linker will try to link
calls from library to those functions – user has to implement them.

http://www.matejk.cz/zdroje/mcp2515-avr-can-spi.pdf (http://www.matejk.cz/zdroje/mcp2515-avr-can-spi.pdf)

ZitatOk, I think I've got it working. What I did was simply add the path to the .a file to the ##Link step by changing this line:

"{build.path}/{archive_file}" "-L{build.path}"

to this:

"{build.path}/{archive_file}" "C:\Users\Nick\Documents\Arduino\libraries\mpl\libl ibmplmpu.a" "-L{build.path}"

Bei mir ist dieser Eintrag in:
"C:\Program Files (x86)\Arduino\hardware\arduino\avr\platform.txt"
und
C:\Program Files (x86)\Arduino\hardware\platform.keys.rewrite.txt
zu finden...


Probiert habe ich es selbst (noch) nicht, da der ESP und der STM32 mehr als ausreichend sind ..  ;)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 17 Januar 2018, 20:59:38
String CalculateIAQ(float score){
  String IAQ_text = "Air quality is ";
//  score = (100-score)*5;   // beeing calculated from gas resitance without bsec
  if      (score >= 301)                  IAQ_text += "Hazardous";
  else if (score >= 201 && score <= 300 ) IAQ_text += "Very Unhealthy";
  else if (score >= 176 && score <= 200 ) IAQ_text += "Unhealthy";
  else if (score >= 151 && score <= 175 ) IAQ_text += "Unhealthy for Sensitive Groups";
  else if (score >=  51 && score <= 150 ) IAQ_text += "Moderate";
  else if (score >=  00 && score <=  50 ) IAQ_text += "Good";
  return IAQ_text;
}
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 17 Januar 2018, 21:57:28
Hallo Jürgen,

mit Deinem letzten Zitat habe ich die Bibliothek ebenfalls eingebunden bekommen. Allerdings motzt der Linker, dass das Format nicht passt ...
Der ESP ist nicht für batteriebetriebene Sensoren, den STM kenne ich zu wenig ...


Gruß Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 17 Januar 2018, 21:58:37
den STM kenne ich zu wenig
Das lässt sich ändern...  ;)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 17 Januar 2018, 22:06:31
Anbei meine Maple-STM32-Code-Variante als Beta.
OLED und BME680 funktionieren, beim SPI zum RFM69 bin ich noch in Klärung ... 
Evtl. tausche ich die SPI-LIB gegen die "RFM69-STM32-master"-Lib aus Github aus...
SPI-Bus ist aktiv. sendet aber über den RFM (noch) nicht, könnte aber auch nur die Einstellung des PA_Levels sein ...
Schaue mir das am WoE noch genauer an ...  :)

Die ARM M3 precompiled BSEC-Lib ist, wie hier beschrieben, auch für den Maple einzubinden:
https://wolfgangklenk.wordpress.com/2017/11/05/indoor-air-quality-iaq-measurement-with-bosch-bme680-and-stm32f103c8t6/

Die STM32 Plattform-Installation für die Arduino-IDE gibts im Internet zu hauf.
https://www.bosch-sensortec.com/bst/products/all_products/bsec (https://www.bosch-sensortec.com/bst/products/all_products/bsec)

Mein Wroom2-Board (ESP8266) läuft jetzt schon den 2ten Tag ohne Nachladen mit einem 18650 mit OLED durch!
Da wäre ich am Überlegen, das OLED einfach per Taster Software-technisch ab- und einzuschalten.
Auf dem Wroom-Board liegen die Taster leider physikalisch auf der SPI-Schnittstelle:

Center = D5 (SCLK)
Up = D6 (MISO)
Down = D7 (MOSI)
Left = RES
Right = D3 (Flash, verfügbar)

Habe also nur D3 frei und evtl. D0 (2te grüne LED) zur Verfügung.

In meiner ESP-Version habe ich ja WiFi abgeschalten, das spart schon erheblich. 

Für den AVR könnte man aber auch damit, also ohne BSEC leben:
https://github.com/G6EJD/BME680-Example (https://github.com/G6EJD/BME680-Example)
Siehe unten blaue zu gelber Kurve.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 18 Januar 2018, 21:08:56
Hallo Leute,

Zitat von: PeMue
hat jemand von Euch schon das BSEC Beispiel für AVRmega (ich meine, da müsste der Atmega644 passen?) compiliert? Für ESP8266 bekomme ich es hin, für Atmel motzt der Linker, dass die Bibliotheken inkompatibel seien  :o :o :o.
Gleiches Problem bei mir.
Daraufhin habe ich mir gleich mal zwei Blue Pills bei a...n bestellt (STM32F103C8). Hoffentlich reicht der Flash Speicher bei den Boards ???
Hab wie PeMue keine großartigen Erfahrungen damit, aber:
Zitat von: juergs
den STM kenne ich zu wenig
Das lässt sich ändern...  ;)

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 18 Januar 2018, 21:20:16
Diese hier waren in gefühlt 2 Tagen da: STM32F103RCBT6 (https://www.ebay.de/itm/400569863658)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 18 Januar 2018, 21:23:05
Hallo zusammen,

wenn ich die BSEC Library in das Verzeichnis libraries kopiere (bzw. beim Kompilieren) kommt folgende Meldung:
e:/software/arduino185/hardware/tools/avr/bin/../lib/gcc/avr/4.9.2/../../../../avr/bin/ld.exe: avr:6 architecture of input file `E:\software\arduino185\portable\sketchbook\libraries\libalgobsec.a(bsec_interface.o)' is incompatible with avr:5 output
bzw.
Ungültige Bibliothek G:\software\arduino185\portable\sketchbook\libraries\BSEC in G:\software\arduino185\portable\sketchbook\libraries\BSEC gefunden

Ich vermute, da passt etwas mit der Bibliotheksstruktur nicht (oder es fehlt ein Linker Schalter).
Mir wäre persönlich ein Atmega lieber, weil
- ich dann eine Universalsensorplatine aka Dirk's Sensor machen könnte
- ggf. da auch verschiedene Protokolle (Homematic, Thomas' Universalsensor, etc.) laufen könnte und
- der ESP8266 für Batteriebetrieb nicht wirklich geeignet ist.

Damit man mir aber nicht mangelnde Lernfähigkeit vorwerfen kann  ;D ;D ;D, habe ich mal meine Arduino IDE für STM32F1x befähigt. Dieser Chip ist ja auch auf meinem mapleCUx drauf  :P

Gruß Peter

Edit: Der Blink Sketch lässt sich zumindest mal für den STM32F1x kompilieren  ;)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 18 Januar 2018, 21:31:16
ZitatDamit man mir aber nicht mangelnde Lernfähigkeit vorwerfen kann    ,
Nee, so schlimm ist es jetzt auch wieder nicht.  ;D
Aber da Du eigentlich mit dem STM auch schon Layout-Erfahrung gewonnen hast und dieser doch noch wesentlich mehr Möglichkeiten bietet
als ein AVR?

Aber man muss das Rad auch nicht neu erfinden ... Hatte den STM halt noch "übrig" ...

Apropos:
Ich hatte mir das Projekt von @roedert mit dem Wasserzähler angeschaut https://forum.fhem.de/index.php?action=dlattach;topic=71341.0;attach=93201 (https://forum.fhem.de/index.php?action=dlattach;topic=71341.0;attach=93201) 
Er benutzt da googlecharts_line_basic (https://www.tutorialspoint.com/googlecharts/googlecharts_line_basic.htm).
Wäre für dieses Projekt ebenfalls sehr interessant...

@Peter, kann mir erst am WoE das Thema Compiler noch mal anschauen  :'(
http://www.avrfreaks.net/forum/error-compiling-debug-project-only (http://www.avrfreaks.net/forum/error-compiling-debug-project-only)
ZitatFar better to post the build output - maybe just the areas where the errors actually occur if there is a lot of it.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 19 Januar 2018, 16:57:32
@PeMue
ich vermute stark, dass die AVR 8 Bit Lib nicht für die Arduino, sondern für die Atmel Studio Toolchain kompiliert worden ist.
http://www.microchip.com/avr-support/avr-and-arm-toolchains-(c-compilers) (http://www.microchip.com/avr-support/avr-and-arm-toolchains-(c-compilers))

https://github.com/BoschSensortec/BME680_driver (https://github.com/BoschSensortec/BME680_driver)
ZitatDo you mean in the Arduino IDE? This is quite complicated as the Arduino IDE currently doesn't support precompiled libs.
This will probably be supported in on of their next releases. Once they do, we will also release a BSEC library for use in the Arduino IDE with examples.
Na ja stimmt ja so nicht ganz ....


Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 19 Januar 2018, 17:36:55
Zur Zeit sind die Breakoutboards ausverkauft oder überteuert.

Bestünde Interesse an einem einfachen Breakoutboard für < 10 € ?

Bei Mouser kosten 10 Stück BME680:  77,10 € + Breakoutboard, habe 12 Stück bei OSHpark bestellt.

Falls sich genügend Abnehmer fänden ....

Dann die Frage an @PeMue: ist das Selbst-Bestücken überhaupt machbar?

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 19 Januar 2018, 17:49:47
Hallo Jürgen,

Zitat von: juergs am 19 Januar 2018, 17:36:55
Dann die Frage an @PeMue: ist das Selbst-Bestücken überhaupt machbar?
das geht nur mit (Hand)-Dispensen und Ofen. Bei einer größeren Menge an Leiterplatten wäre es besser, eine Schablone zu haben.

Gruß Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 19 Januar 2018, 17:55:34
Zitat...das geht nur mit (Hand)-Dispensen und Ofen.
Ja ich weiss, die Geschichte mit dem Kaffee ...  ;)

Mal schauen.  Evtl wäre es besser dann bei einem anderen PCB-Lieferant anzufragen, der die Schablone mitliefert... ?

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 19 Januar 2018, 20:48:25
@PeMue
habe kurz in "Atmel Studio 7" das .ino-Projekt migriert und die Precompiled-Lib einfach als Library eingebunden.

Bis auf:
ZitatSeverity   Code   Description   Project   File   Line
Error      recipe for target 'src/libraries/Wire/src/utility/twi.o' failed   bme680Mega644   c:\users\<user>\Documents\Atmel Studio\7.0\bme680Mega644\bme680Mega644\Debug\Makefile   148

und

ZitatSeverity   Code   Description   Project   File   Line
Error      Arduino.h: No such file or directory   bme680Mega644   c:\users\<user>\Documents\Atmel Studio\7.0\bme680Mega644\bme680Mega644\src\libraries\Wire\src\utility\twi.c   28

Evtl. benötigt man auch:
http://www.visualmicro.com/page/Arduino-for-Atmel-Studio-7.aspx (http://www.visualmicro.com/page/Arduino-for-Atmel-Studio-7.aspx)

Das ist das Ergebnis:
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 19 Januar 2018, 20:56:35
Hallo Jürgen,

echt cool, das finde ich klasse.

Zitat von: juergs am 19 Januar 2018, 20:48:25
habe kurz in AtmelStudio das .ino-Projekt migriert und die Precompiled-Lib einfach als Library eingebunden.
Welches? Das von Dir oder das von Thomas?
Wenn Du das von Thomas genommen hast, könnte ich das ja mal auf dem Steckbrett (oder meinem uralten Pollin Board) mal in Betrieb nehmen.

Sprich ich könnte mir jetzt Gedanken über einen Batteriesensor mit folgenden Eigenschaften machen:
- 2xAA + stepup Regler
- Atmega644PAU (mit Quarz oder nur internem Quarz?)
- BME680 bzw. andere Sensoren (auch VOC?), welche?
- RFM69CW (Universalsensor) bzw. alternativ CC1101 Modul (Homematic oder was auch immer)
- vernünftiges Gehäuse

Fehlt dann noch was?

Gruß Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 19 Januar 2018, 21:01:19
Hallo Peter,

ich habe das gerade quick&dirty gemacht.
Habe das ESP-Projekt von mir genommen (mit Thomas seinem geht das auch...)
Man muss nur die ESP-spezifischen Dinge herausnehmen ...

Für den 644P muss man noch die Feinheiten einstellen und schauen dass der Compile ohne Fehler mit den Arduino Bibliotheken durchgeht.
Das ist noch etwas F&E notwendig....  ;)

Wenn es auf den 328P geht (sprich NANO) ...  :-\

Aber prinzipiell geht es mal, das ist doch schon gut!

ZitatSprich ich könnte mir jetzt Gedanken über einen Batteriesensor mit folgenden Eigenschaften machen:
- 2xAA + stepup Regler
- Atmega644PAU (mit Quarz oder nur internem Quarz?)
- BME680 bzw. andere Sensoren (auch VOC?), welche?
- RFM69CW (Universalsensor) bzw. alternativ CC1101 Modul (Homematic oder was auch immer)
- vernünftiges Gehäuse
Das hört sich super gut an. Als erstes mal ein Breadboard-Prototyp, um zu sehen wie sich die Lib auf einem 8-Bitter verhält....

Ein 3D-Gehäuse hätte ich (eigentlich) für morgen geplant ...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 19 Januar 2018, 21:06:57
Zitat(auch VOC?), welche?
Mein geliefertes CSS811-Board mit dem CSS811 ist der Chip leider defekt, lässt sich aber gut auslöten ...
Muss aber erst einen Neuen besorgen.

Die andere VOC Variante wäre ja, die mit dem Sensor des CO2Monitor (https://maker-tutorials.com/guenstiges-co2-messgeraet-airco2ntrol-im-test-1-raspberry-pi-fhem-usb/)-Teils mit dem ZGm053U (http://www.zyaura.com/products/ZGm05.asp). 
ZitatMethod - Dual Beam NDIR
Könnte aber etwas teurer sein ... Evtl. billiger dem CO2Monitor einfach ein FHEM-Node-Gateway zu "verpassen" ...  ;)

Finde den BME680 mittlerweile mehr als ausreichend mit plausiblen Werten ... was braucht man mehr?

Ich  habe bei den Sensortec-Issues auf github einen Vergleich diverser Sensoren mit dem BME680 gesehen, die Kurven waren fast alle gleichwertig ...
Finde aber die Seite nicht mehr ...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 19 Januar 2018, 21:40:28
https://www.digikey.com/en/videos/m/microchip/importing-arduino-sketches-into-atmel-studio-7 (https://www.digikey.com/en/videos/m/microchip/importing-arduino-sketches-into-atmel-studio-7)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 19 Januar 2018, 21:50:47
Zitat von: juergs am 19 Januar 2018, 21:06:57
Ich  habe bei den Sensortec-Issues auf github einen Vergleich diverser Sensoren mit dem BME680 gesehen, die Kurven waren fast alle gleichwertig ...
War das diese Seite (Posts vom 12. November)?
https://github.com/BoschSensortec/BME680_driver/issues/6

Gruß Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 19 Januar 2018, 21:54:58
ja, genau! Danke.
Diese Seite verhält sich komisch, geht man raus und wieder rein sind es nur 5 Issues.  >:(
Ok, es sind Unterkommentare des 5. Eintrages, jetzt!
Deswegen: Es wird aber nur zögerlich geantwortet ...
Man hätte eine Ebene höher fragen sollen ...

Zitatthe code will not fit on Arduino boards based on the Atmel AVR series that have 32kB flash and 2kB of RAM
Also doch 644 oder größer ...

Ein 644P-Board und ein Atmel-ICE habe ich auch noch irgendwo rumliegen ....
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 20 Januar 2018, 13:47:15
AVR_GCC Standalone-Toolchain für Windows & Linux: avr-and-arm-toolchain (http://www.microchip.com/avr-support/avr-and-arm-toolchains-(c-compilers))
ZitatAtmel AVR GNU Toolchain is also available as part of Atmel Studio. Only those users who wish to run the Atmel AVR GNU Toolchain as standalone tools from the command line need to download and install this package.
Dann sollte ein passendes Makefile reichen...

Momentan macht boards.txt noch Probleme, weil sich die Struktur mit dem Boardmanager geändert hat, aber AtmelStudio eigentlich die "alte" Variante erwartet.
Anbei Beispiel-Einträge für den ATMEGA644. Oder von: hier (http://forum.arduino.cc/index.php?topic=321805.0)
Der Arduino Boardmanager bietet mir keine ATMEGA644-Boards (http://www.instructables.com/id/ATmega-DIP40-Minimal-Board/) an. (Platforms1.wiki (https://code.google.com/archive/p/arduino/wikis/Platforms1.wiki) , Bootloader (http://menututo.com/mettre-un-bootloader-arduino-dans-un-atmega1284p/))
Arduino-IDE-1.5-3rd-party-Hardware-specification (https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5-3rd-party-Hardware-specification)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 20 Januar 2018, 18:18:29
Info zum Maple mit BME680:
Zitat2018.01.20 18:14:52 5: LGW: CustomSensor-Frame: OK CC 7 6 7 45 9 134 0 37 0 0 80 35 144 16
2018.01.20 18:14:52 3: LGW: CustomSensor-rname: bme680_cc_07

Senden mit RFM funktioniert.
Ursache : RF_PALEVEL_OUTPUTPOWER_11111 geändert auf RF_PALEVEL_OUTPUTPOWER_01111.  :)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 21 Januar 2018, 00:19:56
Hallo Jürgen, Hallo Peter,

hab inzwischen auch alles mögliche inkl. Atmel Studio 7 und Mighty Core für Arduino probiert, aber nichts führt so recht zum Erfolg mit den ATMEGA 644/1284  :(
Es sollte eigentlich dieser Tage eine Arduino kompatible Lib für die AVR's von Bosch Sensortec kommen, ich schaue jetzt immer mal wieder nach dieser Version  8)
Zitat von: juergs
Info zum Maple mit BME680:
Senden mit RFM funktioniert.
Ursache : RF_PALEVEL_OUTPUTPOWER_11111 geändert auf RF_PALEVEL_OUTPUTPOWER_01111.  :)
Cool, ich hab meine ARM's leider noch nicht bekommen (ab ca. dem 5.Feb. sollen sie geliefert werden) :P

Hab mal wieder den Universalsensor überarbeitet, hier ist V2.2 ! Alles ist jetzt über die Defines auswähl- bzw. einstellbar,
Soft-SPI (nicht mehr die RFMxx.h ändern), debug mode und alle Zubehör Sachen.
Dabei ist mir aufgefallen, warum bei Dir und dem WROOM2 Board die Adafruit Lib warscheinlich nicht funktioniert:
In der Adafruit_SSD1306.cpp steht nochmal "Wire.beginn()" !!! Damit geht das natürlich nicht für's WROOM2  :o
 
  ...
  else
  {
    // I2C Init
    Wire.begin();
#ifdef __SAM3X8E__
...


Anbei mal wieder die neue Version, plus ein paar Impressionen(mit und ohne debug, soft/hw SPI ...):

Gruß Thomas

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 21 Januar 2018, 11:17:18
Hallo Thomas,
richtig gut!

Zitathab inzwischen auch alles mögliche inkl. Atmel Studio 7 und Mighty Core für Arduino probiert, aber nichts führt so recht zum Erfolg mit den ATMEGA 644/1284

Ja so ist es mir auch ergangen ... Vorrausetzung ist es die Arduino IDE zu überreden die alte Struktur der Boards auf ATMEGA644 zu setzen, da AS7 diese alte Struktur erwartet um die Templates beim Import auf den 644  setzen zu können.
Evtl. geht das nur mit einer älteren Version, die noch mit <Arduino_Verzeichnis>/Hardware/boards.txt arbeitet. Genau
diese liest ja AS7 bei migrieren und setzen der Boardeinstellungen aus.
Vielleicht reicht es aus dort nur den 644-Eintrag nachzurüsten, ohne dass es in Arduino eine Wirkung hätte.
Der Rest erfolgt ja dann in der eigenen Toolchain von AS7. Wichtig wäre einfach nur das "richtige" Makefile für den 644 zu erhalten.
Wie gesagt, der 644 ist ja nicht mehr so der "Mainstream" bei den Boards  :'(


ZitatWROOM2 Board die Adafruit Lib warscheinlich nicht funktioniert: In der Adafruit_SSD1306.cpp steht nochmal "Wire.begin()"
=> Standard I2C für das Wroom2-Board falsch herum...

Ja ist mir auch schon aufgefallen, nach dem ich die ASCII1306-Lib schon angewandt hatte.
Damit war für mich die Adafruit-Lib raus ... Kann aber wegen den Grafik-Eigenschaften noch mal
die Lib in Betracht ziehen.  ;)

Verbesserungen kann ich noch weiter Implementieren:
z.B.: 
* Display (An/Aus ggf. Sleep und WakeUp)
* Balken- oder Gauge-Anzeige wie hier (http://www.technoblogy.com/show?WNM), eigene Display-Routinen!
* Ersetzen des Display-Updates durch direktes Positionieren der Messwerte. (Blinken stört mit der Zeit (wg. println -Bildaufbau) 
* mehrere Display-Seiten

Beim Maple erfolgt der Displayaufbau etwas langsamer als mit dem ESP. Liegt wohl an der 400KHz-I2C-Taktrate.
Aber dieser ist für Batteriebetrieb geeignet.

Den PALevel auf 15 setzen ist wahrscheinlich für alle Varianten zu empfehlen ...  :)

Ich kümmere mich jetzt mal um das Gehäuse und widme mich dann deinem UniversalSensor-Build  :)

Vielleicht solltes Du auch über einen Github-Account den Code dort ablegen, das hätten den Charme, dass man dort
dann zusammen arbeiten könnte  ;) und die Versionierung + Dokumentation einfacher ist ...

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 21 Januar 2018, 11:39:57
3D-Gehäuse für Wroom2-Board im 3D-Druck-Thread:
https://forum.fhem.de/index.php/topic,83085.0.html (https://forum.fhem.de/index.php/topic,83085.0.html)

Ideen dazu gerne wilkommen.  :D
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 21 Januar 2018, 12:19:35
Hallo Jürgen,

Zitat von: juergs
... Vorrausetzung ist es die Arduino IDE zu überreden die alte Struktur der Boards auf ATMEGA644 zu setzen, da AS7 diese alte Struktur erwartet um die Templates beim Import auf den 644  setzen zu können.
Evtl. geht das nur mit einer älteren Version, die noch mit <Arduino_Verzeichnis>/Hardware/boards.txt arbeitet...
Wie gesagt, der 644 ist ja nicht mehr so der "Mainstream" bei den Boards  :'(
Das ist noch ein guter Tip, probier ich mal ... 8)
Und stimmt, sind nicht mehr so ganz up to date, aber vielleicht für den Zweck noch ganz gut  :)
Zitat
Verbesserungen kann ich noch weiter Implementieren:
Sehr gerne  ;)
Zitat
Vielleicht solltes Du auch über einen Github-Account den Code dort ablegen, das hätten den Charme, dass man dort
dann zusammen arbeiten könnte  ;) und die Versionierung + Dokumentation einfacher ist ...
GitHub Account hab ich auch seit kurzem, allerdings unter einem anderen Namen, vielleicht etwas blöd ?!
Aber hatte ich auch schon drüber nachgedacht :D
Zitat
Den PALevel auf 15 setzen ist wahrscheinlich für alle Varianten zu empfehlen ...  :)
Werde ich auch mal testen, Reichweite ist durch nichts zu ersetzen, außer durch noch mehr Reichweite  ;D
Zitat
Ich kümmere mich jetzt mal um das Gehäuse und widme mich dann deinem UniversalSensor-Build  :)
Da hab ich natürlich auch Interesse, muss mir noch Gedanken dazu machen ...

Gruß Thomas

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 21 Januar 2018, 12:22:37
ZitatGitHub Account hab ich auch seit kurzem, allerdings unter einem anderen Namen, vielleicht etwas blöd
Na dann gibt's vielleicht ein github.com/hdgucken?  ;) ;) ;D ;D

Hat auch den Vorteil, dass man den Überblick über seine eigenen Projekte behält.
Besonders, wenn man den Rechner oder Betriessystem wechselt (... und der Backup-Fall!)   ;)


Apropos:
Maple-Version: https://github.com/juergs/Maple_BME_CC_Sensor (https://github.com/juergs/Maple_BME_CC_Sensor)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 21 Januar 2018, 17:08:27
Hab einfach mal den Namen hdgucken zum bestehenden account hinzugefügt, ist insgesamt besser,
dann muss ich nicht 2 accounts betreuen  :) Muss nur noch das Projekt hochladen  ;)

Edit: es ist vollbracht: https://github.com/amigatommy/BME680-UniversalSensor (https://github.com/amigatommy/BME680-UniversalSensor)

Gruß Thomas

alias hdgucken / amigatommy (on github) ;)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 23 Januar 2018, 13:39:44
Hallo Jürgen,

Zitat von: juergs am 21 Januar 2018, 12:22:37
Apropos:
Maple-Version: https://github.com/juergs/Maple_BME_CC_Sensor (https://github.com/juergs/Maple_BME_CC_Sensor)
von welcher Bibliothek kommt den HardWire.h?

C:\temp\BME680_sensor_maple\BME680_sensor_maple.ino:133:22: fatal error: HardWire.h: No such file or directory
#include <HardWire.h>
compilation terminated.
exit status 1


Ich versuche gerade die arduino IDE für den STM32F103x einzurichten, Blink Sketch geht, Deiner leider noch nicht  :(

Danke + Gruß

Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 23 Januar 2018, 14:18:20
https://github.com/leaflabs/libmaple/blob/master/libraries/Wire/HardWire.h (https://github.com/leaflabs/libmaple/blob/master/libraries/Wire/HardWire.h)
Zitat/*
* Library created by crenn to use the new WireBase system and allow Arduino
* users easy interaction with the I2C Hardware in a familiar method.
*/
;)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 23 Januar 2018, 15:09:47
https://wolfgangklenk.wordpress.com/2017/11/05/indoor-air-quality-iaq-measurement-with-bosch-bme680-and-stm32f103c8t6/ (https://wolfgangklenk.wordpress.com/2017/11/05/indoor-air-quality-iaq-measurement-with-bosch-bme680-and-stm32f103c8t6/)
hier eine gute Anleitung zum einbinden der libalgobsec.a und das tweaken der STM32 SPI Lib  8)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 23 Januar 2018, 15:48:04
Zitat von: hdgucken am 23 Januar 2018, 15:09:47
https://wolfgangklenk.wordpress.com/2017/11/05/indoor-air-quality-iaq-measurement-with-bosch-bme680-and-stm32f103c8t6/ (https://wolfgangklenk.wordpress.com/2017/11/05/indoor-air-quality-iaq-measurement-with-bosch-bme680-and-stm32f103c8t6/)
hier eine gute Anleitung zum einbinden der libalgobsec.a und das tweaken der STM32 SPI Lib  8)
Soweit muss ich erst einmal kommen  ;D

Gruß PeMue
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 23 Januar 2018, 16:26:53
Zitatthen you want to know how to wire up the pins of a BME680 breakout board with the Arduino MEGA. As a first step,
I would try to get the BME680 examples running which you can find at https://github.com/BoschSensortec/BME680_driver.

Das wäre der erste Part ohne BSEC ...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 23 Januar 2018, 17:38:12
Zitat von: juergs am 23 Januar 2018, 14:18:20
https://github.com/leaflabs/libmaple/blob/master/libraries/Wire/HardWire.h (https://github.com/leaflabs/libmaple/blob/master/libraries/Wire/HardWire.h) ;)
Hm, diese Bibliothek findet sich selber nicht, Fehlermeldungen:

In file included from C:\temp\BME680_sensor_maple\BME680_sensor_maple.ino:133:0:
E:\software\arduino185\portable\sketchbook\hardware\Arduino_STM32\STM32F1\libraries\Wire/HardWire.h:42:27: fatal error: Wire/WireBase.h: No such file or directory
#include <Wire/WireBase.h>
                          ^
compilation terminated.

Inhalt der Bibliothek:
28.07.2016  21:23             2.303 HardWire.cpp
28.07.2016  21:23             2.314 HardWire.h
28.07.2016  21:23               644 rules.mk
28.07.2016  21:23             4.895 Wire.cpp
28.07.2016  21:23             3.785 Wire.h
28.07.2016  21:23             4.050 WireBase.cpp
28.07.2016  21:23             4.343 WireBase.h

Header von HardWire.h:
#include <Wire/WireBase.h>
#include <wirish/wirish.h>
#include <libmaple/i2c.h>

das Unterverzeichnis Wire gibt's nicht  :o :o :o

Gruß PeMue
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 23 Januar 2018, 18:06:14
Hallo Peter,
....schaue mal nach...
ZitatUsing library Wire in folder: C:\Users\<js>\Documents\Arduino\hardware\Arduino_STM32\STM32F1\libraries\Wire (legacy)

Das sit bei mir ein Ordner im Projekt-Ordner, den man in Preferences einstellt.
Dieser wird wohl automatisch bei der Toolchain-Installation im Boardmanager angelegt ...

Datenträger in Laufwerk C: ist SYSTEM
Volumeseriennummer: 7096-15F4

Verzeichnis von C:\Users\js\Documents\Arduino\hardware\Arduino_STM32\STM32F1\libraries

23.01.2018  18:19    <DIR>          .
23.01.2018  18:19    <DIR>          ..
13.06.2017  01:39    <DIR>          Adafruit_GFX_AS
13.06.2017  01:39    <DIR>          Adafruit_ILI9341
13.06.2017  01:39    <DIR>          Adafruit_ILI9341_STM
13.06.2017  01:39    <DIR>          Adafruit_SSD1306
13.06.2017  01:39    <DIR>          A_STM32_Examples
13.06.2017  01:39    <DIR>          EEPROM
13.06.2017  01:39    <DIR>          Ethernet_STM
13.06.2017  01:39    <DIR>          FreeRTOS
13.06.2017  01:39    <DIR>          FreeRTOS821
13.06.2017  01:39    <DIR>          Lcd7920_STM
13.06.2017  01:39    <DIR>          LiquidCrystal
13.06.2017  01:39    <DIR>          MapleCoOS
13.06.2017  01:39    <DIR>          MapleCoOS116
13.06.2017  01:39    <DIR>          OLED_I2C
13.06.2017  01:39    <DIR>          OneWireSTM
13.06.2017  01:39    <DIR>          RTClock
13.06.2017  01:39    <DIR>          Serasidis_EtherCard_STM
13.06.2017  01:39    <DIR>          Serasidis_VS1003B_STM
13.06.2017  01:39    <DIR>          Serasidis_XPT2046_touch
13.06.2017  01:39    <DIR>          Servo
13.06.2017  01:39    <DIR>          SPI
13.06.2017  01:39    <DIR>          STM32ADC
13.06.2017  01:39    <DIR>          Touch-Screen-Library_STM
13.06.2017  01:39    <DIR>          Wire
23.01.2018  18:19            13.785 Wire.zip
13.06.2017  01:39    <DIR>          WS2812B
               1 Datei(en),         13.785 Bytes
              27 Verzeichnis(se), 146.876.633.088 Bytes frei


So sieht das bei mir aus, weiss aber leider nicht mehr genau, ob ich das manuell da reingelegt habe.
Sehr wahrscheinlich schon  :( ??? ::) Asche auf mein Haupt!

Die SPI-Lib aus diesem Verzeichnis (STM32-Standard-Library-Suchpfad) habe ich auch noch dazu gepackt.
(und eine OLED_I2C liegt auch noch dort ..)

Wo das bei Dir liegt, kannst du am Compile-Output sehen, wenn Du in Preferences "Show verbose output during *compile and *upload"
beide Checkboxen angeklickt hast.

Grüße,
Jürgen

PS:
Der Status ist aber wirklich "preliminary"... Mann kann auch die I2C-Speed noch auf FAST einstellen.
Dann ist der Display-Update schneller....
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 23 Januar 2018, 20:59:57
Bin soweit, jetzt fehlen mir nur noch meine STM32 Boards, die sind noch unterwegs ...  :)
Hab den Universalsensor V2.2 auf STM32 umgebaut, hoffe, daß alles funktionieren wird:
Der Sketch verwendet 74492 Bytes (56%) des Programmspeicherplatzes. Das Maximum sind 131072 Bytes.
Globale Variablen verwenden 5920 Bytes (28%) des dynamischen Speichers, 14560 Bytes für lokale Variablen verbleiben. Das Maximum sind 20480 Bytes.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 24 Januar 2018, 21:15:31
Hallo Jürgen,

es reicht nur die Wire Bibliothek, die habe ich in Wire_leaflab umbenannt, da schon eine Wire Bibliothek vorhanden war. Dann hat die Arduino IDE anstandslos durchkompiliert (obwohl ich die BSEC Bibliothek noch nicht eingebunden habe  ???), aber es kamen immerhin rote Warnmeldungen. Das ist also anders als beim ESP8266 oder beim AVR, der Linker linkt, auch wenn die Bibliothek nicht da ist und erstellt einen Sketch  :o. Nach dem Einbinden der BSEC Bibliothek (mit Deinem Sketch aus github):

Sketch uses 72700 bytes (65%) of program storage space. Maximum is 110592 bytes.
Global variables use 5752 bytes (33%) of dynamic memory, leaving 11656 bytes for local variables. Maximum is 17408 bytes.

Jetzt muss ich mich nur noch darum kümmern, welcher der richtige Bootloader für den mapleMini ist.  :D

Gruß PeMue
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 24 Januar 2018, 21:44:00
Hallo Peter,

freut mich, dass es geklappt hat. (Die ASCII_SD1306-OLED-Lib gibt eine Warnmeldung aus bezüglich Fast-I2C-Mode (400KHz) aus und kann vernachlässigt werden)
Zitatder Linker linkt, auch wenn die Bibliothek nicht da ist
Nein, der Compiler meckert eigentlich, weil er die Einsprungspunkte in die BSEC-Funktionen nicht findet ...

Das MapleMini-Board kommt ja schon mit dem Leaflabs Bootloader, bzw. mit dem Hardware-DFU-Bootloader.
Auf einen fabrikneuen STM-Chip brauchst Du nur die manuelle Boot-Prozedur seriell (!) einmal einleiten:
Brücke zwischen Ground und BOOT1 und den Blink-Sketch über Arduino flashen (Flash-Button gedrückt halten und Reset kurz toggeln)
Danach sollte dann die Arduino-IDE über USB als DFU-Bootloader erkennen und beim Flashen vom Blink Sketch seinen Bootloader mit auf den Prozessor brennen.
Von da ab braucht man nicht mehr manuell die Button-Prozedur durchführen, sondern die Arduino-IDE schaltet automatisch in den Flashmodus.
Wie gesagt, das gilt nicht für das Maple-Board, nur für einen eigenen neuen Chip. Ansonsten kennen wir das schon aus dem MapleCUL-Thread.  ;)

Diesen Bootloader könntest Du dann auch mit dem "Flash Loader Demonstrator" auf den Chip bringen (ist aber mit der Arduino-IDE nicht erforderlich).
Wäre noch die Frage offen, wo liegt der Arduino-STM-Bootloader zum manuellen Flashen ? 

Hoffe, ich habe das noch richtig in Erinnerung.  ::)

Ansonsten, hier:
http://www.rogerclark.net/stm32f103-and-maple-maple-mini-with-arduino-1-5-x-ide/ (http://www.rogerclark.net/stm32f103-and-maple-maple-mini-with-arduino-1-5-x-ide/)
http://www.rogerclark.net/arduino-stm32-usb-serial-and-dfu/ (http://www.rogerclark.net/arduino-stm32-usb-serial-and-dfu/)

Bootloader binary: maple_mini_boot20.bin
https://github.com/rogerclarkmelbourne/STM32duino-bootloader/tree/master/binaries (https://github.com/rogerclarkmelbourne/STM32duino-bootloader/tree/master/binaries)

http://born2bastel.de/2017/02/08/maple-mini-clone-bootloader-flashen/ (http://born2bastel.de/2017/02/08/maple-mini-clone-bootloader-flashen/)




Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 28 Januar 2018, 14:36:35
Maple + Adafruit SSD1306-OLED- Lib mit Hardware I2C_1:
(defaults, mit 0x3C-Adresse und 128x64-Auflösung)

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306_STM32.h>

#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);


im STM-Hardware-Ordner (aus preferences.txt: <lib-Path>\hardware)
ZitatC:\Users\<user>\Documents\Arduino\hardware\Arduino_STM32\STM32F1\libraries\Adafruit_SSD1306

folgende Änderungen für I2c_1 :

//#include <HWIRE.h>
#include <HardWire.h>
HardWire HWIRE(1,I2C_FAST_MODE); // I2c1
//HardWire HWIRE(2,I2C_FAST_MODE); // I2c2
#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306_STM32.h"
/*
Things to know:
This adaption uses hardware I2C (hardwire.h), Port: I2c2. SDA=0, SCL=1 on maple mini
To change it to Port I2C1:
//HardWire HWIRE(1,I2C_FAST_MODE); // I2c1
HardWire HWIRE(2,I2C_FAST_MODE); // I2c2
*/


Der compiler beklagte sich, dass er swap nicht kennt, deshalb:
#define swap(x, y) do { typeof(x) SWAP = x; x = y; y = SWAP; } while (0)
in der Datei: C:\Users\<user>\Documents\Arduino\hardware\Arduino_STM32\STM32F1\libraries\Adafruit_SSD1306\Adafruit_SSD1306_STM32.cpp
geändert bzw. hinzugefügt.

Damit funktioniert auch der I2C-FastMode mit 400KHz.

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 28 Januar 2018, 19:29:05
Hallo Thomas,

Zitat von: hdgucken am 21 Januar 2018, 00:19:56
Hab mal wieder den Universalsensor überarbeitet, hier ist V2.2 ! Alles ist jetzt über die Defines auswähl- bzw. einstellbar,
habe mittlerweile mein nanoLGW mit der v2.2 aktualisiert:
BME680 wireless sensor V2.2
Protocol: UniversalSensor
BSEC version: 1.4.5.1
ESP Core Version: 2_4_0
ESP SDK Version: 2.1.0(deb1901)
NODE-ID : 0x6F
aktivierte Komponenten:
RFM69 - 433/868/915MHz Sender
BH1750 - Lichtsensor
OLED - 128x64 OLED Display mit SH1106 Chipsatz
Messung der Versorgungsspannung aktiv
OLED not found
Hardware-SPI fuer RFM69 aktiviert
NSS an GPIO-Pin 15
RFM69  init ...
Init LaCrosse done
Set frequency to 868.300 MHz
Set datarate to 17241 bps
done
BME680 init ... done
BH1750 init ... not present
Ready, start measuring ...

[7597.00] P: 1006.8| T: 30.55| rH: 30.33| IAQ: 25.00 (0)| Gas: 19316.00| UBat: 3.7V
transmission time: 32 ms
data:
205 111 5 25 30 255 255 255 255 255 255 255 255 0 39 83 0 0 25 0 75 116 255 255 255 22 36 255 255 255 127 182
CD 6F 5 19 1E FF FF FF FF FF FF FF FF 0 27 53 0 0 19 0 4B 74 FF FF FF 16 24 FF FF FF 7F B6
32 bytes sent.
[19598.00] P: 1006.7| T: 30.84| rH: 28.65| IAQ: 25.00 (0)| Gas: 18798.00| UBat: 3.7V

FHEM empfängt dieselben Werte:

2018-01-28 19:19:37 LaCrosse LaCrosse_6F gas1: 25
2018-01-28 19:19:37 LaCrosse LaCrosse_6F gas2: 18798

Verbesserungsvorschlag: Im Debug Mode auch die Höhe mit ausgeben, da sieht man dann, welche Höhe der Sensor eingestellt hat (und ich habe prompt die mit 0 m geflasht  :o).

Gruß PeMue

Edit 1:
Und den Sprung im Druck kann man sehr gut sehen: ursprünglich Berlin, dann 0 m und jetzt die Höhe, die für meinen Wohnort passt  ;D Deckt sich jetzt auch mit den anderen Drucksensoren.

Edit 2:
Und hier noch die mapleMini Hardware zu Einpflegen in den Code, noch ungetestet, aber geflasht:
  Hardware setup:                                                   BME680              RFM69CW
                         NodeMCU                                   +------+            +-------+
                         +--\/--+                            +3.3V | 0x76 |      +3,3V |       | GND
                VCC 3,3V |      | GND                      <-> SDA | or   |   --> MOSI |    NSS| RFM_NSS <--
    int.LED (D0) GPIO 16 |      | GPIO 1  (D10)            --> SCL | 0x77 |   <-- MISO |       |
    <-- SCL (D1)  GPIO 5 |      | GPIO 3  (D9)                 GND |      |   --> SCK  |       |
           RESET     RST |      | GPIO 15 (D8) RFM_NSS -->         +------+            +-------+
    <-> SDA (D2)  GPIO 4 |      | GPIO 13 (D7) MOSI -->             BH1750            SH1106 OLED
            (D3)  GPIO 0 |      | GPIO 12 (D6) MISO <--            +------+            +-------+
            (D4)  GPIO 2 |      | GPIO 14 (D5) SCK  -->      +3.3V | 0x23 |      +3.3V | 0x3C  |
                         +------+                              GND | or   |        GND | or    |
                                                           --> SCL | 0x5C |    --> SCL | 0x3D  |
                                                           <-> SDA |      |    <-> SDA |       |
                                                                   +------+            +-------+

                         mapleMini
                         +--\/--+                       
            <-- VCC 3.3V |      | VCC 3.3V
                 <-- GND |      | GND
                   BOOT0 |      | VBAT
            <-> SDA PB_7 |      | PC_13
        <-- SCL D10/PB_6 |      | PC_14
                    PB_5 |      | PC_15
                    PB_4 |      | RESET
                    PB_3 |      | PA_0
                   PA_15 |      | PA_1
                   PA_14 |      | PA_2
                   PA_13 |      | PA_3
                   PA_12 |      | PA_4/A2 NSS
                   PA_11 |      | PA_5/D13 SCK
                   PA_10 |      | PA_6/D12 MISO
                    PA_9 |      | PA_7/D11 MOSI
                    PA_8 |      | PB_0
                   PB_15 |      | PB_2
                   PB_14 |      | PB_10
                   PB_13 |      | PB_11
                   PB_12 |      | + 5V
                         +------+                       
                                  PB_1 LED1
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 28 Januar 2018, 22:16:01
Hallo PeMue,

Zitat von: PeMue
habe mittlerweile mein nanoLGW mit der v2.2 aktualisiert:
[19598.00] P: 1006.7| T: 30.84| rH: 28.65| IAQ: 25.00 (0)| Gas: 18798.00| UBat: 3.7V[/code]
FHEM empfängt dieselben Werte:
2018-01-28 19:19:37 LaCrosse LaCrosse_6F gas1: 25
2018-01-28 19:19:37 LaCrosse LaCrosse_6F gas2: 18798

Das ist merkwürdig, habe heute mein 2. LGM auf die Platine gebracht und mit BME680 bestückt. Habe bei beiden LGM's jetzt auch so niedrige Gas Werte
(13 -15 kOhm, obwohl der eine Sensor vorher am Universalsensor "normale" Werte geliefert hat (zwischen 300 und 500 kOhm). Evtl. Timing Problem ?
Die Kurven sind aber im Vergleich zum Universalsensor ziemlich identisch.
Zitat
Edit 1:
Und den Sprung im Druck kann man sehr gut sehen: ursprünglich Berlin, dann 0 m und jetzt die Höhe, die für meinen Wohnort passt  ;D Deckt sich jetzt auch mit den anderen Drucksensoren.
Ok, die Höhenkorrektur werde ich erstmal als Debug-Ausgabe mit einbauen  ;)

ZitatUnd hier noch die mapleMini Hardware zu Einpflegen in den Code, noch ungetestet, aber geflasht:
Danke, hab sogar schon getestet, stimmt soweit, man kann die Pins direkt als "PA4" oder "PB6" im Quellcode verwenden, wird korrekt verarbeitet ;)

V2.2 läuft jetzt komplett auf der STM32 Hardware (BluePill hab ich), es gibt nur ein Problem bei mir, der RFM69 arbeitet soweit normal, es kommt aber nichts an den LGM's an  :o
Heute sind über den Tag dann doch ganz sporadisch ca. 5 Werte angekommen, da weiß ich noch nicht so recht weiter. Hab schon einen zweiten RFM und mit weniger Sendeleistung,
wie Jürgen schon geschrieben hatte, probiert, keine Veränderung. Hab dann mit dem SPI Takt gespielt, der geht problemlos mit relativ sauberen Signalen bis ca. 2.5MHz, bin jetzt
bei etwa 285kHz, Soft-SPI macht ca. 400kHz, aber geht auch nicht besser oder schlechter. Na mal schauen ...  :-[

Dann ist mir noch etwas sehr interessantes aufgefallen, hab mein altes SSD1306 Display vom Steckbrett-LGM einfach mal so an den Universalsensor gehangen, ohne
auf SSD1306 in der Adafruit Lib zurück zu stellen, es läuft :D
Das bedeutet, SH1106 und SSD1306 funktionieren ohne Änderung !

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 29 Januar 2018, 18:36:13
Zur Info:
https://davidegironi.blogspot.de/2017/05/mq-gas-sensor-correlation-function.html (https://davidegironi.blogspot.de/2017/05/mq-gas-sensor-correlation-function.html)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 29 Januar 2018, 20:08:21
Hallo Jürgen,

nochmal zur Adafruit Lib: das Problem, daß diese mit dem STM32 nicht funktioniert, liegt an dem zweiten Aufruf von Wire.begin() in der Adafruit Lib selbst.
Den hab ich dort für STM32 deaktiviert, damit läuft es ! Gleiches gilt für die BH1750.cpp  ;)

Edit: In der RFMxx.cpp ist vor "SPI.begin()" folgendes für den SPI Clock eingestellt:
SPI.setClockDivider(SPI_BAUD_PCLK_DIV_128);
bedeutet: 72MHz / 128 = 562.5kHz
so läuft es seit heute Morgen  :D

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 29 Januar 2018, 21:30:47
Hallo Thomas,

danke für den Hinweis!

Ok, in der setup()-Methode, nicht RFMxx.cpp:
#if(HAS_RFM_MODULE)
      /* --- RFM69CW init --- */
      SPI.begin();
      rfm.Begin();
      ...

Mit welcher SPI-Speed läuft es dann eigentlich unter den Default-Einstellungen?
Möglicherweise zu schnell für einige, aber nicht alle RFMs?

Zitat... liegt an dem zweiten Aufruf von Wire.begin()
Bei mir geht es ja (eigentlich) aber gut zu wissen, woran es scheitern könnte.

War in der letzten Zeit mit dem Gehäuse zu stark beschäftigt.
Habe gerade noch mal eine LGW-Gateway mit der FW 1.31 aufgebaut, mein ältester Sensor mit alten Einstellungen wird
aus 1m  Entfernung nicht empfanden, dort habe ich noch nicht den PA-Level gesetzt ...
Die anderen beiden aber sofort....

Bei einem Update auf FHEM kommt nicht die CustomSensor-Version, ist der UniveralSensor gesetzt?
Dann muss ich das noch aktualisieren.

Die Adafruit-Lib funktioniert bei mir auch auf dem Maple mit den vorher geschilderten (https://forum.fhem.de/index.php/topic,78619.msg757061.html#msg757061) Einstellungen  ;)
Die ASCIISD1306-Lib aktualisiert das Display noch zu langsam, dort muss ich auch noch auf FAST :) umstellen ... 
Aber sonst alles ok!

Dann fehlt nur noch ein Gehäuse für WemosD1mini und die STMs.
Langsam gehen mir die BME's aus ... Vielleicht werde ich doch mal eine Bestückung probieren ... (7€ bei 10er Abnahme + 0.80 Cent für die Platine)
Nachschub (http://www.watterott.com/de/BME680-Breakout) ist momentan rar, ähm ausverkauft ...  :-X :'(

Dann klappt es ja schon richtig Klasse mit den STMs, Respekt!  :D

Dann wäre das nächste Ziel: Batterie-Betrieb ?

Grüße,
Jürgen


Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 30 Januar 2018, 08:54:14
Hallo Jürgen,

Zitat von: juergs
Ok, in der setup()-Methode, nicht RFMxx.cpp:
#if(HAS_RFM_MODULE)
      /* --- RFM69CW init --- */
      SPI.begin();
      rfm.Begin();
      ...

In der Setup-Methode nicht "SPI.begin();", in der RFMxx.cpp, siehe V2.2 !

Zitat
Mit welcher SPI-Speed läuft es dann eigentlich unter den Default-Einstellungen?
Möglicherweise zu schnell für einige, aber nicht alle RFMs?
Bei mir geht es ja (eigentlich) aber gut zu wissen, woran es scheitern könnte.
Ich meine, es war Standard SPI_CLOCK_DIV16, also 4.5MHz.
Sollte der RFM69 ja auch locker können, laut Datenblatt bis 10MHz !

Zitat
Habe gerade noch mal eine LGW-Gateway mit der FW 1.31 aufgebaut, mein ältester Sensor mit alten Einstellungen wird
aus 1m  Entfernung nicht empfanden, dort habe ich noch nicht den PA-Level gesetzt ...
Die anderen beiden aber sofort....
Das ist noch interessant, hab noch keine Versuche mit der Reichweite gemacht, wird spannend  :-[

Zitat
Bei einem Update auf FHEM kommt nicht die CustomSensor-Version, ist der UniveralSensor gesetzt?
Dann muss ich das noch aktualisieren.
Stimmt, in den Updates ist nur Universalsensor implementiert, weil Du Dir das CustomSensor Modul sparst, bei dieser Variante  ;)

Zitat
Langsam gehen mir die BME's aus ... Vielleicht werde ich doch mal eine Bestückung probieren ... (7€ bei 10er Abnahme + 0.80 Cent für die Platine)
Nachschub (http://www.watterott.com/de/BME680-Breakout) ist momentan rar, ähm ausverkauft ...  :-X :'(
Meine drei Stück sind jetzt auch verbaut, mal schauen, wann es wieder welche gibt  8)

Zitat
Dann klappt es ja schon richtig Klasse mit den STMs, Respekt!  :D
Ja, so langsam geht es voran  :D

Zitat
Dann wäre das nächste Ziel: Batterie-Betrieb ?
Wäre natürlich genial, wie sieht es denn mit der Akkulaufzeit auf dem WEMOS Board aus, mußtest Du schon mal nachladen ?

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 30 Januar 2018, 22:12:32
Kaum beschwert man sich über fehlenden Nachschub ... gibt es wieder  :)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 09 Februar 2018, 18:28:27
Alternatives STM-Sensor Board:
http://flabbergast.github.io/bat-board/ (http://flabbergast.github.io/bat-board/)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 10 Februar 2018, 15:05:16
Ich habe mir bei den Chinesen dieses Board http://www.watterott.com/de/STM32F103C8T6-Minimum-System-Board bestellt, aber für 5 € in Deutschland auch ziemlich preiswert.

Gruß PeMue
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 11 Februar 2018, 01:39:54
Zitat von: PeMue
Ich habe mir bei den Chinesen dieses Board http://www.watterott.com/de/STM32F103C8T6-Minimum-System-Board bestellt, aber für 5 € in Deutschland auch ziemlich preiswert.
Das habe ich auch, ist das "BluePill". Zwei sind noch unterwegs ...  ;)

Bin noch am arbeiten, wegen der Parameter Eingaben. Ist doch etwas aufwändiger als gedacht ...  :o

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 11 Februar 2018, 17:40:01
Hallo Thomas,

hier gibt es ein Menü, das meiner Meinung nach, sehr einfach zum seriellen Parametrieren benutzt werden kann:

https://playground.arduino.cc/Code/Menu (https://playground.arduino.cc/Code/Menu)
Menu#Download (https://playground.arduino.cc/Code/Menu#Download)

void loop()
{
  if (Serial.available())
  {
    byte read = Serial.read();
    switch (read)
    {
      case 'w': menu.moveUp(); break;
      case 's': menu.moveDown(); break;
      case 'd': menu.moveRight(); break;
      case 'a': menu.moveLeft(); break;
      case 'e': menu.use(); break;
    }
  }
}

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 12 Februar 2018, 00:45:29
Hallo Jürgen,

Zitat von: juergs
hier gibt es ein Menü, das meiner Meinung nach, sehr einfach zum seriellen Parametrieren benutzt werden kann ...
So ungefähr dachte ich auch, hab mal was zusammengebaut, ist noch nicht der endgültige Stand, aber geht erstmal  ;)
Die erste Abfrage (Settings löschen) kommt bei jedem Start und hat einen 5 sek. Timeout, heißt, wenn man nichts eingibt, geht es nach 5 sek.
mit "N" weiter. Ist nur für den Fall, daß man später mal etwas ändern will.
Die Abfragen zu den Settings kommen normalerweise nur beim ersten Start, wenn im EEPROM alles "0xFF" ist.
Aber auch, wenn nur einer der Werte einem gelöschten EEPROM entspricht, dann wird nur der oder die noch nicht geänderten Werte abgefragt.
Diese Version (3.0) ist nur für STM32 ! Überlege noch, ob man das dann zusammenführt mit dem ESP8266 oder
beide Versionen für sich laufen sollten ?

Gruß Thomas
 
Anbei ein paar Bilder:
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 18 Februar 2018, 01:19:14
So, bin mal wieder ein ganzes Stück weiter gekommen. Version 3.0 ist online !
Ab sofort werden der ESP8266 UND der STM32F103Cx unterstützt.
Getestet habe ich mit einer NodeMCU V1.0 (ESP8266) und dem BluePill (STM32F103C8T6).
Zusätzlich werden jetzt die Settings (NodeID, Höhe über NN und Temperatur Offset) im EEPROM gespeichert.
Was noch nicht geht: VCC Messung beim STM32, steht im Moment konstant auf 3,3V , kommt aber demnächst.
Verfügbar ab sofort hier: https://github.com/amigatommy/BME680-UniversalSensor (https://github.com/amigatommy/BME680-UniversalSensor)  :)

Gruß Thomas

Anbei 2 Bilder, einmal Start mit dem BluePill, dann noch der Start mit der NodeMCU ...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 18 Februar 2018, 07:48:20
Zitat von: hdgucken am 18 Februar 2018, 01:19:14
Version 3.0 ist online !
Cool, vielen Dank dafür!

ZitatThe Lightsensor (BH1750) is also optional, it can but not must be connected.
Zitat... the RFM69CW must also not be connected, in this case, no wireless transmission is possible. The data where transmitted by the serial port only (115200 Baud).
Ui, man darf keinen Lichtsensor bzw.  Display anschließen  8) 8) 8), ich glaube, das war so nicht gemeint.

Ich würde das so formulieren:

The Lightsensor (BH1750) is also optional, it can be but does not need to be connected.
... the RFM69CW is also optional, in this case, no wireless transmission is possible. In this case the values are transmitted only by serial port (115200 Baud).


Ich muss mal heute Nachmittag schauen, wie ich die IDE umbauen muss, um die BSEC Bibliothek einzubinden. Vermutlich geht das ohne irgendwelche Umbauten.
Im übrigen habe ich gesehen, dass die Widerstandswerte wieder im 200-300 kOhm Bereich sind, welcher Bereich ist denn nun richtig?

Gruß PeMue
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 18 Februar 2018, 12:52:12
Hallo Peter,

Zitat von: PeMue
Ui, man darf keinen Lichtsensor bzw.  Display anschließen  8) 8) 8), ich glaube, das war so nicht gemeint.
Oh je, ich sollte manchmal doch eher ins Bett gehen, was man nachts so für einen Mist zusammen schreibt  ;D
Vielen Dank für den Hinweis jedenfalls, habe das gleich mal verbessert, ich hoffe, so ist es jetzt richtig zu verstehen  ;)
Zitat
Ich muss mal heute Nachmittag schauen, wie ich die IDE umbauen muss, um die BSEC Bibliothek einzubinden. Vermutlich geht das ohne irgendwelche Umbauten.
Ich hab das in der Doku geschrieben, wie es bei mir funktioniert hat, ist eigentlich nicht weiter schlimm.
Zitat
Im übrigen habe ich gesehen, dass die Widerstandswerte wieder im 200-300 kOhm Bereich sind, welcher Bereich ist denn nun richtig?
Ich würde sagen, 200-300kOhm Bereich ist richtig, hab auch immer noch Probleme mit dem BME680 an meinem zweiten LGM. Hab an diesem ein
Nextion Display angeschlossen, jetzt ist das Phänomen, daß der Gas Wert nach einiger Zeit komplett einfriert (bei ca. 808kOhm!) und generell auch nur im zweistelligen KiloOhm Bereich
misst, die Kurve passt allerdings im Vergleich zum UniversalSensor.
So sieht es im Moment bei mir aus (Bilder) ...

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 18 Februar 2018, 15:48:17
Hallo Thomas,

die Software läuft auf meinem nanoLGW, siehe
BME680 wireless sensor V3.0
Compiled: Sun Feb 18 14:21:12 2018
Protocol: UniversalSensor
BSEC version: 1.4.5.1
ESP Core Version: 2_4_0
ESP SDK Version: 2.1.0(deb1901)
OLED init ... not found
Node-ID is: 255 (0xFF)
Node-ID set to: 111 (0x6F)
Save permanently (Y/N)?
OK.
Altitude is: 65560.5m
new value (0.0-8848.9):
Altitude set to: 240.0m
Save permanently (Y/N)?
OK.
Temperature offset: -1.1 degrees celsius
new value (+-10.0):
Temperature offset set to: 0.0 degrees celsius
Save permanently (Y/N)?
OK.
Save settings ...
Node-ID           : 111 (0x6F)
Altitude          : 240.0m
Temperature offset: 0.0 degrees celsius
RFM69  init ... done
BME680 init ... done
BH1750 init ... not present
Ready, start measuring ...
[142299.00] P: 1026.6| T: 37.61| rH: 15.03| IAQ: 25.00 (0)| Gas: 33767.00| UBat: 3.7V
[445308.00] P: 1026.3| T: 33.34| rH: 18.32| IAQ: 20.21 (1)| Gas: 44664.00| UBat: 3.7V
[448308.00] P: 1026.4| T: 33.30| rH: 18.33| IAQ: 17.01 (1)| Gas: 44902.00| UBat: 3.7V
[451308.00] P: 1026.3| T: 33.28| rH: 18.34| IAQ: 16.64 (1)| Gas: 44950.00| UBat: 3.7V
[454308.00] P: 1026.3| T: 33.28| rH: 18.33| IAQ: 20.48 (1)| Gas: 44807.00| UBat: 3.7V
[457308.00] P: 1026.3| T: 33.24| rH: 18.36| IAQ: 20.50 (1)| Gas: 44902.00| UBat: 3.7V

Ein paar Anmerkungen von meiner Seite:
- Die RFM69xx Library fehlt in github.
- Meine Widerstandswerte sind und bleiben im 30-40 kOhm Bereich, auch mit der v2.2.
- Die Einstellungen müssen ohne CR/LF gemacht werden, sonst kapiert es die Software nicht.
- Beim maple Mini ist mir nicht klar, wie man so rechtzeitig auf die serielle Schnittstelle zugreift, dass man was ändern kann. Das liegt aber ggf. daran, dass ich noch keinen BME680 dran habe, da schaltet die interne LED auf hell  ;D
Ich lass' den mal weiterrennen.

Gruß Peter

Edit:
Der Widerstand geht hoch in den 100k Bereich  :o

2018-02-18_16:49:12 LaCrosse_6F gas1: 29
2018-02-18_16:49:12 LaCrosse_6F gas2: 117735
2018-02-18_16:54:12 LaCrosse_6F gas1: 24
2018-02-18_16:54:12 LaCrosse_6F gas2: 120606
2018-02-18_16:59:12 LaCrosse_6F gas1: 27
2018-02-18_16:59:12 LaCrosse_6F gas2: 121128
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 18 Februar 2018, 18:35:05
Hallo Peter,

Zitat von: PeMue
Ein paar Anmerkungen von meiner Seite:
- Die RFM69xx Library fehlt in github.
Die heißt nur RFMxx und ist mit im Sketch Ordner  8)
Zitat
Meine Widerstandswerte sind und bleiben im 30-40 kOhm Bereich, auch mit der v2.2.
Das ist schon merkwürdig, das hab ich bei mir noch nicht beobachtet.
Vielleicht pendelt sich das noch ein in den nächsten Tagen ...
Zitat
Die Einstellungen müssen ohne CR/LF gemacht werden, sonst kapiert es die Software nicht.
Beim maple Mini ist mir nicht klar, wie man so rechtzeitig auf die serielle Schnittstelle zugreift, dass man was ändern kann. Das liegt aber ggf. daran, dass ich noch keinen BME680 dran habe, da schaltet die interne LED auf hell  ;D
Ich lass' den mal weiterrennen.
Das mit CR/LF ist natürlich ein kleines Problem, der eine hat's der andere nicht  ;D Je nach verwendeter Terminalsoftware und deren Einstellungen.
Mit der Arduino IDE und Putty klappt das bei mir sehr gut. Wüßte da jetzt keine allgemeingültige Lösung.
Man hat 5 Sekunden Zeit, das Terminal zu öffnen, ist vielleicht etwas knapp, aber wenn ich da noch länger warte, denkt man ja, der Sensor funktioniert nicht, weil erstmal nichts passiert  :o
Wäre aber kein Problem, einfach die Wartezeit nach belieben hochsetzen. Man könnte auch warten, bis sich die serielle Schnittstelle verbunden hat, aber dann hat man
wieder ein Problem: wenn man kein serielles Kabel anschließt, startet die Software nicht, ein Teufelskreis  :(
Aber fürs erste ist es doch schon mal nicht schlecht, denke ich  :)

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 01 April 2018, 13:22:40
Ein neues Firmwarerelease:
BSEC_1.4.6.0_Generic_Release_20180323 (https://www.bosch-sensortec.com/bst/products/all_products/bsec)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 01 April 2018, 15:12:33
soeben runtergeladen, schaue ich mir an ... Danke für den Hinweis !

Frohe Ostern an Alle !

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 01 April 2018, 20:11:26
Hallo Jürgen, hallo Thomas,

ihr seid mir einfach zu schnell  :o
Könntet Ihr bitte hier (https://forum.fhem.de/index.php/topic,51329.msg788819.html#msg788819) mal schauen, ob der BH1750 korrekt verdrahtet ist? Dann wäre das nämlich ein potentieller Kandidat für einen Universalsensor.

Euch allen noch schöne Ostern.

Gruß Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 01 April 2018, 20:38:30
Hallo Peter,
Ich habe den Lichtsensor noch nicht eingesetzt, aber
Das  hier (http://www.esp8266learning.com/bh1750fvi-ambient-light-sensor-example.php) scheint okay zu sein .
Schöne Restostern  8)
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 03 April 2018, 13:24:54
genau dieses Modul verwende ich auch ! Die verlinkte Schaltung funktioniert also 100%  ;)

Gruß Thomas

Edit: die einfache Beschaltung (1kOhm, 1uF) sollte aber auch reichen, da kommt es dann nur auf eine schnell ansteigende (2,4V in max. 100us) Versorgungsspannung an.
        Müßte man mal testen ...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: fh168 am 19 April 2018, 08:53:38
Hallo Gemeinde,

den BME680 gibt es mittlerweile beim freundlich Ali ( http://s.click.aliexpress.com/e/qNfqByz ) auf einem Board.

Frage: Kann man den mit einem Wemos D1 mit einem Sleep-Modus beschalten, oder braucht der eine "Warm-Up-Phase". Also wie beispielsweise wie beim Feinstaubsensor einem MQ-7, bei dem ein paar Sekunden vor der Messung der Sensor erst mal erwärmt werden muss.

Ich habe vor, den Sensor mit einem Wemos D1 mit einer 18650 zu betreiben.

LG
/robin
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 19 April 2018, 09:08:28
Hallo Robin,

der Sensor braucht eine längere "Einbrennphase" von ca. 3-4 Tagen und während der Laufzeit einen kontinuierlichen Abfragezyklus .... (Aufheizung des Glühkörpers + BSEC-Algorithmus)
Von einem Betrieb mit DeepSleep halte ich persönlich nicht viel, heißt aber nicht, dass es unmöglich wäre. Der 18650 wäre eine gute Wahl ...
Müßte mal jemand ausprobieren (;-)
Glaube HCS hat diesen Modus auch schon verworfen ...

Das Board ist nicht schlecht, aber ähnlicher Preis wie bei Watte...

Grüße,

Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 22 April 2018, 16:53:13
... nicht ganz das Topic, aber vielleicht von Interesse:

bsec_bme680_linux (https://github.com/alexh-name/bsec_bme680_linux)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: kylix am 29 April 2018, 08:27:31
Did anybody try compiling the basic.ino sketch from BSEC archive? I already tried the one from BSEC 1.4.6.0 but it doesn't compile (I'm using an STM32F103C8T6 board).
Would somebody kindly upload somewhere BSEC 1.4.5.1 zip file?
Thanks!
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 29 April 2018, 13:27:47
Hello kylix,
did you notice that you have to include the bsec-lib into your linker settings to compile successfully the original sketch?
The how-to I mentioned earlier in this thread.
Jürgen

Greetings from Big Apple 😎
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: kylix am 29 April 2018, 19:32:27
Yes. In fact, the BME680 Universal Sensor sketch v3.0 works. I just need to compile the default basic.ino sketch. And this doesn't work. I'd like to try with version 1.4.5.1 .... who knows, maybe that compiles, but I don't have the full .zip archive.

From Bosch's website you can only download the latest version ... 1.4.6.0
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 29 April 2018, 23:52:32
Perhaps it will help meanwhile if you post the error outputs of your compile?
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: kylix am 30 April 2018, 09:02:12
I have no error when compiling, so I suppose the library gets correctly linked. Though, in the Serial Monitor Window I see: BSEC library version 0.0.0.0; BME680 error code: -2
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 30 April 2018, 09:53:25
Hello kylix,

you must modify the original "bus_write" and "bus_read" function to get it work with the STM32F103C8T6 too:

bus_write:

from:
return (int8_t)Wire.endTransmission();

to:
#ifdef __STM32F1__
   Wire.endTransmission();
   return 0;
#else
   return (int8_t)Wire.endTransmission();
#endif


bus_read:

from:
return comResult;

to:
#ifdef __STM32F1__
   return 0;
#else
   return comResult;
#endif


greetings Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: kylix am 30 April 2018, 10:16:07
Hi Thomas,

the basic.ino sketch doesn't seem to use those 2 functions (I'll have to check bsec.h and bsec.cpp):

#include "bsec.h"

// Helper functions declarations
void checkIaqSensorStatus(void);
void errLeds(void);

// Create an object of the class Bsec
Bsec iaqSensor;

String output;

// Entry point for the example
void setup(void)
{
  Serial.begin(115200);

  iaqSensor.begin(BME680_I2C_ADDR_PRIMARY, Wire);
  output = "\nBSEC library version " + String(iaqSensor.version.major) + "." + String(iaqSensor.version.minor) + "." + String(iaqSensor.version.major_bugfix) + "." + String(iaqSensor.version.minor_bugfix);
  Serial.println(output);
  checkIaqSensorStatus();

  bsec_virtual_sensor_t sensorList[7] = {
    BSEC_OUTPUT_RAW_TEMPERATURE,
    BSEC_OUTPUT_RAW_PRESSURE,
    BSEC_OUTPUT_RAW_HUMIDITY,
    BSEC_OUTPUT_RAW_GAS,
    BSEC_OUTPUT_IAQ_ESTIMATE,
    BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_TEMPERATURE,
    BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_HUMIDITY,
  };

  iaqSensor.updateSubscription(sensorList, 7, BSEC_SAMPLE_RATE_LP);
  checkIaqSensorStatus();

  // Print the header
  output = "Timestamp [ms], raw temperature [°C], pressure [hPa], raw relative humidity [%], gas [Ohm], IAQ, IAQ accuracy, temperature [°C], relative humidity [%]";
  Serial.println(output);
}

// Function that is looped forever
void loop(void)
{
  if (iaqSensor.run()) { // If new data is available
    output = String(millis());
    output += ", " + String(iaqSensor.rawTemperature);
    output += ", " + String(iaqSensor.pressure);
    output += ", " + String(iaqSensor.rawHumidity);
    output += ", " + String(iaqSensor.gasResistance);
    output += ", " + String(iaqSensor.iaqEstimate);
    output += ", " + String(iaqSensor.iaqAccuracy);
    output += ", " + String(iaqSensor.temperature);
    output += ", " + String(iaqSensor.humidity);
    Serial.println(output);
  } else {
    checkIaqSensorStatus();
  }
}

// Helper function definitions
void checkIaqSensorStatus(void)
{
  if (iaqSensor.status != BSEC_OK) {
    if (iaqSensor.status < BSEC_OK) {
      output = "BSEC error code : " + String(iaqSensor.status);
      Serial.println(output);
      for (;;)
        errLeds(); /* Halt in case of failure */
    } else {
      output = "BSEC warning code : " + String(iaqSensor.status);
      Serial.println(output);
    }
  }

  if (iaqSensor.bme680Status != BME680_OK) {
    if (iaqSensor.bme680Status < BME680_OK) {
      output = "BME680 error code : " + String(iaqSensor.bme680Status);
      Serial.println(output);
      for (;;)
        errLeds(); /* Halt in case of failure */
    } else {
      output = "BME680 warning code : " + String(iaqSensor.bme680Status);
      Serial.println(output);
    }
  }
}

void errLeds(void)
{
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, HIGH);
  delay(100);
  digitalWrite(LED_BUILTIN, LOW);
  delay(100);
}
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: kylix am 30 April 2018, 10:19:57
I think I found them in bsec.cpp, but they are different:
/**
@brief Callback function for reading registers over I2C
*/
int8_t Bsec::i2cRead(uint8_t devId, uint8_t regAddr, uint8_t *regData, uint16_t length)
{
uint16_t i;
int8_t rslt = 0;
if(Bsec::i2c_obj) {
Bsec::i2c_obj->beginTransmission(devId);
Bsec::i2c_obj->write(regAddr);
rslt = Bsec::i2c_obj->endTransmission();
Bsec::i2c_obj->requestFrom((int) devId, (int) length);
for (i = 0; (i < length) && Bsec::i2c_obj->available(); i++) {
regData[i] = Bsec::i2c_obj->read();
}
} else {
rslt = -1;
}
return rslt;
}

/**
* @brief Callback function for writing registers over I2C
*/
int8_t Bsec::i2cWrite(uint8_t devId, uint8_t regAddr, uint8_t *regData, uint16_t length)
{
uint16_t i;
int8_t rslt = 0;
if(Bsec::i2c_obj) {
Bsec::i2c_obj->beginTransmission(devId);
Bsec::i2c_obj->write(regAddr);
for (i = 0; i < length; i++) {
Bsec::i2c_obj->write(regData[i]);
}
rslt = Bsec::i2c_obj->endTransmission();
} else {
rslt = -1;
}

return rslt;
}
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 30 April 2018, 12:15:41
Ok, i meant "bsec_iot_example" in the folder "example"  :)
Thats different.

greetings Thomas  ;)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 02 Oktober 2018, 22:30:13
Hallo zusammen,

habe zufällig hier https://blog.jokielowie.com/en/2017/12/niedlugo-pomiar-jakosci-powietrza-bosch-bme680-oraz-ccs811-iaq-tvoc/ etwas interessantes über BME680 bzw. CCS811 gefunden.

Gruß PeMue
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 03 Oktober 2018, 11:13:48
Hallo Peter,
die ePaper-Display-Idee finde ich gut.
Nach ca. 1 Jahr verabschiedet sich mein kleines OLED-Display
bei Dauerbetrieb langsam ...

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 03 Oktober 2018, 16:49:14
Zitat von: juergs am 03 Oktober 2018, 11:13:48
... die ePaper-Display-Idee finde ich gut.
so etwas? Dann sollten wir aber einen neuen Thread dafür öffnen.

Gruß PeMue
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 03 Oktober 2018, 17:18:43
Zitat von: PeMue am 03 Oktober 2018, 16:49:14
so etwas? Dann sollten wir aber einen neuen Thread dafür öffnen.
Gruß PeMue

Ja, muss aber erst noch bestellen ...  ;)
Das OLED-Display ist wirklich so schlecht im Dauerbetrieb geworden ...  :(
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: fh168 am 04 Oktober 2018, 19:35:57
Wo gibt es den sketch mit dem OLED Display und der IAD - Anzeige?
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 04 Oktober 2018, 20:47:59
Hallo fh168,

hier  (https://github.com/juergs/BME680_cc_sensor_v1_5_V3_D1_WROOM_VS) und hdguckens aktuellerer  Universal-Sensor-Sketch (https://github.com/amigatommy/BME680-UniversalSensor)

Jeweils mit spezifischer LGW-Version (bin leider noch auf "LaCrosseGateway V1.30")  + fhem-Modul-Änderungen zu betreiben!
Vom Bosch müsste es auch schon wieder neue Versionen der BSEC (https://github.com/BoschSensortec/BSEC-Arduino-library)-Library geben ....

Würde aber eher noch den Sketch von hdgucken hier in diesem Thread nehmen,
da ich noch nicht auf die neue Version der LaCrosseGateway umgestellt habe.
Sobald PeMue mit dem Braten der LGW-Platine nachgezogen hat, baue ich meine Sketche ebenfalls um (Sorry..)

Die IAQ-Quer ist nur der gleitende Mittelwert des IAQ-Wertes, der steht etwas ruhiger ...

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 18 November 2018, 15:56:41
Hier zur Info noch eine andere Variante der Messung mit CO2-Sensor MH-Z14:
https://www.stall.biz/project/professioneller-co2-sensor-am-wohnzimmersensor-wiffi-wz (https://www.stall.biz/project/professioneller-co2-sensor-am-wohnzimmersensor-wiffi-wz)
http://www.doctormonk.com/2018/03/review-and-test-of-mh-z14a-ndir-co2.html (http://www.doctormonk.com/2018/03/review-and-test-of-mh-z14a-ndir-co2.html)

Die teure NDIR-Sensor-Variante (> 100€):
http://www.epluse.net/de/produkte/co2-messung/co2-sensor/ee894/ (http://www.epluse.net/de/produkte/co2-messung/co2-sensor/ee894/)

MH-Z19
http://www.guillier.org/blog/tag/air-quality.html (http://www.guillier.org/blog/tag/air-quality.html)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 18 November 2018, 21:29:21
sieht sehr interessant aus  :D
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 18 November 2018, 22:51:22
... und der Preis von 19$ scheint im Bereich des BME680 zu liegen ...  ;)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 24 November 2018, 17:18:33
BME680 für raspberry-i2c:
https://github.com/twartzek/bme680-raspberry (https://github.com/twartzek/bme680-raspberry)
http://www.ludwich.de/ludwich/Sensoren-TFLG.html (http://www.ludwich.de/ludwich/Sensoren-TFLG.html)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 27 November 2018, 19:23:40
Zitat von: juergs am 04 Oktober 2018, 20:47:59
Sobald PeMue mit dem Braten der LGW-Platine nachgezogen hat, baue ich meine Sketche ebenfalls um (sorry ...)
hat er (https://forum.fhem.de/index.php?action=dlattach;topic=51329.0;attach=106682;image)  ;) und die BME680 werden erkannt bzw. liefern Werte.

Gruß Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 09 Dezember 2018, 17:20:30
Hallo Peter,

die Sensor-Platine hat sich nach der Bestückung etwas zickig angestellt.
Habe aber auch eine etwas "eigenwilligen" Aufbau gewählt:

Da die FTDI232 noch nicht da waren, habe ich mich mit einem Serial-Adapter beholfen.
Dann war zu klären wie das mit dem RTS-Signal zu handeln ist, wenn der Adapter dieses nicht nach außen geführt hat...

Den Flash-Vorgang habe ich dann versucht, mit 2 Tastern zu "simulieren",  was aber auf Anhieb nicht funktionierte.
Dann habe ich mich auf die Fehlersuche begeben:
Beim Antippen des CH-PD-Pins mit der Oszi-Spitze leuchtete die Reset-LED kurz auf.
Dann habe ich den CH_PD-Eingang kurzerhand mit 3V3Volt verbunden -> Programmieren geht!

Um die Frage zu beantworten wie das mit der ID und mehreren Sensoren geht (seriell, mit 115.200 KBaud, 8N1):

(COM6) Compiled: Fri Dec 07 17:57:22 2018
(COM6) Protocol: UniversalSensor
(COM6) BSEC version: 1.4.5.1<LF>ESP Core Version: 2_4_0_RC1
(COM6) ESP SDK Version: 2.0.0(656edbf)
(COM6)
(COM6) Do you want to delete settings in EEPROM (Y/N)?
(COM6) Not deleted.
(COM6)
(COM6) Node-ID is: 255 (0xFF)
(COM6) New value (1-254):
(COM6) sl<NUL>lœž|<NUL>Œ#<STX>ân<EOT><EOT><FF>Œ<EOT>$ì<FF>#|ƒ<STX>ä<ESC>"r²Ü>Œ<EOT>bŒòonŸ$nnœâì<FF>b<FS>pì#$ <ETX>{lpûnà<DLE><STX><FF><EOT>,<FF>l<EOT>ŒÜ<EOT><EOT><FF>b<EOT>oã|<STX>dì<EOT><EOT>p<FF>,,ûnNî<STX>lŒŽd`<STX><ESC><DC2>on<FF>$`<STX><SI><STX>o{Û'o<FF><FF>b<EOT>Ü<SI>l<SO>{›'o<FF><EOT>b<FF>Ü<SO>lÜãâ<FF>Ü<FS>ŽŒŒœpr$ü,oÜ<STX><Error: RX FRAMING ERROR><Error: RX FRAMING ERROR><Error: RX FRAMING ERROR><ESC>{,²Üî<STX><FF><DC3/XOFF>b<ESC>"olœ|Œûn|p<FF>$ž|<ESC><STX><EOT>nàŽ,<ETX>ä<ESC>ã'ƒ<ETX><EOT><ESC>b<DC2>Ûo`{l<Error: RX FRAMING ERROR>
(COM6) BME680 wireless sensor V3.0
(COM6) Compiled: Fri Dec 07 17:57:22 2018
(COM6) Protocol: UniversalSensor
(COM6) BSEC version: 1.4.5.1<LF>ESP Core Version: 2_4_0_RC1
(COM6) ESP SDK Version: 2.0.0(656edbf)
(COM6)
(COM6) Do you want to delete settings in EEPROM (Y/N)?
(COM6) Y
(COM6) Settings deleted.
(COM6)
(COM6) Node-ID is: 255 (0xFF)
(COM6) New value (1-254):
(COM6) 112
(COM6) Node-ID set to: 112 (0x70)
(COM6) Save permanently (Y/N)?
(COM6) OK.



(COM6) RFM69  init ... done
(COM6) BME680 init ... done
(COM6) BH1750 init ... done
(COM6) Ready, start measuring ...
(COM6)
(COM6) [63321.00] P: 994.3| T: 38.24| rH: 18.11| IAQ: 25.00 (0)| Gas: 1184.00| Light: 15.42lx
(COM6) [66321.00] P: 994.2| T: 38.28| rH: 18.00| IAQ: 25.00 (0)| Gas: 1443.00| Light: 15.42lx
(COM6) [69321.00] P: 994.3| T: 38.32| rH: 17.88| IAQ: 25.00 (0)| Gas: 2019.00| Light: 15.42lx
(COM6) [72321.00] P: 994.3| T: 38.33| rH: 17.83| IAQ: 25.00 (0)| Gas: 2560.00| Light: 15.42lx
(COM6) [75321.00] P: 994.3| T: 38.35| rH: 17.77| IAQ: 25.00 (0)| Gas: 3147.00| Light: 15.42lx
(COM6) [78321.00] P: 994.3| T: 38.33| rH: 17.77| IAQ: 25.00 (0)| Gas: 3593.00| Light: 15.42lx


Versuche, das auf der Sensor-HW/Platine noch herauszufinden woran das liegt/lag ...
...und ob die LGW damit zurecht kommt.  ;-)

Grüße,
Jürgen


Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 09 Dezember 2018, 18:36:20
Hallo Jürgen,

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

Gruß Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 09 Dezember 2018, 19:29:31
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
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 09 Dezember 2018, 19:58:27
Zitat von: juergs am 09 Dezember 2018, 19:29:31
... und reagiert auch auf Licht  8):
Jupp, zwischen Straßenlampe und Wohnzimmer (https://de.wikipedia.org/wiki/Beleuchtungsst%C3%A4rke), Du solltest mal Deine Beleuchtung überprüfen  8) 8) 8).

Gruß Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 09 Dezember 2018, 20:34:38
 ;D ;D
lol, war noch am Reagieren ...

Apropos Licht....

... sehr gute (Positionier-) Arbeit!    :D
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 16 Dezember 2018, 12:04:43
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 (https://de.aliexpress.com/item/GY-MCU680V1-BME680-Temperatur-und-Feuchtigkeit-Luftdruck-Indoor-Air-Qualit-t-IAQ-MCU680-Sensor-Modul/32905797241.html?spm=a2g0x.search0104.3.9.4adc589dyMo1W4&ws_ab_test=searchweb0_0%2Csearchweb201602_1_10320_10065_10068_10547_319_317_10548_10696_453_10084_454_10083_10618_10304_10307_10820_10821_538_537_10302_536_10843_10059_10884_10887_100031_10319_321_322_10103%2Csearchweb201603_51%2CppcSwitch_0&algo_pvid=fbb6ba02-2374-4ee6-a223-cba6035fcf7b&algo_expid=fbb6ba02-2374-4ee6-a223-cba6035fcf7b-1)

Typ2 nur Sensor (https://de.aliexpress.com/item/BME680-Digitale-Temperatur-Feuchtigkeit-Temperatur-Druck-Hohe-H-he-Sensor-Modul-Digitale-4-in-1-Gas/32867056032.html?spm=a2g0x.search0104.3.23.4adc589dyMo1W4&ws_ab_test=searchweb0_0%2Csearchweb201602_1_10320_10065_10068_10547_319_317_10548_10696_453_10084_454_10083_10618_10304_10307_10820_10821_538_537_10302_536_10843_10059_10884_10887_100031_10319_321_322_10103%2Csearchweb201603_51%2CppcSwitch_0&algo_pvid=fbb6ba02-2374-4ee6-a223-cba6035fcf7b&algo_expid=fbb6ba02-2374-4ee6-a223-cba6035fcf7b-3)

Typ1 verwendet diesen Controller:
https://www.st.com/en/microcontrollers/stm32f051k8.html (https://www.st.com/en/microcontrollers/stm32f051k8.html)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: Nighthawk am 22 Dezember 2018, 18:58:45
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 !
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 22 Dezember 2018, 19:25:14
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 (https://forum.fhem.de/index.php/topic,43672.msg870076/topicseen.html#msg870076), 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
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: Nighthawk am 22 Dezember 2018, 19:30:39
Hallo Peter,

danke, probiere ich gleich mal aus.

Die BSEC Library habe ich nahc dieser Anleitung eingebunden:
https://github.com/BoschSensortec/BSEC-Arduino-library (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/ (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
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 22 Dezember 2018, 19:38:08
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/ (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
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: Nighthawk am 22 Dezember 2018, 20:23:48
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.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 22 Dezember 2018, 22:46:41
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 (https://github.com/amigatommy/BME680-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 (https://forum.fhem.de/index.php/topic,43672.msg870076.html#msg870076) 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
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 23 Dezember 2018, 22:38:43
Ä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
}


Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 24 Dezember 2018, 13:30:53
Einbindung hier: https://forum.fhem.de/index.php/topic,78619.msg706765.html#msg706765 (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"
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 25 Dezember 2018, 15:04:16
Erfahrungen zur nanoLGW-Platine V1.5 mit BME680+BH1750:
https://forum.fhem.de/index.php/topic,51329.msg876501.html#msg876501 (https://forum.fhem.de/index.php/topic,51329.msg876501.html#msg876501)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 25 Dezember 2018, 17:43:47
Aus meinen Tests mit pemue's nanoLGW-Platine hier die etwas geänderte UniversalSensor- Code (Dank @hdgucken!):

BME680_LaCrosse_UniversalSensor (https://github.com/juergs/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 (https://forum.fhem.de/index.php/topic,51329.msg875976.html#msg875976),
lässt sich aber auch 1:1 auf einen Wemos D1 mini oder mit einem ESP8266-F-Modul betreiben ...
Schaltplan nanoLGW V1.5 (https://forum.fhem.de/index.php?action=dlattach;topic=51329.0;attach=99273)

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 (https://www.bosch-sensortec.com/bst/products/all_products/bsec) nur die libalgobsec.a ersetzen.  :D
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 25 Dezember 2018, 18:30:06
RF der nanoLGW-RFM-Settings.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 27 Dezember 2018, 12:38:34
@Nighthawk

Zitat von: Nighthawk am 22 Dezember 2018, 20:23:48
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.

Du musst die Dateien aus meinem Git Repository: https://github.com/amigatommy/BME680-UniversalSensor (https://github.com/amigatommy/BME680-UniversalSensor) verwenden, das ist der Stand mit V1.5.4.1.
Ich habe einige Änderungen in den originalen Dateien gemacht !
Zum Beispiel die "bsec_integration.c" -> um die Erkennung der I2C Adresse des BME680 zu automatisieren.
Auch die BH1750 und die Adafruit Libs sind leicht modifiziert, was ebenfalls die automatische Erkennung der I2C-Adresse
und bei der Adafruit Lib zusätzlich die Unterstützung für SH1106 Displays betrifft.

Habe die neue BSEC Soft V1.4.7.1 schon eingebunden, inkl. einiger Änderungen von Jürgen ;).
Compilieren geht schon, muß nur noch auf der Hardware getestet werden, will ich heute noch machen und dann auf Git Hub hochladen, sage hier bescheid, wenn es soweit ist ;o) 
Es gibt neue Readings in dieser Version, sieht man dann auf der seriellen  :D
Das sind: static_iaq , co2_equivalent und breath_voc_equivalent.

Hänge hier noch eine Doku zur Integration der BSEC Soft und der geänderten Dateien an, Stand V1.5.4.1:

P.S.: In der Doku hat sich ein kleiner Fehler eingeschlichen: Der BH1750 Lib Ordner muss "AS_BH1750" und nicht "AS_BH1750-master" !!!
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: Nighthawk am 27 Dezember 2018, 16:00:18
Hallo Zusammen,

dank Peter habe ich es mit der bsec 1.4.5 zum Laufen bekommen, vielen Dank für die Unterstützung!
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 28 Dezember 2018, 11:38:42
Hallo Thomas,
bei der Luftfeuchte scheinen die Werte noch nicht ganz zu stimmen (im Vergleich zu einem echten LaCrosseSensor).
Sowohl bei der nanoLGW-Platine, also auch in der LGW Firmware?
Die Werte sind viel zu niedrig.

LaCrosse_25 ist ein richtiger LaCrosse-Sensor: LaCrosse_25 T: 20.7 H: 41
bme680_cc  CustomSensor mit geändertem fhem-Code an LGW V1.30: bme680_cc  21.5 °C, 40 %, 1017 hPa

LaCrosse_76 ist der BME 680 der LaCrosseGateway V1.32 LaCrosse_76 T: 29 H: 23

LaCrosse_10 UniversalSensor_1 (nanoLGW)   LaCrosse_10 T: 25.1 H: 27
LaCrosse_0C UniversalSensor_2 (nanoLGW)   LaCrosse_0C T: 28.7 H: 24

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 29 Dezember 2018, 00:37:11
Hallo Jürgen,

bei mir sind die Feuchtewerte auch nicht 100% stimmig, habe mir aber darüber noch keine weiteren Gedanken gemacht  :o
So in etwa passt es aber:
Universalsensor mit STM32 - 46% (mit BSEC V1.4.7.1  8))
LaCrosseGateway Nr.1 - 40%
LaCrosseGateway Nr.2 - 41%

Gruß Thomas

P.S. Die neue V3.1 des Universalsensors ist online: https://github.com/amigatommy/BME680-UniversalSensor (https://github.com/amigatommy/BME680-UniversalSensor)  ;)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 29 Dezember 2018, 10:38:31
Hallo Thomas,
ich habe hier  x Temperatur + Luftfeuchte-Sensoren im Einsatz.
In einem beheizten Raum scheinen mir die 40% sehr plausibel,
aber 25% scheint mir eher sehr daneben zu liegen ...

Ich vergleiche mal den CC-Sensor mit dem Universalsensor-Code um evtl. Unterschiede zu finden.

ZitatDie neue V3.1 des Universalsensors ist online
Schön, dann kann ich die schon mal in Augenschein nehmen.

Der neuere ULP-Modus scheint ja auch für Batterie-betriebene Geräte gedacht zu sein.
Durch den ESP8266 kann man das aber nicht unbedingt nachverfolgen.
Der CO2 Wert verlangt ja eigentlich auch nach einer Anzeige (Nextion/ePaper).

Ich habe mir neuere Sensor-Breakouts bestellt, die einen STM32 auf dem Board beinhalten.
Da bin ich mal gespannt.  :D

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 29 Dezember 2018, 11:55:03
Zum Luftfeuchte-Problem:
https://github.com/BoschSensortec/BME680_driver/issues/51 (https://github.com/BoschSensortec/BME680_driver/issues/51)

/*!
* @brief This internal API is used to calculate the humidity value.
*/
static uint32_t calc_humidity(uint16_t hum_adc, const struct bme680_dev *dev)
{
int32_t var1;
int32_t var2;
int32_t var3;
int32_t var4;
int32_t var5;
int32_t var6;
int32_t temp_scaled;
int32_t calc_hum;

temp_scaled = (((int32_t) dev->calib.t_fine * 5) + 128) >> 8;
var1 = (int32_t) (hum_adc - ((int32_t) ((int32_t) dev->calib.par_h1 * 16)))
- (((temp_scaled * (int32_t) dev->calib.par_h3) / ((int32_t) 100)) >> 1);
var2 = ((int32_t) dev->calib.par_h2
* (((temp_scaled * (int32_t) dev->calib.par_h4) / ((int32_t) 100))
+ (((temp_scaled * ((temp_scaled * (int32_t) dev->calib.par_h5) / ((int32_t) 100))) >> 6)
/ ((int32_t) 100)) + (int32_t) (1 << 14))) >> 10;
var3 = var1 * var2;
var4 = (int32_t) dev->calib.par_h6 << 7;
var4 = ((var4) + ((temp_scaled * (int32_t) dev->calib.par_h7) / ((int32_t) 100))) >> 4;
var5 = ((var3 >> 14) * (var3 >> 14)) >> 10;
var6 = (var4 * var5) >> 1;
calc_hum = (((var3 + var6) >> 10) * ((int32_t) 1000)) >> 12;

if (calc_hum > 100000) /* Cap at 100%rH */
calc_hum = 100000;
else if (calc_hum < 0)
calc_hum = 0;

return (uint32_t) calc_hum;
}


OK, eine Herausforderung zum Reengineering ... :( :o


Vermute, dass die Erfassung mit dem BME280 vergleichbar ist.
Also erst noch etwas forschen...

PS: Die BME680 mit STM32F051k8-Sensoren (https://de.aliexpress.com/item/GY-MCU680V1-BME680-Temperatur-und-Feuchtigkeit-Luftdruck-Indoor-Air-Qualit-t-IAQ-MCU680-Sensor-Modul/32905797241.html?spm=a2g0x.search0104.3.2.21a861c1tzC5SF&ws_ab_test=searchweb0_0%2Csearchweb201602_1_10320_10065_10068_10547_319_317_10548_10696_453_10084_454_10083_10618_10304_10307_10820_10821_538_537_10302_536_10843_10059_10884_10887_100031_10319_321_322_10103%2Csearchweb201603_51%2CppcSwitch_0&algo_pvid=9c0468c9-27a7-4cb6-bd36-295dcd541f54&algo_expid=9c0468c9-27a7-4cb6-bd36-295dcd541f54-0) sind heute gekommen ... :D
ZitatThis module has two ways to read data, namely serial port (TTL level) or chip itself IIC communication mode.
The product has high precision and high stability. It is possible to directly output utility data and omit the algorithm.
The baud rate of the serial port is 9600bps and 115200bps. There are two modes of continuous output and interrogation output, which can adapt to different working environments.
Connect to all microcontrollers and computers
When soldering the PS solder joint, the module is in the chip's own IIC mode, at which point the MCU does not participate in the operation and does not consume current. Can be used as a simple BME680 module.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 29 Dezember 2018, 12:40:55
Zitat von: juergs
... In einem beheizten Raum scheinen mir die 40% sehr plausibel,
aber 25% scheint mir eher sehr daneben zu liegen ...
Da gebe ich dir recht ...

Zitat
... Ich vergleiche mal den CC-Sensor mit dem Universalsensor-Code um evtl. Unterschiede zu finden.
Humidity wird nicht weiter umgerechnet, kommt direkt aus der Bosch lib als "float humidity".

Die Berechnung des humidity Wertes in der Bosch Lib ist schon spannend ...  ;D

Ein kleines Display wäre auch schön, mal schauen  8)

Gruß
Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 29 Dezember 2018, 14:48:11
Hallo Jürgen,

coole Teile, ist aber eine andere ARM Architektur als der Maple-mini oder Bluepill (STM32F051),
muss man schauen, ob es mit der Arduino IDE machbar ist.

Was mir gerade noch einfällt, Du hattest mal geschrieben, das Dein OLED Display mit der Zeit sehr schlecht geworden ist.
Hab mal ein Bild von meinem angehängt, läuft jetzt seit November 2017 (mit Dimmung, wenn dunkel). Kein einbrennen zu erkennen  :)
Hab heute noch eine feinere Abstufung beim Display dimmen in der V3.1 eingefügt.

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 29 Dezember 2018, 16:01:38
Zitatmuss man schauen, ob es mit der Arduino IDE machbar ist
Ja sehe ich auch so, falls es nicht direkt gehen sollte kann man den ByPass per Lötbrücke aktivieren.

Für das Modul konnte ich bisher keine Beschreibung ausmachen.
Es kann laut Angaben 9600 und 115K Baud.

Im Moment bekomme ich nur über 9600 Baud zyklisch Ausgaben des Moduls zu sehen.
Das Datenformat ist aber unklar und nicht Ascii. Habe dazu der Vertreiber kontaktiert, vieleicht
ist er in der Lage die Doku dazu nachzuliefern ...  :o :( >:(

Na ja, dann doch ByPass und ESP  ;D ... oder umprogrammieren (http://www.farrellf.com/projects/hardware/2014-06-14_Complete_STM32F0_Development_Environment/).
Vielleicht trenne ich auch nach der ersten Stiftleiste die Platine ab, dann ist
der BME ggf. auch noch 1 Euro billiger als bei Re***lt ...  ;D

Zum OLED-Display, macht es Sinn es Nachts herunterzudimmen (lichtempf. Widerstand),
hatte es  auf 100% Helligkeit eingstellt und es so gelassen. Habe noch einige Exemplare über,
so das der Nachschub gesichert ist.  ;-)

Vieleicht reicht es mir noch, mein ePaper-Display zu aktivieren bzw. erst mal einzuarbeiten ...
Dann wäre das Einbrenn-Problem auch vom Tisch  ;)

By the way: in der LGW gibt es ja die Display-Optionen um Messwerte in einem Loop Seitenweise anzuzeigen.
Dort funktioniert der Display-Refresh ohne Flackern. Evt. wäre das auch noch eine Idee hier mit umzusetzen.   ;)


Jürgen

/edit: Angehängt der ES8266-Sketch QY_MCUBME680_Interface_V2.ino für die Plotterausgabe der Arduino-IDE.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 29 Dezember 2018, 17:41:33
Ein erster Erfolg, es sei denn man kann chinesisch  ???
https://github.com/op0xA5/GYMCU680/blob/master/main.go
.. bietet wenigstens einige Hinweise auf das Protokoll-Format des GY-MCU680V1.

Oder in Thailand:
https://www.mcucity.com/product/2315/4-in-1-bme680-i2c-stm32-uart-temperature-humidity-pressure-and-gas-sensor (https://www.mcucity.com/product/2315/4-in-1-bme680-i2c-stm32-uart-temperature-humidity-pressure-and-gas-sensor)

//GY_MCU680 air quality sensor ARDUINO

#include SoftwareSerial mySerial(4, 5);
uint16_t temp1=0;
int16_t temp2=0;

unsigned char Re_buf[30],counter=0;
unsigned char sign=0;
int led = 13;


void setup()
{
  Serial.begin(9600); 
   mySerial.begin(9600);
   mySerial.listen(); 
  delay(4000);   

  mySerial.write(0XA5);
  mySerial.write(0X55);   
  mySerial.write(0X3F);   
  mySerial.write(0X39);
  delay(100);

  mySerial.write(0XA5);
  mySerial.write(0X56);   
  mySerial.write(0X02);   
  mySerial.write(0XFD);
  delay(100); 
}

void loop(){
  float Temperature ,Humidity;
  unsigned char i=0,sum=0;
  uint32_t Gas;
  uint32_t Pressure;
  uint16_t IAQ;
  int16_t  Altitude;
  uint8_t IAQ_accuracy;
  while (mySerial.available()) {   
    Re_buf[counter]=(unsigned char)mySerial.read();
   
    if(counter==0&&Re_buf[0]!=0x5A) return;         
    if(counter==1&&Re_buf[1]!=0x5A)
  {
    counter=0;
     return;
   };           
    counter++;       
    if(counter==20)               
    {   
       counter=0;                 
       sign=1;
    }     
  }
  if(sign)
  { 
     sign=0;
     
     if(Re_buf[0]==0x5A&&Re_buf[1]==0x5A )       
     {   
       
            for(i=0;i<19;i++)
               sum+=Re_buf[i];
             if(sum==Re_buf[i] )
             {
                     temp2=(Re_buf[4]<<8|Re_buf[5]);   
                     Temperature=(float)temp2/100;
                     temp1=(Re_buf[6]<<8|Re_buf[7]);
                     Humidity=(float)temp1/100;
                     Pressure=((uint32_t)Re_buf[8]<<16)|((uint16_t)Re_buf[9]<<8)|Re_buf[10];
                     IAQ_accuracy= (Re_buf[11]&0xf0)>>4;
                     IAQ=((Re_buf[11]&0x0F)<<8)|Re_buf[12];
                     Gas=((uint32_t)Re_buf[13]<<24)|((uint32_t)Re_buf[14]<<16)|((uint16_t)Re_buf[15]<<8)|Re_buf[16];
                     Altitude=(Re_buf[17]<<8)|Re_buf[18];
                     Serial.print("Temperature:");
                     Serial.print(Temperature);
                     Serial.print(" ,Humidity:");
                     Serial.print(Humidity);
                     Serial.print(" ,Pressure:");
                     Serial.print(Pressure);     
                     Serial.print("  ,IAQ:");
                     Serial.print(IAQ);
                     Serial.print(" ,Gas:");
                     Serial.print(Gas );
                     Serial.print("  ,Altitude:");
                     Serial.print(Altitude);                       
                     Serial.print("  ,IAQ_accuracy:");
                     Serial.println(IAQ_accuracy); 
            }           
           delay(1000);           
   }
  }
}*


Der Output passt auch noch nicht so ganz (lässt sich mit dem GO-Programm evtl. korrigieren):

Temperature:22.50 ,Humidity:39.96 ,Pressure:101894  ,IAQ:25 ,Gas:38277  ,Altitude:-47  ,IAQ_accuracy:0
Temperature:22.50 ,Humidity:39.95 ,Pressure:101894  ,IAQ:25 ,Gas:38992  ,Altitude:-47  ,IAQ_accuracy:0
Temperature:22.51 ,Humidity:39.93 ,Pressure:101894  ,IAQ:25 ,Gas:39734  ,Altitude:-47  ,IAQ_accuracy:0
Temperature:22.47 ,Humidity:39.99 ,Pressure:101896  ,IAQ:25 ,Gas:40426  ,Altitude:-47  ,IAQ_accuracy:0
Temperature:22.46 ,Humidity:39.99 ,Pressure:101896  ,IAQ:25 ,Gas:41062  ,Altitude:-47  ,IAQ_accuracy:0
Temperature:22.44 ,Humidity:39.99 ,Pressure:101896  ,IAQ:25 ,Gas:41761  ,Altitude:-47  ,IAQ_accuracy:0
Temperature:22.45 ,Humidity:39.97 ,Pressure:101898  ,IAQ:25 ,Gas:42140  ,Altitude:-47  ,IAQ_accuracy:0
Temperature:22.43 ,Humidity:39.98 ,Pressure:101898  ,IAQ:25 ,Gas:42875  ,Altitude:-47  ,IAQ_accuracy:0
Temperature:22.42 ,Humidity:39.95 ,Pressure:101898  ,IAQ:25 ,Gas:43546  ,Altitude:-47  ,IAQ_accuracy:0
Temperature:22.43 ,Humidity:39.92 ,Pressure:101898  ,IAQ:25 ,Gas:44005  ,Altitude:-47  ,IAQ_accuracy:0
Temperature:22.43 ,Humidity:39.93 ,Pressure:101898  ,IAQ:25 ,Gas:44473  ,Altitude:-47  ,IAQ_accuracy:0
Temperature:22.44 ,Humidity:39.92 ,Pressure:101896  ,IAQ:25 ,Gas:45244  ,Altitude:-47  ,IAQ_accuracy:0


Es gibt wohl auch eine Windows-Anwendung dazu. Aber nur für den chinesisch Sprachbegabten.  ;):-\

Was wohl der Parametrier-Teil mit "A5 56 01 FC" bewirkt?
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 29 Dezember 2018, 23:14:49
Temperature:21.50 ,Humidity:42.33 ,Pressure:1017  ,IAQ:244 ,Gas:84681  ,Altitude:-36  ,IAQ_accuracy:3

Sieht doch schon ganz verwertbar aus.   :D
Nachts ist der IAQ-Wert in der Tat so hoch!


Alternative für die IAQ-Berechnung aus dem Resistance-Wert:
https://github.com/pimoroni/bme680-python/blob/master/examples/indoor-air-quality.py (https://github.com/pimoroni/bme680-python/blob/master/examples/indoor-air-quality.py)
https://learn.pimoroni.com/tutorial/sandyj/getting-started-with-bme680-breakout (https://learn.pimoroni.com/tutorial/sandyj/getting-started-with-bme680-breakout)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 31 Dezember 2018, 13:32:19
Der Lieferant hat schnell reagiert, leider in chinesisch ... Translator sei Dank!
Die Einstell-Möglichkeiten des GY-MCUBME680-Moduls mit serieller Ausgabe, übersetzt:
Byte3 des Telegramms ist noch etwas unklar "formuliert". 0x0F  sendet das volle Datenpaket mit 20 Bytes.

float Temperature ,Humidity;
  uint32_t Gas;
  uint32_t Pressure;
  uint16_t IAQ;
  int16_t Altitude=0;
  uint8_t IAQ_accuracy;
  uint16_t temp1=0;
  int16_t temp2=0;
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: locutus am 31 Dezember 2018, 16:41:59
Zitat von: hdgucken am 29 Dezember 2018, 00:37:11
P.S. Die neue V3.1 des Universalsensors ist online: https://github.com/amigatommy/BME680-UniversalSensor (https://github.com/amigatommy/BME680-UniversalSensor)  ;)
Würdest du bitte die binäre Firmware-Datei für STM32F103Cx zur Verfügung stellen?
Vielen Dank im Voraus!
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 31 Dezember 2018, 17:45:46
Hallo Locutus,

ist noch ein bisschen Nacharbeit erforderlich:


D:\Work_FHEM\Projects\_BME680\BME680-UniversalSensor-3.1-BSEC V1.4.7.1\BME680_UniversalSensor\BME680_UniversalSensor.ino: In function 'void setup()':

BME680_UniversalSensor:702: error: 'class TwoWire' has no member named 'setClock'

     Wire.setClock(400000);



Spezielle Konfiguration(en)?
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 31 Dezember 2018, 17:53:10
Die Konfiguration ist mit allen Optionen auf true.
Debug= false.
Laut Thomas soll es Auto-Detect-fähig sein.
Generic STMF103C-series - Variante C8  (20K Ram/ 64KFlash) . Es gibt auch noch die CB-Variante mit 128K Flash.
Falls Du eine andere Variante benötigst, Bescheid sagen  ;)

Zitat#define HAS_RFM69             true   //is auto detected, if not found, sensor works without RFM69, data only on serial port
#define HAS_OLED              true   //is auto detected, if not found, sensor works without OLED (SH1106 or SSD1306)
#define HAS_LIGHTSENSOR       true   //is auto detected, if not found, sensor works without BH1750
#define VCC_MEASURE           true   //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

Zitat#elif defined(__STM32F1__)
    #define RFM_SS             PA4         //  SS pin -> RFM69 (NSS)  //for both Soft- and HW-SPI
    #define RFM_SCK            PA5         // SCK pin -> RFM69 (SCK)  //only used by soft spi
    #define RFM_MISO           PA6         //MISO pin <- RFM69 (MOSI) //only used by soft spi
    #define RFM_MOSI           PA7         //MOSI pin -> RFM69 (MISO) //only used by soft spi


Aber Achtung: Thomas hat die Variante CB vorgegeben:
ZitatIn der Arduino IDE als Board "Generic STM32F103C series" wählen und als Variante "STM32F103CB (20k RAM, 128k Flash)" !
Sonst reicht der Speicher nicht ;o)
Die Boards haben in den allermeisten Fällen 128K Flash Speicher, obwohl die C8 Boards offiziell nur 64k Flash haben sollten.

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 31 Dezember 2018, 18:15:14
Die Debug-enbled Variante macht etwas mehr Ärger:
Zitat
c:\<user>\Documents\Arduino\hardware\Arduino_STM32\STM32F1\cores\maple\libmaple\usb\stm32f1\usb_cdcacm.c:65:2: warning: #warning USB CDC ACM relies on LeafLabs board-specific configuration. You may have problems on non-LeafLabs boards. [-Wcpp]

#warning USB CDC ACM relies on LeafLabs board-specific configuration.\


und es hagelt
Zitat.. /bsec_integration.c:193: warning: undefined reference to `bsec_init'

/bsec_integration.c:203: warning: undefined reference to `bsec_set_configuration'
etc ...

Äh, ja is klar: habe die neue BSEC-LIB für ARM noch nicht angepasst !   :-\ :-[

Muss ich noch nachholen...

Die precompiled Lib ist etwas versteckt, es gibt noch eine ARM_CC-Variante + und Bosch hat es immer noch nicht geschafft die ARM-Konfiguration in den Guide mit aufzunehmen:
Zitat
BSEC_1.4.7.1_Generic_Release_20180907\BSEC_1.4.7.1_Generic_Release_20180907\algo\bin\Normal_version\gcc\Cortex_M3\libalgobsec.a

An dieser Stelle noch mal die Hinweis-Infos von Thomas:
https://forum.fhem.de/index.php?action=dlattach;topic=78619.0;attach=111504 (https://forum.fhem.de/index.php?action=dlattach;topic=78619.0;attach=111504)

und generell:
https://wolfgangklenk.wordpress.com/2017/11/05/indoor-air-quality-iaq-measurement-with-bosch-bme680-and-stm32f103c8t6/ (https://wolfgangklenk.wordpress.com/2017/11/05/indoor-air-quality-iaq-measurement-with-bosch-bme680-and-stm32f103c8t6/)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 31 Dezember 2018, 18:47:54
Zitat von: locutus
Würdest du bitte die binäre Firmware-Datei für STM32F103Cx zur Verfügung stellen?
Vielen Dank im Voraus!

klar, im Anhang einmal mit debug und einmal normal ohne debug Ausgabe.
Die angeschlossenen Komponenten werden automatisch erkannt und eingebunden.
Ohne RFM69 nur Ausgabe über USB seriell, BME680 ist Mindestvoraussetzung ;o)
Beim ersten Start innerhalb von 5 Sekunden das serielle Terminal öffnen,
dann kann man den Sensor konfigurieren (115200Baud,8N1).
Viel Erfolg und guten Rutsch !

@juergs:
Du mußt das Board STM32F103CB(20k Ram, 128k Flash) einstellen, sonst bricht der Compiler ab mit "zu wenig Speicher" !
ansonsten bei mir nur etliche Warnungen (nichts schlimmes), aber keine Fehler.
Arduino 1.8.7, BSEC 1.4.7.1

Viel Erfolg und guten Rutsch !

Gruß Thomas

P.S.: die angehängten Dateien sind für BluePill und baugleiche Boards mit onBoard LED an PC13 !
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 31 Dezember 2018, 18:51:10
Ich hatte die BSEC-LIB nur in der Maple-Variante hinterlegt:
ZitatC:\Users\<user>\Documents\Arduino\hardware\Arduino_STM32\STM32F1\variants\maple_mini\ld

Aber es gibt ja mehr:
ZitatVerzeichnis von C:\Users\<user>\Documents\Arduino\hardware\Arduino_STM32\STM32F1\variants

13.06.2017  01:39    <DIR>          .
13.06.2017  01:39    <DIR>          ..
13.06.2017  01:39    <DIR>          generic_gd32f103c
13.06.2017  01:39    <DIR>          generic_stm32f103c
13.06.2017  01:39    <DIR>          generic_stm32f103r
13.06.2017  01:39    <DIR>          generic_stm32f103r8
13.06.2017  01:39    <DIR>          generic_stm32f103t
13.06.2017  01:39    <DIR>          generic_stm32f103v
13.06.2017  01:39    <DIR>          generic_stm32f103z
13.06.2017  01:39    <DIR>          hytiny_stm32f103t
13.06.2017  01:39    <DIR>          maple
13.06.2017  01:39    <DIR>          maple_mini
13.06.2017  01:39    <DIR>          maple_ret6
13.06.2017  01:39    <DIR>          microduino
13.06.2017  01:39    <DIR>          nucleo_f103rb
13.06.2017  01:39    <DIR>          STM32VLD

Ok, dort in den ld-Verzeichnissen überall die neue  libalgosec.a hinterlegen und die common.inc ändern.
Dann probiere ich es wieder ... morgen.

Allen einen guten Rutsch ins neue Jahr  ;) :)
Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 31 Dezember 2018, 18:53:11
Hallo Thomas,

super, warst schneller...

Danke für die Mithilfe  ;) :)

Grüße + und ebenfalls einen guten Rutsch!

Jürgen



Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 31 Dezember 2018, 19:19:19
Hallo Jürgen,

kein Problem ;o)

Das Protokoll von dem China Sensor ist ja gar nicht mal so schlecht, läßt sich was draus machen,
könnte man dann ohne bsec Gefummel verwenden  8)
Errechnet er sich die Höhe aus dem Luftdruck eigentlich selbst ? Sieht für mich jedenfalls so aus.

Bis denn ...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 31 Dezember 2018, 19:30:12
Hallo Thomas,

Zitatkönnte man dann ohne bsec Gefummel verwenden
ja, rel. wenig Aufwand und mit einem Nano und RFM69 oder CC1101 sogar recht einfach.
Der BME680 lässt sicht einfach abtrennen und lässt sich dann über BSEC betreiben.
Ein Batteriebetrieb mit 5 mA ist wohl eher für einen begrenzten Zeitraum möglich.

Es sei denn, man verwirklicht den ULP (Ultra Low Power) Modus mit der BSEC-Lite Variante.

Zitat
Configuration Supply voltage of BM -
E680
Maximum time between
bsec_sensor_control()
calls
Time considered for background calibration:
generic_33v_300s_28d 3.3V 300s 28 days
generic_33v_300s_4d 3.3V   300s 4 days
generic_33v_3s_28d 3.3V        3s 28 days
generic_33v_3s_4d 3.3V          3s 4 days
generic_18v_300s_28d 1.8V  300s 28 days
generic_18v_300s_4d 1.8V 300s 4 days
generic_18v_3s_28d 1.8V 3s 28 days
generic_18v_3s_4d 1.8V 3s 4 days
The default configuration (after calling bsec_init), to which BSEC will be configured, is "generic_18v_300s_4d".

ZitatYou will notice that we now get IAQ, temperature and humidity data once every 3 seconds. This is because the
example code is pre-configured to use what is called low-power (LP) mode.
For certain applications, we may want to reduce the power consumption (and data rate) and use ultra-low-power
mode. Since it only takes around 0.08 mA current on average, this mode is ideal for long-term battery powered
operation. But let's see if we can change the code to lower the data rate.

Ich schaue mir mal das Octopus-Demo genauer an .. Wie vermutet läuft der Sketch nicht  out-of-the-box und brauch jede Menge
Puzzle-Arbeit.

Grüße,
Jürgen

   
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 01 Januar 2019, 18:59:40
Hallo Jürgen,

für ULP-Mode mußt Du nur im Setup statt " ret = bsec_iot_init(BSEC_SAMPLE_RATE_LP, ... " -> " ret = bsec_iot_init(BSEC_SAMPLE_RATE_ULP, ... " angeben,
schon läuft der Sensor im ULP-Mode, hab ich schon mal getestet  ;)

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: locutus am 01 Januar 2019, 21:21:26
Zitat von: hdgucken am 31 Dezember 2018, 18:47:54
Die angeschlossenen Komponenten werden automatisch erkannt und eingebunden.
Ohne RFM69 nur Ausgabe über USB seriell, BME680 ist Mindestvoraussetzung ;o)
Beim ersten Start innerhalb von 5 Sekunden das serielle Terminal öffnen,
dann kann man den Sensor konfigurieren (115200Baud,8N1).
Ich stehe auf dem Schlauch! Maple Mini (ohne RFM69) mit
sudo dfu-util -d 1eaf:0003 -a 2 -D Universalsensor_stm32f103c_normal.bin –R
geflasht, OLED zeigt ***SETUP*** an, USB ist aber inaktiv und nun die Frage: wie die Konfiguration durchführen? Serieller Adapter am RX1 und TX1 führt auch nicht zum Erfolg.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 01 Januar 2019, 23:21:35
Hallo locutus,

Zitat von: locutus
Ich stehe auf dem Schlauch! Maple Mini (ohne RFM69) mit
sudo dfu-util -d 1eaf:0003 -a 2 -D Universalsensor_stm32f103c_normal.bin –R
geflasht, OLED zeigt ***SETUP*** an, USB ist aber inaktiv und nun die Frage: wie die Konfiguration durchführen? Serieller Adapter am RX1 und TX1 führt auch nicht zum Erfolg.

Für den maple mini muß anders compiliert werden, anbei die maple mini Versionen  ;)

Die Version STM32F103C ist für z.B. BluePill Boards, mit onBoard LED an Pin PC13.

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 02 Januar 2019, 08:02:03
ZitatBluePill F103C8 (Basic support, no USB)
MapleMini F103CB (Basic support, no USB)
Nucleo F103RB
einstieg_mikrocontroller_stm32f103 (http://joe-c.de/pages/posts/einstieg_mikrocontroller_stm32f103_101.php)

Für den STM32F031 (https://www.st.com/en/evaluation-tools/stm32f0discovery.html) hier die Arduino-Integrations-Möglichkeit: https://github.com/stm32duino/wiki/wiki/Add-a-new-variant-(board) (https://github.com/stm32duino/wiki/wiki/Add-a-new-variant-(board))

Deshalb hatte ich ja auch nach der Konfiguration gefragt!
Ohne RFM war jetzt noch direkt getestet  ;)

Habe nur den MapleMini als Testsystem. Mein Compile bleibt wirklich bei "**** Setup ****"  stehen,
obwohl ich den RFM69 angeschlossen habe. Die Serielle gibt nichts aus.

Muss noch mal mit meiner Maple-Version vergleichen.

STOP! Kommando zurück!

Wird "Setup" angezeigt möchte er die serielle Konfiguration anwerfen (6 Sekunden Wartezeit) :
... und tut dies auch.

In einem Terminal-Progamm läuft der Eprom-Teil rel. schnell durch.
Besser zu empfehlen die Arduino-IDE, deren serieller Monitor reagiert auf die EEprom-Konfiguration mit Handshake besser.

Das hier ist mit RFM:

Zitat
BME680 wireless sensor V3.1
Compiled: Wed Jan 02 07:42:22 2019
Protocol: UniversalSensor
BSEC Version: 1.4.7.1

OLED init ... found on 0x3C

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

Node-ID is: 255 (0xFF)
New value (1-254):
Node-ID set to: 12 (0x0C)
Save permanently (Y/N)?
new value (1-254):
Node-ID set to: 14 (0x0E)
Save permanently (Y/N)?
OK.

Altitude is: 65560.5m
new value (0.0-8848.9):
Altitude set to: 0.0m
Save permanently (Y/N)?
OK.

Temperature offset: -1.1 degrees celsius
new value (+-10.0):
Temperature offset set to: 0.0 degrees celsius
Save permanently (Y/N)?
new value (+-10.0):
Temperature offset set to: 0.0 degrees celsius
Save permanently (Y/N)?
OK.

Save settings ...
Node-ID           : 14 (0x0E)
Altitude          : 0.0m
Temperature offset: 0.0 degrees celsius

RFM69  init ... done
BME680 init ... done
BH1750 init ... not present
Ready, start measuring ...

[58092.00] P: 1018.5| T: 18.61| rH: 44.80| IAQ: 25.00 (0)| Static IAQ: 25.00| CO2e: 0.00| bVOC: 0.00
| Gas: 34134.00| UBat: 3.3V
[61092.00] P: 1018.5| T: 18.62| rH: 44.86| IAQ: 25.00 (0)| Static IAQ: 25.00| CO2e: 0.00| bVOC: 0.00
| Gas: 30935.00| UBat: 3.3V
[64092.00] P: 1018.5| T: 18.66| rH: 44.82| IAQ: 25.00 (0)| Static IAQ: 25.00| CO2e: 0.00| bVOC: 0.00
| Gas: 34931.00| UBat: 3.3V
[67092.00] P: 1018.5| T: 18.69| rH: 44.74| IAQ: 25.00 (0)| Static IAQ: 25.00| CO2e: 0.00| bVOC: 0.00
| Gas: 39582.00| UBat: 3.3V


Grüße,
Jürgen 
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 02 Januar 2019, 08:14:40
Ohne RFM69 geht es ebenfalls, als reiner Standalone-Sensor:
(Allerdings unter Win10 geflasht!)

Zitatmaple_loader v0.1
Resetting to bootloader via DTR pulse
Searching for DFU device [1EAF:0003]...
Found it!

Opening USB Device 0x1eaf:0x0003...
Found Runtime: [0x1eaf:0x0003] devnum=1, cfg=0, intf=0, alt=1, name="STM32duino bootloader v1.0  Upload to Flash 0x8005000"
Setting Configuration 1...
Claiming USB DFU Interface...
Setting Alternate Setting ...
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
Transfer Size = 0x0400
bytes_per_hash=1671
Starting download: [##################################################] finished!
state(8) = dfuMANIFEST-WAIT-RESET, status(0) = No error condition is present
error resetting after download: usb_reset: could not reset device, win error: Das System kann die angegebene Datei nicht finden.
Done!

Resetting USB to switch back to runtime mode


BME680 wireless sensor V3.1
Compiled: Wed Jan 02 07:42:22 2019
Protocol: UniversalSensor
BSEC Version: 1.4.7.1

OLED init ... found on 0x3C

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

Node-ID is: 255 (0xFF)
New value (1-254):
Node-ID set to: 14 (0x0E)
Save permanently (Y/N)?
OK.

Altitude is: 65560.5m
new value (0.0-8848.9):
Altitude set to: 180.0m
Save permanently (Y/N)?
OK.

Temperature offset: -1.1 degrees celsius
new value (+-10.0):
Temperature offset set to: 0.0 degrees celsius
Save permanently (Y/N)?
OK.

Save settings ...
Node-ID           : 14 (0x0E)
Altitude          : 180.0m
Temperature offset: 0.0 degrees celsius

RFM69 not found, no wireless transmission !
BME680 init ... done
BH1750 init ... not present
Ready, start measuring ...

[47292.00] P: 1040.6| T: 19.82| rH: 45.39| IAQ: 25.00 (0)| Static IAQ: 25.00| CO2e: 0.00| bVOC: 0.00
| Gas: 133786.00| UBat: 3.3V
[50292.00] P: 1040.6| T: 19.80| rH: 45.39| IAQ: 25.00 (0)| Static IAQ: 25.00| CO2e: 0.00| bVOC: 0.00
| Gas: 140756.00| UBat: 3.3V
[53292.00] P: 1040.6| T: 19.84| rH: 45.22| IAQ: 25.00 (0)| Static IAQ: 25.00| CO2e: 0.00| bVOC: 0.00
| Gas: 149554.00| UBat: 3.3V
[56292.00] P: 1040.6| T: 19.88| rH: 45.05| IAQ: 25.00 (0)| Static IAQ: 25.00| CO2e: 0.00| bVOC: 0.00
| Gas: 156104.00| UBat: 3.3V


Kleiner Schönheitsfehler: in der Daueranzeige fehlt der IAQ-Wert  ;) :(

... der nach einer gewissen Initialisierungszeit mit "Luftgüte:  berechne.." dann doch angezeigt wird.  :) :D
Der Sensor geht ja nach einem Reset/Einschalten von einem anfänglichen IAQ-Wert 25, kurze Zeit auf 0, um dann richtige Werte auszugeben.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 02 Januar 2019, 13:21:24
Hallo Jürgen,

hast Dir ja was vorgenommen, mit dem STM32F05 ;)
Werde das auch mal in Angriff nehmen, nur leider wenig Zeit.

Wenn "*** SETUP ***" im Display steht, dann läuft das Setup im seriellen Terminal, war als Hinweis gedacht  :)

Die 6 Sekunden Wartezeit hab ich gleich am Anfang, also nach dem Einschalten des Sensors drin, damit man Zeit hat, das serielle Terminal zu öffnen.
Vielleicht sollte ich die LED in der Zeit blinken lassen, damit man sieht, das sich was tut ?
Bei "*** SETUP ***" könnte man ja noch "see serial terminal..." drunter schreiben, ist dann vielleicht eindeutiger ?

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 02 Januar 2019, 15:32:10
Hallo Thomas,
... alles gut. Funktioniert ja alles so wie es soll.   :D :)

Die Use-Cases ohne RFM etc. waren ja speziell von mir ja gar nicht vorgesehen und damit auch nicht getestet.
Umso besser, dass es auch so funktioniert.

Das mit dem STM32F05x war nur so eine Idee. Der Prozessor (und auch die Boards dazu) ist ja noch billiger als der  F103.
Ob das aber Sinn macht, sei dahingestellt ...  ;)

Ich wollte nur die Möglichkeit in Betracht ziehen da noch andere STM32-Familienmitglieder in Arduino mit einbinden zu können.
Die könnte z.B. auch ein STM8-Typ sein (kein BSEC), da gibt es schon eine Lösung, die den ATtiny8x ersetzen könnte.   

Momentan versuche ich auch mit ein  paar herumliegenden ST7735-LCD-TFT-Displays eine ansprechende Standalone (https://create.arduino.cc/projecthub/edr1924/gorgy-meteo-clock-1bfc49)-Lösung
hinzubekommen. Das bietet etwas mehr Möglichkeiten wie das OLED-Display.
Also vor der Stufe zum Nextion- und ePaper-Display, die ich auch noch hier liegen habe.
Leider ist der Faktor Zeit, wie immer etwas begrenzt  ;)

Nachdem ich derzeit mit länger mit dem ESP aktiv war, ist der Refresh mit den STMs aber auch für mich hilfreich.  :-[ ;D

Falls Locutus etwas mit dem BME680 planen sollte: Wichtig darauf zu achten, eine thermische Isolation
zu den Wärme-erzeugenden Komponenten hinzubekommen. Auf der NanoLGW und der Gateway-Platine werden die Temperaturwerte
doch sehr verfälscht (bei mir 6..8°C zu hoch) und die Auswirkungen auf den BSEC-Algorithmus wird nicht von der Hand zu weisen sein.
Genauso die Anordnung im oder am Gehäuse wäre auch noch ein Aspekt, den es zu berücksichtigen gilt.
Ich sehe eine Lösung mit einer Stiftleiste z.B. im 1mm-Raster hier sinnvoll, um den Sensor dann passend abgetrennt platzieren zu können.

Bei mir verhält sich das Maple-Board so, dass direkt nach dem Einstecken in die USB-Buchse, der Bootloader in einem Zeitfenster aktiv ist
und DFU-UTIL findet das Board.  Danach ist die Serielle Schnittstelle aktiv.
Unter Windows ist dieses Tool (https://helmpcb.com/software/serial-port-monitor) sehr hilfreich,
da es den Aufbau der Seriellen in der Taskleiste anzeigt. Vor allem, wenn man viele Serielle im Einsatz hat...  ;D ;D
Vielleicht gibt es auch unter Linux etwas Vergleichbares ?

Ich habe mir noch ein paar weitere Sensoren bestellt, um dann eine 3-dimensionale Auflösung hinzubekommen und herauszufinden
wie sich das CO2 im Raum bzw. dann auch in der Wohnung verteilt...  Also ein Sensor am Boden plus einen in 1m + 2m Höhe.
Ich würde gerne dem Phänomen auf die Schliche kommen, warum die Werte nachts so hoch ansteigen ...

Grüße,
Jürgen

PS: Locutus: /var/log/messages ?

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 02 Januar 2019, 17:35:17
Bei mir sind die IAQ Werte Nachts auch so hoch, wäre mal interessant, das mit den unterschiedlichen Höhen zu erfassen.
Siehe Anhang ...

Vielleicht könnte man eine abgespeckte Version des Universalsensors direkt für das kleine STM32F05 Board entwickeln,
da es ja nur 64K Flash hat.

Mein BluePill verhält sich mit dem Bootloader genau so, erst DFU-Mode und nach ein paar Sekunden schaltet es auf USB seriell um.

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 02 Januar 2019, 22:22:26
Hallo Thomas,
vieleicht ist das hier auch was für Dich:

https://randomnerdtutorials.com/serialdebug-library-arduino-ide/ (https://randomnerdtutorials.com/serialdebug-library-arduino-ide/)
https://www.youtube.com/watch?v=ba_eu06mkng (https://www.youtube.com/watch?v=ba_eu06mkng)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 03 Januar 2019, 09:52:40
Der Verlauf 2er Sensoren und der entsprechende GAS-Output.
Sehr plausible Werte. Ein Verdacht habe ich schon, woher der hohe Anteil in der Nacht kommen könnte.  ;)
Siehe vorher| nachher.
Leider sind die grafischen Auswerte-Möglichkeiten  in FHEM etwas beschränkt, aber ausreichend.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 04 Januar 2019, 17:54:53
Hallo Zusammen,

irgendwie kam ich auf die Idee, meine "herumliegenden" SaintSmart-TFT-LCD-Displays mit dem BME680-Sensor zu kombinieren.
Da hatte ich noch nicht geahnt, wie das zu einem "Adafruit"-Marathon ausarten würde.
Leichtfertiger Weise dachte ich, dass es mit dem MapleMini sehr einfach einzubinden wäre.
Einfach die Adafruit-Libs einbinden und fertig! => falsch gedacht!

Hier möchte ich jetzt meine Erfahrungen dazu teilen, da man sich in dieser Konstellation tagelang damit beschäftigen könnte.

Die Idee dazu kam von  diesen Webseiten: https://www.instructables.com/id/Arduino-sketch-for-a-retro-analogue-meter-graphic-/ (https://www.instructables.com/id/Arduino-sketch-for-a-retro-analogue-meter-graphic-/)
ZitatUNO and 2.2" ILI9341 based 320 x 240 pixel TFT
und dieser Seite Oscillograf (https://translate.google.com/translate?sl=auto&tl=de&u=http%3A%2F%2Fwww.ad-res.ru%2Fcontrollers%2Foscillograf.php) und https://www.instructables.com/id/Arduino-BMP180-temperature-and-pressure-sensor-rea/ (https://www.instructables.com/id/Arduino-BMP180-temperature-and-pressure-sensor-rea/)

Um es kurz zu machen: So einfach zu realisieren ist das in der Tat nicht.
Gründe:
Im Netz gibt es gefühlt tausend verschiedene Varianten + Versionen der Adafuit-Libs, alle mit spezifischen Änderungen für bestimmte
Prozessortypen, ohne dass die "Feinheiten" dokumentiert sind.

Ich hatte mir die TFT-Displays   "ST7735 128x160"  für 5$ von Hersteller Sainsmart erstanden.
Also Vorgehensweise:  Libraries von Adafruit herunterladen und versuchen für den ESP (http://www.lcdwiki.com/%E3%80%90Application%E3%80%911.6inch_SPI_Module_MSP1601_with_D1_mini) oder STM32 (https://translate.googleusercontent.com/translate_c?depth=1&rurl=translate.google.com&sl=auto&sp=nmt4&tl=de&u=https://hubstub.ru/stm32/&xid=17259,15700022,15700124,15700186,15700190,15700201,15700237,15700242,15700248&usg=ALkJrhgdnsmRG_eVCDDZKFXpuDeuqkXT-Q)
zum Laufen zu bekommen.
Ergebnis: die Libraries sind nicht mal nach dem Download mit den Sample zu ohne Fehler zu kompilieren....
Entweder fehlen weitere Header-Dateien oder die Versionen passen nicht zusammen...  :(

Die Libs hatte ich in <Arduino-Verz>/libraries gelegt. FALSCH (Denkfehler!):
Sie müssen für den Maple in dem ".../Documents\Arduino\hardware\Arduino_STM32\STM32F1\libraries" liegen.

Dort liegen schon die Versionen, die ich irgenwann mal dort installiert hatte:
Zitat02.12.2018  23:01    <DIR>          Adafruit_GFX_AS
02.12.2018  23:01    <DIR>          Adafruit_ILI9341
02.12.2018  23:01    <DIR>          Adafruit_ILI9341_STM

Die Original-Version der Lib ließ sich nicht kompilieren. Wilde CPP-Fehler.
Auch die Neueste von hier nicht: https://github.com/rogerclarkmelbourne/Arduino_STM32 (https://github.com/rogerclarkmelbourne/Arduino_STM32)
Ach ja, es sind nicht native ST7735-Versionen, sondern ILI9341-Libs.  Die Soft-SPI-Lösung war noch Fehler-behafteter.
Ich fand nur diese: "Adafruit_ILI9341_STM". Alle Maple-Beispiele nutzten diese unauffindbare "Adafruit_ILI9341_STM_AS" (https://www.instructables.com/id/Arduino-TFT-display-and-font-library/) ...
Letztendlich ging die Hardware-Variante mit SPI_1 des Maples.
Nach Ausprobieren von gefühlt tausend Varianten + Versionen und intensiver Suche im Netz habe ich endlich,
nach ca. anderthalb Tagen mit  dieser Variante (http://stm32duino.com/viewtopic.php?f=13&t=127&sid=f2ce806d5e257c944f232b08df2dbf5c&start=10)  der STM32F1/libraries (https://github.com/victorpv/Arduino_STM32) den Durchbruch erzielt. (...naja fast!) .
(Grafik- und SPI-Libs im STM32-Libs-Ordner (!) durch diese Versionen ersetzt.)

Ok, die Lib geht von einem Display (https://www.ebay.com/itm/2-2-inch-TFT-LCD-Display-Module-ILI9341-SPI-240x320-for-Arduino-51-AVR-STM32-ARM/302946539659?_trkparms=aid%3D555018%26algo%3DPL.SIM%26ao%3D2%26asc%3D20140602152332%26meid%3Df99e3c2e0c604efaa86afb71f2545b9a%26pid%3D100011%26rk%3D1%26rkt%3D5%26sd%3D360699426541%26itm%3D302946539659&_trksid=p2047675.c100011.m1850) der Größe 240x320 aus und meines (https://www.sainsmart.com/products/1-8-tft-spi-lcd-screen-with-microsd-socket#idTab2) hat 128x160 (https://www.tweaking4all.com/hardware/arduino/sainsmart-arduino-color-display/), ist etwas kleiner!
Und die Grafik-Koordinaten (https://translate.googleusercontent.com/translate_c?depth=1&rurl=translate.google.com&sl=auto&sp=nmt4&tl=de&u=https://learn.adafruit.com/adafruit-gfx-graphics-library/coordinate-system-and-units&xid=17259,15700022,15700124,15700186,15700190,15700201,15700237,15700242,15700248&usg=ALkJrhhQh9JfP9i4ZyoN6dZxsIAqeAhe_w) (pdf (https://cdn-learn.adafruit.com/downloads/pdf/adafruit-gfx-graphics-library.pdf?timestamp=1546571038)) sind gespiegelt und müssen skaliert werden, aber das kriegt man noch hin ...  ;)

... und natürlich die Anbindung mit dem BME680...

Fazit: ein nicht ganz unerhebliches Unterfangen, für den STM32 etwas Passendes (https://www.instructables.com/id/Select-Color-Display-for-ESP32/) hinzubekommen!
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 05 Januar 2019, 17:49:37
Jetzt ist auch noch die Lib für den ESP8266 hinzugekommen.
Der Code für den Maple wurde angepasst.
Das Spiegeln der Koordinaten ist noch etwas aufwändiger als gedacht
und das Display löschen will (noch) nicht so richtig vollständig ...



STM32-F1https://github.com/victorpv/Arduino_STM32 (https://github.com/victorpv/Arduino_STM32)

ESP8266(Wemos)https://github.com/Bodmer/TFT_eSPI (https://github.com/Bodmer/TFT_eSPI)

Hier lassen sich die Display-Typen über "user_setup"-Header-Dateien einstellen.

Die Anpassung der Koordinaten geht über ein Skalierungsfaktor (#define M_SIZE 0.667) und nicht über Lib-Settings.

Die Farbe des Schutzfolien-Tabs ist äußerst relevant:


// #define ST7735_INITB
// #define ST7735_GREENTAB
// #define ST7735_GREENTAB2
// #define ST7735_GREENTAB3
// #define ST7735_GREENTAB128    // For 128 x 128 display
// #define ST7735_GREENTAB160x80 // For 160 x 80 display (BGR, inverted, 26 offset)
// #define ST7735_REDTAB
// #define ST7735_BLACKTAB
// #define ST7735_REDTAB160x80 // For 160 x 80 display (24 offset)

Ich habe die Black-Tab-Variante (hatte noch ein Exemplar mit Original-Folie...)

Zur Lösung gäbe es zwei Varianten:
1. die Einfache: auf ein 240x128 - Display ausweichen, dann passen die Libs ohne Änderungen.
2. die Aufwändige: für 128x160 die Lib erforschen und ändern, oder die Koordinaten immer in der Anwendung spiegeln ...

Oder doch nochmal Suchen? Fündig geworden: Flip-Problem bei setRotation!

LÖSUNG für ST7735 und ILI9341 für beide Libraries:

An verschieden Stellen wir das MADCTL-Register beschrieben. Irgendwie haben die Entwickler der LIB nicht
nicht alle Varianten berücksichtigt
Adafruit_ILI9341_STM.cpp (Maple/STM32):

void Adafruit_ILI9341_STM::setRotation(uint8_t m)
{
  // --- juergs, Varianten neu hinzugefügt!
  rotation = m % 6; // can't be higher than 3, now 5
  switch (rotation) {
    case 0:
      m = (MADCTL_MX | MADCTL_BGR );
      _width  = ILI9341_TFTWIDTH;
      _height = ILI9341_TFTHEIGHT;
      break;
    case 1:
      m = (MADCTL_MV | MADCTL_BGR);
      _width  = ILI9341_TFTHEIGHT;
      _height = ILI9341_TFTWIDTH;
      break;
    case 2:
      m = (MADCTL_MY | MADCTL_BGR );
      _width  = ILI9341_TFTWIDTH;
      _height = ILI9341_TFTHEIGHT;
      break;
    case 3:
      m = (MADCTL_MX | MADCTL_MY | MADCTL_MV | MADCTL_BGR);
      _width  = ILI9341_TFTHEIGHT;
      _height = ILI9341_TFTWIDTH;
      break;
case  4:
  m = 0xC8;
      _width  = ILI9341_TFTHEIGHT;
      _height = ILI9341_TFTWIDTH;
      break;  
case  5:
          // --- juergs, diese Variante neu hinzugefügt!
         // --- hier wird das Bit5 des Registers auf "1" = "Reversed" gesetzt, gab es vorher nicht!
         //--- Bit7 wird auf "1" gesetzt, BottomToTop und BGR Farben eingestellt
         // Doku mau ...  :o
  m = ( MADCTL_MV | MADCTL_MY| MADCTL_BGR );  // 0xa8
      _width  = ILI9341_TFTHEIGHT;
      _height = ILI9341_TFTWIDTH;
      break; 
  }


In der Library TFT_eISP:
Zitat#define ILI9341_DRIVER
#define ST7735_BLACKTAB
In user_setup.h ist zu setzen, damit das Display in den passenden Modus schaltet.
Man muss nur wissen,  welcher Fall in welchem Header zu wählen ist.
Bei den x-konfigurations-Möglichkeiten und vielen redundanten Defines ... Easy, oder?!  :( ::)

Für den ESP findet sich der relevante Code in der Header-Datei: ILI9341_Rotation.h
  case 7:
#ifdef M5STACK
      writedata(TFT_MAD_MX | TFT_MAD_BGR);
#else
      writedata(TFT_MAD_MY | TFT_MAD_MV | TFT_MAD_BGR);
#endif
      _width  = _init_height;
      _height = _init_width;
      break;


Schwere Geburt, für so ein kleines Display....   ;)
Offensichtlich gibt es verschieden TFT-Controller-Varianten, die einmal auf "Normal" und einmal auf "Reversed" zu setzen sind,
daß sie sich mit den Zusatz-Grafik-Libs betreiben lassen.

Größe und Orientierung passt jetzt...
Dann muss nur noch der Maple Code bereinigt werden, bzw auf die ursprüngliche Version ohne Faktor zurückgegangen werden... 
Damit die Skalen-Schrift + Anzeige auch wieder erscheinen ...

Dann kann ich mich an die Umsetzung der BME680-Sensorwerte machen.

Datenblatt: Datenblatt ILI9341.pdf (http://www.buydisplay.com/download/ic/ILI9341.pdf) (nur?) Seite 95.
sainsmart-arduino-color-display/ (https://www.tweaking4all.com/hardware/arduino/sainsmart-arduino-color-display/)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 12 Januar 2019, 19:46:56
Bin gerade beim Implementieren und der seriellen BME680-Boards auf dem MapleMini.

Beim näheren Hinsehen ergeben sich nun auch einige Fallstricke bei der STM32 angepassten Library.


IAQ-Werte > 250 habe ich bisher selten gesehen .... deshalb macht es wohl kein Sinn, den Bereich auf IAQmax=500 skalieren,
sondern eine passende "adaptive" Dynamik einzubauen ...

So langsam wird es was....

Dennoch, hier die Todo-Liste:

Hilfreich dazu ist ein Sketch-Programm zu Ausprobieren der Grafik: sketchit (http://www.sketchit.org/)  (C#-Interpreter (https://www.codeproject.com/Articles/1254950/%2FArticles%2F1254950%2FSketchIt-A-Small-NET-Based-Development-Environment))
Sorry an die *nixer, CSharp liegt mir "etwas" mehr ...  ;) :)

Beispiel zum selbst Live-Ausprobieren:
using System.Drawing;
float M_SIZE = 0.068F;
float _sx = 0.0F;
float _sy = 0.0F;
int _x0=0, _x1=0;
int _y0=0, _y1=0;
int tl = 15;
int _sxInt = 0;
int _syInt = 0;
int _idx = 0;

SetSize(160,128);
DrawBackground(GetColor(200,255,255));
DrawRectangle(5,3,Width-10, Height/2+10);
SketchIt.Api.Color slatBlue = GetColor(255,255,255);
Pen skyBluePen = new Pen(Brushes.DeepSkyBlue);

// indexe laufen von 0..20
for (int i=-50; i<51; i+=5)
{
_sx = Cos((i - 90) * 0.0174532925F);
    _sy = Sin((i - 90) * 0.0174532925F);
PrintLine("idx, i, sx, sy =\t", _idx,  i, _sx, _sy);

_idx++;

_sxInt = Convert.ToInt32(_sx * M_SIZE * 100 + tl);
_syInt = Convert.ToInt32(_sy * M_SIZE * 100 + tl);

_x0 = _sxInt + Convert.ToInt32(M_SIZE * 120);
_y0 = _syInt + Convert.ToInt32(M_SIZE * 150);

_x1 = Convert.ToInt32(_sx) +  M_SIZE * 120;
_y1 = Convert.ToInt32(_sy) +  M_SIZE * 150;

if (i<50) DrawLine(_x0,_y0,_x1,_y1);
PrintLine("idx, i, _sxInt, _syInt =\t", _idx,  i, _sxInt, _syInt);
PrintLine("idx, i, x0, y0 =\t", _idx,  i, _x0, _y0);
PrintLine("idx, i, x1, y1 =\t", _idx,  i, _x1, _y1);
}


Erste Code-Arbeitsversion für den Maple: https://github.com/juergs/BME680_TFT_Monitor/blob/master/BME680_Maple_TFT_Monitor.ino (https://github.com/juergs/BME680_TFT_Monitor/blob/master/BME680_Maple_TFT_Monitor.ino)
Für Vorschläge und Pull-Requests gerne immer willkommen...  ;) :)

Für den ESP ist zusätzlich zum TFT noch folgendes geplant (JavaScript + Chart.js): esp8266-data-logging-with-real-time-graphs (https://circuits4you.com/2019/01/11/esp8266-data-logging-with-real-time-graphs/?relatedposts_hit=1&relatedposts_origin=1530&relatedposts_position=1)
Lauffähiges Beispiel habe ich beigefügt.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 13 Januar 2019, 16:00:00
Hallo Jürgen,

Deine breakouts für den BME680 waren von hier (https://oshpark.com/shared_projects/LXuNziGd), oder? Ich überlege, ob ich eines für den Lacrosse GateWay mache, der dann seitlich auf der Platine (mit 90 ° Stiftleisten) festgelötet wird und aus dem Gehäuse rausschaut.

Gruß Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 13 Januar 2019, 21:43:15
Hallo Peter,
ja, die von OSH.

Allerdings betrachtet man das Preis/Leistungsverhältnis is das komplette QY-MCU680V1-Board, seriell ja ebenfalls für das LGW geeignet.
Da wäre ja noch eine oder mehere Serial-Bridges onboard. Der BME kostet bei Rei****t 9,90€ + Versand.
Die QY-MCU680V1-Board von Ali kosten 8,80/Stück, kein Porto. Bei Rutronik 8,90€ + MWst + Porto.
Solche Ali-Preise sind nur in Tausender Stückzahlen wertschöpfend (oder Fakes?). 

Die Platinen hatte ich noch herumliegen, aus der Zeit wo ich noch mit dem Gedanken spielte, die Dinger selbst SMD-verlöten zu können.
Na ja, ab bekomme ich sie schon mal.  ;)

Leider wirklich schade um Deine Mühe, die Dinger auf die Platine zu bekommen. Trotzdem vielen Dank dafür.
Würde trotzdem empfehlen, das Breakoutboard von der Platine entfernt am Gehäuse zu montieren.
Sensor-oberfläche ins Freie ...

PS: um die thermische Einstreuung in der nanoLGW zu verhindern würde ich den Sensor ebenfalls außen anbringen wollen
und im 3D-Gehäuse für genügend Durchluft bzw. sorgen ... 
Ich würde ein Halterung dafür vorsehen. Bei dem Meter-Projekt ist der BH1750 auch sinnvoll,
da Tag-/Nacht-Erkennung und Regelung der Displayhelligkeit Sinn macht.
Da sie ja den ESP beinhalten ist ein Netzteil unabdingbar und die Anschlußmöglichkeiten dazu auch ...
D.h. die Gehäuse (LGW+nanoLGW) sollten standfest und das Netzteilkabel mit Hohlstecker abkönnen.
Wenn die Gehäuse fertig konzipiert + gedruckt sind, lasse ich Dir gerne ein paar davon zukommen.  ;)
Dauert leider noch etwas ...

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 14 Januar 2019, 19:51:57
Zitatob ich eines für den Lacrosse GateWay mache, der dann seitlich auf der Platine (mit 90 ° Stiftleisten) festgelötet wird und aus dem Gehäuse rausschaut.
Ist wohl auch Gehäuse-abhängig. Prinzipiell aber die wohl bessere Variante.  :)
Mit STM32F103+BSEC und I2C-Bypass?  ;D ;) :D
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 14 Januar 2019, 21:00:53
Zitat von: juergs am 14 Januar 2019, 19:51:57
Mit STM32F103+BSEC und I2C-Bypass?  ;D ;) :D
Nur, wenn Du dafür die Software schreibst  ;D ;D ;D

Gruß Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 14 Januar 2019, 21:21:49
Zitat von: PeMue am 14 Januar 2019, 21:00:53
Nur, wenn Du dafür die Software schreibst  ;D ;D ;D
Gruß Peter

... könnte man darüber nachdenken ...   ;) :) :D

Wobei ich gerade die Erfahrung mit der seriellen Variante mache, daß während des Entwickelns und Uploadens,
die Erfassung einfach weiterläuft und der Sensor muss nicht neu initialisiert werden. Hat was ...
Man bekommt gleich gültige Werte  :)

So, Berechnungs-Fehler in der unteren Hälfte beseitigt und die Werte schon mal gelabeld.
Werte zum Darstellen bereitgestellt. Muss nur noch deren Positionierung "iterativ" anpassen  ;)

Durch Anhauchen reagiert die Anzeige wie zu erwarten war... sehr sensibel.  :) ;) :D

Die Farbgebung der Skala ist erst mal etwas empirisch verteilt ...
Wobei ich gestern auch schon IAQ-Werte von über 160 gesehen habe, die in etwa realistisch
einzuschätzen  waren und zur Stoßlüftung angemahnt haben ...  ;D

Die Grafiken sind schon mal vorbereitet, benötige aber noch die Einbindung einer kleineren Schrift.
ZitatProgram BME680_Maple_TFT_Monitor size: 70.344 bytes (used 64% of a 110.592 byte maximum) (2,88 secs)

Hier mal ein Mitschnitt:
IAQ_m ist schon der skalierte Wert für den Anzeige-Bereich von -50..+50 ° in 0..100%.
EMA_S ist der leicht geglättete IAQ-Wert und IAQ der momentan gemessene Wert.

[2691.28]  - EMA_S, IAQ, IAQ_m:   43   43   8
[2694.52]  - EMA_S, IAQ, IAQ_m:   42   42   8
[2697.75]  - EMA_S, IAQ, IAQ_m:   44   46   8
[2700.98]  - EMA_S, IAQ, IAQ_m:   42   42   8
[2704.21]  - EMA_S, IAQ, IAQ_m:   41   41   8
[2707.44]  - EMA_S, IAQ, IAQ_m:   43   45   8
[2710.67]  - EMA_S, IAQ, IAQ_m:   41   40   8
[2713.91]  - EMA_S, IAQ, IAQ_m:   44   47   8
[2717.14]  - EMA_S, IAQ, IAQ_m:   44   44   8
[2720.37]  - EMA_S, IAQ, IAQ_m:   41   39   8
[2723.60]  - EMA_S, IAQ, IAQ_m:   43   45   8
[2726.83]  - EMA_S, IAQ, IAQ_m:   44   46   8
[2730.06]  - EMA_S, IAQ, IAQ_m:   42   42   8
[2733.29]  - EMA_S, IAQ, IAQ_m:   45   48   9
[2736.53]  - EMA_S, IAQ, IAQ_m:   46   47   9
[2739.76]  - EMA_S, IAQ, IAQ_m:   46   46   9
[2742.99]  - EMA_S, IAQ, IAQ_m:   48   50   9
[2746.22]  - EMA_S, IAQ, IAQ_m:   48   48   9
[2749.45]  - EMA_S, IAQ, IAQ_m:   50   52   10
[2752.68]  - EMA_S, IAQ, IAQ_m:   49   49   9
[2755.91]  - EMA_S, IAQ, IAQ_m:   46   44   9
[2759.15]  - EMA_S, IAQ, IAQ_m:   43   41   8
[2762.38]  - EMA_S, IAQ, IAQ_m:   42   42   8
[2765.61]  - EMA_S, IAQ, IAQ_m:   46   49   9
[2768.84]  - EMA_S, IAQ, IAQ_m:   44   43   8
[2772.07]  - EMA_S, IAQ, IAQ_m:   43   43   8
[2775.30]  - EMA_S, IAQ, IAQ_m:   41   41   8
[2778.53]  - EMA_S, IAQ, IAQ_m:   41   41   8
[2781.76]  - EMA_S, IAQ, IAQ_m:   41   42   8
[2785.00]  - EMA_S, IAQ, IAQ_m:   42   43   8
[2788.23]  - EMA_S, IAQ, IAQ_m:   43   45   8
[2791.46]  - EMA_S, IAQ, IAQ_m:   46   48   9
[2794.69]  - EMA_S, IAQ, IAQ_m:   46   46   9
[2797.92]  - EMA_S, IAQ, IAQ_m:   48   50   9
[2801.15]  - EMA_S, IAQ, IAQ_m:   49   51   9
[2804.39]  - EMA_S, IAQ, IAQ_m:   45   43   9
[2807.62]  - EMA_S, IAQ, IAQ_m:   45   45   9
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 16 Januar 2019, 21:00:04
LowerPane zeigt schon mal Werte, muss aber noch feingetunt werden.

/edit: IAQ_m interessiert nicht, HUMIDITY dafür nachgezogen...  ;)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 16 Januar 2019, 21:13:50
Hallo Jürgen,

Zitat von: juergs am 13 Januar 2019, 21:43:15
ja, die von OSH.
ich habe mir diese breakouts mal angeschaut und habe den Verdacht, dass die Vias teilweise im Nirwana verschwinden. Und vierlagig ist diese Leiterplatte auf jeden Fall auch nicht. Daher mein Vorschlag: wenn sich mein Verdacht bestätigen sollte, mache ich ein Breakout mit BME680 und BH1750, das mittes 1,27 mm Pinleisten sowohl auf den LGW als auch auf den nanoLGW angelötet werden kann. Einverstanden?

Einziger Nachteil:
Zitat von: juergs am 13 Januar 2019, 21:43:15
Dauert leider noch etwas ...

Gruß Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 16 Januar 2019, 21:29:14
Zitat von: PeMue am 16 Januar 2019, 21:13:50
Hallo Jürgen,
ich habe mir diese breakouts mal angeschaut und habe den Verdacht, dass die Vias teilweise im Nirwana verschwinden. Und vierlagig ist diese Leiterplatte auf jeden Fall auch nicht. Daher mein Vorschlag: wenn sich mein Verdacht bestätigen sollte, mache ich ein Breakout mit BME680 und BH1750, das mittes 1,27 mm Pinleisten sowohl auf den LGW als auch auf den nanoLGW angelötet werden kann. Einverstanden?
Gruß Peter


Hallo Peter,
ja klar, das hört sich super gut an.   :)

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 17 Januar 2019, 17:50:18
Zitat von: juergs am 16 Januar 2019, 21:29:14
ja klar, das hört sich super gut an.   :)
so etwa?

Gruß Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 17 Januar 2019, 19:14:53
Hallo Peter,

im Prinzip ja, weil abgesetzt, aber wenn man sich vorstellt dass man das Board
an ein (3D-Druck-)Gehäuse montieren muss, wären zwei M2,5 Bohrungen (diagonal?) zusätzlich noch sehr praktisch    :D ;) ;D

Zwar nicht so riesig, wie unten im BME-280-Beispiel (warum auch immer der BME280 0%rH liefert), aber ähnlich.
Ich stelle mir eine Vertiefung im Deckel vor ... von der Rückseite würde das Board mit zwei Senkkopf-Schrauben befestigt...
Oder ich müsste mir ein Schiebe-/Klemm-Mechanismus einfallen lassen ...

Wenn man sich schon was wünschen darf...  ;D

/edit: ... der BME280 0%rH liefert => Der Unterschied zwischen BME - und BMP280 !

Grüße,
Jürgen


Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 28 Januar 2019, 17:52:45
Hallo zusammen,

ich würde jetzt mal mit einem solchen breakout board ins Rennen gehen (siehe BME680_BH1750_breakout_v1.0_top.png (https://forum.fhem.de/index.php?action=dlattach;topic=78619.0;attach=114241;image)).
Leider ohne Schraubenlöcher, aber m.E. braucht es das auch nicht, da die Platine so klein ist (9x7,5 mm), dass sie keine Schrauben braucht.

Anbindung ist über einen 1.27 mm Pinheader, der am nanoLGW per SMD gelötet wird, so dass das breakout board oben aus dem Gehäuse schauen kann (die Höhe kann über das Einlöten justiert werden).

Beim LGW habe ich das ganze in Durchsteck relalisiert, so dass das breakout board auf der Seite aus dem Gehäuse rausschauen kann.

Irgendwelche Verbesserungsvorschläge? Wenn nicht, schaue ich, dass ich Platinen bestelle.

Gruß Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 28 Januar 2019, 18:15:04
Hallo Peter,

super!  Nehme auf alle Fälle einen Posten ab ... :D

Bei den OSH-Breakouts habe ich mich mit einem BME680 und einem in einem Schraubstock eingespannten Bügeleisen
versucht. Was soll ich sagen, bin mit dem Ergebnis zufrieden und es funktioniert sogar!
Die Sensor-Größe ist wirklich grenzwertig .... Ebenso die 0403 4K7-R's (hatte nur 0604 da..)
Ist die kostengünstigste Variante  ;D

Danke + Grüße!
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 31 Januar 2019, 21:35:39
Hallo,

habe jetzt mal die Breakouts, LGW v1.4 und nanoLGW v1.6 bestellt, mal sehen, ob die noch vor dem chinesischen Neujahr gefertigt werden.

Zitat von: juergs am 28 Januar 2019, 18:15:04
Bei den OSH-Breakouts habe ich mich mit einem BME680 und einem in einem Schraubstock eingespannten Bügeleisen
versucht. Was soll ich sagen, bin mit dem Ergebnis zufrieden und es funktioniert sogar!
da hätte ich gerne mal ein Bild gesehen  ;)

Gruß Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 04 Februar 2019, 20:42:56
So, ich habe mal versucht nach einem ESP8266-SDK-Upgrade, die BOSCH-BSEC-Lib mit der 
Zitathardware\esp8266\2.5.0-beta2\tools\sdk\lib
zu konfigurieren:

Die Anleitung galt ja für die V2.4.0:

############################################
# Einbinden der BSEC Software für ESP8266: #
# Stand: 09.01.2018                        #
# ESP8266 Paket V2.4.0                     #
# BSEC V1.4.5.1                            #
############################################
https://github.com/BoschSensortec/BSEC-Arduino-library


1. Die Lib "[b]libalgobsec.a[/b]" muss nach "[b]\Users\[Benutzername]\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0\tools\sdk\lib\[/b]" kopiert werden !
    Das ist die "precompiled Lib" von Bosch Sensortec.

2. Die Linker Datei "hardware\esp8266\2.4.0\tools\sdk\ld\eagle.app.v6.common.ld" muß angepasst werden:
    nach der Zeile "*libm.a:(.literal .text .literal.* .text.*)" , die Zeile "*libalgobsec.a:(.literal .text .literal.* .text.*)" einfügen.

3. Als letztes muss noch ein Parameter in der Datei [b][i]"hardware\esp8266\2.4.0\platform.txt"[/i][/b] hinzugefügt werden:
    am Ende der Zeile "compiler.c.elf.libs= ... -lm -lgcc" folgendes anfügen " -lalgobsec" .


Änderungen:

1.) Die "libalgobsec.a" muss nach "\Users\[Benutzername]\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.0-beta2\tools\sdk\lib\" kopiert werden !
    Das ist die "precompiled Lib" von Bosch Sensortec.

2.) in die Linker Datei
eagle.app.v6.common.ld.h
im Verzeichnis
Zitat"hardware\esp8266\2.5.0-beta2\tools\sdk\ld\


... nach der Zeile
"*libm.a:(.literal .text .literal.* .text.*)"

die Zeile

"*libalgobsec.a:(.literal .text .literal.* .text.*)"

einfügen.

3. Als letztes muss noch ein Parameter in der Datei "hardware\esp8266\2.5.0-beta2\platform.txt" hinzugefügt werden:
    am Ende der Zeile "compiler.c.elf.libs= ... -lm -lgcc" folgendes anfügen " -lalgobsec" .

Dann sollte bei einem Compile + Linkerlauf, ähnlich diesem Beispiel-Output folgende Info stehen:

Zitat"C:\Users\<user>\AppData\Local\Arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-3-20ed2b9/bin/xtensa-lx106-elf-gcc" -Wl,-Map
"-Wl,C:\Users\<user>\AppData\Local\Temp\arduino_build_984070/bsec_iot_example.ino.map" -g -Wall -Os -nostdlib -Wl,--no-check-sections -u app_entry -u _printf_float -u _scanf_float -Wl,-static
"-LC:\Users\<user>\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.0-beta2/tools/sdk/lib" "-LC:\Users\<user>\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.0-beta2/tools/sdk/ld"
"-LC:\Users\<user>\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.0-beta2/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\<user>\AppData\Local\Temp\arduino_build_984070/bsec_iot_example.ino.elf"
-Wl,--start-group "C:\Users\<user>\AppData\Local\Temp\arduino_build_984070\sketch\bme680.c.o" "C:\Users\<user>\AppData\Local\Temp\arduino_build_984070\sketch\bme680_calculations.c.o"
"C:\Users\<user>\AppData\Local\Temp\arduino_build_984070\sketch\bsec_integration.c.o" "C:\Users\<user>\AppData\Local\Temp\arduino_build_984070\sketch\RFMxx.cpp.o"
"C:\Users\<user>\AppData\Local\Temp\arduino_build_984070\sketch\SensorBase.cpp.o" "C:\Users\<user>\AppData\Local\Temp\arduino_build_984070\sketch\bsec_iot_example.ino.cpp.o"
"C:\Users\<user>\AppData\Local\Temp\arduino_build_984070\libraries\Wire\Wire.cpp.o" "C:\Users\<user>\AppData\Local\Temp\arduino_build_984070\libraries\SPI\SPI.cpp.o"
"C:\Users\<user>\AppData\Local\Temp\arduino_build_984070\libraries\Adafruit_GFX\glcdfont.c.o" "C:\Users\<user>\AppData\Local\Temp\arduino_build_984070\libraries\Adafruit_GFX\Adafruit_GFX.cpp.o"
"C:\Users\<user>\AppData\Local\Temp\arduino_build_984070\libraries\Adafruit_GFX\Adafruit_SPITFT.cpp.o" "C:\Users\<user>\AppData\Local\Temp\arduino_build_984070\libraries\Adafruit_SSD1306\Adafruit_SSD1306.cpp.o"
"C:\Users\<user>\AppData\Local\Temp\arduino_build_984070\libraries\AS_BH1750\AS_BH1750.cpp.o" "C:\Users\<user>\AppData\Local\Temp\arduino_build_984070\libraries\AS_BH1750\AS_BH1750A.cpp.o"
"C:\Users\<user>\AppData\Local\Temp\arduino_build_984070\core\core.a" -lhal -lphy -lpp -lnet80211 -llwip2-536-feat -lwpa -lcrypto -lmain -lwps -lbearssl -laxtls -lespnow -lsmartconfig -lairkiss
-lwpa2 -lstdc++ -lm -lc -lgcc  -lalgobsec -Wl,--end-group 
"-LC:\Users\<user>\AppData\Local\Temp\arduino_build_984070"
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 17 Februar 2019, 11:35:44
Hallo Peter,
sorry, brauchte den BME680 für ein weiteres Breakout!
Aber dafür die Bilder...  ;)

Das IR-Thermometer wollte nicht so recht...
Vielleicht doch besser mit NiCr-Ni-Thermoelement und SolidState-Relais-Steuerung.
Nicht so die Profi-Thermokurve, aber es geht.
Vorher mit Flussmitteldispenser und Lötzinn benetzt, dann nach einem, oder zwei Kaffe (!!!) ::)
den BME positioniert....  ;D ;) :)

Hoffe, dass der BME nicht an Hitze-Schlag stirbt....

Zitat... und nicht gerade zur Nachahmung empfohlen!!!
Falls es  jemand noch nicht wissen sollte, die Dinger werden so richtig heiß!
Verbrennungsgefahr!


Apropos, gibt es etwas Neues zu Deinen neuen Breakouts?
Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 17 Februar 2019, 11:41:47
Zitat von: juergs am 17 Februar 2019, 11:35:44
Apropos, gibt es etwas Neues zu Deinen neuen Breakouts?
still in production, ich habe aber gerade auf der Elecrow Webseite freundich nach dem Status gefragt. Was lernen wir: entweder deutlich vorher bestellen oder danach, zwischendrin ist suboptimal. Wenn ich sehe, dass Papa Romeo schon 200 Platinen bei JLCPCB liegen hat  :o.

Gruß Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 17 Februar 2019, 11:47:24
Ui, danke!  :-X ;D ;)

Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 17 Februar 2019, 15:11:30
... und geht!
[797602.00] P: 1031.3| T: 23.78| rH: 30.40| IAQ: 27.71 (1)| Static IAQ: 26.18| CO2e: 0.00| bVOC: 0.00| Gas: 8552.00| UBat: 3.3V
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 20 Februar 2019, 09:31:44
Neuer Status: shipped  :)

Gruß Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 25 Februar 2019, 09:35:13
Aktueller Status für die Neugierigen:

Zitat2019-02-25 09:00 Frankfurt Main, Germany, Flight landed
Zitat2019-02-26 16:00 Destination Clearance Facility, EU, Cleared by customs
Zitat2019-02-28 04:13 FRANKFURT/M, Germany, Arrived at facility
Zitat2019-03-01 14:07 xxx, Germany, Successfully delivered

Gruß Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: tobias.gj am 27 Februar 2019, 20:32:07
Hi zusammen,
Letzte Woche kam mein Lieferung BME680 von AliExpress.
Ich habe sie mit einem ESP8266 (WEMOS D1 mini) und ESPEasy über das neue MQTT Modul von Rudolf in Fhem eingebunden.
Läuft super.
Das BME680 Modul ist nicht im normalen Repository von ESPEasy. Es liegt im Playground und muss vor dem kompilieren in das ESPEasy Quellverzeichnis kopiert werden.
Das Display ist ein OLED SSD1306.

Im Anhang ist noch ein Bild von einem Versuchsaufbau mit MHZ-19 (CO2), BH1750 und BME280. Das Gehäuse ist aber noch nicht optimal.
Anbei der Link zum Projekt https://www.thingiverse.com/thing:3385002
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 28 Februar 2019, 09:37:30
Hallo tobias.gj,

das espeasy-Modul liefert Dir über die Adafruit-Lib nur :
UserVar[event->BaseVarIndex + 3] = bme.gas_resistance / 1000.0;
Den Widerstandswert, der nicht dem VOC-Wert entspricht, geschweige denn PPM.
Hier führt nur der Weg über die statische BSEC-Lib, die einige Anforderungen
an die Laufzeitumgebung stellt. Ob das über die ESPEasy-Umgebung laufen würde ?
Evtl. die Anpassung von Jörg: https://forum.fhem.de/index.php/topic,96241.0.html (https://forum.fhem.de/index.php/topic,96241.0.html)
könnte Dir da weiterhelfen (ohne BSEC).

Viel Spaß mit dem Modul und neue Erkenntnisse über CO2 ;)

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: tobias.gj am 28 Februar 2019, 09:40:12
Das ist richtig, bin gerade dabei ein alternatives Modul reinzufummeln um das Problem zu lösen und auch die IAQ Werte zu bekommen.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 02 März 2019, 14:07:51
Hallo zusammen,

die Platinen sind da, mal sehen, ob ich die kleinen Dinger bestückt bekomme  ::) ::) ::).
Nur zur Info: Die Pfostenstecker sind im RM1,27 mm.

Gruß Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 21 März 2019, 15:48:25
Hallo Jürgen,

Zitat von: juergs am 29 Dezember 2018, 11:55:03
PS: Die BME680 mit STM32F051k8-Sensoren (https://de.aliexpress.com/item/GY-MCU680V1-BME680-Temperatur-und-Feuchtigkeit-Luftdruck-Indoor-Air-Qualit-t-IAQ-MCU680-Sensor-Modul/32905797241.html?spm=a2g0x.search0104.3.2.21a861c1tzC5SF&ws_ab_test=searchweb0_0%2Csearchweb201602_1_10320_10065_10068_10547_319_317_10548_10696_453_10084_454_10083_10618_10304_10307_10820_10821_538_537_10302_536_10843_10059_10884_10887_100031_10319_321_322_10103%2Csearchweb201603_51%2CppcSwitch_0&algo_pvid=9c0468c9-27a7-4cb6-bd36-295dcd541f54&algo_expid=9c0468c9-27a7-4cb6-bd36-295dcd541f54-0) sind heute gekommen ... :D
hast Du irgendwo einen Schaltplan für diese Teile gefunden? Meiner ist gestern gekommen ...

Danke + Gruß

Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 21 März 2019, 18:04:44
Hallo Peter,

Schaltplan ... nicht direkt, aber die SW dazu.
Ein Reengineering sollte aber nicht so schwer sein.
Ist ja nur RX/TX und ggf. I2C als Bypass direkt zum BME680.

Mal schauen was ich machen kann... 8)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 21 März 2019, 18:08:57
Aktuelle Firmware für das Modul "GY-MCU680V1 BME680" zum Maple ist hier: BME680_Maple_TFT_Monitor (https://github.com/juergs/BME680_TFT_Monitor)
STM32F051K8 (https://www.st.com/content/ccc/resource/technical/document/user_manual/30/ae/6e/54/d3/b6/46/17/DM00050135.pdf/files/DM00050135.pdf/jcr:content/translations/en.DM00050135.pdf) S.39
Details (https://forum.fhem.de/index.php/topic,78619.msg878330.html#msg878330) und hier (https://de.aliexpress.com/item/GY-MCU680V1-BME680-Temperatur-und-Feuchtigkeit-Luftdruck-Indoor-Air-Qualit-t-IAQ-MCU680-Sensor-Modul/32907106319.html)

Wäre auch für die ESP-Wetterstation (https://forum.fhem.de/index.php/topic,52403.0.html) brauchbar...  ;) :)

Oder alternativ in der Cloud: https://thinger.io/ (https://thinger.io/) (Anm.: frei, sehr einfach und funktioniert!) Übersicht (http://docs.thinger.io/)
Nur für 30 Tage: Azure Iot-Hub (https://docs.microsoft.com/de-de/azure/iot-hub/iot-hub-arduino-huzzah-esp8266-get-started) habe ich mit dem ESP8266 leider noch nicht erfolgreich zum Laufen gebracht ...

BME680  (https://german.alibaba.com/product-detail/hot-selling-original-new-stock-bme680-ic-chips-60777091878.html?spm=a2700.8699010.29.92.1b002968OBhAZP) für 1,60$ das Stück ???

Schaltplan (auf die Schnelle) ohne Gewähr ...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 22 März 2019, 08:09:53
Hallo Jürgen,

ich wollte jetzt nicht, dass Du anfängst, einen Schaltplan zu zeichnen ;). Hat die Software die Bosch BSEC integriert, oder ist ein x-beliebiger IAQ Algorithmus umgesetzt?

Zitat von: juergs am 21 März 2019, 18:08:57
BME680  (https://german.alibaba.com/product-detail/hot-selling-original-new-stock-bme680-ic-chips-60777091878.html?spm=a2700.8699010.29.92.1b002968OBhAZP) für 1,60$ das Stück ???
Da würde ich eher dieses Angebot (https://de.aliexpress.com/item/100-neue-original-BME280-BME280-BME680-BME-680-IC-SENSOR-DRUCK-FEUCHTIGKEIT-TEMP/32968997530.html?spm=a2g0s.8937460.0.0.816c2e0ebhJALt) bestellen. 10 Stück für 69 € ist günstig und m.E. relativ sicher.

Gruß Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 22 März 2019, 08:20:16
Hallo Peter, Schaltplan hat mich auch interessiert  8)
Ich vermute, die SW hat BSEC integriert und zeigt eigentlich sehr plausible Werte an.
Ich habe den Output in meiner FW noch geringfügig geglättet.

Für den Maple habe ich diese Module bekommen:
Air602-WiFi-Module (https://www.seeedstudio.com/Air602-WiFi-Module-p-3139.html) um den Maple mit Wifi-Fähigkeiten auszustatten ...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: JackWolfskind am 27 März 2019, 18:45:52
Zumindest wie man eCO2 und VOCeq aus BSEC bekommen, hat Bosch endlich mal erklärt:
https://community.bosch-sensortec.com/t5/MEMS-sensors-forum/BME680-BSEC-eCO2/m-p/5919
Habe das erstaunlicherweise noch niemanden testen gesehen...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 27 März 2019, 22:29:25
Danke für die zusätzliche Informationsquelle.

Z.B. auch diese Info ist interessant:

The IAQ accuracy is actually reflecting the current state of the background calibration process, such as:

    IAQ Accuracy=0 could either mean:
        BSEC was just started, and the sensor is stabilizing (this lasts normally 5min in LP mode or 20min in ULP mode),
        there was a timing violation (i.e. BSEC was called too early or too late), which should be indicated by a warning/error flag by BSEC,
    IAQ Accuracy=1 means the background history of BSEC is uncertain. This typically means the gas sensor data was too stable for BSEC to clearly define its references,
    IAQ Accuracy=2 means BSEC found a new calibration data and is currently calibrating,
    IAQ Accuracy=3 means BSEC calibrated successfully.


Ich vermute, Du beziehst Dich mit Deinem Hinweis auf diese Frage?
https://forum.fhem.de/index.php/topic,97161.msg922102.html#msg922102 (https://forum.fhem.de/index.php/topic,97161.msg922102.html#msg922102)
und
BME680 without VOC and CO2 data (https://community.bosch-sensortec.com/t5/MEMS-sensors-forum/BME680-without-VOC-and-CO2-data/m-p/6319?advanced=false&collapse_discussion=true&filter=location&location=forum-board:bst_community-mems-forum&q=BME680&search_type=thread)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 31 August 2019, 17:04:51
Habe eine eigene Arduino Library erstellt, die es ermöglicht aus dem BME680-Sensor, ohne die Einbindung der statischen BSEC-Libraries auch den Anteil der tVocs in PPM zu ermitteln bzw. auszugeben.
Da momentan verfügbare Libraries nur den Widerstand des Heizelements des Sensors ausgeben, welcher ohne zusätzlichen Berechungsaufwand leider keine interpretierbare Lösung darstellt.

Anbei die erste Version: getestet mit Wemos D1 mini und BME680 Sensor an Adresse 0x77.  Nach ca. 30s werden erste tVoc-Werte geliefert.

Abhängigkeiten:
Als Grundlage wird die aktuelle Adafruit_BME680-Library benötigt:   * https://adafruit.github.io/Adafruit_BME680/html/index.html (https://adafruit.github.io/Adafruit_BME680/html/index.html)
Welche wiederum die Installation der Adafruit Unified Sensor library benutzt:  * https://github.com/adafruit/Adafruit_Sensor (https://github.com/adafruit/Adafruit_Sensor)

|-- <JS_BME680 Library> 1.0.0
|   |-- <Wire> 1.0
|   |-- <Adafruit BME680 Library> 1.0.7
|   |   |-- <Wire> 1.0
|   |   |-- <SPI> 1.0
|   |   |-- <Adafruit Unified Sensor> 1.0.3
|   |-- <SPI> 1.0


Credits und Dank für die Basis + Grundlagenarbeit an Jörg @ github (https://github.com/herrmannj/) oder https://forum.fhem.de/index.php/topic,96241.0.html (https://forum.fhem.de/index.php/topic,96241.0.html)!


Arduino-Monitor-Ausgabe bei 115KB mit dem beigefügten Sample-Sketch:
*** Started!
Enabled: I2C for Wemos D1 mini SDA:D2 / SCL:D1
Scanning I2C...
I2C device found at address 0x77  !
done

I2C: ok BME680 sensor found! :-)
[10.37]   Temperature = 27.32 *C  Pressure = 999.40 hPa  Humidity = 51.94 %  Gas = 0.00 KOhms  Approx. Altitude = 115.79 m 
[20.37]   Temperature = 27.41 *C  Pressure = 999.38 hPa  Humidity = 51.92 %  Gas = 87.76 KOhms  Approx. Altitude = 115.79 m 
[30.37]   Temperature = 27.53 *C  Pressure = 999.40 hPa  Humidity = 51.85 %  Gas = 95.60 KOhms  Approx. Altitude = 116.12 m 
[40.37]   Temperature = 27.59 *C  Pressure = 999.40 hPa  Humidity = 51.88 %  Gas = 100.18 KOhms  Approx. Altitude = 115.95 m 
[50.37]   Temperature = 27.63 *C  Pressure = 999.40 hPa  Humidity = 51.94 %  Gas = 102.70 KOhms  Approx. Altitude = 115.79 m 
[60.37]   Temperature = 27.64 *C  Pressure = 999.40 hPa  Humidity = 51.99 %  Gas = 104.36 KOhms  Approx. Altitude = 115.95 m 
[70.37]   Temperature = 27.65 *C  Pressure = 999.38 hPa  Humidity = 51.99 %  Gas = 105.15 KOhms  Approx. Altitude = 115.95 m 
[80.38]   Temperature = 27.66 *C  Pressure = 999.38 hPa  Humidity = 52.02 %  Gas = 106.08 KOhms  Approx. Altitude = 115.95 m 
[90.38]   Temperature = 27.66 *C  Pressure = 999.38 hPa  Humidity = 52.02 %  Gas = 106.21 KOhms  Approx. Altitude = 115.95 m 
[100.38]   Temperature = 27.66 *C  Pressure = 999.40 hPa  Humidity = 51.98 %  Gas = 107.30 KOhms  Approx. Altitude = 116.12 m 
[110.38]   Temperature = 27.66 *C  Pressure = 999.38 hPa  Humidity = 51.93 %  Gas = 108.13 KOhms  Approx. Altitude = 116.12 m 
[120.38]   Temperature = 27.67 *C  Pressure = 999.36 hPa  Humidity = 51.83 %  Gas = 108.48 KOhms  Approx. Altitude = 116.29 m 
[130.38]   Temperature = 27.68 *C  Pressure = 999.36 hPa  Humidity = 51.78 %  Gas = 108.41 KOhms  Approx. Altitude = 116.12 m 
[140.38]   Temperature = 27.68 *C  Pressure = 999.36 hPa  Humidity = 51.83 %  Gas = 108.84 KOhms  Approx. Altitude = 116.12 m 
[150.38]   Temperature = 27.68 *C  Pressure = 999.38 hPa  Humidity = 51.89 %  Gas = 108.62 KOhms  Approx. Altitude = 116.29 m 
[160.38]   Temperature = 27.69 *C  Pressure = 999.36 hPa  Humidity = 51.86 %  Gas = 108.70 KOhms  Approx. Altitude = 116.46 m 
[170.38]   Temperature = 27.69 *C  Pressure = 999.34 hPa  Humidity = 51.84 %  Gas = 109.48 KOhms  Approx. Altitude = 116.46 m 
[180.39]   Temperature = 27.70 *C  Pressure = 999.36 hPa  Humidity = 51.83 %  Gas = 109.26 KOhms  Approx. Altitude = 116.12 m 
[190.39]   Temperature = 27.69 *C  Pressure = 999.36 hPa  Humidity = 51.85 %  Gas = 109.41 KOhms  Approx. Altitude = 116.29 m 
[200.39]   Temperature = 27.69 *C  Pressure = 999.36 hPa  Humidity = 51.83 %  Gas = 109.33 KOhms  Approx. Altitude = 116.29 m 
[210.39]   Temperature = 27.68 *C  Pressure = 999.36 hPa  Humidity = 51.83 %  Gas = 109.48 KOhms  Approx. Altitude = 116.29 m 
[220.39]   Temperature = 27.68 *C  Pressure = 999.32 hPa  Humidity = 51.84 %  Gas = 110.05 KOhms  Approx. Altitude = 116.46 m 
[230.39]   Temperature = 27.68 *C  Pressure = 999.32 hPa  Humidity = 51.82 %  Gas = 110.34 KOhms  Approx. Altitude = 116.29 m 
[240.39]   Temperature = 27.68 *C  Pressure = 999.32 hPa  Humidity = 51.80 %  Gas = 111.00 KOhms  Approx. Altitude = 116.29 m 
[250.39]   Temperature = 27.68 *C  Pressure = 999.32 hPa  Humidity = 51.78 %  Gas = 110.93 KOhms  Approx. Altitude = 116.12 m 
[260.39]   Temperature = 27.68 *C  Pressure = 999.34 hPa  Humidity = 51.81 %  Gas = 110.93 KOhms  Approx. Altitude = 116.29 m 
[270.39]   Temperature = 27.68 *C  Pressure = 999.32 hPa  Humidity = 51.80 %  Gas = 110.63 KOhms  Approx. Altitude = 116.46 m 
[280.40]   Temperature = 27.68 *C  Pressure = 999.34 hPa  Humidity = 51.75 %  Gas = 111.52 KOhms  Approx. Altitude = 116.46 m 
[290.40]   Temperature = 27.68 *C  Pressure = 999.34 hPa  Humidity = 51.80 %  Gas = 110.78 KOhms  Approx. Altitude = 116.46 m 
[300.40]   Temperature = 27.69 *C  Pressure = 999.34 hPa  Humidity = 51.77 %  Gas = 111.37 KOhms  Approx. Altitude = 116.63 m 
[300.77] Taupunkt: 17.00  tVOC: 125
BME680-Reading done.
[310.40]   Temperature = 27.69 *C  Pressure = 999.32 hPa  Humidity = 51.78 %  Gas = 111.37 KOhms  Approx. Altitude = 116.46 m 
[310.77] Taupunkt: 17.01  tVOC: 125
BME680-Reading done.
[320.40]   Temperature = 27.70 *C  Pressure = 999.30 hPa  Humidity = 51.76 %  Gas = 111.96 KOhms  Approx. Altitude = 116.63 m 
[320.77] Taupunkt: 17.00  tVOC: 125
BME680-Reading done.
[330.40]   Temperature = 27.70 *C  Pressure = 999.30 hPa  Humidity = 51.78 %  Gas = 111.07 KOhms  Approx. Altitude = 116.46 m 
[330.77] Taupunkt: 17.00  tVOC: 125
BME680-Reading done.
[340.40]   Temperature = 27.70 *C  Pressure = 999.34 hPa  Humidity = 51.77 %  Gas = 111.82 KOhms  Approx. Altitude = 116.46 m 
[340.77] Taupunkt: 17.00  tVOC: 125
BME680-Reading done.
[350.40]   Temperature = 27.70 *C  Pressure = 999.34 hPa  Humidity = 51.79 %  Gas = 111.44 KOhms  Approx. Altitude = 116.46 m 
[350.78] Taupunkt: 17.02  tVOC: 126
BME680-Reading done.


Sketch uses 288476 bytes (27%) of program storage space. Maximum is 1044464 bytes.
Global variables use 28076 bytes (34%) of dynamic memory, leaving 53844 bytes for local variables. Maximum is 81920 bytes.


Verbesserungsvorschäge gerne erwünscht, da diese Version "noch in Arbeit" ist und einige Dinge noch verifiziert werden müssen ...  ;)

Aktualisierte Versionen pflege ich in Github ein: BME680-Arduino-Library-with_TVOC- (https://github.com/juergs/BME680-Arduino-Library-with_TVOC-)

Jürgen

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 01 September 2019, 11:52:24
BSEC-Konfiguration mit platformio:

https://www.heise.de/ct/artikel/Mikrocontroller-bequem-programmieren-mit-PlatformIO-4403209.html (https://www.heise.de/ct/artikel/Mikrocontroller-bequem-programmieren-mit-PlatformIO-4403209.html)

Here is how I got to get the BME680 running using Bosch BSEC Arduino Library on Platformio IDE.
1. Create a project for the board that you are going to use.
2. Copy the https://github.com/BoschSensortec/BSEC-Arduino-library/
3. Copy the files from BSEC-Arduino-library/src to your src folder on Platformio IDE.
4. Copy the files from BSEC-Arduino-library/examples/basic_config_state/ also to the src folder (bsec_serialized_configurations_iaq.cpp and bsec_serialized_configurations_iaq.h)
5. Copy the source code from the https://github.com/BoschSensortec/BSEC-Arduino-library/blob/master/examples/basic_config_state/basic_config_state.ino to your main.cpp
6. Download the latest library at https://www.bosch-sensortec.com/en/bst/products/all_products/bsec
7. Copy the libalgobsec.a file for the ESP8266 to the folder lib on your platformio project.
8. Add this line at the end of your platformio.ini
build_flags = -L/Users/USER/Documents/PlatformIO/Projects/BSEC_BME680/lib/ -lalgobsec
Hopefully, it will build. I know it sounds complicated but is less than changing your Arduino IDE to use precompiled libraries.


Für nodeMCU wollte platformio die libalgobsec.a außer im /lib-Verzeichnis auch noch in diesem Verzeichnis haben:
C:\Users\js\AppData\Roaming\SPB_Data\.platformio\packages\framework-arduinoespressif8266@1.20401.3-puya\tools\sdk\libc\xtensa-lx106-elf\lib
bzw. habe in platform.ini die buildflags dann so angepasst:
build_flags = -L/C:/Users/js/Documents/PlatformIO/Projects/190901-123302-nodemcuv2/lib/ -lalgobsec
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 01 September 2019, 12:07:40
Hallo Jürgen,

Du bist ja mächtig aktiv. Hast Du denn schon Informationen darüber, ob es sich lohnt, einen batteriebetriebenen Sensor mit dem BME680 zu machen? Dann würde ich entweder auf Dirk's Universalsensor (innen) einen Atmega644 (oder größer) draufpacken oder einen STM32F103 (parallel zum Arduino pro  mini 3,3 V) draufpacken. Mein Favorit wäre ganz klar der Atmega, aber mit dem neuen Bootloader sollten Laien auch ganz gut mit dem STM Prozessor klarkommen können.

Gruß Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 01 September 2019, 13:33:35
Hallo Peter,

ja das Thema hat mich mal wieder gepackt    ;)

Mit der Library wäre es schon denkbar sogar mit den ATtinys einen Sensor zu bewerkstelligen.
Allerdings müsste man den Stromverbrauch analysieren und den Zwang kontinierlich den Sensor
in bestimmten Zeitintervallen abzufragen wären ja kontraproduktiv zum Batterie-Betrieb.

Will aber nicht sagen, dass es aus meiner Sicht nicht gehen würde. :D
Also müsste man da noch etwas Aufwand Richtung Batterie-Betrieb treiben...

Die Lib habe ich bis jetzt nur mit dem ESP8266 getestet. Evtl. sind noch einige spezifische Eigenschaften nur auf ESP ausgerichtet (z.B. Wire etc.).
Vermute aber, dass es mit einem ATMEL/Atmega oder STM32 ebenfalls gehen und nach Anpassungen auch lauffähig wäre.

Die Idee eines Batteriebetriebenen Devices sagt mir ebenfalls zu  ;)

Meine Intension war es ja die Lib mit in ESPEasy mit einzubindenn, bin aber gerade mit dem Thema platformIO doch etwas abgeschweift...

ZitatHast Du denn schon Informationen darüber, ob es sich lohnt, einen batteriebetriebenen Sensor mit dem BME680 zu machen?
Nein nocht nicht bewusst, da ja mit ESP unterwegs war.  :(
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 01 September 2019, 13:44:02
Mit platformio + BSEC kommt halt immer was Neues dazu:
Zitat
Processing nodemcuv2 (platform: espressif8266; board: nodemcuv2; framework: arduino)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif8266/nodemcuv2.html
PLATFORM: Espressif 8266 1.7.3 #7507605 > NodeMCU 1.0 (ESP-12E Module)
HARDWARE: ESP8266 80MHz, 80KB RAM, 4MB Flash
PACKAGES: toolchain-xtensa 1.40802.0 (4.8.2), tool-esptool 1.413.0 (4.13), framework-arduinoespressif8266 1.20401.3-puya (2.4.1)
Converting BSEC_Octopus_BME680.ino
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Looking for Adafruit NeoPixel, library in registry
Found: https://platformio.org/lib/show/28/Adafruit NeoPixel
LibraryManager: Installing id=28
Adafruit NeoPixel @ 1.2.4 is already installed
Looking for Adafruit SSD1306, library in registry
Found: https://platformio.org/lib/show/135/Adafruit SSD1306
LibraryManager: Installing id=135
Adafruit SSD1306 @ 1.3.0 is already installed
Found 33 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <Adafruit GFX Library> 1.5.6
|   |-- <SPI> 1.0
|-- <EEPROM> 1.0
|-- <Adafruit NeoPixel> 1.2.4
|-- <Wire> 1.0
|-- <Adafruit SSD1306> 1.3.0
|   |-- <Adafruit GFX Library> 1.5.6
|   |   |-- <SPI> 1.0
|   |-- <SPI> 1.0
|   |-- <Wire> 1.0
|-- <SPI> 1.0
Compiling .pio\build\nodemcuv2\src\BSEC_Octopus_BME680.ino.cpp.o
Linking .pio\build\nodemcuv2\firmware.elf
c:/users/js/appdata/roaming/spb_data/.platformio/packages/toolchain-xtensa@1.40802.0/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\firmware.elf section `.text' will not fit in region `iram1_0_seg'
.pio\build\nodemcuv2\src\BSEC_Octopus_BME680.ino.cpp.o:(.text.setup+0x38): undefined reference to `bsec_config_iaq'
collect2.exe: error: ld returned 1 exit status
*** [.pio\build\nodemcuv2\firmware.elf] Error 1
================================================================================================================================ [FAILED] Took 2.74 seconds ================================================================================================================================

i2cRead und i2cWrite referece not found (sind Klassenmethoden des iaqSensor):
iaqSensor.i2cRead, iaqSensor.i2cWrite

Daran bin ich noch am Knabbern...

firmware.elf section `.text' will not fit in region `iram1_0_seg'

undefined reference to `bsec_config_iaq'

Das kommt davon, wenn man Versionen durcheinander würfelt.

https://github.com/t-pi/Octopus_BSEC/blob/master/BSEC_AQI.ino (https://github.com/t-pi/Octopus_BSEC/blob/master/BSEC_AQI.ino)
https://github.com/t-pi/Octopus_BSEC (https://github.com/t-pi/Octopus_BSEC)
Mit den Arduino-Einstellungen ...

Auch mit Arduino mit konfiguriertem BSEC:
BSEC_Octopus_BME680.ino:296: undefined reference to `bsec_config_iaq'


Ah + Ohhh:
Zitatthe bsec_config_iaq is an encrypted string that cannot be modified by the end user. We validate the entire use-case in the lab and in the field for certain configurations, then release the appropriate configuration strings. If you have different requirements you can contact Bosch Sensortec technical support right here on this forum.

Die Jungs machen es einem nicht gerade einfach ...  :(

Auskommentiert und auf die Konfiguration verzichtet:
  //iaqSensor.setConfig((uint8_t *)bsec_config_iaq);

Sketch uses 329225 bytes (31%) of program storage space. Maximum is 1044464 bytes.
Global variables use 33804 bytes (41%) of dynamic memory, leaving 48116 bytes for local variables. Maximum is 81920 bytes.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 01 September 2019, 23:18:08
Mal zum Testen in ESPEasy, habe die nächst größere PlugIn-ID nach 119 gewählt.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: MC_Arthur am 02 September 2019, 01:11:55
Oh... Werde das morgen gern mal testen .... bin gespannt .

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: MC_Arthur am 02 September 2019, 09:31:53
Zitat von: juergs am 01 September 2019, 23:18:08
Mal zum Testen in ESPEasy, habe die nächst größere PlugIn-ID nach 119 gewählt.

bekomme noch den Fehler in der _P120 ws iss_BME680 angeht.. obwohl ich #471 beachtet hatte...

exit status 1
js_BME680.h: No such file or directory
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 02 September 2019, 12:24:31
Zitatjs_BME680.h: No such file or directory
Dann hast Du die Lib nicht richtig installiert?
Je nach dem Tool, mit dem Du ESPEasy compilierst ...
In platformio ist es etwas schwieriger:
Im cmd-Fenster  "pio.exe lib install <kompletter Pfad zur Lib>" eingeben, um sie lokal ins Projekt einzubinden ...

Geht in der Arduino-IDE das Testprogrämmchen?
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: MC_Arthur am 02 September 2019, 12:33:22
Beitrag #472 war gemeint . Sorry .
Der mit der ZIP.
Diese habe ich runtergeladen und in Arduino ide über Bibliotheken verwalten ... zip hinzugefügt ....

Hatte bisher immer so funktioniert ....

Werde aber noch mal genauer nachschauen ob's auch noch anders geht .

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: MC_Arthur am 02 September 2019, 18:44:55
also ich habe eben nochmal aus der lib das JS_BME680 gelöscht.
habe dann die Zip nochmal runter geladen. und über Bibliothek zip hinzufügen die Datei gewählt. leider kein erfolg.... mach ich noch was falsch? andere Vorgehensweise?
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 02 September 2019, 19:25:54
Bei mir liegt die Lib dort (Arduino): C:\Users\js\Documents\Arduino\libraries\js_BME680
Einfach das zip entpacken und die cpp und .h datei mit dem ExamplesVerzeichnis dor hin kopieren .
Arduino neu starten dann bei Examples /Beispiele "js_BME680" suchen und das Testprogramm aufrufen und Compilieren ...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: MC_Arthur am 02 September 2019, 19:30:09
So schaut's bei mir aus .... komisch ....

Mit Test Programm aufrufen meinst du dann das esp easy mit dem integrierten p120 bme ino ?!
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 02 September 2019, 19:52:50
Nein! Einfach eine neue Arduino-IDE aufmachen.
Da ich eine Englische Version habe:

Über Datei  -> Beispiele  "JS_BME680" suchen dann werden zwei Verzeichnisse angezeigt:
Dann "js_bme680_sample"  aussuchen und mal compilieren -> wenn OK ist die LIB richtig installiert.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 02 September 2019, 20:30:56
Es hat sich ein kleiner Fehler eingeschlichen:


/*******************************************************************************
* Copyright 2017
* Written by Rossen Tchobanski (rosko@rosko.net)
* BSD license, all text above must be included in any redistribution
*
* Release notes:
   Adafruit_BME680 Library v1.0.5 required (https://github.com/adafruit/Adafruit_BME680/tree/1.0.5)
*****************************************************************************/


Letzte Zeile war am Anfang auch ein /*, das führte dazu, dass platformio das Ganze möglicherweise ignoriert hat und die Arduino-IDE nur Fehler wirft ... 

Anmerkung: war im Plugin 119 BME680 I2C Temp/Hum/Barometric/Pressure/Gas Resistence Sensor, also im Playground original so drin ...

Compiliere ich mit _P119_BME680.ino (Adafruit BME680) oder mit _P120_BME680.ino (js_BME680) geht der Compile jeweils ohne Fehler durch, allerdings erzeugt das Binary mit _P120_BME680.ino nur Exceptions
und das _P119_BME680.ino funktioniert.

Auch mit einem platformio-Lauf mit -v Option nichts Ersichtliches oder Aufschlussreiches .....

Ein Vergleich mit beiden Souce-Files lieferte auch nichts Bedeutendes...


Hier das Tesprogramm mit der Lib ist auch I.O. :
> Executing task in folder 190902-215322-arduino-blink: C:\Users\js\AppData\Roaming\SPB_Data\.platformio\penv\Scripts\platformio.exe device monitor <

--- Miniterm on COM6  115200,8,N,1 ---
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
[80.38]   Temperature = 25.11 *C  Pressure = 1011.34 hPa  Humidity = 35.85 %  Gas = 22.66 KOhms  Approx. Altitude = 16.08 m 
[90.38]   Temperature = 25.14 *C  Pressure = 1011.34 hPa  Humidity = 36.28 %  Gas = 25.28 KOhms  Approx. Altitude = 16.08 m 
[100.38]   Temperature = 25.17 *C  Pressure = 1011.30 hPa  Humidity = 35.75 %  Gas = 27.94 KOhms  Approx. Altitude = 15.75 m 
[110.38]   Temperature = 25.17 *C  Pressure = 1011.36 hPa  Humidity = 35.64 %  Gas = 30.44 KOhms  Approx. Altitude = 15.91 m 



Vielleicht weiß jemand Rat?
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 03 September 2019, 17:03:21
jupp, auch mit der Arduino IDE findet er Deine Library nicht. _P119_BME680.ino kompiliert (muss ich noch testen), aber _P120_BME680.ino kompiliert nicht (js_BME680.h not found). Die Beispielprogramme gehen aber beide zu kompilieren. Sehr strange ...

Gruß Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 03 September 2019, 17:12:04
Hallo Peter, danke fürs Probieren
hier ist ein Fingerzeig:
https://www.letscontrolit.com/wiki/index.php/Tutorial_Arduino_Firmware_Upload (https://www.letscontrolit.com/wiki/index.php/Tutorial_Arduino_Firmware_Upload)
und hier:
https://waschto.eu/espeasy-eigene-oder-zusaetzliche-plugins-einbinden/ (https://waschto.eu/espeasy-eigene-oder-zusaetzliche-plugins-einbinden/)

https://www.bastelgarage.ch/index.php?route=extension/d_blog_module/post&post_id=15 (https://www.bastelgarage.ch/index.php?route=extension/d_blog_module/post&post_id=15)

https://diyprojects.io/esp-easy-develop-plugins/#.WUFqgZDyuUm (https://diyprojects.io/esp-easy-develop-plugins/#.WUFqgZDyuUm)

Selecting the plugin sets

In version ESPEasy v2 or higher its possible to select different plugin sets. Since we're using Arduino IDE instead of Platformio, its neccesary to select them in ESPEasy.ino.

In the top of the .ino file you find the defines you can uncomment to enable a plugin set:

//build all the normal stable plugins
//#define PLUGIN_BUILD_NORMAL

//build all plugins that are in test stadium
//#define PLUGIN_BUILD_TESTING

//build all plugins that still are being developed and are broken or incomplete
//#define PLUGIN_BUILD_DEV


Habe bei mir die Zeile  #include JS_BME680 einfach gelöscht und die Lib durch die IDE setzen lassen ..
dann gings ... strange (:-((
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 03 September 2019, 17:42:52
Stellt sich natürlich die Frage: warum geht das Plugin _P119... ohne Änderung?
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: sash.sc am 03 September 2019, 17:46:18
Bei espeasy gibt es eine Datei, wo die plugins mit Nummer bzw Bezeichnung eingetragen werden müssen, glaube ich.

Gruß Sascha

Gesendet von meinem MI 9 mit Tapatalk

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 03 September 2019, 18:30:51
hallo Sascha,
dann müsste ein Umbenennen der Datei auf _119P.... funktionieren.
Da ich noch Deubgausgaben in der Lib habe könnte das noch Probleme geben.
Wichtig wäre erst mal ein funtionierender Compile auf dem Esp.

//#define USES_P117   // Neopixels
//#define USES_P117   // Nextion
#define USES_P118   // CCS811
   #define USES_P119   // BME680
#define USES_P120   // Thermocouple
#define USES_P121   // Candle
   #define USES_P122   // NeoPixel       (MERGED?)
#define USES_P123   // NeoPixel_Clock  (MERGED?)
#define USES_P124   // NeoPixelBusFX
...

in define_plugin_sets.h

Aha, deshalb!
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 03 September 2019, 20:47:39
Ok, ein Schritt weiter.
Es reicht natürlich nicht, nur das File umzubenennen, sondern die 120_ids mussten auch wieder zurück auf 119.

Mit der produtiv-platformio-Konfiguration stehe ich noch auf Kriegsfuß, aber wenigstens ein Compile
der abgespeckten platformio.ini-Version war erfolgreich (sonst dauert die Erstellung aller Varianten doch etwas länger...):

Environment        Status    Duration
-----------------  --------  ------------
custom_ESP8266_4M  FAILED    00:00:10.711
normal_ESP8266_4M  SUCCESS   00:00:27.040
d1_mini                        FAILED    00:00:00.849

Nach einem Clean:
Environment        Status    Duration
-----------------  --------  ------------
custom_ESP8266_4M  SUCCESS   00:00:24.235
normal_ESP8266_4M  SUCCESS   00:00:26.106
d1_mini            FAILED    00:00:00.854

Es kommen zwar noch Exceptions, aber die Lib wird angesprochen ... 
Dann kommt es noch zum Konflikt, möglicherweise mit der seriellen Debugausgabe.

oid JS_BME680Class::do_begin()
{
    DEBUG_BEGIN;    //Serial.begin(115200); 
   
    delay(3000);   // wait debug console to settle

    DEBUG_PRINT("");

    DEBUG_PRINT(F("*** Started!"));


Aber immerhin wird die Lib gestartet, dann kann ich morgen weitermachen und darauf aufbauen ... ;D :)

Anbei die auf 119 umfunktionierte 120er...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 04 September 2019, 21:02:37
ZitatHauptproblem: Im Laufe der Zeit sammeln sich so einige Libs im \libraries-Ordner von Arduino an.
Das gibt bei Arduino nur Ärger mit gleichen Lib-Header-Namen, wie in meinem Fall ...

Eine bestehende Konfiguration von einer vorigen ESPEasy-Installation wurde einfach übernommen ....auch gut ...
Ggf. muss ich die Lib noch prüfen und ggf. Timings noch klären, aber fürs erste gehts es schon mal ... der TVOC-Wert wird noch nicht übergeben, liefert "nan" im Moment.
Mal schauen woran das liegt ... Also etwas Kleinarbeit ist von Nöten ... immerhin mal ein Anfang!  ;) :D
[/list]
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 04 September 2019, 21:14:45
.. und die erzeugte ESP8266-Binary (0x76 I2C-Adresse!)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 04 September 2019, 21:18:59
Hallo Jürgen,

Zitat von: juergs am 04 September 2019, 21:02:37

  • in Arduino mit "add file: _P119_BME680.ino" hinzugefügt
und ich dachte, die IDE nimmt automatisch alle Dateien mit der Endung .cpp/.h und .ino automatisch mit rein?
Auf jeden Fall: Gratulation zum (Teil-)Erfolg!

Gruß Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 04 September 2019, 21:27:16
Hallo Peter,
vielen Dank , war wirklich ein hartes Stück Arbeit!

Muß noch mit mehr Debugausgaben schauen wie sich das PlugIn bezüglich Daten verhält ...
Aber bin erst mal froh, ein gelungenen Compile fabriziert zu haben.

Hauptproblem: Im Laufe der Zeit sammeln sich so einige Libs im \libraries-Ordner von Arduino an.
Das gibt bei Arduino nur Ärger mit gleichen Lib-Header-Namen, wie in meinem Fall ...

Aber mit der gezeigten Methode kann man sich die Libs ja passend zurechtbiegen ...  ;)

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 05 September 2019, 19:41:05
Nur Tracing eingebaut und ein paar kleine Änderungen:
INIT : Booting version: (custom) (ESP82xx Core 2_5_0, NONOS SDK 3.0.0-dev(c0f7b44), LWIP: 2.1.2)
13054 : INIT : Free RAM:35616
13055 : INIT : Warm boot #2 Last Task: Background Task - Restart Reason: External System
13061 : FS   : Mounting...
13088 : FS   : Mount successful, used 75802 bytes of 957314
13101 : CRC  : No program memory checksum found. Check output of crc2.py
13145 : CRC  : SecuritySettings CRC   ...OK
js_bme680.cpp:435: void JS_BME680Class::do_begin()
js_bme680.cpp:488: void JS_BME680Class::do_begin()
js_bme680.cpp:231: bme680VocValid = 0
js_bme680.cpp:235: void JS_BME680Class::getBme680Readings()
js_bme680.cpp:231: bme680VocValid = 0
js_bme680.cpp:235: void JS_BME680Class::getBme680Readings()
js_bme680.cpp:231: bme680VocValid = 0
js_bme680.cpp:235: void JS_BME680Class::getBme680Readings()
js_bme680.cpp:231: bme680VocValid = 0
js_bme680.cpp:235: void JS_BME680Class::getBme680Readings()
js_bme680.cpp:231: bme680VocValid = 0
js_bme680.cpp:235: void JS_BME680Class::getBme680Readings()
js_bme680.cpp:231: bme680VocValid = 0
js_bme680.cpp:235: void JS_BME680Class::getBme680Readings()
js_bme680.cpp:231: bme680VocValid = 0
js_bme680.cpp:235: void JS_BME680Class::getBme680Readings()
js_bme680.cpp:231: bme680VocValid = 0
js_bme680.cpp:235: void JS_BME680Class::getBme680Readings()
js_bme680.cpp:231: bme680VocValid = 0
js_bme680.cpp:235: void JS_BME680Class::getBme680Readings()
js_bme680.cpp:231: bme680VocValid = 0
js_bme680.cpp:235: void JS_BME680Class::getBme680Readings()
js_bme680.cpp:231: bme680VocValid = 0
js_bme680.cpp:235: void JS_BME680Class::getBme680Readings()
js_bme680.cpp:231: bme680VocValid = 0
js_bme680.cpp:235: void JS_BME680Class::getBme680Readings()
js_bme680.cpp:231: bme680VocValid = 0
js_bme680.cpp:235: void JS_BME680Class::getBme680Readings()
js_bme680.cpp:231: bme680VocValid = 0
js_bme680.cpp:235: void JS_BME680Class::getBme680Readings()
js_bme680.cpp:231: bme680VocValid = 0
js_bme680.cpp:235: void JS_BME680Class::getBme680Readings()
js_bme680.cpp:231: bme680VocValid = 0
js_bme680.cpp:235: void JS_BME680Class::getBme680Readings()
js_bme680.cpp:268: void JS_BME680Class::getBme680Readings()
js_bme680.cpp:283: void JS_BME680Class::getBme680Readings()
js_bme680.cpp:295: tVoc = 228.04
js_bme680.cpp:306: str_tVoc = 228
js_bme680.cpp:331: str_ratio = 1.0859

:D

Benutze das Ocotpus-Board mit BME280 auf Adresse 0x77 (!), deshalb der BME680 mit pemue's Sensor-Platine (ohne Pullups, vielleicht auf Board ...).
Die Trace-Lib von: https://github.com/bblanchon/ArduinoTrace (https://github.com/bblanchon/ArduinoTrace)
Lasse das mal länger laufen und schaue mal auf die "Langzeitstabilität", bzw. der neue Sensor braucht  auch 4 Tage um sich einzubrennen...   ;)

Da könnte ich mir in Verbindung mit Neopixel auch etwas vorstellen ...  ;)

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 05 September 2019, 20:10:18
Die lauffähige ESPEasy-Version mit BME680 und TVoc-Ausgabe !
Wenige Debug-Ausgaben sind aktiv.

ESP12E-----------BME680 @ 0x76 (SDO = GND)
GND------------>GND
3.3V------------>3.3V
D2------------>SDA
D1------------>SCL


Falls jemand mit testen möchte ...  und die Implementierung in FHEM schildern möchte (MQTT ?)... ;)

Infos zu ESPEasy: https://waschto.eu/easyesp/ (https://waschto.eu/easyesp/) . HowTo ESPEasy Konfiguration und Live-Demo.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 05 September 2019, 20:20:00
Hallo Jürgen,

da könnte man doch mal folgende Kombinationen testen:
- nanoLGW mit BME680
- mapleMini mit BME680 und Thommy's Sketch
- WeMosD1 mini mit BME680 und Deinem Sketch
- wenn ich MQTT eingerichtet bekomme, dann noch locutus' TVOC Sensor von AMS (CCS811)
Muss mal schauen, was ich davon hinbekomme.

Gruß Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 05 September 2019, 20:25:59
Hallo Peter,

gerne, die nanoLGW ohne den RFM69 wäre mir auch in den Sinn gekommen ;-)

Wenn's klappt wäre das super.  Mit der Lib würde das aber auch auf dem 328er gehen, ggf. mit CC1101 etc. (Dirks Universal-Sensor...)
Der Maple mit dem Air602-WiFi-Sender ... oho!

Thommy's Sketch? Ist mir entgangen ...

Die jetzige Binary ist als Target: "Wemos D1 und D2 mini" compiliert... allerdings nur Adresse: 0x76.
Das Umschalten auf 0x77  müsste in  ESPEasy auch klappen, wenn ich es eingebaut bekomme  ...

Wenn ich am WoE mehr Zeit habe, liefere ich die Sourcen dazu ...

Allerdings muss ich noch Erfahrungen über das Timing-Verhalten des ESPEasy-Subsystems wie z.B. in Verbindung mit anderen Sensoren
sammeln.... und das interne Logging tiefer ergründen: z.B. für die Logausgabe im Browser.
Geht:
4923376: EVENT: Bme680#Temperature=23.23
4923403: EVENT: Bme680#Humidity=40.09
4923429: EVENT: Bme680#Pressure=1009.12
4923454: EVENT: Bme680#TVoc=201.09
4933763: EVENT: Bme680#Temperature=23.23
4933825: EVENT: Bme680#Humidity=40.09
4933856: EVENT: Bme680#Pressure=1009.12
4933881: EVENT: Bme680#TVoc=205.70
4934767: WD : Uptime 82 ConnectFailures 0 FreeMem 23776 WiFiStatus 3
4943373: EVENT: Bme680#Temperature=23.23
4943399: EVENT: Bme680#Humidity=40.09
4943424: EVENT: Bme680#Pressure=1009.12
4943451: EVENT: Bme680#TVoc=205.70


Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 06 September 2019, 23:03:08
.. und die Rules (https://espeasy.readthedocs.io/en/latest/Rules/Rules.html) passend für Neopixel und TVoc ansteuern ...

Meine eigene Interpretation zum Testen ..  ;)
//--- red
on Bme680#TVoc>=400 do
TaskValueSet 3,1,0
TaskValueSet 3,2,0
TaskValueSet 3,3,1
if [Bme680#TVoc] < 500
   neopixel, 1,255,0,0
endif
endon

//--- orange
on Bme680#TVoc>=300 do
TaskValueSet 3,1,0
TaskValueSet 3,2,0
TaskValueSet 3,3,1
if [Bme680#TVoc] < 400
     neopixel, 1,255,102,204
endif
endon

//--- yellow
on Bme680#TVoc>=200 do
TaskValueSet 3,1,0
TaskValueSet 3,2,1
TaskValueSet 3,3,0
if [Bme680#TVoc] < 300
   neopixel, 1,255,96,0
endif
endon

//--- green
on Bme680#TVoc>=100 do
TaskValueSet 3,1,1
if [Bme680#TVoc] < 200
   neopixel, 1,0,255,50
endif
endon

//--- no TVOC activity
on Bme680#TVoc=0 do
TaskValueSet 3,1,0
neopixel, 1,255,255,255
endon


Auffallend die hohe Abweichung des BME280-Sensors, der auf der Octopusplatine sitzt.
Der BME680-Wert ist wahrscheinlicher ...  :)

ZitatLuftdruck
    1005,7 hPa (1023 bezogen auf NN)
Luftfeuchtigkeit
    54,9 %
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: Tobias am 07 September 2019, 08:33:25
Hi,
es gibt verschiedene Breakout Boards mit dem BME680. Macht das einen Unterschied?
Hier für 20€ aus Deutschland: https://shop.pimoroni.de/products/bme680-breakout
Für 12€ aus China: https://www.ebay.de/itm/CJMCU-680-BME680-Atmospheric-Pressure-Sensor-Temperature-Humidity-BMP280-SI7021/401739634718?hash=item5d898c581e

Die China-Variante hat noch zusätzlich einen SDO und CS Pin, die pirimoni Variante nicht.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 07 September 2019, 08:45:02
Hallo Tobias,

Zitat von: Tobias am 07 September 2019, 08:33:25
es gibt verschiedene Breakout Boards mit dem BME680. Macht das einen Unterschied?
nein, es muss nur der Adress Pin mit rausgeführt sein.
Ich habe mal eines bei Waterott gekauft, das war relativ preiswert und schnell da.

Zitat von: Tobias am 07 September 2019, 08:33:25
Die China-Variante hat noch zusätzlich einen SDO und CS Pin, die pirimoni Variante nicht.
Der Baustein kann SPI und I2C, hier wird nur I2C verwendet, daher werden die extra Pins in unserer Anwendung nicht verwendet.

Gruß Peter
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 07 September 2019, 13:25:44
Hallo Tobias,

den BME680 alleine bekommt man für ca. 9,45 € + Porto , dh. Breakboards < 20€ wären eigentlich preislich  vertretbar.
Lohnt sich dafür fast nicht ein Board selbst zu machen und zu bestücken ...
Reich-elt bietet auch ein Breakoutboard für den BME680 an ...


Zum Sensor selbst: Habe meiner Lib noch einen Kalman-Filter (https://github.com/TKJElectronics/KalmanFilter) auf den tVoc-Rohwert spendiert.

Blau = tVOC (Rohwert)
Rot  = tVoc (Kalman gefiltert)
Grün = Temperatur
Orange = Luftfeuchte

In EspEasy sind leider nur 4 Sensorwerte möglich, so dass ich noch eine Möglichkeit in den Device-Konfigurationsdialog einbauen muss,
um den gefilterten Wert, statt dem tVoc-Rohwert anzuzeigen, bzw. zwischen beiden zu wählen.

Damit müssten auch noch zusätzlich I2C-Adress-Auswahl + T-Offset + H-Offset - Parametrierung hinzukommen.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 08 September 2019, 09:55:20
Gerade fast Off-Topic:  Basic setup for BME680 and NodeMCU (ESP12E) + platformIO (https://www.popsblog.me/post/19) ;)


Die bisher günstigste Methode zum Einsatz des BME680:   =>  gy-mcu680v1 (https://www.hackster.io/xxlukas84/bme680-gy-mcu680v1-indoor-air-quality-meter-901d02) (seriellle Anbindung, scheinbar mit BSEC). Dafür gibt es aber noch kein ESPEasy-Image/Plugin (aber eine Idee (https://forum.fhem.de/index.php/topic,78619.msg881365.html#msg881365), Idee2 (https://github.com/adrianalin/bme680_nodemcu_socketio) dafür...) 
Muss aber erst mal die Parametriermöglichkeiten in einem ESPEasy-Plugin verstehen und anwenden ... 
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 08 September 2019, 15:42:36
Geschafft, die BME680-ESPEasy-Konfiguration des Devices steht!
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 08 September 2019, 17:07:01
Hier die erste Version mit Allem  ;)

Der Debug-Output sieht sehr gut aus:

723 : BME680  : init
726 : BME680  : PLUGIN_READ initialized.
728 : BME680  : PLUGIN_READ-Settings: I2C: 118 Elevation: 180 Filter: 1 Toffs: 1 Hoffs: 1 Plot: 0 Debug: 1
*** JS_BME680Class started!
       JS_BME680.resitance beeing zero! First Reading?
       JS_BME680.bme680VocValid not ready! Wait about 300 sec (5 min) to warm up ... 277
  JS_BME680.bme680VocValid not ready! Wait about 300 sec (5 min) to warm up ... 267
JS_BME680.bme680VocValid not ready! Wait about 300 sec (5 min) to warm up ... 257       
. . .
JS_BME680.bme680VocValid not ready! Wait about 300 sec (5 min) to warm up ... 67
JS_BME680.bme680VocValid not ready! Wait about 300 sec (5 min) to warm up ... 57
JS_BME680.bme680VocValid not ready! Wait about 300 sec (5 min) to warm up ... 47
JS_BME680.bme680VocValid not ready! Wait about 300 sec (5 min) to warm up ... 37
JS_BME680.bme680VocValid not ready! Wait about 300 sec (5 min) to warm up ... 27
JS_BME680.bme680VocValid not ready! Wait about 300 sec (5 min) to warm up ... 17
JS_BME680.bme680VocValid not ready! Wait about 300 sec (5 min) to warm up ... 7
--------------------------------------
Timestamp: 302.62
tVoc: 128.88
tVocEst:                   64.44
  Approx (tV): 128.88
Approx (tV2): 12.89
Ratio: 1.00
Ratio_log: 0.00
ABC_base: 8355825
Abs_Hum: 10.89
Resistance (raw): 109263
Resistance (filt.): 109263.00
Temp: 23.64
Hum: 10.89
Press: 1004.77
Dewpoint: 12.95
Alt:         25820.40
T-Offs: 1.00
H-Offs: 0.00
--------------------------------------


Bis auf die Berechnung der Höhe (die in ESPEasy nicht angezeigt wird ....)  ;)

Durch setzen des Filters wird der gefilterte/geglättete TVOC-Wert ausgegeben.
Das macht bei der Empfindlichkeit des Sensors auf Luftzug auch Sinn ....
Änderungen an Konfigurationen werden nach TOOLS -> Reboot übernommen.

Anleitung + Code: https://github.com/juergs/ESPEasy_BME680_TVOC (https://github.com/juergs/ESPEasy_BME680_TVOC)

Mit Arduino compiliert (siehe auch Hinweise dazu auf github)!

Bei Fragen, fragen .... Verwendung ohne Gewähr  :D ;D

Anmerkung:
Die Aufwärmzeit ist auf 5 Minuten konfiguriert, in dieser Zeit kommt der Wert TVOC = 0.
Danach erst sollten TVOC Werte angezeigt werden!  Also etwas Geduld beim Anwerfen ...


Grüße + viel Spaß beim Testen.
Jürgen 
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 11 September 2019, 21:25:33
BME680 vs. Dallas 18B20 (12Bit) (https://www.letscontrolit.com/wiki/index.php/Dallas_DS18b20)

Falls die Dezimale eine Rolle spielen sollten ...  ;D ;)
Der BME war noch in der 5-Minuten Aufwärmphase ... deshalb kein TVOC-Wert.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 11 September 2019, 21:53:32
... und ein paar super Kurven ( nein, nicht 90-60-90)  ;D

IAQ (mit BSEC, nanoLGW) vs. TVOC (SLINK)...
Fehlt noch die MQTT-Bridge zu ESPEasy ... 
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: twenta am 12 September 2019, 10:47:25
Zitat von: juergs am 08 September 2019, 17:07:01

Anleitung + Code: https://github.com/juergs/ESPEasy_BME680_TVOC (https://github.com/juergs/ESPEasy_BME680_TVOC)

Mit Arduino compiliert (siehe auch Hinweise dazu auf github)!

Bei Fragen, fragen .... Verwendung ohne Gewähr  :D ;D

...
Grüße + viel Spaß beim Testen.
Jürgen

Hi,

vielen Dank für die tolle Arbeit, kommt gerade recht für meine China Lieferung des dfrobot bme680 boards:)
Leider blinkt mein D1 mini (azdelivery) nach dem flashen nur alle 6 Sekunden. Ich vermute mal, dass mein esp8266 nicht mit dem sketch klarkommt (leider habe ich keine Auflistung für das interpretieren blinkender LEDs gefunden). Daher habe ich mich auch (erstmals) an ein kompilieren gemäß Deiner github Anleitung getraut, leider mit dem selben Ergebnis. Mit welchen boards hast Du denn bisher positive Rückmeldung gehabt/bekommen?
Als Warnung, ich bin raspi veteran, aber noch esp Neuling...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 12 September 2019, 11:27:14
Hi twenta,
diese Version arbeitet im Moment nur mit einer Sensoradresse von 0x76 zusammen. Das Blinken bedeutet, dass Dein D1 einen Reset auslöst und neu startet.
Das Verhalten werde ich noch Ändern.

Der Sketch sollte mit nodeMCU und Wemos D1&D2 mini ESP8266  funktionieren.

Dieser Breakout liegt z.B. auf 0x77 (!) : https://learn.adafruit.com/adafruit-bme680-humidity-temperature-barometic-pressure-voc-gas/arduino-wiring-test (https://learn.adafruit.com/adafruit-bme680-humidity-temperature-barometic-pressure-voc-gas/arduino-wiring-test)

Also sicherstellen, dass der Adress-Pin auf Gnd liegt.
Du kannst das prüfen, wenn Du erst mal ein BME680-Standard Sketch (z.B. Adafruit/dfrobot) zum Testen benutzt, ob Deine Anordnung funktioniert und überhaupt Werte liefert.
Beobachte auch den Output im Seriellen Monitor.

In Arduino SPIFF = "1M" konfiguriert?
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 12 September 2019, 19:46:08
Etwas "neue" Theorie für den BME + ESP32: https://github.com/G6EJD/BME680-Example (https://github.com/G6EJD/BME680-Example)

--------------------------------------------------------------
Sensor Readings:
  Temperature = 25.98°C
     Pressure = 1014.88 hPa
     Humidity = 48.6%
          Gas = 361708.56 ohms

Qualitative Air Quality Index  comprised of 21% Humidity and 75% Gas
IAQ Score = 20, air quality is Good
--------------------------------------------------------------
Sensor Readings:
  Temperature = 26.45°C
     Pressure = 1014.88 hPa
     Humidity = 48.0%
          Gas = 363268.66 ohms

Qualitative Air Quality Index  comprised of 21% Humidity and 75% Gas
IAQ Score = 20, air quality is Good
--------------------------------------------------------------
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: twenta am 13 September 2019, 01:13:32
Zitat von: juergs am 12 September 2019, 11:27:14

diese Version arbeitet im Moment nur mit einer Sensoradresse von 0x76 zusammen. Das Blinken bedeutet, dass Dein D1 einen Reset auslöst und neu startet.
Also sicherstellen, dass der Adress-Pin auf Gnd liegt.
D
u kannst das prüfen, wenn Du erst mal ein BME680-Standard Sketch (z.B. Adafruit/dfrobot) zum Testen benutzt, ob Deine Anordnung funktioniert und überhaupt Werte liefert.
Beobachte auch den Output im Seriellen Monitor.

Hallo Jürgen,

danke mit diesen Hinweisen habe ich es hinbekommen. Außerdem war mir nicht bewusst, dass die von mir genutzte "post flash action" (WIFI, WIFI passwort) folgenlos waren und der d1 mini im AP modus gestartet ist. Ich beobachte nun mal, was er so an Daten liefert :)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 13 September 2019, 22:13:14
Habe einige Verbesserungen eingebaut:
Jetzt sollte auch die Adresse 0x77 für den BME einsetzbar sein.
Dafür habe ich die Initialiserung des BME an eine passendere Stelle gelegt.
Das hat den Vorteil, dass ein nicht angeschlossener  BME680 in ESPEasy keine Exceptions mehr erzeugt
und sich ESPEasy aufrufen läßt, um über den Device-Konfiguratins-Dialog mittels Adress-Auswahl, Device-ENABLE-Checkbox gesetzt und SUBMIT-Button gedrückt, konfigurieren lässt.
Erst dann läuft erst die Initialisierung des BMEs los.
Die Zykluszeit habe ich von 10 auf 12s hochgesetzt, da dies Bosch in https://ae-bst.resource.bosch.com/media/_tech/media/application_notes/BST-BME680-AN014.pdf (https://ae-bst.resource.bosch.com/media/_tech/media/application_notes/BST-BME680-AN014.pdf)
auf Seite 10 vorschlägt. Messwerte werden im 12s Rythmus vom BME gelesen, aber erst nach der konfigurierten Zyklus-Zeit (default=60s) an die ESPEasy-Oberfläche geliefert.
Alle anderen Änderungen wie z.B. Plot + Debugausgabe werden erst nach einem Reset wirksam ...
* Github Repository (https://github.com/juergs/ESPEasy_BME680_TVOC) ist aktualisiert.  :D
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 14 September 2019, 20:59:05
Vergleich der TVOC und IAQ-Berechnung von G6EJD (https://github.com/G6EJD/BME680-Example) mit IAQ-Bewertungen von 20 (gut) .. 500 (schlecht)

Offenes Fenster  -> geschlossen ...

TVOC vs. IAQ
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 15 September 2019, 12:55:45
Verbesserte ESPEasy-Rules mit WS2812B an D5 (GPIO14):

Zitat//--- red
on bme680#TVoc>=400 do
if [bme680#TVoc] < 500
   neopixel, 1,255,0,0
endif
endon

//--- orange
on bme680#TVoc>=300 do
if [bme680#TVoc] < 400
     neopixel, 1,255,153,0
endif
endon

//--- yellow
on bme680#TVoc>=200 do
if [bme680#TVoc] < 300
   neopixel, 1,255,255,0
endif
endon

//--- green
on bme680#TVoc>=100 do
if [bme680#TVoc] < 200
   neopixel, 1,0,255,0
endif
endon

//--- no TVOC activity (blue)
on bme680#TVoc=0 do
neopixel, 1,0,0,255
endon
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 15 September 2019, 17:08:17
Hat jemand ein Hinweis/Konfiguration für ESPEasy-BMEx80 über mosquitto /MQTT2_SERVER   oder FHEM_HTTP an FHEM?
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 15 September 2019, 18:37:01
Zur Not, geht auch Jörgs SLINK-Protokoll (zusätzliche FHEM-Module für UDP-Broadcast-Empfang (https://github.com/herrmannj/AirQuality/tree/master/FHEM)) (!) von ESP-Easy über UDP an FHEM!

;D :D
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 15 September 2019, 20:49:32
Hier die ESPEasy-Version, um SLINK-UDP-Wahlmöglichkeit ergänzt.

Ohne MQTT oder FHEM_HTTP-Protokoll ...

Achtung: zusätzliche Module (siehe Antwort #517) für FHEM-Datenempfang erforderlich!
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: Tobias am 16 September 2019, 08:46:54
ohne es getestet zu haben, über CONTROLLER kann man doch eigentlich einen Mosquitto Client definieren..?? Oder hast du es explizit nicht eingebunden?
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 16 September 2019, 09:18:28
Hallo Tobias,

ja habe die Controller-Typ-Definitionen gesehen und auch ausprobiert. (Man sieht es in #518 in der Definition des BME680-Devices ...)
Auf dem Pi habe ich mosquito auf 1883 und MQTT2_FHEM_Server auf 1884 definiert.
Dorthin kann ich auch Messages "manuell" schicken ...

Mir geht es eigentlich um die Konfiguration der Controller ... und des MQTT2_Devices in FHEM und die Übermittlung der vier Messdaten ...
Wenn Du ein Beispiel-Tipp hast?

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 16 September 2019, 21:32:35
MQTT-Infos zu MQTT2_FHEM_Server + Device hier: https://wiki.fhem.de/wiki/Sonoff#MQTT_und_TASMOTA (https://wiki.fhem.de/wiki/Sonoff#MQTT_und_TASMOTA)
und Attribut "autocreate = 1"
https://www.letscontrolit.com/wiki/index.php?title=ESP_Easy_web_interface#Controllers_page_.28version_2.0.2B.29 (https://www.letscontrolit.com/wiki/index.php?title=ESP_Easy_web_interface#Controllers_page_.28version_2.0.2B.29)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: twenta am 17 September 2019, 00:13:48
Hallo Jürgen,

ich bin mir nicht sicher, ob ich Dein Problem verstehe, da zumindest in ESPEasy die Konfig doch recht einfach ist:

Hier eine Beschreibung, wie ich es mosquitto als mqtt2 client in fhem angelegt habe...
Unter Controller Deine IP des mqtt servers (vorzugsweise mosquito) eingeben (siehe mqtt1.png)
Dann unter Devices->Data aquisition->Send to Controller die checkbox der Nummer des gerade erstellten mqtt servers auswählen.

Unter fhem wird es dann ziemlich fummelig ich habe es mit viel trial&error hinbekommen (mqtt2_client, https://fhem.de/commandref.html#MQTT2_CLIENT):
Ich habe ein Device mqtt2_client mit dem Namen mqttBorker angelegt
define <name> MQTT2_CLIENT <host>:<port>
und als attribs autocreate simple und subscription # gewählt (siehe mqtt2.png)

Nun fehlt noch das mqtt2_device (https://fhem.de/commandref.html#MQTT2_DEVICE):
Ich bin mir nicht mehr sicher, ob nun das mqtt2_device automatisch angelegt wurde (siehe mqtt3.png).
Hier hilft es dass attrTemplate A_00_MQTT2_CLIENT_general_bridge (oder 0_00_General_Info, bin mir nicht mehr ganz sicher... einfach ausprobieren) auszuwählen.

Ich hoffe das hilft...
Grüße
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 17 September 2019, 12:35:25
Zitat von: juergs am 15 September 2019, 17:08:17
Hat jemand ein Hinweis/Konfiguration für ESPEasy-BMEx80 über mosquitto /MQTT2_SERVER   oder FHEM_HTTP an FHEM?

Hallo Jürgen,

hätte da was:
UniversalSensor V3.3 kann jetzt MQTT auf ESP8266 (WiFi) und natürlich werden jetzt auch CO2 und VOC über die BSEC Lib angezeigt  8)
Hab nur das Webinterface zum konfigurieren nicht ganz fertig, sonst läuft alles !
Wäre was zum testen auf dem NanoLGW  ohne RFM69 ;)
Der Sensor sendet per WLAN die MQTT Daten an meinen RaspberryPi auf dem Mosquitto (und Fhem) als MQTT-Broker läuft.
Fhem holt sich die Daten dann von Mosquitto. Fertig  ;)
Super easy und vor allem sehr einfach erweiterbar !

anbei mal ein paar Impressionen ...

Übrigends, Respekt und Hut ab für Deine Arbeit an ESP Easy !!!

Gruß Thomas
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: hdgucken am 17 September 2019, 13:10:07
Hier hab ich mal eine BME280 Konfiguration von mir.
D1 mini mit ESP Easy sendet via MQTT an Mosquitto, fhem holt die Daten von Mosquitto.

siehe Bildchen ...

Gruß Thomas

hier noch die fhem Konfig:
define BME280_mqtt_sensor MQTT_DEVICE
attr BME280_mqtt_sensor IODev MQTT_Broker
attr BME280_mqtt_sensor alias BME280-Sensor
attr BME280_mqtt_sensor autoSubscribeReadings Controller_/BME280/+ <- Diese Zeile sucht und trägt alle Topics automatisch ein, die unter Controller_/BME280/ gefunden werden !
attr BME280_mqtt_sensor group Sensoren
attr BME280_mqtt_sensor room MQTT,Sensoren
attr BME280_mqtt_sensor stateFormat temperature °C, humidity %, pressure mBar


Diese Zeilen werden automatisch von autosubscribeReadings generiert ;o) :

attr BME280_mqtt_sensor subscribeReading_humidity Controller_Tor_Einfahrt/BME280/humidity
attr BME280_mqtt_sensor subscribeReading_pressure Controller_Tor_Einfahrt/BME280/pressure
attr BME280_mqtt_sensor subscribeReading_temperature Controller_Tor_Einfahrt/BME280/temperature
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 17 September 2019, 17:33:20
Hallo Thomas,

C-O-O-L !

:) :D

Danke Allen für die MQTT-Infos!
Die Infos dazu sind sehr vielfältig und müssen erst mal auf Brauchbarkeit und Anwendbarkeit auf den BME beurteilt werden.

Die Fhem-Seite hatte mir als MQTT-Neuling bisher noch gefehlt und die Konfiguration "LWL" und der passende Controller-Typ etc.
Insbesondere wg. Authentifizierung beim Broker und "Connection Lost"-Meldungen etc ...
... und "autoSubscribeReadings"  ;)

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 17 September 2019, 23:24:47
Der Connect gegen mosquito geht mit Authentifizierung durch:
Zitat88257606: EVENT: Clock#Time=Tue,23:15
88258701: BME680-Read: performed measurement!
88258705: BME680-Read: get filtered value.
88258717:
88258724: EVENT: bme680#Temperature=24.34
88258814: EVENT: bme680#Humidity=56.33
88258871: EVENT: bme680#Pressure=1005.73
88258971: EVENT: bme680#TVOC=902.45
88258983: ACT : neopixel, 1,255,0,128
88261974: WD : Uptime 1471 ConnectFailures 0 FreeMem 22560 WiFiStatus 3
88274501: MQTT : Intentional reconnect
88274545: MQTT : Connected to broker with client ID: ESP_Easy_2
88274551: Subscribed to: ESP_Easy/#
88274553: EVENT: MQTT#Connected
88275950: BME680-Read: performed measurement!
88275954: BME680-Read: get filtered value.
88275967:
88275972: EVENT: bme680#Temperature=24.34
88276066: EVENT: bme680#Humidity=56.33
88276125: EVENT: bme680#Pressure=1005.73
88276182: EVENT: bme680#TVOC=904.41
88276194: ACT : neopixel, 1,255,0,128
88291974: WD : Uptime 1472 ConnectFailures 0 FreeMem 22480 WiFiStatus 3

Client mosqsub/22105-raspberry received PUBLISH (d0, q0, r0, m0, 'ESP_Easy/bme680/TVOC', ... (5 bytes))
949.1
Client mosqsub/22105-raspberry sending PINGREQ
Client mosqsub/22105-raspberry received PINGRESP
Client mosqsub/22105-raspberry received PUBLISH (d0, q0, r0, m0, 'ESP_Easy/bme680/Temperature', ... (4 bytes))
24.3
Client mosqsub/22105-raspberry received PUBLISH (d0, q0, r0, m0, 'ESP_Easy/bme680/Humidity', ... (4 bytes))
56.3
Client mosqsub/22105-raspberry received PUBLISH (d0, q0, r0, m0, 'ESP_Easy/bme680/Pressure', ... (6 bytes))
1005.7
Client mosqsub/22105-raspberry received PUBLISH (d0, q0, r0, m0, 'ESP_Easy/bme680/TVOC', ... (5 bytes))
950.5


Das Senden auf den mosquitto-Server klappt schon mal. :D   (.. aber nicht auf den MQTT2_FHEM_Server)
Mit einem recht hohen TVOC Wert ...  :(
Aber: mir dämmert! -> Habe schon seit langem kein FHEM-Update mehr gemacht! Es fehlt mit das MQTT-Broker-Device und die Attribute!
Muss also erst mal alles sichern ... dann updaten....
Ggf. geht es morgen hier weiter: https://wiki.fhem.de/wiki/MQTT#FHEM-externer_Broker (https://wiki.fhem.de/wiki/MQTT#FHEM-externer_Broker)

Grüße,
Jürgen

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 19 September 2019, 20:00:02
Bevor ich meine größere Abhandlung über meine MQTT-Erfahrungen vorstelle,  ;D
hier mal ein Zwischen-Report für drei -SLINK-Instanzen (2*ESPEasy und 1*nanoLGW)
und einem Universal-Sensor, unten mit BSEC.
Anmerkung: im gleichen Raum im 2m Umkreis ...
Kalman-Filter gegen gleitenden Mittelwert.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 19 September 2019, 20:49:18
Hier meine erste funktionierende MQTT-Konfiguration mittels mosquitto-Broker:

define myBroker MQTT2_CLIENT 192.168.xxx.yyy:1883
setuuid myBroker 5d827ab6-f33f-72b0-8081-59810acb03c6817e
attr myBroker autocreate simple
attr myBroker disable 0
attr myBroker mqttVersion 3.1
attr myBroker room MQTT
attr myBroker subscriptions ESP_Easy/BME680/#
attr myBroker username pi
attr myBroker verbose 4

define mqtt2_client MQTT2_CLIENT 127.0.0.1:1883
setuuid mqtt2_client 5d83c812-f33f-yyyy-4092-e3f9605052xxxxxx
attr mqtt2_client autocreate 1
attr mqtt2_client rawEvents ESP_Easy/BME680/:.*
attr mqtt2_client room test
attr mqtt2_client subscriptions #
attr mqtt2_client username pi

define MQTT2_mqtt2_client MQTT2_DEVICE mqtt2_client
setuuid MQTT2_mqtt2_client 5d83c849-f33f-72b0-155e-d8648a4fbbcc7191
attr MQTT2_mqtt2_client IODev mqtt2_client
attr MQTT2_mqtt2_client readingList mqtt2_client:fhem/out/LWT:.* LWT\
mqtt2_client:Test/Temp:.* Temp\
mqtt2_client:Connect:.* Connect\
mqtt2_client:ESP_Easy:.* ESP_Easy\
mqtt2_client:ESP_Easy/bme680/Temperature:.* Temperature\
mqtt2_client:ESP_Easy/bme680/Humidity:.* Humidity\
mqtt2_client:ESP_Easy/bme680/Pressure:.* Pressure\
mqtt2_client:ESP_Easy/bme680/TVOC:.* TVOC
attr MQTT2_mqtt2_client room MQTT2_DEVICE
define FileLog_MQTT2_mqtt2_client FileLog ./log/MQTT2_mqtt2_client-%Y.log MQTT2_mqtt2_client
setuuid FileLog_MQTT2_mqtt2_client 5d83c8cf-f33f-xxxx-932b-yyyyy
attr FileLog_MQTT2_mqtt2_client logtype text
attr FileLog_MQTT2_mqtt2_client room MQTT2_DEVICE
define SVG_FileLog_MQTT2_mqtt2_client_1 SVG FileLog_MQTT2_mqtt2_client:SVG_FileLog_MQTT2_mqtt2_client_1:CURRENT
setuuid SVG_FileLog_MQTT2_mqtt2_client_1 5d83c8cf-f33f-xxxx-932b-yyyyy
attr SVG_FileLog_MQTT2_mqtt2_client_1 room CO2-Messung,IAQ,MQTT2_DEVICE


Wichtig war, bei geforderter Authentifizierung Username zu definieren und das  Passwort mit set password  <pwd> einzugeben.

Ausschlaggebend war der Wiki-Eintrag "Defintion für Motion-Sensor" (https://wiki.fhem.de/wiki/MQTT2-Module_-_Praxisbeispiele) und dieser: EBUS-MQTT2 (https://wiki.fhem.de/wiki/EBUS-MQTT2)
ZitatTemp/Hum. Sensor

tbd ...  :(

Motion Sensor

Als MQTT-Server wird hier mosquitto verwendet, als IO-Device wird daher ein MQTT2_CLIENT-Gerät definiert:

defmod mqtt2_client MQTT2_CLIENT 192.168.2.4:1883
attr mqtt2_client autocreate 1
attr mqtt2_client rawEvents zighttps://forum.fhem.de/Themes/fhem-curve-green/images/bbc/url.gifbee2mqtt/GB_Bewegungsmelder:.*
attr mqtt2_client room test
attr mqtt2_client subscriptions #

Angepasst: Eingegeben username, pwd und topic angepasst, dann legte FHEM den Rest (MQTT2_CLIENT) automatisch an und ich den SVG...
Username/pwd weil ich den Mosquitto server so bei der installation konfiguriert hatte...
Auch automatisch eingelesen, die Topics:

attr MQTT2_mqtt2_client readingList mqtt2_client:fhem/out/LWT:.* LWT\
mqtt2_client:Test/Temp:.* Temp\
mqtt2_client:Connect:.* Connect\
mqtt2_client:ESP_Easy:.* ESP_Easy\
mqtt2_client:ESP_Easy/bme680/Temperature:.* Temperature\
mqtt2_client:ESP_Easy/bme680/Humidity:.* Humidity\
mqtt2_client:ESP_Easy/bme680/Pressure:.* Pressure\
mqtt2_client:ESP_Easy/bme680/TVOC:.* TVOC


wegen attr mqtt2_client subscriptions # als root-level.

Aber vorher ein paar Negativ-Beispiele:

Zitat2019.09.18 20:40:16 3: Opening mqtt device 127.0.0.1:1883
2019.09.18 20:40:16 1: mqtt: Can't connect to 127.0.0.1:1883: Connection refused
2019.09.18 20:40:23 3: Opening mqtt device 127.0.0.1:1883
2019.09.18 20:40:23 1: mqtt: Can't connect to 127.0.0.1:1883: Connection refused
2019.09.18 20:43:02 3: Opening myBroker device 127.0.0.1:1883
2019.09.18 20:43:02 1: myBroker: Can't connect to 127.0.0.1:1883: Operation now in progress
2019.09.18 20:43:02 1: myBroker: Can't connect to 127.0.0.1:1883: 127.0.0.1: Verbindungsaufbau abgelehnt (111)
~~~~
1568831217: Socket error on client <unknown>, disconnecting.
1568831217: New connection from 127.0.0.1 on port 1883.
1568831217: Socket error on client <unknown>, disconnecting.
1568831218: New connection from 127.0.0.1 on port 1883.
1568831218: Socket error on client <unknown>, disconnecting.
1568831218: New connection from 127.0.0.1 on port 1883.
1568831218: Socket error on client <unknown>, disconnecting.
1568831235: Saving in-memory database to /var/lib/mosquitto/mosquitto.db.
1568831528: Error in poll: Interrupted system call.
1568831528: mosquitto version 1.4.10 terminating
1568832260: mosquitto version 1.4.10 (build date Wed, 13 Feb 2019 00:45:38 +0000) starting
1568832260: Config loaded from /etc/mosquitto/mosquitto.conf.
1568832260: Opening ipv4 listen socket on port 1883.
1568832260: Opening ipv6 listen socket on port 1883.
1568832261: New connection from 127.0.0.1 on port 1883.
1568832261: Socket error on client <unknown>, disconnecting.
1568832287: New connection from 192.168.178.41 on port 1883.
1568832287: Client ESP_Easy_2 disconnected.
1568832287: New client connected from 192.168.178.41 as ESP_Easy_2 (c0, k10, u'pi').

Ich glaube, da muss jeder MQTT-Neuling mal durch (;-) 
Aber von "so einfach ..." möchte ich nicht sprechen.  ;)

Danke für die Infos Thomas + Twenta!

Allerdings kam bei mir die dritte Methode erfolgreich nach dem FHEM-Update zum Zuge ...
Möglicherweise sind gewisse Einträge noch falsch ... aber so geht es bei mir  ;)
Ggf. hätte es den Broker-Eintrag ebenfalls nicht gebraucht .... (?)

Es sind definitiv ein paar Fragen offen geblieben ...

Siehe auch: https://wiki.fhem.de/wiki/MQTT2_CLIENT (https://wiki.fhem.de/wiki/MQTT2_CLIENT).
Hatte auch mit dem template "MQTT2_CLIENT_general_bridge" experimentiert, aber kein Resultat erkannt ....

Weitere Möglichkeit der Visualisierung: https://waschto.eu/fhem-und-grafana-tool-zum-visualisieren-von-messdaten/ (https://waschto.eu/fhem-und-grafana-tool-zum-visualisieren-von-messdaten/)
Installation erfolgreich. Momentan klemmt es noch an der Übergabe der Daten an InfluxDB über das 93_InfluxDBLog (https://forum.fhem.de/index.php/topic,71551.0.html)-Modul.


MQTT-Auth:
http://www.steves-internet-guide.com/mqtt-username-password-example/ (http://www.steves-internet-guide.com/mqtt-username-password-example/)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 22 September 2019, 12:47:15
Für die Anwendung für Grafana mit Influxdb kam ich mit dem Modul "93_InfluxDBLog" einfach nicht weiter.
Meine erster Weg/Versuch MQTT-Subscriptions in die InfluxDB zu schreiben war mit einem Python-Skript auf dem PI.

Neueste Versionen installieren:

# Signaturschlüssel installieren
wget -O - https://repos.influxdata.com/influxdb.key | sudo apt-key add -
# Paketquelle hinzufügen
echo "deb https://repos.influxdata.com/debian jessie stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
# InfluxDB installieren
sudo apt-get update && sudo apt-get install influxdb

sudo systemctl daemon-reload
sudo systemctl enable influxdb.service
sudo systemctl start influxdb.service

#grafana-Installation
echo "deb https://repos.influxdata.com/debian stretch stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
wget https://dl.grafana.com/oss/release/grafana_6.3.5_armhf.deb
sudo dpkg -i grafana_6.3.5_armhf.deb


Dann die Python-Client-Libs noch installieren:
pip install influxdbclient
pip install paho-mqtt

http://www.steves-internet-guide.com/into-mqtt-python-client/ (http://www.steves-internet-guide.com/into-mqtt-python-client/)
https://raspberry-valley.azurewebsites.net/Mosquitto/ (https://raspberry-valley.azurewebsites.net/Mosquitto/)

Mittels influx-Konsole Datenbank und Usder einrichten:
pi@raspberrypi:~ $ influx
Connected to http://localhost:8086 version 1.7.8
InfluxDB shell version: 1.7.8
> create user <USER> with PASSWORD '>PWD>' with all privileges
> create DATABASE fhem_bme680
> exit


habe voher eine Database "fhem_bme680" plus user mit allen Rechten und ein "measurement=TVOC" angelegt .
Einen UTC-Timestamp zu generieren war leider nicht erfolgreich (der code wird nicht mehr ausgeführt).

> select value from TVOC
name: TVOC
time                value
----                -----
1569145672897418771 826.2
1569145732900389041 827.4
1569145792884462336 828.6
1569145852896870973 829.4
1569145912894694935 829.9
1569145972889216570 830.2
1569146032897894131 830.3
1569146092894298758 830.2
1569146152921232003 829.2
1569146212899806950 827.8
1569146272900568857 826.3
1569146332898218697 824.3
1569146392903728293 822.5


Also hat der Connect auf  MQTT und auf die Subscriptions geklappt.
Nach einiger Tüftelei bekam auch der InfluxDB-client seine Connection auf die Datenbank hin.
Das Skript kann nun auf weitere Readings ausgebaut werden, wenn ich mich mehr eingearbeitet habe.

Sorry, ist wilde Tüftelei, weil Grafana + InfluxDB-Noob ...  ::)

https://docs.influxdata.com/influxdb/v0.10/introduction/getting_started/ (https://docs.influxdata.com/influxdb/v0.10/introduction/getting_started/)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 25 September 2019, 19:21:24
Grafana läuft endlich mit InfluxDB-Datenquelle!

ESP_Easy -> MQTT-Client (Controller) -> Publish -> Mosquitto-Broker -> Subscribe -> Python-Skipt -> InfluxDB -> Grafana

Hier gibt es wertvolle Infos und ein (noch  ;)) besseres Python-Skript dazu:
http://nilhcem.com/iot/home-monitoring-with-mqtt-influxdb-grafana (http://nilhcem.com/iot/home-monitoring-with-mqtt-influxdb-grafana)
und hier
https://github.com/Nilhcem/home-monitoring-grafana/blob/master/02-bridge/main.py (https://github.com/Nilhcem/home-monitoring-grafana/blob/master/02-bridge/main.py)

Auch mit docker:
influxdb-and-grafana-for-sensor-time-series/ (https://thingsmatic.com/2017/03/02/influxdb-and-grafana-for-sensor-time-series/)
playing-with-docker-mqtt-grafana-influxdb-python-and-arduino/ (https://gonzalo123.com/2018/06/04/playing-with-docker-mqtt-grafana-influxdb-python-and-arduino/)

download-dashboard-json-or-copy-the-content-of-this-file-to-clipboard (https://developers.bigclown.com/integrations/grafana-for-visualization#step-3-download-dashboard-json-or-copy-the-content-of-this-file-to-clipboard)
autostart-eines-python-programm-auf-dem-raspberry-pi/ (https://webnist.de/autostart-eines-python-programm-auf-dem-raspberry-pi/)
howto/run-a-program-on-your-raspberry-pi-at-startup/ (https://www.dexterindustries.com/howto/run-a-program-on-your-raspberry-pi-at-startup/)

https://ayeks.de/post/2018-05-29-bme680-influxdb-grafana/ (https://ayeks.de/post/2018-05-29-bme680-influxdb-grafana/)
https://raspberry-valley.azurewebsites.net/MQTT-Topic-Trees/ (https://raspberry-valley.azurewebsites.net/MQTT-Topic-Trees/)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 26 September 2019, 22:35:48
Habe leider noch keinen Weg gefunden, das erweiterte Skript auf dem Pi3(Stretch) ans Laufen zu bekommen:
https://raw.githubusercontent.com/Nilhcem/home-monitoring-grafana/master/02-bridge/main.py (https://raw.githubusercontent.com/Nilhcem/home-monitoring-grafana/master/02-bridge/main.py)
(Läuft unter Windows... mit 3.7.3  64bit)
mit

MQTT_TOPIC = 'ESP_Easy/bme680/+'  # [bme280|mijia]/[temperature|humidity|battery|status]
MQTT_REGEX = 'ESP_Easy/([^/]+)/([^/]+)'  #group1 and 2 needed: location=bme680 and measurement=TVOC|Temperature|Pressure|Humidity


Connected with result code 0
ESP_Easy/bme680/Pressure b'996.4'
ESP_Easy/bme680/TVOC b'491.0'
ESP_Easy/bme680/Temperature b'24.4'
ESP_Easy/bme680/Humidity b'52.8'


Allerdings hat der Raspi Python-Versions-Probleme:
pi@raspberrypi:~ $ python3 mqtt_influx_bridge.py
  File "mqtt_influx_bridge.py", line 32
    location: str
            ^
SyntaxError: invalid syntax
pi@raspberrypi:~ $ python3 mqtt_influx_bridge.py
  File "mqtt_influx_bridge.py", line 32
    location: str
            ^
SyntaxError: invalid syntax

pi@raspberrypi:~ $ python3 --version
Python 3.5.3
pi@raspberrypi:~ $ which python3
/usr/bin/python3



https://stackoverflow.com/questions/42002596/python-3-5-typed-namedtuple-syntax-produces-syntaxerror (https://stackoverflow.com/questions/42002596/python-3-5-typed-namedtuple-syntax-produces-syntaxerror)
https://raspberrypi.stackexchange.com/questions/10237/upgrade-from-python-2-7-to-3-3-x (https://raspberrypi.stackexchange.com/questions/10237/upgrade-from-python-2-7-to-3-3-x)

https://gist.github.com/SeppPenner/6a5a30ebc8f79936fa136c524417761d (https://gist.github.com/SeppPenner/6a5a30ebc8f79936fa136c524417761d)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: trebron106 am 27 September 2019, 14:25:47
Hallo,
habe bei mir seit ca. 2 Wochen einen Testaufbau mit verschiedenen BME680 und CCS811 Sensoren laufen. Alle Sensoren befinden sich im gleichen Raum auf einen Tisch nebeneinander, haben somit die gleichen Bedingungen.

Sensor1: 
Sonoff iAQ  locutus CO2 Indoor Sensor mit CCS811
Software: Tasmota 6.6.0  CCS811 Lib Adafruit Version 1.0.0.14

Sensor2: 
Sonoff iAQ2  Wemos D1 mit CCS811 und BME280
Software: Tasmota 6.6.0  CCS811 Lib. Adafruit Version 1.0.0.14

Sensor3:
ESPEasy CCS811 iAQ / BME680 iAQ
Software: Build 20103 Mega  ESPEasy Core 2_5_2
       CCS811 Lib. SparkFun CCS811  Version 1.0.0
       BME680 Lib. JS_BME680 von Juergs

Sensor4:
LaCrosse UniversalSensor V3.1f
Software: UniversalSensor V 3.1f
        BME680 Lib.  Bosch BSEC  Version 1.4.7.2


Alle Daten werden in einer Influx DB gespeichert, die Anbindung der Datenbank an FHEM erfolgt mit den Modul InfluxDBLog . 

Als Anlage habe ich eine 24h Auswertung mit Grafana angehängt.

Man sieht, die Kurvenverläufe gleichen sich, aber die absoluten Werte unterscheiden sich stark.


Gruß
trebron106
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 27 September 2019, 15:39:05
Hallo trebron106,

wenn Du uns freundlicherweise noch die Konfiguration / List des/der InfluxDBLog-Devices  mitlieferst?   ;) ;) ;)

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: trebron106 am 27 September 2019, 16:19:32
Hallo juergs,

hier ein List der InfluxDBLog meiner Testumgebung

Datenbankname      fhem
Datenbankuser        fhem
Datenbankpasswort fhem


Internals:
   DEF        192.168.106.160 8086 fhem fhem fhem .*:([Tt]emp|[Hh]umidity|dewpoint|taupunkt|pressure|gas1|gas2|Luftfeuchte|TVOC|eCO2|CCS811_|BMP180_|BME280_|BME680_).*
   FH         
   FUUID      5d8cc25a-f33f-4013-25f0-eaea939f05c22094
   INFLUXDB   fhem
   INFLUXPORT 8086
   INFLUXPW   fhem
   INFLUXSRV  192.168.106.160
   INFLUXUSER fhem
   NAME       InfluxDB
   NR         1379
   NTFY_ORDER 50-InfluxDB
   REGEXP     .*:([Tt]emp|[Hh]umidity|dewpoint|taupunkt|pressure|gas1|gas2|Luftfeuchte|TVOC|eCO2|CCS811_|BMP180_|BME280_|BME680_).*
   STATE      active
   TYPE       InfluxDBLog
   READINGS:
     2019-09-27 13:24:34   filecount       0
Attributes:
   room       9.9 Test



Gruß
trebron106
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 27 September 2019, 17:58:34
Hallo trebron106,

danke für das List des Moduls, werde es gerne ausprobieren.

Bei den Vergleichswerten fällt mir (1) + (2) auf. Auch die Sonos IAQ 2 - Kurve zur der von ESPEasy_BME680. 
Sowie der Peak bei Sonos IAQ(1)  gegen den ESPEasy_BME680-Peak....
Was mich wundert ist der Nicht-Gleichlauf des Universalsensors (mit BSEC) zum EspEasy-BME680.
Das habe ich bei mir nicht so, bei mir korrelieren die Sensoren da etwas besser.   

Evtl. wäre die Kurven (als Vergleich) von Luftfeuchte und Temperatur  ein Hinweis, was da evtl. vor sich ging.

Bei liegen auch einige Sensoren im "engen" Bereich in einem Zimmer herum. Allerdings bei geöffnetem Fenster verteilt sich
das Ganze doch sehr unterschiedlich.

Den CS811 habe ich noch nicht im Einsatz. Interessant zu sehen, dass die Werte einigermaßen korrelieren....
Ansonsten teile ich Deine Meinung, dass Absolutwerte  schon unteschiedlich sein können.

Wenn ich meine anderen Sensoren eingebunden habe, lässt sich da Langzeit-technisch von meiner Seite mehr sagen.   
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 27 September 2019, 21:43:51
Mein RegEx:
.*:([Tt]emperature|[Tt]emp|[Hh]umidity|rH|dewpoint|taupunkt|[Pp]ressure|gas1|gas2|Luftfeuchte|TVOC|tvoc|eCO2|BME680).*
liefert mir nun die richtigen fhem-Readings (z.B. auch mqtt2_client), diese werden in InfluxdB geschrieben.


define influxlog InfluxDBLog localhost 8086 fhem_test <usr> <pwd> .*:([Tt]emperature|[Tt]emp|[Hh]umidity|rH|dewpoint|taupunkt|[Pp]ressure|gas1|gas2|Luftfeuchte|TVOC|tvoc|eCO2|BME680).*
setuuid influxlog 5d8e5336-f33f-72b0-fb72-c4bc41d123276ea1
attr influxlog room MQTT2_DEVICE
attr influxlog verbose 3


Nach jetzigem Kenntnisstand und den Infos hier:
https://forum.fhem.de/index.php/topic,71551.0.html (https://forum.fhem.de/index.php/topic,71551.0.html)
https://www.dev-eth0.de/2016/12/07/grafana_fhem_influxdb/ (https://www.dev-eth0.de/2016/12/07/grafana_fhem_influxdb/)

Ist noch etwas Optimierungspotential in Grafana da, aber die Grunddaten werden nun von allen RegEx-gefilterten fhem-readings (!) in die Datenbank via 93_InfluxDBLog-Modul geschrieben.

Der Knackpunkt ist die richtige (Perl-)RegEx-Syntax zu erstellen ....  und in Influx die Einträge der measurements zu identifizieren  und dann ist die Konfiguration in Grafana ebenfalls einfach ;)

Dann kann man sich den Feinheiten der Grafana-Abfragen und Visualisierungen widmen ...

Schön dabei ist, dass man bereits existierende Konfigurationen importieren kann ... https://grafana.com/grafana/dashboards (https://grafana.com/grafana/dashboards) und  ein Dashboard-Beispiel (http://gasplanet.no-ip.org:3000/d/eMc20Z9ik/ttn-rottal-inn)  ;)

Hier zeigt es sich auch für die MQTT-Messungen, wiedererkennbare Benennungen, nach Device unterscheidbar, zu verwenden ist von Vorteil ...  ;)

Zitatdevice-category/device-id/payload-context/payload-differentiator

Zitat>> show measurements
name: measurements
name
----
BME680_DBG_BASE_C
BME680_DBG_FILTERED
BME680_DBG_R
BME680_DBG_RATIO
BME680_aH
BME680_dewpoint
BME680_pressure
BME680_rH
BME680_temperature
BME680_tvoc
Humidity
TVOC
Temperature
humidity
pressure
temperature


>>explain select * from BME680_tvoc
QUERY PLAN
----------
EXPRESSION: <nil>
AUXILIARY FIELDS: site_name::tag, value::float
NUMBER OF SHARDS: 1
NUMBER OF SERIES: 3
CACHED VALUES: 422
NUMBER OF FILES: 0
NUMBER OF BLOCKS: 0
SIZE OF BLOCKS: 0

... und ich hatte mich gerade mit python angefreundet ...  ;) ;D

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: fhem-ul am 16 Oktober 2019, 21:46:03
Zitat von: juergs am 13 September 2019, 22:13:14
Habe einige Verbesserungen eingebaut:
Jetzt sollte auch die Adresse 0x77 für den BME einsetzbar sein.
Dafür habe ich die Initialiserung des BME an eine passendere Stelle gelegt.
Das hat den Vorteil, dass ein nicht angeschlossener  BME680 in ESPEasy keine Exceptions mehr erzeugt
und sich ESPEasy aufrufen läßt, um über den Device-Konfiguratins-Dialog mittels Adress-Auswahl, Device-ENABLE-Checkbox gesetzt und SUBMIT-Button gedrückt, konfigurieren lässt.
Erst dann läuft erst die Initialisierung des BMEs los.
Die Zykluszeit habe ich von 10 auf 12s hochgesetzt, da dies Bosch in https://ae-bst.resource.bosch.com/media/_tech/media/application_notes/BST-BME680-AN014.pdf (https://ae-bst.resource.bosch.com/media/_tech/media/application_notes/BST-BME680-AN014.pdf)
auf Seite 10 vorschlägt. Messwerte werden im 12s Rythmus vom BME gelesen, aber erst nach der konfigurierten Zyklus-Zeit (default=60s) an die ESPEasy-Oberfläche geliefert.
Alle anderen Änderungen wie z.B. Plot + Debugausgabe werden erst nach einem Reset wirksam ...
* Github Repository (https://github.com/juergs/ESPEasy_BME680_TVOC) ist aktualisiert.  :D

Hallo juergs,

ich habe die .bin, aus dem o.g. Beitrag von Dir, auf einen D1 geflasht, es werden die Messwerte korrekt ausgelesen (auf der seriellen Schnittstelle zu sehen), jedoch wird sobald der der TVOC-Wert erfasst wird, also nach 5 Minuten, die anderen Werte nicht mehr an FHEM aktualisiert. Angebunden ist es über den FHEM HTTP Controller. Zur Veranschaulichung füge ich einen Plot und die Ausgabe der seriellen Schnittstelle an. Da kann man sehen, dass die Werte gemessen werden, also Änderungen zu sehene sind, die Änderungen werden aber nicht übertragen. Auch bei anderen WIMOS D1 und einem Node MCU stelle ich das gleiche verhalten fest. Kannst Du mir vielleicht helfen.

Vielen Dank im Voraus, Ulrich
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 17 Oktober 2019, 18:28:38
Hallo Ulrich,

Du hast eine Konfiguration gewählt, die ich so nicht getestet/ausprobiert habe.
Zum Probieren benötige ich von Dir beide Konfigurationen (Screenshot?) von der ESPEasy-Konfiguration und der
Konfiguration des FHEM-Devices. Zum Nachvollziehen auch ein Log-Auszug des FHEM-Logs zum Abbruchzeitpunkt.

Allerdings ist die einfachere Variante die Verwendung der UDP-SLINK Übertragung:
Du holst Dir von hier (https://github.com/herrmannj/AirQuality/tree/master/FHEM) die FHEM-Module und kopierst sie in den FHEM-Ordner.
Falls Raspi, noch die Berechtigungen für den fhem-User und die dialout-Gruppe auf die neuen pm-Module setzen:
Beispielhaft:

8,0K -rw-r--r--  1 fhem dialout 6,2K Okt  3 14:56 10_SLinkIAQC.pm
8,0K -rw-r--r--  1 fhem dialout 4,4K Okt  3 14:56 10_SLinkIAQ.pm
8,0K -rw-r--r--  1 fhem dialout 5,3K Jan  1  1970 10_SLinkS0.pm
8,0K -rw-r--r--  1 fhem dialout 4,3K Jan  1  1970 10_SLinkTH.pm


Dann in Fhem neu starten und ein
Zitat
define slink slink
Device über die Eingabezeile definieren.
Falls Autocreate aktiv ist bekommst du dann eine neues SLink-Device angelegt, sofern in ESPEasy "UDP slink transmission enable:"   die Checkbox gesetzt ist.

Zitat
Internals:
   DEF        45482A
   FUUID      5d965caf-f33f-1cca-f8a3-7df3451b792ae5dc
   ID         45482A
   LASTInputDev slink
   MSGCNT     92444
   NAME       SLinkIAQC_45482A
   NOTIFYDEV  global
   NR         145
   NTFY_ORDER 50-SLinkIAQC_45482A
   SENSOR     192.168.178.55
   STATE      ???
   TYPE       SLinkIAQC
   slink_MSGCNT 92444
   slink_RAWMSG T:IAQC;FW:1.0;ID:45482A;IP:192.168.178.55;R:-43;F:THPV;T:20.42;H:64.14;AH:11.36;D:13.42;P:1000.4;V:761;R:480564;DB:64035000;DF:483601.375;DR:1.6758;
   slink_REMOTE 192.168.178.55
   slink_RSSI -43
   slink_TIME 2019-10-17 18:21:47
   READINGS:
     2019-10-17 18:21:47   BME680_DBG_BASE_C 64035000
     2019-10-17 18:21:47   BME680_DBG_FILTERED 483601.375
     2019-10-17 18:21:47   BME680_DBG_R    480564
     2019-10-17 18:21:47   BME680_DBG_RATIO 1.6758
     2019-10-17 18:21:47   BME680_aH       11.36
     2019-10-17 18:21:47   BME680_dewpoint 13.42
     2019-10-17 18:21:47   BME680_pressure 1000.4
     2019-10-17 18:21:47   BME680_rH       64.14
     2019-10-17 18:21:47   BME680_temperature 20.42
     2019-10-17 18:21:47   BME680_tvoc     761
Attributes:
   room       SLinkIAQC

Hierbei habe ich bisher noch keine Übertragungsprobleme feststellen können.

Die beiden anderen Übertragungsarten laufen über ein MQTT2-Device und ein MQTT-Controller in ESPEasy
oder an FHEM vorbei, über ein Mosquitto-MQTT-Server und ein Python3-Skript (als Dienst implementiert)  welches die Daten in eine InfluxDB schaufelt.
Deren Daten können dann über Grafana ausgewertet werden.

Nachdem meine SD-Karte im RASPI nach 1,5 Jahren ins stolpern gekommen ist, habe ich
gleich Raspian "Buster" neu installiert. Mit dem Vorteil, dass nun Python3 verfügbar ist.
Bei der Auswertung mit Grafana ist mir leider noch ein Fehler beim Erfassen ins Auge gefallen: Die Luftdruckdaten wurden nicht aktualisiert.

Anbei die korrigierte ESPEasy-BME680-Version.  :-[ :-\ 

Nur Sketch-Upload mit Esptool (https://github.com/arendst/Sonoff-Tasmota/wiki/Esptool) oder Arduino-Version:
esptool.exe -vv -cd nodemcu -cb 921600 -cp COM7 -ca 0x00000 -cf <Pfad zu>/ESPEasy.ino.bin


FHEM-HTTP mit ESPEasy: https://forum.fhem.de/index.php/topic,55728.0.html (https://forum.fhem.de/index.php/topic,55728.0.html) ?
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: MC_Arthur am 19 Oktober 2019, 16:23:44
Nutzt den jemand diesen Sensor und könnte mir vorab mal 1-2 Maße nennen ?
Abstand Löcher , Durchmesser ggf und Mitte Loch nach unten ?!

(https://uploads.tapatalk-cdn.com/20191019/b705b4222a9ca1018423b4cf361d3d10.jpg)

Er ist bestellt . Dauert aber leider noch etwas bis er da ist .

Vielen Dank
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 19 Oktober 2019, 20:04:27
Hallo McArthur,

die Maße kannst Du auch selbst herausfinden:

Einfach JPG ausdrucken, ggf auch 2 .. 3 mal vergrößert.

Da Du weißt, dass der  Sensor (https://www.14core.com/wiring-the-bosch-bme680-gas-detection-temp-humid-pressure-with-i2c-spi/) BME680 (http://img.staticbg.com/images/oaupload/banggood/images/63/ED/c7f8dd49-f3a5-44ef-b7ec-f66060714d10.JPG)  3x3 mm Kantenlänge hat, kannst Du Dir den Skalierungsfaktor selbst berechnen ... 
... und auf alle anderen Maße hinreichend genau anwenden ...  ;D :)

Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: max333 am 02 November 2019, 14:17:48
Hallo,

ich benutze die 20191017_ESPEasy.ino.bin nur leider wird bei mir die Höhenkorrektur ignoriert...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 02 November 2019, 18:12:41
Du meinst die Höhenkorrektur des Luftdrucks?
https://github.com/juergs/BME680-Arduino-Library-with_TVOC-/blob/master/js_BME680/js_bme680.cpp (https://github.com/juergs/BME680-Arduino-Library-with_TVOC-/blob/master/js_BME680/js_bme680.cpp)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: max333 am 02 November 2019, 19:44:57
Ja genau. Dort kann ich 0m oder 1000m eingeben, ohne das sich was am Luftdruck ändert.

Hat das evtl. mit der I2C Adresse zu tun? Ich habe 0x77.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 02 November 2019, 19:46:47
ok, schaue mal nach. 😁
Hat nur was mit der Umrechnung bzw. EspEasy-Variablenübergabe zu tun.
Die I2C-Adresse ich nur für Go-No-Go verantwortlich. Werden Werte geliefert ist die richtige Adresse einegstelle.
Darüber hinaus spielt die I2C-Adresse dann keine weitere  Rolle mehr.

Wobei Luftdruck-Absolut-Werte eigentlich nur einen kosmetischen Wert haben.
Wichtiger ist wohl eher die Tendenz ....  ;)

By the way: https://community.grafana.com/t/date-in-local-format/17617 (https://community.grafana.com/t/date-in-local-format/17617)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 03 November 2019, 15:05:29
... habe die Luftdruck-Höhen-Korrektor als ESPEasy-Eingabe-Möglichkeit vorgesehen, aber leider nicht weiter SW-technisch verwendet.

Sie ist also ohne Funktion .... stattdessen wird die Adafruit-Sealevel-Anpassung verwendet, also Luftdruck in Bezug auf Meereshöhe.

Falls wirklich erfoderlich, bitte die Umrechnung angeben, dann kann ich sie einbinden ...  :D

Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 03 November 2019, 17:08:49
Um dem AMS-CSS811-Sensor auch mal unter die Lupe zu nehmen, habe ich den Sensor über das SLINK-Protokoll in FHEM
mit Kalman-Filterung eingebunden und auf das SLINK-BME680-Protokoll gemapped.
Noch ohne Temperatur-Kompensation via BME280 oder NTC.

Konfiguration der IP, wie über den WiFiManager üblich.

Code und weitere Infos: https://github.com/juergs/CSS811_Slink/blob/master/README.md (https://github.com/juergs/CSS811_Slink/blob/master/README.md)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: max333 am 03 November 2019, 18:33:02
Die Umrechung ist in der _P119_BME680.ino enthalten:

//**************************************************************************/
// MSL pressure formula
//**************************************************************************/
float Plugin_119_pressureElevation(float atmospheric, int altitude) {
  return atmospheric / pow(1.0 - (altitude/44330.0), 5.255);
}


Zum Vergleich mit den anderen Sensoren finde ich die Umrechung schon interessant.  ;)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 03 November 2019, 20:08:41
Danke. Mehr dazu: Conversion to sea-level pressure (https://keisan.casio.com/exec/system/1224575267)

Sollte man aber nochmal genauer nachüberprüfen ...

BME680_CS_06 - Press: 976 hPa
SLinkIAQC_45482A - Temp: 21.55 Hum: 60.47 [%rH] Press: 975.6 hPa


ZitatWetterstationen geben ihren Luftdruck immer auf Höhe 0 reduziert an,
damit man diese vergleichen kann.

Das Problem ist einfach nur dass der Sensor nicht weiß wo, auf welcher Höhe über NN, er wirklich ist. Den einzigen Bezugswert den er hat ist:
Code:
#define SEALEVELPRESSURE_HPA (1013.25)
Das ist ein genormter Bezugswert der aber im wahren Leben quasi nie zutrifft.
Deshalb geht er davon aus dass derzeit auf Meeresniveau diese 1013.25mbar herrschen, was aber nicht zutrifft, und errechnet daraus die Höhe an deinem Standort. Die kann dann natürlich auch nicht stimmen.
Man kann den BME680 also nicht dazu nutzen die Absolute Höhe an seinem Standort zu messen. Wenn man ihm aber die Absolute Höhe am Standort und den tatsächlichen Luftdruck am Standort mitteilt könnte man mit seiner Hilfe eine relative Höhenänderung des Sensors berechnen.

Aber auch der Angezeigte Luftdruck, diese 991,xx hPa. stimmen für denen Standort nicht mit den Daten der Wetterstationen in deiner Nähe überein.
Mit der Formel:
Code:
lokalerLuftdruck = (P/pow(1-(A/44330.0),5.255));
kannst du aber den gemessenen Luftdruck auf den Luftdruck für deine Höhe über NN umrechnen.
Dabei musst du für "P" den vom BME gemessenen Luftdruck einsetzen und für "A" deine reale Höhe in Meter über NN.
Das Ergebnis sollte dann nahe bei den Werten liegen welche Wetterstationen in deiner Nähe messen.


Quelle: BME680 und lokaler Luftdruck (https://www.arduinoforum.de/arduino-Thread-Gewinnspiel-BME680)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 04 November 2019, 20:22:53
Erster Versuch:

Example lines for input:

mit 2158 : EVENT: bme680#Pressure=982.20 und 210 Metern

Ergebnis:
2019-11-04_20:16:09 SLinkIAQC_20040E BME680_pressure: 1007.0




Mit diesem Code der greift, wenn die Höhen-Angabe (Altitude) > 0 ist :


if (use_pressure_altitude)
{
double press = JS_BME680.getPress();  
int alt = PCONFIG(1) ;
double lokalerLuftdruck = (press/pow(1-(alt/44330.0),5.255));
      dtostrf(lokalerLuftdruck, 3, 1, str_pressure);  
}    
else
 
       dtostrf(JS_BME680.getPress(), 3, 1, str_pressure);
}


Resultat: 982.20 hPa => 1007.0 hPa








<980 sehr tief, stürmisch
980-1000 tief, regnerisch
1000-1020 normal, wechselhaft
1020-1040 hoch, sonnig
>1040 sehr hoch, sehr trocken

T:IAQC;FW:1.0;ID:20040E;IP:192.168.178.49;R:-38;F:THPV;T:22.23;H:47.64;AH:0.00;D:0.00;P:1006.7;V:125;R:1073741170;DB:1073741152;DF:0;DR:1;

Muss das aber erst noch mal verifizieren ... also erst mal ohne Gewähr!  ;)

Lokaler Luftdruckwert im Moment nur über SLINK!
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: max333 am 13 November 2019, 19:48:41
Danke für die Mühe, nur leider nutze ich slink nicht.  :'(
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: Prof. Dr. Peter Henning am 06 Januar 2020, 10:18:22
Ich klinke mich hier mal ein, weil ich selbst mit zwei Sensoren CCS811 kämpfe, siehe hier: https://forum.fhem.de/index.php/topic,103754.msg1009471.html#msg1009471

Insofern würde mich interessieren, ob es irgendwo auf den vorangehenden 36 Seiten eine alternative Tasmota-Version gibt - da liegt nämlich irgendetwas im Argen.

Den Unterschied der absoluten Messwerte habe ich allerdings schon in den SmartHome Hacks ausführlich erklärt - die physikalische Funktionsweise der Sensoren führt zu relativ hohen Fertigungstoleranzen, sie müssen eigentlich geeicht werden. Ohne eine solche Eichung sind sie nur für relative Messungen zu gebrauchen.

Edit: Da ich die beiden CCS811 nebeneinander betreibe und sie immer schön fast gleiche Absolutwerte liefern, ist auf den ersten Blick die Fertigungstoleranz der CCS811 relativ gering.

LG

pah
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: herrmannj am 06 Januar 2020, 10:58:27
https://forum.fhem.de/index.php/topic,103027.0.html
https://www.mikrocontroller.net/topic/445610
https://www.jaredwolff.com/finding-the-best-tvoc-sensor-ccs811-vs-bme680-vs-sgp30/
...
Zitat
Den Unterschied der absoluten Messwerte habe ich allerdings schon in den SmartHome Hacks ausführlich erklärt - die physikalische Funktionsweise der Sensoren führt zu relativ hohen Fertigungstoleranzen, sie müssen eigentlich geeicht werden. Ohne eine solche Eichung sind sie nur für relative Messungen zu gebrauchen.

Ich habe mich so ausführlich mit tVOC Sensoren beschäftigt das ich anfangen kann bezahlte Vorträge darüber zu halten. Kurzfassung: die Fertigungstoleranzen sind ein kleiner Teil des Problems. Dazu kommen
- Alterung
- Veränderungen durch reversible Sättigungseffekte (Memory Effekt)
vor allem aber die Querempfindlichkeit zum Wassergehalt der Luft.

Um die Widerstandswerte richtig zu interpretieren muss der variable Anteil des Wassers rechnerisch mit extremer Genauigkeit kompensiert werden. Jetzt such mal im CCS811 die Möglichkeit wie der das exakt machen soll :) (mal abgesehen von dessen buggy fw, zb baseline correction)

Der AMS IAQ-C ist besser (bedeutet er springt seltener, aber er springt).

Juergs hat eine BME680 Tasmota Version brauchbar ist.

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 06 Januar 2020, 11:20:14
Hallo Zusammen,

ich habe zusamme mit Jörg schon seit einger Zeit einige BME680 im Dauerbetrieb parallel laufen.
Lasse ich mehrere BMEs zur gleichen Zeit starten zeigen diese in etwa auch den gleichen Verlauf an.

Jörg hat schon die entscheidenden Links angegeben, aus denen man die entsprechenden Schlüsse ziehen kann.

Ich habe allerdings nicht für Tasmota, sondern für ESPEasy eine Umsetzung für Jörgs Erfassungs-Algorithmus umgesetzt.
Siehe hier auf GitHub (https://github.com/juergs/ESPEasy_BME680_TVOC) oder hier im Thread.

Jörgs Algorithmus kommt ohne das BSEC-Gedöns aus, da  sowohl die Tasmota-, als auch die ESPEasy-Umgebung wohl die erforderliche Zykluszeit
nicht zu zulässt.

Die Erfassung über ESPEasy + SLINk und MQTT auf FHEM und Grafan läuft bei mir sehr zuverlässig.
Leider hat  Dainel Waschto  (https://waschto.eu/fhem-und-grafana-tool-zum-visualisieren-von-messdaten/)seine  Webseite mit den HowTos "fhem-und-grafana-tool-zum-visualisieren-von-messdaten" dafür überraschend  dicht gemacht.
/edit: https://www.jaredwolff.com/how-to-make-an-amazing-looking-iot-dashboard-in-no-time/ (https://www.jaredwolff.com/how-to-make-an-amazing-looking-iot-dashboard-in-no-time/)

Falls Interesse besteht, kann ich mir gerne mal das Tasmota-Sensor-Template auf eine Portiermöglichkeit prüfen.

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: herrmannj am 06 Januar 2020, 11:29:16
Wenn Du Interesse hast, ich habe den algo für den BME nochmal angefasst verbessert.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 06 Januar 2020, 11:30:16
Hallo Jörg,

wie könnte ich da "NEIN" sagen ...  ;D :)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 06 Januar 2020, 11:41:10
Hier mal wieder  mal eine Gegenüberstellung CSS811/BME680.
Der CSS811 und der BME680 laufen unter ESPEasy MQTT/SLINK.

Interessant das SensorVerhalten nach dem Schliessen den hereingestellten Fensters.
Der SW-Filter den ich auf den BME680 aufgeschalten reagiert in der Art einens Tiefpasses mit verzögerten Flanken und geringerem Ausschwingen.
Dieses Verhalten ist aber von mir so gewünscht.  ;) ;)

Die Ausreißer, die Pah meldet, passieren so bei mir nicht.
Allerdings habe ich bei mir auch keine externe Temperaturkompensation mit NTC auf den CCS811 geschalten.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: herrmannj am 06 Januar 2020, 11:46:22
war 10:10 einmal lüften ?
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 06 Januar 2020, 11:50:44
Zitatwar 10:10 einmal lüften ?

Tja, leider der umgekehrte Fall, allerdings reagiert der Sensor sehr sensibel
und das Schwingen des Fensters könnte das über den Luftzug mit "frischer" Luft schon erklären.
Allerdings steht da der CCS811 dagegen, der ca. 20 cm entfernt und 10 cm tiefer liegt.
Allerdings ist das Verhalten mit Heizungs-Luft  (Fenstersims) etc. auch etwas Störgrößen behaftet.

Aber, wie Jörg schon sagte, über das Verhalten der Sensoren kann man sich so seine Gedanken machen ...  :o

/edit: der CSS811 (Breakout-Board, nicht von Locutus) läuft im Gegensatz zum BME680 ohne weiteren Tiefpassfilter bis auf die letzten 10% erstaunlich koherent!
Um das genauer beurteilen zu wollen müsste ich den Filter allerdings beim BME680 ausschalten.
Das zweite Bild zeigt die Werte über die LGW und PeMues BME680-Sensor  "geringer" gefiltert.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: Prof. Dr. Peter Henning am 06 Januar 2020, 12:49:01
Hm,
Zitatbezahlte Vorträge darüber zu halten
Ich darf Dir versichern, das ist ein schwieriger Markt...
ZitatAlterung
Das heißt nur, dass die Eichung in regelmäßigen Abständen wiederholt werden müsste.

Ich habe selbst mehrere Metalloxidsensoren in der Werkstatt herumliegen und hatte vor, mehrere Sensoren unterschiedlichen Typs zu kombinieren. Wegen der unterschiedlichen Empfindlichkeiten auf CO2, NOx und weitere Gase lässt sich bei einer gescheiten Betrachtung der Kennlinien tatsächlich herausfieseln, welches Gas in welcher Konzentration vorhanden ist.

Ich habe aber aktuell das Problem, dass ich wegen verschiedener beruflicher Anforderungen kaum die Zeit habe, mich mit solchen Details zu befassen - deshalb wollte ich es mir einfach machen und habe mir eben die beiden Dinger von locutus kommen lassen. Tja, denkste mit einfach.


LG

pah
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 06 Januar 2020, 15:23:01
Hallo pah,
meine CSS811-Firmware-Version:
https://github.com/juergs/CSS811_Slink/blob/master/README.md
für den Esp8266.

Erforderlich: zusätzliche FHEM-Module für UDP-Empfang:
https://forum.fhem.de/index.php/topic,78619.msg974768.html#msg974768
einfach in den fhem-Ordner kopieren und ggf. Berechtigungen entsprechend setzen.

Die Definition des SLINK-Devices:

define slink SLink

Der Rest sollte FHEM dann per autocreate regeln.

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: Prof. Dr. Peter Henning am 06 Januar 2020, 15:29:22
Danke, werde ich bei Gelegenheit ausprobieren. Sehe ich das richtig, dass ich diese Firmware nicht wieder Over The Air loswerden kann, so wie das bei Tasmota der Fall ist?

LG

pah
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 06 Januar 2020, 16:00:05
Wenn Du mit "... diese Firmware ..." meine Version meinst:
Nein, ist nicht OTA fähig. Also gesamten Speicher per Flasher löschen, dann FW flashen.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 06 Januar 2020, 16:42:51
Noch einige Infos:

Tasmota hat wohl doch die statische BSEC-Lib für den BME680 integriert:
https://github.com/arendst/Tasmota/tree/development/lib/BME680_driver-bme680_v3.5.9

https://github.com/arendst/Tasmota/tree/development/lib

Flash CCS811-Chip:
https://github.com/maarten-pennings/CCS811/tree/master/examples/ccs811flash
ZitatSince most Chinese boards come with firmware 1.1.0, and ams has released firmware 2.0.0 (around april 2018), I have written this example: it flashes 2.0.0 into a CCS811.

Locutus-Infos zum CCS811:
https://forum.fhem.de/index.php/topic,103754.msg975523.html#msg975523
https://forum.fhem.de/index.php/topic,28905.360.html
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: Nighthawk am 07 Januar 2020, 10:15:03
Hallo Jürgen,

bei meinem letzten Versuch BME680 mit Tasmota zu betreiben habe ich nur die Wiederstanswerte gesehen, daher bin ich mir ziemlich sicher dass die lib leider nicht in Tasmota enthalten ist.


Gruß
Alex
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 08 Januar 2020, 18:55:55
Hallo Alex,
die Funktionpointer sind die der statischen BSEC-Lib.
Sieht man auch Anhand der Versionierung.
Aber ohne tiefere Kenntnisse um die Installation der Lib wird das schwierig zu kompilieren sein....
Die Infos dazu stehen aber hier im Thread.  :D

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: Prof. Dr. Peter Henning am 10 Januar 2020, 10:40:53
Hmmm. Ich denke, ich werde im kommenden Sommersemester mal einen Studenten an die Korrektur der Tasmota-Software setzen.

LG

pah
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: PeMue am 31 Januar 2020, 16:26:41
Hallo zusammen,

ich habe mal wieder probiert die BSEC Software einzubinden und mir ist folgendes aufgefallen:
- auf der Bosch Seite (https://www.bosch-sensortec.com/media/boschsensortec/downloads/bsec/bsec_1-4-7-4_generic_release.zip) bekommt man die v1.4.74 und
- im Library Manager bekommt man die v1.5.1474 von github (https://github.com/BoschSensortec/BSEC-Arduino-library) angeboten
Ich habe jetzt mal für ESP8266 die Anweisungen aus dem PDF der v1.4.74 (BSEC_1.4.7.4_Generic_Release\integration_guide\BST-BME680-Integration-Guide-AN008-47.pdf) befolgt und auch die binaries aus dieser Version reinkopiert.
Damit habe ich den Universalsensor Sketch für ESP8266 kompiliert -> funktioniert.

Generell ist das Ganze ein bisschen umständlich gemacht  :o :o :o.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: papa am 31 Januar 2020, 17:09:14
Schaut mal hier https://homematic-forum.de/forum/viewtopic.php?f=76&t=49422&p=560287#p559575
Da hat sich jemand umfangreich mit dem Sensor und dessen Kalibrierung beschäftigt. Vielleicht hilft das ja.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: peterk_de am 05 Februar 2020, 10:57:11
Ich habe jetzt auch ein paar von den Dingern und will sie direkt per I2C an meinen eh schon vorhandenen Raspberry-Roomnodes betreiben. Das läuft soweit, ich hänge gerade - natürlich - an der IAQ-Berechnung. Die BSEC-Library will ich nicht - u.A. möchte ich einen eigenen IAQ-Algorithmus, den ich auch nachvollziehen und genauer steuern kann, z.B. indem ich dem Sensor rückmelde, wenn das Fenster offen/geschlossen ist).

Offenbar niemand (außer Bosch in Library) hat sich bislang wohl mal genauer um die Kompensation der Widerstandswerte des VOC-Sensors gekümmert. Daher sehen auch die selbsterrechneten IAQ-Werte aus den ganzen Drittanbieter-Librarys (z.B. die Python-Library von Pimoroni) teilweise irgendwie schrottig aus.

Ich hab daher mal einen unprofessionellen Versuchsaufbau gemacht. Ergebnis: Der Ohm-Wert schießt mit abnehmender Luftfeuchte deutlich in die Höhe. Das deckt sich mit dem, wie sich solche Sensoren eben verhalten. Ist aber doof, wenn man nur den VOC-Anteil messen will und die Luftfeuchte ja eh separat hat. Die Temperatur hat (in einer anderen Messreihe ermittelt) offenbar kaum einen Einfluss (möglicherweise wegen einer guten Temperaturregelung der Sensorheizung).

Anbei ein Screenshot von meiner Messreihe Luftfeuchte (X-Achse) vs. Widerstand (Y-Achse) und meine erste simple Kompensationsformel inkl. Ergebnis. Falls jemand ein paar Beutel Silicagel o.Ä. und eine Plastiktüte zur Hand hat, würde ich mich freuen wenn ihr die Formel mal mit euren Sensoren testet (vor allem niedrige Luftfeuchtigkeitswerte sind spannend, die konnte ich noch nicht untersuchen)

Sensorparameter: 320 Grad - 150ms Heizzeit - 1Hz Abtastrate --> für andere Parameter wird man eine andere Formel brauchen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: herrmannj am 05 Februar 2020, 13:40:49
ZitatOffenbar niemand (außer Bosch in Library) hat sich bislang wohl mal genauer um die Kompensation der Widerstandswerte des VOC-Sensors gekümmert.
Sag das nicht ;) Könntest hier im forum fündig werden.
ZitatDaher sehen auch die selbsterrechneten IAQ-Werte aus den ganzen Drittanbieter-Librarys (z.B. die Python-Library von Pimoroni) teilweise irgendwie schrottig aus.
yepp, sind idR unbrauchbar.

Achtung, Du korrigierst mit der relativen Feuchte. Das funktioniert weil T in Deinem Aufbau ausreichend konstant ist. Ausschlaggebend ist jedoch die absolute Feuchte. Der Zusammenhang R und aH ist umgekehrt exponentiell.

Zwei weitere Faktoren sind Alterung und Sättigung. Stell mal Aceton daneben, entferne dann die Quelle und Lüfte bei (möglichst gleichbleibender T und aH). Der bleibt in der Sättigung (R steigt aber bleibt weit vom Ausgangswert entfernt). Erst wenn aH runter geht "erholt" der sich.

Bei 1Hz Abtastrate steigt die Abweichung des Temperatur Sensor (on-Chip). Empfehlung > 10S wenn Du T auch auswertest.

vg
Joerg
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: peterk_de am 07 Februar 2020, 18:57:03
Tatsächlich, hab ich nun gefunden - wie konnte ich nur an euch zweifeln ;)

Mit absHum zu rechnen macht natürlich total Sinn in Anbetracht des beheizten Sensors. Deine Formel ...

Zitat
  float ratio = (float)base / (r * aF * 7.0F);
  float tV = (1250 * log(ratio)) + 125;

... ist mir allerdings noch ein bisschen unklar. Wozu hast du den Faktor 7 da drin? M.E. wäre 1/7 sinnvoll, dann rechnet man zumindest ca. den ursprünglichen Widerstandswert (bei typischen 7g/m^3). Bei der Berechnung der tVOC kürzt er sich ja raus (da in base schon enthalten).

Zitat
Stell mal Aceton daneben, entferne dann die Quelle und Lüfte bei (möglichst gleichbleibender T und aH). Der bleibt in der Sättigung (R steigt aber bleibt weit vom Ausgangswert entfernt). Erst wenn aH runter geht "erholt" der sich.

OK das kriegt man vermutlich nicht rausgerechnet.

Zitat
Bei 1Hz Abtastrate steigt die Abweichung des Temperatur Sensor (on-Chip). Empfehlung > 10S wenn Du T auch auswertest.

Hier messe ich beim startup den Temperatur-Offset. rH rechne ich entsprechend um.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: herrmannj am 07 Februar 2020, 19:10:31
Ja das Mal 7 ... Durch 7 war sinnfrei ;)

Ich hab mittlerweile einen verfeinerten Algorithmus der bisher alle Hürden genommen hat. Ich schaue Mal dass ich den in GitHub bringe
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: peterk_de am 08 Februar 2020, 13:37:05
Also die Korrektur mit *absHum/7 übertrifft schonmal meine Erwartungen - das ist in dem oberen Diagramm die Kurve in Orange, gelb ist der rohe Widerstand.

Man sieht super wie der korrigierte Widerstand beim Lüften (Sensor direkt hinter dem offenen Fenster) fast konstant bleibt und nur ein bissel zittert (ist noch nicht sonderlich gefiltert). Ab um 11 schwappt schwallweise Küchenmief rüber ^^

Eigentlich reicht mir das so schon vollkommen um weiterzumachen mit dem IAQ-Score ^^ Die Baseline-Korrektur mache ich jetzt einfach über FHEM (Fenster nach mindestens 10 min geschlossen (oder CO2 < 500, wo Sensor vorhanden) --> Baseline Reset auf aktuellen Wert; mit kontinuierlicher Vergrößerung, falls mal dann doch noch mal ein größerer R-Wert kommt während das Fenster zu ist)

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 09 Februar 2020, 11:14:12
Hallo peterk_de,

... wilkommen im Club... ;)  :)

Ich denke auch, daß die Baseline-Korrektur eigentlich noch die betstehende Schwachstelle im Meßverfahren ist.
Eigentlich müsste der Sensor immer wieder in "sauberer" Luft kalibriert werden.
Bei Positionierung an einem offenen Fenster erübrigt sich das (im Sommer) bei gelegentlichen ESP-Resets ...  :D ;)

Nachdem sich seit Herauskommen des BME680-Sensors um die 2016, haben hier viele Leute in diesem Thread sehr viel Zeit, Arbeit und Mühe
investiert um das Projekt immer wieder weiter nach vorne gebracht haben. Dann fände ich es toll, wenn Du Deine
Ergebnisse  konkreter hier zur Verfügung stellen würdest, um uns alle einen Schritt weiter nach vorne bringen.   


Verstehe mich bitte nicht falsch, musste das einfach mal loswerden ...  ;)

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: peterk_de am 09 Februar 2020, 12:05:03
Hey Juergs, selbstverständlich mache ich das. Ich bin aber noch nicht weiter als diejenigen, die das Ding schon länger haben, insofern kann ich noch nicht allzuviel beitragen.

Es läuft bei mir darauf hinaus, dass ich den BME die weitestgehend rohen Werte an FHEM liefern lassen werde (also das, was ihr alle schon habt) und dann einen Score durch FHEM berechne. Wenn das bei mir zufriedenstellend funktioniert, poste ich es natürlich. Hat den Vorteil, dass es dann völlig egal ist, wie man das Ding technisch angebunden hat. Und man bei Updates am Algorithmus, wenn man mehrere davon hat, nicht diverse ESPs neu flashen muss.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: twenta am 14 April 2020, 23:36:44
Hallo,
Darf ich mal so unverschämt reingrätschen und fragen ob Herrmannj schon die verfeinerte Version hochgeladen hat?
Danke :)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: herrmannj am 14 April 2020, 23:47:26
Ne, hat er noch nicht ... Macht er aber noch
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 15 April 2020, 14:19:44
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: herrmannj am 15 April 2020, 14:23:30
Zitat von: juergs am 15 April 2020, 14:19:44
    Hallo Jörg,
    Du wirst wohl Deine Gründe haben, schade dass es bisher nicht geklappt hat.

    Güße,
    Jürgen

    PS: plane zwei Erweiterungen des BME680:


    • Mit RISC-V-Sipeed-Longan-Nano (https://www.heise.de/newsticker/meldung/5-Dollar-Entwicklerboard-mit-RISC-V-Sipeed-Longan-Nano-4509949.html)
    • Mit Air602, in Micrpython ... ]
ganz unspektakulär. Muss nochmal aufgeräumt werden. Keine Zeit bisher. kommt asap
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 15 April 2020, 14:24:33
Hi,
beim "Aufräumen" kann ich auch gerne helfen ;-)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: peterk_de am 15 April 2020, 16:10:23
Das erinnert mich daran, dass ich euch meinen Algorithmus auch noch "schulde".

Der ist mittlerweile sehr gut abgehangen und funktioniert bei mir prima. Ich nutze dazu die rohen Widerstandswerte des BME680 und betreibe eine sehr simple "Sensorfusion" mit einem CO2-Sensor.

So sehen die Userreadings von meinem BME680-Device aus:

correctedKOhm {

my $absH = dewpoint_absFeuchte(ReadingsVal("$name","temperature",0), ReadingsVal("$name","humidity",0));
my $kOhm = ReadingsVal("$name","kOhm",0);

return int(($absH * $kOhm / 7)+0.5);

},voc {

my $absH = dewpoint_absFeuchte(ReadingsVal("$name","temperature",0), ReadingsVal("$name","humidity",0));
my $kOhm = ReadingsVal("$name","kOhm",0);

my $correctedKOhm = ($absH * $kOhm) / 7;
my $baseCorrectedKOhm = ReadingsVal("$name","baseCorrectedKOhm",370);
my $startup = ReadingsVal("$name","startup","");

my $diff = max(0,$baseCorrectedKOhm-$correctedKOhm);
my $tVOCfak = 2200/$baseCorrectedKOhm;

if ($startup eq "done") {
  return int(400+($diff*$tVOCfak));
} else {
  return 0;
}


},quality { (ReadingsVal("$name","voc",450)<700?"sehr gut":(ReadingsVal("$name","voc",450)<1000?"gut":(ReadingsVal("$name","voc",450)<1500?"mittel":"schlecht"))) }


In den Readings  kOhm, temperature und humidity des Devices müssen dazu die "nackten" Werte des BME680 drinstehen, wie auch immer ihr die in FHEM hineinbekommt. Startup wird bei mir done wenn der Sensor nach dem Einschalten warmgelaufen ist (nach 5 Minuten).

Die Baseline wird dann über ein ausgesprochen simples DOIF gesetzt:

([kue.balkontuer:"geschlossen"] and [kue.co2:co2] < 500)
  (setreading kue.iaq baseCorrectedKOhm [kue.iaq:correctedKOhm])


Mit anderen Worten, neue Baseline immer dann, wenn wirklich vollständig gelüftet wurde (machen wir immer über die dortige Balkontür). Geht auch ohne CO2-Sensor - dann könnte man z.B. auf  "Fenster war 30 Minuten offen" triggern.

Ergebnis ist dann ein Reading voc, das wirklich ziemlich gut mit dem CO2-Wert korreliert, aber eben auch durch Kochdünste mal nach oben ausreißt. Siehe z.B. Grafik am 13.4. gegen 21 Uhr
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 15 April 2020, 16:23:14
Hallp peterk_de,

interessante Herangehensweise.

Mit Jörgs Methode sieht es aber auch sehr plausibel aus.
Hier meine Anbindung üner ESPEasy und MQTT, die durchaus als wirklich sehr stabil und aussagekräftig zu betrachten ist.
Bei mir ist aber noch ein Glättungsalgorithmus zwischengeschalten, der die Ausreißer unterbindet und Steigungsänderungen etwas verzögert ...

Aber in der Tat, Baseline beim Lüften ... Aus- und -Wiedereinschalten. ;-)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: herrmannj am 16 April 2020, 01:06:36
Zitat von: juergs am 15 April 2020, 14:24:33
Hi,
beim "Aufräumen" kann ich auch gerne helfen ;-)
Wenn Du das mal nicht bereust ;) - allerdings kann ich aus bestätigen dass das in der Vergangenheit sehr gut funktioniert hat.

Hier ist das git: https://github.com/herrmannj/airq-mqtt

Ziele waren/sind: Umbau auf mqtt, die config vernünftig im Sensor speichern und TVOC noch besser.

Mein "Problem" ist eigentlich dass ich jetzt 4 Monate andere Sachen gemacht habe und ich weiß nicht mehr genau wo ich "damals" stehen geblieben bin.   ::) Fertig ist es nicht, soviel ist sicher. Ich erinnere mich dunkel das ich in der Adafruit BME was machen wollte, da hatte ich die richtige Stelle für den Temperatur Offset gefunden.

Zum TVOC: der Algorithmus war ja schon gut, Pferdefuß war die ABC, insbesondere in extrem Situationen (wie draußen bitter kalt / Luft trocken, etc)

Die Baseline hier arbeitet daher anders: da ist ein Lowpass vorgeschaltet.

Wenn "saubere Luft" erkannt wird (vie Res * AbsHum) wird nicht mehr blind und sofort die Baseline neu gesetzt. Statt dessen wird die Baseline (über den Filter) vergleichsweise langsam angepasst. Die Filterkonstanten und das Ausleseintervall zusammen machen so etwa 10-15min aus in denen die Baseline schrittweise immer weiter angehoben wird. Dadurch gleichen sich die Latenzen der Sensoren (Hum ist extrem) gegen den Filter aus. Das bedeutet jetzt nicht das man 15min lüften muss weil die Luft ja erstmal ok ist und der Filter läuft weiter.

Baseline (und in der Folge TVOC) "nutzen" sich im Verlauf von etwa 2 Tagen "ab" (Filter). Damit wird sicher gestellt dass im Normalfall alle ein bis 2 Tage eine Baseline Korrektur durchgeführt wird. Das bedeutet dass der Raum halte alle 1-2 Tage auch saubere Luft "sehen" muss. Das passiert aber eigentlich ganz automatisch: Büro bin ich tagsüber, Nachts wird von der Lüftung "durchgelüftet". Schlafzimmer andersrum , usw. Auch die Familie ist ja nie immer und überall gleichzeitig.

Die Werte de da jetzt aus dem Sensor rauspurzeln passen daher durchgängig zu dem was man Erwartet (sind logisch) und es gibt auch keine extremen Ausreißer mehr. Die "alte" Version hatte ja noch die Macke das eine verfälschte ABC teilweise dann 2-3 Wochen lang TVOC Werte von 600ppm angezeigt hat - selbst bei geöffnetem Fenster. Das ist alles weg- ist sogar auf etwas konservativ getuned. Aber so dass eben Essen kochen (oder Ausdünstungen wie auch immer) sicher erkannt werden.

Schau mal, vielleicht kannst Du ja erkennen wo ich stehen geblieben bin. Der Sensor läuft hier auf dem Schreibtisch seid jetzt 4 - 5 Monaten, viel fehlte da mMn nicht - mqtt aber zb fehlt, Config ist auch erst 80% (meine ich)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 16 April 2020, 08:37:29
Hallo Jörg,

das hört sich genau nach dem Passenden an.  :D
Meine Erfahrungswerte sind mit der "alten" Version eigentlich schon sehr gut und nachvollziehbar.
Aber das Bessere ist des Guten Feind ;-)

Sobald ich am Thema dran bin arbeite ich mich auch wieder ein, da es mir da genauso geht wie Dir.

Danke + Grüße
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: twenta am 08 Mai 2020, 15:03:50
Und nochmal eine ganz naive Frage... welchen Grund gibt es eigentlich nicht die Bosch bse Library zu nutzen? Weil sie proprietär ist oder gibt es weitere Gründe?
Ich teste diese gerade mit nem wemos und bin mit dem IAQ recht zufrieden...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 08 Mai 2020, 23:27:11
Zitat von: twenta am 08 Mai 2020, 15:03:50
Und nochmal eine ganz naive Frage... welchen Grund gibt es eigentlich nicht die Bosch bse Library zu nutzen? Weil sie proprietär ist oder gibt es weitere Gründe?
Ich teste diese gerade mit nem wemos und bin mit dem IAQ recht zufrieden...

Riesen Aufwand zu installieren, ändert sich gefühlt jeden Monat ... dann wieder von vorne ...
Also nicht gerade Anwender-freundlich.

Habe beide Varianten mehrfach am Laufen ... mit Jörgs Version mehr als zufrieden, da sie zuverlässig läuft!

Sobald ich etwas Luft  habe, kümmere ich mich um die neue Version.

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: AlphaKingOne am 14 Oktober 2020, 16:04:43
Hallo zusammen.
Ich hatte mir hier aus dem Forum mal die .bin zum Testen gezogen. War irgendwann im Frühjahr. Lief jetzt auch Monate lag sauber durch.

Seit Letzter Woche zeigt der Sensor auf einmal viel niedrigere werte an. Ich lag immer Zwischen 600-1300. Den einen Tag hatten wir etwas gefeiert deswegen war der Wert dann mal wieder erhört. Auf einmal Brach der Wert ein und jetzt bin ich immer so bei 150-650.

Defekt vom Sensor oder worauf tippt ihr?
https://www.directupload.net/file/d/5971/692nuneb_png.htm (https://www.directupload.net/file/d/5971/692nuneb_png.htm)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 14 Oktober 2020, 20:08:43
Hi,
vermute Baseline-Drift, dann ein Reset/Neustart mit neuer Baseline.

Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: AlphaKingOne am 24 Oktober 2020, 00:19:10
Zitat von: juergs am 14 Oktober 2020, 20:08:43
Hi,
vermute Baseline-Drift, dann ein Reset/Neustart mit neuer Baseline.

Jürgen

kann sein aber so ein Abfall hab ich noch nie beobachtet und bis heute sind die Werte niedriger als sonst. Wobei langsam gehen die wieder hoch. Es ist immer schwer sowas ohne Referenzwert zu beurteilen.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 24 Oktober 2020, 11:36:24
Es empfiehlt sich wegen der Baseline den Sensor zuerst an "frischer" Luft in Betrieb zu nehmen um die Baseline zu setzen.
Je nach Stabilität des 8266 oder Netzteil kann es aber vorkommen, das ein Reset die Baseline auf ein beliebiges VOC-Level setzt.
Das sich das dann additiv auswirkt .... wandert die Anzeige über einen längeren Zeitraum möglicherweise nach oben....

Na ja, als Referenz, ohne auf andere Sensoren auszuweichen, kann ich das BME680-Serial-Breakout-Board: GY-BME680MCUV1 (https://github.com/juergs/BME680_TFT_Monitor) empfehlen.
Es beinhaltet wohl die Bosch-BSEC-Shared-Lib und ist (noch) relativ günstig erhältlich.
Als Vergleich leistet es schon seit langer Zeit sehr gute Dienste.

Grüße,
Jürgen

Hier noch ein interessantes Projekt: https://www.umwelt-campus.de/forschung/projekte/iot-werkstatt/ideen-zur-corona-krise (https://www.umwelt-campus.de/forschung/projekte/iot-werkstatt/ideen-zur-corona-krise)
Mit Tipps: Frischluft zur Bestimmung der Baseline.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: adn77 am 11 Dezember 2020, 22:37:25
Vorab schonmal vielen Dank für die sehr erhellende Diskussion in diesem Thread und natürlich für die BME680 Bibliotheksanpassungen!

Ich habe einige ESPs seit Jahren im Einsatz und bin sehr positiv überrascht von der Funktionsvielfalt von ESPEasy.
Habe die aktuelle Dev-Version (mega-Branch) aus dem GIT und dazu die Bibliotheken von @juergs über PlatformIo für einen ESP-01 kompiliert.
(Neben BME680 habe ich noch den BH1750 angeschlossen).

Parallel dazu habe ich mir die letzten Quellen von @herrmannj angeschaut - da sieht die Berechnung inzwischen sogar etwas einfacher aus. Bin dabei, den Algorithmus in die js_BME680 Bibliothek einzubauen. Allerdings wundere ich mich, dass die Baseline bisher nicht im Flash zwischengespeichert wird. Ihr habt bestimmt einen triftigen Grund dafür!?  :)

Alex
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 12 Dezember 2020, 14:19:29
ZitatAllerdings wundere ich mich, dass die Baseline bisher nicht im Flash zwischengespeichert wird.

Na ja, da müsste man wohl Versuche starten, ob man durch eine gespeicherte Baseline ein "Genauigkeitsvorteil"  einkauft.
Solche Sachen wie z.B. Drift und Sensor-Alterung spielen da wohl noch eine Rolle.
Das lässt sich wohl nur durch weitere Versuchsreihen beantworten. Vielleicht kann  @herrmannj etwas mehr dazu beitragen?
Oder es reicht einfach aus,  bei geöffnetem Fenster die "Baseline" zu nutzen. (Manuell, nach Einschalten und ggf. nach einem Reset des ESPs?)
Wobei meine ESPEasy-Variante eigentlich klaglos mit MQTT und Grafana erfreulich konstant durchläuft und die angezeigten Werte durchaus plausibel sind 
Allerdings: Verbesserungen sind jederzeit willkommen ... :)

Grüße
Jürgen

PS: Es gibt ja mittlerweile viele interessante Aktivitäten zum BME680 + SCD30, wie Jörg auch schon erwähnte.

Auch hier z.B. https://forum.fhem.de/index.php/topic,108782.msg1029949.html#msg1029949 (https://forum.fhem.de/index.php/topic,108782.msg1029949.html#msg1029949)
oder hier: https://www.umwelt-campus.de/forschung/projekte/iot-werkstatt/ideen-zur-corona-krise-1 (https://www.umwelt-campus.de/forschung/projekte/iot-werkstatt/ideen-zur-corona-krise-1)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: Prof. Dr. Peter Henning am 12 Dezember 2020, 20:58:07
Ich bin von diesen Adsorptionssensoren in Bezug auf CO2 erst einmal komplett abgekommen, sondern verwende inzwischen MH-Z14 und MH-Z19B. Sehr viel besser .

Die Adsorptionssensoren werde ich demnächst parallel dazu betreiben, und den Wert aus den IR-Sensoren zur Kalibrierung der Adsorptionssensoren verwenden.

LG

pah
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 12 Dezember 2020, 21:32:52
Dann wäre sowas: Multifunktionaler-Luftqualität-Messgerät-Kohlendioxid-Gasanalysator (https://www.amazon.de/Multifunktionaler-Luftqualit%C3%A4t-Messger%C3%A4te-Kohlendioxid-Gasanalysator/dp/B08LL7JBSH/ref=psdc_6589163031_t4_B08M68B6LD)
mit TVOC + CO2 möglich :-)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: herrmannj am 12 Dezember 2020, 21:55:47
Der MH-Z19B (ABC abschalten!) macht einen exzellenten Job.

Damit die "Baseline" eines BME680 zu setzen wird nicht funktionieren. Erstens ist die Korrelation  TVOC und CO2 nicht zwingend. Wenn sie es wäre, dann bräuchte man den BME680 auch gar nicht. Zweitens ist die "Baseline" beim BME ein viel komplexeres Konstrukt verglichen mit (zB) dem MH-Z19B. MOX Sensoren sind 10^x mal empfindlicher für HO2 im Vergleich zum Zielgas. IR /MH-Z19B dagegen überhaupt nicht. Dazu kommen Memory Effekte beim MOX. Daher ist es auch nicht zielführend die MOX "Baseline" im Flash zu speichern.

vg
Joerg
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: Prof. Dr. Peter Henning am 13 Dezember 2020, 05:20:42
Du missverstehst mich - von einer Korrelation habe ich kein Wort geschrieben, und natürlich kann ich nicht die Baseline eines Sensors mit der eines anderen eichen. Allerdings habe ich mit dem MZ-Z19B einen CO2-Datenwert, der mir klar sagt, wann der Adsorptionssensor aus dem Ruder läuft und geheizt werden muss.

Setzt man darüber hinaus verschiedene Adsorptionssensoren ein, die unterschiedliche Empfindlichkeiten für andere Gase aufweisen, kann man durch eine entsprechende Ausgleichsrechnung sogar einzelne Komponenten des Gemisches bestimmen.

LG

pah
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: peterk_de am 13 Dezember 2020, 13:22:56
Zitat von: Prof. Dr. Peter Henning am 13 Dezember 2020, 05:20:42
Du missverstehst mich - von einer Korrelation habe ich kein Wort geschrieben, und natürlich kann ich nicht die Baseline eines Sensors mit der eines anderen eichen. Allerdings habe ich mit dem MZ-Z19B einen CO2-Datenwert, der mir klar sagt, wann der Adsorptionssensor aus dem Ruder läuft und geheizt werden muss.

Setzt man darüber hinaus verschiedene Adsorptionssensoren ein, die unterschiedliche Empfindlichkeiten für andere Gase aufweisen, kann man durch eine entsprechende Ausgleichsrechnung sogar einzelne Komponenten des Gemisches bestimmen.

LG

pah

Eine simple Version einer solchen Baseline-Korrektur mittels CO2-Sensor setze ich schon eine Weile ein (siehe weiter oben): wenn die Luft sauber ist (CO2 << 500), dann ist der aktuelle Wiederstandswert des MOx-Sensors die neue Baseline. Funktioniert schon ganz gut, natürlich nur unter der Annahme, dass es draußen nicht müffelt.

Gerade im Winter hätte ich aber gerne noch eine bessere Temperaturstabilität der Bosch-Sensoren. Leider geben sie aber die Temperatur des Heizelementes nicht aus, so dass eine Kompensation knifflig wird ...
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: herrmannj am 13 Dezember 2020, 13:42:24
Stell einige Minuten nach dem "kalibrieren" eine Schüssel mit kochendem Wasser in die Nähe des Sensors und warte kurz ab.  ;)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: Prof. Dr. Peter Henning am 13 Dezember 2020, 17:21:26
Oh Orakel, Ihr sprecht in Rätseln.

LG

pah
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: herrmannj am 13 Dezember 2020, 17:36:39
Der "Versuchsaufbau" war für peterk_de und mit einem Rätsel hat das wenig zu tun. Die Schüssel mit kochendem Wasser sorgt für eine höhere absolute Feuchte in der Luft. In deren Folge wird der MOX fälschlicherweise einen massiven TVOC Anstieg ausgeben.

Der "Versuchsaufbau" mit kochenden Wasser illustriert auf extreme Art ein reales Problem. Beim Lüften, speziell in der dunklen Jahreszeit, sinkt die absolute Feuchte im Raum (typischerweise). In den Räumen hast Du jedoch einen kontinuierlichen Feuchtigkeitseintrag (Atmen, kochen, usw). Weil der Feuchte Anteil den TVOC massiv überlagert sind absolute Werte so verfälscht, dass Steuerungen die darauf basieren keine sicher reproduzierbaren Ergebnisse  liefern oder ausreichend deterministisch sind.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 14 Dezember 2020, 17:43:21
Um das von Jörg gesagte vom SCD30 (NDIR)  mit eCO2 vom BME680 + BSEC noch zu verdeutlichen:
https://twitter.com/hosi1709/status/1321354977214955521 (https://twitter.com/hosi1709/status/1321354977214955521)

Die neueste BSEC (https://github.com/BoschSensortec/BSEC-Arduino-library/releases) Library-Version soll ohne Linkerscript-Gefummel auskommen:

v1.6.1480
@BoschSensortec BoschSensortec released this 26 days ago

Updated to v1.4.8.0.
Updated the ESP8266's static library to not need linker script modifications.

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: Prof. Dr. Peter Henning am 14 Dezember 2020, 19:23:13
Ich habe die Adsorptionssensoren in den SmartHome Hacks ausführlich behandelt und kann jedem gerne das physikalische Prinzip erklären. Insofern bleibe ich dabei: Verwendet man Sensoren mit unterschiedlichen Empfindlichkeitsprofilen, kann man auch einzelne Gase - ich denke an Stickoxide, Ozon, CO und CO2 - herausfieseln. Hat man nur einen Sensor, ist und bleibt das Kaffeesatzleserei und man kann durch keine noch so gute "Bibliothek" (aka Algorithmus) diese Daten erhalten.

Sieht man auch sehr deutlich an dem Peak der CO2-"Messung" aus dem Adsorptionssensor um ca. 16:20 heute - das KANN kein CO2 gewesen sein (ist ein CCS811). Der MHZ19 hängt derzeit an einem ESPDuino, das Programm kommt noch auf eine NodeMCU.

LG

pah
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: herrmannj am 14 Dezember 2020, 23:26:16
Zitat von: Prof. Dr. Peter Henning am 14 Dezember 2020, 19:23:13
... Insofern bleibe ich dabei: Verwendet man Sensoren mit unterschiedlichen Empfindlichkeitsprofilen, kann man auch einzelne Gase - ich denke an Stickoxide, Ozon, CO und CO2 - herausfieseln. ...
Ich habe nie das Gegenteil behauptet und sehe auch sonst niemanden. Klar kann man das. Mit den richtigen Kontakten und gegen Einwurf ganz vieler Münzen kann man da sogar richtig gute Sensoren kaufen die genau das machen. ;)

Unabhängig davon misst ein CCS811 natürlich kein Co2 sondern "berechnet" (btw furchtbar plump) ein eCO₂ (CO₂-Äquivalente). Was sinnfrei ist, da es eben keine zwingende Korrelation zwischen TVOC und CO₂ gibt. Und weil die TVOC Messung bauartbedingt relativ (und nicht absolut) ist, kann man damit halt nichts ernsthaftes anfangen. Btw der CCS811 gehört zu den grottigsten Vertretern seiner Zunft. Dann doch bitteschön wenigsten AMS IAQ oder BME680 ... :(

Von daher volle Zustimmung:
ZitatAutor: Prof. Dr. Peter Henning
« am: 12 Dezember 2020, 20:58:07 »
Ich bin von diesen Adsorptionssensoren in Bezug auf CO2 erst einmal komplett abgekommen, sondern verwende inzwischen MH-Z14 und MH-Z19B. Sehr viel besser .
Genauso siehts aus.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 23 Dezember 2020, 12:28:14
Wer evtl. einem herumliegenden CSS811-Modul trotzdem einer Verwendung zuführen möchte:
https://revspace.nl/CJMCU-811 (https://revspace.nl/CJMCU-811)
https://github.com/maarten-pennings/CCS811 (https://github.com/maarten-pennings/CCS811)

Dann noch eine interessante Abhandlung über Placing VOC Sensors for Assessing Air Quality (A CFD Study of Indoor VOC Distribution) (https://kth.diva-portal.org/smash/get/diva2:1233872/FULLTEXT01.pdf)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 26 Dezember 2020, 16:37:02
Hallo Zusammen,

wurde über eine Github-Issue über ein Verhalten des BME680 angesprochen:

ZitatI tried this library with my BME680 and I am 100% sure it gives wrong results in warmer rooms. The formula used to calculate tvoc is definitely not properly accounting for temperature. In a room with 28/29 °C the library gave a reading of 150-180 ppm in contrast to fresh (cold) air where it immediately went up to 240 before I closed the window.
Bottom line: Do not rely on the values produced here.

Deshalb habe ich selbst noch mal Versuche mit einer hohen Temperatur-Differenz beim setzen der Baseline mit rel.  hohem Temperturunterschied.

In Grafana mit einer Saplerate von 5 Minuten und Kurvenglättung komt der Effekt kaum zum Tragen.
Allerdings in FHEM mit kleinerer Samplerate wird der Effekt sichtbar.


Man sieht deutlich das Überschiessen der Luftfeuchtigkeit (und TVOC-Peak) im FHEM-Plot, wohl durch Kondensationseffekte am Sensor.
Da Ganze stabilisiert sich aber bei Angleichung an die Raumumgebung.
Durch eine höhere Abttastrate geht dieser Effekt im Grafana-Plot einfach unter.

Sieht für mich nach keinem Fehler aus, sondern bestätigt eher das von herrmannj über Absorptions-Sensor-Typen gesagte.  :)

Die Aussage:
ZitatBottom line: Do not rely on the values produced here.
ist mir dann doch etwas zu vorschnell und pauschal ....
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 28 Februar 2021, 10:00:52
Bosch Sensortec hat einen Nachfolger, den BME688 für den BME680 in petto:

Zitat
Environmental sensing with Artificial Intelligence.
... is the first gas sensor with #AI and lets you monitor #airquality and helps to improve your health and well-being. Train the BME688 yourself by using the new BME AI-Studio tool
ZitatAdditionally to all features of the BME680, the BME688 has a gas scanner function. In standard configuration, the presence of VSCs is being detected as indicator for e.g. bacteria growth.
And the gas scanner can be customized with respect to sensitivity, selectivity, data rate and power consumption as well.
The BME AI-Studio tool enables customers to train the BME688 gas scanner on their specific application

https://www.bosch-sensortec.com/products/environmental-sensors/gas-sensors/bme688/ (https://www.bosch-sensortec.com/products/environmental-sensors/gas-sensors/bme688/)

https://buyzero.de/products/bosch-bme688-gas-sensor-developer-kit (https://buyzero.de/products/bosch-bme688-gas-sensor-developer-kit)
https://buyzero.de/blogs/news/bme688-bme688-shuttle-board-status (https://buyzero.de/blogs/news/bme688-bme688-shuttle-board-status)

https://www.messe-ticket.de/Nuernberg/embeddedworld2021/ (https://www.messe-ticket.de/Nuernberg/embeddedworld2021/)

https://www.bosch-sensortec.com/media/boschsensortec/downloads/product_flyer/bst-bme688-fl000.pdf (https://www.bosch-sensortec.com/media/boschsensortec/downloads/product_flyer/bst-bme688-fl000.pdf)

Zitatwe will be able to ship at the end of March / beginning of April!

Ist halt alles im "preliminary"-Status noch mit Vorsicht zu geniessen ..  ;)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: m.zielinski am 17 März 2021, 15:44:16
Magst du nochmal deine aktuelle Wemos D1 / bme280 Firmware hochladen? Mit der bin hier im Thread vom November 2019 bekomme ich zwar Werte aber Tvoc bleibt auf NaN.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 17 März 2021, 16:42:48
Du meinst BME680 mit EaspEasy?  ;)
Ich vermute es ist was mit der Modulanbindung zum Wemos.
Welches Modul benutzt Du? Vielleicht fehlen die I2C-Pullup-Widerstände und müssen gesetzt werden?

Mit den Sourcen (https://github.com/juergs/ESPEasy_BME680_TVOC) könntest Du selbst ESPEasy mit der Arduino-IDE kompilieren ...

Mit den neuen Daten von hermannj (https://github.com/herrmannj/airq-mqtt)
Zitathttps://github.com/herrmannj/airq-mqtt/blob/master/IAQ_BME680.h
https://github.com/herrmannj/airq-mqtt/blob/master/IAQ_BME680.cpp
könntest Du sogar schon eine neuere Version erzeugen!


Was sagt das ESPEasy-Log? Wie ist Deine Konfiguration? Debug-Options (https://github.com/juergs/ESPEasy_BME680_TVOC/blob/master/ESP_Easy_BME680_Konfiguration.png) mal gesetzt und per SerialMonitor in Arduino abgefragt?

Läuft ein Beispiel-Sketch (https://randomnerdtutorials.com/bme680-sensor-arduino-gas-temperature-humidity-pressure/) für den BME680. Z.B. von Adafruit oder Pimoroni?
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: m.zielinski am 17 März 2021, 18:16:39
Ja natürlich den BME680.  cjmcu-680 https://www.amazon.de/gp/product/B07K1CGQTJ/ref=ppx_yo_dt_b_asin_title_o05_s00?ie=UTF8&psc=1

Ich habe diese BIN-genommen: 20191104_ESPEasy.ino.bin die du hier im Thread hochgeladen hattest.
Mit dem selber kompilieren komme ich noch nicht so recht weiter.

Einen Hinweis auf Pullup-Wiederstände hatte ich da nicht gefunden - hast du da einen Link für mich ?
ich habe den Wemos so verbunden:
3v3 - VCC
gnd -gnd (muss ich das auch mit SDO verbinden? Das habe ich nicht getan)
d1 - scl
d2 - sda

Mehr habe ich an dem Wemos nicht angeschlossen.

Ich hatte hier geschaut https://github.com/juergs/ESPEasy_BME680_TVOC - das passt also.

Und wie gesagt bekomme ich auch Werte für Barometer, Temperatur und Feuchtigkeit - nur nicht für VOC

Nachdem ich ESPEasy geflasht habe und dann wieder deine bin-Datei kommt jetzt auch bei TVoc ein Wert - was auch immer nun anders ist...
Trotzdem wäre ich für ein aktuelles Compilat dankbar - ich nuze dabei im moment die SLINK-Abindung - habe aber auch MQTTauf dem Fhem am laufen.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 17 März 2021, 19:46:13
Der BME680 wird mit I2C-Konfiguration (https://i2.wp.com/randomnerdtutorials.com/wp-content/uploads/2020/07/ESP8266-BME680-Environmental-Sensor-Wiring-Diagram-I2C-1.png?w=831&quality=100&strip=all&ssl=1) verbunden. Der SDO gehört zu SPI.
Anschluss analog zum BME280  :D

Wenn Du Daten angezeigt bekommst, sollte das so stimmen. Vielleicht ist etwas beim Flashen schiefgelaufen...

Der Sensor braucht etwas Zeit zum Starten evtl. kommt "0" oder "NaN" in der Initphase. Sollte aber nach ein paar Minuten dann Werte anzeigen ...  :)

Zitat//--- allow 300 sec (5 min) to warm-up sensor for stable voc resistance (300000ms)

Liefert also erst nach 5 Minuten Werte!

BME680-Breakout (https://easyeda.com/adrirobot/BME680-Breakout)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 19 März 2021, 08:18:45
Um die Integration des BME680-Plugin-Moduls in die aktuelle ESPEasy-Version werde ich hier (https://forum.fhem.de/index.php/topic,119678.msg1141132.html#msg1141132) weiterführen + dokumentieren.
Da die Lernkurve in den letzten 2 Jahren doch mit Visual Code und Platformio deutlich angestiegen ist und neue Grundlagen dafür erarbeitet werden müssen.  ;)


Grüße,
Jürgen

PS: Aktuelles Binary: ESPEasy-mega_BME680_TVOC_20210223/releases (https://github.com/juergs/ESPEasy-mega_BME680_TVOC_20210223/releases)

PS2: Implementierung neuer Baseline-Algorithmus: Sourcen und Binary der V2 im Github-Repository (https://github.com/juergs/ESPEasy-mega_BME680_TVOC_20210223/releases/tag/release_2.0)  (Vorsicht Beta !)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 29 März 2021, 17:37:14
Ich habe mal BSEC und Jörgs Baseline-Algorithmus einer "Langzeitbeobachtung" unterzogen und konnte daraus 3 Punkte ableiten
wie sich der BSEC-Algorithmus verhält.


Wäre für eine Baseline-Korrektur die Differenz zwischem z.B. Gleitendem Mittelwert (Ringpuffer für sinnvollen Zeitabschnitt) und dem größtem Minima-Ausschlag (prozentual gewichtet, ca. 10..20%)
ein möglicher Korrekturwert des bestehenden Algorithums von herrmanj?

Da ich ein Tiefpassfilter zwischengeschalten habe, sind Ausschläge zwar noch präsent, aber doch nicht so stark beeinflusst, wie unter BSEC. Dennoch scheint die zeitliche Verschiebung (Latenz)
ähnlich zu sein ...  ;)

Im Moment scheint mir Jörgs erster Algorithmus die bessere Wahl zu sein. Wenn man noch die Baseline-Kompensation in Griff bekommt, braucht man kein BSEC mehr  ;D
Die zweite Variante (mittlere Grafik) scheint mir noch nicht so gut zu funktionieren.

Grüße,
Jürgen
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: der_ventilator am 03 April 2021, 17:57:27
Im Anhang mal eine 24h Messung in meinem Schlafzimmer, inkl des Nachts eines Menschen drin schlafens, mit Fenster offen um 23:30 und dann nochmal um 10:00
Vergleich Sensair Sunrise CO2 Sensor (mit 30ppm Genauigkeit) und des V2 Filtered BME680 auf EspEasy
Den linearen CO2 Anstieg, den man im Raum hat, hat er nicht mitgekommen, aber nach Schließen des Fensters um 11:30 einen unerklärlichen, massiven Anstieg VOC gemessen, den der CO2 Sensor nicht gesehen hat (Zimmer war danach menschenleer)
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 03 April 2021, 20:24:23
Könnets Du bitte noch mal ein ähnliches Szenario ohne Filterung erzeugen.
Wenn möglich, mit Luftfeuchte.

Grüße,
Jürgen 

/Edit: das Sprungantwortverhalten der V2, nach Fensteröffnen und schließen, ist auch bei mir auch nachvollziehbar.
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 04 April 2021, 16:23:06
Nochmal die V1 mit verschiedenen Filterarten ( Kalman- + gewichteter Exponentialfilter)  in die Betrachtung.



Man sieht in Phase 1 die hohe Abweichung des Verlaufs zur reinen resistiven Kurve, während Phase 2 sauber und Phase 3 verzögert folgt.
/edit: Der Widerstand des BME680 wird größer, wenn Luft reiner. TVOC folgt gegensinnig. Scheint also eigentlich alles OK, bis auf die hohe "Verstärkung" bei schneller Differenz.
Muss den Einfluss der hohen Sprungantworten im V1-Algorithmus noch genauer herausarbeiten.

Mir fehlt im Moment der Vergleich zu einem realen CO2-Sensor.
Mein MHZ19B scheint nicht so richtig zu wollen ...  :(
Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: der_ventilator am 04 April 2021, 22:53:02
Zitat von: juergs am 03 April 2021, 20:24:23
Könnets Du bitte noch mal ein ähnliches Szenario ohne Filterung erzeugen.

/Edit: das Sprungantwortverhalten der V2, nach Fensteröffnen und schließen, ist auch bei mir auch nachvollziehbar.

Na klar, ich hab den Filter ausgeschaltet und werde berichten, sobald die Daten vorliegen. Bis dahin die Daten der letzten 2 Tage inkl T und %H (=2 Schlafzyklen) und Filter tVOC=true

Titel: Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
Beitrag von: juergs am 05 April 2021, 00:53:36
Resistance (rt)  - V1 (bl)  - V2 (gn). Ohne Filterung.
V2: Baseline-Berechnung braucht > 5 Minuten.
V2: Fensteröffnen ab ca. 800 fährt in die Begrenzung der Baseline ...

An der Außenluft, sieht man das Verhalten der V2 gegen die V1.
Die V1 reagiert etwas verstärkend zu Änderungen aber folgt sicher Rsensor.

Im Moment sehe ich eher die V1 vorne. Das Offset-Problem resultiert eigentlich nur aus der Veränderung der Baseline bei einem Reset in belasteter Luft.
Die V2 reagiert etwas übernervös auf schnelle Änderungen.
Das wirft natürlich die Frage (wieder) auf, dass man die Baseline-"Kalibrierung" in "reiner" Luft speichert und nach einem Reset weiter verwendet.
Das sieht Bosch-Sensortech auch über die Parameter-Sicherung in der Adafruit-Lib so vor.

Evtl. nehme ich in mein Testcase von  hier (https://forum.fhem.de/index.php/topic,116185.0.html) den MHZ19 (https://www.letscontrolit.com/forum/viewtopic.php?t=3736) + MQTT (Publish) und den SCD30 noch mit auf.

Auch dieser Thread: https://forum.fhem.de/index.php/topic,96241.msg892379.html#msg892379 (https://forum.fhem.de/index.php/topic,96241.msg892379.html#msg892379) ist zu berücksichtigen!