Benutzer-Werkzeuge

Webseiten-Werkzeuge


hardware:channels:sensors:sensorless_outdoor_temp

Dies ist eine alte Version des Dokuments!


Außentemperatur ohne Sensor

Gerade zur Auswertung von Heizkurven oder Stromverbräuchen elektrischer Heizungen wie Wärmepumpen ist eine Aufzeichnung der Außentemperatur sinnvoll.

Das ist auch völlig ohne weitere Hardware möglich mittels Abfrage eines Online-Wetterdienstes, z.B. beim Gratis-Tool openWheatherMap.

Die Daten werden mittels Python-Skript als JSON-File von openWheatherMap abgerufen, interpretiert und per API-Aufruf an die Volkszähler-Datenbank gesendet. Der Aufruf der Python-Skripts erfolgt z.B. mittels Cronjob auf dem Rechner mit der volkszaehler-Installation.

Auf openweathermap.com muss ein Account angelegt werden, um eine „Application ID“ für die Legitimierung der Wetterabfrage zu erzeugen. 60 Abfragen pro Minute sind im kostenfreien Paket inklusive, was mehr als ausreichend ist. Die City-ID im Skript muss auf openweathermap ermittelt werden, z.B. hier: https://openweathermap.org/find Die City-ID taucht nach Suche und Auswahl der Stadt in der URL auf, z.B. https://openweathermap.org/city/2867714

Einen Channel für die Außentemperatur übers Volkszaehler-Webfrontend anlegen.

Das Pyhton-Skript benötigt das Paket requests:

pip install requests

Das vollständige Skript getWetter.py:

getWetter.py
import urllib, json
import requests
url = "http://api.openweathermap.org/data/2.5/weather?id=<CITY-ID>&APPID=<HIER DIE EIGENE APP-ID VON OPENWHEATHERMAP EINFÜGEN>&units=metric"
response = urllib.urlopen(url)
data = json.loads(response.read())
 
temp = str(data["main"]["temp"])
 
#http-POST to volkszaehler
r = requests.post("http://localhost/middleware.php/data/<CHANNEL-UUID>.json", data={"value" : temp })

Und nun noch einen Cronjob einrichten:

sudo crontab -e

Diese Zeile ergänzen für eine Abfrage alle 5 Minuten:

*/5 * * * *     root    python /home/pi/pyWetter/getWetter.py
hardware/channels/sensors/sensorless_outdoor_temp.1549415919.txt.gz · Zuletzt geändert: 2019/02/06 02:18 von jau