ScriptRuntimeError - Wie die Ursache finden

Einrichtung, Nutzung und Hilfe zu RaspberryMatic (OCCU auf Raspberry Pi)

Moderatoren: jmaus, Co-Administratoren

nocatu
Beiträge: 49
Registriert: 13.10.2015, 22:17

ScriptRuntimeError - Wie die Ursache finden

Beitrag von nocatu » 01.08.2017, 23:53

Mit der neuen Community Logikschicht wurde die Script Prüfung verschärft. Wenn ein Script gegen die schärferen Prüfungen verstößt erscheint ein ScriptRuntimeError im Log.

Seit dem Update heute auf 2.29.18 ist mein Log tatsächlich voll mit diesen ScriptRuntimeError. Nur, wie finde ich das Script, dass den Fehler auslöst?

Code: Alles auswählen

Aug  1 23:42:38 homematic-raspi local0.err ReGaHss: Error: IseESP::ScriptRuntimeError: string channels = "";string timestamps = ""; [iseESPexec.cpp:12344]
Ich habe alle Scripts durchsucht, es gibt diesen Code in keinem Script:

Code: Alles auswählen

string channels = "";string timestamps = ""
Hinzu kommt, dass dieser Fehler auch alle drei Sekunden ins Log geschrieben wird. Ich habe auch kein Script, dass alle drei Sekunden läuft.

Kommt das vielleicht von einem Addon? Ich habe die xml-Api, Cuxd und das Email addon installieret, alle in der aktuellsten Version.

fischmir
Beiträge: 824
Registriert: 03.02.2014, 18:04
Wohnort: Münsterland

Re: ScriptRuntimeError - Wie die Ursache finden

Beitrag von fischmir » 02.08.2017, 07:12

Ich würde mir das "Drucken"-Addon besorgen und alle Programme "drucken". Das AddOn erzeugt eine html mit allen Programmen. Auf dieser Seite kannst du nach nach deinem Script-Schnipsel suchen. Vielleicht kommst du so weiter?!

Cash
Beiträge: 1154
Registriert: 09.01.2016, 17:42
Wohnort: Sauerland

Re: ScriptRuntimeError - Wie die Ursache finden

Beitrag von Cash » 02.08.2017, 08:49

Vielleicht ist es auch ein internes Script von eq3 selber...

Aber mit dem Programm drucken Addon wirst Du bestimmt fündig.

Benutzeravatar
jmaus
Beiträge: 4731
Registriert: 17.02.2015, 14:45
Wohnort: Dresden
Kontaktdaten:

Re: ScriptRuntimeError - Wie die Ursache finden

Beitrag von jmaus » 02.08.2017, 09:56

nocatu hat geschrieben:Mit der neuen Community Logikschicht wurde die Script Prüfung verschärft. Wenn ein Script gegen die schärferen Prüfungen verstößt erscheint ein ScriptRuntimeError im Log.

Seit dem Update heute auf 2.29.18 ist mein Log tatsächlich voll mit diesen ScriptRuntimeError. Nur, wie finde ich das Script, dass den Fehler auslöst?
[...]

Code: Alles auswählen

string channels = "";string timestamps = ""
Hinzu kommt, dass dieser Fehler auch alle drei Sekunden ins Log geschrieben wird. Ich habe auch kein Script, dass alle drei Sekunden läuft.

Kommt das vielleicht von einem Addon? Ich habe die xml-Api, Cuxd und das Email addon installieret, alle in der aktuellsten Version.
Das kann von verschiedenen Stellen kommen. Einerseits von eigenen Skripten die du unter Programme in der WebUI hinzufügen kannst, dann von Addons oder von externen Stellen die die HTTP Schnittstelle nutzen (z.B. Handyapps, webmatic, ioBroker oder ähnliches) um entfernt ReGa-Skripte ablaufen zu lassen.

In der Tat kann es mitunter schwierig sein (vor allem in großen Installation) den genauen Ursprung des Problems (d.h. den Skript) zu finden. Man kann jedoch mit einer gewissen Herangehensweise das ganze eingrenzen:
  1. Da im syslog der fehlerhafte Skript leider nicht gänzlich ausgegeben werden kann und somit nur der Anfang des Skriptes dort jeweils bei einem ScriptRuntimeError ausgegeben wird kann man versuchen ReGaHss via SSH von der Kommandozeile aus temporär so zu starten das die Fehlermeldungen auf der Konsole ausgegeben werden und nicht im syslog. Dazu kann man wie folgt vorgehen:
    1. Via SSH einloggen
    2. ReGaHss stoppen:

      Code: Alles auswählen

      /etc/init.d/S70ReGaHss stop
    3. ReGaHss von Hand starten:

      Code: Alles auswählen

      /bin/ReGaHss -f /etc/rega.conf -l 2 -c
    4. Nun sollten alle Meldungen auf der Konsole ausgegeben werden. D.h. nun wieder via Webbrowser sich verbinden mit der WebUI und auf den ScriptRuntimeError warten. Dann sollte dort der gesamte Skriptinhalt ausgegeben werden.
    5. Wenn man wieder die ReGa wie voher starten will dann via CTRL+C die laufende ReGaHss beenden und via init.d neustarten:

      Code: Alles auswählen

      /etc/init.d/S70ReGaHss start
  2. Sollte Punkt 1 auch keine Klarheit darüber schaffen welcher Skript das sein kann bzw. woher der kommt dann sollte man nun hingehen und einmal die Firewall-Einstellungen in der WebUI so verschärfen das von aussen (auch nicht vom LAN) keinerlei Zugriffe auf die Logikschicht mehr möglich sind (siehe 'Einstellungen->Firewall->Remote HomeMatic Skript API')
  3. Bringt auch das kein Erfolg so kann es entweder nur ein CCU interner Skript sein der das problem erzeugt oder aber ein Addon das einen fehlerhaften ReGa-Skript nutzt. Um das rauszufinden kann man dann leider nur so vorgehen das man ein Addon nacheinander deinstalliert und schaut ob dann der Fehler weg ist.
Im besagten Fall hab ich aber mal in den CCU internen Skripten geschaut und kann schonmal ausschliessen das dies von einem internen ReGa-Skript der CCU Software selber kommt da die besagten Code-Zeilen nirgends vorkommen. Es gilt also nun so vorzugehen wie ich es hier geschrieben habe. Und dann bitte hier Rückmeldung geben woher das Problem kam damit andere davon auch profitieren können.
RaspberryMatic 3.47.10.20190713 @ TinkerS mit ~160 HomeMatic Geräten + ioBroker – GitHubPayPalTwitter

schmello
Beiträge: 180
Registriert: 04.06.2015, 20:26

Re: ScriptRuntimeError - Wie die Ursache finden

Beitrag von schmello » 02.08.2017, 12:45

Hallo zusammen..

Ich bin seid 2 Tagen von Yahm auf Raspberrymatic umgestiegen und bis jetzt sehr begeistert.
Wirklich klasse Arbeit...

Doch habe ich im Syslog ständig die gleichen Meldungen drin.
Ich habe einfach zu wenig Ahnung davon was es sein könnte.

Ich habe die Tage etwas mit IO Broker rum probiert. Es aber wieder verworfen, da ich mit Mediola recht zufrieden bin.

Code: Alles auswählen

Aug  2 12:42:19 homematic-raspi local0.err ReGaHss: Error: IseESP::ScriptRuntimeError: var o;string states="";states = states # "0=";o=dom.GetObject("17259");if(o!=null){if(o.Value()){states=states#o.ValueName1();}else{states=states#o.ValueName0();}}else{states=states#"?";}states = states # "\r@@@\n";states = states # "1=";o=dom.GetObject("BidCos-Wired.LEQ0439533:1.SENSOR");if(o!=null){states=states#o.Value();}else{states=states#"?";}states = states # "\r@@@\n";states = states # "2=";o=dom.GetObject("1773
");if(o!=null){states=states#o.Value().ToString();}else{states=states#"?";}states = states # "\r@@@\n";states = states # "3=";o=dom.GetObject("23376");if(o!=null){states=states#o.Value().ToString();}else{states=states#"?";}states = states # "\r@@@\n";states = states # "4=";o=dom.GetObject("21579");if(o!=null){states=states#o.Value().ToString();}else{states=states#"?";}states = states # "\r@@@\n";states = states # "5=";o=dom.GetObject("23375");if(o!=null){states=states#o.Value().ToString();}else{states=sta
es#"?";}states = states

