Wetterdaten von Wunderground

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

novregen
Beiträge: 100
Registriert: 28.12.2014, 17:03
Danksagung erhalten: 1 Mal

Re: Wetterdaten von Wunderground

Beitrag von novregen » 23.07.2019, 13:00

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....

dondaik
Beiträge: 12929
Registriert: 16.01.2009, 18:48
Wohnort: Steingaden
Hat sich bedankt: 1604 Mal
Danksagung erhalten: 222 Mal

Re: Wetterdaten von Wunderground

Beitrag von dondaik » 23.07.2019, 13:18

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 :mrgreen: !!!
wer schreibfehler findet darf sie behalten.

novregen
Beiträge: 100
Registriert: 28.12.2014, 17:03
Danksagung erhalten: 1 Mal

Re: Wetterdaten von Wunderground

Beitrag von novregen » 23.07.2019, 14:13

ok, und wie bringst du dann die Daten rüber ? Jede Variable mit Blocky rüberschreiben ?

dondaik
Beiträge: 12929
Registriert: 16.01.2009, 18:48
Wohnort: Steingaden
Hat sich bedankt: 1604 Mal
Danksagung erhalten: 222 Mal

Re: Wetterdaten von Wunderground

Beitrag von dondaik » 23.07.2019, 14:16

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
-------
!!! 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 :mrgreen: !!!
wer schreibfehler findet darf sie behalten.

novregen
Beiträge: 100
Registriert: 28.12.2014, 17:03
Danksagung erhalten: 1 Mal

Re: Wetterdaten von Wunderground

Beitrag von novregen » 24.07.2019, 11:12

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....

dondaik
Beiträge: 12929
Registriert: 16.01.2009, 18:48
Wohnort: Steingaden
Hat sich bedankt: 1604 Mal
Danksagung erhalten: 222 Mal

Re: Wetterdaten von Wunderground

Beitrag von dondaik » 24.07.2019, 11:14

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 :mrgreen: !!!
wer schreibfehler findet darf sie behalten.

Benutzeravatar
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

Beitrag von Black » 24.07.2019, 11:29

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

Code: Alles auswählen

on({id: "weatherwunderground.0.irgendeinObject", change: 'any'}, function (data) {
  setState ("DeineTempSysvar",getState ("weatherwunderground.0.Deinetempdeduwillst").val);
  dito mit weiteren werten.
});
mehr brauchst du nicht zu machen, sobald du eine rega sysvar in iobroker beschreibst, wird die automatishc in der CCU mitgeführt.

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

novregen
Beiträge: 100
Registriert: 28.12.2014, 17:03
Danksagung erhalten: 1 Mal

Re: Wetterdaten von Wunderground

Beitrag von novregen » 24.07.2019, 11:36

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 ?

Benutzeravatar
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

Beitrag von Black » 24.07.2019, 11:48

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
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

eschwosk
Beiträge: 2
Registriert: 10.05.2019, 11:25

Re: Wetterdaten von Wunderground

Beitrag von eschwosk » 05.03.2024, 09:01

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.
Bild
Dateianhänge
XML respose für IASCEA4.jpg
Homematic Wetterdaten aus wounderground.jpg

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“