Benutzer-Werkzeuge

Webseiten-Werkzeuge


hardware:channels:sensors:sensorless_outdoor_temp

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
hardware:channels:sensors:sensorless_outdoor_temp [2019/02/06 02:18] – entpersonalisiert, FE-Link, Syntaxhighlight, crontab jauhardware:channels:sensors:sensorless_outdoor_temp [2020/04/27 13:25] – Updated the script so it is compatible with python3, added simple error handling. trabant
Zeile 1: Zeile 1:
 ====== Außentemperatur ohne Sensor ====== ====== Außentemperatur ohne Sensor ======
  
-Gerade zur Auswertung von Heizkurven oder Stromverbräuchen elektrischer Heizungen wie Wärmepumpen ist eine Aufzeichnung der Außentemperatur sinnvoll.+Gerade zur Auswertung von Heizkurven oder dem Verbrauch von Heizungsanlagen ist eine Aufzeichnung der Außentemperatur sinnvoll.
 {{:hardware:channels:sensors:aussentemp.png?600|}} {{:hardware:channels:sensors:aussentemp.png?600|}}
  
-Das ist auch völlig ohne weitere Hardware möglich mittels Abfrage eines Online-Wetterdienstes, z.B. beim Gratis-Tool openWheatherMap.+Das ist auch 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. Die Daten werden mittels Python-Skript als JSON-File von openWheatherMap abgerufen, interpretiert und per API-Aufruf an die Volkszähler-Datenbank gesendet.
Zeile 16: Zeile 16:
 Einen Channel für die Außentemperatur übers [[/software/frontends/frontend#kanaele_hinzufuegen|Volkszaehler-Webfrontend]] anlegen. Einen Channel für die Außentemperatur übers [[/software/frontends/frontend#kanaele_hinzufuegen|Volkszaehler-Webfrontend]] anlegen.
  
-Das Pyhton-Skript benötigt das Paket requests:+Das Pyhton-Skript benötigt das Paket //requests//, sollte es noch nicht vorhanden sein lässt es sich auf dem Volkszähler-Image wie folgt nachinstallieren:
 <code> <code>
-pip install requests+apt-get install python3-requests
 </code> </code>
  
-Das vollständige Skript getWetter.py:+Das vollständige Skript getWetter.py dann z.B. unter /home/pi/bin abspeichern:
 <code python getWetter.py> <code python getWetter.py>
-import urllibjson +#!/usr/bin/python3 
-import requests+from requests import get,post 
 url = "http://api.openweathermap.org/data/2.5/weather?id=<CITY-ID>&APPID=<HIER DIE EIGENE APP-ID VON OPENWHEATHERMAP EINFÜGEN>&units=metric" 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"])+try: 
 +  resp get(url) 
 +  data = resp.json() 
 +except: 
 +  print("URL load failed"
 +  raise SystemExit(2)
  
-#http-POST to volkszaehler +temp = float(data["main"]["temp"]) 
-requests.post("http://localhost/middleware.php/data/<CHANNEL-UUID>.json", data={"value"temp })+#pres = float(data["main"]["pressure"]) 
 +#humi float(data["main"]["humidity"]) 
 + 
 +try: 
 +  post("http://localhost/middleware/data/<CHANNEL-UUID>.json", data={"value" : temp }) 
 +  #post("http://localhost/middleware/data/<CHANNEL-UUID>.json", data={"value" : pres }) 
 +  #post("http://localhost/middleware/data/<CHANNEL-UUID>.json", data={"value"humi }
 +except: 
 +  print("Couldn't post to VZ Middleware."
 +  raise SystemExit(3)
 </code> </code>
 +Wer möchte kann auch Luftdruck und Luftfeuchte importieren, dazu einfach die auskommentierten Zeilen entsprechend aktivieren.
  
 Und nun noch einen Cronjob einrichten: Und nun noch einen Cronjob einrichten:
-<code>sudo crontab -e</code>+<code>crontab -e</code>
  
 Diese Zeile ergänzen für eine Abfrage alle 5 Minuten: Diese Zeile ergänzen für eine Abfrage alle 5 Minuten:
 <code> <code>
-*/5 * * * *     root    python /home/pi/pyWetter/getWetter.py+*/5 * * * * /home/pi/bin/getWetter.py
 </code> </code>
 +
 +<note tip>Möchte man mögliche Fehlermeldungen im systemd-journal haben, ist das per systemd-cat möglich, das erspart dann auch die Emails, die Cron andernfalls versendet:</note>
 +<code>
 +*/5 * * * * systemd-cat /home/pi/bin/getWetter.py
 +</code>
 +
 +<note tip>Wer anstelle der Daten von Openweathermap lieber einzelne Wetterstationen abfragen möchte, dann dies z.B. über den Dienst von Weather.com/Wunderground tun. Die Abfrage ist der hier aufgeführten recht ähnlich, die Auswertung allerdings etwas kniffliger</note>.
hardware/channels/sensors/sensorless_outdoor_temp.txt · Zuletzt geändert: 2020/07/17 12:37 von jau