Aug  2 12:42:19 homematic-raspi local0.err ReGaHss: Error: IseESP::ScriptRuntimeError: var o;string states="";states = states # "0=";o=dom.GetObject("17259");if(o!=null){if(o.Value()){states=states#o.ValueName1();}else{states=states#o.ValueName0();}}else{states=states#"?";}states = states # "\r@@@\n";states = states # "1=";o=dom.GetObject("BidCos-Wired.LEQ0439533:1.SENSOR");if(o!=null){states=states#o.Value();}else{states=states#"?";}states = states # "\r@@@\n";states = states # "2=";o=dom.GetObject("1773
");if(o!=null){states=states#o.Value().ToString();}else{states=states#"?";}states = states # "\r@@@\n";states = states # "3=";o=dom.GetObject("23376");if(o!=null){states=states#o.Value().ToString();}else{states=states#"?";}states = states # "\r@@@\n";states = states # "4=";o=dom.GetObject("21579");if(o!=null){states=states#o.Value().ToString();}else{states=states#"?";}states = states # "\r@@@\n";states = states # "5=";o=dom.GetObject("23375");if(o!=null){states=states#o.Value().ToString();}else{states=sta
es#"?";}states = states

Aug  2 12:42:50 homematic-raspi local0.err ReGaHss: Error: IseESP::ScriptRuntimeError: var o;string states="";states = states # "0=";o=dom.GetObject("17259");if(o!=null){if(o.Value()){states=states#o.ValueName1();}else{states=states#o.ValueName0();}}else{states=states#"?";}states = states # "\r@@@\n";states = states # "1=";o=dom.GetObject("BidCos-Wired.LEQ0439533:1.SENSOR");if(o!=null){states=states#o.Value();}else{states=states#"?";}states = states # "\r@@@\n";states = states # "2=";o=dom.GetObject("1773
");if(o!=null){states=states#o.Value().ToString();}else{states=states#"?";}states = states # "\r@@@\n";states = states # "3=";o=dom.GetObject("23376");if(o!=null){states=states#o.Value().ToString();}else{states=states#"?";}states = states # "\r@@@\n";states = states # "4=";o=dom.GetObject("21579");if(o!=null){states=states#o.Value().ToString();}else{states=states#"?";}states = states # "\r@@@\n";states = states # "5=";o=dom.GetObject("23375");if(o!=null){states=states#o.Value().ToString();}else{states=sta
es#"?";}states = states

Kenobi
Beiträge: 74
Registriert: 19.07.2014, 21:15

Re: ScriptRuntimeError - Wie die Ursache finden

Beitrag von Kenobi » 02.08.2017, 14:08

fischmir hat geschrieben:Ich würde mir das "Drucken"-Addon besorgen und alle Programme "drucken". Das AddOn erzeugt eine html mit allen Programmen. Auf dieser Seite kannst du nach nach deinem Script-Schnipsel suchen. Vielleicht kommst du so weiter?!
Das mache ich seit geraumer Zeit genau so, auch um Stings in ALLEN Skripten zu finden, wo ich mich nicht mehr genau an das einzelne Script erinnern kann. Außerdem kann man die Seite(n) als PDF drucken und stellt so eine allzeit lesbare Sicherung/Dokumentation her. Ich möchte das nicht mehr missen. Ein hinreichend aktuelles PDF hat mir schon einige male viel Mühe erspart.

Die von Jens vorgeschlagene Variante ist technisch anspruchsvoller, werde ich auf jeden Fall mal ausprobieren. Da müsste man doch alles sehen, was so läuft, oder?

mule
Beiträge: 1005
Registriert: 06.07.2010, 00:24

Re: ScriptRuntimeError - Wie die Ursache finden

Beitrag von mule » 02.08.2017, 14:38

Man kann sich auch einfach die Regadom-Datei kopieren und nach Code-Schnipseln (sofern diese recht eindeutig sind) durchsuchen. Da sollte man dann auch entsprechend fündig werden.
Aktuelle Projekte:
Direkter SMS-Versand und -Empfang über CCU2&Raspberrymatic ohne Cloud:
viewtopic.php?f=31&t=39483

Automower (G2) steuern über Homematic per WLAN:
viewtopic.php?f=31&t=7295

JoMass
Beiträge: 153
Registriert: 26.11.2016, 12:52

Re: ScriptRuntimeError - Wie die Ursache finden

Beitrag von JoMass » 02.08.2017, 22:52

Auch Mediola AIO-Creator-Neo hat in meiner Installation so seine Herausforderungen mit der verbesserten ReGaHss. Ich habe eine sehr umfangreiche Steuerungs-AP damit gemacht und eine von 11 Bedienungs-Seiten produziert die nachfolgend zitierte Fehlermeldung. Ich habe in einer ersten Analyse die betroffenen Geräte in der Bedienung gelöscht und wieder aufgebaut; da hat sich nichts geändert. Die Seite wird im 10sec Intervall aktualisiert und genau in diesem Intervall erfolgt auch dieser Fehlereintrag. Ich erwarte jetzt keine Lösung dafür, weil die Steuerung ja funktioniert, aber vielleicht hilft der Beitrag dazu ReGaHss robuster zu machen oder mediola (falls die hier auch mitlesen) das Interface zu Homematic zu verbessern.

u.b.t.w. der Umstieg auf die neue Version 7.31 war problemlos und funktioniert bei mir stabil. Diese nachfolgend zitierte Meldung gab es auch schon in der Vorgänger Version.

Code: Alles auswählen

Aug  1 20:31:45 homematic-raspi local0.err ReGaHss: Error: IseESP::ScriptRuntimeError: var o;string states="";states = states # "0=";o=dom.GetObject("BidCos-RF.LEQ0799743:1.TEMPERATURE");if(o!=null){states=states#o.Value();}else{states=states#"?";}states = states # "\r@@@\n";states = states # "1=";o=dom.GetObject("BidCos-RF.LEQ0799743:1.HUMIDITY");if(o!=null){states=states#o.Value();}else{states=states#"?";}states = states # "\r@@@\n";states = states # "2=";o=dom.GetObject("BidCos-RF.NEQ0102263:2.STATE");if(o!=null){states=states#o.Value();}else{states=states#"?";}states = states # "\r@@@\n";states = states # "3=";o=dom.GetObject("BidCos-RF.NEQ0102263:1.STATE");if(o!=null){states=states#o.Value();}else{states=states#"?";}states = states # "\r@@@\n";states = states # "4=";o=dom.GetObject("BidCos-RF.NEQ0102263:3.STATE");if(o!=null){states=states#o.Value();}else{states=states#"?";}states = states # "\r@@@\n";states = states # "5=";o=dom.GetObject("BidCos-RF.NEQ0102263:4.STATE");if(o!=null){states=states#o.Value();}else{states=states
JoMass
~145 Geräte; ~70 Programme FW: 3.45.7.20190622 – RaspberryPi3 als CCU - HISTORIAN 2.2 auf QNAP; Mediola AIO Creator NEO

ibein
Beiträge: 72
Registriert: 21.01.2015, 14:06

Re: ScriptRuntimeError - Wie die Ursache finden

Beitrag von ibein » 03.04.2019, 17:48

nocatu hat geschrieben:
01.08.2017, 23:53
Mit der neuen Community Logikschicht wurde die Script Prüfung verschärft. Wenn ein Script gegen die schärferen Prüfungen verstößt erscheint ein ScriptRuntimeError im Log.

Seit dem Update heute auf 2.29.18 ist mein Log tatsächlich voll mit diesen ScriptRuntimeError. Nur, wie finde ich das Script, dass den Fehler auslöst?
Inwiefern wurde die Prüfung denn verschärft?

Ich bekomme ständig einen Fehler bei folgendem Skript:

Code: Alles auswählen

var t = system.Date("%H:%M:%S");
var x = dom.GetObject("Timestamps_BWM_Pforte").Value();
var y = dom.GetObject("Taster_BWM_Pforte").Value();
var z;
if (y == true) { z = 'xxx'; }
if (y == false) { z = 'Bewegung erkannt'; }
dom.GetObject("Timestamps_BWM_Pforte").State(x + " " +  t + " " + z);
WriteLine(x + " " +  t + " " + z);
Ich weiß leider nicht, was daran falsch ist...

Benutzeravatar
jmaus
Beiträge: 4731
Registriert: 17.02.2015, 14:45
Wohnort: Dresden
Kontaktdaten:

Re: ScriptRuntimeError - Wie die Ursache finden

Beitrag von jmaus » 03.04.2019, 18:59

Da musst du auch schon mal die Fehlerausgabe dazu zeigen. Und was einem da gleich mal auffällt ist, das du "+" Zeichen für das zusammensetzen von strings verwendest. Das ist aber falsch. Dafür verwendet man #
RaspberryMatic 3.47.10.20190713 @ TinkerS mit ~160 HomeMatic Geräten + ioBroker – GitHubPayPalTwitter

Antworten

Zurück zu „RaspberryMatic“