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:

  1. i2C muss über raspi-config eingeschaltet werden
  2. ausführender User muss Zugriff auf i2C devices erhalten: sudo adduser <user> i2c
  3. und user muss der i2c Gruppe angehören: sudo usermod -aG i2c <user>
  4. es müssen die richtigen PY Module installiert sein: pip3, smbus2, rpi.bme280
  5. das Python Skript darf nicht bme280.py heissen :-)

  6. Bei solaranzeige.de habe ich auch Änderungen durchgeführt:

  7. in der user.config.php muss mqtt=yes gesetzt werden
  8. in der Datei mqtt_prozess.php die Funktion mqttDatenAuswerten angepasst und folgende Zeile geändert: $Daten["InfluxWert"] = floatval(substr($RawDaten["MQTTNachricht"],14,4));
  9. folgende Zeile in der Funktion MQTT_schreiben() geändert: $query .= $daten['InfluxSpalte']."=".$daten['InfluxWert'];

  10. Wenn in der InfluxDB schon ein Measurement "MQTT" existiert hat, sollte dieses gelöscht werden mit:

  11. influx
  12. use solaranzeige
  13. drop measurement MQTT

  14. Jetzt sollten Daten in die DB flitzen.

  15. 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)

Projektinformation

  • Kategorie: solaranzeige.de
  • Bereich: MQTT, Grafana
  • Project date: November 2023