Vordefinierte Werte für "Dummy" (z.B. nach Stromausfall)

Begonnen von Dracolein, 02 November 2021, 17:10:36

Vorheriges Thema - Nächstes Thema

Dracolein

Hallo zusammen,

Elektriker war heute vor Ort und hat mehrfach den Strom im Haus abgestellt. Dadurch wurde auch mein FHEM Server mehrfach restartet und mir fiel auf, dass sämtliche meiner Dummy-Devices einen "undefined" Zustand hatten.

Lässt sich das irgendwie vordefinieren, welchen Zustand Dummy nach FHEM-Restart haben soll?
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

Beta-User

Eigentlich ergibt sich das aus der stateFile.

Wenn die aber "kaputt" oder unvollständig ist, klappt das halt nicht mehr...
Maßnahmen können sein
- USV installieren (ist für die SD-Karte eh' besser!)
- stateFile regelmäßig schreiben / wegsichern (das kann aber auch kontraproduktiv sein und verbraucht ggf. auch Schreibzyklen auf der SD-Karte)
- INITIALIZED-notify erstellen, das feste Initialwerte vergibt,
- checken, warum ggf. was anderes irgendwoher in den dummy geschrieben wird;
- auf dummy möglichst ganz verzichten (mein Favorit...)
(-there's more than...")
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

enno

Moin

bei mir geht es manchmal, aber wenn der Rechner mehrfach hintereinander startet sind die Werte oft weg. Daher habe ich wie Beta-User vorschlägt ein DOIF bei Neustart und eine USV (Gürtel und Hosenträger 8))

defmod di_Set_Neustart DOIF ([global:"INITIALIZED"])(set KWL_Timer_Dummy off,set TYPE=CUL_HM:FILTER=NAME=.*_Rauchmelder statusRequest)


Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC mit Proxmox und Debian

Beta-User

...das wäre was neues, DOIF kann ich nicht, daher hatte ich ein notify vorgeschlagen... (diese Klammern für einfachste Übungen sind doch grausam, oder...?)
defmod n_Set_Neustart notify global:INITIALIZED set KWL_Timer_Dummy off,set TYPE=CUL_HM:FILTER=NAME=.*_Rauchmelder statusReques

(Wobei ich nicht sicher bin, ob das mit dem statusRequest sein müßte, v.a., wenn man HMinfo eingerichtet hat).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Damian

Ich sichere bei mir regelmäßig für solche Ausfälle die Zustände mit:

defmod di_save DOIF {[:00];;fhem"save"}

Über den Ausfall der sd-Karte mache ich mir bei dieser Häufigkeit keine Gedanken.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

McShire

Hallo,
kann man nicht die Initialwerte einfach mit set <dummy-name> <dummy-value> in die fhem.cfg schreiben?
das wäre aus meiner Sicht die einfachste und ressoucenschonende Lösung.
mfg
Werner

Dracolein

Zitat von: enno am 02 November 2021, 17:33:20
Moin

bei mir geht es manchmal, aber wenn der Rechner mehrfach hintereinander startet sind die Werte oft weg. Daher habe ich wie Beta-User vorschlägt ein DOIF bei Neustart und eine USV (Gürtel und Hosenträger 8))

defmod di_Set_Neustart DOIF ([global:"INITIALIZED"])(set KWL_Timer_Dummy off,set TYPE=CUL_HM:FILTER=NAME=.*_Rauchmelder statusRequest)


Gruss
  Enno

Praxistaugliches Beispiel, das werde ich übernehmen, dankeschön.
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

Beta-User

...wobei das - möglicherweise ungewollt - etwas mehr "sichert"  ;) ...
Jede Stunde statefile per at schaut auch nicht wild aus:
define a7 at +*01:00 save statefile
Wer es "punktgenau" mag, muss dann halt zu einem Attribut greifen, siehe die ziemlich übersichtliche commandref zu at (wobei ich eher empfehlen würde, sowas nicht zwanghaft auf die genauen Uhrzeiten festzuzurren):
define at2 at +*01:00 set Chime on-for-timer 1
attr at2 alignTime 00:00

Zitat von: McShire am 02 November 2021, 17:56:05
Hallo,
kann man nicht die Initialwerte einfach mit set <dummy-name> <dummy-value> in die fhem.cfg schreiben?
das wäre aus meiner Sicht die einfachste und ressoucenschonende Lösung.
mfg
Werner
...mach das mal mit configDB...

Und NEIN: cfg-Editieren ist zwar möglich, aber eigentlich keine Option. Hände weg (für die, die nicht genau wissen, was sie tun)!
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Damian

Es sind ja nicht nur Dummys, die falsche Zustände nach dem Neustart haben.

Es gibt z. B. auch HM-Komponenten, die nach einem Neustart falsche Zustände aufweisen können.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Beta-User

Deswegen auch der Hinweis auf HMinfo - was aber auch nichts hilft, wenn der Aktor seinen Zustand auch nicht mehr kennt...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Damian

Zitat von: Beta-User am 02 November 2021, 18:11:36
Deswegen auch der Hinweis auf HMinfo - was aber auch nichts hilft, wenn der Aktor seinen Zustand auch nicht mehr kennt...

Das ist insb. beim batteriebetriebenen HM-MOD-EM-8 der Fall, dessen aktueller Zustand sich nicht abfragen lässt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Dracolein

Wo ist mein Fehler?

Das notify funktioniert zuverlässig nach Systemstart und setzt die gesamte Befehlskette richtig um bis auf eine Ausnahme:
Der erste Befehl "set Badrolloautomatikschalter on" wird nicht ausgeführt, sondern statt dessen die gesamte Befehlskette als String auf dessen Reading "state" geschrieben.


Internals:
   DEF        global:INITIALIZED set Badrolloautomatikschalter on, set Beschattungsautomatikschalter on, set Beschattungsstufe1 off, set Beschattungsstufe2 off, set Lauflichtschalter off, set Nachtlichtautomatikschalter on, set Rolloautomatikschalter on, set alleRollosAb off, set alleRollosAuf off, set alleRollosStop off, set dummy_Haustuerklingel off
   FUUID      61816e5a-f33f-4dec-1584-903ddac9a4efe83e
   NAME       notify_Set_Neustart
   NOTIFYDEV  global
   NR         152
   NTFY_ORDER 50-notify_Set_Neustart
   REGEXP     global:INITIALIZED
   STATE      2021-11-06 09:40:03
   TRIGGERTIME 1636188010.90023
   TYPE       notify
   READINGS:
     2021-11-06 09:40:02   state           active
     2021-11-06 09:40:03   triggeredByDev  global
     2021-11-06 09:40:03   triggeredByEvent INITIALIZED
Attributes:
   room       Befehle
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

Beta-User

Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

MadMax-FHEM

Zitat von: Beta-User am 06 November 2021, 10:17:38
Strichpunkt statt Komma...?

Denke ich auch, siehe z.B.: https://wiki.fhem.de/wiki/Erste_Schritte_in_FHEM#Mehrere_Devices_schalten

Und je nachdem wo du eingibst (DEF oder RawDef) ein oder zwei Strichpunkte... ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Dracolein

Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;