Link/Skript-Sammlung

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Benutzeravatar
AndiN
Beiträge: 2425
Registriert: 10.06.2015, 08:54
Wohnort: Hennef

Re: Script Probleme (überarbeitete Skripts)

Beitrag von AndiN » 26.11.2015, 15:58

@blackhole:
Okay, genau das meinte ich. Speicher. Als ob der nicht freigeben wird und es da ein Overflow gibt.
Dynamische Typbindung ist der automatische, problemfreie Wechsel von z.B. Integer nach String ohne Neuinitialisierung
das könnte ich jetzt wie gesagt nicht bestätigen. Allerdings könnte ich es mir Vorstellen. In einem Skript versuche ich mit einer Boolean zu rechnen, weil die CCU die Änderung von Boolean auf Integer nicht möchte. Die Fehlerprüfung würde dann aber nicht vor den Baum laufen (Plausibilität wäre ja gegeben). Aber beim Skript testen würde es dann vor den Baum laufen. Oder? Und in den Fällen ist es genau umgekehrt.

@Elec:
Da wir ja die selben Ansätze hatten und unterschiedlich umgesetzt haben. Wie viele Variablen hast Du mit Deinem Initiatlisierungsskript initiert? Du musst dann ja auch bei jeder Änderung (DWD als Paradebeispiel, weil das ja immer weiter optimiert und erweitert wird... Danke nochmal an blackhole) anpassen.

Also ich habe derzeit 52 Variablen und läuft stabil. Die haben in jedem Skript eine andere Funktion (string, integer, Boolean). Nur mal zum Orientieren.

Andi
Greenhorn

Letzter Reboot: 23.06.19 - FW Update // Uptime-Rekord: 65 Tage
Systeminfos: Raspberry Firmware: 3.45.7.20190622, 125 Geräte
Addons: Drucken 1.2a - HQ WebUI 2.5.7 - XML-API 1.20 - CUx-Daemon 2.3.1 - 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
blackhole
Beiträge: 1562
Registriert: 21.07.2015, 14:03

Re: Script Probleme (überarbeitete Skripts)

Beitrag von blackhole » 26.11.2015, 16:10

Ich versuche es anders und vielleicht verständlicher zu erklären:

Wenn Du eine fixe Anzahl von sagen wir 200 Variablen hättest, ist es ausgeschlossen, dass diese überlaufen,
da diese selbst bei 100% Auslastung maximal 10MB (rechnerisch) und 15MB (inkl. großzügigem Overhead) belegen können.

Werde aus 200 Variablen "plötzlich" 400 bis zum Limit zwangsbetankte Variablen werden (durch was auch immer) interessiert das den Speicher der CCU immer noch nicht, da wir dann von höchstens 30MB sprechen. Und ja, 600 stellen auch noch kein Problem dar, was den Speicher angeht.
Zuletzt geändert von blackhole am 26.11.2015, 16:13, insgesamt 1-mal geändert.

Elec
Beiträge: 350
Registriert: 18.03.2015, 14:01
Wohnort: Bochum

Re: Script Probleme (überarbeitete Skripts)

Beitrag von Elec » 26.11.2015, 16:13

AndiN hat geschrieben:@Elec:
Da wir ja die selben Ansätze hatten und unterschiedlich umgesetzt haben. Wie viele Variablen hast Du mit Deinem Initiatlisierungsskript initiert? Du musst dann ja auch bei jeder Änderung (DWD als Paradebeispiel, weil das ja immer weiter optimiert und erweitert wird... Danke nochmal an blackhole) anpassen.

Also ich habe derzeit 52 Variablen und läuft stabil. Die haben in jedem Skript eine andere Funktion (string, integer, Boolean). Nur mal zum Orientieren.

Andi
Müsste ich mal durchzählen, wird aber frühestens am Wochenende was. Sollten aber auch > 50 sein.
Meine Scripte sind allerdings eher statisch, da ändert sich also nur ganz selten mal was. DWD z.B. setze ich nicht ein.

Vielleicht auch noch relevant: An Zusatzsoftware habe ich nur die XML-API auf der CCU, also kein CuxD, kein ccu.io, etc. und trotzdem hatte ich vor meiner Optimierung den Fehler.

Benutzeravatar
blackhole
Beiträge: 1562
Registriert: 21.07.2015, 14:03

Re: Script Probleme (überarbeitete Skripts)

Beitrag von blackhole » 26.11.2015, 16:16

Elec hat geschrieben:An Zusatzsoftware habe ich nur die XML-API auf der CCU, also kein CuxD, kein ccu.io, etc. und trotzdem hatte ich vor meiner Optimierung den Fehler.
Wann ist der Fehler aufgetreten und wie hat er sich geäußert? Bei welchem Skript?

