ScriptRuntimeError seit Update auf 3.73.9.20231130

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

rosti
Beiträge: 8
Registriert: 26.10.2018, 14:12
Hat sich bedankt: 2 Mal

ScriptRuntimeError seit Update auf 3.73.9.20231130

Beitrag von rosti » 23.12.2023, 15:46

Hallo zusammen,

ich hab ein Problem mit einem Scrip und finde einfach keine Lösung dafür.
Es ist ein Scrip das Daten an ein WMOS Mini mit Display schickt. Bis zum Update auf 3.73.9.20231130 hat das auch problemlos funktioniert, aber seit dem Update bekomme ich im CUxD folgenden Fehler:

Code: Alles auswählen

Dec 23 15:33:30 homematic local0.err ReGaHss: ERROR: ScriptRuntimeError: string url = "http://192.168.2.23/control?cmd=LCDCMD,clear"; dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null '"#url#"'");  string url = "http://192.168.2.23/control?cmd=let,5,500"; dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null '"#url#"'");  string tempStrom = dom.GetObject("BidCos-RF.SEQ3474749:1.IEC_POWER").Value().ToString(0); string tempPV = dom.GetObject("BidCos-RF.UEQ1258558:1.PO
ER").Value().ToString(0); string url1 = "http://192.168.2.23/control?cmd=LCD,1,1,'Aktuell:"#tempStrom#"'w/'"#tempPV#"'pv"; dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null '"#url1#"'");  string tempVerschenkt = dom.GetObject("Einspeisung heute").Value().ToString(0); string tempVerbrauch = dom.GetObject("Strom Verbrauch heute").Value().ToString(0); string url2 = "http://192.168.2.23/control?cmd=LCD,2,1,'Imp/Exp:____"#tempVerbrauch#"'/'"#tempVerschenkt#"'kw"; dom.GetObject("CUxD.CUX28
1001:1.CMD_EXEC")
Das hier ist das Script dazu:

Code: Alles auswählen

string url = "http://192.168.2.23/control?cmd=LCDCMD,clear";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null '"#url#"'");

string url = "http://192.168.2.23/control?cmd=let,5,500";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null '"#url#"'");

string tempStrom = dom.GetObject("BidCos-RF.SEQ3474749:1.IEC_POWER").Value().ToString(0);
string tempPV = dom.GetObject("BidCos-RF.UEQ1258558:1.POWER").Value().ToString(0);
string url1 = "http://192.168.2.23/control?cmd=LCD,1,1,'Aktuell:"#tempStrom#"'w/'"#tempPV#"'pv";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null '"#url1#"'");

string tempVerschenkt = dom.GetObject("Einspeisung heute").Value().ToString(0);
string tempVerbrauch = dom.GetObject("Strom Verbrauch heute").Value().ToString(0);
string url2 = "http://192.168.2.23/control?cmd=LCD,2,1,'Imp/Exp:____"#tempVerbrauch#"'/'"#tempVerschenkt#"'kw";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null '"#url2#"'");

string tempWZ = dom.GetObject("HmIP-RF.000A97099CE205:1.ACTUAL_TEMPERATURE").Value().ToString(1);
string url3 = "http://192.168.2.23/control?cmd=LCD,3,1,'Wohnzimmer:__"#tempWZ#"'ßC";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null '"#url3#"'");

string TempBalkon = dom.GetObject("HmIP-RF.0010D8A98AD4F5:1.ACTUAL_TEMPERATURE").Value().ToString(1);
string url4 = "http://192.168.2.23/control?cmd=LCD,4,1,'Balkon:______"#TempBalkon#"'ßC";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null '"#url4#"'");

Ähnliche Steuerscripte wie das hier z.B. funktionieren interessanter weise:

Code: Alles auswählen

string url = "http://192.168.2.23/control?cmd=LCDCMD,on";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null '"#url#"'");
string url2 = "http://192.168.2.24/control?cmd=LCDCMD,on";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null '"#url2#"'");
Zusatzsoftware is soweit alle auf dem aktuellen Stand:

CUxD: 2.11
CUxD-Highcharts: 1.4.5
E-Mail: 1.7.6
HCOnnectVPN: 4.0
XML-API: 2.3

Mehr hab ich nicht laufen.

Wäre echt klasse wenn jemand mir einen Tipp geben könnte an was das liegt.

Vielen Dank und schöne Feiertage!

Gruß Roman

Benutzeravatar
Baxxy
Beiträge: 10982
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 624 Mal
Danksagung erhalten: 2271 Mal

Re: ScriptRuntimeError seit Update auf 3.73.9.20231130

Beitrag von Baxxy » 24.12.2023, 13:12

Es hat sich mit der 3.73.9.20231130 zur Vorversion bezüglich Scriptspache nichts geändert.

Zum testen zerlegst du dein Script am besten in Häppchen und führst diese im "Script testen" aus.
Beispiel-Häppchen:

Code: Alles auswählen

string tempStrom = dom.GetObject("BidCos-RF.SEQ3474749:1.IEC_POWER").Value().ToString(0);
WriteLine(tempStrom);
string tempPV = dom.GetObject("BidCos-RF.UEQ1258558:1.POWER").Value().ToString(0);
WriteLine(tempPV);
string url1 = "http://192.168.2.23/control?cmd=LCD,1,1,'Aktuell:"#tempStrom#"'w/'"#tempPV#"'pv";
WriteLine(url1);
Was mich noch interessiert...

Code: Alles auswählen

string url = "http://192.168.2.23/control?cmd=let,5,500";
Was macht das? Ich kenne nur cmd=LCDCMD, oder cmd=LCD,

rosti
Beiträge: 8
Registriert: 26.10.2018, 14:12
Hat sich bedankt: 2 Mal

Re: ScriptRuntimeError seit Update auf 3.73.9.20231130

Beitrag von rosti » 27.12.2023, 10:34

Hi, danke für den Tipp...

Hab ich soweit schon mal versucht, aber dass gleich der erste Teil im Scrip, wo ich Daten auslesen will Probleme macht, hatte ich nicht bedacht.
Sobald ich diesen Teil hier rausnehme, wird der Rest angezeigt:

Code: Alles auswählen

string tempStrom = dom.GetObject("BidCos-RF.SEQ3474749:1.IEC_POWER").Value().ToString(0);
string tempPV = dom.GetObject("BidCos-RF.UEQ1258558:1.POWER").Value().ToString(0);
string url1 = "http://192.168.2.23/control?cmd=LCD,1,1,'Aktuell:"#tempStrom#"'w/'"#tempPV#"'pv";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null '"#url1#"'");
Es scheint als ob das Auslesen der BidCos-RF Werte nicht mehr funktioniert und dadurch dann der Runtime Error entsteht.
Hab das jetzt umgeschrieben, so dass die Werte aus SystemVariablen gelesen werden mit einem weiteren Script, aber schön is das nicht.

Eventuell hat da noch jemand ne Idee wieso "dom.GetObject("BidCos-RF.SEQ3474749:1.IEC_POWER").Value().ToString(0);" nicht mehr funktioniert an dieser Stelle.



Das hier

Code: Alles auswählen

string url = "http://192.168.2.23/control?cmd=let,5,500";
sollte, wenn ich mich recht erinnere, die Aktualisierungsrate des Displays reduzieren, da ich anfangs Probleme hatte, dass einzelne Zeilen nicht geschrieben wurden und leer blieben.
Aber das is schon so lange her, dass ich es nicht mehr genau weiß...
Zuletzt geändert von rosti am 27.12.2023, 11:00, insgesamt 1-mal geändert.

MichaelN
Beiträge: 9771
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 707 Mal
Danksagung erhalten: 1647 Mal

Re: ScriptRuntimeError seit Update auf 3.73.9.20231130

Beitrag von MichaelN » 27.12.2023, 10:52

rosti hat geschrieben:
27.12.2023, 10:34
Sobald ich diesen Teil hier rausnehme, wird der Rest angezeigt:
Dann musst du nun nur noch jede Zeile einzeln testen um die Ursache zu finden
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 +++

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

Re: ScriptRuntimeError seit Update auf 3.73.9.20231130

Beitrag von Xel66 » 27.12.2023, 11:02

Meines Erachtens liegt es am Zusammenbau der URL. Irgendwie passt das mit den Anführungszeichen und den Hochkommata für meinen Geschmack gar nicht.

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

rosti
Beiträge: 8
Registriert: 26.10.2018, 14:12
Hat sich bedankt: 2 Mal

Re: ScriptRuntimeError seit Update auf 3.73.9.20231130

Beitrag von rosti » 27.12.2023, 11:05

Ja das hab ich schon:

Code: Alles auswählen

string tempStrom = dom.GetObject("BidCos-RF.SEQ3474749:1.IEC_POWER").Value().ToString(0);
Aber wieso geht das auf einmal nicht mehr? Das liest doch nur den Wert aus, den ich dann später weiter verwende.
Habs jetzt umgeschriben, so dass der Wert aus einer SysVariable kommt, das geht.

Nur warum das nach dem Update nicht mehr wie vorher funktioniert, ist schon seltsam.

Is halt doof den Wert den aus ner Variable zu lesen, statt den direkt vom Stromzähler zu nehmen.

rosti
Beiträge: 8
Registriert: 26.10.2018, 14:12
Hat sich bedankt: 2 Mal

Re: ScriptRuntimeError seit Update auf 3.73.9.20231130

Beitrag von rosti » 27.12.2023, 11:07

Xel66 hat geschrieben:
27.12.2023, 11:02
Meines Erachtens liegt es am Zusammenbau der URL. Irgendwie passt das mit den Anführungszeichen und den Hochkommata für meinen Geschmack gar nicht.

Gruß Xel66
Nee, dass passt schon. Hab das umgeschrieben auf die SystemVariable, also statt

Code: Alles auswählen

string tempPV = dom.GetObject("BidCos-RF.UEQ1258558:1.POWER").Value().ToString(0);
auf

Code: Alles auswählen

string tempPV = dom.GetObject("SysVar-TempStrom").Value().ToString(0);
und es geht.

Die Hochkommas brauch ich, weil sonst die Anzeige aufm Display nicht passt.

rosti
Beiträge: 8
Registriert: 26.10.2018, 14:12
Hat sich bedankt: 2 Mal

Re: CUxD ScriptRuntimeError seit Update auf 3.73.9.20231130

Beitrag von rosti » 27.12.2023, 11:15

Ah, der Fehler betrifft nicht nur meine Displays, sondern auch mein CUxD Logging.
Der Fehler is also vermutlich irgendwo im CUxD :-(


Das hier, was ja eigentlich echt nix kompliziertes ist, und einfach die beiden Wert ausliest und an CUxD zum Loggen übergibt, läuft ebenfalls in einen Fehler.

Script:
object o = dom.GetObject("BidCos-RF.SEQ3474749:1.IEC_POWER");
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State(("Stromverbrauch")#";"#o.Value());

object pv = dom.GetObject("BidCos-RF.UEQ1258558:1.POWER");
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State(("PV-Strom")#";"#pv.Value());

Fehler:

Code: Alles auswählen

Dec 27 11:10:00 homematic local0.err ReGaHss: ERROR: ScriptRuntimeError: object o = dom.GetObject("BidCos-RF.SEQ3474749:1.IEC_POWER"); dom.GetObject("CUxD.CUX2801001:1.LOGIT").State(("Stromverbrauch")#";"#o.Value());  object pv = dom.GetObject("BidCos-RF.UEQ1258558:1.POWER"); dom.GetObject("CUxD.CUX2801001:1.LOGIT").State(("PV-Strom")#";"#pv.Value()); [ExecError():iseESPexec.cpp:12907]

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

Re: ScriptRuntimeError seit Update auf 3.73.9.20231130

Beitrag von Xel66 » 27.12.2023, 11:19

rosti hat geschrieben:
27.12.2023, 11:07
Nee, dass passt schon. Hab das umgeschrieben auf die SystemVariable, also statt...
Wenn Du meinst... Mag sein, dass Du sie brauchst, aber die Anordnung sieht falsch aus. Du eröffnest den zusammengebauten String mit einem Hochkomma, schließt ihn aber nicht ab. Für mich sähe z.B. ...pv'" schlüssiger aus als ein ...'pv", wenn das "pv" zur Anzeige in den String mit eingebaut werden soll. Aber ich weiß nicht, was da dargestellt wird und wie die Erfordernisse genau sind.
rosti hat geschrieben:
27.12.2023, 11:15
Der Fehler is also vermutlich irgendwo im CUxD :-(
Nein, im zusammengebauten String, der so nicht plausibel übermittelt werden kann. Mit CUxD hat das nichts zu tun. Das ist nur der Bote der Nachricht über einen bestehenden Fehler.

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

rosti
Beiträge: 8
Registriert: 26.10.2018, 14:12
Hat sich bedankt: 2 Mal

Re: ScriptRuntimeError seit Update auf 3.73.9.20231130

Beitrag von rosti » 27.12.2023, 11:31

Ich hab es doch schon umgeschrieben und so geht es:

Code: Alles auswählen

string tempStrom1 = dom.GetObject("tempStrom").Value().ToString(0);
string tempPV1 = dom.GetObject("tempPV").Value().ToString(0);
string url1 = "http://192.168.2.23/control?cmd=LCD,1,1,'Aktuell:"#tempStrom1#"'w/'"#tempPV1#"'pv";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null '"#url1#"'");
Gleiche Hochkmmas usw... nur andere Quelle!

Aber wie auch schon geschrieben, hab ich das gleiche Problem auch bei dieser Abfrage:

Code: Alles auswählen

object pv = dom.GetObject("BidCos-RF.UEQ1258558:1.POWER");
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State(("PV-Strom")#";"#pv.Value());
Also alles was mit BidCos-RF..... zu tun hat.

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“