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 Überarbeitung
Vorhergehende Überarbeitung
hardware:channels:sensors:sensorless_outdoor_temp [2020/04/27 13:25] – Updated the script so it is compatible with python3, added simple error handling. trabanthardware:channels:sensors:sensorless_outdoor_temp [2020/07/17 12:37] (aktuell) – Script Einrückung korrigiert jau
Zeile 1: Zeile 1:
 ====== Außentemperatur ohne Sensor ====== ====== Außentemperatur ohne Sensor ======
 +
  
 Gerade zur Auswertung von Heizkurven oder dem Verbrauch von Heizungsanlagen 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 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 OpenWeatherMap.
  
-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 OpenWeatherMap 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.+Der Aufruf der Python-Skripts erfolgt z.B. mittels Cronjob auf dem Rechner mit der Volkszähler-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. +Auf openweathermap.org 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:+Die City-ID im Skript muss auf OpenWeatherMap ermittelt werden, z.B. hier:
 [[https://openweathermap.org/find]] [[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'' 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 [[/software/frontends/frontend#kanaele_hinzufuegen|Volkszaehler-Webfrontend]] anlegen.+Zuerst einen Kanal für die Außentemperatur übers [[/software/frontends/frontend#kanaele_hinzufuegen|Volkszaehler-Webfrontend]] anlegen.
  
-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:+Das folgende Python-Skript benötigt das Paket //requests//sollte es noch nicht vorhanden seinlässt es sich auf dem Volkszähler-Image wie folgt nachinstallieren:
 <code> <code>
 apt-get install python3-requests apt-get install python3-requests
Zeile 26: Zeile 28:
 from requests import get,post 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=2845222&APPID=a9a65433e56edeee32db51a8f283a03f&units=metric"
  
 try: try:
-  resp = get(url) +    resp = get(url) 
-  data = resp.json()+    data = resp.json()
 except: except:
-  print("URL load failed"+    print("URL load failed"
-  raise SystemExit(2)+    raise SystemExit(2)
  
 temp = float(data["main"]["temp"]) temp = float(data["main"]["temp"])
Zeile 40: Zeile 42:
  
 try: try:
-  post("http://localhost/middleware/data/<CHANNEL-UUID>.json", data={"value" : temp }) +    post("http://localhost/middleware/data/70919b00-c5f8-11ea-8152-ed29ae9e5e38.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" : pres }) 
-  #post("http://localhost/middleware/data/<CHANNEL-UUID>.json", data={"value" : humi })+    #post("http://localhost/middleware/data/<CHANNEL-UUID>.json", data={"value" : humi })
 except: except:
-  print("Couldn't post to VZ Middleware."+    print("Couldn't post to VZ Middleware."
-  raise SystemExit(3)+    raise SystemExit(3)
 </code> </code>
 Wer möchte kann auch Luftdruck und Luftfeuchte importieren, dazu einfach die auskommentierten Zeilen entsprechend aktivieren. Wer möchte kann auch Luftdruck und Luftfeuchte importieren, dazu einfach die auskommentierten Zeilen entsprechend aktivieren.
  
-Und nun noch einen Cronjob einrichten:+Nun das Skript ausführbar machen: 
 +<code>chmod 755 /home/pi/bin/getWetter.py</code> 
 + 
 +Und noch einen Cronjob einrichten:
 <code>crontab -e</code> <code>crontab -e</code>
  
Zeile 62: Zeile 67:
 </code> </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>.+<note tip>Wer anstelle der Daten von Openweathermap lieber einzelne Wetterstationen abfragen möchte, kann 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.1587986726.txt.gz · Zuletzt geändert: 2020/04/27 13:25 von trabant