[ GELOEST ] HM-Aktor - Wiederherstellung Schaltzustand nach Stromausfall

Begonnen von Ralph, 02 Januar 2021, 16:52:57

Vorheriges Thema - Nächstes Thema

Pfriemler

Auch TASMOTA kann den letzten Zustand vor Stromausfall wiederherstellen. Muss man so einstellen (PowerOnState =3, sollte sogar default sein).
https://tasmota.github.io/docs/PowerOnState/

Eine solche Automatik für FHEM ist mir nicht bekannt. Dürfte aber auch nicht so trivial sein.

Im fhem.save nur nachzusehen könnte hilfreich sein nach einem Reboot des Systems, nicht aber nach einem einfachen Spannungsausfall, weil fhem.save dann schon wieder veraltet sein kann.

Nur als Idee: In anderem Zusammenhang verwende ich eine "Automatik", bei der pro Homematik-Aktor ein gewünschter Schaltzustand aus FHEM ermittelt werden kann: jede aus FHEM gewollte Änderung wird mit "Zwischen-state" "set_..." flankiert, worauf man mit einem notify/DOIF reagieren und den gewünschten Zustand in einem Register des Aktors speichern kann. Wenn man nun noch dafür sorgt, dass auch gewollte Änderungen abseits von FHEM (lokal oder per peer) in diesem Register landen, kann man wiederum einen Soll-Ist-Vergleich nach jedem Stromausfall vornehmen - der Sollzustand würde nach einem sauberen Reboot ja auch aus fhem.save rekonstruiert werden. Mit einer Subroutine in 99_myUtils.pm und einer passenden Schleife, die auf das Vorhandensein eines passenden Registers im Aktor achtet, wäre der Job erledigt, wenn man sich zuvor beim Ablegen des Registers auf jene Aktoren beschränkt, bei denen die Wiederherstellung des Zustandes tatsächlich sinnvoll ist.
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

Papa Romeo

Zitat von: Pfriemler am 04 Januar 2021, 12:54:33
Auch TASMOTA kann den letzten Zustand vor Stromausfall wiederherstellen. Muss man so einstellen (PowerOnState =3, sollte sogar default sein).
https://tasmota.github.io/docs/PowerOnState/

ok ... kurz nachgeschaut ... PowerOnState steht auf 3

... aber funktioniert definitiv nicht

... schalte Relais auf "ON" ... ziehe den Stecker ... Stecker wieder in die Dose ... Webseite updaten ... Relais steht auf "OFF"

... es ist auch das "klicken" des Relais, das beim "ON schalten" deutlich zu hören ist, nicht zu vernehmen.

... weitere Test´s zeigen ... anscheinend werden alle PowerOnState-Befehle, zumindest bei TASMOTA 7.1.0, ignoriert oder es sind weitere Einstellungen erforderlich.

... werde bei Gelegenheit mal ein Testmodul mit aktuellerem TASMOTA auf diese Sache hin testen


LG

Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

Ralph

Moin,
habe ein wenig gefummelt.

Meine etwas umständliche Lösung, wer es besser kann, der möge es besser kundtun.

Stromnetzüberwachendes Element ist ein FS20-KSE Klingelsignaldetektor,
dem sind 3 Optokopplerschaltungen für 3 Phasen vorgeschaltet. Schaltplan siehe Nachtlichter.
Normal ist der ON, eine Phase oder mehr weg = OFF


defmod U_KSE FS20 ......
attr U_KSE IODev CUL_0
attr U_KSE room Internet
setstate U_KSE on
setstate U_KSE 2021-01-04 15:39:12 state on

Bei Stromwiederkehr sollen die Schaltzustände sowohl von einem HM als auch von IT-Intertechno und FS20 wiederhergestellt werden.
Bei den HM-Aktoren müssen bei Stromausfall der / die Zustände im FHEM gebunkert werden, bei den anderen ist das nicht nötig.

defmod di_RestoreNetz DOIF ([U_KSE:"^off$"]) {my $pre = ReadingsVal("WoZi_TV","state","0");; fhem("setreading WoZi_TV statepre $pre")} DOELSE ([U_KSE:"^on$"]) {my $pre = ReadingsVal("WoZi_TV","statepre","0");; fhem("set WoZi_TV $pre");; my $pre1 = ReadingsVal("IT_V3_1","state","0");; fhem("set IT_V3_1 $pre1");; my $pre2 = ReadingsVal("IT_V3_2","state","0");; fhem("set IT_V3_2 $pre2");; my $pre3 = ReadingsVal("FlurLED","state","0");; fhem("set FlurLED $pre3")}
attr di_RestoreNetz do always
attr di_RestoreNetz room Events
attr di_RestoreNetz wait 0:5  # die Verzögerung ist nötig, da der HM-Aktor erst empfänglich sein muss


