Hallo,
ich möchte ein Notify schreiben, das beim Einschalten einer Leuchte einen Timer startet. Also
defmod nAussenlichtTimer notify Aussenlicht:on set Aussenlicht on-for-timer 120
Das aber löst das Notify sofort wieder aus und es kommt zu einer Endlosschleife ...
Wie müsste das RegEx denn aussehen? Oder wie mache ich das?
Vielen Dank schonmal
Frank
Hast du schon mal im Eventmonitor geschaut was kommt, wenn du "on-for-timer" schaltest?
Kann das Gerät das "nativ" oder nutzt du "setExtension"?
Bei setExtension macht fhem das on-for-timer und schickt: on - wartet - off -> es gibt also kein "on-for-timer" Event... Bzw. "on" und "on-for-timer" sehen gleich aus bzgl. Events -> das wird nicht gehen...
(zumindest bei einem dummy so)
-> list des Devices
-> Auszug aus dem Eventmonitor bei on und on-for-timer
EDIT: falls es doch unterschiedliche Events gibt evtl.: defmod nAussenlichtTimer notify Aussenlicht:on$ set Aussenlicht on-for-timer 120
EDIT: andere Frage: warum machst du/willst du aus einem "on" ein "on-for-timer" machen? Warum nicht gleich ein "on-for-timer"?
Ansonsten: disableAfterTrigger?
Gruß, Joachim
Hallo,
Wenn ich das softwaremäßig ansteuere, kann ich natürlich gleich on-for-timer nutzen, aber das device ist ein Homematic-Relais, das mit einem Hardware-Taster eingeschaltet wird. Das liefert dann ja als Event eben das ON.
Internals:
DEF 393FE4
FUUID 5d6a8c55-f33f-0145-e2fa-2905c60d4ecf4acc
HMLAN1_MSGCNT 6
HMLAN1_RAWMSG E393FE4,0000,00596E1E,FF,FFB7,69A410393FE4xxxxxx06010000
HMLAN1_RSSI -73
HMLAN1_TIME 2021-11-05 19:23:52
HMLAN2_MSGCNT 5
HMLAN2_RAWMSG E393FE4,0000,F39B46C7,FF,FFAA,69A410393FE4xxxxxx06010000
HMLAN2_RSSI -86
HMLAN2_TIME 2021-11-05 19:23:52
IODev HMLAN1
LASTInputDev HMLAN2
MSGCNT 11
NAME Aussenlicht
NR 87
NTFY_ORDER 48-Aussenlicht
STATE off
TYPE CUL_HM
chanNo 01
disableNotifyFn 1
lastMsg No:69 - t:10 s:393FE4 d:xxxxxx 06010000
protLastRcv 2021-11-05 19:23:52
protRcv 5 last_at:2021-11-05 19:23:52
protSnd 6 last_at:2021-11-05 19:23:52
protState CMDs_done
rssi_HMLAN1 cnt:4 min:-74 max:-73 avg:-73.25 lst:-73
rssi_at_HMLAN1 cnt:6 min:-73 max:-72 avg:-72.83 lst:-73
rssi_at_HMLAN2 cnt:5 min:-87 max:-83 avg:-84.8 lst:-86
Helper:
DBLOG:
state:
mySQLlog:
TIME 1636136632.40792
VALUE off
READINGS:
2021-11-05 19:22:49 CommandAccepted yes
2019-08-31 17:03:56 D-firmware 2.5
2019-08-31 17:03:56 D-serialNr MEQ0073940
2021-11-05 19:23:52 IODev HMLAN1
2020-11-13 12:26:08 PairedTo 0xxxxxxx
2019-08-31 17:03:59 R-pairCentral 0xxxxxxx
2020-05-06 15:14:18 R-powerUpAction off
2019-08-31 17:04:00 R-sign off
2020-11-13 12:26:08 RegL_00. 00:00 02:01 0A:09 0B:10 0C:60 15:FF 18:00
2020-11-13 12:26:09 RegL_01. 00:00 08:00 30:06 56:00 57:24
2020-11-13 12:26:39 cfgState ok
2021-11-05 19:23:52 commState CMDs_done
2021-11-05 19:23:52 deviceMsg off (to VCCU)
2021-11-05 19:23:52 level 0
2021-11-05 19:23:52 pct 0
2020-11-13 12:26:06 powerOn 2020-11-13 12:26:06
2021-11-05 19:23:52 recentStateType info
2021-11-05 19:23:52 state off
2021-11-05 19:23:52 timedOn off
2021-11-05 19:22:49 trigLast fhem:02
helper:
HM_CMDNR 105
cSnd 11xxxxxx393FE40201C80000,11xxxxxx393FE40201C800004B00
dlvlCmd ++A011xxxxxx393FE40201C80000
lastMsgTm 1636136632.40381
mId 0002
peerFriend peerSens,peerVirt
peerIDsState complete
peerOpt 3:switch
regLst 0,1,3p
rxType 1
supp_Pair_Rep 0
ack:
cmds:
TmplKey :no:1636130951.26595
TmplTs 1636130951.26595
cmdKey 1:1:0::Aussenlicht:0002:01:
cmdLst:
assignHmKey noArg
clear [({msgErrors}|msgEvents|rssi|attack|trigger|register|oldRegs|readings|all)]
deviceRename -newName-
fwUpdate -filename- [-bootTime-]
getConfig noArg
getDevInfo noArg
getRegRaw (List0|List1|List2|List3|List4|List5|List6|List7) [-peerChn-]
getVersion noArg
inhibit [(on|{off})]
off noArg
on noArg
on-for-timer -ontime-
on-till -time-
pair noArg
peerBulk -peer1,peer2,...- [({set}|unset)]
peerIODev [IO] -btn- [({set}|unset)] 'not for future use'
press [(long|{short})] [(-peer-|{self01})] [(-repCount-|{0})] [(-repDelay-|{0.25})]
raw -data- [...]
regBulk -list-.-peerChn- -addr1:data1- [-addr2:data2-]...
regSet [(prep|{exec})] -regName- -value- [-peerChn-]
reset noArg
sign [(on|{off})]
statusRequest noArg
toggle noArg
tplDel -tplDel-
tplSet_0 -tplChan-
unpair noArg
lst:
condition slider,0,1,255
peer
peerOpt
tplChan
tplDel
tplPeer
rtrvLst:
cmdList [({short}|long)]
deviceInfo [({short}|long)]
list [({normal}|full)]
param -param-
reg -addr- -list- [-peerChn-]
regList noArg
regTable noArg
regVal -addr- -list- [-peerChn-]
saveConfig [-filename-]
tplInfo noArg
expert:
def 1
det 0
raw 1
tpl 0
io:
flgs 0
newChn +393FE4,00,00,00
nextSend 1636136632.49309
rxt 0
vccu VCCU
p:
393FE4
00
00
00
prefIO:
mRssi:
mNo 69
io:
HMLAN1:
-71
-71
HMLAN2:
-86
-86
peerIDsH:
00000000 broadcast
prt:
bErr 0
sProc 0
rspWait:
tryMsg:
q:
qReqConf
qReqStat
role:
chn 1
dev 1
prs 1
rpt:
IO HMLAN1
flg A
ts 1636136632.40381
ack:
HASH(0x55eaeba36e28)
698002xxxxxx393FE400
rssi:
HMLAN1:
avg -73.25
cnt 4
lst -73
max -73
min -74
at_HMLAN1:
avg -72.8333333333333
cnt 6
lst -73
max -72
min -73
at_HMLAN2:
avg -84.8
cnt 5
lst -86
max -83
min -87
tmpl:
Attributes:
DbLogExclude .*
DbLogInclude state
IOgrp VCCU
autoReadReg 4_reqStatus
devStateIcon on:light_ceiling@orange off:light_ceiling_off
event-on-change-reading state
expert defReg,rawReg
firmware 2.5
group Licht
icon light_ceiling
model HM-LC-SW1-FM
peerIDs 00000000
room 40_Aussen
serialNr MEQ0073940
subType switch
webCmd on:off
hier das Event-Log
2021-11-05 19:22:14 CUL_HM Aussenlicht set_on noArg
2021-11-05 19:22:14 CUL_HM Aussenlicht on
2021-11-05 19:22:49 CUL_HM Aussenlicht set_on-for-timer 60
2021-11-05 19:22:49 CUL_HM Aussenlicht on
Wenn ich das so anschaue, könnte ja was mit dem "noArg" anfangen ...
wenn du mehr events erlaubst, sollte auch dieses event funktionieren
2021-11-05 19:22:49 trigLast fhem:02
Um auf die ursprüngliche Frage
Zitat von: fstefan1960 am 05 November 2021, 18:02:45
Das aber löst das Notify sofort wieder aus und es kommt zu einer Endlosschleife ...
Wie müsste das RegEx denn aussehen? Oder wie mache ich das?
zurückzukommen und diese zu beantworten
defmod nAussenlichtTimer notify Aussenlicht:on$ sleep 0.1;;set Aussenlicht on-for-timer 120
Zitat von: fstefan1960 am 05 November 2021, 19:51:10
Wenn ich das softwaremäßig ansteuere, kann ich natürlich gleich on-for-timer nutzen, aber das device ist ein Homematic-Relais, das mit einem Hardware-Taster eingeschaltet wird. Das liefert dann ja als Event eben das ON.
Wenn du auch von einem HW-Schalter auch "nur" on-for-timer einschalten willst und der Schalter ein Homematic-Schalter ist: setze doch das entsprechende Register (shOn oder sowas) und dann hast du auch mit HW-Schalter dein on-for-timer 8)
Gruß, Joachim
Moin,
schließe mich den Ausführungen von Joachim an. Unter der Voraussetzung, dass die Zeit für on-for-timer eine Konstante ist, ist die Sache mit dem Setzen eines Registers erledigt.
set Aussenlicht regSet shOnTime xxx self01
xxx steht für die Zeit in Sekunden. Damit wird der Switch zum "Treppenhausautomaten" - Taste drücken und das Licht ist xxx Sekunden lang an.
Zurück zum Originalzustand kommt Du mit
set Aussenlicht regSet shOnTime unused self01
Funktioniert immer, auch wenn die Zentrale mal nicht will. (kein notify erforderlich)
:)
Moin
Bernd
Super, danke. Das hilft!