Artikelformat

Wetterdaten auf dem Raspberry PI in FHEM

Wetter Daten

Wetterdaten in FHEM

Raspberry PI und FHEM

Mein Home wird Smart.

Nach dem ich nun meinen Raspberry PI mit der COC Erweiterung zusammen gebracht und die Anpassungen aus dem letzten Beitrag eingebaut habe, ist der Raspberry PI nun bereit mit FEHM meine Haussteuerung zu übernehmen.

Da am Anfang noch keine passende Hardware im Haus war habe ich erst mal mit den Wetterdaten von Yahoo einen Wetter Bereich in FHEM eingerichtet. Die Wetterdaten werden mir später helfen schon frühzeitig Aktionen auszulösen oder zu planen. Zur Zeit bieten sie mir die Möglichkeit mich in FHEM zurecht zu finden und die Funktionen zu verstehen.

Ziel dieses Versuchs ist:

  1. Daten automatisch von Yahoo abzufragen
  2. Diese Daten in einem Logfile abzulegen
  3. Die Daten grafisch aufzubereiten.

Daten automatisch von Yahoo abfragen

Wo bekomme ich die notwendigen Daten her und in welcher Form stehen sie bereit?

Yahoo bietet mit seiner Wetter-API eine einfache Möglichkeit Wetterdaten für FHEM zu erhalten. FHEM selber hat ein Modul welches diese Daten aufbereiten kann.
Da ein Aufruf mittels Postleitzahl nicht mehr funktioniert muss man sich als erstes seine WOEID [WHERE-ON-EARTH-ID] holen. Diese WOEID erhält man wenn man auf weather.yahoo.com seinen Ort sucht. Hier im Beispiel „Tarp Germany“ liefert den folgenden Link: http://weather.yahoo.com/germany/schleswig-holstein/tarp-698642/ Die WOEID ist die Nummer im Link, also für Tarp ist es die 698642. Diese Wetterdaten sind nun erst mal in US Format welches ich hier in Deutschland ja nicht haben will, das regel ich gleich beim Aufruf durch FHEM.

Mit den nun erhaltenen Information baue ich mir in der fhem.cfg ein neuen define:

# ————– Wetterdaten ————-
define MyWetter Weather 698642 900
attr MyWetter room Wetter

Ich möchte also nun alle 900 Sekunden das Wetter von Yahoo für den Ort 698642 in deutsch (de) erhalten. Das Attribut attr MyWetter room Wetter erzeugt einen neuen Raum „Wetter“

Wetterdaten in ein Logfile schreiben

Nun möchte ich diese Wetterdaten auch in ein Logfile schreiben:

# — Logfile alle Daten —
define FL_MyWetter FileLog ./log/wetter-%Y-%m.log MyWetter
attr FL_MyWetter logtype text
attr FL_MyWetter room Wetter

Das Logfile wetter-%Y-%m.log wird nun die gelieferten Daten aufnehmen und für jeden Monat eine eigene Datei erstellen. Der Logtype ist text und die Datei wird dem Raum „Wetter“ zugeordnet.
Auch der zweite Teil ist erledigt.

Anzeige der Wetterdaten

Um nun das Wetter auch noch hübsch als Icon angezeigt zu bekommen muss der Eintrag für MyWetter noch um folgendes Attribut erweitert werden:

attr MyWetter localicons 1

und ein Weblink erstellt werden:

# — Wetter Icons —
define A_Tarp weblink htmlCode {WeatherAsHtml(“MyWetter”)}
attr A_Tarp room Wetter

A_Tarp ist der von mir vergebene Name
htmlCode {WeatherAsHtml(“MyWetter”)} erzeugt die Wetter Icons für das MyWetter Objekt

Nun erhalte ich alle 15 Minuten einen frischen Wetterbericht von Yahoo.

Viel Erfolg beim nachbauen. Der nächste Artikel wird dann für Temperatur, Luftfeuchtigkeit und Luftdruck so wie Wind die grafischen Verläufe anzeigen lassen.

— Update: 19.07.2013 —

Wie von aufmerksamen Lesern bemerkt fehlen noch die *.gplot Dateien, diese möchte ich hier nun nachliefern.

