Notify verzögert ausführen

Begonnen von sxx128, 07 Dezember 2022, 17:30:55

Vorheriges Thema - Nächstes Thema

sxx128

Hallo zusammen,

ich habe folgendes Notify was an sich funktioniert:



rgr_Bewohner:state:.* {
if (Value("rgr_Bewohner") eq "abwesend") {
fhem("set heizregler_wand_Climate controlMode night");
}
else {
fhem("set heizregler_wand_Climate controlMode auto");
}
}


Die Anwesenheit prüfe ich über Residents. Nun hätte ich gerne dass dieses Notify zeitverzögert ausgeführt wird. Eine Stunde nach dem das Ereignis eingetreten ist. Es könnte ja sein man ist im Keller mit dem Handy oder "kurz" einkaufen. Ich hab einiges gelesen über  die Realisierung  mit Sleep oder einem AT ...ich komme aber einfach nicht auf die Lösung. Könnt ihr mir helfen ?

Vielen Dank für eure Hilfe im Voraus.

Grüße
Steven

Hardware: Raspberryy PI 4
CC1101-USB-Lite 868MHz/Culfw-1.66
HM-MOD-RPI-PCB
Komponenten: Homematic/Homematic IP/Zigbee
PiVCCU

frank

ich denke, das verzögern könnte im chaos enden, da du die at's ggf wieder löschen müstest. 
setze besser den status erst auf "abwesend", wenn du wirklich willst, dass "abwesend" erreicht ist.
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

Miami

Nimm ein DOIF, da kann man mit dem Attrribut wait die Reaktion für jeden Zweig verzögern (Angabe in Sekunden).
Nachfolgend wird der Nachtmodus um 10min und der Automodus nicht verzögert.
Code für die fhem.cfg:
define xyz DOIF ( [rgr_Bewohner:state] eq "abwesend" ) ( set heizregler_wand_Climate controlMode night )\
DOELSEIF ( [rgr_Bewohner:state] eq "anwesend") ( set heizregler_wand_Climate controlMode auto )
attr xyz wait 600:0
"anwesend" habe ich geraten, das muss ggf. angepasst werden.

sxx128

Hallo Frank,

über so was habe ich auch nachgedacht. Aber wie mache ich das ? Ich habe ein Reading gefuden:


durTimerPresence


Könntest du mir da bitte helfen ?

Grüße
Steven

Zitat von: frank am 07 Dezember 2022, 17:46:25
ich denke, das verzögern könnte im chaos enden, da du die at's ggf wieder löschen müstest. 
setze besser den status erst auf "abwesend", wenn du wirklich willst, dass "abwesend" erreicht ist.

Hardware: Raspberryy PI 4
CC1101-USB-Lite 868MHz/Culfw-1.66
HM-MOD-RPI-PCB
Komponenten: Homematic/Homematic IP/Zigbee
PiVCCU

frank

im presence modul kann man das über attribute verzögern.
bei residence kenne ich mich nicht aus.
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

sxx128

#5
..wie macht man das ?

..ich mach gerade einen Test mit dem hier. Der erste Schritt hat geklappt. Das AT hat sich automatisch gelöscht nach der Ausführung. Die Temps wurden wieder ordentlich gesetzt als ich wieder anwesen war...

Was meinst du mit "Chaos"?


rgr_Bewohner:state:.* {
if (Value("rgr_Bewohner") eq "abwesend") {
fhem("define ausfuehren_in_5_minuten at +00:05:00 set heizregler_wand_Climate controlMode night");
}
else {
fhem("set heizregler_wand_Climate controlMode auto");
}
}



Grüße
Steven
Hardware: Raspberryy PI 4
CC1101-USB-Lite 868MHz/Culfw-1.66
HM-MOD-RPI-PCB
Komponenten: Homematic/Homematic IP/Zigbee
PiVCCU

frank

wenn du, wie im ersten post gesagt, 1std mit at verzögerst, bleibt das at scharf, auch wenn du nach 30min zurückkommst.


presencemodul:
ZitatabsenceThreshold

