Wetterdaten von Wunderground
Moderator: Co-Administratoren
Re: Wetterdaten von Wunderground
Hallo,
was gibt es für Alterantiven zu Wunderground, oder bekommt man das noch mit einem öffentlichen Key zum laufen ?
Ansonsten würde mich interessieren, was ihr jetzt einsetzt bzw. ob es evtl. Sinn macht sich die Daten aus dem IoBroker zu holen openweathermap oder ähnliches....
was gibt es für Alterantiven zu Wunderground, oder bekommt man das noch mit einem öffentlichen Key zum laufen ?
Ansonsten würde mich interessieren, was ihr jetzt einsetzt bzw. ob es evtl. Sinn macht sich die Daten aus dem IoBroker zu holen openweathermap oder ähnliches....
-
- Beiträge: 12929
- Registriert: 16.01.2009, 18:48
- Wohnort: Steingaden
- Hat sich bedankt: 1604 Mal
- Danksagung erhalten: 222 Mal
Re: Wetterdaten von Wunderground
dazu ist iobroker ideal ...
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso !!!
wer schreibfehler findet darf sie behalten.
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso !!!
wer schreibfehler findet darf sie behalten.
Re: Wetterdaten von Wunderground
ok, und wie bringst du dann die Daten rüber ? Jede Variable mit Blocky rüberschreiben ?
-
- Beiträge: 12929
- Registriert: 16.01.2009, 18:48
- Wohnort: Steingaden
- Hat sich bedankt: 1604 Mal
- Danksagung erhalten: 222 Mal
Re: Wetterdaten von Wunderground
wie "rüber"
in iobroker gibt es zig lösungen ( einfach ansehen und dann ein thinkerboard mit 4MB bestellen um iobroker aufzusetzen ) die adapter liefern alles in SV´s..... und die liegen auf der ccu .... ohne umwege
https://forum.iobroker.net
in iobroker gibt es zig lösungen ( einfach ansehen und dann ein thinkerboard mit 4MB bestellen um iobroker aufzusetzen ) die adapter liefern alles in SV´s..... und die liegen auf der ccu .... ohne umwege
https://forum.iobroker.net
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso !!!
wer schreibfehler findet darf sie behalten.
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso !!!
wer schreibfehler findet darf sie behalten.
Re: Wetterdaten von Wunderground
die adapter liefern alles in SV´s..... und die liegen auf der ccu .... ohne umwege
Das ist mir noch nicht klar... ich habe iobroker auf dem pi, aber die daten der adapter wie z.b. openweathermap habe ich doch nicht auch automatisch in der homematic ccu zur auswahl....
Das ist mir noch nicht klar... ich habe iobroker auf dem pi, aber die daten der adapter wie z.b. openweathermap habe ich doch nicht auch automatisch in der homematic ccu zur auswahl....
-
- Beiträge: 12929
- Registriert: 16.01.2009, 18:48
- Wohnort: Steingaden
- Hat sich bedankt: 1604 Mal
- Danksagung erhalten: 222 Mal
Re: Wetterdaten von Wunderground
doch, wenn der iobroker adapter xxx richtig läuft ist die ccu immer der ablageort der SV´s des adapters - egal ob wetter oder tanken. ( wenigstens bei meiner installation )
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso !!!
wer schreibfehler findet darf sie behalten.
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso !!!
wer schreibfehler findet darf sie behalten.
- Black
- Beiträge: 5483
- Registriert: 12.09.2015, 22:31
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Wegberg
- Hat sich bedankt: 424 Mal
- Danksagung erhalten: 1074 Mal
- Kontaktdaten:
Re: Wetterdaten von Wunderground
er überlegt wahrscheinlich,die wie werte die in den Objecten, welche im IObroker unter dem Adapter (z.b. Weatherunderground.0 oder DasWetter.0 sind, in die CCU kommen.
nun,die CCU wird ja nicht alle Werte brauchen, wenn du IOBroker hast wirst du ja auch dort visualisieren. also wäre interessant:
Temperatur,Luftfeuchte, Luftdruck
Diese legst du als Systemvariablen an
in dem moment kennt IOBroker die unter dem Rega Adapter.
dann in Javascriptein kleiner dreizeiler
mehr brauchst du nicht zu machen, sobald du eine rega sysvar in iobroker beschreibst, wird die automatishc in der CCU mitgeführt.
Black
nun,die CCU wird ja nicht alle Werte brauchen, wenn du IOBroker hast wirst du ja auch dort visualisieren. also wäre interessant:
Temperatur,Luftfeuchte, Luftdruck
Diese legst du als Systemvariablen an
in dem moment kennt IOBroker die unter dem Rega Adapter.
dann in Javascriptein kleiner dreizeiler
Code: Alles auswählen
on({id: "weatherwunderground.0.irgendeinObject", change: 'any'}, function (data) {
setState ("DeineTempSysvar",getState ("weatherwunderground.0.Deinetempdeduwillst").val);
dito mit weiteren werten.
});
Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg
Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann
Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W
technical contribution against annoying advertising
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg
Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann
Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W
technical contribution against annoying advertising
Re: Wetterdaten von Wunderground
ok, also hat die ccu doch nicht automatisch die Werte aus z.b. DasWetter.0 oder openweathermap.0
Die muss ich wie von Black beschrieben mit einem Script rüberschreiben, damit ich diese Systemvaribel auch in der CCU2 habe....
richtig verstanden, oder gibt es sonst noch andere Möglichkeiten ?
Die muss ich wie von Black beschrieben mit einem Script rüberschreiben, damit ich diese Systemvaribel auch in der CCU2 habe....
richtig verstanden, oder gibt es sonst noch andere Möglichkeiten ?
- Black
- Beiträge: 5483
- Registriert: 12.09.2015, 22:31
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Wegberg
- Hat sich bedankt: 424 Mal
- Danksagung erhalten: 1074 Mal
- Kontaktdaten:
Re: Wetterdaten von Wunderground
die ccu kriegt die daten automatisch.... man muss nur ein kleines script schreiben, welches die daten aus dem einen in den anderen bereich rübersetzt.
auf der ccu musst du ja auch ein script schreiben, welches die daten holt. durch einen reinen Wunsch tut sich da nicht viel. das ist halt das prinzip de rmiddlewares. du kannst allesmiteinander kombinieren. ob die die kombination nun grafisch in blockly schreibst oder native javascript ist da egal ^^
black
auf der ccu musst du ja auch ein script schreiben, welches die daten holt. durch einen reinen Wunsch tut sich da nicht viel. das ist halt das prinzip de rmiddlewares. du kannst allesmiteinander kombinieren. ob die die kombination nun grafisch in blockly schreibst oder native javascript ist da egal ^^
black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg
Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann
Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W
technical contribution against annoying advertising
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg
Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann
Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W
technical contribution against annoying advertising
Re: Wetterdaten von Wunderground
Wetterdaten von Wounderground geht doch!
Ich wollte schon länger meine Wetterdaten in der Homematic erfasst haben und hatte mich jetzt endlich entschlossen dies auch zu realisieren. Im Internet bin ich auf den Artikel von Frank Pfarr (Homematic Guru) gestoßen und musste erfahren, das es so nicht mehr funktioniert. Ich habe eine eigene Wetterstation in Wounderground und bin rundum zufrieden. Etwas rumsuchen hat dann dazu geführt, das ich sehr wohl einen Apikey generieren kann und mit diesem key unter folgender URL
https://api.weather.com/v2/pws/observat ... =m&apiKey=[API KEY]
daten abrufen kann. Es diese Zeile in den Browser eingeben und wenn alles stimmt erhält man eine XML-Datei. Dies funktioniert übrigens nicht nur für die eigene Station sondern mit dem gleichen API-Key für alle anderen Stationen auch. Das Script in der Homematic sieht dann so aus:
!Stand 05.03.2024 http://homematic-forum.de/forum/viewtop ... 31&t=17209
var url = "https://api.weather.com/v2/pws/observat ... ey=[apiKey]";
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string wetter_xml = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
!Beim XML-File den ueberfluessigen Header entfernen
integer laenge = wetter_xml.Length();
integer wort_position = wetter_xml.Find("stationID");
wetter_xml = wetter_xml.Substr(wort_position, (laenge - wort_position));
WriteLine(wetter_xml);
!Daten mit Suchworten aus XML-File ausfiltern:
!string word = "full";
string word = "neighborhood";
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
dom.GetObject("W_Station").State(daten);
!string word = "observation_time";
string word = "obsTimeLocal";
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
!daten = daten.Substr(0, (word_position -11));
dom.GetObject("W_Aktualisierung").State(daten);
string word = "solarRadiation";
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
dom.GetObject("W_SolarRadiation").State(daten);
string word = "precipTotal";
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
dom.GetObject("W_Regenmenge").State(daten);
string word = "temp";
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
real zahl = daten.ToFloat();
dom.GetObject("W_Temperatur").State(zahl);
string word = "humidity";
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
integer zahl = daten.ToFloat();
dom.GetObject("W_Luftfeuchte").State(zahl);
string word = "winddir";
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
integer zahl = daten.ToFloat();
dom.GetObject("W_Windrichtg").State(zahl);
string word = "windSpeed";
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
integer zahl = daten.ToFloat();
dom.GetObject("W_Windgeschwindigkeit").State(zahl);
string word = "windGust";
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
integer zahl = daten.ToFloat();
dom.GetObject("W_Windboeen").State(zahl);
string word = "pressure";
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
integer zahl = daten.ToFloat();
dom.GetObject("W_Luftdruck").State(zahl);
string word = "precipRate";
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
dom.GetObject("W_precipRate").State(daten);
string word = "dewpt";
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
real zahl = daten.ToFloat();
dom.GetObject("W_Taupunkt").State(zahl);
string word = "uv";
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
real zahl = daten.ToFloat();
dom.GetObject("W_UV").State(zahl);
Je nachdem welche Daten Euere Wetterstation lifert müsst Ihr die ensprechenden Filter löschen oder abändern.
Ich wollte schon länger meine Wetterdaten in der Homematic erfasst haben und hatte mich jetzt endlich entschlossen dies auch zu realisieren. Im Internet bin ich auf den Artikel von Frank Pfarr (Homematic Guru) gestoßen und musste erfahren, das es so nicht mehr funktioniert. Ich habe eine eigene Wetterstation in Wounderground und bin rundum zufrieden. Etwas rumsuchen hat dann dazu geführt, das ich sehr wohl einen Apikey generieren kann und mit diesem key unter folgender URL
https://api.weather.com/v2/pws/observat ... =m&apiKey=[API KEY]
daten abrufen kann. Es diese Zeile in den Browser eingeben und wenn alles stimmt erhält man eine XML-Datei. Dies funktioniert übrigens nicht nur für die eigene Station sondern mit dem gleichen API-Key für alle anderen Stationen auch. Das Script in der Homematic sieht dann so aus:
!Stand 05.03.2024 http://homematic-forum.de/forum/viewtop ... 31&t=17209
var url = "https://api.weather.com/v2/pws/observat ... ey=[apiKey]";
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string wetter_xml = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
!Beim XML-File den ueberfluessigen Header entfernen
integer laenge = wetter_xml.Length();
integer wort_position = wetter_xml.Find("stationID");
wetter_xml = wetter_xml.Substr(wort_position, (laenge - wort_position));
WriteLine(wetter_xml);
!Daten mit Suchworten aus XML-File ausfiltern:
!string word = "full";
string word = "neighborhood";
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
dom.GetObject("W_Station").State(daten);
!string word = "observation_time";
string word = "obsTimeLocal";
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
!daten = daten.Substr(0, (word_position -11));
dom.GetObject("W_Aktualisierung").State(daten);
string word = "solarRadiation";
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
dom.GetObject("W_SolarRadiation").State(daten);
string word = "precipTotal";
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
dom.GetObject("W_Regenmenge").State(daten);
string word = "temp";
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
real zahl = daten.ToFloat();
dom.GetObject("W_Temperatur").State(zahl);
string word = "humidity";
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
integer zahl = daten.ToFloat();
dom.GetObject("W_Luftfeuchte").State(zahl);
string word = "winddir";
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
integer zahl = daten.ToFloat();
dom.GetObject("W_Windrichtg").State(zahl);
string word = "windSpeed";
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
integer zahl = daten.ToFloat();
dom.GetObject("W_Windgeschwindigkeit").State(zahl);
string word = "windGust";
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
integer zahl = daten.ToFloat();
dom.GetObject("W_Windboeen").State(zahl);
string word = "pressure";
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
integer zahl = daten.ToFloat();
dom.GetObject("W_Luftdruck").State(zahl);
string word = "precipRate";
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
dom.GetObject("W_precipRate").State(daten);
string word = "dewpt";
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
real zahl = daten.ToFloat();
dom.GetObject("W_Taupunkt").State(zahl);
string word = "uv";
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
real zahl = daten.ToFloat();
dom.GetObject("W_UV").State(zahl);
Je nachdem welche Daten Euere Wetterstation lifert müsst Ihr die ensprechenden Filter löschen oder abändern.