Wunderground Wetter mit einfachem HM-Skript holen
Moderator: Co-Administratoren
-
- Beiträge: 297
- Registriert: 01.05.2013, 16:20
- System: CCU und Access Point
- Hat sich bedankt: 1 Mal
Re: Wunderground Wetter mit einfachem HM-Skript holen
@Fonzo,
danke erst einmal ...
ein Widget kann man sich als als "Bild" oder "Script" generieren lassen. Wenn ich mir das als "Bild" generieren lasse und in Neo in eine Webseite als URL String importiere, dann bekomme ich den Wetter Forecast wie gewünscht angezeigt.
Dann habe ich mir das Widget als Code generieren lassen und stand auf dem Schlauch, was und wo ich damit etwas anfangen kann. Ich hatte gehofft, dass ich damit wie bei OpenWeatherMap einen XML String erhalten kann, den ich per Script zerlege, die einzelnen Werte als Sysvar's ablegen und in Neo anzeigen lassen kann. Das war meine Idee.
Meine Frage ist, was kann ich mit Widget Code in Neo anfangen ?
Ich habe gerade noch eine Doku und api.daswetter.com gefunden. Muss mir das mal anschauen.
danke erst einmal ...
ein Widget kann man sich als als "Bild" oder "Script" generieren lassen. Wenn ich mir das als "Bild" generieren lasse und in Neo in eine Webseite als URL String importiere, dann bekomme ich den Wetter Forecast wie gewünscht angezeigt.
Dann habe ich mir das Widget als Code generieren lassen und stand auf dem Schlauch, was und wo ich damit etwas anfangen kann. Ich hatte gehofft, dass ich damit wie bei OpenWeatherMap einen XML String erhalten kann, den ich per Script zerlege, die einzelnen Werte als Sysvar's ablegen und in Neo anzeigen lassen kann. Das war meine Idee.
Meine Frage ist, was kann ich mit Widget Code in Neo anfangen ?
Ich habe gerade noch eine Doku und api.daswetter.com gefunden. Muss mir das mal anschauen.
-
- Beiträge: 7693
- Registriert: 22.05.2012, 08:40
- System: CCU
- Hat sich bedankt: 26 Mal
- Danksagung erhalten: 603 Mal
Re: Wunderground Wetter mit einfachem HM-Skript holen
Ein Bild ist statisch und verändert sich nicht, ein Widget bzw. der Code erzeugt eine HTML Seite. Daher hängt es davon ab was das Widget genau an Funktion anbietet, aber mache Widgets sind dynamisch d.h. Du kannst durch klicken auf das Widget auch den angezeigten Inhalt verändern. Was jetzt speziell dieses Widget zur Verfügung stellt weis ich selber nicht, da ich es nicht nutzte.
Wenn Du einzelne Werte wünscht, dann musst Du diese wie gesagt über ein NEO Plugin einbinden, dann kannst Du diese dann auch frei positionieren und in der Größe anpassen. Dazu kannst Du entweder ein System mit NEO Plugin wählen, das Dir so was komplett als Gerät in NEO zur Verfügung stellt dann musst Du auch selber nichts mehr schreiben und programmieren sondern lediglich das Gerät importieren. Wenn Du das mit einer CCU alleine lösen willst, musst Du dann auf der CCU die gewünschten Werte in Systemvariablen ablegen durch ein Homematic Skript. Eine andere Möglichkeit wäre noch mit Javascript das auszulesen und in Variablen des NEO Servers abzulegen, insofern eine CCU3 benutzt wird, auch diese Variablen können dann einzeln im NEO Creator angezeigt und positioniert werden.
Welchen Weg man letztlich wählt, hängt eben davon ab wie viel Aufwand man betreiben will, was für Systeme man zusammen mit NEO nutzt bzw. mit was man sich am besten auskennt um solche Dinge zu lösen.
- axelb
- Beiträge: 30
- Registriert: 04.02.2017, 22:23
- System: CCU und Access Point
- Hat sich bedankt: 7 Mal
- Danksagung erhalten: 2 Mal
Re: Wunderground Wetter mit einfachem HM-Skript holen
Ich lese hier immer was von "Widgets" und anderen Dingen, aber eigentlich interessiert es mich, wie ich meine von der VENTUS W830 generierten Informationen in meiner CCU3 auswerten und verarbeiten kann.
Es wurde hier in diesem umfangreichen Thread auch geschrieben, dass es von wunderground (zu der die VENTUS ja offensichtlich bisher alleinig die Daten liefert) keine APIs mehr geben soll.
Was ich dabei nicht verstehe ist, weshalb ich dann nach wie vor einen API-Code bei wunderground bekomme.
Bevor ich mich jetzt an die Implementierung irgenwelcher Scripte mache folgende Fragen:
1.Kann ich nun mit dem angebotenen API-Code meine gelieferten Daten bei wunderground abfragen oder nicht?
2.Welche anderen Möglichkeiten bietet mir die HomeMatic an meine von der W830 gelieferten IST-Daten heranzukommen?
CU, Axel
Es wurde hier in diesem umfangreichen Thread auch geschrieben, dass es von wunderground (zu der die VENTUS ja offensichtlich bisher alleinig die Daten liefert) keine APIs mehr geben soll.
Was ich dabei nicht verstehe ist, weshalb ich dann nach wie vor einen API-Code bei wunderground bekomme.
Bevor ich mich jetzt an die Implementierung irgenwelcher Scripte mache folgende Fragen:
1.Kann ich nun mit dem angebotenen API-Code meine gelieferten Daten bei wunderground abfragen oder nicht?
2.Welche anderen Möglichkeiten bietet mir die HomeMatic an meine von der W830 gelieferten IST-Daten heranzukommen?
CU, Axel
-
- Beiträge: 15474
- Registriert: 08.05.2013, 23:33
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Nordwürttemberg
- Hat sich bedankt: 698 Mal
- Danksagung erhalten: 1747 Mal
Re: Wunderground Wetter mit einfachem HM-Skript holen
Ich setze seit einiger Zeit diese hier bereits im Forum vorgestellte Lösung bei mir ein. Sie arbeitet stabil und völlig unauffällig im Hintergrund. Die Station schreibt selbstätig ihre Daten über den gestarteten Serverdienst in die CCU. Kein zyklisches Script muss dabei laufen und keine externen Daten abgerufen werden.
Gruß Xel66
-------------------------------------------------------------------------------------------
617 Kanäle in 166 Geräten und 242 CUxD-Kanäle in 45 CUxD-Geräten:
366 Programme, 357 Systemvariablen und 209 Direktverknüpfungen,
RaspberryMatic Version: 3.75.7.20240420 (rpi3) + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch, Logging von Programmläufen
617 Kanäle in 166 Geräten und 242 CUxD-Kanäle in 45 CUxD-Geräten:
366 Programme, 357 Systemvariablen und 209 Direktverknüpfungen,
RaspberryMatic Version: 3.75.7.20240420 (rpi3) + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch, Logging von Programmläufen
-
- Beiträge: 261
- Registriert: 15.01.2011, 14:40
- System: CCU und Access Point
- Wohnort: Waldheim / Sachsen
- Hat sich bedankt: 30 Mal
Re: Wunderground Wetter mit einfachem HM-Skript holen
Hi Seven1,seven1 hat geschrieben: ↑26.05.2020, 14:10Inzwischen bin ich von der CCU2 auf Raspberrymatic ungestiegen. Seit dem läuft HVL auf Anhieb. Das schreiben irgendwelcher Scripte war nicht mehr erforderlich. Die passenden Systemvariablen werden automatisch erzeugt so dass der Steuerung der Aktoren nichts mehr im Wege stand.
schön das HVL mit Weather Underground nun auch bei dir läuft.
Welche Wettersensoren werden bei dir in Homematic angezeigt?
Bei mir nur Temperatur, Luftfeuchte und Regenmenge die andren Sensoren wie Wind, Helligkeit, UV usw. werden nicht angezeigt.
Wie ist das bei Dir?
Danke!
Zentrale: Charly RaspberryMatic (Pi4), Funk-Schaltaktor, 4-fach, Funk-Rollladenaktoren für Markenschalter, 8-Kanal-Sendemodul, E-Paper-Display, Tür-/Fensterkontakte, Funk-Türschlossantrieb KeyMatic HM-Sec-Key, Heizkörperthermostat HmIP-eTRV-2, Wandthermostate HmIP-WTH-2, HmIP-FALMOT-C12, HmIP-PSM-2, HmIP-FSM, HmIP-ESI-IEC, HmIP-FCI6, HmIP-PCBS2
Re: Wunderground Wetter mit einfachem HM-Skript holen
Ich habe auch das gleiche Problem, bei mir werden auch nur Temperatur, Rel. Luftfeuchtigkeit, Regenmenge, Windgeschwindigkeit. Aber meine Wetterstation "Conrad HP1001 V1.1.3" liefert nach "Weather Underground" folgen Daten:
Temperatur/Taupunkt/Feuchtigkeit/Wind/Geschwindigkeit/Böe/Druck/Niederschlag. Bewertung./Niederschlag. Accum./UV/Solar
Habe auch auf meine HomeMatic CCU/RaspberryMatic die "hvl-raspb-0.0.10" "KS550 Wunderground" installiert.
Auch der Wert der Regenmenge des Vortages ist auch falsch, er zeigt 9666.00 mm an.
Was kann ich tun
Temperatur/Taupunkt/Feuchtigkeit/Wind/Geschwindigkeit/Böe/Druck/Niederschlag. Bewertung./Niederschlag. Accum./UV/Solar
Habe auch auf meine HomeMatic CCU/RaspberryMatic die "hvl-raspb-0.0.10" "KS550 Wunderground" installiert.
Auch der Wert der Regenmenge des Vortages ist auch falsch, er zeigt 9666.00 mm an.
Was kann ich tun
-
- Beiträge: 261
- Registriert: 15.01.2011, 14:40
- System: CCU und Access Point
- Wohnort: Waldheim / Sachsen
- Hat sich bedankt: 30 Mal
Re: Wunderground Wetter mit einfachem HM-Skript holen
Hallo,Ansgar hat geschrieben: ↑28.07.2020, 20:12Ich habe auch das gleiche Problem, bei mir werden auch nur Temperatur, Rel. Luftfeuchtigkeit, Regenmenge, Windgeschwindigkeit. Aber meine Wetterstation "Conrad HP1001 V1.1.3" liefert nach "Weather Underground" folgen Daten:
Temperatur/Taupunkt/Feuchtigkeit/Wind/Geschwindigkeit/Böe/Druck/Niederschlag. Bewertung./Niederschlag. Accum./UV/Solar
Habe auch auf meine HomeMatic CCU/RaspberryMatic die "hvl-raspb-0.0.10" "KS550 Wunderground" installiert.
Auch der Wert der Regenmenge des Vortages ist auch falsch, er zeigt 9666.00 mm an.
Was kann ich tun
habe inzwischen das HVL aufgegeben und mache es jetzt so:
https://homematic.simdorn.net/wetterdat ... round-com/
Das funktioniert jetzt auch noch nur etwas modifiziert, und es funktionieren alle Sensoren prima!
Wenn du das probieren möchtest schicke ich dir meinen Script.
Zentrale: Charly RaspberryMatic (Pi4), Funk-Schaltaktor, 4-fach, Funk-Rollladenaktoren für Markenschalter, 8-Kanal-Sendemodul, E-Paper-Display, Tür-/Fensterkontakte, Funk-Türschlossantrieb KeyMatic HM-Sec-Key, Heizkörperthermostat HmIP-eTRV-2, Wandthermostate HmIP-WTH-2, HmIP-FALMOT-C12, HmIP-PSM-2, HmIP-FSM, HmIP-ESI-IEC, HmIP-FCI6, HmIP-PCBS2
-
- Beiträge: 5
- Registriert: 09.12.2013, 20:11
Re: Wunderground Wetter mit einfachem HM-Skript holen
hallo allerseits.
das HVL plugin liefert mir leider nicht genug Werte. ich habe mich daher nochmal nach einer Möglichkeit umgesehen, selber die Daten von Wunderground abzurufen. Auf der Seite von Erhard Simdorn bin ich in den Kommentaren auf ein Skript gestossen, das die neue Adresse von wunderground un die neue API beruecksichtigt.
ich habe das Skript dann ein wenig angepasst (Wetterstation umbenannt, API eingetragen, Anfuehrungszeichen umgeschrieben). Das Skript läuft nun ohne Fehler der eingetragen link auf weather.com funktioniert und bringt mir meine Werte, die Systemvariablen werden auch befuellt (zumindest laut Uhrzeit), jedoch sind alle Werte "0".
Hat vielleicht jemand eine Idee, woran das liegen kann ? Vielen Dank schonmal im Voraus.
Achim
! Wetterdaten von wunderground.com holen %u2013 eigene Wetterstation erforderlich, die Daten an wunderground sendet
!Stand 14.04.2019
!zuerst folgende Systemvariablen anlegen
!Achtung: keine vergessen und exakte Schreibweise mit Copy & Paste
!W_Station Zeichenkette
!W_Aktualisierung Zeichenkette
!W_Temperatur Zahl °C
!W_Luftfeuchte Zahl %
!W_Windrichtg Zahl °
!W_Windgeschwindigkeit Zahl km/h
!W_Windboeen Zahl km/h
!W_Luftdruck Zahl mbar
!W_Taupunkt Zahl °C
!W_UV Zahl
!W_Solar Zahl Watt
!W_Regenrate Zahl mm/h
!W_Regensumme Zahl mm am Tag
!W_Hitzeindex Zahl °C
!W_Temp_gefuehlt Zahl °C
!Aussentemperatur Zeichenkette (Erweiterung E.Simdorn)
!Luftfeuchtigkeit Zeichenkette (Erweiterung E.Simdorn)
! Weiter Ergaenzungen durch E.Simdorn
! Temperatur und Luftfeuchtigkeit jeweils in einen Text-String umwandeln und formatieren
! Temperatur und Luftfeuchtigkeit jeweils in einen Text-String umwandeln und formatieren
! Wetter api: stationID=Deine Wetterstation, apiKey=Dein apiKey der Wetterstation, units: m (metrisch) oder e(englisch), format: xml (gibt es auch als json)
var url ="https://api.weather.com/v2/pws/observat ... y=meineAPI";
!Abfrage mit CUxD
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget %u2013no-check-certificate -q -O %u2013 %u201A"#url#"%u201A");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string wetter_xml = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
!Daten mit Suchworten aus XML-File ausfiltern:
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));
daten = daten;
dom.GetObject("W_Station").State(daten);
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 = "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);
! *****
! Temperatur real in string umwandeln und anschliessend den Dezimalpunkt gegen ein Komma austauschen
string TextTemp = zahl.ToString(2);
integer TPunkt = TextTemp.Find(".");
string TextTemp1 = TextTemp.Substr(0, TPunkt);
TextTemp1 = TextTemp1 # ","# TextTemp.Substr(TPunkt +1, 2) # " Grad Celsius";
TextTemp = TextTemp1;
dom.GetObject('Aussentemperatur').Variable(TextTemp);
WriteLine(dom.GetObject('Aussentemperatur').Variable());
! *****
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 TextHumi = zahl.ToString(1);
integer TPunkt = TextHumi.Find(".");
string TextHumi1 = TextHumi.Substr(0, TPunkt);
TextHumi1 = TextHumi1 # ","# TextHumi.Substr(TPunkt +1, 2) # " %";
TextHumi = TextHumi1;
dom.GetObject('Luftfeuchtigkeit').Variable(TextHumi);
WriteLine(dom.GetObject('Luftfeuchtigkeit').Variable());
! *****
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));
if (daten == -9999) {
daten = "0";
}
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 = "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 = "windChill";
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_Temp_gefuehlt").State(zahl);
string word = "heatIndex";
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_Hitzeindex").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));
integer zahl = daten.ToFloat();
dom.GetObject("W_UV").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));
real zahl = daten.ToFloat();
dom.GetObject("W_Regenrate").State(zahl);
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));
real zahl = daten.ToFloat();
dom.GetObject("W_Regensumme").State(zahl);
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));
real zahl = daten.ToFloat();
dom.GetObject("W_Solar").State(zahl);
das HVL plugin liefert mir leider nicht genug Werte. ich habe mich daher nochmal nach einer Möglichkeit umgesehen, selber die Daten von Wunderground abzurufen. Auf der Seite von Erhard Simdorn bin ich in den Kommentaren auf ein Skript gestossen, das die neue Adresse von wunderground un die neue API beruecksichtigt.
ich habe das Skript dann ein wenig angepasst (Wetterstation umbenannt, API eingetragen, Anfuehrungszeichen umgeschrieben). Das Skript läuft nun ohne Fehler der eingetragen link auf weather.com funktioniert und bringt mir meine Werte, die Systemvariablen werden auch befuellt (zumindest laut Uhrzeit), jedoch sind alle Werte "0".
Hat vielleicht jemand eine Idee, woran das liegen kann ? Vielen Dank schonmal im Voraus.
Achim
! Wetterdaten von wunderground.com holen %u2013 eigene Wetterstation erforderlich, die Daten an wunderground sendet
!Stand 14.04.2019
!zuerst folgende Systemvariablen anlegen
!Achtung: keine vergessen und exakte Schreibweise mit Copy & Paste
!W_Station Zeichenkette
!W_Aktualisierung Zeichenkette
!W_Temperatur Zahl °C
!W_Luftfeuchte Zahl %
!W_Windrichtg Zahl °
!W_Windgeschwindigkeit Zahl km/h
!W_Windboeen Zahl km/h
!W_Luftdruck Zahl mbar
!W_Taupunkt Zahl °C
!W_UV Zahl
!W_Solar Zahl Watt
!W_Regenrate Zahl mm/h
!W_Regensumme Zahl mm am Tag
!W_Hitzeindex Zahl °C
!W_Temp_gefuehlt Zahl °C
!Aussentemperatur Zeichenkette (Erweiterung E.Simdorn)
!Luftfeuchtigkeit Zeichenkette (Erweiterung E.Simdorn)
! Weiter Ergaenzungen durch E.Simdorn
! Temperatur und Luftfeuchtigkeit jeweils in einen Text-String umwandeln und formatieren
! Temperatur und Luftfeuchtigkeit jeweils in einen Text-String umwandeln und formatieren
! Wetter api: stationID=Deine Wetterstation, apiKey=Dein apiKey der Wetterstation, units: m (metrisch) oder e(englisch), format: xml (gibt es auch als json)
var url ="https://api.weather.com/v2/pws/observat ... y=meineAPI";
!Abfrage mit CUxD
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget %u2013no-check-certificate -q -O %u2013 %u201A"#url#"%u201A");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string wetter_xml = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
!Daten mit Suchworten aus XML-File ausfiltern:
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));
daten = daten;
dom.GetObject("W_Station").State(daten);
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 = "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);
! *****
! Temperatur real in string umwandeln und anschliessend den Dezimalpunkt gegen ein Komma austauschen
string TextTemp = zahl.ToString(2);
integer TPunkt = TextTemp.Find(".");
string TextTemp1 = TextTemp.Substr(0, TPunkt);
TextTemp1 = TextTemp1 # ","# TextTemp.Substr(TPunkt +1, 2) # " Grad Celsius";
TextTemp = TextTemp1;
dom.GetObject('Aussentemperatur').Variable(TextTemp);
WriteLine(dom.GetObject('Aussentemperatur').Variable());
! *****
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 TextHumi = zahl.ToString(1);
integer TPunkt = TextHumi.Find(".");
string TextHumi1 = TextHumi.Substr(0, TPunkt);
TextHumi1 = TextHumi1 # ","# TextHumi.Substr(TPunkt +1, 2) # " %";
TextHumi = TextHumi1;
dom.GetObject('Luftfeuchtigkeit').Variable(TextHumi);
WriteLine(dom.GetObject('Luftfeuchtigkeit').Variable());
! *****
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));
if (daten == -9999) {
daten = "0";
}
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 = "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 = "windChill";
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_Temp_gefuehlt").State(zahl);
string word = "heatIndex";
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_Hitzeindex").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));
integer zahl = daten.ToFloat();
dom.GetObject("W_UV").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));
real zahl = daten.ToFloat();
dom.GetObject("W_Regenrate").State(zahl);
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));
real zahl = daten.ToFloat();
dom.GetObject("W_Regensumme").State(zahl);
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));
real zahl = daten.ToFloat();
dom.GetObject("W_Solar").State(zahl);
- MichaelN
- Beiträge: 11302
- Registriert: 27.04.2020, 10:34
- System: CCU
- Hat sich bedankt: 789 Mal
- Danksagung erhalten: 1946 Mal
Re: Wunderground Wetter mit einfachem HM-Skript holen
Wenn du sicher bist, dass die SV beschrieben werden und den Wert 0 enthalten, dann ist der logische Schluß, das du null rein schreibst.
Dann stimmt mit deiner Datenabfrage wohl was nicht.
Oder deine Analyse ist nicht sauber...
Tipp Schritt für Schritt debuggen
Dann stimmt mit deiner Datenabfrage wohl was nicht.
Oder deine Analyse ist nicht sauber...
Tipp Schritt für Schritt debuggen
LG, Michael.
Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.
Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++
Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.
Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++
-
- Beiträge: 5
- Registriert: 09.12.2013, 20:11
Re: Wunderground Wetter mit einfachem HM-Skript holen
Was die SV angeht, so vermute ich, dass sie beschrieben werden. Zumindest werden sie zur gleichen Zeit beschrieben, wie das Programm mit dem Skript gestartet wird.
Gibt es ein Tool, was das Debuggen für einen skript- Anfänger einfacher macht?
Vielen Dank
Gibt es ein Tool, was das Debuggen für einen skript- Anfänger einfacher macht?
Vielen Dank