(not applicable in mode "event" )
The number of checks that have to result in "absent" before the state of the PRESENCE definition is changed to "absent". This can be used to verify the absence of a device with multiple check runs before the state is finally changed to "absent". If this attribute is set to a value >1, the reading state and presence will be set to "maybe absent" during the absence verification.

Default Value is 1 (no absence verification)
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

sxx128

das habe ich befürchtet ..so ein Mist ...

Grüße
Steven

Zitat von: frank am 07 Dezember 2022, 20:08:43
wenn du, wie im ersten post gesagt, 1std mit at verzögerst, bleibt das at scharf, auch wenn du nach 30min zurückkommst.


presencemodul:
Hardware: Raspberryy PI 4
CC1101-USB-Lite 868MHz/Culfw-1.66
HM-MOD-RPI-PCB
Komponenten: Homematic/Homematic IP/Zigbee
PiVCCU

Damian

Zitat von: sxx128 am 07 Dezember 2022, 20:18:44
das habe ich befürchtet ..so ein Mist ...

Grüße
Steven
Daher der alternative Vorschlag von Miami, da passiert das nicht :)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

sxx128

#9
Hallole

dann werde ich wohl auf ein DOIF umsteigen.... Ist das dann so richtig wenn ich die Abwesenheit verzögern möchten?


define xyz DOIF ( [rgr_Bewohner:state] eq "abwesend" ) ( set heizregler_wand_Climate controlMode night )\

DOELSEIF ( [rgr_Bewohner:state] eq "anwesend") ( set heizregler_wand_Climate controlMode auto )

attr xyz wait 600:0


Wenn ich die Abwesenheit verzögern möchte ? Die xxx:0 würde sich auf die Anwesenheit auswirken wenn da einen Wert angebe?

Grüße
Steven

Hardware: Raspberryy PI 4
CC1101-USB-Lite 868MHz/Culfw-1.66
HM-MOD-RPI-PCB
Komponenten: Homematic/Homematic IP/Zigbee
PiVCCU

frank

Zitat von: Damian am 07 Dezember 2022, 20:24:13
Daher der alternative Vorschlag von Miami, da passiert das nicht :)
aber keinen fhem restart machen.
oder überleben die timer mittlerweile?
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

Damian

#11
Zitat von: frank am 07 Dezember 2022, 20:30:38
aber keinen fhem restart machen.
oder überleben die timer mittlerweile?

Nein, allerdings nützt ein wiederhergestellter Timer auch nicht viel, wenn während der Reboot-Phase oder sogar einer längeren Stillstandsphase des Systems sich der Bewohner-Zustand geändert hat.

In beiden Fällen muss man mehr Logik in die Definition - eher schon in die Programmierung - reinstecken. 

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Zitat von: Damian am 07 Dezember 2022, 20:39:39
Nein, allerdings nützt ein wiederhergestellter Timer auch nicht viel, wenn während der Reboot-Phase oder sogar einer längeren Stillstandsphase des Systems sich der Bewohner-Zustand geändert hat.

In beiden Fällen muss man mehr Logik in die Definition - eher schon in die Programmierung - reinstecken.

Bei der DOIF-Definition, würde schon das Setzen eines startup-Attributs helfen, nach dem Neustart einen sauberen Zustand wiederherzustellen:

attr di_xyz startup set $SELF checkall
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

sxx128

...brauch ich da ein




do always



Grüße
Steven
Hardware: Raspberryy PI 4
CC1101-USB-Lite 868MHz/Culfw-1.66
HM-MOD-RPI-PCB
Komponenten: Homematic/Homematic IP/Zigbee
PiVCCU

Damian

Zitat von: sxx128 am 07 Dezember 2022, 20:51:19
...brauch ich da ein




do always



Grüße
Steven


Nicht unbedingt. Wenn sich der Zustand des Devices nach Prüfung der Bedingungen beim Neustart nicht geändert hat, dann muss man auch nichts schalten.

Stören würde es aber auch nicht, dann wird einmal mehr geschaltet.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF