Erweiterung solaranzeige.de um Raumtemperatur-Daten
November 2023
Anleitung
BME280 & Raspi via MQTT
Temp / Humid / Pressure
RPI: Sensor anschliessen 2 Skripte erstellen: ############# bme.py
import bme280 import smbus2 from time import sleep port = 1 address = 0x77 # Adafruit BME280 address. Other BME280s may be different bus = smbus2.SMBus(port) bme280.load_calibration_params(bus,address) # while True: bme280_data = bme280.sample(bus,address) humidity = bme280_data.humidity pressure = bme280_data.pressure ambient_temperature = bme280_data.temperature print(humidity, pressure, ambient_temperature) sleep(1)
und ############# mqttsend.sh
#!/bin/bash read weather IFS=" " read -r humid press temp <<< "$weather" IFS="" echo "humid = $humid" echo "pressure = $press" echo "temp = $temp" curl -d $temp mqtt://<mqtt-ip>/solaranzeige/anzeige/1/RPI/Temp curl -d $humid mqtt://<mqtt-ip>/solaranzeige/anzeige/1/RPI/Humidity curl -d $press mqtt://<mqtt-ip>/solaranzeige/anzeige/1/RPI/Pressure echo "##### $(date)"
Selbstredend, dass <mqtt-ip> durch Eure IP-Adresse Eures solaranzeige.de Servers ersetzt werden muss. dann crontab:
# m h dom mon dow command * * * * * /usr/bin/python3 /home/<user>/weather/bme.py | /home/<user>/weather/mqttsend.sh >>/home/<user>/weather/weather.log
Hier solltet Ihr wieder <user> in Eure UserID ändern.
Achtung:
- i2C muss über raspi-config eingeschaltet werden
- ausführender User muss Zugriff auf i2C devices erhalten: sudo adduser <user> i2c
- und user muss der i2c Gruppe angehören: sudo usermod -aG i2c <user>
- es müssen die richtigen PY Module installiert sein: pip3, smbus2, rpi.bme280
- das Python Skript darf nicht bme280.py heissen :-)
- in der user.config.php muss mqtt=yes gesetzt werden
- in der Datei mqtt_prozess.php die Funktion mqttDatenAuswerten angepasst und folgende Zeile geändert: $Daten["InfluxWert"] = floatval(substr($RawDaten["MQTTNachricht"],14,4));
- folgende Zeile in der Funktion MQTT_schreiben() geändert: $query .= $daten['InfluxSpalte']."=".$daten['InfluxWert'];
- influx
- use solaranzeige
- drop measurement MQTT
- Im Grafana kannman nun ein Panel hinzufügen. Da die Wertebereiche der drei Variablen sehr unterschiedlich sind, kann man mehrere Panels nutzen oder mehrere Y-Achsen konfigurieren. Dies geht mit Overrides pro Variable(Pressure) - (Axis>Placement)
Bei solaranzeige.de habe ich auch Änderungen durchgeführt:
Wenn in der InfluxDB schon ein Measurement "MQTT" existiert hat, sollte dieses gelöscht werden mit:
Jetzt sollten Daten in die DB flitzen.
Projektinformation
- Kategorie: solaranzeige.de
- Bereich: MQTT, Grafana
- Project date: November 2023