Benutzeravatar
AndiN
Beiträge: 2425
Registriert: 10.06.2015, 08:54
Wohnort: Hennef

Re: Script Probleme (überarbeitete Skripts)

Beitrag von AndiN » 26.11.2015, 16:22

@Blachhole: Ich hatte Dich schon verstanden :D

Zu den Fehlern.

Die tauchen plötzlich auf. Meistens zu lesen bei "Feiertage, Wettercom, DWD und bei Service". Also Skripte mit vielen Variablen.

Bei mir war es oft Feiertage. Läuft Tagelang ohne Probleme. Plötzlich im Log ein Fehler. Man sucht das Skript. "Skript testen" läuft... Aber "Fehlerprüfung" Fehler und dann an einer Stelle wo Du keinen Fehler sehen kannst.

Zeitweise bin ich auf Systemvariablen umgeschwenkt bei betroffenen Skripts. Aber irgendwann klappte es nicht.

Denke der Speicher liegt bei 1 MB ;-)

Andi
Greenhorn

Letzter Reboot: 23.06.19 - FW Update // Uptime-Rekord: 65 Tage
Systeminfos: Raspberry Firmware: 3.45.7.20190622, 125 Geräte
Addons: Drucken 1.2a - HQ WebUI 2.5.7 - XML-API 1.20 - CUx-Daemon 2.3.1 - 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: 2425
Registriert: 10.06.2015, 08:54
Wohnort: Hennef

Re: Script Probleme (überarbeitete Skripts)

Beitrag von AndiN » 26.11.2015, 16:26

@Elec: Wäre ja mal interessant zu wissen. Vor allem: Was passiert, wenn Du das Skript von DWD übernimmst. Da sind knapp 50 Variablen drin. Die haben alle Namen die es nicht geben wird bei Dir. Also 50 neue Variablen. Wenn der Fehler auftritt... dann doch 1 MB... Ups... gleich schlägt mich blackhole.... :roll:
Greenhorn

Letzter Reboot: 23.06.19 - FW Update // Uptime-Rekord: 65 Tage
Systeminfos: Raspberry Firmware: 3.45.7.20190622, 125 Geräte
Addons: Drucken 1.2a - HQ WebUI 2.5.7 - XML-API 1.20 - CUx-Daemon 2.3.1 - 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

Elec
Beiträge: 350
Registriert: 18.03.2015, 14:01
Wohnort: Bochum

Re: Script Probleme (überarbeitete Skripts)

Beitrag von Elec » 26.11.2015, 16:27

blackhole hat geschrieben:Ich versuche es anders und vielleicht verständlicher zu erklären:

Wenn Du eine fixe Anzahl von sagen wir 200 Variablen hättest, ist es ausgeschlossen, dass diese überlaufen,
da diese selbst bei 100% Auslastung maximal 10MB (rechnerisch) und 15MB (inkl. großzügigem Overhead) belegen können.

Werde aus 200 Variablen "plötzlich" 400 bis zum Limit zwangsbetankte Variablen werden (durch was auch immer) interessiert das den Speicher der CCU immer noch nicht, da wir dann von höchstens 30MB sprechen. Und ja, 600 stellen auch noch kein Problem dar, was den Speicher angeht.
Ich denke auch, dass es nicht am Speicherplatz an sich liegt, den die Variablen belegen.

Mal ein plastisches Beispiel:
Wir haben 5 Integer-Variablen, die je 2 Byte im Speicher belegen und dort auch wie auf einer Perlenschnur aneinandergereiht sind.
Die erste Variable belegt die Bytes 1 und 2 im Speicher, die zweite die Bytes 3 und 4, die dritte die Bytes 5 und 6, usw.
Nun wird der Typ der zweiten Variable in - sagen wir - String geändert und so braucht die plötzlich mehr Platz.
An der Stelle weiß ich nun nicht genau, wie das technisch funktioniert.

Möglichkeit 1.) Die sucht sich eine Stelle im Speicher, wo noch Platz genug ist und schreibt sich dort rein, die Bytes 3 und 4 werden also freigegeben
Möglichkeit 2.) Sie macht sich dort, wo sie ist, breiter und verschiebt alle anderen Variablen in einen anderen Speicherbereich.

Meine Vermutung ist halt, dass bei diesem Verschieben irgendwas unter bestimmten Umständen (die ich auch noch nicht kenne) schief läuft und so ggf. bereits belegte Speicherbereiche überschrieben werden. Genau das wollte ich mit meiner einmaligen Initialisierung ja ausschließen.
Bevor irgendein Script läuft, werden bei mir nun alle Variablen einmalig definiert und somit ein fester Speicherbereich zugewiesen, der sich im weiteren Verlauf nicht mehr ändert.

Soweit meine Theorie, die sich aber in der Praxis bisher als nützlich erweisen hat.
Es mag sein, dass meine Theorie völliger Quatsch ist, aber für mich zählt das (bisher) positive Ergebnis. Aber früher gab es auch Menschen, die dachten, dass die Erde eine Scheibe ist ;-)

Benutzeravatar
blackhole
Beiträge: 1562
Registriert: 21.07.2015, 14:03

Re: Script Probleme (überarbeitete Skripts)

Beitrag von blackhole » 26.11.2015, 16:33

AndiN hat geschrieben:gleich schlägt mich blackhole
Nein, nein, auf gar keinen Fall.
Ich klinke mich auch hier jetzt langsam aus, da ich die Sache von einer anderen Seite betrachte und das meine ich völlig wertfrei.
Wichtig ist, dass euch geholfen ist, auch wenn meines Erachtens viel zu viel Voodoo und viel zu wenig Fakten im Spiel sind.

Elec
Beiträge: 350
Registriert: 18.03.2015, 14:01
Wohnort: Bochum

Re: Script Probleme (überarbeitete Skripts)

Beitrag von Elec » 26.11.2015, 16:47

blackhole hat geschrieben:
Elec hat geschrieben:An Zusatzsoftware habe ich nur die XML-API auf der CCU, also kein CuxD, kein ccu.io, etc. und trotzdem hatte ich vor meiner Optimierung den Fehler.
Wann ist der Fehler aufgetreten und wie hat er sich geäußert? Bei welchem Skript?
Der Fehler ist irgendwann aufgetreten, nachdem die Scripte schon teils monatelang problemlos liefen.
Aufgefallen ist das, als irgendwann mein Wecker nicht mehr ansprang und ich habe vor dem ersten Auftreten definitiv nichts verändert.
Die Scriptprüfung in meinem Weckerscript zeigte mir dann auch einen Scriptfehler an.
Da ich mir sicher war, dass da kein Fehler vorliegt, habe ich die CCU neu gestartet und alles lief wieder. Erneute Prüfung des Weckerscripts: Kein Fehler.

Am nächsten Tag stieg dann mein Wetterscript aus (wie gesagt, bin gerade nicht zuhause, ist aber nicht das DWD-Script, sondern holt sich die aktuellen Wetterdaten von einer Station in meiner Nähe) - mein Tablett zeigte mir jedenfalls keine Wetterdaten mehr an.
Auch in diesem Script wurde mir ein Fehler angezeigt, der nach erneutem CCU-Start wieder weg war.

So ging das einige Tage, ohne dass ich irgendwelche Regelmäßigkeiten daraus ableiten könnte. Auch, welches Script ausstieg, war unterschiedlich. Mal hatte ich ein paar Tage Ruhe, an anderen Tagen trat es mehrfach auf.

Irgendwann fing ich dann halt an, die Scripte aufzuräumen und habe eben dieses Initialisierungsscript gebaut und gleichzeitig die Typendeklaration in den Scripten entfernt. Seitdem habe ich Ruhe und das ist nun seit ca. 4 Wochen so.

Mir fällt aber gerade was ein, was auch nicht unwichtig sein könnte:
Mit dem Aufräumen begann ich, als ein Script wieder einen Fehler bei der Prüfung anzeigte. Ich habe da die CCU nicht neu gestartet.
Ich glaube, ich habe dann das Initialisierungsscript gestartet, bin dann ins vorher noch angeblich fehlerhafte Script und die Fehlerprüfung zeigte nun keinen Fehler mehr an. Ich will jetzt aber auch nicht die Hand dafür ins Feuer legen...

@AndiN: DWD braucht doch CuxD, oder? Das möchte ich meiner CCU eher nicht antun. Im Sinne der Stabilität packe ich nur das drauf, was ich tatsächlich brauche und aktuell bin ich echt froh, dass alles stabil läuft :|

Benutzeravatar
blackhole
Beiträge: 1562
Registriert: 21.07.2015, 14:03

Re: Script Probleme (überarbeitete Skripts)

Beitrag von blackhole » 26.11.2015, 16:52

Deine Beschreibung ordne ich unter Punkt 1 ein und bin mir ziemlich sicher, dass ich damit richtig liege, zumal du kein ccu.io am Start hast und sehr wahrscheinlich zwischen dem Auftreten des Fehlers etwas Relevantes in einem der Skripte geändert hast. (Voodoo v2). :wink:

Antworten

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