59_Weather: Non-Blocking

Begonnen von vbs, 06 Juni 2014, 22:41:26

Vorheriges Thema - Nächstes Thema

vbs

Ich hab mal etwas an 59_Weather rumgespielt, und das Abfragen der WWW-Daten auf einen BlockingCall umgebaut. Mag das mal jemand reviewen?

justme1968

eine andere möglichkeit wäre HttpUtils_NonblockingGet zu verwenden und auf das forken ganz zu verzichten.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

vbs

Ja mei, was es nicht alles gibt. Also hier dann der nächste Versuch, diesmal mit HttpUtils_NonblockingGet.

P.A.Trick

Bei mir klappt das Modul nicht!

Error messages while initializing FHEM:
configfile: Cannot load module Weather


Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

vbs

Hm, gibts da evtl. auf der Kommandozeile oder so noch weitere Informationen zu?

P.A.Trick

Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

vbs

Hm, also ich hab leider absolut keine Idee. Bei mir läufts halt (hilft dir auch nicht, ich weiß). Einfach gar nicht starten ohne Meldung, kenn ich so nicht  :-\
Kann das vielleicht nochmal jemand anders testen, ob das bei ihm auch passiert?

marvin78

Getestet: läuft einwandfrei und ohne Fehler. Ich weiß, das ist nur bedingt hilfreich.

herrmannj

Hi vbs,

auch von mir: erster Test: perfekt.

Im übrigen: vielen Dank !!!

Ich hatte weather wegen blocking schon rausgeschmissen - jetzt ist es Dank Dir wieder drin  :D

Magst Du es einchecken (lassen) ?

@p.a.trick: rechte ?

Danke und Grüße
Jörg

marvin78

Ich tippe auch auf Dateirechte.

Im Übrigen läuft das Modul tatsächlich besser als die alte Version. Ich hatte selbst auf meinem recht performanten Cubietruck hin und wieder Auszeiten wegen Weather. Die sind vollständig weg.

P.A.Trick

Zitat von: vbs am 09 Juni 2014, 18:44:08
Hm, gibts da evtl. auf der Kommandozeile oder so noch weitere Informationen zu?

Ich habe noch einmal versucht und direkt neu gestartet!

2014.06.10 22:11:09 1: reload: Error:Modul 59_Weather deactivated:
Type of arg 1 to each must be hash (not hash element) at ./FHEM/59_Weather.pm line 374, near "} )
      "
BEGIN not safe after errors--compilation aborted at ./FHEM/59_Weather.pm line 503, <$fh> line 516.

2014.06.10 22:11:09 0: Type of arg 1 to each must be hash (not hash element) at ./FHEM/59_Weather.pm line 374, near "} )
      "
BEGIN not safe after errors--compilation aborted at ./FHEM/59_Weather.pm line 503, <$fh> line 516.

2014.06.10 22:11:09 3: Please define Forecast first

Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

P.A.Trick

#11
Zitat von: herrmannj am 10 Juni 2014, 20:57:23
Hi vbs,

auch von mir: erster Test: perfekt.

Im übrigen: vielen Dank !!!

Ich hatte weather wegen blocking schon rausgeschmissen - jetzt ist es Dank Dir wieder drin  :D

Magst Du es einchecken (lassen) ?

@p.a.trick: rechte ?

Danke und Grüße
Jörg

Hm nein die Dateirechte stehen richtig!

-rwxr-xr-x  1 fhem fhem  30719 10. Jun 22:10 59_Weather.pm

Arggh wieso läuft das nur bei mir nicht!? *grübel*

Er spuckt den Fehler beim folgenden Aufruf raus!

use constant ICONHIGHT => 120;

Any idea?
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

herrmannj

das:
while ( (my $key, my $value) = each $urlResult{readings} )

ist bei mir line 373 (nicht 374) und das muss in der Tat ein hash sein. Sollte er auch. Check mal bitte ob Deine yahoo weater location (also die nummer) richtig ist. Oder nimm 656958, die geht. Vielleicht wird eine falsche # nicht abgefangen.

Sonst musst Du mal einen dump direkt davor einbauen. Soweit ich das sehe wird der hash in den lines darüber mit den yahoo Werten gefüllt, ein dump muss was ausspucken.

vg
jörg

vbs

Danke für die Rückmeldungen! Schön zu hören, dass es bei den meisten läuft.  :) Würde trotzdem noch gerne wissen, was da bei PA.Trick passiert, bevor ich guten Gewissens jemanden bitten kann, das einzuchecken.

Also einen Verdacht hab ich zumindest. So wurde der Hash bisher angelegt:
    $urlResult{"readings"} = {};

Meinem bescheidenen Perl-Verständnis nach, ist das kein Hash sondern eine Hash-Referenz. War eigentlich keine Absicht. Vielleicht ist das aber das Problem. Ich hab das jetzt mal geändert auf:
    $urlResult{"readings"} = ();
(man beachte die runden Klammern)

Magst du das mal ausprobieren P.A.Trick? Welche Perl-Version benutzt du? Vielleicht ist das der Grund, warum es sich bei dir anders verhält...

Ansonsten würde ich gerne herrmannj's Vorschlag nachkommen und da Log-Ausgaben reinpflastern.

P.A.Trick

Zitat von: herrmannj am 10 Juni 2014, 22:33:46
das:
while ( (my $key, my $value) = each $urlResult{readings} )

ist bei mir line 373 (nicht 374) und das muss in der Tat ein hash sein. Sollte er auch. Check mal bitte ob Deine yahoo weater location (also die nummer) richtig ist. Oder nimm 656958, die geht. Vielleicht wird eine falsche # nicht abgefangen.

Sonst musst Du mal einen dump direkt davor einbauen. Soweit ich das sehe wird der hash in den lines darüber mit den yahoo Werten gefüllt, ein dump muss was ausspucken.

vg
jörg

Also die Nummer 656958 bringt bei mir den gleichen Fehler. Habe das Device gelöscht und neu definiert.
Das mit dem Dump musst du mir noch mal erklären Jörg...ich Perl noob ;-)
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn