Wunderground Wetter mit einfachem HM-Skript holen

User stellen ihre Haussteuerung vor

Moderator: Co-Administratoren

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

Re: Wunderground Wetter mit einfachem HM-Skript holen

Beitrag von dondaik » 12.05.2019, 08:48

:-) :-) ... im iobroker forum könnte dir geholfen werden .... da wurde eine lösung erarbeitet. wetterdaten aus dem internet sind ja nicht das grundanliegen der ccu :mrgreen:
-------
!!! 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.

LibertyX
Beiträge: 767
Registriert: 10.11.2012, 19:47
System: Alternative CCU (auf Basis OCCU)
Wohnort: RP
Hat sich bedankt: 1 Mal
Danksagung erhalten: 19 Mal

Re: Wunderground Wetter mit einfachem HM-Skript holen

Beitrag von LibertyX » 12.05.2019, 12:36

Jap der Adapter nutzt einen generellen API Key, was auch gut funktioniert, allerdings braucht es dafür einen ioBroker.
RaspberryMatic (3.71.12.20231020) @RPI3 | 218 Kanäle in 53 Geräten und 72 CUxD-Kanäle in 8 CUxD-Geräten (2.11) | iobroker.pro - CCU-Historian (3.4.0)

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

Re: Wunderground Wetter mit einfachem HM-Skript holen

Beitrag von dondaik » 12.05.2019, 22:12

den braucht man füh oder später eh :-)
( aber nicht auf einem PI aufgesetzt )
-------
!!! 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.

Meisternico
Beiträge: 22
Registriert: 05.01.2016, 19:06
Danksagung erhalten: 1 Mal

Re: Wunderground Wetter mit einfachem HM-Skript holen

Beitrag von Meisternico » 20.05.2019, 15:31

Ich nutze seit der Einstellung von Wunderground, neu das Darksky Script von Toni. Funktioniert soweit auch ganz gut, nur hat jemand noch einen Ansatz wie ich die VAriablen nicht als Zeichenkette sondern als Zahl abspeichern kann. Ich arbeite bei dem programm für meine Bewässerung gerne mit kleiner und größer als, vor allem beim Niederschlag und der Niederschlagswahrscheinlichkeit. Das funktioniert soweit ich es versucht habe, nur mit einer Systemvariable als Zahl.

loewe.242
Beiträge: 23
Registriert: 01.08.2018, 10:59

Re: Wunderground Wetter mit einfachem HM-Skript holen

Beitrag von loewe.242 » 22.05.2019, 21:04

Hallo, leider läuft das Skript auf der RaspberryMatic nicht.

Vielleicht kann mir jemand helfen?

Vielen Dank Alex

Fehler lautet:

Error 1 at row 1 col 8 near ^bin/tclsh
load tclrega.so

# viewtopic.php?f=18
Parse following code failed:
#!/bin/tclsh
load tclrega.so

# viewtopic.php?f=18&t=17209&start=580
# Ordner erstellen und Script ablegen unter /usr/local/addons/wetter/
# Read weather data Kuestrow
#
# Update der Daten auf DarkSky erfolgt minuetlich
# Die Abfrage auf der CCU sollte etwa alle vier Minuten erfolgen
# Jede Abfrage belastet die CCU ca. 20 Sekunden (gemessen auf einer CCU3)

# Variablen auf der CCU erstellen:
# dsWetterBedingungen Zeichenkette summary
# dsTemperatur Zahl (°C) temperature
# dsWindgeschwindigkeit Zahl (km/h) windSpeed
# dsWindboeen Zahl (km/h) windGust
# dsWindGrad Zahl (°) windBearing 0°=Nord
# dsWolkendecke Zahl (%) cloudCover 100%=bedeckt / 0%=wolkenlos
# dsLuftdruck Zahl (mb) pressure
# dsUVIndex Zahl uvIndex
# dsLuftfeuchte Zahl (%) humidity
# dsNsIntens Zahl (mm/h) precipIntensity Niederschlagsintensitaet
# dsNsWahrsch Zahl (%) precipProbability Niederschlagswahrscheinlichkeit

#

# Achtung: 3 zusaetzliche Backslashes zum Entfluechten vor ? und 2x &
# Einfügen musst du: deineAPI, Länge, Breite
# Beispiel für Koordinaten: 45.977,7.658
set url https://api.darksky.net/forecast/ac5c18 ... a/&lang=de
if { [catch {exec /usr/bin/wget --no-check-certificate -q -O /usr/local/addons/wetter/darksky.json $url} error] } {
puts stderr "Could not reach $url \n$error"
exit 1
}

set f [open "/usr/local/addons/wetter/darksky.json"]
set input [read $f]
close $f

#
# goto section with current observation
#
regexp ",\"currently\":(.*?)\"ozone\":" $input dummy current ; #get current observation
#
#regexp "\"time\":(.*?)," $current dummy observation_time ; # letzter update
regexp "\"summary\":\"(.*?)\"," $current dummy weather ; # Wetterbedingungen
regexp "\"precipIntensity\":(.*?)," $current dummy prec_int ; # Niederschlagsintensitaet # ZAHL
regexp "\"precipProbability\":(.*?)," $current dummy prec_pro ; # Niederschlagswahrscheinlichkeit # ZAHL
regexp "\"temperature\":(.*?)," $current dummy temp_c ; # Temperatur # ZAHL
regexp "\"humidity\":(.*?)," $current dummy relative_humidity ; # Luftfeuchtigkeit
regexp "\"pressure\":(.*?)," $current dummy pressure_mb ; # Luftdruck
regexp "\"windSpeed\":(.*?)," $current dummy wind_kph ; # Windgeschwindigkeit # ZAHL
regexp "\"windGust\":(.*?)," $current dummy wind_gust_kph ; # Windboeengeschwindigkeit # ZAHL
regexp "\"windBearing\":(.*?)," $current dummy wind_dir ; # Windrichtung in Grad
regexp "\"cloudCover\":(.*?)," $current dummy cloudCover ; # Wolkendecke in %
regexp "\"uvIndex\":(.*?)," $current dummy uv_index ; # #Zahl

# Wahrscheinlichkeit in % umrechnen:
set prec_pro [expr $prec_pro * 100.0]
# relative Luftfeuchtigkeit in % umrechnen:
set relative_humidity [expr $relative_humidity * 100.0]
# relative Himmelbedeckung durch Wolken in % umrechnen:
set cloudCover [expr $cloudCover * 100.0]

# Umlaute korrigieren (geht nicht, wer findet eine Lösung?)
#set weather [encoding convertfrom utf-8 $values(weather)]


#
# set ReGaHss variables
#
set rega_cmd ""
#append rega_cmd "var c0 = dom.GetObject('WetterAktualisierung');"
append rega_cmd "var c1 = dom.GetObject('dsWetterBedingungen');"
append rega_cmd "var c2 = dom.GetObject('dsTemperatur');"
append rega_cmd "var c3 = dom.GetObject('dsWindgeschwindigkeit');"
append rega_cmd "var c4 = dom.GetObject('dsWindboeen');"
append rega_cmd "var c5 = dom.GetObject('dsWindGrad');"
append rega_cmd "var c6 = dom.GetObject('dsWolkendecke');"
append rega_cmd "var c7 = dom.GetObject('dsLuftdruck');"
append rega_cmd "var c8 = dom.GetObject('dsUVIndex');"
append rega_cmd "var c9 = dom.GetObject('dsLuftfeuchte');"
append rega_cmd "var c10 = dom.GetObject('dsNsIntens');"
append rega_cmd "var c11 = dom.GetObject('dsNsWahrsch');"
#append rega_cmd "c0.State('$observation_time');"
append rega_cmd "c1.State('$weather');"
append rega_cmd "c2.State('$temp_c');"
append rega_cmd "c3.State('$wind_kph');"
append rega_cmd "c4.State('$wind_gust_kph');"
append rega_cmd "c5.State('$wind_dir');"
append rega_cmd "c6.State('$cloudCover');"
append rega_cmd "c7.State('$pressure_mb');"
append rega_cmd "c8.State('$uv_index');"
append rega_cmd "c9.State('$relative_humidity');"
append rega_cmd "c10.State('$prec_int');"
append rega_cmd "c11.State('$prec_pro');"

append rega_cmd "dom.GetObject('CUxD.CUX2801002:10.LOGIT').State('dsWindgeschwindigkeit;'#$wind_kph);"
append rega_cmd "dom.GetObject('CUxD.CUX2801002:10.LOGIT').State('dsWindboeen;'#$wind_gust_kph);"
append rega_cmd "dom.GetObject('CUxD.CUX2801002:10.LOGIT').State('dsLuftdruck;'#$pressure_mb);"
append rega_cmd "dom.GetObject('CUxD.CUX2801002:10.LOGIT').State('dsNsIntens;'#$prec_int);"
append rega_cmd "dom.GetObject('CUxD.CUX2801002:10.LOGIT').State('dsNsWahrsch;'#$prec_pro);"
rega_script $rega_cmd

Xel66
Beiträge: 14148
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 583 Mal
Danksagung erhalten: 1497 Mal

Re: Wunderground Wetter mit einfachem HM-Skript holen

Beitrag von Xel66 » 23.05.2019, 02:29

Das ist ein TCL-Script und kein Rega-Script! Das muss im Dateisystem abgelegt werden und über ein Rega-Script aufgerufen werden.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

loewe.242
Beiträge: 23
Registriert: 01.08.2018, 10:59

Re: Wunderground Wetter mit einfachem HM-Skript holen

Beitrag von loewe.242 » 24.05.2019, 21:46

Hallo, tut mir leid, da bin ich wohl zu sehr ein Anfänger!!
Ich habe zwar die Ordner auf meinem Tinkerboard erstellt und das Skript in eine txt kopiert, aber wie soll das Programm in der WBui lauten die es startet?

Gruß Alex

Meisternico
Beiträge: 22
Registriert: 05.01.2016, 19:06
Danksagung erhalten: 1 Mal

Re: Wunderground Wetter mit einfachem HM-Skript holen

Beitrag von Meisternico » 31.05.2019, 10:34

Hallo zusammen,

wie kann ich aus dem Darksky script die Werte aus der xml Seite in Systemvariablen als Zahl und nicht "nur" als zechenkette speichern? Dazu folgendenes Beispiel: Die Minimum Temperatur wird bereits als Zahl abgespeichert, die regenwahrscheinlichkeit jedoch nicht. Wie kann ich das im nachfolgenden Scriptauszug abändern?

in der xml Datei stehen die jeweiligen Daten jeweils wie folgt:

temperatureLow 13.78
precipProbability 0.42

im Script sieht das bisher so aus:

string word = "temperatureLow";
integer word_laenge = word.Length();
integer word_position = wetter_xml_heute.Find(word);
string daten = wetter_xml_heute.Substr((word_position + word_laenge +2), 5);
integer word_position = daten.Find(",");
daten = daten.Substr(0, (word_position));
daten = daten.ToString(0); !#" °C";
dom.GetObject("W_Temperatur_Heute_min").State(daten);

string word = "precipProbability";
integer word_laenge = word.Length();
integer word_position = wetter_xml_heute.Find(word);
string daten = wetter_xml_heute.Substr((word_position + word_laenge +2), 5);
integer word_position = daten.Find(",");
daten = daten.Substr(0, (word_position));
real daten1 = daten.ToFloat();
daten1 = daten1 *100;
daten = daten1.ToString(0)#" %";
dom.GetObject("W_Regenwahrscheinlichkeit_Heute").State(daten);

Xel66
Beiträge: 14148
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 583 Mal
Danksagung erhalten: 1497 Mal

Re: Wunderground Wetter mit einfachem HM-Skript holen

Beitrag von Xel66 » 31.05.2019, 10:41

Entweder das "daten = daten1.ToString(0)#" %";" auskommentieren indem Du ein Ausrufezeichen (und ein Leerzeichen) davor setzt. Oder direkt vor dieser Zeile den Inhalt von daten1 in eine Sytemvariable vom Typ "Zahl" zur weiteren Verwendung wegschreiben. Oben wurde es ähnlich gemacht, nur dass Du dort die Einheit auskommentiert hast. Der Wert ist aber entgegen Deiner Aussage keine Zahl sondern ein String, denn dort steht: "daten = daten.ToString(0); !#" °C";" Was den Inhalt von daten in einen String ohne Kommastelle wandelt. Schön ist anders. Man könnte es auch zu integer wandeln, wenn man nur Ganzzahlen haben will.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Meisternico
Beiträge: 22
Registriert: 05.01.2016, 19:06
Danksagung erhalten: 1 Mal

Re: Wunderground Wetter mit einfachem HM-Skript holen

Beitrag von Meisternico » 31.05.2019, 21:38

Vielen Dank, der Hinweis mit Integer hat geholfen. Jetzt kann ich die Werte auch wieder in meinen programmen nutzen. Neu sieht der Scrptteil so aus:

string word = "precipProbability";
integer word_laenge = word.Length();
integer word_position = wetter_xml_heute.Find(word);
string daten = wetter_xml_heute.Substr((word_position + word_laenge +2), 5);
integer word_position = daten.Find(",");
daten = daten.Substr(0, (word_position));
real daten1 = daten.ToFloat();
daten1 = daten1 *100;
daten = daten1.ToInteger();
dom.GetObject("W_Regenwahrscheinlichkeit_Heute").State(daten);

Antworten

Zurück zu „Projektvorstellungen“