[Gelöst]: Problem mit Alerts im Modul 55_GDS

Begonnen von MrRight, 19 Dezember 2014, 13:29:35

Vorheriges Thema - Nächstes Thema

MrRight

Hallo,

habe lange und intensiv gesucht, was bei mir falsch läuft, aber finde keine Lösung, daher bitte ich hier, dass mir jemand auf die Sprünge helfen kann:

Ich verwende seit einigen Monaten bereits das GDS-Modul ohne Probleme. Seit kurzem jedoch werden die Alerts nicht mehr angezeigt (keine a_* Readings). Ich lade regelmäßig die aktuellen Meldungen vom DWD herunter:


define wd_GDS_reread at +*00:30:00 get myGDS reread cfg


das Herunterladen scheint auch zu funktionieren. Ich erhalte im /tmp-verzeichnis eine entsprechende Datei für die alerts:


-rw-r--r-- 1 fhem dialout 3124792 Dec 19 12:30 myGDS_alerts


5 Minuten später übernehme ich Alerts in FHEM:


define wd_GDS_get_alert at +*00:30:00 get myGDS alerts Ennepe-Ruhr-Kreis


hier bekomme ich jedoch nur folgende Meldung:


2014.12.19 12:35:05 3: wd_GDS_get_alert: Keine Warnmeldung für die gesuchte Region vorhanden.


Auch die Verwendung der entsprechenden CellID liefert das gleiche Ergebnis.

Ich habe mal versucht mit meinen nicht vorhandenen Perl-Kenntnissen in das Modul zu schauen. Ich glaube herausgefunden zu haben, dass folgende Übernahme der XML-Daten aus der o. g. Datei in folgenden Zeilen nicht funktioniert:


sub buildCAPList(@){
[...]
      eval    {
===>                $alertsXml              = $xml->XMLin($tempDir.$name.'_alerts', KeyAttr => {}, ForceArray => [ 'info', 'eventCode', 'area', 'geocode' ]);
                };
                return (undef,undef) if(!defined($alertsXml));
[...]


Es wird scheinbar keine Referenz auf die Daten zurückgeliefert, $alertXml steht auf "undef".
Geprüft habe ich die Dateirechte, der Dateiname scheint auch richtig zu sein. In der Datei sind XML-Daten incl. Warnungen der gesuchten Region vorhanden.

ich verwende folgende Version von 55_GDS:


# $Id: 55_GDS.pm 6798 2014-10-21 14:13:31Z betateilchen $


Fehlermeldungen im Log habe ich nicht gefunden. FHEM Neustart war ebenfalls erfolglos. Das Perl Modul XML::Simple ist installiert.

Fehlt noch etwas an Info? Hat jemand eine Idee und kann mich in die richtige Richtung schubsen?

Gruß,
Carsten
FHEM 5.7 auf Cubietruck mit MySQL
CUL + HMLAN + HUE Bridge + Firmata over Ethernet + Ardunino + 1wire + MiLight + FTUI + Homekit

MrRight

Mmmmh, keiner eine Idee?

Habe ich die Frage falsch gestellt oder die falsche Frage gestellt?

Gruß Carsten
FHEM 5.7 auf Cubietruck mit MySQL
CUL + HMLAN + HUE Bridge + Firmata over Ethernet + Ardunino + 1wire + MiLight + FTUI + Homekit

chris1284

ich habe gerade ein
get myGDS alerts Ennepe-Ruhr-Kreis getestet und er schreibt die readings:

Zitat
a_areaDesc Ennepe-Ruhr-Kreis2014-12-22 09:46:49
a_category Met 2014-12-22 09:46:49
a_event WINDBÖEN 2014-12-22 09:46:49
a_eventCode_AREA_COLOR 255 255 0 2014-12-22 09:46:49
a_eventCode_AREA_COLOR_hex ffff00 2014-12-22 09:46:51
a_eventCode_GROUP WIND 2014-12-22 09:46:49
usw
version 6798 wie du

betateilchen

Zitat von: MrRight am 19 Dezember 2014, 13:29:35

define wd_GDS_reread at +*00:30:00 get myGDS reread cfg


es heißt nicht "reread cfg" sondern "rereadcfg"

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

MrRight

Hallo betateilchen,

vielen Dank für die Antwort. Das Leerzeichen war ein Schreibfehler hier im Forum. Mein at verwendet "rereadcfg" und liefert, wie auch das manuelle Auslösen nur "Keine Warnmeldung für die gesuchte Region vorhanden".

Wie ich schon schrieb, es scheint an dem Einlesen der XML-Datei in $alertsXML zu liegen, XMLin() liefert keine Referenz zurück. Leider fehlen mir die Perl-Kenntnisse um die genaue Ursache herauszufinden.

Gruß,
Carsten
FHEM 5.7 auf Cubietruck mit MySQL
CUL + HMLAN + HUE Bridge + Firmata over Ethernet + Ardunino + 1wire + MiLight + FTUI + Homekit

betateilchen

Irgendwie bringst Du hier ein paar Sachen durcheinander, aber seis drum.

GDS liefert für Ennepe Ruhe völlig korrekte Daten:


(http://up.picr.de/20466701pz.jpg)

Die Ursache für Dein Problem vermute ich irgendwo in Deiner Systemumgebung, nicht im gds-Modul oder in fhem selbst.

Wird denn überhaupt eine dropdownliste bei Dir angezeigt?

(http://up.picr.de/20466700iu.png)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

fh168

ich habe wohl das gleiche Problem, DD-Liste wie im Screenshot wird nicht angezeigt.
Die Grafiken der Maps werden auch nicht geladen, nur die DWD.html, DWD_conditions, DWD_warnings im tmp Ordner.
Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

betateilchen

hm... einen Fehler, den ich nicht reproduzieren kann, kann ich nicht beheben.

Aber bei Dir scheint das Problem ein anderes zu sein, denn bei MrRight ist ja scheinbar zumindest eine _alerts Datei vorhanden.

Vielleicht ein ftp Problem? Kannst Du mal versuchen, den passiven FTP Modus zu setzen? (attribut gdsPassiveFtp 1)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

MrRight

Hallo betateilchen,

Die Dropdownliste ist leer. Liegt m. E. daran, dass das Einlesen der _alerts Datei fehlschlägt. Ich suche noch nach eine Möglichkeit das Errorhandling von XMLin() zu ergründen. Hoffe, dass mich das weiter bringt.

Warum bist Du der Meinung, dass ich ein paar Sachen durcheinander werfe? Wenn Du mir auf die Sprünge helfen kannst, wäre ich Dir sehr dankbar.  :D

Gruß,

Carsten

FHEM 5.7 auf Cubietruck mit MySQL
CUL + HMLAN + HUE Bridge + Firmata over Ethernet + Ardunino + 1wire + MiLight + FTUI + Homekit

betateilchen

Zitat von: MrRight am 22 Dezember 2014, 23:26:55
Warum bist Du der Meinung, dass ich ein paar Sachen durcheinander werfe?

Beispielsweise, weil die von Dir zitierte Fehlermeldung "Keine Warnmeldung für die gesuchte Region vorhanden" nicht aus dem rereadcfg kommt.

Deine Fehlersuche setzt an der falschen Stelle an. Das Problem ist nicht XMLin() sondern vermutlich eine nicht vollständig übertragene XML Datei wurde. Deshalb schon in meinem vorigen Beitrag die Frage, ob es sich ggf. um ein FTP Problem handelt (das kann auch bei Dir der Fall sein) und die Bitte mit dem Test des passiveFtp.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

MrRight

#10
OK, verstanden. Mir ist schon klar, dass dies von "get myGDS alerts Ennepe-Ruhr-Kreis" kommt. Da habe ich mich im zweiten Post falsch ausgedrückt. Sorry.

Passive FTP bringt leider keine Verbesserung, der Fehler bleibt stabil. Ich habe zusätzlich die XML Datei vom DWD-Server mit meinem Mac heruntergeladen und mit der _alert Datei verglichen. Ich habe keinen Unterschied feststellen können.

Mittlerweile habe ich herausgefunden, dass der XMLin()-Aufruf folgende Fehlermeldung erzeugt:


No _parse_* routine defined on this driver (If it is a filter, remember
to set the Parent property. If you call the parse() method, make sure to set a Source. You may want to cal
l parse_uri, parse_string or parse_file instead.) [XML::SAX::Expat=HASH(0x4792ea8)] at /usr/local/share/pe
rl/5.14.2/XML/SAX/Base.pm line 2623.


Insofern glaube ich immer noch, dass es am XMLin() liegt. Sieht für mich nach einem Perl-Problem aus. Ich suche mal weiter, lasse mich aber gerne auch eines Besseren belehren.  :)

Gruß,

Carsten


Edit:
Habe den Fehler gefunden. Im Verzeichnis /usr/local/share/perl/5.14.2/XML/SAX habe ich die Datei ParserDetails.ini geleert. Danach funktioniert es auch wieder mit den GDS-Alerts.

Danke für die Hilfe hier im Forum!
FHEM 5.7 auf Cubietruck mit MySQL
CUL + HMLAN + HUE Bridge + Firmata over Ethernet + Ardunino + 1wire + MiLight + FTUI + Homekit

betateilchen

Zitat von: MrRight am 23 Dezember 2014, 00:51:21
Habe den Fehler gefunden. Im Verzeichnis /usr/local/share/perl/5.14.2/XML/SAX habe ich die Datei ParserDetails.ini geleert. Danach funktioniert es auch wieder mit den GDS-Alerts.

Zitat von: betateilchen am 22 Dezember 2014, 21:40:17
Die Ursache für Dein Problem vermute ich irgendwo in Deiner Systemumgebung, nicht im gds-Modul oder in fhem selbst.

q.e.d.  8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

MrRight

Habe ja auch nicht behauptet, dass es am GDS-Modul liegen würde.  ::)

Was aber irreführend ist, dass ein fehlgeschlagener Funktionsaufruf von XMLin() nicht erkennbar ist. Vielmehr war ich in dem Glauben, dass es wirklich keine Warnmeldungen gab. Erst ein Blick aus dem Fenster hat mich misstrauisch gemacht: Die Bäume bogen sich schon sehr unter den Sturmböen.  :o

Vielleicht würde der Rückgabewert der Eval()-Funktion im Log sich gut machen...  ;)

Gruß,

Carsten
FHEM 5.7 auf Cubietruck mit MySQL
CUL + HMLAN + HUE Bridge + Firmata over Ethernet + Ardunino + 1wire + MiLight + FTUI + Homekit

fh168

Zitat von: MrRight am 23 Dezember 2014, 00:51:21

Edit:
Habe den Fehler gefunden. Im Verzeichnis /usr/local/share/perl/5.14.2/XML/SAX habe ich die Datei ParserDetails.ini geleert. Danach funktioniert es auch wieder mit den GDS-Alerts.

Danke für die Hilfe hier im Forum!

Mir fehlt die Datei komplett. Kannst du mir die anhängen?

Robin
Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

MrRight

Hallo Robin,

ich habe die ursprüngliche Datei gelöscht und eine neue leere Datei mit


sudo touch ParserDetails.ini


erzeugt. Die Datei bleibt leer.


Gruß,
Carsten
FHEM 5.7 auf Cubietruck mit MySQL
CUL + HMLAN + HUE Bridge + Firmata over Ethernet + Ardunino + 1wire + MiLight + FTUI + Homekit