Funksensor mit Bosch sensortec BME680 / Luftgüte

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

Vorheriges Thema - Nächstes Thema

juergs

#510
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

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?

juergs

#511
Etwas "neue" Theorie für den BME + ESP32: 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
--------------------------------------------------------------

twenta

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 :)

juergs

#513
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
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 ist aktualisiert.  :D

juergs

#514
Vergleich der TVOC und IAQ-Berechnung von G6EJD mit IAQ-Bewertungen von 20 (gut) .. 500 (schlecht)

Offenes Fenster  -> geschlossen ...

TVOC vs. IAQ

juergs

#515
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

juergs

#516
Hat jemand ein Hinweis/Konfiguration für ESPEasy-BMEx80 über mosquitto /MQTT2_SERVER   oder FHEM_HTTP an FHEM?

juergs

#517
Zur Not, geht auch Jörgs SLINK-Protokoll (zusätzliche FHEM-Module für UDP-Broadcast-Empfang) (!) von ESP-Easy über UDP an FHEM!

;D :D

juergs

#518
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!

Tobias

ohne es getestet zu haben, über CONTROLLER kann man doch eigentlich einen Mosquitto Client definieren..?? Oder hast du es explizit nicht eingebunden?
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

juergs

#520
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

juergs


twenta

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

hdgucken

#523
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

hdgucken

#524
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