Modul für DWD Open Data

Begonnen von jensb, 21 Januar 2018, 14:38:48

Vorheriges Thema - Nächstes Thema

Nitaro

Zitat von: Nitaro am 11 März 2019, 10:27:27
Guten Morgen zusammen,

ich habe im wiki gelesen, dass bei Wetterwarnungen die Warnzellen beginnend mit 1,2,5,8,9 beginnend unterstützt werden.
Meine Warnzellen ID, beginnend mit 8 oder anderen, werden nicht mehr unterstützt da die Zellen aufgesplittet wurden und nun
mit 7 beginnen. Ist es möglich auch diese "funktionsfähig" zu bekommen ?

Gruß
Nitaro

Nochmal bitte zu diesem Thema. Ich habe im log gesehen, dass folgendes bei der Warncell ID beginnend  it der 7 passiert:
2019.03.11 18:19:25 4: WEB_192.168.1.125_50025 POST /fhem?detail=DWD&dev.getDWD=DWD&cmd.getDWD=get&arg.getDWD=alerts&val.getDWD=705515101&XHR=1&addLinks=1&fw_id=240; BUFLEN:0
2019.03.11 18:19:25 5: Cmd: >get DWD alerts 705515101<
2019.03.11 18:19:25 4: WEB: /fhem?detail=DWD&dev.getDWD=DWD&cmd.getDWD=get&arg.getDWD=alerts&val.getDWD=705515101&XHR=1&addLinks=1&fw_id=240 / RL:74 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/ Cache-Control: no-cache, no-store, must-revalidate


Hier bekomme ich dann die Meldung dass der Smart Alerts Cache geupdated wird, mehr aber nicht.

Nehme ich eine andere funktionierende 8x Warncell ID wird sofort folgende URL vom Modul aufgerufen
https://opendata.dwd.de/weather/alerts/cap/COMMUNEUNION_CELLS_STAT/Z_CAP_C_EDZW_LATEST_PVW_STATUS_PREMIUMCELLS_COMMUNEUNION_DE.zip

In dieser ZIP Datei taucht aber auch die Warncell-ID mit der 7x auf, also existieren Warnungen für diese ID, sie werden aber nicht
abgerufen.

Kann sich das jemand erklären oder nachstellen ?

jensb

Hallo Nitaro,

aufgrund der Kategorisierung der Warnzellen nach 'COMMUNEUNION'  und 'DISTRICT' und der Trennung dieser Daten auf dem DWD OpenData-Server muss man vor der Datenabfrage wissen, in welche Kategorie die Warnzelle fällt.

Als das Modul entstanden ist, habe ich keine Spezifikation gefunden, welche Warnzellen in welche Kategorie fallen. Die aktuelle Zuordnung habe ich durch Stichproben gebildet. Bei den mit 7 beginnenden Warnzellen scheint es sich um Ortsteile zu handeln, die in die Kategorie 'COMMUNEUNION' fallen. Sobald das Update fertig ist, werde ich das hier posten.

Grüße,
Jens

FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

MCh76

Hallo zusammen,
gibt es bereits irgendwo ein hübsches Beispiel der Unwetterwarnungen im TabletUI?
Würde gerne das alte UWZ widget ablösen, da dieses ja keine Daten mehr liefert.
VG,
Chris

Nitaro


freetz

Hallo Jens,

erst einmal vielen Dank für die Arbeit, die Du in dieses Modul gesteckt hast!
Ich war bisher Nutzer des (Yahoo-)Weather-Moduls, das ja wegen der Abschaltung der Yahoo-API nicht mehr so wie früher funktioniert. Ich wollte daher nun auf einen Anbieter wie den DWD setzen, bei dem (relativ) sicher(er) ist, dass da zwar vielleicht die Datenausgabe geändert, aber nicht komplett abgestellt wird.

Ich bin allerdings Besitzer eine Synology NAS, auf der auch FHEM sehr gut läuft, allerdings gibt es da das Problem, dass zusätzliche Perl-Module, von denen Teile in C geschrieben sind und entsprechend kompiliert werden müssen, nicht installiert werden können, weil es auf der Synology kein gcc gibt.

Es wird allerdings das Modul XML::Parser mitgeliefert, und da ich im Quellcode Deines FHEM-Moduls gesehen habe, dass letztlich nur an einer Handvoll Stellen auf XML::LibXML zugegriffen wird, wollte ich Dich fragen/bitten, ob Du einmal schauen könntest, ob ein Wechsel von XML::LibXML auf XML::Parser möglich wäre. Damit würdest Du allen FHEM-Usern, die FHEM auf der NAS laufen lassen, einen großen Gefallen tun!

Ich würde mich auch selber daran probieren, habe auch etwas Perl-Kenntnisse, hatte bisher allerdings noch keine Berührungspunkte mit XML, so dass ich nicht weiß, wie Du die Daten aufbereitet benötigst. Meine Hoffnung ist daher, dass Du da vielleicht mit ein paar gezielten Blicken sehen kannst, ob eine Transition zu XML::Parser ohne größeren Aufwand möglich wäre.

Viele Grüße


Frederik
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

jensb

Hallo Frederik,

