Nach Spannungsunterbrechung verliert die CCU3 die Verbindung zum RPC-Server

Begonnen von Dieter Rapp, 19 November 2021, 21:16:32

Vorheriges Thema - Nächstes Thema

Dieter Rapp

Hallo,
ich betreibe einen Raspberry Pi mit FHEM, an den eine CCU3 angekoppelt ist. Unter FHEM laufen RPC-Server für HmIP-RF und VirtualDevices. So werden die Daten der angeschlossenen Homematic-Geräte in regelmäßigen Abständen upgedatet, ohne dass ich mich in FHEM groß darum kümmern muss.

Nun kann es natürlich auch mal passieren, dass die Spannung zur CCU3 unterbrochen wird. Nachdem sie wieder anliegt, fährt die CCU3 ja selbständig wieder hoch. Und nach Abschluss des Boot-Vorgangs lassen sich die Homematic-Geräte auch wieder bedienen. Soweit, so gut. Allerdings werden die Daten der angeschlossenen Homematic-Geräte danach nicht mehr upgedatet. Obwohl die RPC-Server im FHEM laufen, passiert da nichts. Das liegt wohl daran, dass die RPC-Verbindungen nach dem Reboot der CCU3 dort nicht mehr bekannt sind und diese deshalb auch keine Aufrufe mehr an die RPC-Server absetzt.

Wenn ich set CCU3 rpcregister HmIP-RF und set CCU3 rpcregister VirtualDevices ausführe, werden die RPC-Server neu bei der CCU3 angemeldet und der Updates der Daten läuft wieder wie gewohnt. Die Lösung ist also relativ einfach. Allerdings möchte ich diese beiden Kommandos nicht in regelmäßigen Abständen präventiv absetzen. Jede Nacht um 1:00 Uhr wäre das zwar unkritisch, aber es könnte vielleicht zu wenig sein. Im schlimmsten Fall muss ich 24 Stunden warten, bis alles wieder wie gewohnt läuft.

Gibt es eine Möglichkeit zu erkennen, ob die CCU3 neu gestartet wurde oder mal eine Zeitlang die Verbindung verloren hat? Also so eine Art Health-Check. Dann könnte ich das abfragen, vielleicht alle 10 Minuten, und nur reagieren, wenn es nötig ist.

zap

Versuchs mal so:

Wenn ccu der Name des I/O (HMCCU) Device ist:

attr ccu ccuflags reconnect

Standardmäßig schickt HMCCU alle 300 Sekunden einen RPC Ping an die CCU. Dieses Intervall kann man mit dem Attribut "rpcPing" einstellen.
2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

Dieter Rapp

Danke für den Tipp. Das Attribute ccuflags steht bei mir schon auf procrpc,reconnect. Das Attribut rpcPingCCU hatte ich noch nicht, jetzt ist es da und auf 180 gestellt (3 Minuten). Ohne Definition, nehme ich an, wird der Defaultwert von 300 (5 Minuten) genommen. Ich denke, das sollte dazu führen, dass ein Verbindungsabbruch nach spätestens 3 Minuten bzw. 5 Minuten bemerkt und ein Reconnect eingeleitet wird.

Ich habe meine CCU3 mehrfach kurz vom Netz getrennt und dann beobachtet, was passiert. Es dauert so ca. eine Minute oder zwei, bis die blaue LED der CCU3 wieder normal leuchtet. Danach kann ich die Solltemperatur von Thermostaten ändern und das wird übernommen. Was allerdings nicht passiert, ist der Update der Anzeige in FHEM. Ich habe auch mal für mehrere Minuten die CCU3 von der Spannung getrennt und dann länger gewartet. Aber die Anzeige in FHEM wurde nicht mehr upgedatet.

Ich habe eine Lösung gefunden, wie das Problem zu lösen ist. Aber ehrlich gesagt, halte ich sie für ziemlich aufwendig:

  • In relativ kurzen Zeitabständen frage ich den Status der CCU3 ab (alle 10 Sekunden - ich weiß, das ist sehr häufig)
  • Ist der Status OK, dann setze ich das FHEM-Kommando get CCU3 ccumsg alarm ab. Das Ergebnis ist mir eigentlich egal. Wenn die CCU3 ausgefallen ist, führt dieses Kommando nämlich zu einem Wechsel des Status nach Error.
  • Da ich den Status der CCU3 ja zyklisch überprüfe, kann ich auch feststellen, wann die CCU3 wieder sauber läuft. Da wechselt der Status nämlich wieder zurück auf OK.
  • Bei einem Wechsel des Status auf OK führe ich die FHEM-Kommandos sleep 120; set CCU3 rpcregister HmIP-RF und sleep 121; set CCU3 rpcregister VirtualDevices aus. Das gibt der CCU3 noch mal 2 Minuten Zeit, komplett hochzufahren. Danach werden die RPC-Server für HmIP-RF und VirtualDevices neu registriert. Wenn ich das zu früh mache, funktioniert es nicht sicher.
  • Schließlich führe ich noch das FHEM-Kommando get {devices} update aus, wobei {devices} eine Regular Expression für alle meine Thermostate und Channel ist. Diese werden dann sofort upgedatet. Ich mache das für den Fall, dass Solltemperaturen ausgerechnet während der Downzeit der CCU3 verstellt wurden.
Leider musste ich die RPC-Server "zu Fuß" starten, das Reconnect hat das nicht gemacht (oder ich war zu ungeduldig). Auch wenn der Zustand des Attributs rpcstate der CCU3 running steht, gab es keine Updates der Werte in FHEM. Bedienen lassen sich die Thermostate zwar auch, wenn die Updates über die RPC-Server nicht laufen. Aber es ist unschön, wenn man keine Reaktion auf das Ändern der Solltemperaturen in FHEM sieht.

zap

Ich notiere mir das mal. Sollte schon funktionieren.

Stromausfall kam bei mir noch nie vor (wir wohnen hier im Haus seit >20 Jahren).

Wenn der Strom geplant abgeschaltet wird oder ich ein Firmware Update auf der CCU mache, halte ich die RPC-Server vorher immer an und starte sie später wieder, wenn die CCU bereit ist.


2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

Dieter Rapp

Zitat von: zap am 24 November 2021, 19:29:35
Stromausfall kam bei mir noch nie vor (wir wohnen hier im Haus seit >20 Jahren).
Man weiß ja nie ;-) Mir hat mal die Putzfrau den Stecker meines PCs gezogen, sie wollte Staub saugen. Nachdem ich ein langes Gesicht gemacht habe, hat sie ihn wieder reingesteckt. Meine Arbeit war trotzdem fort.

Die Anlage soll in einem Vereinsgebäude laufen. Da könnte schon mal jemand die Sicherung raus und wieder rein machen. Zum Glück läuft das System nach dem Wiedereinschalten sauber weiter. Einzig der Anzeige-Update der Daten in FHEM erfolgt nicht mehr. Insofern ist es "Jammern auf hohem Niveau".

duu75

Gibt es hier eine automatische Lösung inzwischen?

Genau das gleiche hatte ich gestern mit meinem Charly CCU3.
Hatte im Keller was umbauen müssen und die CCU3 ein paar Minuten vom Strom.
Heute musste ich in FHEM sehen, dass alle Statis und Werte von HM-IP Geräten der CCU nicht upgedated wurden seit gestern Abend.

Habe nun "set rpcregister all" gemacht und nun geht es wieder.

Wie kriege ich die RPC Connections automatisiert sauber wieder hin, ohne Hand anlegen zu müssen?

Ist das Setzen von "ccuflags reconnect" die richtige Lösung?

Gruß
Dirk
FHEM auf Ubuntu 20.04
RaspberryMatic CCU3 Charly, CUL 868, HUEBridge 2.0, HM-CFG-USB, AVR-NET-IO, Wemos D1 Mini ESP Easy, ESP32-CAM AI-on-the-Edge