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