Fehler im Script aber Script testen geht ? ! ? ! ?

Fehler in Firmware und WebUI & Workarounds

Moderator: Co-Administratoren

Benutzeravatar
joni-blue
Beiträge: 1171
Registriert: 04.01.2012, 12:20
System: CCU
Wohnort: Hannover
Hat sich bedankt: 6 Mal
Danksagung erhalten: 1 Mal

Re: Fehler im Script aber Script testen geht ? ! ? ! ?

Beitrag von joni-blue » 12.02.2016, 15:40

das ist eine gute frage
Reboot tut gut ! ! !

Benutzeravatar
jmaus
Beiträge: 9844
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 462 Mal
Danksagung erhalten: 1863 Mal
Kontaktdaten:

Re: Fehler im Script aber Script testen geht ? ! ? ! ?

Beitrag von jmaus » 12.02.2016, 15:59

dtp hat geschrieben: Wenn ich folgendes Skript teste

Code: Alles auswählen

string test = "Hallo";
WriteLine(test);
string test;
WriteLine(test);
erhalte ich als Ausgabe nur

Code: Alles auswählen

Hallo
Wäre es daher nicht evtl. eine Option, sämtlich in einem Skript verwendeten, lokalen Variablen am Ende des Skripts auf diese Weise zurückzusetzen?
Hab es gerade mal kurz getestet. Das bringt nichts, denn die Variable "test" ist ja immer noch definiert und verbraucht damit eben auch einen dieser ominösen, maximalen 200 freien Variablennamen. Nur weil du danach "test" wieder mit "string test;" definierst heisst das nicht das die variable damit wieder komplett gelöscht wird. Du setzt sie nur auf einen leeren Wert wodurch es eben dazu kommt das die zweite WriteLine() ausgabe keine Ausgabe macht. Wenn die Variable "test" nicht mehr definiert wäre müsste das zweite WriteLine() aber einen Fehler bringen. Leider also keine Lösung des Problems.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

dtp
Beiträge: 10658
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Fehler im Script aber Script testen geht ? ! ? ! ?

Beitrag von dtp » 12.02.2016, 16:13

jmaus hat geschrieben:Leider also keine Lösung des Problems.
Meine Hoffnung war, dass die CCU ggf. mehr leere, lokale Variablen akzeptiert. Dass eine erneute Variablendeklaration nicht zum Löschen der lokalen Variablen führt, ist klar. Sonst würden ja die meisten Skripte nicht funktionieren. ;)

By the way, gibt es eigentlich eine Möglichkeit, die Anzahl der lokalen Variablen zu zählen? Irgendwie muss die CCU ja auch auf die 200 als Grenze kommen.

Bis dann,

Thorsten
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Benutzeravatar
jmaus
Beiträge: 9844
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 462 Mal
Danksagung erhalten: 1863 Mal
Kontaktdaten:

Re: Fehler im Script aber Script testen geht ? ! ? ! ?

Beitrag von jmaus » 12.02.2016, 16:36

dtp hat geschrieben: By the way, gibt es eigentlich eine Möglichkeit, die Anzahl der lokalen Variablen zu zählen? Irgendwie muss die CCU ja auch auf die 200 als Grenze kommen.
Du kannst das nur über Umwege tun in dem du z.B. mein Beispielskript von hier (http://homematic-forum.de/forum/viewtop ... 88#p254999) in einem neuen Programm temporär einfügst und dann "Fehler prüfen" drückst. Auf einem frischen System sollte dann der Fehler bei variable i201 auftauchen was bedeutet das man bis zu 200 variablen eben definieren kann. Wenn du da jetzt weniger rausbekommst liegt das eben daran das die CCU bereits freie Plätze reserviert hat und somit kannst du die anzahl der verbrauchten freien Variablennamen somit etwas abschätzen.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Benutzeravatar
joni-blue
Beiträge: 1171
Registriert: 04.01.2012, 12:20
System: CCU
Wohnort: Hannover
Hat sich bedankt: 6 Mal
Danksagung erhalten: 1 Mal

Re: Fehler im Script aber Script testen geht ? ! ? ! ?

Beitrag von joni-blue » 12.02.2016, 21:26

jmaus hat geschrieben:
dtp hat geschrieben: By the way, gibt es eigentlich eine Möglichkeit, die Anzahl der lokalen Variablen zu zählen? Irgendwie muss die CCU ja auch auf die 200 als Grenze kommen.
Du kannst das nur über Umwege tun in dem du z.B. mein Beispielskript von hier (http://homematic-forum.de/forum/viewtop ... 88#p254999) in einem neuen Programm temporär einfügst und dann "Fehler prüfen" drückst. Auf einem frischen System sollte dann der Fehler bei variable i201 auftauchen was bedeutet das man bis zu 200 variablen eben definieren kann. Wenn du da jetzt weniger rausbekommst liegt das eben daran das die CCU bereits freie Plätze reserviert hat und somit kannst du die anzahl der verbrauchten freien Variablennamen somit etwas abschätzen.
kann mir mal einer von euch bitte sagen was alles zu den Lokalen Variablen zählt? string / var / usw...
Reboot tut gut ! ! !

Benutzeravatar
jmaus
Beiträge: 9844
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 462 Mal
Danksagung erhalten: 1863 Mal
Kontaktdaten:

Re: Fehler im Script aber Script testen geht ? ! ? ! ?

Beitrag von jmaus » 12.02.2016, 21:34

joni-blue hat geschrieben: kann mir mal einer von euch bitte sagen was alles zu den Lokalen Variablen zählt? string / var / usw...
Bei ReGaHSS Scripten gibt es keine Unterscheidung zwischen lokalen und globalen variablen innerhalb eines Scripts sondern alle variablen innerhalb von Scripts die man mit string, var, usw. definiert (sollten) ihre Gültigkeit bei Ende eines Scripts verlieren - sie sind/sollten also immer lokal auf das Script in dem sie definiert werden begrenzt sein (was leider gerade nicht der fall ist – ergo die Scriptprobleme die hier beschreiben werden.
Es gibt nur Scriptvariablen (string, var, integer, usw.) und eben CCU Systemvariablen die man mit dom.GetObject(...) ansprechend kann/muss. Und das hier geschilderte Problem trifft eben "nur" auf die Scriptvariablen zu die man in scripts selbst definieren kann.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Benutzeravatar
joni-blue
Beiträge: 1171
Registriert: 04.01.2012, 12:20
System: CCU
Wohnort: Hannover
Hat sich bedankt: 6 Mal
Danksagung erhalten: 1 Mal

Re: Fehler im Script aber Script testen geht ? ! ? ! ?

Beitrag von joni-blue » 12.02.2016, 21:44

jmaus hat geschrieben:
joni-blue hat geschrieben: kann mir mal einer von euch bitte sagen was alles zu den Lokalen Variablen zählt? string / var / usw...
Bei ReGaHSS Scripten gibt es keine Unterscheidung zwischen lokalen und globalen variablen innerhalb eines Scripts sondern alle variablen innerhalb von Scripts die man mit string, var, usw. definiert (sollten) ihre Gültigkeit bei Ende eines Scripts verlieren - sie sind/sollten also immer lokal auf das Script in dem sie definiert werden begrenzt sein (was leider gerade nicht der fall ist – ergo die Scriptprobleme die hier beschreiben werden.
Es gibt nur Scriptvariablen (string, var, integer, usw.) und eben CCU Systemvariablen die man mit dom.GetObject(...) ansprechend kann/muss. Und das hier geschilderte Problem trifft eben "nur" auf die Scriptvariablen zu die man in scripts selbst definieren kann.
sorry aber jetzt das ganze nochmal für dumme, hast due ein Beispiel richtig falsch?
Reboot tut gut ! ! !

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: AW: Fehler im Script aber Script testen geht ? ! ? ! ?

Beitrag von Xel66 » 13.02.2016, 04:43

Es gibt weder ein richtiges noch ein falsches Beispiel. Jedes Script und jede Variable ist von diesem Problem betroffen, egal welchen Typ diese Variable hat. Die CCU verträgt insgesamt nur 200 interne Variablen. Da zählt jede einzelne Variable, die Du in irgendeinem Script definierst. Die CCU behandelt alle Variablen als global und nicht auf einzelne Scripts bezogen. Das kann man zwar auch zu seinem Vorteil nutzen um Inhalte von einem Script ins andere zu übergeben, ist aber eigentlich in der IT unüblich. Für diesen Zweck gibt es Systemvariablen. Die Gültigkeit scriptinterner Variablen sollte nur auf die Laufzeit des Scripts beschränkt sein, aber die CCU behält sie im (begrenzten) Cache und löscht sie nicht wieder. Auch nicht, wenn ihr der Speicherplatz ausgeht. So läuft sie in ein Problem, bei dem Scripte einfach nicht mehr abgearbeitet werden können.

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

dtp
Beiträge: 10658
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: Fehler im Script aber Script testen geht ? ! ? ! ?

Beitrag von dtp » 15.02.2016, 15:12

jmaus hat geschrieben:
dtp hat geschrieben: By the way, gibt es eigentlich eine Möglichkeit, die Anzahl der lokalen Variablen zu zählen? Irgendwie muss die CCU ja auch auf die 200 als Grenze kommen.
Du kannst das nur über Umwege tun in dem du z.B. mein Beispielskript von hier (http://homematic-forum.de/forum/viewtop ... 88#p254999) in einem neuen Programm temporär einfügst und dann "Fehler prüfen" drückst.
Damit bringe ich dann ja meine CCU gezielt zum Absturz, oder? Muss nicht wirklich sein, finde ich. ;)
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

dtp
Beiträge: 10658
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Re: AW: Fehler im Script aber Script testen geht ? ! ? ! ?

Beitrag von dtp » 15.02.2016, 15:18

Xel66 hat geschrieben:Das kann man zwar auch zu seinem Vorteil nutzen um Inhalte von einem Script ins andere zu übergeben, ist aber eigentlich in der IT unüblich.
Vor allen Dingen birgt dies das Risiko, dass Skripte, die zunächst laufen, nach einem Neustart der CCU plötzlich nicht mehr funktionieren, weil die entsprechenden Variablen noch nicht definiert sind.

Dieser Bug sollte wirklich schleunigst von eQ-3 beseitigt werden. Oder es müsste ein Lösung geben, sämtliche lokalen Skript-Variablen per WebUI-Skript ein Mal am Tag zurück zu setzen.

Gruß,

Thorsten
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Antworten

Zurück zu „HomeMatic - bekannte Bugs“