python

pilight Temperaturen mit Grafana darstellen

pilight Temperatur-Daten darstellen mit Grafana:

Zunächst müssen die pilight Temperaturen aufgezeichnet werden. Hierfür habe ich bereits einen Beitrag geschrieben. Mit Garfana habe ich dann die Influxdb ausgelesen und die Werte in zwei Histogrammen auf einem Dashboard dargestellt. Die json Datei für dieses Dashboard könnt ihr hier herunterladen. Die Querys für die Werte unterscheiden sich nur bei der „field“ Angabe und der Unit bei der Darstellung.

grafana query hum

grafana query temp

Das Ergebnis von pilight Temperatur-Daten darstellen mit Grafana, ist hier zu sehen:

Temperaturen und Luftfeuchtigkeiten in Grafana

Hier ist schön zu sehen, wann ich den Raum gelüftet habe und danach die Wäsche wieder aufgehangen wurde. 🙂

Posted by emil in Monitoring

pilight Temperaturen aufzeichnen mit InfluxDB

Ich wollte die pilight Temperaturen aufzeichnen und wusste nicht wo ich die Daten speichern könnte. Die Lösung dafür war einfach. pilight bietet alle Daten der Sensoren und der aktuellen Schaltung in json format per http an.
Per Python kann man diese Werte von pilight auslesen und in eine InfluxDB schreiben. Hierfür habe ich zunächst eine InfluxDB Datenbank mit der InfluxDB CLI erstellt. Danach eine pilight.py Datei mit folgendem Inhalt geschrieben:


import requests
import json
from influxdb import InfluxDBClient

r = requests.get(‚http://IP:5001/values‘)
client = InfluxDBClient(„192.168.55.66“, 8086, ‚user‘, ‚pass‘,’temperature‘)
try:
decoded = json.loads(r.text)
for x in decoded:
dev = x[‚devices‘][0]
temp = x[‚values‘][‚temperature‘]
hum = x[‚values‘][‚humidity‘]
time = x[‚values‘][‚timestamp‘]
battery = x[‚values‘][‚battery‘]
newdata = {„temp“:temp,“hum“:hum,“time“:time}
newdata = [
{
„measurement“: „temperature“,
„tags“: {
„station“: dev,
},
„fields“: {
„temp“: temp,
„hum“: hum,
„battery“: battery
}
}
]
client.write_points(newdata)
except (ValueError, KeyError, TypeError):
print(„JSON format error“)

Um die pilight-Werte regelmäßig abzufragen, kann man mit einem cronjob zum Beispiel alle 5 Minuten die Python Datei ausführen lassen.
Der Eintrag hierfür wäre: */5 * * * * python /root/pilight.py

Posted by emil in Monitoring