HB-UNI-Sen-IAQ - Luftgütemessung mit BME680
Moderator: Co-Administratoren
- FUEL4EP
- Beiträge: 586
- Registriert: 01.11.2017, 17:26
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 76 Mal
- Danksagung erhalten: 79 Mal
- Kontaktdaten:
Re: HB-UNI-Sen-IAQ - Luftgütemessung mit BME680
Hi Jérôme,
lass mich bitte zuerst versuchen, die Konflikte meinerseits zu beheben.
lass mich bitte zuerst versuchen, die Konflikte meinerseits zu beheben.
Zuletzt geändert von FUEL4EP am 26.01.2020, 21:39, insgesamt 1-mal geändert.
Grüße
Ewald
Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs
Ewald
Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs
- FUEL4EP
- Beiträge: 586
- Registriert: 01.11.2017, 17:26
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 76 Mal
- Danksagung erhalten: 79 Mal
- Kontaktdaten:
Re: HB-UNI-Sen-IAQ - Luftgütemessung mit BME680
Hi Jérôme,
der neue Pull Request ist gemacht. Dieses Mal gab es keine Merge Konflikte
Vielen Dank!
der neue Pull Request ist gemacht. Dieses Mal gab es keine Merge Konflikte
Vielen Dank!
Zuletzt geändert von FUEL4EP am 26.01.2020, 21:39, insgesamt 1-mal geändert.
Grüße
Ewald
Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs
Ewald
Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs
-
- Beiträge: 12115
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 848 Mal
- Danksagung erhalten: 2150 Mal
- Kontaktdaten:
Re: [temporarily discontinued] HB-UNI-Sen-IAQ - Luftgütemessung mit BME680
Gemerged.
Machst du den anderen PR zu?
Machst du den anderen PR zu?
- FUEL4EP
- Beiträge: 586
- Registriert: 01.11.2017, 17:26
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 76 Mal
- Danksagung erhalten: 79 Mal
- Kontaktdaten:
Re: HB-UNI-Sen-IAQ - Luftgütemessung mit BME680
Der PR ist zugemacht.
Zuletzt geändert von FUEL4EP am 26.01.2020, 21:40, insgesamt 1-mal geändert.
Grüße
Ewald
Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs
Ewald
Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs
- FUEL4EP
- Beiträge: 586
- Registriert: 01.11.2017, 17:26
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 76 Mal
- Danksagung erhalten: 79 Mal
- Kontaktdaten:
Re: HB-UNI-Sen-IAQ - Luftgütemessung mit BME680
Hier für diejenigen, die neu einsteigen, eine Aufbau-, Programmier- und Kalibrieranleitung für die HB-UNI-Sen-IAQ - Luftgütemessung mit BME680.
1. Hardware
Eine schnelle Möglichkeit, die benötigte Hardware zu bauen, bietet der Bausatz von Technikkram.
Der Aufbau ist unter
https://technikkram.net/2018/05/homemat ... genbau
beschrieben. Alle Bauteile und ein geeignetes Gehäuse können im Technikkram Shop bestellt werden:
https://smartkram.de/diy-bausatze/#hydr ... er-bausatz
Ein Selbstbau ist selbstverständlich auch möglich.
Der dort verwendete BME280 Sensor ist durch einen BME680 Sensor zu ersetzen. Der BME680 Breakout - Air Quality, Temperature, Pressure, Humidity Sensor von Pimoroni wird von mir eingesetzt.
Dieser Sensor passt perfekt zu der Platine von Technikkram und läuft mit einer Batteriespannung bis 1,8 Volt.
2. Gegenmaßnahmen zum Babbling Idiot
Nach dem Aufbau der Basisplatine und vor dem Anlöten des BME680 Sensors wird die so genannte Brown-Out-Detection (BOD) bei 2.7V deaktiviert.
Dazu wird am Besten ein ISP Programmer, z.B. ein Diamex ISP USB Programmer, verwandt. Der Programmer muss auf 3.3V Ausgangspegel einstellbar sein!
Ohne diese Gegenmaßnahme schaltet sich der Arduino bei Batteriebetrieb nach wenigen Wochen ab.
Details sind unter
https://asksinpp.de/Grundlagen/FAQ/babb ... ss-des-isp
beschieben.
Unter Linux werden die Fuses für den Diamex ISP USB Programmer mit
geflasht. Auf stabile Verbindungen zwischen Arduino und ISP ist zu achten.
Ich empfehle Optiboot als Bootloader zu installieren, da sonst der Code Flash Speicher des 328P zu klein ist, um auch den Serial Monitor Debug Mode zu unterstützen.
3. Verringerung der Stromaufnahme bei Batteriebetrieb
Wie in der oben referenzierten Technikkram Aufbauanleitung beschrieben, werden nach der erfolgreichen Erstprogrammierung und Inbetriebnahme 3 Bauteile auf der Arduino Platine entfernt:
a) rote SMD-LED (siehe Beschreibung von Technikkram)
b) gruene SMD-LED (siehe Beschreibung von Technikkram)
Zusätzlich wird wie unter z.B. https://www.bjoerns-techblog.de/2017/10 ... power-mod/ beschrieben
c) der LDO-Spannungsregler
entfernt.
4. Programmieren des Arduinos
Das Programmieren des Arduinos kann z.B. mit einem FTDI Adapter USB zu TTL Serial für 3,3V und 5V für Arduino gemacht werden,
der z.B. auch bei Technikkram bestellbar ist. Der Prgrammer muss auf 3,3V Programmierspannung eingestellt werden!
5. Gehäuse
Wenn ein Gehäuse verwandt wird, darf es nicht (mehr) nach Plastik riechen sonst werden die Messungen mit dem Gassensor verfälscht.
Also gegebenenfalls das Gehäuse mehrere Wochen an frischer Luft 'ausstinken' lassen.
6. Benötigte Bibliotheken für das Arduino IDE
a) EnableInterrupt https://github.com/GreyGnome/EnableInterrupt
b) LowPower https://github.com/rocketscream/Low-Power
c) ClosedCube_BME680_Arduino https://github.com/closedcube/ClosedCube_BME680_Arduino
Diese Bibliothek hat leider viele Fehler. Dafür habe ich mehrere Fixes in PullRequests zur Verfügung gestellt.
Leider führt der 'Maintainer' dieser Bibliothek meine Pull-Requests nicht durch. Es gibt seit Wochen keine Rückmeldung. Solange dort meine Pull-requests nicht eingeplegt sind sind, bitte meinen Fork 'implement_Bosch_datasheet_integer_formula' nehmen:
https://github.com/FUEL4EP/ClosedCube_B ... r_formulas unbedingt nehmen!
7. Arduino Sketch
a) https://github.com/jp112sdl/HB-UNI-Sen-IAQ mindestens commit 4072941. Unbedingt auch das Unterverzeichnis 'sensors' mitkopieren!
Den Sketch 'HB-UNI-Sen-IAQ.ino' in das Arduino IDE laden. Dann eine persönliche Device ID und Device Serial eintragen:
zu z.B.
Das Device Serial muss aus exakt 10 Zeichen bestehen.
Dann den Sketch in den Arduino hochladen.
8. Einbrennen des BME680 Sensors
Ein neuer BME680 Sensor altert die ersten Wochen stark. Daher sind die Messwerte erst nach ein paar Wochen Betriebs verlässlich.
Eine erneute Kalibrierung sollte mindestens nach 4 Wochen ununterbrochenen Betriebs vorgenommen werden.
9. Offsetkompensation Temperatur und relative Luftfeuchtigkeit
Bedingt durch das interne Heizelement des BME680 ist die gemessene temperatur typischweise 1,0 .. 2,0 Grad Kelvin zu hoch.
Dies kann im Sketch 'HB-UNI-Sen-IAQ.ino' korrigiert werden:
Auch eventuelle Abweichungen der gemessenen relative Luftfeuchtigkeit können dort korrigiert werden:
9. Kalibrierung
Eine Kalibrierung sollte vorgenommen werden, wenn
1. Eine Programmierung des Arduinos vorgenommen wurde
2. Die Batterien ersetzt wurden
3. 4 Wochen nach der ersten Inbetriebnahme
4. Danach alle 3..6 Monate oder nach Bedarf, anfangs eher alle 3 Monate bis sich die Alterung verringert
Die Empfehlung ist vor der Kalibrierung zuerst die Offsetkompensation nach Punkt 9. zu machen.
Sonst gehen die Kalibrierwerte bei der Programmierung der Offsetkompensation verloren.
a) Kalibrierung in der Software HB-UNI-Sen-IAQ/sensors/sens_bme680.h:
In sens_bme680.h sind die Startwerte des oberen und unteren Grenzwerts für den gemessenen Gaswiderstand definiert:
Diese werden in die aktuellen Grenzwerte
übernommen und dann über die Maximum- und Minimumfilter dynamisch nachgeführt:
In die Spitzenwertfilter ist ein 'Infinite Impulse Response'-Abklingfaktor eingebaut (IIR_FILTER_COEFFICIENT), der gemessene Spitzenwerte innerhalb einer Woche um den Faktor 0.71 reduziert:
Damit wird auch bei anfänglicher Alterung ein automatisches Kalibrieren möglich.
b) Kalibrierung mit Gasen:
Dazu wird der Sensor sowohl frischer Luft (gemessene Luftgüte 100%) als auch stark riechenden Gasen, z.B. Käse, (gemessene Luftgüte 0% .. 15%) ausgesetzt.
i) Plaziere den Sensor mehrere Stunden draußen an die frische Luft, z.B. auf eine Fensterbank.
Der oben beschrieben obere Spitzendetektor führt die Variable _gas_upper_limit nach. Die Variable repräsentiert den maximal gemessenen Gaswiderstand.
ii) Setze den Sensor für ca. 20..30 Minuten stark riechenden Gasen bzw. Gerüchen aus:
a) Platziere Käse wie Gouda, Parmesan oder Roquefort in die unmittelbare Nähe des Sensors. Achte darauf, dass dort keine Rückstände davon bleiben.
b) Den stärksten Effekt erhalten wir mit Isopropanol (2-propanol), z.B. medizinische Desinfektionslösung, das auf ein Papiertaschentuch getropft wird und dann
direkt neben den BME680 Sensor gelegt wird. Die gemessene Luftgüte geht dann auf 0% zurück.
Der oben beschrieben untere Spitzendetektor führt die Variable _gas_lower_limit nach. Die Variable repräsentiert den minimal gemessenen Gaswiderstand.
c) Auslesen von Zwischenwerten
Mittels des Werkzeugs 'serieller Monitor' vom Arduino IDE können Zwischenwerte ausgelesen werden:
Dazu im Sketch 'HB-UNI-Sen-IAQ.ino' das Define NDEBUG
auskommentieren.
Im seriellen Monitor wird für jeden Messzyklus (alle 4 Minuten ein Messzyklus) Folgendes ausgegeben:
13:24:22.994 -> Gas heat_stab_r = 1
13:24:22.994 -> Gas gas_valid_r = 1
13:24:22.994 -> gas: 1205
13:24:22.994 -> ....Gas heat_stab_r = 1
13:24:23.426 -> Gas gas_valid_r = 1
13:24:23.426 -> gas: 669
13:24:23.426 -> ...Gas heat_stab_r = 1
13:24:23.725 -> Gas gas_valid_r = 1
13:24:23.725 -> gas: 754
13:24:23.725 -> ...Gas heat_stab_r = 1
13:24:24.024 -> Gas gas_valid_r = 1
13:24:24.024 -> gas: 770
13:24:24.024 -> ...Gas heat_stab_r = 1
13:24:24.389 -> Gas gas_valid_r = 1
13:24:24.389 -> gas: 786
13:24:24.389 -> avg gas: 836
13:24:24.389 -> Gas UPPER LIMIT = 20785
13:24:24.389 -> Gas LOWER LIMIT = 836
13:24:24.389 -> T = 238
13:24:24.389 -> P = 1009.9699707031
13:24:24.389 -> PNN = 10139
13:24:24.389 -> Hum = 40
13:24:24.389 -> Gas = 836
13:24:24.389 -> Gas FACTOR = 1.0000000000
13:24:24.389 -> AQ = 0% (H: 0% + G: 0%)
13:24:24.389 -> corrected T/H = 238/40
13:24:24.389 -> <- 11 03 86 70 F1D101 000000 00 EE 27 9B 28 00 C8 21 - 6373
Das ist eine Messung mit Isopropanol zu Bestimmung des unteren _gas_lower_limit Kalibrierwerts. Die Variable _gas_lower_limit nimmt den Minimalwert von 836 Ohn an (-> Gas LOWER LIMIT = 836).
Hier eine Messung nach der Kalibrierung an der frischen Luft zur Bestimmung des oberen _gas_upper_limit Kalibrierwerts:
15:04:40.116 -> Gas heat_stab_r = 1
15:04:40.116 -> Gas gas_valid_r = 1
15:04:40.150 -> gas: 43245
15:04:40.150 -> ....Gas heat_stab_r = 1
15:04:40.547 -> Gas gas_valid_r = 1
15:04:40.547 -> gas: 17116
15:04:40.547 -> ...Gas heat_stab_r = 1
15:04:40.879 -> Gas gas_valid_r = 1
15:04:40.879 -> gas: 21193
15:04:40.879 -> ...Gas heat_stab_r = 1
15:04:41.177 -> Gas gas_valid_r = 1
15:04:41.177 -> gas: 24705
15:04:41.177 -> ...Gas heat_stab_r = 1
15:04:41.475 -> Gas gas_valid_r = 1
15:04:41.475 -> gas: 26499
15:04:41.541 -> avg gas: 26551
15:04:41.541 -> Gas UPPER LIMIT = 35125
15:04:41.541 -> Gas LOWER LIMIT = 836
15:04:41.541 -> T = 106
15:04:41.541 -> P = 1037.2199707031
15:04:41.541 -> PNN = 10414
15:04:41.541 -> Hum = 69
15:04:41.541 -> Gas = 26551
15:04:41.541 -> Gas FACTOR = 1.0000000000
15:04:41.541 -> AQ = 74% (H: 0% + G: 74%)
15:04:41.541 -> corrected T/H = 106/69
15:04:41.541 -> <- 11 1C 86 70 F1D101 000000 00 6A 28 AE 45 4A 20 20 - 42211
Die Variable _gas_upper_limit nimmt den Maximalwert von 35125 Ohn an (-> Gas UPPER LIMIT = 35125). Der aktuell gemessene Gaswiderstandswert kann schon wieder geringer sein (-> Gas = 26551 oder -> avg gas: 26551).
Es werden pro Messzyklus 5
schnell aufeinander folgende Messungen gemacht und daraus der Mittelwert gebildet:
15:04:40.116 -> Gas heat_stab_r = 1
15:04:40.116 -> Gas gas_valid_r = 1
15:04:40.150 -> gas: 43245
15:04:40.150 -> ....Gas heat_stab_r = 1
15:04:40.547 -> Gas gas_valid_r = 1
15:04:40.547 -> gas: 17116
15:04:40.547 -> ...Gas heat_stab_r = 1
15:04:40.879 -> Gas gas_valid_r = 1
15:04:40.879 -> gas: 21193
15:04:40.879 -> ...Gas heat_stab_r = 1
15:04:41.177 -> Gas gas_valid_r = 1
15:04:41.177 -> gas: 24705
15:04:41.177 -> ...Gas heat_stab_r = 1
15:04:41.475 -> Gas gas_valid_r = 1
15:04:41.475 -> gas: 26499
15:04:41.541 -> avg gas: 26551
Zur Zeit ist noch ein Fehler in der Messerfassung drin: Der erste der 5 Messwerte stammt noch vom vorausgegangenen Messzyklus. Daher kann er stärker von den darauffolgenden vier Messungen abweichen.
Das wird zu einem späteren Zeitpunkt korrigiert. (Das ist im letzten Pull Request gefixt) Nun steigen die gemessenen Gaswiderstände von den Messungen 0..4 an, da die Hot Plate Temperatur des Sensors noch ansteigt.
-> Gas heat_stab_r = 1 zeigt an, dass die Solltemperatur erreicht worden ist.
-> Gas gas_valid_r = 1 zeigt an, dass ein gültiger Messwert im BME680 vorliegt.
-> gas: <int> zeigt den Gaswiderstand der aktuellen Messung an
-> avg gas: <int> zeigt den Mittelwert der 5 Messungen eines Zyklus an
Ein Messzyklus dauert 4 Minuten = 240 Sekunden:
Als Heizzieltemperatur sind zur Zeit 310 Grad eingestellt:
Die Heizdauer beträgt 300 ms. Wird sie kürzer gewählt, wird die Solltemperatur nicht mehr erreicht, erkennbar an > Gas heat_stab_r = 0. Die Heizzieltemperatur sollte 320 Grad nicht überschreiten.
Die Luftgüte wird gewichtet aus der relativen Luftfeuchtigkeit und dem gemessenen Gaswiderstand berechnet.
In 'sens_bme680.h' können die Gewichtungsfaktoren definiert werden. Zur Zeit ist der Gewichtungsfaktor fuer die releative Luftfeuchtigkeit auf Null gesetzt:
Im seriellen Monitor wird das so ausgegeben:
15:44:58.017 -> AQ = 91% (H: 0% + G: 91%)
Der Luftgüteindex ist hier 91%, das sich zusammensetzt aus 0% von der relativen Luftfeuchtigkeit und 91% von dem gemessenen Gaswiderstand herrührend.
Wird der Sensor im Außenbereich eingesetzt, sollte der Faktor GAS_FACTOR auf 1.0 gesetzt werden.
Wird der Sensor im Innenbereich eingesetzt, sollte der Faktor GAS_FACTOR so gesetzt werden (GAS_FACTOR < 1.0), dass der Luftgüteindex IAQ bei Querlüftung mit geöffneten Fenstern ca. 90..95% betraegt.
Die genaue Einstellung ist Ermessenssache, was als gute Luft angesehen wird.
d) Einstellen der oberen und unteren Grenze der Gaswiderstandswerte
Nach einer erfolgreicher ersten Kalibrierung die gemessenen Maximal- und Minimalgaswiderstände als neue Startwerte definiert werden:
GAS_LOWER_LIMIT sollte auf ca. 1,3 * (-> Gas LOWER LIMIT im Debugmode) gesetzt werden (siehe oben).
GAS_UPPER_LIMIT sollte auf ca. 0,8 * (-> Gas UPPER LIMIT im Debugmode) gesetzt werden (siehe oben).
Danach den Sketch mit den neu gesetzten Defines auf den Arduino hochladen. Danach muß die Kaibrierung leider nochmals wiederholt werden, da das Programmieren die Grenzwerte GAS_LOWER_LIMIT und GAS_UPPER_LIMIT auf die neuen Initialwerte setzt.
10. Raspberrymatic
Um den Sensor bei einer Raspberrymatic anmelden zu können, muss auf der Raspberrymatic das JP-HB-Devices-addon Addon für 'Homebrew'
Devices von Jérôme installiert werden:
https://github.com/jp112sdl/JP-HB-Devices-addon
Von dort bitte das letzte Addon Release installieren. Danach kann der Sensor auf der Raspberrymatic angelernt werden.
11. Batterielebensdauer
Eine 5-fach Messung eines Messzyklus braucht ca. 13mA * 0,3 Sekunden * 5 = 0.0195 As. Eine AA Batterie fasst ca. 1500mAh. Damit sollte ein
Batteriesatz mehrere Monate halten. Der konkrete Nachweis steht noch aus.
Rückmeldungen und Erfahrungen sind willkommen.
Viel Erfolg und Spaß mit dem Gassensor BME680 wünscht
Ewald
1. Hardware
Eine schnelle Möglichkeit, die benötigte Hardware zu bauen, bietet der Bausatz von Technikkram.
Der Aufbau ist unter
https://technikkram.net/2018/05/homemat ... genbau
beschrieben. Alle Bauteile und ein geeignetes Gehäuse können im Technikkram Shop bestellt werden:
https://smartkram.de/diy-bausatze/#hydr ... er-bausatz
Ein Selbstbau ist selbstverständlich auch möglich.
Der dort verwendete BME280 Sensor ist durch einen BME680 Sensor zu ersetzen. Der BME680 Breakout - Air Quality, Temperature, Pressure, Humidity Sensor von Pimoroni wird von mir eingesetzt.
Dieser Sensor passt perfekt zu der Platine von Technikkram und läuft mit einer Batteriespannung bis 1,8 Volt.
2. Gegenmaßnahmen zum Babbling Idiot
Nach dem Aufbau der Basisplatine und vor dem Anlöten des BME680 Sensors wird die so genannte Brown-Out-Detection (BOD) bei 2.7V deaktiviert.
Dazu wird am Besten ein ISP Programmer, z.B. ein Diamex ISP USB Programmer, verwandt. Der Programmer muss auf 3.3V Ausgangspegel einstellbar sein!
Ohne diese Gegenmaßnahme schaltet sich der Arduino bei Batteriebetrieb nach wenigen Wochen ab.
Details sind unter
https://asksinpp.de/Grundlagen/FAQ/babb ... ss-des-isp
beschieben.
Unter Linux werden die Fuses für den Diamex ISP USB Programmer mit
Code: Alles auswählen
sudo avrdude -v -pm328p -P usb -c stk500v2 -b 9200 -Ulfuse:w:0xFF:m -Uhfuse:w:0xD2:m -Uefuse:w:0xFF:m
geflasht. Auf stabile Verbindungen zwischen Arduino und ISP ist zu achten.
Ich empfehle Optiboot als Bootloader zu installieren, da sonst der Code Flash Speicher des 328P zu klein ist, um auch den Serial Monitor Debug Mode zu unterstützen.
3. Verringerung der Stromaufnahme bei Batteriebetrieb
Wie in der oben referenzierten Technikkram Aufbauanleitung beschrieben, werden nach der erfolgreichen Erstprogrammierung und Inbetriebnahme 3 Bauteile auf der Arduino Platine entfernt:
a) rote SMD-LED (siehe Beschreibung von Technikkram)
b) gruene SMD-LED (siehe Beschreibung von Technikkram)
Zusätzlich wird wie unter z.B. https://www.bjoerns-techblog.de/2017/10 ... power-mod/ beschrieben
c) der LDO-Spannungsregler
entfernt.
4. Programmieren des Arduinos
Das Programmieren des Arduinos kann z.B. mit einem FTDI Adapter USB zu TTL Serial für 3,3V und 5V für Arduino gemacht werden,
der z.B. auch bei Technikkram bestellbar ist. Der Prgrammer muss auf 3,3V Programmierspannung eingestellt werden!
5. Gehäuse
Wenn ein Gehäuse verwandt wird, darf es nicht (mehr) nach Plastik riechen sonst werden die Messungen mit dem Gassensor verfälscht.
Also gegebenenfalls das Gehäuse mehrere Wochen an frischer Luft 'ausstinken' lassen.
6. Benötigte Bibliotheken für das Arduino IDE
a) EnableInterrupt https://github.com/GreyGnome/EnableInterrupt
b) LowPower https://github.com/rocketscream/Low-Power
c) ClosedCube_BME680_Arduino https://github.com/closedcube/ClosedCube_BME680_Arduino
Diese Bibliothek hat leider viele Fehler. Dafür habe ich mehrere Fixes in PullRequests zur Verfügung gestellt.
Leider führt der 'Maintainer' dieser Bibliothek meine Pull-Requests nicht durch. Es gibt seit Wochen keine Rückmeldung. Solange dort meine Pull-requests nicht eingeplegt sind sind, bitte meinen Fork 'implement_Bosch_datasheet_integer_formula' nehmen:
https://github.com/FUEL4EP/ClosedCube_B ... r_formulas unbedingt nehmen!
7. Arduino Sketch
a) https://github.com/jp112sdl/HB-UNI-Sen-IAQ mindestens commit 4072941. Unbedingt auch das Unterverzeichnis 'sensors' mitkopieren!
Den Sketch 'HB-UNI-Sen-IAQ.ino' in das Arduino IDE laden. Dann eine persönliche Device ID und Device Serial eintragen:
Code: Alles auswählen
// define all device properties
const struct DeviceInfo PROGMEM devinfo = {
{0xf1, 0xd1, 0x01}, // Device ID
"JPIAQ00001", // Device Serial
{0xf1, 0xd1}, // Device Model Indoor
0x10, // Firmware Version
as::DeviceType::THSensor, // Device Type
{0x01, 0x00} // Info Bytes
};
Code: Alles auswählen
// define all device properties
const struct DeviceInfo PROGMEM devinfo = {
{0xf1, 0xd1, 0x03}, // Device ID
"JPIAQ00045", // Device Serial
{0xf1, 0xd1}, // Device Model Indoor
0x10, // Firmware Version
as::DeviceType::THSensor, // Device Type
{0x01, 0x00} // Info Bytes
};
Dann den Sketch in den Arduino hochladen.
8. Einbrennen des BME680 Sensors
Ein neuer BME680 Sensor altert die ersten Wochen stark. Daher sind die Messwerte erst nach ein paar Wochen Betriebs verlässlich.
Eine erneute Kalibrierung sollte mindestens nach 4 Wochen ununterbrochenen Betriebs vorgenommen werden.
9. Offsetkompensation Temperatur und relative Luftfeuchtigkeit
Bedingt durch das interne Heizelement des BME680 ist die gemessene temperatur typischweise 1,0 .. 2,0 Grad Kelvin zu hoch.
Dies kann im Sketch 'HB-UNI-Sen-IAQ.ino' korrigiert werden:
Code: Alles auswählen
//-----------------------------------------------------------------------------------------
//Korrektur von Temperatur und Luftfeuchte
//Einstellbarer OFFSET für Temperatur -> gemessene Temp +/- Offset = Angezeigte Temp.
#define OFFSETtemp 0 //z.B -50 ≙ -5°C / 50 ≙ +5°C
Code: Alles auswählen
//Einstellbarer OFFSET für Luftfeuchte -> gemessene Luftf. +/- Offset = Angezeigte Luftf.
#define OFFSEThumi 0 //z.B -10 ≙ -10%RF / 10 ≙ +10%RF
//-----------------------------------------------------------------------------------------
9. Kalibrierung
Eine Kalibrierung sollte vorgenommen werden, wenn
1. Eine Programmierung des Arduinos vorgenommen wurde
2. Die Batterien ersetzt wurden
3. 4 Wochen nach der ersten Inbetriebnahme
4. Danach alle 3..6 Monate oder nach Bedarf, anfangs eher alle 3 Monate bis sich die Alterung verringert
Die Empfehlung ist vor der Kalibrierung zuerst die Offsetkompensation nach Punkt 9. zu machen.
Sonst gehen die Kalibrierwerte bei der Programmierung der Offsetkompensation verloren.
a) Kalibrierung in der Software HB-UNI-Sen-IAQ/sensors/sens_bme680.h:
In sens_bme680.h sind die Startwerte des oberen und unteren Grenzwerts für den gemessenen Gaswiderstand definiert:
Code: Alles auswählen
#define GAS_LOWER_LIMIT 4000.0 // Initial setting for bad air quality lower limit; will automatically adjusted when sensor exposed to a bad smell e.g. parmesan cheese, mustard, clementine or orange peel, disinfectant solution, etc.
#define GAS_UPPER_LIMIT 16000.0 // Initial setting for good air quality upper limit; will automatically adjusted when sensor is put to outdoor for few hours
Code: Alles auswählen
uint32_t _gas_lower_limit; // adaptive lower resistance level for bad air quality
uint32_t _gas_upper_limit; // adaptive upper resistance level for good air quality
übernommen und dann über die Maximum- und Minimumfilter dynamisch nachgeführt:
Code: Alles auswählen
//peak detector for _gas_upper_limit
if ( gas > _gas_upper_limit )
{
_gas_upper_limit = gas;
}
else
{
_gas_upper_limit = _gas_upper_limit * IIR_FILTER_COEFFICIENT; // decay each sample by IIR_FILTER_COEFFICIENT
if ( _gas_upper_limit < GAS_UPPER_LIMIT )
_gas_upper_limit = GAS_UPPER_LIMIT; // lower limit for _gas_upper_limit
}
//peak detector for _gas_lower_limit
if ( gas < _gas_lower_limit )
{
_gas_lower_limit = gas;
}
else
{
_gas_lower_limit = _gas_lower_limit / IIR_FILTER_COEFFICIENT; // increase each sample by 1.0/IIR_FILTER_COEFFICIENT
if ( _gas_lower_limit > GAS_LOWER_LIMIT )
_gas_lower_limit = GAS_LOWER_LIMIT; // upper limit for _gas_lower_limit
}
Code: Alles auswählen
#define IIR_FILTER_COEFFICIENT 0.9998641 // Decay to 0.71 in about one week for a 4 min sampling period (in 2520 sampling periods)
Damit wird auch bei anfänglicher Alterung ein automatisches Kalibrieren möglich.
b) Kalibrierung mit Gasen:
Dazu wird der Sensor sowohl frischer Luft (gemessene Luftgüte 100%) als auch stark riechenden Gasen, z.B. Käse, (gemessene Luftgüte 0% .. 15%) ausgesetzt.
i) Plaziere den Sensor mehrere Stunden draußen an die frische Luft, z.B. auf eine Fensterbank.
Der oben beschrieben obere Spitzendetektor führt die Variable _gas_upper_limit nach. Die Variable repräsentiert den maximal gemessenen Gaswiderstand.
ii) Setze den Sensor für ca. 20..30 Minuten stark riechenden Gasen bzw. Gerüchen aus:
a) Platziere Käse wie Gouda, Parmesan oder Roquefort in die unmittelbare Nähe des Sensors. Achte darauf, dass dort keine Rückstände davon bleiben.
b) Den stärksten Effekt erhalten wir mit Isopropanol (2-propanol), z.B. medizinische Desinfektionslösung, das auf ein Papiertaschentuch getropft wird und dann
direkt neben den BME680 Sensor gelegt wird. Die gemessene Luftgüte geht dann auf 0% zurück.
Der oben beschrieben untere Spitzendetektor führt die Variable _gas_lower_limit nach. Die Variable repräsentiert den minimal gemessenen Gaswiderstand.
c) Auslesen von Zwischenwerten
Mittels des Werkzeugs 'serieller Monitor' vom Arduino IDE können Zwischenwerte ausgelesen werden:
Dazu im Sketch 'HB-UNI-Sen-IAQ.ino' das Define NDEBUG
Code: Alles auswählen
//#define NDEBUG // disable all serial debug messages
auskommentieren.
Im seriellen Monitor wird für jeden Messzyklus (alle 4 Minuten ein Messzyklus) Folgendes ausgegeben:
13:24:22.994 -> Gas heat_stab_r = 1
13:24:22.994 -> Gas gas_valid_r = 1
13:24:22.994 -> gas: 1205
13:24:22.994 -> ....Gas heat_stab_r = 1
13:24:23.426 -> Gas gas_valid_r = 1
13:24:23.426 -> gas: 669
13:24:23.426 -> ...Gas heat_stab_r = 1
13:24:23.725 -> Gas gas_valid_r = 1
13:24:23.725 -> gas: 754
13:24:23.725 -> ...Gas heat_stab_r = 1
13:24:24.024 -> Gas gas_valid_r = 1
13:24:24.024 -> gas: 770
13:24:24.024 -> ...Gas heat_stab_r = 1
13:24:24.389 -> Gas gas_valid_r = 1
13:24:24.389 -> gas: 786
13:24:24.389 -> avg gas: 836
13:24:24.389 -> Gas UPPER LIMIT = 20785
13:24:24.389 -> Gas LOWER LIMIT = 836
13:24:24.389 -> T = 238
13:24:24.389 -> P = 1009.9699707031
13:24:24.389 -> PNN = 10139
13:24:24.389 -> Hum = 40
13:24:24.389 -> Gas = 836
13:24:24.389 -> Gas FACTOR = 1.0000000000
13:24:24.389 -> AQ = 0% (H: 0% + G: 0%)
13:24:24.389 -> corrected T/H = 238/40
13:24:24.389 -> <- 11 03 86 70 F1D101 000000 00 EE 27 9B 28 00 C8 21 - 6373
Das ist eine Messung mit Isopropanol zu Bestimmung des unteren _gas_lower_limit Kalibrierwerts. Die Variable _gas_lower_limit nimmt den Minimalwert von 836 Ohn an (-> Gas LOWER LIMIT = 836).
Hier eine Messung nach der Kalibrierung an der frischen Luft zur Bestimmung des oberen _gas_upper_limit Kalibrierwerts:
15:04:40.116 -> Gas heat_stab_r = 1
15:04:40.116 -> Gas gas_valid_r = 1
15:04:40.150 -> gas: 43245
15:04:40.150 -> ....Gas heat_stab_r = 1
15:04:40.547 -> Gas gas_valid_r = 1
15:04:40.547 -> gas: 17116
15:04:40.547 -> ...Gas heat_stab_r = 1
15:04:40.879 -> Gas gas_valid_r = 1
15:04:40.879 -> gas: 21193
15:04:40.879 -> ...Gas heat_stab_r = 1
15:04:41.177 -> Gas gas_valid_r = 1
15:04:41.177 -> gas: 24705
15:04:41.177 -> ...Gas heat_stab_r = 1
15:04:41.475 -> Gas gas_valid_r = 1
15:04:41.475 -> gas: 26499
15:04:41.541 -> avg gas: 26551
15:04:41.541 -> Gas UPPER LIMIT = 35125
15:04:41.541 -> Gas LOWER LIMIT = 836
15:04:41.541 -> T = 106
15:04:41.541 -> P = 1037.2199707031
15:04:41.541 -> PNN = 10414
15:04:41.541 -> Hum = 69
15:04:41.541 -> Gas = 26551
15:04:41.541 -> Gas FACTOR = 1.0000000000
15:04:41.541 -> AQ = 74% (H: 0% + G: 74%)
15:04:41.541 -> corrected T/H = 106/69
15:04:41.541 -> <- 11 1C 86 70 F1D101 000000 00 6A 28 AE 45 4A 20 20 - 42211
Die Variable _gas_upper_limit nimmt den Maximalwert von 35125 Ohn an (-> Gas UPPER LIMIT = 35125). Der aktuell gemessene Gaswiderstandswert kann schon wieder geringer sein (-> Gas = 26551 oder -> avg gas: 26551).
Es werden pro Messzyklus 5
Code: Alles auswählen
#define AVG_COUNT 5
15:04:40.116 -> Gas heat_stab_r = 1
15:04:40.116 -> Gas gas_valid_r = 1
15:04:40.150 -> gas: 43245
15:04:40.150 -> ....Gas heat_stab_r = 1
15:04:40.547 -> Gas gas_valid_r = 1
15:04:40.547 -> gas: 17116
15:04:40.547 -> ...Gas heat_stab_r = 1
15:04:40.879 -> Gas gas_valid_r = 1
15:04:40.879 -> gas: 21193
15:04:40.879 -> ...Gas heat_stab_r = 1
15:04:41.177 -> Gas gas_valid_r = 1
15:04:41.177 -> gas: 24705
15:04:41.177 -> ...Gas heat_stab_r = 1
15:04:41.475 -> Gas gas_valid_r = 1
15:04:41.475 -> gas: 26499
15:04:41.541 -> avg gas: 26551
Zur Zeit ist noch ein Fehler in der Messerfassung drin: Der erste der 5 Messwerte stammt noch vom vorausgegangenen Messzyklus. Daher kann er stärker von den darauffolgenden vier Messungen abweichen.
Das wird zu einem späteren Zeitpunkt korrigiert. (Das ist im letzten Pull Request gefixt) Nun steigen die gemessenen Gaswiderstände von den Messungen 0..4 an, da die Hot Plate Temperatur des Sensors noch ansteigt.
-> Gas heat_stab_r = 1 zeigt an, dass die Solltemperatur erreicht worden ist.
-> Gas gas_valid_r = 1 zeigt an, dass ein gültiger Messwert im BME680 vorliegt.
-> gas: <int> zeigt den Gaswiderstand der aktuellen Messung an
-> avg gas: <int> zeigt den Mittelwert der 5 Messungen eines Zyklus an
Ein Messzyklus dauert 4 Minuten = 240 Sekunden:
Code: Alles auswählen
#define SAMPLINGINTERVALL_IN_SECONDS 240
Als Heizzieltemperatur sind zur Zeit 310 Grad eingestellt:
Code: Alles auswählen
_bme680.setGasOn(310, 300); // 310 degree Celsius and 300 milliseconds; please check in debug mode whether '-> Gas heat_stab_r = 1' is achieved. If '-> Gas heat_stab_r = 0' then the heating time is to short or the temp target too high
Die Heizdauer beträgt 300 ms. Wird sie kürzer gewählt, wird die Solltemperatur nicht mehr erreicht, erkennbar an > Gas heat_stab_r = 0. Die Heizzieltemperatur sollte 320 Grad nicht überschreiten.
Die Luftgüte wird gewichtet aus der relativen Luftfeuchtigkeit und dem gemessenen Gaswiderstand berechnet.
In 'sens_bme680.h' können die Gewichtungsfaktoren definiert werden. Zur Zeit ist der Gewichtungsfaktor fuer die releative Luftfeuchtigkeit auf Null gesetzt:
Code: Alles auswählen
#define HUM_WEIGHTING 0.00 // so hum effect is 0% of the total air quality score, default is 25%
#define GAS_WEIGHTING (1.00-(HUM_WEIGHTING)) // so gas effect is 100% of the total air quality score, default is 75%; sum of HUM_WEIGHTING and GAS_WEIGHTING is 1.0
Im seriellen Monitor wird das so ausgegeben:
15:44:58.017 -> AQ = 91% (H: 0% + G: 91%)
Der Luftgüteindex ist hier 91%, das sich zusammensetzt aus 0% von der relativen Luftfeuchtigkeit und 91% von dem gemessenen Gaswiderstand herrührend.
Wird der Sensor im Außenbereich eingesetzt, sollte der Faktor GAS_FACTOR auf 1.0 gesetzt werden.
Code: Alles auswählen
#define GAS_FACTOR 1.0 // for calclulating the _gas_score the upper gas limit is scaled by this factor in order to get more meaningful results for indoor sensors
// GAS_FACTOR should be set to 1.0 for an outdoor sensor
Wird der Sensor im Innenbereich eingesetzt, sollte der Faktor GAS_FACTOR so gesetzt werden (GAS_FACTOR < 1.0), dass der Luftgüteindex IAQ bei Querlüftung mit geöffneten Fenstern ca. 90..95% betraegt.
Die genaue Einstellung ist Ermessenssache, was als gute Luft angesehen wird.
d) Einstellen der oberen und unteren Grenze der Gaswiderstandswerte
Nach einer erfolgreicher ersten Kalibrierung die gemessenen Maximal- und Minimalgaswiderstände als neue Startwerte definiert werden:
Code: Alles auswählen
#define GAS_LOWER_LIMIT 4000.0 // Initial setting for bad air quality lower limit; will automatically adjusted when sensor exposed to a bad smell e.g. parmesan cheese, mustard, clementine or orange peel, disinfectant solution, etc.
#define GAS_UPPER_LIMIT 16000.0 // Initial setting for good air quality upper limit; will automatically adjusted when sensor is put to outdoor for few hours
GAS_LOWER_LIMIT sollte auf ca. 1,3 * (-> Gas LOWER LIMIT im Debugmode) gesetzt werden (siehe oben).
GAS_UPPER_LIMIT sollte auf ca. 0,8 * (-> Gas UPPER LIMIT im Debugmode) gesetzt werden (siehe oben).
Danach den Sketch mit den neu gesetzten Defines auf den Arduino hochladen. Danach muß die Kaibrierung leider nochmals wiederholt werden, da das Programmieren die Grenzwerte GAS_LOWER_LIMIT und GAS_UPPER_LIMIT auf die neuen Initialwerte setzt.
10. Raspberrymatic
Um den Sensor bei einer Raspberrymatic anmelden zu können, muss auf der Raspberrymatic das JP-HB-Devices-addon Addon für 'Homebrew'
Devices von Jérôme installiert werden:
https://github.com/jp112sdl/JP-HB-Devices-addon
Von dort bitte das letzte Addon Release installieren. Danach kann der Sensor auf der Raspberrymatic angelernt werden.
11. Batterielebensdauer
Eine 5-fach Messung eines Messzyklus braucht ca. 13mA * 0,3 Sekunden * 5 = 0.0195 As. Eine AA Batterie fasst ca. 1500mAh. Damit sollte ein
Batteriesatz mehrere Monate halten. Der konkrete Nachweis steht noch aus.
Rückmeldungen und Erfahrungen sind willkommen.
Viel Erfolg und Spaß mit dem Gassensor BME680 wünscht
Ewald
Zuletzt geändert von FUEL4EP am 29.04.2020, 10:17, insgesamt 7-mal geändert.
Grüße
Ewald
Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs
Ewald
Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs
-
- Beiträge: 12115
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 848 Mal
- Danksagung erhalten: 2150 Mal
- Kontaktdaten:
Re: [temporarily discontinued] HB-UNI-Sen-IAQ - Luftgütemessung mit BME680
Ganz großen Dank für die ausführliche Anleitung.
Du solltest einen neuen Thread erstellen, damit deine Mühen nicht auf Seite 8 untergehen...
Ich hatte es zwar über die "Melden"-Funktion versucht, aber das hat scheinbar nicht geklappt.
Du solltest einen neuen Thread erstellen, damit deine Mühen nicht auf Seite 8 untergehen...
Ich hatte es zwar über die "Melden"-Funktion versucht, aber das hat scheinbar nicht geklappt.
- FUEL4EP
- Beiträge: 586
- Registriert: 01.11.2017, 17:26
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 76 Mal
- Danksagung erhalten: 79 Mal
- Kontaktdaten:
Re: HB-UNI-Sen-IAQ - Luftgütemessung mit BME680
Hi Jérôme,
danke für Deine Rückmeldung. Gerne mache ich einen neuen Threat auf. Mein Vorschlag ist, in diesem Threat zuerst mal das ‚[temporarily discontinued]‘ im Titel zu entfernen.
Der Sensor geht ja jetzt
danke für Deine Rückmeldung. Gerne mache ich einen neuen Threat auf. Mein Vorschlag ist, in diesem Threat zuerst mal das ‚[temporarily discontinued]‘ im Titel zu entfernen.
Der Sensor geht ja jetzt
Grüße
Ewald
Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs
Ewald
Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs
Re: HB-UNI-Sen-IAQ - Luftgütemessung mit BME680
Hallo,
vielen Dank für die Beschreibung. Ich habe drei dieser Sensoren schon seit einiger Zeit mit dem alten Sketch an laufen.
Jetzt werde ich updaten....
Jetzt meine Frage zu den aktuellen Änderungen:
Warum wird die HUM_WEIGHTING auf 0 gesetzt, wenn default = 25% ist? Gibt es hier einen Grund ?
Vielen Dank.
Gruss
Thorsten
vielen Dank für die Beschreibung. Ich habe drei dieser Sensoren schon seit einiger Zeit mit dem alten Sketch an laufen.
Jetzt werde ich updaten....
Jetzt meine Frage zu den aktuellen Änderungen:
FUEL4EP hat geschrieben: ↑26.01.2020, 17:44
Die Luftgüte wird gewichtet aus der relativen Luftfeuchtigkeit und dem gemessenen Gaswiderstand berechnet.
In 'sens_bme680.h' können die Gewichtungsfaktoren definiert werden. Zur Zeit ist der Gewichtungsfaktor fuer die releative Luftfeuchtigkeit auf Null gesetzt:
Code: Alles auswählen
#define HUM_WEIGHTING 0.00 // so hum effect is 0% of the total air quality score, default is 25% #define GAS_WEIGHTING (1.00-(HUM_WEIGHTING)) // so gas effect is 100% of the total air quality score, default is 75%; sum of HUM_WEIGHTING and GAS_WEIGHTING is 1.0
Warum wird die HUM_WEIGHTING auf 0 gesetzt, wenn default = 25% ist? Gibt es hier einen Grund ?
Vielen Dank.
Gruss
Thorsten
- FUEL4EP
- Beiträge: 586
- Registriert: 01.11.2017, 17:26
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 76 Mal
- Danksagung erhalten: 79 Mal
- Kontaktdaten:
Re: HB-UNI-Sen-IAQ - Luftgütemessung mit BME680
Hallo Thorsten,
HUM_WEIGHTING wird auf Null gesetzt, um ausschliesslich die VOC Luftguete als Messwert zu bekommen. Ansonsten kann nicht differenziert werden zwischen dem Einfluss von VOC und der relativen Luftfeuchtigkeit. Der Code erlaubt, eine nutzerspezifische Gewichtung einzufuehren. Meine Empfehlung ist es, zuerst mal eine reine VOC Gasmessung zu machen und erst spaeter auf eine gemischte Messerfassung von VOC und relativer Luftfeuchtigkeit ueberzugehen.
Bei den Updates bitte die ClosedCube Bibliotheken mitnehmen (von meinem oben angegebenen Repository und Branch).
Viel Erfolg!
Gruss
Ewald
HUM_WEIGHTING wird auf Null gesetzt, um ausschliesslich die VOC Luftguete als Messwert zu bekommen. Ansonsten kann nicht differenziert werden zwischen dem Einfluss von VOC und der relativen Luftfeuchtigkeit. Der Code erlaubt, eine nutzerspezifische Gewichtung einzufuehren. Meine Empfehlung ist es, zuerst mal eine reine VOC Gasmessung zu machen und erst spaeter auf eine gemischte Messerfassung von VOC und relativer Luftfeuchtigkeit ueberzugehen.
Bei den Updates bitte die ClosedCube Bibliotheken mitnehmen (von meinem oben angegebenen Repository und Branch).
Viel Erfolg!
Gruss
Ewald
Grüße
Ewald
Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs
Ewald
Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs
Re: HB-UNI-Sen-IAQ - Luftgütemessung mit BME680
Hallo Ewald,
vielen Dank für die Info.
Aber ich würde sehr gerne die aktuellen Verbesserungen übernehmen.
Wenn ich allerdings den neuen Sketch und Deine modifizierten Bibliotheken "fixes_and_additions" verwende erhalte ich
dann von Sensor (serial Monitor) nur "BME680 ERR".
Gut ich habe auch einen anderen Sensor "Joy-it bme680" (auch mit BOSCH Sensor), aber läuft ja mit der vorherigen Variante auch.
Eine Idee was hier falsch sein könnte ?
Danke.
Gruss
Thorsten
vielen Dank für die Info.
Ich habe ja schon drei Sensoren mit einem einer Älteren Version des Sketches + original ClosedCube Bibliotheken laufen.
Aber ich würde sehr gerne die aktuellen Verbesserungen übernehmen.
Wenn ich allerdings den neuen Sketch und Deine modifizierten Bibliotheken "fixes_and_additions" verwende erhalte ich
dann von Sensor (serial Monitor) nur "BME680 ERR".
Gut ich habe auch einen anderen Sensor "Joy-it bme680" (auch mit BOSCH Sensor), aber läuft ja mit der vorherigen Variante auch.
Eine Idee was hier falsch sein könnte ?
Danke.
Gruss
Thorsten