Korrekter Start CCU2 und Fhem (auf Raspi) nach Stromausfall

Begonnen von Rewe2000, 05 Oktober 2017, 18:44:40

Vorheriges Thema - Nächstes Thema

Rewe2000

Hallo,

ich habe nun eine CCU2 und Fhem auf Raspi ca. 6 Monate in Betrieb. Im Großen und Ganzen läuft alles sehr stabil und Zufriedenstellend (Dank der Erklärungen in den vielen Beiträgen und Foren). Nun habe ich aber noch einige Schwachstellen erkannt, welche ich nun noch angehen muss.

Wie bekommt Ihr Fhem, im Zusammenspiel mit einer CCU2, nach einem Stromausfall wieder zum laufen?

Problem:
Die CCU2 benötigt mehrere Minuten bis diese wieder Betriebsbereit ist, in dieser Zeit läuft Fhem längst wieder auf den Raspi, hat jedoch keinerlei Geräte und Readings, da die CCU2 beim Start noch nicht bereit war. Nach einen manuellen, zusätzlichen "shutdown restart" kann über Fhem wieder alles bedient werden.

Wie ist aber der korrekte Ablauf wenn niemand zu Hause ist (Urlaub etc.) Gibt es die Möglichkeit Fhem verzögert zu starten oder nach ca. 5 Minuten nach Stromausfall automatisiert ein "shutdown restart" auszuführen?

Wie habt Ihr dieses Problem bei euch gelöst?
Ich denke hier besonders an Lösungen ohne USV.

Danke für die zahlreichen Tipps und Antworten.

Gruß Reinhard

Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

zap

ich sehe zwei Möglichkeiten:

1. HMCCU wartet beim Define des IO Devices so lange bzw. eine zu definierende Zeit auf die CCU. Damit wird der Start von FHEM dann entsprechend lange blockiert.

2. ich stelle ein Script zur Verfügung, das in das FHEM Startscipt eingebunden werden kann und prüft, ob die CCU da 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

connormcl

#2
Zitat von: Rewe2000 am 05 Oktober 2017, 18:44:40
Gibt es die Möglichkeit Fhem verzögert zu starten oder nach ca. 5 Minuten nach Stromausfall automatisiert ein "shutdown restart" auszuführen?

Wie habt Ihr dieses Problem bei euch gelöst?
Ich denke hier besonders an Lösungen ohne USV.


Bin mir nicht ganz sicher, wie Fhem ohne USV 5 Minuten nach Stromausfall einen Restart machen soll und wozu...der Pi ist dann einfach aus...

Ausserdem geht das Filesystem der SD-Speicherkarte bei Stromverlust korrupt...im Gegensatz zum Desktop hilft hier wohl auch kein Journaling oder ähnliches...zumindest bei mir erholen sich die Filesystem auf SD-Karte nicht vom Stromausfall und müssen ausgeworfen und in einem anderen Rechner manuell fsck'ed werden, bis wieder alles in Ordnung ist...der Pi kann das selber nicht reparieren, er bootet ja davon....(mach mal ein "dmesg | grep unchecked", ob bei dir auch schon alles hinüber ist und fsck'ed werden sollte...)

Ausserdem wären dann noch so Dinge wie Alarmfunktionen/Alarmanlage und Internetausfall zu berücksichtigen...ich weiss noch nicht, ob das Internet/DSL hier noch einen Notstromaggregat hat und bei Stromausfall funktioniert...aber Hausseitig ist hier alles mit USVs abgepuffert, da auch Dinge wie Funk-Türklingel betroffen wären...

Der Einbrecher erzeugt sonst einfach einen Kurzschluss auf deinem Gelände und bei ungünstiger Verkabelung fällt im Keller alles aus inkl. Automatisierungsserver...da will ich noch eine Nachricht bekommen, nachdem das passiert ist...und sei es über einen zweit-Kanal wie SMS...

Rewe2000

Hallo zap,

genau das ist auch meine Beobachtung, es ist echt ein Zeitproblem, Fhem ist auf dem Raspi einfach zu schnell  :).
Ich hatte gestern wegen Problemen einen Neustart der CCU2 durchgeführt und vergessen Fhem neu zu starten. Da sind zwar dann noch alle Geräte vorhanden, aber die Kommunikation steht so lange bis ein shutdown restart von Fhem durchgeführt wird.

Für mich als Linux Neuling und Fhem Beginner ist das nicht so einfach zu lösen, ich bräuchte da schon noch ein wenig Unterstützung.
Gerne auch Tipps, wo ich mir das fehlende Wissen anlesen kann, oder noch besser einige Beispiele.

Ich denke aber hier sollte es schon bei irgend jemanden eine Lösung geben, denn CCU2 in Verbindung mit Raspi und Fhem ist doch eigentlich nicht so selten oder täusche ich mich da etwa?

Gruß Reinhard
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

Rewe2000

Hallo connormcl,

es ist unbestritten, dass die USV hier die beste Absicherung bietet. Irgendwann werde ich mein System auch auf USV umstellen.

Derzeit suche ich aber "nur" nach einer Lösung, damit meine Homematic (IP) Geräte, nach der Spannungswiderkehr überhaupt wieder mit Fhem sprechen. Bisher war ich immer bei einem Stromausfall zu Hause und konnte Fhem neu starten, aber irgend wann wird dies nicht mehr der Fall sein.

Irgendwie muss mein Filesystem vom Raspi da deutlich stabiler sein, es hat sicherlich schon mehr als 20 Spannungsausfälle ohne Probleme verkraftet. Ich werde zukünftig bei geplanten Abschaltungen zumindes meine Geräte CCU2 und Raspi vorher beenden.

Danke für den Tipp, ich will ja da nichts mutwillig riskieren.

Bitte aber hier keine Diskussion über pro und contra USV führen, ich brauche eine Lösung für mich ohne USV.
Es ist mir absolut bewusst, jede Softwareseitige Lösung ersetzt keine USV.

Gruß Reinhard
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

Dragonfly

Zitat von: Rewe2000 am 05 Oktober 2017, 21:02:01
Ich hatte gestern wegen Problemen einen Neustart der CCU2 durchgeführt und vergessen Fhem neu zu starten

Dann bringt ja eine USV auch nicht viel...

In der CCU ein Programm anlegen, welches nach Neustart dieser einen HTTP-GET Befehl an FHEM schickt, daß jener neu starten soll.
Verzögert um 5 Minuten, damit die CCU genug Zeit hat, sich vom Reboot zu erholen und nicht gleich von FHEM überfordert wird.

