Link/Skript-Sammlung

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Monck
Beiträge: 168
Registriert: 13.03.2011, 22:07
Danksagung erhalten: 1 Mal

Re: Script Probleme (überarbeitete Skripts)

Beitrag von Monck » 06.12.2015, 10:16

Ich habe bei mir so eine Art Betriebsstundenzähler für die Heizung und einige Stromverbraucher laufen. Mit diesen Daten rechne ich den Gasverbrauch, Tankinhakt, Stromkosten usw. aus.
Wenn ich für jedes Script eigene lokale Variablenamen verwende, also für Strom Std, Tag, Woche, Monat usw. kommt beim Aufruf eines weiteren Scripts mit vielen neuen Variablen der besagte Fehler.
Nach einem Reboot läuft alles wieder eine paar Tage ohne Probleme bis dann das Spiel von vorne los geht.

Arbeite ich allerdings mit einer geringen Menge an lokalen Variablen und verwende statt dessen direkt die Systemveariablen mit dom.Getobject, laufen die Scripts einwandfrei (sind halt nicht mehr so leicht lesbar) - das jetzt seit mehreren Monaten. Wie kann man sich die Größe des freien Speichers ansehen?
Für mich ist es aus der Beobachtung heraus schon ein Speicherproblem. Es scheint so, als werden die lokalen Variablen nach Scriptende nicht freigegeben und irgendwann läuft der Speicher über.

LG Andy

Gofel
Beiträge: 57
Registriert: 17.01.2015, 15:30

Re: Script Probleme (überarbeitete Skripts)

Beitrag von Gofel » 06.12.2015, 19:36

Auf der Status Seite von CUxD sieht man man den gesamt genutzten Speicher, das sollte aber wenig aussagekräftig sein. Das der Speicher ernsthaft voll ist kann ich mir schlecht vorestellen. Allerdings habe auch ich einige Skripte auf möglichst wenige Variablen und viel dom.Getobject umgestellt und konnte subjektiv ein stabilitäts Plus festellen. Ist natürlich alles wieder nur im Voodoo Bereich,.. uptime 3 Tage

Benutzeravatar
AndiN
Beiträge: 2451
Registriert: 10.06.2015, 08:54
Wohnort: Hennef
Hat sich bedankt: 2 Mal
Danksagung erhalten: 2 Mal

Re: Script Probleme (überarbeitete Skripts)

Beitrag von AndiN » 06.12.2015, 20:05

Also bei mir läuft das System absolut stabil. Letztendlich habe ich max. 52 Variablen im Einsatz (tmpA-tmpZ und tmpA1-tmpZ1).
Inwieweit das mit der Anzahl zusammen hängt weiß ich nicht. Es gibt auch die Theorie, dass eine Variable nicht für zwei verschiedene Typen (Bsp: Mal als String, dann als Zahl und vielleicht dann auch noch als Boolean) verwendet werden darf.

So oder so. Seit dem ich das via Voodoo umgechrieben habe, habe ich 0 Probleme mehr mit den Skripts. Allerdings habe ich auch kein neues komplexes Skript mehr implementiert. DWD, Feiertag und Service all waren die Auslöser im Regelfall.

Andi
Greenhorn

Letzter Reboot: 01.09.19 - FW Update // Uptime-Rekord: 65 Tage
Systeminfos: Raspberry Firmware: 3.47.15.20190831, 125 Geräte
Addons: Drucken 1.2a - HQ WebUI 2.5.7 - XML-API 1.20 - CUx-Daemon 2.3.3 - E-Mail 1.6.8c - hm_pdetect 1.5 - VPN cloudmatic
System angebunden: 3 Roomba 650 - Sprachausgabe via Home24 Media - Zentrale: Asus TF103 mit Home24 Tablet
- Diverse Links

Benutzeravatar
AndiN
Beiträge: 2451
Registriert: 10.06.2015, 08:54
Wohnort: Hennef
Hat sich bedankt: 2 Mal
Danksagung erhalten: 2 Mal

Re: Script Probleme (überarbeitete Skripts)

Beitrag von AndiN » 20.12.2015, 00:06

Auch schön...

habe nach 25 Tagen ohne Probleme meine CCU zum Absturz gebracht mit diesem Code:

Code: Alles auswählen

if (dom.GetObject("SV_Waschmaschine").State() == 2)||dom.GetObject("SV_Waschmaschine").State() == 3){
Im Skript Fenster bei "Fehlerprüfung" kam eine Fehlermeldung (sinngemäß Admin Rechte wären notwendig) und dann war im Programm auch kein Skript mehr vorhanden (doof zu beschreiben).

WebUI reagierte nicht mehr.

Erst dachte ich an einen doofen Zufall. Programmzeile wieder rein und gleicher Effekt.

Mit dem "richtigen" Code läuft es ohne Probleme

Code: Alles auswählen

if((dom.GetObject("SV_Waschmaschine").State() == 2) || (dom.GetObject("SV_Waschmaschine").State() == 3)) {
Was so ein paar Klammern doch ausmachen ;-)
Greenhorn

Letzter Reboot: 01.09.19 - FW Update // Uptime-Rekord: 65 Tage
Systeminfos: Raspberry Firmware: 3.47.15.20190831, 125 Geräte
Addons: Drucken 1.2a - HQ WebUI 2.5.7 - XML-API 1.20 - CUx-Daemon 2.3.3 - E-Mail 1.6.8c - hm_pdetect 1.5 - VPN cloudmatic
System angebunden: 3 Roomba 650 - Sprachausgabe via Home24 Media - Zentrale: Asus TF103 mit Home24 Tablet
- Diverse Links

BadenPower

Re: Script Probleme (überarbeitete Skripts)

Beitrag von BadenPower » 20.12.2015, 00:25

AndiN hat geschrieben:

Code: Alles auswählen

if (dom.GetObject("SV_Waschmaschine").State() == 2)||dom.GetObject("SV_Waschmaschine").State() == 3){
Sieht man doch auf einen Blick :wink: , dass zwischen dem Operator "or" also || und dem Befehl dom.GetObject die geöffnete runde Klammer fehlt.
AndiN hat geschrieben: Was so ein paar Klammern doch ausmachen ;-)
Nicht die Anzahl von Klammern ist entscheidend, sondern ob die Klammern auch paarweise vorhanden sind.


