FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: fhemstarter am 26 April 2016, 12:57:55

Titel: Accuweather.com als Vorhersage einbinden möglich?
Beitrag von: fhemstarter am 26 April 2016, 12:57:55
Hallo liebe Community,
möchte gerne als Wetterdienst Accuweather einbinden in mein Fhem ist das möglich?

Fhem neuste Version läuft auf einem PI B
Titel: Antw:Accuweather.com als Vorhersage einbinden möglich?
Beitrag von: frank am 26 April 2016, 13:05:57
mit httpmod kannst du jede website pollen und die gewünschten daten in readings anlegen lassen.
Titel: Antw:Accuweather.com als Vorhersage einbinden möglich?
Beitrag von: fhemstarter am 26 April 2016, 13:09:52
klingt gut lassen sich Readings auch grafisch darstellen?
Titel: Antw:Accuweather.com als Vorhersage einbinden möglich?
Beitrag von: frank am 26 April 2016, 13:35:45
Zitat von: fhemstarter am 26 April 2016, 13:09:52
klingt gut lassen sich Readings auch grafisch darstellen?
dazu sind sie da.  :)
erst loggen mit filelog oder dblog, dann plotten mit svg. schau mal genau im einsteiger.pdf.
Titel: Antw:Accuweather.com als Vorhersage einbinden möglich?
Beitrag von: fhemstarter am 26 April 2016, 13:47:25
hatte schon mal was mit SVG Plot gemacht werde mir den entsprechenden teil ansehen in der PDF.
Also muss ich nur define Wetter HTTPMOD http://www.accuweather.com/de/de/gahlen/46514/weather-forecast/1025389 eintragen damit fhem die Readings anlegt?
Titel: Antw:Accuweather.com als Vorhersage einbinden möglich?
Beitrag von: frank am 26 April 2016, 14:08:03
ZitatAlso muss ich nur define Wetter HTTPMOD http://www.accuweather.com/de/de/gahlen/46514/weather-forecast/1025389 eintragen damit fhem die Readings anlegt?
damit bekommst du wahrscheinlich erst einmal nur den kompletten inhalt der website ausgelesen. die daten kannst du unter internals => buf finden.
wenn in buf alle relevanten daten stehen (das ist schon die halbe miete  ;)), musst du über entsprechende attribute deine gewünschten readings natürlich noch extrahieren. schau mal im wiki zu httpmod.
Titel: Antw:Accuweather.com als Vorhersage einbinden möglich?
Beitrag von: fhemstarter am 26 April 2016, 14:14:49
ok gibts noch ne etwas leichtere Variante
Titel: Antw:Accuweather.com als Vorhersage einbinden möglich?
Beitrag von: jnewton957 am 01 September 2019, 10:01:51
3 Jahre kein weiterer post zum Thema Accuweather.

Ich habe mir mal die app angesehen und bin eigentlich mehr begeistert, als von anderen apps.

Minutecast zeigt an, in wie viel Minuten es bei uns regnen wird. Und das mit schönem Symbolen bzw. Stundenkreis.
Auch das Radarbild ist super.

Leider bin ich nicht so tief in FHEM um eine solche webseite mit ihren Grafiken und Werten auslesen zu können.

Hat das vielleicht schon jemand mal gemacht und könnte das script/cfg dazu posten.

Es gibt eine API wenn man sich auf https://developer.accuweather.com/ anmeldet. Die liefert 40 Systemvariablen.

Ich habe ein coding zum Auslesen gefunden. Aber kann das nicht nach FHEM "übersetzen".

!Hier die WETTERSTATION-ID und API-KEY eintragen
string wetterstation_id = "HIER WETTERSTATION-ID EINTRAGEN";
string api_key = "HIER DEIN API KEY EINTRAGEN";
var url = "http://dataservice.accuweather.com/currentconditions/v1/"#wetterstation_id#"?apikey="#api_key#"&language=de-de&details=true";
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string responce = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
var WeatherText = (responce.StrValueByIndex(",",2)).StrValueByIndex(":",1).ToLatin().Replace("\"","");
var Temperature = (responce.StrValueByIndex(",",7)).StrValueByIndex(":",3).ToFloat();
var RealFeelTemperature = (responce.StrValueByIndex(",",13)).StrValueByIndex(":",3).ToFloat();
var RealFeelTemperatureShade = (responce.StrValueByIndex(",",19)).StrValueByIndex(":",3).ToFloat();
var RelativeHumidity = (responce.StrValueByIndex(",",25)).StrValueByIndex(":",1).ToFloat();
var WindSpeed = (responce.StrValueByIndex(",",35)).StrValueByIndex(":",3).ToFloat();
var UVIndex = (responce.StrValueByIndex(",",47)).StrValueByIndex(":",1).ToFloat();
var UVIndexText = (responce.StrValueByIndex(",",48)).StrValueByIndex(":",1).ToLatin().Replace("\"","");
var CloudCover = (responce.StrValueByIndex(",",56)).StrValueByIndex(":",1).ToFloat();
var Pressure = (responce.StrValueByIndex(",",63)).StrValueByIndex(":",3).ToFloat();
url = "http://dataservice.accuweather.com/forecasts/v1/daily/1day/"#wetterstation_id#"?apikey="#api_key#"&language=de-de&details=true&metric=true";
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
responce = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
var TemperatureMin = (responce.StrValueByIndex(",",22)).StrValueByIndex(":",3).ToFloat();
var TemperatureMax = (responce.StrValueByIndex(",",25)).StrValueByIndex(":",2).ToFloat();
var RealFeelTemperatureMin = (responce.StrValueByIndex(",",28)).StrValueByIndex(":",3).ToFloat();
var RealFeelTemperatureMax = (responce.StrValueByIndex(",",31)).StrValueByIndex(":",2).ToFloat();
var HoursOfSun = (responce.StrValueByIndex(",",40)).StrValueByIndex(":",1).ToFloat();
var DayWeather = (responce.StrValueByIndex(",",75)).StrValueByIndex(":",1).ToLatin().Replace("\"","");
var DayWindSpeed = (responce.StrValueByIndex(",",81)).StrValueByIndex(":",3).ToFloat();
var DayWindGust = (responce.StrValueByIndex(",",87)).StrValueByIndex(":",3).ToFloat();
var NightWeather = (responce.StrValueByIndex(",",113)).StrValueByIndex(":",1).ToLatin().Replace("\"","");
var NightWindSpeed = (responce.StrValueByIndex(",",119)).StrValueByIndex(":",3).ToFloat();
var NightWindGust = (responce.StrValueByIndex(",",125)).StrValueByIndex(":",3).ToFloat();
var DayWeatherPrecipitationProbability = (responce.StrValueByIndex(",",76)).StrValueByIndex(":",1).ToFloat();
var DayWeatherThunderstormProbability = (responce.StrValueByIndex(",",77)).StrValueByIndex(":",1).ToFloat();
var DayWeatherRainProbability = (responce.StrValueByIndex(",",78)).StrValueByIndex(":",1).ToFloat();
var DayWeatherSnowProbability = (responce.StrValueByIndex(",",79)).StrValueByIndex(":",1).ToFloat();
var DayWeatherIceProbability = (responce.StrValueByIndex(",",80)).StrValueByIndex(":",1).ToFloat();
var NightWeatherPrecipitationProbability = (responce.StrValueByIndex(",",114)).StrValueByIndex(":",1).ToFloat();
var NightWeatherThunderstormProbability = (responce.StrValueByIndex(",",115)).StrValueByIndex(":",1).ToFloat();
var NightWeatherRainProbability = (responce.StrValueByIndex(",",116)).StrValueByIndex(":",1).ToFloat();
var NightWeatherSnowProbability = (responce.StrValueByIndex(",",117)).StrValueByIndex(":",1).ToFloat();
var NightWeatherIceProbability = (responce.StrValueByIndex(",",118)).StrValueByIndex(":",1).ToFloat();
var DayHoursOfPrecipitation = (responce.StrValueByIndex(",",105)).StrValueByIndex(":",1).ToFloat();
var DayHoursOfRain = (responce.StrValueByIndex(",",106)).StrValueByIndex(":",1).ToFloat();
var DayHoursOfSnow = (responce.StrValueByIndex(",",107)).StrValueByIndex(":",1).ToFloat();
var DayHoursOfIce = (responce.StrValueByIndex(",",108)).StrValueByIndex(":",1).ToFloat();
var NightHoursOfPrecipitation = (responce.StrValueByIndex(",",143)).StrValueByIndex(":",1).ToFloat();
var NightHoursOfRain = (responce.StrValueByIndex(",",144)).StrValueByIndex(":",1).ToFloat();
var NightHoursOfSnow = (responce.StrValueByIndex(",",145)).StrValueByIndex(":",1).ToFloat();
var NightHoursOfIce = (responce.StrValueByIndex(",",146)).StrValueByIndex(":",1).ToFloat();
string svName;
object svObj;
svName = "Wetter";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(WeatherText);
}
svName = "Temperatur [°C]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(Temperature);
}
svName = "RealFeel-Temperatur [°C]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(RealFeelTemperature);
}
svName = "RealFeel-Temperatur im Schatten [°C]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(RealFeelTemperatureShade);
}
svName = "Luftfeuchtigkeit [%]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(RelativeHumidity);
}
svName = "Windgeschwindigkeit [km/h]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(WindSpeed);
}
svName = "UV-Index";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(UVIndex);
}
svName = "UV-Intensität";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(UVIndexText);
}
svName = "Wolkendecke [%]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(CloudCover);
}
svName = "Luftdruck [hPa]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(Pressure);
}
svName = "Min. Temp. [°C]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj. Temp. [°C]").State(TemperatureMin);
}
svName = "Max. Temp. [°C]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj. Temp. [°C]").State(TemperatureMax);
}
svName = "Max. RealFeel-Temp. [°C]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj. RealFeel-Temp. [°C]").State(RealFeelTemperatureMax);
}
svName = "Min. RealFeel-Temp. [°C]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj. RealFeel-Temp. [°C]").State(RealFeelTemperatureMin);
}
svName = "Dauer Sonne [h]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(HoursOfSun);
}
svName = "tagsüber";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(DayWeather);
}
svName = "Windstärke tagsüber [km/h]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(DayWindSpeed);
}
svName = "Böen tagsüber [km/h]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(DayWindGust);
}
svName = "Wetter nachtsüber";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(NightWeather);
}
svName = "Windstärke nachtsüber [km/h]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(NightWindSpeed);
}
svName = "Böen nachtsüber [km/h]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(NightWindGust);
}
svName = "Niederschlagwahrscheinlichkeit tagsüber [%]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(DayWeatherPrecipitationProbability);
}
svName = "Gewitterwahrscheinlichkeit tagsüber [%]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(DayWeatherThunderstormProbability);
}
svName = "Regenwahrscheinlichkeit tagsüber [%]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(DayWeatherRainProbability);
}
svName = "Schneewahrscheinlichkeit tagsüber [%]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(DayWeatherSnowProbability);
}
svName = "Icewahrscheinlichkeit tagsüber [%]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(DayWeatherIceProbability);
}
svName = "Niederschlagwahrscheinlichkeit nachtsüber [%]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(NightWeatherPrecipitationProbability);
}
svName = "Gewitterwahrscheinlichkeit nachtsüber [%]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(NightWeatherThunderstormProbability);
}
svName = "Regenwahrscheinlichkeit nachtsüber [%]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(NightWeatherRainProbability);
}
svName = "Schneewahrscheinlichkeit nachtsüber [%]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(NightWeatherSnowProbability);
}
svName = "Icewahrscheinlichkeit nachtsüber [%]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(NightWeatherIceProbability);
}
svName = "Niederschlagsdauer tagsüber [h]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(DayHoursOfPrecipitation);
}
svName = "Regendauer tagsüber [h]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(DayHoursOfRain);
}
svName = "Schnedauer tagsüber [h]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(DayHoursOfSnow);
}
svName = "Icedauer tagsüber [h]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(DayHoursOfIce);
}
svName = "Niederschlagsdauer nachtsüber [h]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(NightHoursOfPrecipitation);
}
svName = "Regendauer nachtsüber [h]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(NightHoursOfRain);
}
svName = "Schnedauer nachtsüber [h]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(NightHoursOfSnow);
}
svName = "Icedauer nachtsüber [h]";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State(NightHoursOfIce);
}
svName = "Wetterdienst";
svObj = dom.GetObject(svName);
if (svObj){
  svObj.State("Accuweather");
}



Kann das jemand übersetzen oder sogar ein Modul dafür schreiben.

Danke und schönes Wetter :-)
Jörg
Titel: Antw:Accuweather.com als Vorhersage einbinden möglich?
Beitrag von: plin am 26 Januar 2023, 20:16:32
Besteht noch Bedarf nach einem AccuWeather-Modul???

Der Free Account bietet folgende Informationen:

50 calls/day
Titel: Antw:Accuweather.com als Vorhersage einbinden möglich?
Beitrag von: Beta-User am 26 Januar 2023, 20:24:29
Neben/alternativ zu einem eigenständigen Modul wäre eventuell die Integration als API-Option in Weather interessant, da DarkSky demnächst nicht mehr frei verfügbar sein wird.
Titel: Antw:Accuweather.com als Vorhersage einbinden möglich?
Beitrag von: plin am 26 Januar 2023, 20:28:21
Mal schauen, ob sich Bedarf abzeichnet. Immerhin ist die Fülle der Informationen interessant (siehe Anlage), muss aber selbst erst mal drüber schauen was mir fehlt bzw. was mich interessiert.
Titel: Antw:Accuweather.com als Vorhersage einbinden möglich?
Beitrag von: plin am 28 Januar 2023, 15:57:18
Zitat von: Beta-User am 26 Januar 2023, 20:24:29
Neben/alternativ zu einem eigenständigen Modul wäre eventuell die Integration als API-Option in Weather interessant, da DarkSky demnächst nicht mehr frei verfügbar sein wird.

Hi,

irgendwie gibt's wenig Resonanz. Ich habe trotzdem mal quick & dirty eine Batch-Lösung zum Rumspielen gebastelt (siehe Anlage, quasi als Appetizer oder Prototyp). Die zeigt zumindest auf was alles drin ist.

Bzgl. der Update-Zyklen müsste man sich Gedanken machen. Der kostenlose Accuweather-Account umfasst ja nur 50 Zugriffe pro Tag. Aber ich denke man braucht nicht alle Daten stundenaktuell, folglich könnte man die Calls geschickt über den Tag verteilen.

Ciao, Peter

EDIT: Jetzt auch mit den current conditions
Titel: Aw: Accuweather.com als Vorhersage einbinden möglich?
Beitrag von: crusader am 04 April 2023, 12:11:45
Zitat von: plin am 28 Januar 2023, 15:57:18Hi,

irgendwie gibt's wenig Resonanz.

Liegt vielleicht daran, dass die DarkSky-User die Abschaltung noch nicht realisiert haben.
Mit dem freien OpenweatherMap-Key kann man jedenfalls nicht viel anfangen, da man keine Tageswerte (z.B. für min und max-Temperaturen) bekommt.
Wetter.com könnte man mit 10 freien Abrufen/Tag zwar nutzen, aber die sperren bei Überschreitung den API und man muss ihn erst wieder freischalten lassen.
Accuweather scheint mir da eine sinnvolle Alternative.
Ich wäre jedenfalls interessiert.
Titel: Aw: Accuweather.com als Vorhersage einbinden möglich?
Beitrag von: Jamo am 04 April 2023, 16:08:21
Hier auch grosses Interesse an der Integration als API-Option in Weather.
Titel: Aw: Accuweather.com als Vorhersage einbinden möglich?
Beitrag von: crusader am 09 April 2023, 19:54:10
Ich hab' mal hilfsweise ein HTTPMOD für den 5-day-forecast von accuweather geschrieben und auf

Codeschnipsel (https://forum.fhem.de/index.php?board=8.0)

eingestellt.
Die Variablen-Namen sind kompatibel mit dem Weather-Modul, sodass man einfach umstellen kann.
Die accuweather-icons sind allerdings ungewöhnlich.