Fehler im Script aber Script testen geht ? ! ? ! ?
Moderator: Co-Administratoren
- jmaus
- Beiträge: 9865
- Registriert: 17.02.2015, 14:45
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Dresden
- Hat sich bedankt: 464 Mal
- Danksagung erhalten: 1883 Mal
- Kontaktdaten:
Re: Fehler im Script aber Script testen geht ? ! ? ! ?
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.dtp hat geschrieben: Wenn ich folgendes Skript teste
erhalte ich als Ausgabe nurCode: Alles auswählen
string test = "Hallo"; WriteLine(test); string test; WriteLine(test);
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?Code: Alles auswählen
Hallo
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal /
-
- Beiträge: 10660
- Registriert: 21.09.2012, 08:09
- System: CCU
- Wohnort: Stuttgart
- Hat sich bedankt: 321 Mal
- Danksagung erhalten: 501 Mal
Re: Fehler im Script aber Script testen geht ? ! ? ! ?
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.jmaus hat geschrieben:Leider also keine Lösung des Problems.
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.
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.
- jmaus
- Beiträge: 9865
- Registriert: 17.02.2015, 14:45
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Dresden
- Hat sich bedankt: 464 Mal
- Danksagung erhalten: 1883 Mal
- Kontaktdaten:
Re: Fehler im Script aber Script testen geht ? ! ? ! ?
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.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.
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal /
- 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 ? ! ? ! ?
kann mir mal einer von euch bitte sagen was alles zu den Lokalen Variablen zählt? string / var / usw...jmaus hat geschrieben: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.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.
Reboot tut gut ! ! !
- jmaus
- Beiträge: 9865
- Registriert: 17.02.2015, 14:45
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Dresden
- Hat sich bedankt: 464 Mal
- Danksagung erhalten: 1883 Mal
- Kontaktdaten:
Re: Fehler im Script aber Script testen geht ? ! ? ! ?
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.joni-blue hat geschrieben: kann mir mal einer von euch bitte sagen was alles zu den Lokalen Variablen zählt? string / var / usw...
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.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal /
- 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 ? ! ? ! ?
sorry aber jetzt das ganze nochmal für dumme, hast due ein Beispiel richtig falsch?jmaus hat geschrieben: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.joni-blue hat geschrieben: kann mir mal einer von euch bitte sagen was alles zu den Lokalen Variablen zählt? string / var / usw...
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.
Reboot tut gut ! ! !
-
- Beiträge: 14169
- Registriert: 08.05.2013, 23:33
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Nordwürttemberg
- Hat sich bedankt: 586 Mal
- Danksagung erhalten: 1501 Mal
Re: AW: Fehler im Script aber Script testen geht ? ! ? ! ?
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
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
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
-
- Beiträge: 10660
- Registriert: 21.09.2012, 08:09
- System: CCU
- Wohnort: Stuttgart
- Hat sich bedankt: 321 Mal
- Danksagung erhalten: 501 Mal
Re: Fehler im Script aber Script testen geht ? ! ? ! ?
Damit bringe ich dann ja meine CCU gezielt zum Absturz, oder? Muss nicht wirklich sein, finde ich.jmaus hat geschrieben: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.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.
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.
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.
-
- Beiträge: 10660
- Registriert: 21.09.2012, 08:09
- System: CCU
- Wohnort: Stuttgart
- Hat sich bedankt: 321 Mal
- Danksagung erhalten: 501 Mal
Re: AW: Fehler im Script aber Script testen geht ? ! ? ! ?
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.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.
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.
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.