Autor Thema: Funksensor mit Bosch sensortec BME680 / Luftgüte  (Gelesen 57047 mal)

Offline juergs

  • Hero Member
  • *****
  • Beiträge: 1431
Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
« Antwort #525 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
« Letzte Änderung: 17 September 2019, 17:45:42 von juergs »

Offline juergs

  • Hero Member
  • *****
  • Beiträge: 1431
Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
« Antwort #526 am: 17 September 2019, 23:24:47 »
Der Connect gegen mosquito geht mit Authentifizierung durch:
Zitat
88257606: 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

Grüße,
Jürgen

« Letzte Änderung: 17 September 2019, 23:37:41 von juergs »

Offline juergs

  • Hero Member
  • *****
  • Beiträge: 1431
Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
« Antwort #527 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.
« Letzte Änderung: 19 September 2019, 20:08:04 von juergs »

Offline juergs

  • Hero Member
  • *****
  • Beiträge: 1431
Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
« Antwort #528 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" und dieser: EBUS-MQTT2
Zitat
Temp/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:

Zitat
2019.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.
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/
Installation erfolgreich. Momentan klemmt es noch an der Übergabe der Daten an InfluxDB über das 93_InfluxDBLog-Modul.



« Letzte Änderung: 21 September 2019, 16:11:24 von juergs »
Gefällt mir Gefällt mir x 2 Liste anzeigen

Offline juergs

  • Hero Member
  • *****
  • Beiträge: 1431
Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
« Antwort #529 am: Gestern um 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

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 ...  ::)
 
« Letzte Änderung: Gestern um 15:27:56 von juergs »
Informativ Informativ x 1 Liste anzeigen