defmod WoZi_TV CUL_HM ...
attr WoZi_TV .mId ....
attr WoZi_TV IODev HmUART
attr WoZi_TV IOgrp VCCU:HmUART
attr WoZi_TV autoReadReg 4_reqStatus
attr WoZi_TV expert rawReg
attr WoZi_TV firmware 2.6
attr WoZi_TV model HM-LC-SW1-PL-DN-R1
attr WoZi_TV room Events,RM_HM
attr WoZi_TV subType switch
attr WoZi_TV webCmd on:off
setstate WoZi_TV 2021-01-04 15:39:18 state on
setstate WoZi_TV 2021-01-04 15:37:56 statepre on


defmod FlurLED IT .................................
attr FlurLED IODev CUL_433
attr FlurLED room Events,RM_433
setstate FlurLED on
setstate FlurLED 2021-01-04 15:11:31 group 0
setstate FlurLED 2021-01-04 15:11:31 protocol V3
setstate FlurLED 2021-01-04 15:39:17 state on

FHEM auf RaspberryPi3 mit Geekworm USV und SignalDUINO 433MHz und HM-MOD-RPI-PCB mit 3 HM-Sec-SD-2, 5 FHT, 2 RM 100-2 Uni S, 2 HMS100, 6 CUL_WS, 6 CUL_FHTTK, 11 FS20 und 7 FS20V Spannungsüberwachungen

kjmEjfu

Zitat von: Ralph am 04 Januar 2021, 16:21:32

defmod di_RestoreNetz DOIF ([U_KSE:"^off$"]) {my $pre = ReadingsVal("WoZi_TV","state","0");; fhem("setreading WoZi_TV statepre $pre")} DOELSE ([U_KSE:"^on$"]) {my $pre = ReadingsVal("WoZi_TV","statepre","0");; fhem("set WoZi_TV $pre");; my $pre1 = ReadingsVal("IT_V3_1","state","0");; fhem("set IT_V3_1 $pre1");; my $pre2 = ReadingsVal("IT_V3_2","state","0");; fhem("set IT_V3_2 $pre2");; my $pre3 = ReadingsVal("FlurLED","state","0");; fhem("set FlurLED $pre3")}
attr di_RestoreNetz do always
attr di_RestoreNetz room Events
attr di_RestoreNetz wait 0:5  # die Verzögerung ist nötig, da der HM-Aktor erst empfänglich sein muss


vielleicht täusche ich mich, aber es könnte dir das Leben erleichtern, wenn du an der Stelle im DOIF mit einem Template arbeitest (https://wiki.fhem.de/wiki/DOIF/Templates)
Migriere derzeit zu Home Assistant

Ralph

Zitat von: kjmEjfu am 04 Januar 2021, 16:30:13
vielleicht täusche ich mich, aber es könnte dir das Leben erleichtern, wenn du an der Stelle im DOIF mit einem Template arbeitest (https://wiki.fhem.de/wiki/DOIF/Templates)
Danke, vermutlich hast Du recht. Habe es angeschaut, verucht zu verstehen, es blieb beim Versuch. Ist mir zu hoch, schade.
FHEM auf RaspberryPi3 mit Geekworm USV und SignalDUINO 433MHz und HM-MOD-RPI-PCB mit 3 HM-Sec-SD-2, 5 FHT, 2 RM 100-2 Uni S, 2 HMS100, 6 CUL_WS, 6 CUL_FHTTK, 11 FS20 und 7 FS20V Spannungsüberwachungen

Pfriemler

Zitat von: Papa Romeo am 04 Januar 2021, 13:56:44
ok ... kurz nachgeschaut ... PowerOnState steht auf 3
... aber funktioniert definitiv nicht
Hast Du evtl. zum Schonen des Flashspeichers SetOption0 generell abgeschaltet?

edit: Nachtrag zur Info: Je eine Gosund SP1 mit Tasmota 8.x und 6.7.1 und ein OBIplug (auch 8.x) restoren einwandwandfrei.
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

Papa Romeo

ok, danke für den Tip ...schau ich gleich mal nach, der Shelly hängt noch am Trenntrafo.


LG

Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

Papa Romeo

Zitat von: Pfriemler am 04 Januar 2021, 19:01:02
Hast Du evtl. zum Schonen des Flashspeichers SetOption0 generell abgeschaltet?

... nee .. is "ON"
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

Ralph

Und ich dachte immer, in diesem Strag ginge es (nur) um Homematic ?
FHEM auf RaspberryPi3 mit Geekworm USV und SignalDUINO 433MHz und HM-MOD-RPI-PCB mit 3 HM-Sec-SD-2, 5 FHT, 2 RM 100-2 Uni S, 2 HMS100, 6 CUL_WS, 6 CUL_FHTTK, 11 FS20 und 7 FS20V Spannungsüberwachungen

Papa Romeo

..stimmt, sehe gerade du hast es unter der Rubrik "Homematic" eingestellt ... sorry hab ich nicht darauf geachtet ... aber bei anderen gibt´s das Problem bestimmt auch ...

also, bin hier dann mal raus ...


LG

Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

Pfriemler

Zitat von: Ralph am 04 Januar 2021, 16:21:32
Stromnetzüberwachendes Element ist ein FS20-KSE Klingelsignaldetektor, dem sind 3 Optokopplerschaltungen für 3 Phasen vorgeschaltet. Schaltplan siehe Nachtlichter....
Mein nächstes Bastelprojekt :-)

ZitatBei Stromwiederkehr sollen die Schaltzustände sowohl von einem HM als auch von IT-Intertechno und FS20 wiederhergestellt werden.
Also doch nicht nur HM :-) ... aber gut, Tasmota ist nun nicht dabei. Ich konnte nur Papa Romeos Einwand, Tasmota könne den vorherigen Schaltzustand nicht allein wiederherstellen, nicht unwidersprochen stehen lassen, weil ich eben aus der Praxis genau das kenne.

