
In letzter Zeit hatte ich immer wieder unerklärliche Abstürze meiner Domovea, d.h. sie blieb einfach stehen und führte keine Sequenzen mehr aus.
Nun, ich hatte schon öfters hier geschrieben, dass meine gute alte Domo durch zyklisch aufgerufene Sequenzen ziemlich ausgelastet ist, aber ich hatte eigentlich schon länger keine neuen Sequenzen mehr hinzugefügt und eine Timing-Kontrolle (Ausgabe von Kontrollmeldungen über KNX beim Aufruf und Ende von Sequenzen) hatte gezeigt, dass oft noch größere Zeitlücken zwischen den Aufrufen einzelner Sequenzen bestanden.
Was hatte sich also geändert?
Nun, ich hatte mir letztes Jahr weitere KNX Elektrozähler zugelegt, für PV Anlage und Batteriespeicher. D.h. die Domo hatte demzufolge mehr an Zählerdaten zu verarbeiten. Zudem hatte ich mir Daten einzelner Phasen am Hauptzähler ausgeben lassen um die Belastung je Phase zu protokollieren. Vor allem die aktuellen "Leistungsdaten" (Watt) wurden dabei 1 mal je Minute übertragen.
Um es kurz zu machen: darin lag wohl die Ursache für die Abstürze.
Warum?
Die Domovea hört alle Gruppenadressen aller intern eingetragenen Geräte mit und speichert die Daten eine Zeit lang in einem Cache. Somit müssen diese Daten bei Bedarf nicht angefragt werden, wenn sie zum Beispiel in einer Sequenz benötigt werden.
Anscheinend gibt es aber ein Problem beim Einlesen von 4-Byte Gleitkomma, wie er bei Leistungsdaten von Zählern verwendet wird. Ob das auch für andere 4-Byte Datentypen gilt, kann ich nicht sicher sagen. Bei mir jedenfalls traten öfters Probleme bei der Interpretation der eingelesen Daten auf, die sich auch im Domovea Log zeigten.
Zusätzlich hatte ich immer wieder unerklärliche Fehler in allen möglichen Sequenzen, die an unterschiedlichsten Stellen zum Abbruch der Sequenz geführt hatten (wie man in der Domovea Fehler in Sequenzen aufspüren und protokollieren kann, hatte ich viele Seiten früher in diesem Thread mal erläutert).
Jedenfalls lag die Vermutung nahe, dass die Analyse von (eventuell unvollständig) eingelesenen KNX Daten fehlerhaft ist und damit die Sequenz zum Absturz bringt, die gerade zufällig aktiv war. Anscheinend werden Fehler im KNX Interpreter nicht korrekt abgefangen. Es liegt die Vermutung nahe, dass so auch interne Prozesse wie der Sequenz-Aufruf-Thread oder andere interne Funktionen zum Absturz gebracht werden können und deshalb letztendlich die Domovea stehenbleibt.
Ich kann dabei nicht sagen, ob die Probleme im KNX Interpreter nur bei mir auftreten weil der Bus vielleicht nicht korrekt arbeitet. Jedenfalls konnte ich im ETS 5 Busmonitor keine Fehler erkennen, allerdings stehen mir darüberhinaus auch keine weiteren Bus-Analysetools zur Verfügung. Im täglichen Betrieb treten eigentlich keine Probleme mit irgendwelchen Geräten auf.
Nun, was kann man tun um die Abstürze zu verhindern?
Ich habe dazu jetzt eine Lösung gefunden, die recht gut funktioniert: Ich schreibe am Ende jeder Sequenz, die zyklisch aufgerufen wird, einen 4-Byte Wert auf den Bus (dazu gebe ich in jeder Sequenz einen (jeweils anderen) 4-Byte Wert als signed Integer aus).
Anscheinend bringt das den internen KNX Interpreter wieder in Form, jedenfalls habe ich jetzt nur noch sehr selten mal einen Sequenz-Abbruch und eigentlich seit 2 Wochen keine Abstürze der Domovea mehr.
Also falls jemand ähnliche Probleme mit seiner Domovea hat (vor allem wenn im Domovea Log Fehler bei der Analyse von KNX Daten auftreten), könnte dieser Hinweis vielleicht helfen.
Grüße,
Jörg



Einen Kommentar schreiben: