Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
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.
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.
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).
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?
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.ä.
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.
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.
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."
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.:
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".
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:
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?
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar