{"id":102,"date":"2015-10-08T18:30:06","date_gmt":"2015-10-08T16:30:06","guid":{"rendered":"http:\/\/hollbruegge.de\/wpr\/?p=102"},"modified":"2015-10-08T18:34:23","modified_gmt":"2015-10-08T16:34:23","slug":"aussentemperaturanzeige-mit-netatmo-daten-iii","status":"publish","type":"post","link":"https:\/\/hollbruegge.de\/?p=102","title":{"rendered":"Au\u00dfentemperaturanzeige mit Netatmo-Daten (III)"},"content":{"rendered":"<h2>Programm zur Ermittlung der Daten meiner Wetterstation<\/h2>\n<p>Die Wetterdaten werden von der Netatmo-Wetterstation \u00fcber das Internet an die Server von Netatmo versendet. Mit einer App f\u00fcr IOS oder Android lassen sich dann die Daten ansehen. Weiterhin ist dies auch mit einer Webseite nach Autentifikation m\u00f6gich. Ein netter Nebenefekt dieser Datensammelei ist eine weltweite Karte mit den Au\u00dfentemperaturen aller freigegebener Netatmoger\u00e4te (<a href=\"https:\/\/www.netatmo.com\/weathermap\" target=\"_blank\">Link<\/a>).<\/p>\n<p>Netatmo gibt die M\u00f6glichkeit eigene Apps zu erstellen, die Dokumentatiaon dazu findet man unter <a href=\"https:\/\/dev.netatmo.com\/doc\" target=\"_blank\">https:\/\/dev.netatmo.com\/doc<\/a>. Da ich Python f\u00fcr den RaspberryPi nutzen wollte fand ich auch dazu eine APi im GitHub: <a href=\"https:\/\/github.com\/philippelt\/netatmo-api-python\" target=\"_blank\">https:\/\/github.com\/philippelt\/netatmo-api-python<br \/>\n<\/a>Phillip Larduinat hat eine Bibliothek in Python erstellt um die API-Funktionen von Netatmo aufzurufen. Diese habe ich f\u00fcr mein Programm benutzt. Hier nun der Quelltext f\u00fcr das Auslesen der Daten meiner Wetterstation:<\/p>\n<pre class=\"brush: python; title: Netatmo Daten-Auslese-Programm:; notranslate\" title=\"Netatmo Daten-Auslese-Programm:\">\r\n#!\/usr\/bin\/python3\r\n# encoding=utf-8\r\n\r\n# Ermittelung der Wetterdaten aus meiner Netatmo-Wetterstation\r\n# mithilfe der Phython-Api von Phillip Larduinat\r\n\r\n\r\nimport sys, datetime, time\r\nimport lnetatmo\r\n\r\n\r\n# Device-Liste von Netatmo abholen\r\nauthorization = lnetatmo.ClientAuth()\r\ndevList = lnetatmo.DeviceList(authorization)\r\n\r\n\r\n\r\n# Ermittlung der aktuellen Wetterdaten ---------------------------------------------\r\n\r\n# Aktuelle Aussentemperatur ausgeben\r\ntemp_Out=devList.lastData()&#x5B;'Garten']&#x5B;'Temperature']\r\n\r\n# Min \/ Max Temperaturen ausgeben\r\ntemp_min = devList.lastData()&#x5B;'Garten']&#x5B;'min_temp']\r\ntemp_max = devList.lastData()&#x5B;'Garten']&#x5B;'max_temp']\r\n\r\n# Niederschlagmenge des heutigen Tages auslesen und ausgeben\r\nrain = devList.lastData()&#x5B;'Niederschlag']&#x5B;'sum_rain_24']\r\n\r\n\r\n# Wetterdaten des Vortages ermitteln: -----------------------------------------------\r\nnow = time.time()    \t\t\t# Von Jetzt\r\nstart = now - 2* 24 * 3600\t\t# zwei Tage zur\u00fcck\r\n\r\n#Ermittlung der Temperaturen als Liste\r\nresp = devList.getMeasure( device_id='70:ee:50:01:d8:ec',      \r\n                           module_id='02:00:00:01:e7:a0',    \r\n                           scale=&quot;1day&quot;,\r\n                           mtype=&quot;min_temp,max_temp&quot;,\r\n                           date_begin=start,\r\n                           date_end=now)\r\n\r\n# Extraieren von Zeit, minTemp und Maxtemp\r\nresult = &#x5B;(int(k),v&#x5B;0],v&#x5B;1]) for k,v in resp&#x5B;'body'].items()]\r\n# Liste sortieren (nach Zeit, da erstes Element)\r\nresult.sort()\r\n\r\n#Ermittlung des Datums des Vortages der Min\/Max Temperaturen vom Vortag\r\nmessdatum = time.localtime(result&#x5B;0]&#x5B;0])\r\n\r\n#Ermittlung der Min- und Max-Temperaturen des Vortages\r\nlast_temp_min = result&#x5B;0]&#x5B;1]\r\nlast_temp_max = result&#x5B;0]&#x5B;2]\r\n\r\n#Ermittlung des Niederschlages je Tag als Liste\r\nresp = devList.getMeasure( device_id='70:ee:50:01:d8:ec',      \r\n\t\t\t\t\t       module_id='05:00:00:00:32:72',    \r\n                           scale=&quot;1day&quot;,\r\n                           mtype=&quot;sum_rain&quot;,\r\n                           date_begin=start,\r\n                           date_end=now)\r\n\r\n# Extraieren des Datums und des Niederschalges\r\nresultRain = &#x5B;(int(k),v&#x5B;0]) for k,v in resp&#x5B;'body'].items()]\r\n# Liste sortieren (nach Zeit, da erstes Element)\r\nresultRain.sort()\r\n\r\n#Ermittlung der Niederschlags von Gestern\r\nlast_rain = resultRain&#x5B;0]&#x5B;1]\r\n# ---------------------------------------------------------------------------------\r\n# Ausgabe der ermittelten Werte (Sp\u00e4ter erfolgt die Ausgabe auf dem CBerry28)\r\nprint (' ')\r\n# Aktuelle Aussentemperatur ausgeben\r\nprint (&quot;Aussentemperatur: {0:.1f}\u00b0C&quot;.format(temp_Out))\r\n# Min \/ Max Temperaturen ausgeben\r\nprint (&quot;Min \/ Max:  {0:.1f}\u00b0C \/ {1:.1f}\u00b0C&quot;.format(temp_min,temp_max))\r\n# Niederschlagmenge des heutigen Tages auslesen und ausgeben\r\nprint (&quot;Regen: {0:.1f} Liter\/qm&quot;.format(rain))\r\nprint (' ')\r\n#Ausgabe des Datums vom Vortag\r\nprint(time.strftime(&quot;Messwerte vom %d.%m.%Y&quot;, messdatum) +&quot;:&quot;)\r\n#Ausgabe der Min\/Max Temperaturen vom Vortag\r\nprint (&quot;Min \/ Max:  {0:.1f}\u00b0C \/ {1:.1f}\u00b0C&quot;.format(last_temp_min,last_temp_max))\r\n#Ausgabe der Niederschlags von Gestern\r\nprint (&quot;Regen: {0:.1f} Liter\/qm&quot;.format(last_rain))\r\nprint (' ')\r\n# ---------------------------------------------------------------------------------\r\n<\/pre>\n<p>Dadurch wird die Aktuelle Temperatur, die Minimas und Maximas der Aussentemperaturen und des Niedersschlages des aktuellen und des Vortages ermittelt.<br \/>\nDas Auslesen der aktuellen Daten war f\u00fcr mich kein Problem, schwieriger stellte sich die Ermittelung der Altdaten heraus. Im Demoprogramm wird eine Device-ID und eine Modul-ID erwartet. Diese lassen sich mit dem folgenden Programm ermitteln&#8230;<\/p>\n<pre class=\"brush: python; title: ; notranslate\" title=\"\">\r\n#!\/usr\/bin\/python3\r\n# encoding=utf-8\r\n\r\nimport sys\r\nimport lnetatmo\r\n\r\n# Device-Liste von Netatmo abholen\r\nauthorization = lnetatmo.ClientAuth()\r\ndevList = lnetatmo.DeviceList(authorization)\r\n# Funktionen um die ID von Modulen und Device zu ermitteln\r\nprint(devList.modulesNamesList())\r\n# Niederschlag ist der Modulname meines Regenmessers\r\nprint(devList.moduleByName('Niederschlag'))\r\n<\/pre>\n<p>Der n\u00e4chste Schritt wird dann die Ausgabe auf dem CBerry28-Display sein.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Programm zur Ermittlung der Daten meiner Wetterstation Die Wetterdaten werden von der Netatmo-Wetterstation \u00fcber das Internet an die Server von Netatmo versendet. Mit einer App f\u00fcr IOS oder Android lassen sich dann die Daten ansehen. Weiterhin ist dies auch mit einer Webseite nach Autentifikation m\u00f6gich. Ein netter Nebenefekt dieser Datensammelei ist eine weltweite Karte mit den Au\u00dfentemperaturen aller freigegebener Netatmoger\u00e4te (Link). Netatmo gibt die M\u00f6glichkeit eigene Apps zu erstellen, die Dokumentatiaon dazu findet man unter https:\/\/dev.netatmo.com\/doc. Da ich Python f\u00fcr den RaspberryPi nutzen wollte fand ich auch dazu eine APi im GitHub: https:\/\/github.com\/philippelt\/netatmo-api-python Phillip Larduinat hat eine Bibliothek in Python erstellt um die API-Funktionen von Netatmo aufzurufen. Diese habe ich f\u00fcr mein Programm benutzt. Hier nun der Quelltext f\u00fcr das Auslesen der Daten meiner Wetterstation: #!\/usr\/bin\/python3 # encoding=utf-8 # Ermittelung der Wetterdaten aus meiner Netatmo-Wetterstation # mithilfe der Phython-Api von Phillip Larduinat import sys, datetime, time import lnetatmo # Device-Liste von Netatmo abholen authorization = lnetatmo.ClientAuth() devList = lnetatmo.DeviceList(authorization) # Ermittlung der aktuellen Wetterdaten &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; # Aktuelle Aussentemperatur ausgeben temp_Out=devList.lastData()&#x5B;&#8217;Garten&#8216;]&#x5B;&#8217;Temperature&#8216;] # Min \/ Max Temperaturen ausgeben temp_min = devList.lastData()&#x5B;&#8217;Garten&#8216;]&#x5B;&#8217;min_temp&#8216;] temp_max = devList.lastData()&#x5B;&#8217;Garten&#8216;]&#x5B;&#8217;max_temp&#8216;] # Niederschlagmenge des heutigen Tages auslesen und ausgeben rain = devList.lastData()&#x5B;&#8217;Niederschlag&#8216;]&#x5B;&#8217;sum_rain_24&#8242;] # Wetterdaten des Vortages ermitteln: &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; now [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-102","post","type-post","status-publish","format-standard","hentry","category-raspberry-pi"],"_links":{"self":[{"href":"https:\/\/hollbruegge.de\/index.php?rest_route=\/wp\/v2\/posts\/102","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hollbruegge.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hollbruegge.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hollbruegge.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hollbruegge.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=102"}],"version-history":[{"count":12,"href":"https:\/\/hollbruegge.de\/index.php?rest_route=\/wp\/v2\/posts\/102\/revisions"}],"predecessor-version":[{"id":161,"href":"https:\/\/hollbruegge.de\/index.php?rest_route=\/wp\/v2\/posts\/102\/revisions\/161"}],"wp:attachment":[{"href":"https:\/\/hollbruegge.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=102"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hollbruegge.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=102"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hollbruegge.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=102"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}