WETTER Vorhersage mit Wunderground

Haussteuerung mittels mediola

Moderator: Co-Administratoren

djangp
Beiträge: 166
Registriert: 11.09.2014, 10:43
Wohnort: Bayern
Hat sich bedankt: 3 Mal

WETTER Vorhersage mit Wunderground

Beitrag von djangp » 04.05.2017, 19:15

Hallo, ich möchte die Daten von Wunderground Vorhersage abfragen und die Werte dann visualisieren.
Hier habe ich ein Script gefunden, allerdings werden mir die Systemvariablen der CCU nicht mit Werten gefüllt.
Der Link selber ist funktionsfähig und liefert Werte. (wenn man die X= API und Y=ORT durch die richtigen Werte ersetzt)

Code: Alles auswählen

!Folgende Systemvariablen anlegen:
!WetterFct_Tag                        Zeichenkette -> Forecast fuer welchen Wochentag
!WetterFct_Condition               Zeichenkette -> Forecast Wetterbedingung
!WetterFct_Icon                       Zeichenkette -> Forecast URL zu Pictogramm (zeigt Bild im Protokoll / Systemvariablen)
!WetterFct_Text                       Zeichenkette -> Forecast Text (max 200 Zeichen)
!WetterFct_TempMax               Zahl         °C -> Forecast Maximale Temperatur
!WetterFct_Pop                        Zahl          % -> Forecast Regenwahrscheinlichkeit (probability of precipation)
!WetterFct_Zeit                       Zeichenkette -> Forecast erstellt um diese Zeit

var url = "http://api.wunderground.com/api/XXXXAPIXXX/forecast/lang:DL/q/pws:XXXORTXXX.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();

!Beim XML-File den ueberfluessigen Header entfernen
integer laenge = wetter_xml.Length();
integer wort_position = wetter_xml.Find("forecast");
wetter_xml = wetter_xml.Substr(wort_position, (laenge - wort_position));

!Daten mit Suchworten aus XML-File ausfiltern:
string word = "title";
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("WetterFct_Tag").State(daten);

string word = "icon";
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));
string daten2 = daten;
dom.GetObject("WetterFct_Condition").State(daten);

string word = "icon_url";
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 = "</div><img src=\"" + daten + "\" alt=\"" + daten2 + "\">";
dom.GetObject("WetterFct_Icon").State(daten);

string word = "fcttext_metric";
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string daten = wetter_xml.Substr((word_position + word_laenge + 1 + 9), 200);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position-5));
dom.GetObject("WetterFct_Text").State(daten);

string word = "celsius";
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("WetterFct_TempMax").State(zahl);

string word = "pop";
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("WetterFct_Pop").State(zahl);

string word = "date";
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));
string daten2 = daten;
dom.GetObject("WetterFct_Zeit").State(daten);
Zuletzt geändert von djangp am 04.05.2017, 21:41, insgesamt 1-mal geändert.
RaspberryMatic auf RPi 3 - AIO Creator NEO

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

Re: WETTER Vorhersage mit Wunderground

Beitrag von dondaik » 04.05.2017, 19:22

wann und wie werden die wert "abgeholt"... die SV sind alle in der richtigen schreibweise angelegt ?
da ist auch was mit dem minimalen abholabstand ( ggf mal bei www.stall.biz ) lesen .
Zuletzt geändert von dondaik am 04.05.2017, 19:38, insgesamt 1-mal geändert.
-------
!!! 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.

djangp
Beiträge: 166
Registriert: 11.09.2014, 10:43
Wohnort: Bayern
Hat sich bedankt: 3 Mal

Re: WETTER Vorhersage mit Wunderground

Beitrag von djangp » 04.05.2017, 19:26

Hallo vielen Dank für die schnelle Rückmeldung.
Die SV sind alle so angelegt, wie so im Script oben geschrieben sind (mit paste & copy) und ohne ! Am Anfang :)
z.B: WetterFct_Tag

Und abgefragt werden diese im 10 Minuten Takt über einen CuxD Timer. (Siehe Sceenshot)
Dateianhänge
Screenshot.png
RaspberryMatic auf RPi 3 - AIO Creator NEO

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

Re: WETTER Vorhersage mit Wunderground

Beitrag von dondaik » 04.05.2017, 19:39

mein 15 min ist der min. wert .. rest siehe etwas höher. ;-)
-------
!!! 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.

djangp
Beiträge: 166
Registriert: 11.09.2014, 10:43
Wohnort: Bayern
Hat sich bedankt: 3 Mal

Re: WETTER Vorhersage mit Wunderground

Beitrag von djangp » 04.05.2017, 19:43

OK das mit den 15 Min. ist ja kein Thema kann ich ja einen 15 Min. CuxD -Timer erstellen.
Allerdings bisher sind die SV noch nie mit Werten gefüllt worden?
Was meinst du mit "rest siehe etwas höher"
RaspberryMatic auf RPi 3 - AIO Creator NEO

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

Re: WETTER Vorhersage mit Wunderground

Beitrag von dondaik » 04.05.2017, 20:43

in der antwort davor habe ich gesagt wo es zu dem programm noch input gibt. lasse erst einmal cuxd weg und benutze den "normalen" timer. wenn die zugangsdaten und der ort ok sind funktioniert das prg eigentlich sofort.. ( wenigstens vor x-tagen hier und seitdem läuft es auf ccu1 / 2 ohne unterbrechung...
ansonsten der hinweis auf iobroker :-)

nachgesehen der ort ist ".... ......./Germany/stadt.xml"
und das gerät
string wetter_xml = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
ist auch angelegt?
-------
!!! 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.

djangp
Beiträge: 166
Registriert: 11.09.2014, 10:43
Wohnort: Bayern
Hat sich bedankt: 3 Mal

Re: WETTER Vorhersage mit Wunderground

Beitrag von djangp » 04.05.2017, 21:24

Hi danke dir für die Info.
Ja ich habe mit beiden Timern schon probiert. Auch mit einer virtuellen Taste (manuell)
Es werden keine Systemvariablen gefüllt - wenn ich allerdings die URL in den Browser eingebe, werden
mir die Daten im Browser angezeigt, so das die API und der Ort eigentlich stimmen müssten?

Was meinst du mit Gerät -- in CuxD?
Muss ich explizit noch ein Gerät mit dem Namen "wetter" anlegen? Welche Art (NR) von Gerät muss das sein?
Eine CuxD CUX2801001:1 gibt es ja.
RaspberryMatic auf RPi 3 - AIO Creator NEO

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

Re: WETTER Vorhersage mit Wunderground

Beitrag von dondaik » 04.05.2017, 22:03

nein, ich hatte nur das exec-gerät angelegt ... ggf hat ja deines eine andere ID...
was passiert denn wenn du das skript testes ?
blöde frage: nicht das zb : "!WetterFct_Zeit" angelegt wurde ;-) -- > WetterFct_Zeit
-------
!!! 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.

djangp
Beiträge: 166
Registriert: 11.09.2014, 10:43
Wohnort: Bayern
Hat sich bedankt: 3 Mal

Re: WETTER Vorhersage mit Wunderground

Beitrag von djangp » 05.05.2017, 07:33

Ja ich habe verschiedene CuxD Geräte.
Habe jetzt aber mal genau diese ID genommen die noch frei war.

Meiner Meinung passiert soweit nichts - zumindest sehe ich in den Variablen keinerlei Änderung.
Dateianhänge
screenshot3.png
RaspberryMatic auf RPi 3 - AIO Creator NEO

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

Re: WETTER Vorhersage mit Wunderground

Beitrag von dondaik » 05.05.2017, 07:59

scheixxxx.
sehe aber jetzt auch das es keine original ccu2 ist ;-) .... teste ggf einfach mal das prg direkt von stall.biz was dann ist.
wie gesagt hier rannte es sofort los...nur meine url sieht so aus:

var url = "http://api.wunderground.com/api/xxxxxxx ... y/yyyy.xml";
-------
!!! 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.

Antworten

Zurück zu „mediola“