Die Datei Luftdruck_Tarp.gplot

############################
# Display the measured temp and the actuator.
# Corresponding FileLog definition:
# define FL_Tarp_P FileLog /log/wetter-%Y.log MyWetter:pressure:.*

set terminal png transparent size <SIZE> crop
set output ‘<OUT>.png’
set xdata time
set timefmt “%Y-%m-%d_%H:%M:%S”
set xlabel ” ”
set ytics nomirror
set y2tics
#set ytics
set title ‘<L1>’
set grid xtics y2tics

set ylabel “Luftdruck Tarp”

#FileLog 4:::

plot \
“< awk ‘/Temperatur/{print $1, $4}’ <IN>”\
using 1:2 axes x1y2 title ‘Luftdruck’ with lines,\

Die Datei Temperatur_Tarp.gplot

############################
# Display the measured temp and the actuator.
# Corresponding FileLog definition:
# define FL_Tarp_T FileLog /log/wetter-%Y-%m.log MyWetter:T:.*

set terminal png transparent size <SIZE> crop
set output ‘<OUT>.png’
set xdata time
set timefmt “%Y-%m-%d_%H:%M:%S”
set xlabel ” ”
set ytics nomirror
set y2tics
#set ytics
set title ‘<L1>’
set grid xtics y2tics

set y2label “Temperatur in °C”
set ylabel “Luftfeuchtigkeit (%)”

#FileLog 4:::
#FileLog 6:::

plot \
“< awk ‘/Temperatur/{print $1, $4}’ <IN>”\
using 1:2 axes x1y2 title ‘Temperatur’ with lines,\
“< awk ‘/Luftfeuchtigkeit/ {print $1, $6}’ <IN>”\
using 1:2 axes x1y1 title ‘Luftfeuchtigkeit (%)’ with lines\

So wie die Datei Wind_Tarp.gplot

############################
# Display the measured temp and the actuator.
# Corresponding FileLog definition:
# define FL_Tarp_W FileLog /log/wetter-%Y.log MyWetter:T:.*

set terminal png transparent size <SIZE> crop
set output ‘<OUT>.png’
set xdata time
set timefmt “%Y-%m-%d_%H:%M:%S”
set xlabel ” ”
set ytics nomirror
set y2tics
#set ytics
set title ‘<L1>’
set grid xtics y2tics

set ylabel “Wind Tarp”

#FileLog 8:::

plot \
“< awk ‘/Wind/{print $1, $4}’ <IN>”\
using 1:2 axes x1y2 title ‘Windgeschwindigkeit’ with lines,\

Diese 3 Files sind Grundlage für die folgenden Diagramme:

Diagramm

Die Wetterdaten als Diagramm

Autor: Radzio Frank

Jahrgang 66, ein Nordlicht das seine Wurzeln im Ruhrgebiet hat und seit 2001 im hohen Norden lebt und arbeitet. Mein Blog findet Ihr unter http://bloglich.de

28 Kommentare

  1. Hallo,

    ich habe leider auch die gleichen Probleme wie die anderen –
    Anstelle Tarp hatte ich Hannover eingesetzt und alle 3 Dateien erstellt:

    ERROR:
    Invalid characters in name (not A-Za-z0-9.:_): MyWet­ter Please define MyWet­ter first Please define MyWet­ter first Usage: define weblink [cmdList|dbplot|fileplot|htmlCode|iframe|image|link] Please define A_Hannover first Usage: define weblink [cmdList|dbplot|fileplot|htmlCode|iframe|image|link] Please define Temperatur_Hannover first Please define Temperatur_Hannover first Please define Temperatur_Hannover first Usage: define weblink [cmdList|dbplot|fileplot|htmlCode|iframe|image|link] Please define Luftdruck_Hannover first Please define Luftdruck_Hannover first Please define Luftdruck_Hannover first Usage: define weblink [cmdList|dbplot|fileplot|htmlCode|iframe|image|link] Please define Wind_Hannover first Please define Wind_Hannover first Please define Wind_Hannover first

    Antworten
    • anbei der Code ohne Kurven etc. mit Daten für Berlin:

      # ————– Wet­ter­da­ten ————-
      define MyWetter Weather 698642 900
      attr MyWetter room Wetter
      attr MyWetter localicons 1

      # — Wetter Icons —
      define A_Berlin weblink htmlCode { WeatherAsHtmlD(“MyWetter”) }
      attr A_Berlin room Wetter

      Antworten
  2. Hallo,

    ich hatte auch ein Problem mit den Beispielen. Es lag daran, dass beim Kopieren von der Seite hier weiche Trennzeichen (“soft hyphens”, http://de.wikipedia.org/wiki/Weiches_Trennzeichen) mit im Text sind. Die sieht man nicht in jedem Editor, man sieht sie aber z.B. in ‘Vim’ auf dem Pi. Wenn man dort mit dem Cursor über ein Wort wie ‘htmlCode’ fährt, sieht man, dass da ein Trennzeichen mit drin ist. FHEM stolpert dann über die Konfiguration.

    Lösung: Man kann die Soft-Hyphens mit ‘sed’ rausfiltern, am Beispiel der fhem.cfg:

    sed -i ‘s/\xc2\xad//g’ fhem.cfg

    (Hexadezimal C2AD ist der Code für Soft Hyphens).

    Antworten
  3. Michael Mollath

    24/04/2014 @ 13:10

    Also bei mir gab es einige Probleme insbesondere mit den gplot Dateien.
    Daher hier meine reinkopiert, wie es jetzt geht:

    File: Temperatur_Hamburg.gplot
    ############################
    # Display the measured temp and the actuator.
    # Correspon­ding FileLog definition:
    # define FL_Hamburg_T FileLog /log/wetter-%Y-%m.log MyWetter:T:.*
    set terminal png transparent size crop
    set output “.png’
    set xdata time
    set timefmt “%Y-%m-%d_%H:%M:%S”
    set xlabel ” ”
    set ytics nomirror
    set y2tics
    #set ytics
    set title
    set grid xtics y2tics
    set y2label “Temperatur in °C”
    set ylabel “Luftfeuchtigkeit (%)”
    #FileLog 4:::
    #FileLog 6:::
    plot \
    “< awk "/Temperatur/{print $1, $4}" “\
    using 1:2 axes x1y2 title “Temperatur” with lines,\
    “< awk "/Luftfeuchtigkeit/ {print $1, $6}" “\
    using 1:2 axes x1y1 title “Luftfeuchtigkeit (%)” with lines\

    File: Wind_Hamburg.gplot
    ############################
    # Display the measured temp and the actuator.
    # Corresponding FileLog definition:
    # define FL_Hamburg_W FileLog /log/wetter-%Y.log MyWetter:W:.*
    set terminal png transparent size crop
    set output “.png”
    set xdata time
    set timefmt “%Y-%m-%d_%H:%M:%S”
    set xlabel ” ”
    set ytics nomirror
    set y2tics
    #set ytics
    set title
    set grid xtics y2tics
    set ylabel “Wind Hamburg”
    #FileLog 8:::
    plot \
    “< awk "/Wind/{print $1, $4}" “\
    using 1:2 axes x1y2 title “Windgeschwindigkeit” with lines,\

    File:Luftdruck_Hamburg.gplot
    ############################
    # Display the measured temp and the actuator.
    # Corresponding FileLog definition:
    # define FL_Hamburg_P FileLog /log/wetter-%Y-%m.log MyWetter:pressure:.*
    set terminal png transparent size crop
    set output “.png’
    set xdata time
    set timefmt “%Y-%m-%d_%H:%M:%S”
    set xlabel ” ”
    set ytics nomirror
    set y2tics
    #set ytics
    set title
    set grid xtics y2tics
    set ylabel “Luftdruck Hamburg”
    #FileLog 4:::
    plot \
    “< awk "/Temperatur/{print $1, $4}" “\
    using 1:2 axes x1y2 title “Luftdruck” with lines,\

    Antworten
  4. Ich probiere jetzt seit Stunden, bekomme aber die Diagramme nicht ins FHEM.

    # — Logfile Tem­pe­ra­tur —
    define FL_Tarp_T FileLog ./log/wetter_tarp_t-%Y-%m.log MyWetter:T:.*
    attr FL_Tarp_T logtype Temperatur_Tarp
    attr FL_Tarp_T room Wetter

    # — Dia­gramm Tem­pe­ra­tur und Luft­feuchte —
    define Temperatur_Tarp weblink file­plot FL_Tarp_T:Temperatur_Tarp:CURRENT

    Bei der letzten Zeile bekomme ich die Meldung “Usage: define weblink [cmdList|dbplot|fileplot|htmlCode|iframe|image|link|readings] ”

    Die gplot Dateien existieren mit dem entsprechenden Namen Temperatur_Tarp.gplot

    Was kann das noch sein?

    Gruß Robert

    Antworten
  5. Hallo Frank,

    Kleine Anfängerfrage: beim einsetzen deines Auszuges in die fhem.cfg, bekomme ich folgende Fehlermeldung:

    Invalid characters in name (not A-Za-z0-9.:_): MyWet­ter Please define MyWet­ter first Please define MyWet­ter first Usage: define weblink [cmdList|dbplot|fileplot|htmlCode|iframe|image|link|readings] Please define A_Tarp first Usage: define weblink [cmdList|dbplot|fileplot|htmlCode|iframe|image|link|readings] Please define Temperatur_Tarp first Please define Temperatur_Tarp first Please define Temperatur_Tarp first Usage: define weblink [cmdList|dbplot|fileplot|htmlCode|iframe|image|link|readings] Please define Luftdruck_Tarp first Please define Luftdruck_Tarp first Please define Luftdruck_Tarp first Usage: define weblink [cmdList|dbplot|fileplot|htmlCode|iframe|image|link|readings] Please define Wind_Tarp first Please define Wind_Tarp first Please define Wind_Tarp first

    Kannst Du mir hier weiterhelfen?

    Danke + Gruß
    Mirko

    Antworten
      • Heyi,

        ich hab alles 1 zu 1 kopiert, also das aus deinem letzten Kommentar in die fhem.conf und die drei .gplot Daten unter /opt/fhem/log eingefügt. Trotzdem kommt bei mir die obige Fehlermeldung. Was mach ich noch falsch?

        Danke schon mal
        Tobias

        Antworten
  6. Ich bekomme zwar die Daten aber über den Diagrammen steht bei mir
    “Unrecognized character \xE2; marked by <– HERE after herAsHtml(<– HERE near column 16 at (eval 5237) line 1. " und es wird kein graph angezeigt.

    Was habe ich falsch gemacht??

    Antworten
  7. Frank Stolzenberger

    14/10/2013 @ 16:55

    Hallo,
    erstmal danke für das superklasse script.
    Ein kleines Problem habe ich noch und ich finde die Lösung nicht.
    Bei den Plots steht folgende Fehlermeldung

    XML-Verarbeitungsfehler: nicht wohlgeformt
    Adresse: http://xxx.xxx.xxx.xxx:8083/fhem/SVG_showLog?dev=Luftdruck_Wernau&logdev=FL_Wernau_P&gplotfile=Luftdruck_Wernau&logfile=CURRENT&pos=
    Zeile Nr. 83, Spalte 74:￿Unrecognized character x93; marked by <– HERE after { <– HERE near column 3 at (eval 63) line 1.

    Kann mir da jemand weiterhelfen?

    Danke und Gruss
    Frank

    Antworten
    • Frank Stolzenberger

      15/10/2013 @ 09:16

      Hallo,

      konnte das Problem mittlerweile selbst lösen.

      Bei Cut&Paste wurden seltsame Character in gplot Dateien
      eingefügt.

      Antworten
    • Wie sieht denn das Logfile ./log/wetter-%Y-%m.log aus?
      Gibt es dort Werte die angezeigt werden könnten?

      Ferndiagnosen ohne irgend etwas zu sehen sind nicht leicht 😉

      Antworten
  8. Hallo, sehr gute Sache, bei mir wird alles angezeigt – aber es sind in den Diagrammen keine Werte eingetragen…? Weißt du warum nicht

    Antworten
  9. Hallo Frank,

    ich habe deinen kompletten Auszug au deiner.cfg in meine kopiert.

    leider bekomme ich keine Vorhersage mit icons gezeigt und die plots erzeugen eine Fehlermeldung

    Unrecognized character \xE2; marked by <– HERE after herAsHtml(<– HERE near column 16 at (eval 109) line 1.

    Kannst du mir weiterhelfen?

    Grüße
    Rudi

    Antworten
    • Hallo Rudi,

      versuche mal WeatherAsHtml(“MyWetter”) gegen WeatherAsHtml(‘MyWetter’) auszutauschen. Da scheint etwas mit den Anführungszeichen nicht zu funktionieren.

      mfg
      Frank

      Antworten
      • hallo frank,
        schade das du meinen ersten beitrag gelöscht hast, dein script ist gut, aber als anfänger ist es nicht leicht ohne hilfe

        Antworten
        • Hallo Jimbob,

          hier wird nicht gelöscht nur manch ein Seitenbetreiber hat auch ein offline Leben. Die Beiträge werden hier nicht sofort freigeschaltet, ich mache es manuell wenn ich einmal drüber geschaut habe und in meiner Freizeit am Rechner bin.

          Zum Thema: Ich gehe davon aus das es sich um die Anführungszeichen handelt. Da sich Rudi nicht mehr gemeldet hat klappt es wohl mit der Änderung. Schau mal auf diesen Kommentar http://bloglich.de/art/rpi/wetterdaten-auf-dem-raspberry-pi-in-fhem/#comment-152

          Antworten
    • Hallo Frank,
      super seite, habe das gleiche Problem wie Rudi… gibt es da irgendwie Lösungsansätze zu?
      Vielen dank im vorraus
      Gruß
      Jim Bob

      Antworten
  10. hallo,
    danke erst mal für den Artikel.
    Leider habe ich zwei Probleme:
    Ich habe das mit den Logfiles weg gelassen, weil ich das nicht benötige, aber selbst mit diesem Eintrag funktioniert es nicht
    1. Wenn ich den Befehl attr MyWetter localicons 1 verwende, kommt leider kein schönes Icon wie im ersten Bild. Benötige ich dafür zusätzliche Icons oder sind die in FHEM standardmäßig dabei?
    2. gebe ich die beiden befehle nacheinander ein:
    define A_Tarp weblink htmlCode {WeatherAsHtml(“MyWetter”)}
    attr A_Tarp room Wetter
    erhalte ich folgenden fehler:
    Unrecognized character \xE2; marked by <– HERE after herAsHtml(<– HERE near column 16 at (eval 116) line 1.

    Danke für die Hilfe.

    Antworten
  11. Super Beitrag.
    Funktioniert soweit 🙂

    Kann man die fehlende Übersetzung(en) wie z.B. “Partly Cloudy”
    irgendwo einstellen?

    Ist es auch möglich den Sonnenaufgang und Sonnenuntergang
    mit zu loggen?

    Antworten
    • Hallo Odie,

      um die Daten übersetzt zu erhalten reicht ein einfaches de am Ende des define :

      define MyWetter Weather 698642 900 de

      Um den Sonnenaufgang bzw -untergang mit zu schreiben muss wohl das Modul “Weather” angepasst werden. Die Weather api von Yahoo liefert wohl entsprechende Werte. Ich schau mir das mal an, versprechen kann ich aber nichts.

      Antworten
      • Ah,.. “de” ist der Schalter.”
        Super, klappt. Danke

        Ich habe eine PV-Anlage und da wäre es ganz nett zu wissen
        wann die Sonne auf bzw. unter geht um die Sonnenstunden
        zu errechnen. Ist zwar nichts genaues aber sonst habe ich keine
        Möglichkeit. Vielen Dank für´s schauen.

        Antworten
  12. Gute Anleitung.Habs mal ausprobiert.
    bekomme leider irgendwie Fehlermeldung. Bin auch erst seit 2 Tagen dabei mich mit dem Pi und COC und fhem zu beschäftigen.

    Cannot read ./www/gplot/Luftdruck_Wernsdorf.gplot
    das gleiche kommt auch bei Temperatur und Wind

    Antworten
    • Radzio Frank

      17/07/2013 @ 08:34

      Ah ja die Asche auf mein Haupt, die Fehlermeldung:

      Cannot read ./www/gplot/Luftdruck_Wernsdorf.gplot

      Sagt einfach aus das die .gplot Datei nicht vorhanden ist. Das verschweige ich ja leider auch in diesem Post 🙁
      Ich bereite das heute noch mal auf und stelle die fehlenden Informationen zu den .gplot Dateien bereit.

      Antworten
      • Das wäre super. Dann nimmt bei mir das fhem endlich Form an und ich habe dort eine Baustelle weniger.

        Danke

        Antworten
  13. Hi Frank,
    danke für die hilfreiche Anleitung, hat mir weitergeholfen! Es gibt da aber noch einige Fehler: Statt ‘deattr MyWetter room Wetter’ sollte es “attr MyWetter room Wetter” heissen. Weiter sind die Anführungszeichen bei ‘{WeatherAsHtml(“MyWetter”)}’ strange formatiert. Wenn mal sie so übernimmt, bekommt man einen Fehler. Für jemanden, der sich gerade frisch mit der Materie befasst, kosten solche Fehler ewig Zeit, da spreche ich aus Erfahrung. Auf meinem Blog hab ich übrigens auch einige FHEM-Howtos erstellt, evtl. ja auch für dich bzw. deine Leser interessant: http://www.meintechblog.de/category/fhem/
    Grüße
    Jörg

    Antworten
    • Radzio Frank

      07/06/2013 @ 06:13

      Moin Jörg,

      den Fehler bei attr habe ich bereinigt, danke.
      Deine Anmerkung zu {WeatherAsHtml(“MyWetter”)} kann ich so nicht bestätigen, wird bei mir ohne Fehler verarbeitet.

      Hier der komplette Auszug aus der config:

      # ————– Wetterdaten ————-
      define MyWetter Weather 698642 900 de
      attr MyWetter localicons 1
      attr MyWetter room Wetter

      # — Wetter Icons —
      define A_Tarp weblink htmlCode {WeatherAsHtml(“MyWetter”)}
      attr A_Tarp room Wetter

      # — Logfile alle Daten —
      define FL_MyWetter FileLog ./log/wetter-%Y-%m.log MyWetter
      attr FL_MyWetter logtype text
      attr FL_MyWetter room Wetter
      #attr FileLog_MyWetter icon icoLog

      # — Logfile Temperatur —
      define FL_Tarp_T FileLog ./log/wetter_tarp_t-%Y-%m.log MyWetter:T:.*
      attr FL_Tarp_T logtype Temperatur_Tarp
      attr FL_Tarp_T room Wetter

      # — Diagramm Temperatur und Luftfeuchte —
      define Temperatur_Tarp weblink fileplot FL_Tarp_T:Temperatur_Tarp:CURRENT
      attr Temperatur_Tarp label “Temperatur Tarp in °C”
      attr Temperatur_Tarp plotsize 380,160
      attr Temperatur_Tarp room Wetter

      # — Logfile Luftdruck —
      define FL_Tarp_P FileLog ./log/wetter_tarp_p-%Y.log MyWetter:pressure:.*
      attr FL_Tarp_P logtype Luftdruck_Tarp
      attr FL_Tarp_P room Wetter

      # — Diagramm Luftdruck —
      define Luftdruck_Tarp weblink fileplot FL_Tarp_P:Luftdruck_Tarp:CURRENT
      attr Luftdruck_Tarp label “Luftdruck Tarp”
      attr Luftdruck_Tarp plotsize 380,160
      attr Luftdruck_Tarp room Wetter

      # — Logfile Wind —
      define FL_Tarp_W FileLog ./log/wetter_tarp_t-%Y-%m.log MyWetter:T:.*
      attr FL_Tarp_W logtype Wind_Tarp
      attr FL_Tarp_W room Wetter

      # — Diagramm Wind —
      define Wind_Tarp weblink fileplot FL_Tarp_W:Wind_Tarp:CURRENT
      attr Wind_Tarp label “Windgeschwindigkeit Tarp”
      attr Wind_Tarp plotsize 380,160
      attr Wind_Tarp room Wetter

      Antworten

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.