ZitatBei den HM-Aktoren müssen bei Stromausfall der / die Zustände im FHEM gebunkert werden, bei den anderen ist das nicht nötig.
edit: jetzt verstanden. In Deinem Codebeispiel bedienst Du Dich an den letzten Zuständen die FHEM kannte und schickst sie den Geräten. Bei HM funktioniert genau das nicht, weil der Status der Geräte nach Stromwiederkehr aktualisiert wird und der gewünschte Schaltzustand so verlorengeht. Also ist es ein HM-spezifisches Problem.
"Wozi_TV" ist ein HM-Gerät? ja, s.o. im List (facepalm).

Nachtrag: perl "foreach" im normalen DOIF-Ausführungsteil? ungetestet, als Idee (gefundene Fehler dürfen behalten werden)

{foreach my $devicename("IT_V3_1","IT_V3_2","FlurLED") {fhem("set $devicename ".ReadingsVal($devicename,"state","off");} }
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

Sany

ZitatOft möchte man aber den Zustand vor dem Stromausfall haben.
Sprich: der Aktor soll wieder Ein sein wie vorher.

Ist jemandem hier dafür schon eine Lösung eingefallen ?

Anderer Ansatz, als es der Schaltsteckdose zu überlassen:
irgendwelche Bedingungen haben dafür gesorgt, dass fhem die Schaltsteckdose eingeschaltet hat. Nun ist Stromausfall, die Steckdose aus, Strom wieder da, Steckdose bleibt aus, fhem startet neu oder die USV meldet, dass wieder Strom da ist: Jetzt müssen die Bedingungen erneut geprüft werden und die Steckdose wieder so schalten wie sie sein soll (was bei nicht allzu langem Stromausfall vermutlich dem Zustand entspricht wie vor dem Ausfall, und wenns länger dauert und die Steckdose dann eigentlich aus sein soll wird auch das wieder richtig geschaltet). Also eine Art "State-machine"

Viel Erfolg!

fhem als LXC auf Proxmox auf einem minix Z100 , weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

frank

für manuell eingeschaltete verbraucher funktioniert das aber nicht ohne weiteres.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Ralph

Zitat von: frank am 06 Januar 2021, 11:13:07
für manuell eingeschaltete verbraucher funktioniert das aber nicht ohne weiteres.
Doch, sofern sie über die HM-Schaltsteckdose manuell eingeschaltet wurden.

Genau darum geht es hier.
FHEM auf RaspberryPi3 mit Geekworm USV und SignalDUINO 433MHz und HM-MOD-RPI-PCB mit 3 HM-Sec-SD-2, 5 FHT, 2 RM 100-2 Uni S, 2 HMS100, 6 CUL_WS, 6 CUL_FHTTK, 11 FS20 und 7 FS20V Spannungsüberwachungen

frank

Zitat von: Ralph am 06 Januar 2021, 11:16:43
Doch, sofern sie über die HM-Schaltsteckdose manuell eingeschaltet wurden.
ich meine den vorschlag von @Sany mit der statemachine.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html