Ankündigung

Einklappen
Keine Ankündigung bisher.

DWD Plugin

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    DWD Plugin

    Hallo,

    ich würde gerne das DWD Plugin dazu benutzen mir die aktuellen Wetterdaten anzuzeigen.Am liebsten kurze Übersicht auf der ersten Seite und mit mehr Details auf einer anderen. Benutze das neuste RaspberryPI Image und habe mich bei der Installation an folgende Anleitung gehaltenfür wetter.conf, wetter.py und warnungen.py)
    https://github.com/mknx/smarthome/wiki/DWD

    Meine Plugin.conf
    [dwd]
    class_name = DWD
    class_path = plugins.dwd
    username = xxx
    password = xxx


    logic.conf

    [dwd]
    filename = wetter.py
    cycle = 43200
    [Warnung]
    filename = wetter_warnungen.py
    cycle = 43200


    Das Abholen der Wetterdaten per FTP scheint auch zu funktionieren:
    > ls wetter
    Items:
    ======
    wetter
    wetter.temperatur = 5.8
    wetter.niederschlag = 0
    wetter.wetter = ---
    wetter.luftdruck = 1001.9
    wetter.windrichtung = NW
    wetter.windgeschwindigkeit = 11
    wetter.boen =
    wetter.vorhersage = ['<li data-role="list-divider">Saturday<p class="ui-li-aside">01.03.2014</p></li>', '<li><img src="/img/weather/26.png"> 4 °C bewölkt </li>', '<li data-role="list-divider">Sunday<p class="ui-li-aside">02.03.2014</p></li>', '<li><img src="/img/weather/26.png"> 1 °C bedeckt </li>', '<li><img src="/img/weather/26.png"> 8 °C bewölkt </li>']
    wetter.vorhersage.d0
    wetter.vorhersage.d0.frueh
    wetter.vorhersage.d0.frueh.temperatur =
    wetter.vorhersage.d0.frueh.wolken =
    wetter.vorhersage.d0.frueh.wind =
    wetter.vorhersage.d0.mittag
    wetter.vorhersage.d0.mittag.temperatur =
    wetter.vorhersage.d0.mittag.wolken =
    wetter.vorhersage.d0.mittag.wind =
    wetter.vorhersage.d0.spaet
    wetter.vorhersage.d0.spaet.temperatur =
    wetter.vorhersage.d0.spaet.wolken =
    wetter.vorhersage.d0.spaet.wind =
    wetter.vorhersage.d0.nacht
    wetter.vorhersage.d0.nacht.temperatur = 4
    wetter.vorhersage.d0.nacht.wolken = bewölkt
    wetter.vorhersage.d0.nacht.wind =
    wetter.vorhersage.d0.uv = 0
    wetter.vorhersage.d1
    wetter.vorhersage.d1.frueh
    wetter.vorhersage.d1.frueh.temperatur = 1
    wetter.vorhersage.d1.frueh.wolken = bedeckt
    wetter.vorhersage.d1.frueh.wind =
    wetter.vorhersage.d1.spaet
    wetter.vorhersage.d1.spaet.temperatur = 8
    wetter.vorhersage.d1.spaet.wolken = bewölkt
    wetter.vorhersage.d1.spaet.wind =
    wetter.vorhersage.d1.uv = 0
    wetter.vorhersage.d2
    wetter.vorhersage.d2.frueh
    wetter.vorhersage.d2.frueh.temperatur = 1
    wetter.vorhersage.d2.frueh.wolken = bedeckt
    wetter.vorhersage.d2.frueh.wind =
    wetter.vorhersage.d2.spaet
    wetter.vorhersage.d2.spaet.temperatur = 10
    wetter.vorhersage.d2.spaet.wolken = bedeckt
    wetter.vorhersage.d2.spaet.wind =
    wetter.vorhersage.d2.uv = 0
    wetter.vorhersage.d3
    wetter.vorhersage.d3.frueh
    wetter.vorhersage.d3.frueh.temperatur = 1
    wetter.vorhersage.d3.frueh.wolken = bedeckt
    wetter.vorhersage.d3.frueh.wind =
    wetter.vorhersage.d3.spaet
    wetter.vorhersage.d3.spaet.temperatur = 9
    wetter.vorhersage.d3.spaet.wolken = leichter Regen
    wetter.vorhersage.d3.spaet.wind =
    wetter.warnungen = []
    wetter.warnungen.hitze = False
    wetter.warnungen.uv = False
    wetter.warnungen.wind = False
    wetter.warnungen.regen = False
    wetter.warnungen.nebel = False
    wetter.warnungen.sturm = False
    wetter.warnungen.schnee = False
    wetter.warnungen.frost = False
    wetter.warnungen.glaette = False
    >

    Das Debug zeigt folgenden Fehler an:
    2014-03-01 23:14:43,004 ERROR dwd Logic: dwd, File: /usr/smarthome/logics/wetter.py, Line: 109, Method: <module>, Exception: 'SmartHome' object has no attribute 'heute' -- scheduler.py:_task:334
    Traceback (most recent call last):
    File "/usr/smarthome/lib/scheduler.py", line 327, in _task
    exec(obj.bytecode)
    File "/usr/smarthome/logics/wetter.py", line 109, in <module>
    sh.heute.wetter(forecaststring(sh.heute.datum(), forecast, images))
    AttributeError: 'SmartHome' object has no attribute 'heute'


    so sehen die entsprechenden Zeilen in der wetter.py Datei aus:
    sh.heute.wetter(forecaststring(sh.heute.datum(), forecast, images))
    sh.morgen.wetter(forecaststring(sh.morgen.datum(), forecast, images))


    Hat da jemand eine Tip für mich?

    Und die zweite Frage Frage wäre wie bekomme ich die Daten angezeigt in smartvisu. Aus der wetter.conf Datei erscheint nichts auf den Seiten von smartvisu.

    Danke
    micblue

    #2
    Dein Item heißt 'wetter', du brauchst aber ein Item 'wetter' unter dem Item 'heute' und eins unter dem Item 'morgen'.
    Mit freundlichen Grüßen
    Niko Will

    Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
    - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

    Kommentar


      #3
      Sorry aber komme hier irrgendwie nicht weiter.

      Die Items wurden ja in der wetter.py festgelegt

      items = { d0: sh.wetter.vorhersage.d0, d1: sh.wetter.vorhersage.d1, d2: sh.wetter.vorhersage.d2, d3: sh.wetter.vorhersage.d3}wobei d0 wahrscheinlich für heute steht und d1 für morgen

      Müsste dann folgender Ausdruck:
      sh.heute.wetter(forecaststring(sh.heute.datum(), forecast, images)) sh.morgen.wetter(forecaststring(sh.morgen.datum(), forecast, images))Durch sowas ersetzt werden?
      sh.d0.wetter(forecaststring(sh.d0.datum(), forecast, images)) sh.d1.wetter(forecaststring(sh.d1.datum(), forecast, images))Hier bringt der Debug aber den gleichen Fehler:
      2014-03-04 22:12:13,595 ERROR dwd Logic: dwd, File: /usr/smarthome/logics/wetter.py, Line: 109, Method: <module>, Exception: 'SmartHome' object has no attribute 'd0' -- scheduler.py:_task:334
      Traceback (most recent call last):
      File "/usr/smarthome/lib/scheduler.py", line 327, in _task
      exec(obj.bytecode)
      File "/usr/smarthome/logics/wetter.py", line 109, in <module>
      sh.d0.wetter(forecaststring(sh.d0.datum() , forecast, images))
      AttributeError: 'SmartHome' object has no attribute 'd0'

      Mich wundert wie das beim Autor funktioniert hat ?

      Wenn jemand von euch noch einen Tip hat ....

      Danke!

      Kommentar


        #4
        Hallo,

        Zitat von micblue Beitrag anzeigen
        Sorry aber komme hier irrgendwie nicht weiter.

        Die Items wurden ja in der wetter.py festgelegt

        items = { d0: sh.wetter.vorhersage.d0, d1: sh.wetter.vorhersage.d1, d2: sh.wetter.vorhersage.d2, d3: sh.wetter.vorhersage.d3}wobei d0 wahrscheinlich für heute steht und d1 für morgen
        Das ist richtig. d0 steht für heute und d1 für morgen.

        Müsste dann folgender Ausdruck:
        sh.heute.wetter(forecaststring(sh.heute.datum(), forecast, images)) sh.morgen.wetter(forecaststring(sh.morgen.datum(), forecast, images))Durch sowas ersetzt werden?
        sh.d0.wetter(forecaststring(sh.d0.datum(), forecast, images)) sh.d1.wetter(forecaststring(sh.d1.datum(), forecast, images))
        Dann muss der Ausdruck natürlich so lauten:
        sh.wetter.vorhersage.d0(forecaststring(sh.wetter.v orhersage.d0, forecast, images))
        sh.wetter.vorhersage.d1(forecaststring(sh.wetter.v orhersage.d1, forecast, images))

        Hat bei mir so funktioniert.

        Kommentar


          #5
          Syntax Error

          Hallo zusammen,

          ich versuche seit Tagen, das DWD-Plugin zum Laufen zu bekommen, allerdings bekomme ich im LOG immer folgende Fehler:

          Code:
          2014-07-29 21:31:51 ERROR    Main         Exception: invalid syntax (wetter.py, line 13)
          Traceback (most recent call last):
            File "/usr/smarthome/lib/logic.py", line 119, in generate_bytecode
              self.bytecode = compile(code, self.filename, 'exec')
            File "/usr/smarthome/logics/wetter.py", line 13
              u'bewölkt': '26.png',
                        ^
          SyntaxError: invalid syntax
          2014-07-29 21:31:51 ERROR    Main         Exception: invalid syntax (wetter_warnungen.py, line 26)
          Traceback (most recent call last):
            File "/usr/smarthome/lib/logic.py", line 119, in generate_bytecode
              self.bytecode = compile(code, self.filename, 'exec')
            File "/usr/smarthome/logics/wetter_warnungen.py", line 26
              warnungen.append(u'<li><p style="font-weight:bold;">{2}</p><p>{3}</p><p class="ui-li-aside">{0:%a %H:%M}<br />{1:%a %H:%M}</p></li>'.format(warning['start'], warning['end'], warning['kind'], warning['desc']))
                                                                                                                                                 ^
          SyntaxError: invalid syntax
          Ich habe den Code aus dem Wiki so übernommen. Was kann da falsch sein?

          Grüße
          MaxP.

          Kommentar


            #6
            Bei mir das gleiche

            Ich habe das gleiche Problem nachdem ich den Abend bis jetzt versucht habe das Plugin zum laufen zu kriegen. Und kriege die gleichen Fehlermeldungen wie MaxP.

            Aber vorher hatte ich noch folgende Fehlermeldung:
            Code:
            2014-07-30 01:16:39,612 ERROR    Main         Exception: invalid syntax (wetter_warnungen.py, line 7) -- logic.py:generate_bytecode:121
            Traceback (most recent call last):
              File "/usr/smarthome/lib/logic.py", line 119, in generate_bytecode
                self.bytecode = compile(code, self.filename, 'exec')
              File "/usr/smarthome/logics/wetter_warnungen.py", line 7
                mport dateutil.relativedelta
                             ^
            SyntaxError: invalid syntax
            konnte ich aber selber beheben da es nicht mport sondern import heißt (denke ich jetzt mal) das steht dann hier (https://github.com/mknx/smarthome/wiki/DWD) in der Wiki Falsch.

            LG Erik
            Angaben nach bestem Wissen und Gewissen (Inhalt und Rechtschreibung)

            Kommentar


              #7
              nach etwas tieferer Einarbeitung in Python habe ich nun alle u' gelöscht und es funktioniert. Die u' sind, soweit ich es verstanden habe, Unicode-Einleitungen, welche aber seit Python 3 nicht mehr nötig sind.

              Kommentar


                #8
                Danke und nun das nächste Problem

                Hallo,

                danke MaxPfromLE diese Fehler Meldung taucht nun nicht mehr auf. (An die die das u' löschen wollen: dort nur das u löschen, das ' lassen und es gibt auch u")

                Jetzt bekomme ich die Fehlermeldung:

                Code:
                2014-08-06 21:50:51,528 DEBUG    wetter       Item wetter.temperatur = 19.6 via Logic None None -- item.py:__update:363
                2014-08-06 21:50:51,537 DEBUG    wetter       Item wetter.luftdruck = 1013.9 via Logic None None -- item.py:__update:363
                2014-08-06 21:50:51,546 DEBUG    wetter       Item wetter.windgeschwindigkeit = 7 via Logic None None -- item.py:__update:363
                2014-08-06 21:50:51,554 DEBUG    wetter       Item wetter.windrichtung = SO via Logic None None -- item.py:__update:363
                2014-08-06 21:50:51,562 DEBUG    wetter       Item wetter.wetter = --- via Logic None None -- item.py:__update:363
                2014-08-06 21:50:51,569 INFO     wetter       {datetime.datetime(2014, 8, 6, 12, 0, tzinfo=tzfile('/usr/share/zoneinfo/Europe/Berlin')): ['', '', ''], datetime.datetime(2014, 8, 6, 18, 0, tzinfo=tzfile('/usr/share/zoneinfo/Europe/Berlin')): ['', '', '']} -- wetter.py:<module>:96
                2014-08-06 21:50:51,585 ERROR    wetter       Logic: wetter, File: /usr/smarthome/logics/wetter.py, Line: 109, Method: <module>, Exception: 'SmartHome' object has no attribute 'heute' -- scheduler.py:_task:334
                Traceback (most recent call last):
                  File "/usr/smarthome/lib/scheduler.py", line 327, in _task
                    exec(obj.bytecode)
                  File "/usr/smarthome/logics/wetter.py", line 109, in <module>
                    sh.heute.wetter(forecaststring(sh.heute.datum(), forecast, images))
                AttributeError: 'SmartHome' object has no attribute 'heute'
                (An bei die Informationen für aktuelle Temperatur, Niederschlag, Luftdruck, Windrichtung und Windgeschwindigkeit (wie man im Debug sieht) kann man in der VISU nun sehen. Bei Wetter steht --- weiß nicht ob das so sein soll)

                Ich habe jetzt mal versucht die Zeilen 109 und 110 auszukommentieren:
                Code:
                sh.heute.wetter(forecaststring(sh.heute.datum(), forecast, images))
                sh.morgen.wetter(forecaststring(sh.morgen.datum(), forecast, images))
                zu
                Code:
                #sh.heute.wetter(forecaststring(sh.heute.datum(), forecast, images))
                #sh.morgen.wetter(forecaststring(sh.morgen.datum(), forecast, images))
                dann folgt keine Fehlermeldung:
                Code:
                2014-08-06 21:44:49,541 DEBUG    wetter       Item wetter.temperatur = 19.6 via Logic None None -- item.py:__update:363
                2014-08-06 21:44:49,550 DEBUG    wetter       Item wetter.luftdruck = 1013.9 via Logic None None -- item.py:__update:363
                2014-08-06 21:44:49,558 DEBUG    wetter       Item wetter.windgeschwindigkeit = 7 via Logic None None -- item.py:__update:363
                2014-08-06 21:44:49,570 DEBUG    wetter       Item wetter.windrichtung = SO via Logic None None -- item.py:__update:363
                2014-08-06 21:44:49,578 DEBUG    wetter       Item wetter.wetter = --- via Logic None None -- item.py:__update:363
                2014-08-06 21:44:49,585 INFO     wetter       {datetime.datetime(2014, 8, 6, 6, 0, tzinfo=tzfile('/usr/share/zoneinfo/Europe/Berlin')): ['', '', ''], datetime.datetime(2014, 8, 6, 18, 0, tzinfo=tzfile('/usr/share/zoneinfo/Europe/Berlin')): ['', '', ''], datetime.datetime(2014, 8, 6, 12, 0, tzinfo=tzfile('/usr/share/zoneinfo/Europe/Berlin')): ['', '', '']} -- wetter.py:<module>:96
                2014-08-06 21:44:49,601 DEBUG    wetter       Item wetter.vorhersage = ['<li data-role="list-divider">Wednesday<p class="ui-li-aside">06.08.2014</p></li>'] via Logic None None -- item.py:__update:363
                aber danach ist mit Wetter abrufen Schluss und sehe genauso viel wie mit Fehlermeldung. auskommentieren bringt also leider nichts.
                Angaben nach bestem Wissen und Gewissen (Inhalt und Rechtschreibung)

                Kommentar


                  #9
                  Hi,

                  bei mir läuft es jetzt.

                  Für den Standort "Münster/Osnabr.-Flh." muss folgendes in der __init__.py in Zeile 160 geändert werden (statt zwei Leerzeichen nur eins!), ist der längste Bezeichner und da ist nur ein Leerzeichen am Ende:

                  Code:
                  -                space = re.compile(r'  +')
                  +                space = re.compile(r' +')
                  @ErKi:

                  Es sollte meine ich so heissen:

                  Code:
                  # Zusammenfassung für die Startseite
                  sh.wetter.vorhersage.d0(forecaststring(sh.wetter.vorhersage.d0, forecast, images))
                  sh.wetter.vorhersage.d1(forecaststring(sh.wetter.vorhersage.d1, forecast, images))
                  Dann geht es, zumindest bei mir.

                  Vielleicht sollte ins Wiki noch der Hinweis das man sich die Dateien, die geparst werden, mal per Hand runterlädt und dann entsprechend folgende Zeilen anpasst:

                  Hier mit für mich passenden Werten.
                  Code:
                  current = sh.dwd.current('Münster/Osnabr.-Flh.')
                  forecast = sh.dwd.forecast('Nordwest', 'Münster')
                  uvi = sh.dwd.uvi('Osnabrück')
                  @mknx: Kann ich das selbst im Wiki anpassen?

                  Was mir noch aufgefallen ist: Die Vorhersage Daten sollte man nur passend abfragen. Um bestimmte Uhrzeiten (23:30 Uhr) gibt es z.B. keine Daten_Nordwest_frueh. Da steht folgendes drin:

                  Code:
                  Der gewählte Termin ist nicht mehr verfügbar.
                  Bitte wählen Sie einen Vorhersagetermin in der Zukunft.
                  Vielleicht kann man das auch noch abfangen, dafür ist es mir jetzt aber zu spät, da nach zu schauen.

                  Gute Nacht.
                  Gruß
                  Lapheus

                  Kommentar


                    #10
                    Einen noch hinterher...

                    Beim Parsen der aktuellen Werte gibt es noch ein Problem.
                    Der Wert "Wetter/Wolken" kann auch mehrere Worte enthalten, wie z.B. "gering bewölkt" oder "Dunst oder flacher Nebel".
                    Das Scipt ordnet nun "gering" dem "Wetter/Wolken" zu und "bewölkt" wird "Böen" zugeordnet.

                    Kann man dem Split Befehl hier mit geben er soll auf zwei Leerzeichen splitten, dann sollte es gehen.
                    Gruß
                    Lapheus

                    Kommentar


                      #11
                      Vielen Dank

                      Hallo Lapheus,

                      danke jetzt geht es (mit der Ausnahme von Böhen und Wolken/Wind in der Vorhersage dort steht dann einfach nichts aber das stört nicht so).
                      Bei mir tauch das Problem mit dem aufteilen des Wetters nicht auf. (Ich habe die Änderung in der __init__.py nicht vorgenommen)
                      Mein einzigstes Problem ist, dass der DWD keine Wetterstation hier in Bielefeld hat, die Aktuell und Vorhersagen macht. Bis dahin werde ich mich mit Bad Lippspringe und Münster zufrieden geben. Münster ist zwar Wettertechnisch weiter weg aber eine schöne Stadt.
                      Dann von mir auch
                      Gute Nacht
                      Angaben nach bestem Wissen und Gewissen (Inhalt und Rechtschreibung)

                      Kommentar


                        #12
                        Hallo Lapheus,

                        Zitat von Lapheus Beitrag anzeigen
                        [/CODE]@mknx: Kann ich das selbst im Wiki anpassen?
                        jeder Github-Benutzer kann das Wiki verändern.

                        Momentan ist es bei mir ein bisschen eng die Änderungen zu Verfolgen. Es wäre schön wenn Du da dran bleiben könntest.

                        Bis bald

                        Marcus

                        Kommentar


                          #13
                          Hi,

                          hab das DWD Wiki mal aktualisiert, hoffe das ist verständlich.

                          @mknx: Änderst Du noch den Code in der __init__.py in Zeile 160

                          Das kann ich nicht.
                          Gruß
                          Lapheus

                          Kommentar


                            #14
                            Hallo Lapheus

                            ich habe das jetzt nicht ausprobiert was passiert, wenn man das in der __init__.py ändert ob das für die anderen Städten Auswirkungen hat, dass es nicht mehr geht oder so? Ich habe davon leider keine Ahnung. Aber die __init__.py kann man doch bestimmt im develop branch ändern oder? Ach ich habe keine Ahnung nicht böse sein wenn das nicht der Fall ist
                            Angaben nach bestem Wissen und Gewissen (Inhalt und Rechtschreibung)

                            Kommentar


                              #15
                              Die Datei die runtergeladen wird hat nur bei "Münster/Osnabr.-Flh." am Ende EIN Leerzeichen. Wenn nun die __init__.py nicht editiert wird, können die Zuordnungen für die aktuellen Werte nicht richtig geparst werden. Das gilt halt nur für diesen einen Ort.

                              Du kannst im Verzeichnis \plugins\dwd die Datei anpassen. Beim nächsten update z.B. per git geht die Änderung allterdings verloren.
                              Gruß
                              Lapheus

                              Kommentar

                              Lädt...
                              X