Script in der CCU:
string stdout;
string stderr;
string url="http://192.168.1.100:80/weiss_nicht_wie";
system.Exec("wget -q -O /dev/null " # url, &stdout, &stderr);

Ohne "wenn"-Bedingung;
"dann Script verzögert um 5 Minuten"
"http://192.168.1.100:80/weiss_nicht_wie" gegen die URL austauschen, die FHEM zu einem shutdown/restart bewegt.

LG

zap

@Dragonfly: dann kann man auch gleich Netcat auf der CCU installieren und per CCU Programm ein "shutdown restart" an FHEM schicken. btw: shutdown restart funktioniert nicht, wenn FHEM über systemctl gestartet wird. Besser wäre m.E. ein Restart von FHEM per remote SSH Befehl, also so:

ssh -i mykey root@myfhem /etc/init.d/fhem restart

Zu beachten: es muss ein key ohne Passphrase verwendet werden.

@Rewe2000: wenn man nur die CCU neu startet, ist das nicht mit einem Stromausfall vergleichbar. Die CCU vergisst bei einem Neustart die registrierten Event-Empfänger. Daher muss sich FHEM neu bei der CCU registrieren. Dafür genügt ein Neustart des RPC-Servers. HMCCU generiert ein Event, wenn für eine bestimmte Zeit keine Updates von der CCU kommen. Auf dieses Event kann man per Notify mit einem Neustart des RPC Servers reagieren.


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

Rewe2000

#7
Hallo,

zunächst mal vielen Dank für eure Tipps zu meinem Problem.

@Dragonfly: Ich denke wenn ich mein Script in der CCU2 so anpasse wie du es vorgeschlagen hast und es im Fenster "Script testen" ausführe, sollte Fhem doch sofort neu gestartet werden.
Richtig oder falsch?
Bei mir tut sich da absolut nichts (habe einen WEB-Zugang extra ohne SSL und ohne Kennwort angelegt). Verwende ich aber im Script HTTP und spreche auf Fhem einen Port mit HTTPS an, erscheint im Log eine SSL Fehlermeldung mit der IP der CCU2. Grundsätzlich scheint Fhem schon erreicht zu werden, aber anscheinend wirkt der restart Befehl nicht.

@zap: Hab eben schon gesucht, finde aber wirklich nichts brauchbares dazu.
ZitatHMCCU generiert ein Event, wenn für eine bestimmte Zeit keine Updates von der CCU kommen.
Meinst du hier das Reading "rpcstate", welches ich hier für das Notify verwenden kann?
ZitatAuf dieses Event kann man per Notify mit einem Neustart des RPC Servers reagieren.
Auch hier noch eine Verständnisfrage:
Ich habe nur die beiden Befehle set d_ccu rpcserver on und set d_ccu rpcserver off gefunden.
Gibt es da noch eine andere Möglichkeit, den RPC-Server mit einem anderen Befehl neu zu starten?

Die Möglichkeit Fhem über SSH zu starten teste ich derzeit, wird aber heute sicher nichts mehr werden.
Ich möchte mich da noch ein wenig in den Foren und im Wiki einlesen, bevor ich euch da mit weiteren dazu Fragen nerve.

Bin noch am suchen, wie bei mir Fhem überhaupt auf dem Raspi automatisch gestartet wird. Nachdem die Lösung von Dragonfly bei mir vermutlich nicht funktioniert, denke ich bei mir wird Fhem über systemctl gestartet. Hab schon mal gesucht, aber leider nichts hierzu in Linux bei mir gefunden. Gib mir mal bitte einen Tipp wo ich das nachsehen kann.
Ist es überhaupt möglich in einem beliebigen Browser, Fhem nur durch Angabe einer URL mit Anhang neu zu starten??

Nehmt mir meine "blöden" Fragen bitte nicht Übel, aber ich komme noch aus der Zeit mit Wählscheibentelefonen und Commodore C64 Computern  :-[

Ich hoffe ihr verliert nicht die Geduld mit mir.
Gruß Reinhard
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

Dragonfly

Zitat von: Rewe2000 am 06 Oktober 2017, 22:27:53
Ich denke wenn ich mein Script in der CCU2 so anpasse wie du es vorgeschlagen hast und es im Fenster "Script testen" ausführe, sollte Fhem doch sofort neu gestartet werden.
Richtig oder falsch?
Irgendwie beides... Richtig, wenn die Url korrekt formatiert ist (encoden).
Was du zusammen bekommen mußt, ist eine URL, die, wenn du sie im Browser aufrufst, FHEM neu startet.
Die postest du hier und dann helfe ich dir gerne auf der CCU-Seite weiter.

Oder es ist das Problem was zap geschildert hat:
Zitatbtw: shutdown restart funktioniert nicht, wenn FHEM über systemctl gestartet wird.

FHEM habe ich nicht mehr am laufen - bin jetzt auf openHAB (da habe ich das (für mich) richtige Verhältinis von Luxus/Handarbeit  :D ).
Aber ich kann mir nicht vorstellen, daß du der erste bist, der sowas machen will - eine Lösung wird sich sicher finden.

zap

Zitat von: Dragonfly am 07 Oktober 2017, 02:15:32
FHEM habe ich nicht mehr am laufen - bin jetzt auf openHAB (da habe ich das (für mich) richtige Verhältinis von Luxus/Handarbeit  :D ).

Ich liebäugle auch mit OpenHAB. Da ist die Entwicklung rasant. Oder vielleicht IO-Broker. Allerdings hat OpenHAB eine sehr große und v.a. internationale Community (und der Hauptentwickler ist ein Arbeitskollege ;-).


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

Dragonfly

<OT>
Zitat von: zap am 07 Oktober 2017, 18:48:20der Hauptentwickler ist ein Arbeitskollege
Dann kannst ja gleich einen Aufstand machen, weil OH keine HTTP-GET empfangen kann!
Jetzt hätte ich HW, die ihre Stati weitergeben kann, und dann muß ich noch den Umweg über die CCU nehmen! Wie altmodisch  ::)
</OT>

Rewe2000

Habt ihr nicht noch einige Tipps für mich?
Ich drehe mich ständig im Kreis und nichts klappt und ich finde auch nicht die richtigen Ansätze um meim Problem zu lösen.

In vielen Forenbeiträgen lese ich, dass Fhem auch über URL-Befehle gesteuert werden kann, mir gelingt es aber nur über den Befehl im Browser (Firefox unter WIN7) die WEB - Oberfläche in Fhem zu öffnen, mit "Befehlen" tut sich da überhaupt nichts.
Eigentlich sollte doch der Link:

http://192.168.1.33:8085/fhem?cmd=set%20Lampe%20on&XHR=1

oder

http://192.168.1.33:8085/fhem?cmd=set Lampe on&XHR=1


einen vorhandenen Dummy schalten, bei mir tut sich da absolut nichts, auch im Log von Fhem taucht kein Eintrag auf.

Hab extra für Port 8085 HTTPS und Kennwortanmeldung deaktiviert.

Muss ich da in Fhem oder im Raspi vorher noch etwas istallieren, damit das steuern über URL klappt.

Elegant wäre natürlich die von Dragonfly beschriebene Lösung schon, 5 Minuten nach Start der CCU2, von dieser über Http Befehl Fhem neu zu starten. Ob sich dann über URL überhaupt ein Neustart auslösen lässt (Anmerkung von zap) muss ich dann noch testen. Aber wenn nichtmal das steuern eines Dummys klappt, hab ich da noch einen weiten Weg vor mir.

Gruß Reinhard
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

Dragonfly


zap

Ich habe gerade ein Update für HMCCU in der Mache. Da kann man beim Define des IO Device einen Timeout angeben. HMCCU wartet dann die angegebene Zeit ab und prüft alle paar Sekunden, ob die CCU erreichbar ist. So lange wird der Start von FHEM angehalten.

Beispiel: define d_ccu HMCCU meineccu waitforccu=180

Damit würde HMCCU 3 Minuten auf die CCU warten.
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

Rewe2000

Hallo zap,

vielen Dank für deine Mühe, ich denke die von dir geplante Änderung macht die Kommunikation mit der CCU um einiges sicherer und die Lösung des Problems erfolgt im Modul sebst.
ZitatSo lange wird der Start von FHEM angehalten.
Hab ich mich da verlesen oder willst du wirklich wirklich Fhem komplett anhalten wenn die Kommunikation HMCCU <-> CCUx steht?
Oder meintest du den Start von HMCCU.

Wie würde HMCCU reagieren wenn z.B. die CCUx neu gestartet wird und HMCCU im laufenden Betrieb für ca. 3 Minuten die Kommunikation verliert. Wenn du diesen Umstand nicht abfangen kannst, gibt es irgend ein Reading was dies erkennen kann?
rpcstate und rpc zeigen ja bei laufender Kommunikation immer running/OK an, obwohl nach einem neustart der CCUx, die Kommunikation ohne neustart von RPC-Server oder Fhem nicht mehr funktioniert.

Gerne teste ich mal eine Betaversion der geänderten HMCCU bei mir im System wenn du mit der Änderung so weit bist.
Bitte bei Bedarf einfach melden.

Vielen Dank Reinhard

@Dragonfly: Auch dir vielen Dank für den Link, werde mich mal heute Abend damit mal ein wenig weiterbilden. :)
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky