Kein Rückgabewert bei CMD_RETL

Anbindung von FS20-Komponenten, ELV-Wetterstationen, EnOcean und DMX an HomeMatic

Moderator: Co-Administratoren

Antworten
heiner1976
Beiträge: 4
Registriert: 03.03.2014, 19:15

Kein Rückgabewert bei CMD_RETL

Beitrag von heiner1976 » 30.05.2016, 20:22

Hallo liebes Forum,
leider habe ich seit einiger Zeit ein Problem. Untenstehender Programmcode funktioniert nicht mehr.
Ich kann leider nicht mehr nachvollziehen seit welchem Update, da ich die Bewässerung über den Winter nicht genutzt habe.
Ich versuche mit folgenden Befehlen eine Webseite auszulesen. (gesamtes Script unten)

dom.GetObject("CUxD.CUX2801002:9.CMD_SETS").State("wget -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801002:9.CMD_QUERY_RET").State(1);
var wetter_history = dom.GetObject("CUxD.CUX2801002:9.CMD_RETS").State();

Meine derzeitigen Versionen:
CUXD 1.6
CCU2 2.13.7

Am Script habe ich nichts geändert!

Leider bekomme ich in die Variable wetter_history keinen Wert zurück geschrieben.

Die URL wird generiert und liefert im Browser auch Werte zurück.
In CUXD wird auch geschrieben:
CUX2801002:9 rmax(65535) t(3600s) p(0)
KEY-SHORT CMD_SHORT(wget -O - 'https://deutsch.wunderground.com/histor ... =&format=1')
CUXD LOG:
May 30 20:13:03 homematic-ccu2 daemon.info cuxd[14762]: pclose(wget -O - 'https://deutsch.wunderground.com/histor ... =&format=1') exit
Ich hoffe mir kann jemand helfen???? Was mache ich falsch oder was ist anders als früher?

Script:

Code: Alles auswählen

!Auswertung der Historie Werte von Wunderground als Grundlage zur Berechnung des Regenzeitpunktes und der !Beregungsdauer
!Grundlage : Regennmenge der letzten 7 Tagen auslesen. 

!Abruf der Historydaten der letzten 7 Tage und schreiben in String
integer timestamp = system.Date("%F %X").ToTime().ToInteger();!Zur Berechnung des Tag vor einer Woche
integer sDay = system.Date("%d");!Erzeugen des Datums Heute Tag zur Abfrage
integer sMonth = system.Date("%m");!Erzeugen des Datums Heute Monat zur Abfrage
integer sYear = system.Date("%Y");!Erzeugen des Datums Heute Year zur Abfrage
integer beginn = 7;!Anzahl der Tage die abgerufen werden sollen.

!Berechnung des Tages vor einer Woche
integer laWeek=timestamp-(beginn*24*60*60);

!Umwandeln laWeek in Datum der vor 7Tagen
string laWeDa = laWeek.ToTime().Format("%Y/%m/%d");

string url="https://deutsch.wunderground.com/history/airport/ETOU/"+laWeDa+"/CustomHistory.html?dayend="+sDay+"&monthend="+sMonth+"&yearend="+sYear+"&req_city=&req_state=&req_statename=&reqdb.zip=&reqdb.magic=&reqdb.wmo=&format=1";
dom.GetObject("CUxD.CUX2801002:9.CMD_SETS").State("wget -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801002:9.CMD_QUERY_RET").State(1);
var wetter_history = dom.GetObject("CUxD.CUX2801002:9.CMD_RETS").State();

WriteLine(wetter_history);

!Zerlegen in Zeilen
string ersteZeile = wetter_history.StrValueByIndex("br /", 1); !Zeile vor 7 Tagen
string zweiteZeile = wetter_history.StrValueByIndex("br /", 2);  !Zeile vor 6 Tagen
string dritteZeile = wetter_history.StrValueByIndex("br /", 3);  !Zeile vor 5 Tagen
string vierteZeile = wetter_history.StrValueByIndex("br /", 4);  !Zeile vor 4 Tagen
string fuenfteZeile = wetter_history.StrValueByIndex("br /", 5);  !Zeile vor 3 Tagen
string sechsteZeile = wetter_history.StrValueByIndex("br /", 6);  !Zeile vor 2 Tagen
string siebteZeile = wetter_history.StrValueByIndex("br /", 7); !Zeile vor 1 Tag
string achteZeile = wetter_history.StrValueByIndex("br /", 8); !Zeile vor Heute

!Auslesen der Werte aus den einzelnen Zeilen zum Berechnen der Regenmenge

!Werte aus Zeile auslesen und in Systemvariablen neu setzen;
!daten = daten.Substr(0, (word_position -2));
!dom.GetObject("Wetter_Windbedingungen").State(daten);

real regenHeute= achteZeile.StrValueByIndex(",", 19).ToFloat(); 
dom.GetObject("Regenmenge_Heute").State(regenHeute);

real regenGestern= siebteZeile.StrValueByIndex(",", 19).ToFloat(); 
dom.GetObject("Regenmenge_Gestern").State(regenGestern);

real regenv2 = sechsteZeile.StrValueByIndex(",", 19).ToFloat(); 
dom.GetObject("Regenmenge_vor_2Tagen").State(regenv2);

real regenv3 = fuenfteZeile.StrValueByIndex(",", 19).ToFloat(); 
dom.GetObject("Regenmenge_vor_3Tagen").State(regenv3);

real regenv4 = vierteZeile.StrValueByIndex(",", 19).ToFloat(); 
dom.GetObject("Regenmenge_vor_4Tagen").State(regenv4);

real regenv5= dritteZeile.StrValueByIndex(",", 19).ToFloat(); 
dom.GetObject("Regenmenge_vor_5Tagen").State(regenv5);

real regenv6= zweiteZeile.StrValueByIndex(",", 19).ToFloat(); 
dom.GetObject("Regenmenge_vor_6Tagen").State(regenv6);

real regenv7= ersteZeile.StrValueByIndex(",", 19).ToFloat(); 
dom.GetObject("Regenmenge_vor_7Tagen").State(regenv7);

!Gesamtregenmenge der letzen 7 Tage

real regenWoche = (regenHeute+regenGestern+regenv2+regenv3+regenv4+regenv5+regenv6+regenv7);
dom.GetObject("Regensumme_Woche").State(regenWoche);

!Gesamtregenmenge der letzen 4 Tage
real regen4days = (regenHeute+regenGestern+regenv2+regenv3+regenv4);
dom.GetObject("Regensumme_4Tage").State(regen4days);


Benutzeravatar
uwe111
Beiträge: 4820
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 246 Mal
Kontaktdaten:

Re: Kein Rückgabewert bei CMD_RETL

Beitrag von uwe111 » 31.05.2016, 11:23

heiner1976 hat geschrieben:leider habe ich seit einiger Zeit ein Problem. Untenstehender Programmcode funktioniert nicht mehr.
Ich kann leider nicht mehr nachvollziehen seit welchem Update, da ich die Bewässerung über den Winter nicht genutzt habe.
Ich versuche mit folgenden Befehlen eine Webseite auszulesen. (gesamtes Script unten)

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801002:9.CMD_SETS").State("wget -O - '"#url#"'");
Wenn Du diesen Befehl direkt auf der CCU ausführst, kommt folgende Meldung:

Code: Alles auswählen

# wget -O - 'https://deutsch.wunderground.com/history/airport/ETOU/2016/05/23/CustomHistory.html?dayend=30&monthend=
05&yearend=2016&req_city=&req_state=&req_statename=&reqdb.zip=&reqdb.magic=&reqdb.wmo=&format=1'
--2016-05-31 11:16:52--  https://deutsch.wunderground.com/history/airport/ETOU/2016/05/23/CustomHistory.html?dayend=30&monthend=05&yearend=2016&req_city=&req_state=&req_statename=&reqdb.zip=&reqdb.magic=&reqdb.wmo=&format=1
Resolving deutsch.wunderground.com... 23.32.244.223
Connecting to deutsch.wunderground.com|23.32.244.223|:443... connected.
ERROR: cannot verify deutsch.wunderground.com's certificate, issued by `/C=NL/L=Amsterdam/O=Verizon Enterprise Solutions/OU=Cybertrust/CN=Verizon Akamai SureServer CA G14-SHA2':
  Unable to locally verify the issuer's authority.
To connect to deutsch.wunderground.com insecurely, use `--no-check-certificate'.
Wenn Du nun den Parameter --no-check-certificate beim Aufruf hinzufügst, sollte es aber wieder funktionieren:

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:2.CMD_SETS").State("wget --no-check-certificate -O - '"#url#"'");
Viele Grüße

Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

heiner1976
Beiträge: 4
Registriert: 03.03.2014, 19:15

Re: Kein Rückgabewert bei CMD_RETL

Beitrag von heiner1976 » 31.05.2016, 18:10

Vielen Dank. Das wars!

Antworten

Zurück zu „CUxD“