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
Mmmmh, keiner eine Idee?
Habe ich die Frage falsch gestellt oder die falsche Frage gestellt?
Gruß Carsten
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
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"
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
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)
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.
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)
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
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.
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!
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)
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
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
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
Zitat von: MrRight am 23 Dezember 2014, 09:24:39
Was aber irreführend ist, dass ein fehlgeschlagener Funktionsaufruf von XMLin() nicht erkennbar ist.
das ist meiner reinen Faulheit geschuldet :)
Die Fehlermeldung sollte jetzt im Log auftauchen.
2014.12.23 10:33:47 : GDS: error analyzing alerts XML:File does not exist: /tmp/_alerts at ./FHEM/55_GDS.pm line 492
Zitat von: betateilchen am 23 Dezember 2014, 10:12:49
das ist meiner reinen Faulheit geschuldet :)
"Faulheit: der Hang zur Ruhe ohne vorhergehende Arbeit." (I. Kant) 8)
Danke für die schnelle Ergänzung!
ok, hat nix gebracht. Auflistung und Maps gehen immer noch nicht. Ansonsten Conditions-texte funktionieren, seltsam. Ich forsche weiter.
LG
/robin
Zitat von: fh168 am 23 Dezember 2014, 10:56:34
Ansonsten Conditions-texte funktionieren, seltsam.
Das ist nicht seltsam, die conditions kommen nicht per XML.
Hallo fh168,
aber so Dinge wie verbose 5 hast Du schon gemacht?! Irgendeine Meldung im Log?