59_Twilight.pm - Funktioniert seit dem 3.1.19 nicht mehr - Yahoo API Umstellung

Begonnen von JoWiemann, 04 Januar 2019, 09:25:53

Vorheriges Thema - Nächstes Thema

Christoph Morrison

Zitat von: CoolTux am 05 Januar 2019, 11:58:15
Nicht alle Readings werden korrigiert. Soweit mir bekannt nur die welche ich oben genannt hatte.

Stimmt, ich hatte aber auch nicht geschrieben, dass nun alle Werte abweichen ;-)

Xell1984

Vielen dank für die Info.

Tatsächlich nutze ich sr, ss, elevation und azimuth.
Für Wettermeldungen, Windgeschwindigkeit, Witterung u.s.w. Nutze ich Proplanta. In dem Fall bin ich denke ich vorerst nicht betroffen.

Gruß
Razpberry on Raspberry Pi 3 mit Raspian Jessy

igami

Zitat von: CoolTux am 05 Januar 2019, 10:30:52
Hast schon eine Idee wie Du es machen willst? Twilight ist ja abhängig von den Wetter Codes die aber halt Yahoo spezifisch sind. Aktuell gehe ich davon aus das Boris die Yahoo API an passt. Aber irgendwie mag ich es nicht das Twilight so abhängig von Yahoo ist. Ist nur meine persönliche Meinung.
Ich hoffe darauf, dass Weather ein WetterCode Reading abhängig vom Anbieter, mit einem Wert zwischen 0 und 100 bereitstellt ;D
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

CoolTux

Zitat von: igami am 05 Januar 2019, 15:41:07
Ich hoffe darauf, dass Weather ein WetterCode Reading abhängig vom Anbieter, mit einem Wert zwischen 0 und 100 bereitstellt ;D

Na dann schauen wir einmal.
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

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

igami

Zitat von: CoolTux am 05 Januar 2019, 15:43:44
Wieso eigentlich 100

https://developer.yahoo.com/weather/documentation.html#codes
Da ich das Modul geerbt habe kann ich dir das nicht beantworten. In der Commandref steht nur:

useExtWeather <device>:<reading>
use data from other devices to calculate twilight_weather.
The reading used shoud be in the range of 0 to 100 like the reading c_clouds in an openweathermap device, where 0 is clear sky and 100 are overcast clouds.
With the use of this attribute weather effects like heavy rain or thunderstorms are neglegted for the calculation of the twilight_weather reading.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

der-Lolo

Schön das Ihr euch hier schon der sache angenommen habt - ich bin auch betroffen, und schreibe jetzt hier um mit zu bekommen wenn eine Lösung in sicht ist...

2019.01.05 15:10:31 3: [twilight] 12 attempt(s) needed got NO valid weather data from yahoo
2019.01.05 15:10:31 3: [twilight] got no weather info from yahoo. Error code: gethostbyname query.yahooapis.com failed
2019.01.05 15:09:31 3: [twilight] got no weather info from yahoo. Error code: gethostbyname query.yahooapis.com failed
2019.01.05 15:08:31 3: [twilight] got no weather info from yahoo. Error code: gethostbyname query.yahooapis.com failed
2019.01.05 15:07:31 3: [twilight] got no weather info from yahoo. Error code: gethostbyname query.yahooapis.com failed
2019.01.05 15:06:31 3: [twilight] got no weather info from yahoo. Error code: gethostbyname query.yahooapis.com failed
2019.01.05 15:05:31 3: [twilight] got no weather info from yahoo. Error code: gethostbyname query.yahooapis.com failed
2019.01.05 15:04:31 3: [twilight] got no weather info from yahoo. Error code: gethostbyname query.yahooapis.com failed
2019.01.05 15:03:31 3: [twilight] got no weather info from yahoo. Error code: gethostbyname query.yahooapis.com failed
2019.01.05 15:02:31 3: [twilight] got no weather info from yahoo. Error code: gethostbyname query.yahooapis.com failed
2019.01.05 15:01:31 3: [twilight] got no weather info from yahoo. Error code: gethostbyname query.yahooapis.com failed
2019.01.05 15:00:31 3: [twilight] got no weather info from yahoo. Error code: gethostbyname query.yahooapis.com failed
2019.01.05 14:59:31 3: [twilight] got no weather info from yahoo. Error code: gethostbyname query.yahooapis.com failed

Christoph Morrison

Zitat von: CoolTux am 05 Januar 2019, 15:43:44
Wieso eigentlich 100

https://developer.yahoo.com/weather/documentation.html#codes

Hat nichts mit den Yahoo Weather Codes zu tun. Steht im Code, Zeile 656:
## SCM: 100% clouds => 30% light (rough estimation)

Im Prinzip wird hier versucht anhand der Bewölkung das Restlicht zu berechnen. Ansonsten gibt es eine feste Zuordnung von Yahoo-Wettercode zu einem Faktor.

Ich würde den gesamten Yahoo-Teil rauswerfen, den Location-Code aber aus Kompatibilitätsgründen behalten. Stattdessen sollte sowas wirklich von einem externen Wettermodul kommen. Gibt man useExtWeather nicht an, bleibt es halt bei den unmodifizierten Daten und sr_weather / ss_weather == irgendein anderer Wert setzen, auch um die Kompatibilität zu erhalten.

Siehe auch http://www.wikimatic.de/wiki/TCLScript:twilight (das Original).

sinus61

Hab gerade festgestellt, das zwar in Twilight immer noch alle Werte drin sind, aber alle Weekdaytimer die sowas

all_Mob_Switch1 0123456|{ReadingsVal("myTwilight","ss","")}|on 01234|22:10|off 56|23:10|off

nutzen, stellen sich nachts nicht mehr, sondern stehen auf 00:00:00 Uhr.

Wenn ich einmal auf Def gehe und es übernehme ist die Zeit wieder richtig.

B.Stromberg

Hallo!
Ich habe bisher Twilight zur Steuerung meiner Rolläden benutzt. Dort verwende ich über set Befehl die Werte ss und sr_weather von Twilight.

Gibt es da eine Alternative zu Twilight?


Ellert


B.Stromberg

Aussenhelligkeit? Och nöööö.....zuviel Aufwand!
Bräuchte dann ein WLAN, Fhem taugliches Helligkeitsmodul. Dann, wenn mal ein Wölkchen kommt und der Grenzwert erreicht wird, gehen die Rollos runter. Wolke weg, Rollo auf.
Hatte mal so ein Teil für die Scheibe, fand ich nicht toll...

Es reicht auch vollkommen eine ca. Zeit, die halt täglich übers Jahr angepasst wird...

Übrigens erhalte ich über Twilight immer noch aktuelle Readings, auch sr und ss Weather.....

aktEvent

ss_civil

2019-01-07 17:08:47
azimuth

241.46

2019-01-07 17:11:26
compasspoint

southwest

2019-01-07 17:11:26
condition

28

2019-01-06 15:19:05
condition_txt

Mostly Cloudy

2019-01-06 15:19:05
elevation

-5.9

2019-01-07 17:11:26
horizon

-6

2019-01-07 17:08:47
light

2

2019-01-07 17:08:47
nextEvent

ss_naut

2019-01-07 17:08:47
nextEventTime

17:51:48

2019-01-07 17:08:47
sr

08:35:54

2019-01-07 03:52:33
sr_astro

06:25:22

2019-01-07 03:52:33
sr_civil

07:49:08

2019-01-07 03:52:33
sr_indoor

08:11:55

2019-01-07 03:52:33
sr_naut

07:06:09

2019-01-07 03:52:33
sr_weather

08:35:54

2019-01-07 15:33:02
ss

16:22:01

2019-01-07 03:52:33
ss_astro

18:32:36

2019-01-07 03:52:33
ss_civil

17:08:47

2019-01-07 03:52:33
ss_indoor

16:46:01

2019-01-07 03:52:33
ss_naut

17:51:48

2019-01-07 03:52:33
ss_weather

16:22:01

2019-01-07 15:33:02
state

10

2019-01-07 17:08:47
twilight

33.8

2019-01-07 17:11:26
twilight_weather

33.8

2019-01-07 17:11:26

JoWiemann

Zitat von: B.Stromberg am 07 Januar 2019, 16:43:32
Gibt es da eine Alternative zu Twilight?

Schau Dir mal sunrise_rel und sunset_rel in der commandref an.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

acaliebe

Hallo, 

falls es jemanden interessiert: ich hab mir Twilight (auf die schnelle) mal auf Openweathermap umgebaut, bis es eine wirkliche Lösung gibt. (sind nur ein paar Handgriffe)

Zu allererst muss man leider ein "for free" Benutzerkonto auf Openweathermap erstellen.
-> https://home.openweathermap.org/users/sign_up

Dann der Anleitung auf der Seite folgen um einen API-Key zu erstellen.
-> https://home.openweathermap.org/api_keys

WARNUNG: Es dauert ca eine Stunde, bis der funktioniert!!!


Den API-Key trägt man dann in der fhem.cfg da ein, wo das Twilight-Objekt definiert ist (Letzte Stelle - wo bisher die WOID stand)
bsp:
define MyTwilight Twilight 50.3100001 11.9000001 6 OPENWEATHERMAP_APIKEY_HERE

Dann die fhem/FHEM/59_Twilight.pm öffnen und folgende Stelle (ca Zeile 385) finden:
my $URL = "http://query.yahooapis.com/v1/public/yql?q=select%%20*%%20from%%20weather.forecast%%20where%%20woeid=%s%%20and%%20u=%%27c%%27&format=%s&env=store%%3A%%2F%%2Fdatatables.org%%2Falltableswithkeys";
Die Zeile markieren und durch folgendes ersetzen:
my $URL =  "http://api.openweathermap.org/data/2.5/weather/?lat=" . $hash->{LATITUDE} . "&lon=" . $hash->{LONGITUDE} . "&APPID=" . $hash->{WEATHER} . "&units=metric" ;

(ca Zeile 529) dann:
$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};

ersetzen durch:
$cond_code  = ( 10 - ( $resHash->{clouds}{all} / 10 ));
$cond_txt   = $resHash->{weather}[0]{description};
$temperatur = $resHash->{main}{temp};


ein paar Zeilen tiefer dann:
if (!defined($cond_code) ) {
  $cond_code  = "50";         # eigener neutraler Code
  $cond_txt   = "undefined"; 
  $temperatur = "undefined";
} else {
  $hash->{WEATHER_CORRECTION} = $faktor_cond_code[$cond_code] / 25 * 20;
  $hash->{WEATHER_HORIZON}    = $hash->{WEATHER_CORRECTION} + $hash->{INDOOR_HORIZON};
  $hash->{CONDITION}          = $cond_code;
  $hash->{CONDITION_TXT}      = $cond_txt;
  $hash->{TEMPERATUR}         = $temperatur;
  Log3 $hash, 1, "[$hash->{NAME}] $cond_code=$cond_txt $temperatur, correction: $hash->{WEATHER_CORRECTION}°";
}

ersetzen durch:
if (!defined($cond_code) ) {
  $cond_code  = "5";         # eigener neutraler Code
  $cond_txt   = "undefined";
  $temperatur = "undefined";
}
$hash->{WEATHER_CORRECTION} = $cond_code / 25 * 20;
#$hash->{WEATHER_CORRECTION} = $faktor_cond_code[$cond_code] / 25 * 20;
$hash->{WEATHER_HORIZON}    = $hash->{WEATHER_CORRECTION} + $hash->{INDOOR_HORIZON};
$hash->{CONDITION}          = $cond_code;
$hash->{CONDITION_TXT}      = $cond_txt;
$hash->{TEMPERATUR}         = $temperatur;
Log3 $hash, 1, "[$hash->{NAME}] $cond_code=$cond_txt $temperatur, correction: $hash->{WEATHER_CORRECTION}°";


Nun noch ca Zeile 490:
if ($location == 0)  {
ersetzen durch
if ($location eq "" ) {


EDIT: Den Fhem-Dienst neu starten!!!

Das war es schon. Das das Event um 0:00 startet wenn der Server nicht erreichbar ist, sollte damit auch gleich behoben sein.



Mit der Zeile $cond_code  = ( 10 - ( $resHash->{clouds}{all} / 10 ) ); bin ich mir nicht sicher. ich invertiere hier den gelesenen wert (0=Voll bewölkt, 9=keine Wolken). Wenn ich es nicht mache, verschieben sich die Zeiten scheinbar in die falsche Richtung.  Allerdings bin ich noch nicht wirklich zum porbieren gekommen.

Ich hoffe es bringt jemanden was.