Aktuelles Wetter über wunderground.com

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

dtp
Beiträge: 10655
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Aktuelles Wetter über wunderground.com

Beitrag von dtp » 03.07.2015, 09:59

Nur mal eine Frage. Habe aber aus Zeitgründen nicht den gesamten Thread lesen können, daher verzeihe man mir, wenn die Frage bereits gestellt wurde.

Gibt es für Wunderground ggf. schon einen entsprechenden Adapter für DashUI bzw. ioBroker? Nutze aktuell yr.no, und das Ding ist sowas von ungenau mit täglich mehreren Grad Abweichung vom realen Wert.

Wunderground.com wird z.B. auch von PocketInformant genutzt, und da sind die mir angezeigten Werte und Prognosen ziemlich gut.

Gruß,

Thorsten
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

pruse
Beiträge: 223
Registriert: 03.02.2012, 22:41

Re: Aktuelles Wetter über wunderground.com

Beitrag von pruse » 08.08.2015, 09:26

Hallo,
habe das Skript für Wunderground über API in Der CCU.Wie bekomme ich zusätzlich den Niederschlag in der CCU.
Habe dafür das Skript eingefügt und eine Systemvariable W_Niederschlag_heute vom Typ Zahl angelegt aber es werden keine Werte hinter der Kommastelle angezeigt.

Code: Alles auswählen

 string word = "precip_today_metric";
        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_Niederschlag_heute").State(zahl);
LXCCU im Standby,Yahm auf Raspberry Pi3, 3xHomeduino, 1xHM-Sen-LI-O, 1xHM-WDS10-TH-O, 1xHM-PBI-4-FM, 4xHM-LC-Bl1-FM, 3xHM-LC-Sw1-FM, 2xHM-WDS40-TH-I,
2x HM-Sen-MDIR-O, 6xHMW-IO-12-Sw14-DR, 1xHM-RC-4-2, 1xHM-LC-Sw4-PCB, 1xHM-ES-PMSw1-Pl, 1xHM-WDS30-OT2-SM,
1xHM-LC-Bl1PBU-FM, 1xHM-WDS30-T-O, 1xHM-TC-IT-WM-W-EU, 1xHM-Sen-MDIR-WM55, 1xHM-LC-Bl1PBU-FM

Benutzeravatar
papi
Beiträge: 370
Registriert: 18.12.2013, 08:40
Wohnort: Willich, NRW
Hat sich bedankt: 2 Mal
Danksagung erhalten: 5 Mal

Re: Aktuelles Wetter über wunderground.com

Beitrag von papi » 08.08.2015, 17:28

Zunächst mal sollte sichergestellt sein, dass die angezapfte Wetterstation auch wirklich Niederschlag erfasst.

Ich musste heute meine Station wechseln, da die bislang von mir Genutzte offenbar den Geist aufgegeben hat.
Dabei musste ich eine ganze Weile suchen, bis ich eine Alternative gefunden habe, die auch alle von mir geforderten Werte, vor allem in angemessenen Zeitabständen, liefern kann.

Pharao50
Beiträge: 8
Registriert: 09.12.2012, 15:33

Re: Aktuelles Wetter über wunderground.com

Beitrag von Pharao50 » 26.08.2015, 13:36

Guten Tag zusammen,

aus Zeitgründen konnte ich leider nicht den ganzen Thread lesen können.

Im Moment möchte ich auch das wunderground Wetter in meine CCU2 einbinden.
Leider scheitere ich berets beim füllen der Variablen.

Habe folgendes Script verwendet:

Variablen:

Code: Alles auswählen

!Stand 03.04.2014  http://homematic-forum.de/forum/viewtopic.php?f=31&t=17209
        !zuerst folgende Systemvariablen anlegen
        !Achtung: keine vergessen und exakte Schreibweise mit Drag&Drop
        !W_Station                        Zeichenkette
        !W_Aktualisierung             Zeichenkette
        !W_Bedingungen               Zeichenkette
        !W_Temperatur                Zahl                     °C
        !W_Luftfeuchte                Zahl                      %
        !W_Windbedingungen       Zeichenkette
        !W_Windrichtung              Zeichenkette
        !W_Windrichtg                  Zahl                       °
        !W_Windgeschwindigkeit   Zahl                     km/h
        !W_Windboeen                  Zahl                     km/h
        !W_Luftdruck                    Zahl                      mb
        !W_Luftdrucktrend            Zeichenkette
        !W_Taupunkt                    Zahl                     °C
        !W_UV                              Zeichenkette

Script:

Code: Alles auswählen

        var url = "http://api.wunderground.com/api/5dc438c76a265174/conditions/lang:DL/q/Germany/Neuwied.xml";
 
        !hier ist die Abfrage mit CUxD
        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();
 
        !hier ist die Abfrage mit system.Exec
        !string stdout;
        !string stderr;
        !system.Exec("wget -q -O - '"#url#"'", &stdout, &stderr);
        !WriteLine(stdout);
        !string wetter_xml = stdout;
        !WriteLine(wetter_xml);
 
        !Beim XML-File den ueberfluessigen Header entfernen
        integer laenge = wetter_xml.Length();
        integer wort_position = wetter_xml.Find("display_location");
        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 = "city";
        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 = "observation_time_rfc822";
        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 = "weather";
        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_Bedingungen").State(daten);
 
        string word = "temp_c";
        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 = "relative_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 = "wind_string";
        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_Windbedingungen").State(daten);
 
        string word = "wind_dir";
        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));
        word_laenge =daten.Length();
        string anfangsbuchstabe = daten.Substr(0,1);
        ! Umlaute korrigieren
        !
        ! N # Nord ***
        if (anfangsbuchstabe == "N") {
           !
            if (daten == "Nordwest") {daten = "Nord-West" ;}
        }
 
        ! S # Süd ***
        if (anfangsbuchstabe == "S") {
           ! 4 # Süd
           if (word_laenge == 4)  {daten = "Süd";}
           ! 8 # Südwest
           if (word_laenge == 8)  {daten = "Süd-West";}
           ! 12 # Süd-Südost
           if (word_laenge == 12) {daten = "Süd-Süd-Ost" ;}
             ! 13
           if (word_laenge == 13) {daten = "Süd-Süd-West" ;}
        }
 
        ! W # Westen
        if (anfangsbuchstabe == "W") {
           ! 13 # West-Südwest
            if (word_laenge == 13) {daten = "West-Süd-West" ;}
        }
 
        ! O # Osten
        if (anfangsbuchstabe == "O") {
           ! 11 # Ost-Südost
           if (word_laenge == 11) {daten = "Ost-Süd-Ost" ;}
        }
        dom.GetObject("W_Windrichtung").State(daten);
        !WriteLine(daten);
 
 
        string word = "wind_degrees";
        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 = "wind_kph";
        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 = "wind_gust_kph";
        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_mb";
        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 = "pressure_trend";
        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_Luftdrucktrend").State(daten);
 
        string word = "dewpoint_c";
        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);
leider füllen sich die entsprechenden Variablen nicht. Im Status stehen immer ??? und mehr nicht.

Könnt Ihr mir hier weiterhelfen?

Konfiguration:
- CCU 2
- CuxD in der aktuellen Version installiert
- über WebUI erstelltes Programm das alle 30 Minuten das obige Script abfragt

Bitte verzeiht mir falls ich mich an einem Punkt falsch ausgedrückt haben sollte oder Infos nun doppelt im Thread vorhanden sind.

Danke euch für die Infos.

tesso
Beiträge: 114
Registriert: 20.07.2014, 11:25

Re: Aktuelles Wetter über wunderground.com

Beitrag von tesso » 26.08.2015, 20:00

Hast du auch das Gerät CUX2801001 erstellt?

Manchmal hilft das komplette Lesen eines Threads ungemein.

Pharao50
Beiträge: 8
Registriert: 09.12.2012, 15:33

Re: Aktuelles Wetter über wunderground.com

Beitrag von Pharao50 » 26.08.2015, 21:47

Ja das Gerät ist angelegt. In der angelegten Fernbediedung ist auch unter dem Punkt KEY|CMD_SHORT der API Link hinterlegt worden

Rene_HM
Beiträge: 41
Registriert: 13.01.2013, 14:23

Re: Aktuelles Wetter über wunderground.com

Beitrag von Rene_HM » 15.10.2015, 20:29

Der Server von http://api.wunderground.com scheint down zu sein? oder bekommt ihr noch Wetterdaten?

Benutzeravatar
AndiN
Beiträge: 2621
Registriert: 10.06.2015, 08:54
Wohnort: Hennef
Hat sich bedankt: 10 Mal
Danksagung erhalten: 28 Mal

Re: Aktuelles Wetter über wunderground.com

Beitrag von AndiN » 16.10.2015, 07:41

War down. Hatte auch alle 5 Minuten eine Fehlermeldung im Log, weil die Daten nicht kamen. Aber jetzt läuft es wieder ;-)

Andi
Andi (Greenhorn)

Letzter Reboot: 17.03.24 => FW Update (Uptime:Rekord:153 Tage)
Systeminfos: Raspberry Pi3 Firmware: 3.75.6.20240316 142 Geräte
System angebunden: 3 Roomba 650 - Sprachausgabe via Home24 Media - Pocket Control
- Zentrale: Asus TF103 mit Home24 Tablet
Addons: Drucken 2.5 - HQ WebUI 2.5.9 - XML-API 1.22 - CUx-Daemon 2.9.3 - E-Mail 1.7.4 - hm_pdetect 1.11 - VPN cloudmatic
Diverse Links

Rene_HM
Beiträge: 41
Registriert: 13.01.2013, 14:23

Re: Aktuelles Wetter über wunderground.com

Beitrag von Rene_HM » 17.10.2015, 10:28

Ja, geht auch bei mir wieder...

fliegerx1
Beiträge: 92
Registriert: 31.05.2015, 22:26

Re: Aktuelles Wetter über wunderground.com

Beitrag von fliegerx1 » 29.11.2015, 23:13

Hallo zusammen,

habe mich dort angemeldet finde aber den Key nicht.
Kann mir einer dabei helfen?

Suche Wetter für Wuppertal Berglehne.

Wie ist der Link mit dem Key

Vielen Dank
Raspberry
Aktuelle Firmwareversion: 3.43.15.20190223

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“