[Twilight] Umstellung auf YahooWeatherAPI

Begonnen von CoolTux, 28 März 2016, 14:14:28

Vorheriges Thema - Nächstes Thema

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Dietmar63

Das wird mir nichts nutzen.
Es läuft auf Fritzboxen nicht.  Ich werde etwas anderes bauen.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

CoolTux

Alles klar. Wenn Dich jemand unterstützen kann sag bescheid.


Abendliche Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Dr. Boris Neubert

Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Dietmar63

nein nein - ich werde das schon machen - bin kurz vor der Fertigstellung.

Ich hole mir die Daten im JSON Format  und wandele sie selbst mit 4 Perl-Befehlen in ein Perlhash um, eigentlich ganz einfach.  Wenn Yahoo die Daten nicht liefert, wiederhole ich die Anfrage nach 60 Sekunden. So nach dem 3-4 Mal kommt dann eine valide Antwort.

Das bleibt dann solange bis yahoo besser wird.

Ich fahre gleich noch einen Massentest.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Dietmar63

Zitat von: Dr. Boris Neubert am 03 April 2016, 20:07:01
http://cpansearch.perl.org/src/MAKAMAKA/JSON-2.90/lib/JSON.pm läuft auf der Fritte nicht, wenn man es hinkopiert?

Habe ich auch schon herausgefunden.
Das YahooWeatherApi auch nicht weil es https nutzt.
Wie gesagt, mache aus JSON selbst ein Perlhash, geht ganz einfach.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Dr. Boris Neubert

Können gerne an dem API schnitzen, damit es sowohl http als auch https nutzen kann.

Wenn sich das JSON so leicht in ein Perlhash verwandeln lässt, können wir JSON aus dem YahooWeatherAPI rausschmeißen und durch Deine Befehle ersetzen. Das ist ja alles gut gekapselt dort.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Dietmar63

#67
Also anstelle von https habe ich http genutzt - kommt auch eine Antwort, wenn auch manchmal sporadisch.

ich verwandele JSON folgendermaßen in ein Perlhash:


     my $perlAusdruck = $result;  #enthält JSON.
        $perlAusdruck =~ s/\":/\"=>/g;
        $perlAusdruck =~ s/null/undef/g;
        $perlAusdruck =~ s/true/1/g;
        $perlAusdruck =~ s/false/0/g;
        $perlAusdruck = '$resHash = ' .$perlAusdruck;       
     
     my $resHash;
     eval $perlAusdruck;


Ich habe mit JSON bisher nicht so viel zu tun gehabt. Deshalb weiß ich nicht, ob damit schon alles erschlagen ist. Ich glaube aber, dass damit schon eine Menge an JSON verarbeitet werden kann.
Die Daten aus dem Perlhash bekomme ich dann so:

     
     $cond_code  = $resHash->{query}{results}{channel}{item}{condition}{code};
     $cond_txt   = $resHash->{query}{results}{channel}{item}{condition}{text};
     $temperatur = $resHash->{query}{results}{channel}{item}{condition}{temp};


Wäre das ein gangbarer Weg?
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Dietmar63

@Boris :
Und ist das machbar? Oder bist du geschockt?
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Dr. Boris Neubert

Schockiert allenfalls ob der Einfachheit des Codes. Der Trick ist aus JSON gültiges Perl zu machen und dann eval drauf los zu lassen.

Werde das einbauen und die Abhängigkeit zu JSON loswerden, sofern der Test positiv verläuft.

Außerdem baue ich noch einen Parameter ein, mit dem man entweder http oder https anfordern kann. Wenn ich das richtig sehe, muss das dann einstellbar sein, und zwar am Weather-Device und am Twilight-Device. OK?

Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Dietmar63

Werde das einbauen und die Abhängigkeit zu JSON loswerden, sofern der Test positiv verläuft.
Bei mir läuft das schon - ich werde das TW Modul wahrscheinlich heute noch freigeben und anschließend auf dein Modul umbauen.

Eventuell könnte man noch die Ersetzung von ": durch "=>   irgendwie verbessern, aber für yahoo scheint es auszureichen und zu klappen.

Habe Massentests gemacht und kann sagen, dass yahoo im Vergleich zu Sonntag inzwischen  viel zuverlässiger geworden ist.

Heute Abend ab 18:00 Uhr alle 5 Minuten einen Test durchgeführt - nur am Anfang 4 Versuche gebraucht, danach kam regelmäßig eine Antwort.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Dietmar63

so sieht jetzt 1 Stunde Test aus:

2016.04.04 21:31:35 3: [Twilight] 0 attempt(s) needed to get valid weather data from yahoo
2016.04.04 21:27:44 3: [Twilight] 1 attempt(s) needed to get valid weather data from yahoo
2016.04.04 21:21:39 3: [Twilight] 0 attempt(s) needed to get valid weather data from yahoo
2016.04.04 21:16:37 3: [Twilight] 0 attempt(s) needed to get valid weather data from yahoo
2016.04.04 21:12:43 3: [Twilight] 1 attempt(s) needed to get valid weather data from yahoo
2016.04.04 21:06:37 3: [Twilight] 0 attempt(s) needed to get valid weather data from yahoo
2016.04.04 21:01:35 3: [Twilight] 0 attempt(s) needed to get valid weather data from yahoo
2016.04.04 20:56:35 3: [Twilight] 0 attempt(s) needed to get valid weather data from yahoo
2016.04.04 20:52:41 3: [Twilight] 1 attempt(s) needed to get valid weather data from yahoo
2016.04.04 20:46:34 3: [Twilight] 0 attempt(s) needed to get valid weather data from yahoo
2016.04.04 20:42:40 3: [Twilight] 1 attempt(s) needed to get valid weather data from yahoo
2016.04.04 20:38:10 3: [Twilight] 0 attempt(s) needed to get valid weather data from yahoo
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Dietmar63

Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

frank

FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

CoolTux

Funktioniert bei mir leider nicht. Ich bin noch auf der suche
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net