Antworten
Okt 26, 2015 - 06:08
Ich weiss nicht wie du die daten von wunderground holst, aber ich zeige dir wie ich es mache an der ccu:
zuerst dieses script, dort steht welche variablen du in der ccu anlegen musst und von velchem typ.
Es gibt zwei werte welches die xml datei für icon zurückliefert, einmal icon und einmal icon_url
das mit icon_url finde ich komplizierter, weil icon genaudasselbe liefert nur ohne den ganzen kram für webseite
z.b liefert icon das:
icon_url liefert die ganze url mit .gif endung am ende
Unterschied am ganzen ist wenn du die 2 ergebnisse siehst, das icon ein einfaches wort partycloudy liefert ohne gif und ohne url
dieses ist für darstellung im neo als status viel einfacher...
so jetzt das script:!Stand 03.04.2014 http://homematic-forum.de/forum/viewt...
!zuerst folgende Systemvariablen anlegen
!Achtung: keine vergessen und exakte Schreibweise mit Drag&Drop
!Wetter_Station Zeichenkette
!Wetter_Aktualisierung Zeichenkette
!Wetter_Bedingungen Zeichenkette
!Wetter_Temperatur Zahl °C
!Wetter_Luftfeuchte Zahl %
!Wetter_Windbedingungen Zeichenkette
!Wetter_Windrichtung Zeichenkette
!Wetter_Windrichtg Zahl °
!Wetter_Windgeschwindigkeit Zahl km/h
!Wetter_Windboeen Zahl km/h
!Wetter_Luftdruck Zahl mb
!Wetter_Luftdrucktrend Zeichenkette
!Wetter_Taupunkt Zahl °C
!Wetter_UV Zeichenkette
!Wetter_Icon Zeichenkette
var url = "http://api.wunderground.com/api/f9641ab1988958bc/conditions/lang:DL/q/Germany/
Leer.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("Wetter_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("Wetter_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("Wetter_Bedingungen").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));
dom.GetObject("Wetter_Icon").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("Wetter_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("Wetter_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("Wetter_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("Wetter_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("Wetter_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("Wetter_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("Wetter_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("Wetter_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("Wetter_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("Wetter_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("Wetter_UV").State(zahl);
Nachdem du dieses script ausführst in der ccu werden alle angelegten variablen befüllt, so auch die variable Wetter_Icon
Für diese variable machst du dann eine statusanzeige (statusgrafik) im neo
Natürlich must du wissen was wunderground alles für grafiken liefert beim verschiedenen wetterbedingungen
Da du aber die url weisst für das wetter icon:
http://icons.wxug.com/i/c/k/nt_partlycloudy.gif
ist das kein problem, und icon liefert dasselbe ohne die .gif endung die du gar nicht brauchst, sondern fürs statusgrafiken .png endung
Ob du weisst wie das mit eigenen statusgrafiken geht weiss ich nicht aber kurz erklärt:
sagen wir mal das xml file liefert uns 3 verschiedene namen fürs icon
1. partlycloudy
2. sunny
3. cloudy
usw
jetzt legst du im neo eine grafik an und weist du der einen status für die variable Wetter_Icon
gehst du auf obige url fürs icon
http://icons.wxug.com/i/c/k/nt_partlycloudy.gif
öffnest im browser und so machst du für jede grafik
änderst nur den namen der grafik hinter /nt_
z.b nt_sunny
alle grafiken speicherst du in einem ordner, ich weiss nicht ob neo gif verarbeiten kann für statusanzeige, dann musst du mit einem programm die grafiken in png format abspeichern, oder noch besser es gibt so viele icons für wetter im web für verschiedene wetter zustandsnamen, holst du dir diese im png format und änderst nur die namen so um, wie underground seine icons nennt: cloudy, sunny, usw.
schau hier
http://www.binicki.de/flip2
falls dir die wetter grafiken gefallen kannst du sie so laden
http://binicki.de/flip2/images/weather/1.png
die zahl 1 änderst du von 1-44
Jetzt importierst du die grafiken im neo unter importieren status grafik
zuerst brauchst du erstmal eine für undefined und default zustand, das können egal welche sein und heissen undefined.png, default.png
alle andere nennst du state_cloudy.png, state_sunny.png usw. davor immer state_
deine wettergrafiken müssen nicht state_ heissen sondern diesen namen vergibst du beim importieren
am besten kannst du bei mediola nachsehen, habe ich in einem fb thread beschrieben:
https://www.facebook.com/mediola.haussteuerung/posts/911036425616391
dort steht auch das bild vom neo import für status grafiken....
viel spass
Okt 26, 2015 - 11:59
Okt 26, 2015 - 12:23
"steffen.krause" hat geschrieben:das wäre schön wenn mediola so etwas einbauen würde, einfach wie statusgrafiken eine webseite nach dem zustand einer variable. Aber das geht noch nicht, wäre sicher einfach einzubauen. Ich denke wenn, dann werden wir lange warten müssen oder auch nicht gruss
Da ich die verschiedenen Icons der Wetterzustände von wunderground.com noch nicht alle zusammen habe wollte ich die mir einfach über die URL direkt anzeigen lassen.
Jan 28, 2016 - 12:51
hallo - cooles script für das abgreifen der wetterdaten von wunderground.com inklusive der wechselnden grafiken. hast du eine idee wie man den sprung von tag auf nacht grafiken realisieren kann? hmmmm wenn ich mit meiner url die wetterdaten als *.xml abgreife steht bei mir immer nur der aktuelle zustand wie z.b.: clear, mostlycloudy, etc.. leider wird unter <icon> nie das präfix "nt_" wie z.b. nt_clear oder nt_mostlycloudy übermittelt.
unter <icon_url> hingegen wird zwischen tag und nacht beim filename der grafik unterschieden - nur leider nutzt die *.gif datei im neo nicht viel als statusgrafik.
hmmm... habt ihr eine idee wie man tag und nacht bei den wechselnden wettergrafiken hier realisieren kann?
Okt 28, 2016 - 15:52
ich bin neu in der Thematik CCU2 und Mediola. Ich bin gerade dabei mir die Wetterdaten von wounderground auf meinem TAB3 anzeigen zu llassen und hab nach Anleitung wie hier beschrieben mal alles so gemacht. Leider bekomme ich kein Wetterdaten und nun wollte ich fragen ob ich wie im Screenshoot zu sehen die variablen so richtig angelegt habe oder ob eine Variable pro Kanal hinterlegt werden muss.
Weiters werden in der CCU2 Fragezeichen angezeigt, ist das soweit OK oder solltren hier eigentlich schon Werte stehen ?
Bitte um Hilfe.
Okt 29, 2016 - 03:32
Wichtig ist dass du dich bei wunderground anmeldest und dein api key bekommst
https://www.wunderground.com/weather/...
wenn du dein api key hast dann musst du noch deine stadt finden und in der script zeile unten eintragen:
var url = "http://api.wunderground.com/api//conditions/lang:DL/q/Germany/Hierorthin.xml";
Diese url musst du dann im browser testen ob sie die werte für deine stadt liefert und funktioniert.Die Variablen musst du so anlegen wie hier beschrieben:
http://homematic-forum.de/forum/viewt...
Diese einfach in ccu anlegen mit dem richtigen namen ohne kanal bindung
wenn du sie angelegt hast, ein programm auf der ccu anlegen, dieses script in dann teil erstellen, und das programm einmal ausführen,
dann sollten deine variablen schon befüllt werden. Später kannst du in dem programm im wenn teil eine stündliche abfrage mit dem zeitmodul machen, so wird das script automatisch mit dem zeitmodul ausgeführt.
Wichtig ist auch das du ein cuxd gerät angelegt hast, als systemexec typ, auf der ccu,
die seriennummer wird im script hier eingetragen:
!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();
Gruss
Okt 29, 2016 - 04:40
Okt 29, 2016 - 13:41
Sodele,
hab alles nochmal von Anfang an eingerichtet.
1. API und XML gehen im Browser
2. Ein Cux-Dämon Gerät angelegt mit Exec (Fernbedienung 12 Tasten mit Control:Taster). Im Posteingang bestätigt.
2. Systemvariablen ohne dem Rufzeichen und ohne Kanalbindung angelegt und bei den "ZAHL" Werten z.B. bei der Temperatur -40 und 40 eingegebn, bei Windstärke und so 0 und 200, Bei Luftdruck 0 und 1500 jeweils bei min. und max. usw....
3. Das Skript von hier angelegt in einem Programm mit Zeitmodul.
und es werden keine Werte ausgegeben. Bei den "ZAHL" werten bleibt 0 oder 0.00 oder 0.000000 usw.
Jetzt weis ich nicht mehr weiter,...grrrr. Bitte um Unterstützung, Danke
Okt 30, 2016 - 03:02
Am besten ist es wenn du das script im script parser addon für ccu testest:
https://www.homematic-inside.de/softw...
zuerst das addon auf die ccu installieren
und dann mit:
http://ipccu/addons/script
aufrufst...dann das script oben einfügst, button ausführen drücken.Im unteren Teil sollten jetzt einige Zeilen rauskommen, wenn das script ohne fehler durchkommt, mussten auch die variablen befüllt werden.
Falls nicht, kannst das ergebnis aus dem unterem teil hier posten
Okt 30, 2016 - 06:05
{
"sessionId": "",
"STDOUT": "",
"url": "http:\/\/api.wunderground.com\/api\/xxxxxxxx\/conditions\/lang:DL\/q\/Germany\
/Leer.xml",
"word": "UV",
"anfangsbuchstabe": "S",
"wort_position": "372",
"word_position": "5",
"wetter_xml": "display_location \n\t\t full Leer, Germany \/full \n\t\t city Leer \/city \n\t\t state MU \/state \n\t\t state_name Germany \/state_name \n\t\t country DL \/country \n\t\t country_iso3166 DE \/country_iso3166 \n\t\t zip 00000 \/zip \n\t\t magic 15 \/magic \n\t\t wmo 10306 \/wmo \n\t\t latitude 52.11000061 \/latitude \n\t\t longitude 7.28999996 \/longitude \n\t\t elevation 74.1 \/elevation \n\t\t \/display_location \n\t\t observation_location \n\t\t full Grollenburg, Horstmar, NORDRHEIN-WESTFALEN \/full \n\t\t city Grollenburg, Horstmar \/city \n\t\t state NORDRHEIN-WESTFALEN \/state \n\t\t country DEUTSCHLAND \/country \n\t\t country_iso3166 DE \/country_iso3166 \n\t\t latitude 52.111923 \/latitude \n\t\t longitude 7.291460 \/longitude \n\t\t elevation 274 ft \/elevation \n\t\t \/observation_location \n\t\t estimated \n\t\t \/estimated \n\t\t station_id INORDRHE799 \/station_id \n\t\t observation_time Last Updated on Oktober 30, 09:55 CET \/observation_time \n\t\t observation_time_rfc822 Sun, 30 Oct 2016 09:55:00 +0100 \/observation_time_rfc822 \n\t\t observation_epoch 1477817700 \/observation_epoch \n\t\t local_time_rfc822 Sun, 30 Oct 2016 09:55:10 +0100 \/local_time_rfc822 \n\t\t local_epoch 1477817710 \/local_epoch \n\t\t local_tz_short CET \/local_tz_short \n\t\t local_tz_long Europe\/Berlin \/local_tz_long \n\t\t local_tz_offset +0100 \/local_tz_offset \n\t\t weather Wolkig \/weather \n\t\t temperature_string 49.5 F (9.7 C) \/temperature_string \n\t\t temp_f 49.5 \/temp_f \n\t\t temp_c 9.7 \/temp_c \n\t\t relative_humidity 84% \/relative_humidity \n\t\t wind_string Calm \/wind_string \n\t\t wind_dir Süd-Südost \/wind_dir \n\t\t wind_degrees 154 \/wind_degrees \n\t\t wind_mph 0.0 \/wind_mph \n\t\t wind_gust_mph 0 \/wind_gust_mph \n\t\t wind_kph 0.0 \/wind_kph \n\t\t wind_gust_kph 0 \/wind_gust_kph \n\t\t pressure_mb 1032 \/pressure_mb \n\t\t pressure_in 30.48 \/pressure_in \n\t\t pressure_trend + \/pressure_trend \n\t\t\n\t\t dewpoint_string 45 F (7 C) \/dewpoint_string \n\t\t dewpoint_f 45 \/dewpoint_f \n\t\t dewpoint_c 7 \/dewpoint_c \n\t\t\n\t\t\n\t\t heat_index_string NA \/heat_index_string \n\t\t heat_index_f NA \/heat_index_f \n\t\t heat_index_c NA \/heat_index_c \n\t\t\n\t\t\n\t\t windchill_string 50 F (10 C) \/windchill_string \n\t\t windchill_f 50 \/windchill_f \n\t\t windchill_c 10 \/windchill_c \n\t\t\n feelslike_string 50 F (10 C) \/feelslike_string \n feelslike_f 50 \/feelslike_f \n feelslike_c 10 \/feelslike_c \n\t\t visibility_mi 5.0 \/visibility_mi \n\t\t visibility_km 8.0 \/visibility_km \n\t\t solarradiation 85 \/solarradiation \n\t\t UV 0.0 \/UV \n\t\t precip_1hr_string 0.00 in ( 0 mm) \/precip_1hr_string \n\t\t precip_1hr_in 0.00 \/precip_1hr_in \n\t\t precip_1hr_metric 0 \/precip_1hr_metric \n\t\t precip_today_string 0.00 in (0 mm) \/precip_today_string \n\t\t precip_today_in 0.00 \/precip_today_in \n\t\t precip_today_metric 0 \/precip_today_metric \n\t\t\n\t\t\n\t\t\n\t\t icon mostlycloudy \/icon \n\t\t icon_url http:\/\/icons.wxug.com\/i\/c\/k\/mostlycloudy.gif \/icon_url \n\t\t forecast_url http:\/\/www.wunderground.com\/global\/stations\/10306.html \/forecast_url \n \n history_url http:\/\/www.wunderground.com\/weatherstation\/WXDailyHistory.asp?ID=INORDRHE79
9 \/history_url \n \n\t\t ob_url http:\/\/www.wunderground.com\/cgi-bin\/findweather\/getForecast?query=52.11192
3,7.291460 \/ob_url \n\t \/current_observation \n\n\t\t\n\t\n\t\n\t\n\t\n \n\t\n\t\n\t\t\n\t\n\n \n \n \n\t\n \n\t\n\t\n\t\n\t\n\t\n \n \n\n\n \n \n \n \n \/response",
"laenge": "3583",
"daten": "0.0",
"httpUserAgent": "",
"word_laenge": "2",
"zahl": "0.000000"
}
bei dir zeigt wetter_xml einfach nichts, so bedeutet dass die xml datei aus der url mit dem api nicht eingelesen wird...das kann einmal am cuxd liegen, das kannst du prüfen in dem du im script bei diesen zeilen ein ausrufezeichen einfügst:!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();
so!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();
und da drunter im script bei diesen zeilen: !string stdout;
!string stderr;
!system.Exec("wget -q -O - '"#url#"'", &stdout, &stderr);
!WriteLine(stdout);
!string wetter_xml = stdout;
so string stdout;
string stderr;
system.Exec("wget -q -O - '"#url#"'", &stdout, &stderr);
WriteLine(stdout);
string wetter_xml = stdout;
so musste der parser die wetter_xml ähnlich wie bei mir anzeigen
Okt 30, 2016 - 06:18
Und das die CCU2 nur Deutsches Wetter mag und keines von Österreich ? *hihihaha*
Schön langsam verzweifle ich und häng mir wieder ein normales Alkohol Thermometer auf :-)
Okt 30, 2016 - 06:25
!Stand 03.04.2014 http://homematic-forum.de/forum/viewt...
!zuerst folgende Systemvariablen anlegen
!Achtung: keine vergessen und exakte Schreibweise mit Drag&Drop
!Wetter_Station Zeichenkette
!Wetter_Aktualisierung Zeichenkette
!Wetter_Bedingungen Zeichenkette
!Wetter_Temperatur Zahl °C
!Wetter_Luftfeuchte Zahl %
!Wetter_Windbedingungen Zeichenkette
!Wetter_Windrichtung Zeichenkette
!Wetter_Windrichtg Zahl °
!Wetter_Windgeschwindigkeit Zahl km/h
!Wetter_Windboeen Zahl km/h
!Wetter_Luftdruck Zahl mb
!Wetter_Luftdrucktrend Zeichenkette
!Wetter_Taupunkt Zahl °C
!Wetter_UV Zeichenkette
var url = "http://api.wunderground.com/api/xxxxxxxx/conditions/lang:DL/q/Austria/Perg.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("Wetter_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("Wetter_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("Wetter_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("Wetter_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("Wetter_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("Wetter_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("Wetter_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("Wetter_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("Wetter_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("Wetter_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("Wetter_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("Wetter_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("Wetter_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("Wetter_UV").State(zahl);
also bei mir liefer es die daten für deine stadt
Okt 30, 2016 - 18:42
Von
Hallo Zdenko33
http://www.binicki.de/flip2
wie kann ich sowas machen mit meinem Stadt
Von
Hallo
hier kannst du darüber lesen:
http://www.baldwhiteguy.co.nz/technical/index_files/jdigiclock.html
und hier downloaden
http://www.baldwhiteguy.co.nz/jdigiclock/jdigiclock.zip
brauchst einen eigenen webserver
Von
Hallo..
Zdenko33 schick mir bitte deine E-Mail Adresse..
Mit freundlichen Grüßen
Andreas
Von
Hallo Zdenko33....
Wie mach ich die ZIP datei auf meine homepage,wo kommen die datei.
ich habe sowas nicht gemacht.
danke für deine Hilfe,und sorry für mein Deutsch.
Mit freundlichen Grüßen
Andreas
Neuen Kommentar hinzufügen