.

Benutzeravatar
AndiN
Beiträge: 2451
Registriert: 10.06.2015, 08:54
Wohnort: Hennef
Hat sich bedankt: 2 Mal
Danksagung erhalten: 2 Mal

Re: Script Probleme (überarbeitete Skripts)

Beitrag von AndiN » 20.12.2015, 10:31

@Badenpower: Es ging nicht um den Syntaxfehler, sondern die Tatsache, das das schon reicht um die CCU zum Absturz zu bringen.
Greenhorn

Letzter Reboot: 01.09.19 - FW Update // Uptime-Rekord: 65 Tage
Systeminfos: Raspberry Firmware: 3.47.15.20190831, 125 Geräte
Addons: Drucken 1.2a - HQ WebUI 2.5.7 - XML-API 1.20 - CUx-Daemon 2.3.3 - E-Mail 1.6.8c - hm_pdetect 1.5 - VPN cloudmatic
System angebunden: 3 Roomba 650 - Sprachausgabe via Home24 Media - Zentrale: Asus TF103 mit Home24 Tablet
- Diverse Links

Benutzeravatar
koppenho
Beiträge: 221
Registriert: 27.12.2013, 09:12
Wohnort: Bad Neustadt, Deutschland

Re: Script Probleme (überarbeitete Skripts)

Beitrag von koppenho » 21.12.2015, 07:40

Hallo,

darf ich hier mal kurz "offtopic" werden?
In vielen Scripten hier im Forum sehe ich neuerdings Hinweise der Art "auf tmp-Variablen umgeschrieben".
Das scheint ein Workaround für ein Scriptingproblem zu sein, bei der einmal angelegte Variablen nicht mehr freigegeben werden.
Ich habe im Forum nach der Quelle dieser Information gesucht, war aber erfolglos. Das hat doch bestimmt schon jemand dokumentiert. Könnt Ihr mir einen Link nennen?
Danke.
--
Andreas
--------------------------------------------
Hauptwohnung: RaspberryMatic mit 288 Kanäle in 100 Geräten und 132 CUxD-Kanäle in 32 CUxD-Geräten
Zweitwohnung: CCU2 mit 16 Kanäle in 6 Geräten und 12 CUxD-Kanäle in 4 CUxD-Geräten
--------------------------------------------


Benutzeravatar
AndiN
Beiträge: 2451
Registriert: 10.06.2015, 08:54
Wohnort: Hennef
Hat sich bedankt: 2 Mal
Danksagung erhalten: 2 Mal

Re: Script Probleme (überarbeitete Skripts)

Beitrag von AndiN » 21.12.2015, 08:24

Hallo,

schau mal auf der ersten Seite. Da gibt es einen Link. Da wird nur über den Effekt gesprochen und das dieser Workarround scheinbar hilft. Aber offiziell gibt es keine Information seitens des Herstellers. Letztendlich ist das REGA wohl auch nur zu gekauft ;-(

Andi
Greenhorn

Letzter Reboot: 01.09.19 - FW Update // Uptime-Rekord: 65 Tage
Systeminfos: Raspberry Firmware: 3.47.15.20190831, 125 Geräte
Addons: Drucken 1.2a - HQ WebUI 2.5.7 - XML-API 1.20 - CUx-Daemon 2.3.3 - E-Mail 1.6.8c - hm_pdetect 1.5 - VPN cloudmatic
System angebunden: 3 Roomba 650 - Sprachausgabe via Home24 Media - Zentrale: Asus TF103 mit Home24 Tablet
- Diverse Links

Benutzeravatar
koppenho
Beiträge: 221
Registriert: 27.12.2013, 09:12
Wohnort: Bad Neustadt, Deutschland

Re: Script Probleme (überarbeitete Skripts)

Beitrag von koppenho » 21.12.2015, 22:33

AndiN hat geschrieben:schau mal auf der ersten Seite. Da gibt es einen Link. Da wird nur über den Effekt gesprochen und das dieser Workarround scheinbar hilft.
Danke Andi und hug0. Dann habe ich den Link ja doch schon gefunden. Ich hatte gehofft, dass es schon etwas mehr Informationen gibt. Klar, nicht von eq-3.

Kurz zusammengefaßt: Einfach "tmp" als Präfix vor die Variablennamen setzen und schon wird eine Variable nach Ende eines Scripts wieder gelöscht und bleibt nicht als Leiche im System. Als zweite Maßnahme eventuell noch kurze Variablennamen verwenden um den Resourcen-Verbrauch gering zu halten. Und das war's schon.

Interessant. Unerwartet. eq-3 schafft es immer wieder mich zu überraschen. :(
--
Andreas
--------------------------------------------
Hauptwohnung: RaspberryMatic mit 288 Kanäle in 100 Geräten und 132 CUxD-Kanäle in 32 CUxD-Geräten
Zweitwohnung: CCU2 mit 16 Kanäle in 6 Geräten und 12 CUxD-Kanäle in 4 CUxD-Geräten
--------------------------------------------

Antworten

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