Ankündigung

Einklappen
Keine Ankündigung bisher.

Plugin darksky.net für Wetterdaten - wird Ende 2021 Abgeschaltet

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

    #16
    Kurz zur Info... schuma psilo
    sh.log ist ein Alias aus dem Raspi Image. Dort wird tatsächlich jede Zeile, in der error vorkommt, entsprechend eingefärbt, um Probleme schneller zu erkennen. Theoretisch könnte ich das beim nächsten Release auch so anpassen, dass die Einfärbung nur bei ERROR und WARNING in Großbuchstaben anschlägt.

    Die Einfärbung funktioniert übrigens auch bei anderen Text/Log-Dateien mittels ctail oder ccat (colortail).

    Kommentar


      #17
      Onkelandy ja das würde ich so machen. Im Backend funktioniert der Filter auf die Loglevel auch case sensitive... wenn man natürlich ins Item ERROR schreibt hilft das nix, aber man kann echt nicht alles bedenken + ich wüsste nicht, wie man das "intelligent" auswerten kann, da das logformat individuell anpassbar ist.

      Error und ERROR zu unterscheiden ist aber auf jdn. Fall weniger fehlerhaft als es nicht zu tun..
      PS: Da ich das Image nicht verwende, kannte ich das logischerweise nicht

      Kommentar


        #18
        Klar, drum hab ich's erklärt
        Werde ich case sensitive machen, ja, macht Sinn.

        Kommentar


          #19
          Hallo,

          ist es auch möglich bei der Vorhersage ("daily") auf Details wie den Niederschlag zuzugreifen?
          Code:
                      precipProbability:
                          type: num
                          ds_matchstring: daily/data/precipProbability
                          
                      precipIntensity:
                          type: num
                          ds_matchstring: daily/data/precipIntensity
          Ergibt bei mir Null. Das mag aber auch richtig sein...
          Ist die Syntax denn richtig?

          Gruß,
          Hendrik

          Kommentar


            #20
            Ich ziehe das aus Currently?! Daily muss ich selber erst bauen..

            Code:
                            precipIntensity:
                                type: num
                                ds_matchstring@home: currently/precipIntensity
                                cache: 'yes'
            
                            precipIntensityError:
                                type: num
                                ds_matchstring@home: currently/precipIntensityError
            
                            precipProbability:
                                type: num
                                ds_matchstring@home: currently/precipProbability
            
                            precipType:
                                type: str
                                ds_matchstring@home: currently/precipType
            das problem bei Daily ist, dass DATA ein JSON Array ist.. Da müsstest Du als List ins Item schreiben. Die Anzahl der Einträge dürfte zudem nicht fix sein.. Ich bin zudem überfragt (das Plugin ist Monate (!) her), ob Index 0 der aktuelle und Index 1 bspw. der gestrige Tag ist.. Frage ist auch, ob bspw der aktuelle Tag der mglw auf Index 0 liegt sich über den Tag verändert und wie man das dann vernünftig persistiert, wenn man nur das Tagesendergebnis haben will.. Alles nicht trivial.

            Hier müsste man das Plugin auch aufbohren.
            Wie bei OWM: ich freue mich über zahlreiche PRs, da mir ehrlich gesagt die Zeit fehlt, mich um meine 2stellige Anzahl Plugins in gleicher Qualität parallel zu kümmern.. Derzeit ist erstmal wieder das AVM Plugin dran und ich müsste Msinn eigentlich helfen ein Release fertig zu machen... Und dann gibts dummerweise noch diesen 24.12.
            Zuletzt geändert von psilo; 16.12.2018, 16:53.

            Kommentar


              #21
              Hallo,

              danke. Das muss ich mir mal in einer IDE ansehen, sonst wird das nix.
              Ich verstehe nicht, was du damit meinst, dass du den Wert aus Currently ziehst. Ich hätte doch gerne die Vorhersage und nicht die Info, ob es jetzt regnet..

              Gruß,
              Hendrik

              Kommentar


                #22
                henfri das verstehst du schon richtig. ich ziehe halt nur die aktuellen "moment"-daten.

                anmerkung:
                ich hätte daily z.b. als historische daten verstanden, nicht als vorhersage... es würde vor einem PR schon helfen, wenn jemand dazu nochmal die doku wälzen und das hier posten würde.. bspw., ob die anzahl arrayelemente immer fix ist.. dazu braucht man keine IDE ;-). und dann kann ich das vielleicht nach weihnachten schnell bauen (aber ohne gewaehr)

                Kommentar


                  #23
                  Für den Zugriff auf "daily" bin ich wie folgt vorgegangen:

                  In den Items ergänzte ich "data" vom Typ "list" und unter "day0" die Elemente, die mich interessieren:

                  Code:
                  Wetter:
                      daily:
                  
                          summary:
                              type: str
                              ds_matchstring: daily/summary
                  
                          icon:
                              type: str
                              ds_matchstring: daily/icon
                              
                          data:
                              type: list
                              ds_matchstring: daily/data
                              
                          day0:
                              date:
                                   type: str
                              icon:
                                   type: str
                              temperature_max:
                                   type: num
                  In einem selbst erstellten Plugin extrahierte ich nun die Daten aus "data" und speicherte sie in den Items von "day0" ab:

                  Code:
                          self.sh.Wetter_WB.daily.day0.date(datetime.fromtimestamp(self.sh.Wetter_WB.daily.data()[0]['time']).strftime('%a %d.%m.%Y'))
                          self.sh.Wetter_WB.daily.day0.icon(self.sh.Wetter_WB.daily.data()[0]['icon'])
                          self.sh.Wetter_WB.daily.day0.temperature_max(self.sh.Wetter_WB.daily.data()[0]['temperatureMax'])
                  Der Tag 0 entspricht dem aktuellen Tag, wie man aus "time" sehen kann (Mitternacht des Tages). Ich habe dann in SmartVisu diese Darstellung für mich erzeugt:

                  DarkSky-Expl.png
                  Die Namen der Icons von Darksky habe ich mit einer zusätzlichen Funktion auf die Icons von SmartVisu gemappt (Code nicht gezeigt).

                  Leider habe ich es nicht geschafft direkt die Daten mit "eval" in die Items zu übernehmen. Es ging nur mit dem Schritt über das Plugin.

                  Kommentar


                    #24
                    Die Namen der Icons von Darksky habe ich mit einer zusätzlichen Funktion auf die Icons von SmartVisu gemappt (Code nicht gezeigt).
                    Wenn Du die teilen würdest, würde das für eine zukünftige Version des Plugins sicherlich arbeit sparen... Notfalls kann ich aber sicher auch in smai 's Implementierung in der SV nachschauen.

                    Kommentar


                      #25
                      Ich habe das Mapping aus Smartvisu entnommen (smartvisu/lib/weather/service/darksky.net.php). Hier meine Funktion:

                      Code:
                          def map_icon(self,icon1):
                              # Mapping der DarkSky-Icons auf SmartVisu-Icons
                              if icon1 == 'clear-day':
                                return 'sun_1'
                              elif icon1 == 'clear-night':
                                return 'sun_1'
                              elif icon1 == 'partly-cloudy-day':
                                return 'sun_4'
                              elif icon1 == 'partly-cloudy-night':
                                return 'sun_4'
                              elif icon1 == 'fog':
                                return 'sun_6'
                              elif icon1 == 'rain':
                                return 'cloud_8'
                              elif icon1 == 'wind':
                                return 'sun_10'
                              elif icon1 == 'snow':
                                return 'sun_12'
                              elif icon1 == 'cloudy':
                                return 'cloud_4'
                              elif icon1 == 'sleet':
                                return 'cloud_11'
                              else:
                                return 'high'
                      Den Rückgabewert 'else' habe ich frei gewählt.

                      Kommentar


                        #26
                        Ich habe die map_icon Methode im Develop jetzt als Pluginmethode aufgenommen. Vorhersage dauert noch etwas

                        Zum eval direkt im Item:

                        Code:
                                        icon_sv:
                                            type: str
                                            eval_trigger: weather.darksky.home.currently.icon
                                            eval: sh.darksky.map_icon(sh.weather.darksky.home.currently.icon)
                        Zuletzt geändert von psilo; 24.12.2018, 08:10.

                        Kommentar


                          #27
                          Im README habe ich jetzt das Beispiel für den Zugriff auf den Forecast von day0 ergänzt.. Weitere Tage können äquivalent gelöst werden.

                          Danke für die Mühen und den Beitrag an manhartm , hat mir doch Denkarbeit und Tipparbeit gespart. So muss Open Source sein und es geht auch ganz ohne PR
                          Zuletzt geändert von psilo; 24.12.2018, 08:52.

                          Kommentar


                            #28
                            Die Auswertung von "daily" klappt so nicht. Im Log sehe ich folgenden Fehler:

                            Code:
                            2018-12-24  08:50:26 WARNING  Wetter_WB.daily.day0.iconx Item Wetter_WB.daily.day0.iconx: problem evaluating sh.Wetter_WB.daily.data()[0]['icon']: list index out of range
                            Ich habe in einem alten Posting einen ähnlichen Hinweis zu diesem Fehler gefunden. Der Code läuft im Plugin einwandfrei.

                            Die Auswertung unter "currently" funktioniert.

                            Kommentar


                              #29
                              Das ist glaube ich nur initial beim Start von SHNG, wenn daily.data noch ein leeres Array hat.. Wenn Du dort cache: 'yes' setzt sollte es beim nächsten Neustart weg sein (war bei mir so!!)

                              Im README ist das cache: 'yes' drin... ansonsten kommt der Fehler bei jedem Restart von SHNG, aber nicht beim nächsten Updatelauf..

                              Alternativ kann man sicher in das EVAL auch einen Check auf die Arraygröße einbauen..
                              Zuletzt geändert von psilo; 24.12.2018, 09:00.

                              Kommentar


                                #30
                                Korrekt. Mit "cache: yes" für "data" verschwinden die Warnungen nach einem 2.Start und die Daten werden korrekt extrahiert. Cool !

                                Kommentar

                                Lädt...
                                X