Ankündigung

Einklappen
Keine Ankündigung bisher.

Support-Thread zum OpenWeatherMap Plugin

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

    Zitat von jentz1986 Beitrag anzeigen
    Kannst Du das auch noch machen?
    Schau mal, PR ist gestellt.

    BTW: Kannst Du mir mal aufzeigen, wie man das eine Plugin zur Entwicklung "auslagert"? Was ich meine ist, dass Du auch erst auf eine clone des gesamten Plugin Repos gearbeitet hast und nun das OWM Plugin ausgelagert hast.

    Kommentar


      Hi, das steht hier im Post 98 https://knx-user-forum.de/forum/supp...14#post1686214

      Die PR schau ich mir am Wochenende an - bin auf Workshop und keiner macht meine normale Arbeit…

      Kommentar


        Zitat von jentz1986 Beitrag anzeigen
        Die PR schau ich mir am Wochenende an
        Prima.

        Kommentar


          Sooo... ist gemerged und ins normale Repo forwarded, d.h. Deine Arbeit ist jetzt auch an meinem PR aufgetaucht. Sehr schick, man sieht sogar, dass es von Dir ist. Das mag ich.

          Kommentar


            So, ich hab mich mal mit eurem OWM-Plugin beschäftigt, d.h. aus jentz' Repo installiert und mit den Beispielitembäumen aus der user_doc.rst aktiviert.

            Daten bekomme ich jede Menge, aber wiederholt nach jedem Abruf die Meldung

            Code:
            2021-10-09 10:46:41 INFO plugins.priv_openweathermap (where available) Wind gust. Units default metre/sec, metric metre/sec, imperial miles/hour. INFO: owm-string: current/wind_gust --> current/wind_gust from wrk=onecall, Error: Missing child 'wind_gust' after 'current' (complete path missing: wind_gust)
            Ich habe den entsprechenden Code und die "Einstellungen" (soft_fails_to...) gefunden. Ich finde die unterschiedliche Behandlung und auch die Voreinstellung etwas unglücklich; es würde ständig entsprechende Meldungen geben.

            Sind die (nicht gefunden) oder sollen die konfigurierbar (plugin.yaml) gemacht werden? Ansonsten könnte man überlegen, "unerlaubte" Werte (z.B. -1 für Regen/Schnee/Wind) zurückzugeben. Damit kann man arbeiten (ist nicht ungültig), es könnte bei statistischen Berechnungen einfach ausgespart werden und es ist eine eindeutige Rückmeldung (anders/besser als 0).

            Kommentar


              Alles was ein Echtes Problem ist wird auf Logstufe WARN oder ERROR rausgegeben. Wenn man einmal sein Setup hat, sollte man das LogLevel auf WARN stellen und alles ist gut.

              Bei wind_gust wäre der Rückfallwert eigentlich gleich dem Wind-wert. (Was „keine Böen“, sondern konstanter Wind bedeutet, und bei 0 Wind auch der richtige Wert 0 wäre). Hab da nur nicht weiter gemacht.
              Morg Kannst du mir in mein GitHub-Repo ein Issue dazu einstellen?

              ​​​

              Kommentar


                Done. Ich würde aber nicht unbedingt wind_gust auf wind setzen - wenn der (konstante) Wind hoch ist und kein gust-Wert kommt, könnte das je nach Setup trotzdem einen Alarm auslösen o.ä.

                Aber mach mal

                Kommentar


                  jentz1986

                  Hi,
                  ich hatte heute diverse Fehler im Log:
                  Code:
                  2022-02-23  09:59:40 ERROR    plugins.openweathermap_home.plugins.openweathermap Method plugins.openweathermap_home.plugins.openweathermap exception: Expecting value: line 1 column 1 (char 0)
                  Traceback (most recent call last):
                    File "/usr/local/smarthome/lib/scheduler.py", line 657, in _task
                      obj()
                    File "/usr/local/smarthome/plugins/openweathermap/__init__.py", line 220, in _update_loop
                      self._update()
                    File "/usr/local/smarthome/plugins/openweathermap/__init__.py", line 421, in _update
                      self._download_data()
                    File "/usr/local/smarthome/plugins/openweathermap/__init__.py", line 255, in _download_data
                      self.__query_api_if(self._data_source_key_airpollution_current,
                    File "/usr/local/smarthome/plugins/openweathermap/__init__.py", line 761, in __query_api_if
                      self.__query_api(data_source_key, delta_t, force)
                    File "/usr/local/smarthome/plugins/openweathermap/__init__.py", line 784, in __query_api
                      json_obj = response.json()
                    File "/home/smarthome/.local/lib/python3.8/site-packages/requests/models.py", line 900, in json
                      return complexjson.loads(self.text, **kwargs)
                    File "/usr/local/lib/python3.8/json/__init__.py", line 357, in loads
                      return _default_decoder.decode(s)
                    File "/usr/local/lib/python3.8/json/decoder.py", line 337, in decode
                      obj, end = self.raw_decode(s, idx=_w(s, 0).end())
                    File "/usr/local/lib/python3.8/json/decoder.py", line 355, in raw_decode
                      raise JSONDecodeError("Expecting value", s, err.value) from None
                  json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
                  Der Fehler war immer der gleich, kam ca. 10x hintereinander.
                  Kannst Du mal schauen, diesen noch abzufangen?
                  Danke dir.

                  Kommentar


                    Sisamiwe
                    Hi,
                    wie soll ich den Fehler abfangen? Das ist ein Fehler, der Auftritt, weil die JSON-Datei scheinbar nicht in Ordnung ist. Soll der User dann nur "Invalid JSON" im Log lesen? Oder was würdest Du vorschlagen?
                    Ich implementiere das gerne, aber ich bin etwas ratlos.

                    Kommentar


                      Zitat von jentz1986 Beitrag anzeigen
                      Sisamiwe
                      Hi,
                      wie soll ich den Fehler abfangen? Das ist ein Fehler, der Auftritt, weil die JSON-Datei scheinbar nicht in Ordnung ist. Soll der User dann nur "Invalid JSON" im Log lesen? Oder was würdest Du vorschlagen?
                      Ich implementiere das gerne, aber ich bin etwas ratlos.
                      Ich könnte mir vorstellen, dass man das JSON auf Korrektheit prüft und für dann Fall, das es einen Fehler enthält, das parsen des JSON nicht startet und die Meldung im Log ausgibt. Sowie wie: "received JSON invalid, Error xxxx occurred. JSON ignored."

                      Kommentar


                        Die Fehlermeldung sieht so aus, als würde das Plugin versuchen ein json decode von None zu machen, also kein ungültige json, sondern gar keine Daten.
                        Viele Grüße
                        Martin

                        There is no cloud. It's only someone else's computer.

                        Kommentar


                          Ich hatte heute etwas um die gleiche Zeit mehrmals einen HTTP 502 Fehler auf dem OWM Endpunkt:

                          Erster kam 09:47:38 rein. Danach mehrmals weitere. Der war wohl down...

                          Code:
                          2022-02-23 10:02:39 ERROR plugins.openweathermap_home.plugins.openweathermap Method plugins.openweathermap_home.plugins.openweathermap exception: [Errno Expecting value] <html>
                          <head><title>502 Bad Gateway</title></head>
                          <body>
                          <center><h1>502 Bad Gateway</h1></center>
                          <hr><center>openresty</center>
                          </body>
                          </html>
                          
                          > Traceback (most recent call last):
                          > File "/usr/local/lib/python3.7/dist-packages/requests/models.py", line 910, in json
                          > return complexjson.loads(self.text, **kwargs)
                          > File "/usr/lib/python3.7/json/__init__.py", line 348, in loads
                          > return _default_decoder.decode(s)
                          > File "/usr/lib/python3.7/json/decoder.py", line 337, in decode
                          > obj, end = self.raw_decode(s, idx=_w(s, 0).end())
                          > File "/usr/lib/python3.7/json/decoder.py", line 355, in raw_decode
                          > raise JSONDecodeError("Expecting value", s, err.value) from None
                          > json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
                          
                          During handling of the above exception, another exception occurred:
                          
                          > Traceback (most recent call last):
                          > File "/python/smarthome/lib/scheduler.py", line 657, in _task
                          > obj()
                          > File "/python/smarthome/plugins/openweathermap/__init__.py", line 220, in _update_loop
                          > self._update()
                          > File "/python/smarthome/plugins/openweathermap/__init__.py", line 421, in _update
                          > self._download_data()
                          > File "/python/smarthome/plugins/openweathermap/__init__.py", line 256, in _download_data
                          > only_if=self._request_airpollution_current)
                          > File "/python/smarthome/plugins/openweathermap/__init__.py", line 761, in __query_api_if
                          > self.__query_api(data_source_key, delta_t, force)
                          > File "/python/smarthome/plugins/openweathermap/__init__.py", line 784, in __query_api
                          > json_obj = response.json()
                          > File "/usr/local/lib/python3.7/dist-packages/requests/models.py", line 917, in json
                          > raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
                          > requests.exceptions.JSONDecodeError: [Errno Expecting value]
                          Könnte man sicher abfangen, dürfte aber selten sein und OWM-only betreffen.
                          Zuletzt geändert von psilo; 23.02.2022, 15:34.

                          Kommentar


                            Hi jentz1986 ,

                            in smartVISU wird mit dem nächsten Release der Import von Widgets geändert. Die üblichen Widget-Verzeichnisse bekommen einen gemeinsamen Namespace und werden damit adressiert. Die alte Importmethode ist auf deprecated gesetzt und wird in einer späteren Version entfernt.

                            Ich habe einen PR auf plugins/develop gestellt, der in einigen Plugin-Widgets den Import von weiteren Widgets abhängig von der smartVISU-Version einstellt, z.B.:
                            Code:
                                {% import config_version_full >= "3.2.c" ? "@widgets/basic.html" : "basic.html" as basic %}
                            Da die OWM-Widgets relativ neu sind und offensichtlich gerne genutzt werden, habe ich die Änderung dort gleich mit gemacht. Ich hoffe, das ist in Ordnung.

                            Was mir dort noch fehlt sind die Docstrings zur Beschreibung der einzelnen Parameter. Die werden für den Templatechecker und den Widget-Assistenten gebraucht. Es wäre super, wenn einer der erfahrenen Anwender diese erstellen und zur Verfügung stellen könnte. Anleitung steht im Wiki.

                            Die Krönung wäre natürlich eine Beispiel-Seite für die Doku Wie das geht, steht auch im Wiki und in der Inline-Doku im Abschnitt "Custom".

                            Gruß
                            Wolfram

                            Kommentar


                              Ich hätte ein grundsätzliches Problem mit dem Plugin:
                              Einen api-key habe ich von owm erhalten. Folgende Abfrage im Browser funktioniert und liefert einige Daten:
                              HTML-Code:
                              https://api.openweathermap.org/data/2.5/weather?q=Berlin&APPID=xxxxxxxxxxxxxxxxxxxxxxxxxx
                              Der Key funktioniert also. Dennoch erscheint im WebIF des Plugin unter OWM Rohdaten:
                              "Not requested by any item, you may download this via the web-interface!"
                              Die Items liefern ebenfalls keine Werte.
                              Die Items sind wie folgt konfiguriert:
                              Code:
                                      Wetter:
                                          kompletter_onecall_json:
                                              type: str
                                              owm_raw_file: onecall
                                          Beschreibung:
                                              type: str
                                              owm_matchstring@home: current/weather/description
                                          as_of:
                                              type: num
                                              remark: This has to be a time-stamp to work properly, so no eval here
                                              owm_matchstring@home: current/dt
                                          rain_past_12h:
                                              type: list
                                              owm_matchstring@home: virtual/past12h/all/rain/1h
                                          rain_next_12h:
                                              type: list
                                              owm_matchstring@home: virtual/next12h/all/rain/1h​
                              Die Instanz home ist in der plugin.yaml eingefügt und im Log sind keine Fehlermeldungen.
                              Irgendetwas muss ich vergessen oder falsch gemacht haben. Hat von euch jemand eine Idee?

                              Beste Grüße
                              Marco

                              Kommentar


                                Ich würde vermuten, dass da was mit den Instanzen-namen durcheinander ist. Den owm_rawfile fragst du ohne explizite Instanzangabe ab…

                                hast du denn mehrere instanzen?

                                Kommentar

                                Lädt...
                                X