XML::Parser funktioniert ähnlich wie Apache Xerces - es werden beim Einlesen Element für Element Ereignisse generiert, die man dann per Callback verarbeiten kann. XML::LibXML generiert dagegen einen Objektbaum, wo man nach sich je nach Bedarf in eine beliebigen Ast hangeln kann, um zu Lesen oder zu Schreiben. Das sind also völlig verschiedene Konzepte.

Die beiden ProcessXXXX-Methoden des DWD_OpenData-Moduls müssten neu geschrieben werden (genau genommen braucht man dann sogar eine ganze Reihe neuer Methoden für die Parser-Callbacks) - dazu fehlt mir aktuell die Freizeit. Der Ablauf in den ProcessXXXX-Methoden ist im Source kommentiert: unzippen, XML dekodieren, Ergebnis-Hash generieren und als temporäre Datei speichern. Wenn mir jemand einen entsprechenden Patch zur Verfügung stellt, würde ich ihn prüfen und dann so integrieren, dass anhand der installierten Perl-XML-Bibliothek automatisch entschieden wird, welche Variante verwendet wird.

Grüße,
Jens
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

jensb

@Nitaro
Die neue Version des DWD_OpenData-Moduls mit Unterstützung für Warnzellen, die mit 7 beginnen, ist nun zum Ausprobieren über GitHub abrufbar. Bitte Rückmeldung, ob es klappt.

Grüße,
Jens
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

freetz

Ok, danke, verstehe... Dann muss ich wohl doch mal schauen, ob ich meiner Synology nicht doch irgendwie noch den gcc nahe bringen kann ;)...
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

freetz

Kurze Nachfrage noch: Wären XML::Simple (bis auf die nicht näher genannte deprecation) oder XML::Twig eventuell "kompatibler" bzw. problemloser umzusetzen? Die lassen sich ohne Kompilierung und damit auch auf der NAS installieren...
https://metacpan.org/pod/XML::Simple
https://metacpan.org/pod/XML::Twig
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

Nitaro

Zitat von: jensb am 12 März 2019, 21:53:30
@Nitaro
Die neue Version des DWD_OpenData-Moduls mit Unterstützung für Warnzellen, die mit 7 beginnen, ist nun zum Ausprobieren über GitHub abrufbar.

@jensb
Läuft ! Danke !
Ob es auch stabil läuft weiß ich natürlich noch nicht. Aber er hat für die 7x eine Warnung abgerufen. Die Readings passen alle.

jensb

@Nitaro

Danke für die Rückmeldung. Werde die neue Version am Wochenende über FHEM Update zur Verfügung stellen.

Grüße,
Jens
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

jensb

@freetz
Ich habe selbst schon ein paar mal mit dem Synology DSM experimentiert. Vieles was nicht Out-Of-The-Box unterstützt wird ist über Umwege doch möglich - allerdings ist der Aufwand z.T. hoch und es kann sein, dass man sich damit die Updatefähigkeit verbaut oder sich ein Sicherheitsloch bohrt.

ZitatWären XML::Simple (bis auf die nicht näher genannte deprecation) oder XML::Twig eventuell "kompatibler" bzw. problemloser umzusetzen?
Ich wollte ursprünglich auf XML::Simple setzten, aber für das Modul gilt "PLEASE DO NOT USE THIS MODULE IN NEW CODE". XML::Twig (2016) ist da schon eher geeignet - und dann habe ich noch XML::Parser::Lite (2018) gefunden. Mit beiden dürfte eine Neuimplementierung der ProcessXXXX-Methoden des DWD_OpenData-Moduls leichter fallen, weil man ohne Callbacks auskommt. Das ist deshalb wichtig, da man bei FHEM in Methoden den Modulhash braucht, um Daten eindeutig zuordnen zu können. Callbacks von anderen APIs kennen so etwas aber nicht. Das kann dazu führen, dass man verhindern muss, dass ein Modul mehr als einmal mit define angelegt werden darf, damit die Abläufe eindeutig bleiben.

Es bleibt aber bei meinem Vorschlag: Mach einen Patch fertig und ich werde ihn mir ansehen. Detailfragen zum Code können auch per PM geklärt werden.

Wahrscheinlich geht es etwas leichter den Patch zu schreiben als die Synology mit make zum Kompilieren von Perl-Modulen zu bringen.

Grüße,
Jens
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

freetz

Ok, ich werd' mich mal daran versuchen, wenn ich hier mit dem Erstellen eines Packages für gcc für die Synology nicht weiterkomme. Inzwischen habe ich "make" fertig, und auch gcc läuft prinzipiell auf der Syno, allerdings landen die Header-Dateien noch in wirren Verzeichnissen, weshalb die Kompilierung von XML::LibXML noch fehlschlägt.
Ich habe übrigens nie verstanden, warum so von XML::Simple abgeraten wird, auf der Projektseite steht ja auch nur, dass die möglichen Optionen manchmal widersprüchlich sein können, aber wie auch immer...
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

mumpitzstuff

XML::Simple ist schon ganz brauchbar, allerdings extrem langsam.

jensb

Das ist ein wichtiger Punkt. Die XML-Daten vom DWD sind z.T. umfangreich (allein das ZIP kann durchaus 1 MB erreichen), vor allem wenn draußen das Wetter mal nicht auf normal macht.
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb