Hallo,
für euch sicherlich ein Klax, aber für mich immer eine grosse Hürde:
Ermittlung und Syntax der richtigen "readings" für die Automatisierung.
Ich habe da sicherlich ein für euch einfaches Thema:
Ziel: Einschalten der Solltemperatur einer Heizung: set Heizung_Climate desired-temp 15.0 (sollte ok sein)
Bedingungen :
1. Prüfung jeden Vormittag zwischen 5:00 Uhr und 6:00 Uhr
2. Prüfung der Zimmertemperatur Modul Klima_Wohni reading: temperature
3. Prüfung der Anwesenheit Modul BluetoothAnwesend:presence reading present
Mein Vorschlag:
defmod di_Heizung_morgens DOIF ([5:00-6:00] and [BluetoothAnwesend:presence eq "present"] and [Klima_Wohni:temperature < 14.0 ]) (set Heizung_Climate desired-temp 15.0)
attr di_Heizung_morgens room F-Heizung
attr di_Heizung_morgens alias Thermostat Prüfung nach kalten Nächten zwischen 5:00 Uhr und 6:00 Uhr
lists:
Heizung_Climate
Internals:
DEF 6639D902
FUUID 5e399c4e-f33f-813e-7122-7d93d62da1af77ff
NAME Heizung_Climate
NR 88
NTFY_ORDER 48-Heizung_Climate
STATE T: 28.6 desired: 12.0
TYPE CUL_HM
chanNo 02
device Heizung
disableNotifyFn 1
READINGS:
2022-05-29 23:08:50 CommandAccepted yes
2020-02-04 17:33:43 R-dayTemp 21 C
2020-02-04 17:33:43 R-daylightSaveTime on
2020-02-04 17:33:43 R-heatCool heating
2020-02-04 17:33:43 R-modePrioManu all
2020-02-04 17:33:43 R-modePrioParty all
2020-02-04 17:33:43 R-nightTemp 17 C
2020-02-04 17:33:43 R-noMinMax4Manu off
2020-02-04 17:33:43 R-sendWeatherData on
2020-02-04 17:33:43 R-showHumidity temp
2020-02-04 17:33:43 R-showInfo time
2020-02-04 17:33:43 R-showSetTemp actTemp
2020-02-04 17:33:39 R-sign off
2020-02-04 17:33:43 R-tempOffset 0.0K
2020-02-04 17:33:43 R-weekPrgSel prog1
2020-02-04 17:33:43 R-winOpnBoost off
2022-05-26 15:30:30 R_P1_0_tempListSat 00:05 15.0 02:00 16.0 05:00 18.0 06:00 18.0 06:30 18.5 07:15 19.5 24:00 17.0
2022-05-26 15:30:30 R_P1_1_tempListSun 00:05 15.0 02:00 16.0 05:00 18.0 06:00 18.0 06:30 18.5 07:15 19.5 24:00 17.0
2022-05-26 15:30:30 R_P1_2_tempListMon 00:05 15.0 02:00 16.0 05:00 18.0 06:00 18.0 06:30 18.5 07:15 19.5 24:00 17.0
2022-05-26 15:30:30 R_P1_3_tempListTue 00:05 15.0 02:00 16.0 05:00 18.0 06:00 18.0 06:30 18.5 07:15 19.5 24:00 17.0
2022-05-26 15:30:30 R_P1_4_tempListWed 00:05 15.0 02:00 16.0 05:00 18.0 06:00 18.0 06:30 18.5 07:15 19.5 24:00 17.0
2022-05-26 15:30:30 R_P1_5_tempListThu 00:05 15.0 02:00 16.0 05:00 18.0 06:00 18.0 06:30 18.5 07:15 19.5 24:00 17.0
2022-05-26 15:30:30 R_P1_6_tempListFri 00:05 15.0 02:00 16.0 05:00 18.0 06:00 18.0 06:30 18.5 07:15 19.5 24:00 17.0
2022-05-26 15:30:30 R_P1_tempList_State verified
2022-05-26 15:30:34 R_P2_0_tempListSat 24:00 17.0
2022-05-26 15:30:34 R_P2_1_tempListSun 24:00 17.0
2022-05-26 15:30:34 R_P2_2_tempListMon 24:00 17.0
2022-05-26 15:30:34 R_P2_3_tempListTue 24:00 17.0
2022-05-26 15:30:34 R_P2_4_tempListWed 24:00 17.0
2022-05-26 15:30:34 R_P2_5_tempListThu 24:00 17.0
2022-05-26 15:30:34 R_P2_6_tempListFri 24:00 17.0
2022-05-26 15:30:34 R_P2_tempList_State verified
2022-05-26 15:30:38 R_P3_0_tempListSat 24:00 17.0
2022-05-26 15:30:38 R_P3_1_tempListSun 24:00 17.0
2022-05-26 15:30:38 R_P3_2_tempListMon 24:00 17.0
2022-05-26 15:30:38 R_P3_3_tempListTue 24:00 17.0
2022-05-26 15:30:38 R_P3_4_tempListWed 24:00 17.0
2022-05-26 15:30:38 R_P3_5_tempListThu 24:00 17.0
2022-05-26 15:30:38 R_P3_6_tempListFri 24:00 17.0
2022-05-26 15:30:38 R_P3_tempList_State verified
2022-05-26 15:30:26 RegL_01. 00:00 08:00
2022-05-26 15:30:30 RegL_07. 00:00 01:2A 02:22 03:09 04:3D 05:00 06:00 07:00 08:00 09:87 0A:30 0B:00 0C:00 0D:00 0E:01 0F:04 10:00 11:00 12:09 13:00 14:3C 15:01 16:40 17:18 18:48 19:3C 1A:48 1B:48 1C:4A 1D:4E 1E:4E 1F:57 20:45 21:20 22:45 23:20 24:45 25:20 26:45 27:20 28:45 29:20 2A:45 2B:20 2C:45 2D:20 2E:3C 2F:01 30:40 31:18 32:48 33:3C 34:48 35:48 36:4A 37:4E 38:4E 39:57 3A:45 3B:20 3C:45 3D:20 3E:45 3F:20 40:45 41:20 42:45 43:20 44:45 45:20 46:45 47:20 48:3C 49:01 4A:40 4B:18 4C:48 4D:3C 4E:48 4F:48 50:4A 51:4E 52:4E 53:57 54:45 55:20 56:45 57:20 58:45 59:20 5A:45 5B:20 5C:45 5D:20 5E:45 5F:20 60:45 61:20 62:3C 63:01 64:40 65:18 66:48 67:3C 68:48 69:48 6A:4A 6B:4E 6C:4E 6D:57 6E:45 6F:20 70:45 71:20 72:45 73:20 74:45 75:20 76:45 77:20 78:45 79:20 7A:45 7B:20 7C:3C 7D:01 7E:40 7F:18 80:48 81:3C 82:48 83:48 84:4A 85:4E 86:4E 87:57 88:45 89:20 8A:45 8B:20 8C:45 8D:20 8E:45 8F:20 90:45 91:20 92:45 93:20 94:45 95:20 96:3C 97:01 98:40 99:18 9A:48 9B:3C 9C:48 9D:48 9E:4A 9F:4E A0:4E A1:57 A2:45 A3:20 A4:45 A5:20 A6:45 A7:20 A8:45 A9:20 AA:45 AB:20 AC:45 AD:20 AE:45 AF:20 B0:3C B1:01 B2:40 B3:18 B4:48 B5:3C B6:48 B7:48 B8:4A B9:4E BA:4E BB:57 BC:45 BD:20 BE:45 BF:20 C0:45 C1:20 C2:45 C3:20 C4:45 C5:20 C6:45 C7:20 C8:45 C9:20 CA:00 CB:00 CC:00 CD:00 CE:00 CF:00
2022-05-26 15:30:34 RegL_08. 00:00 01:00 02:00 03:00 04:00 05:00 06:00 07:00 08:00 09:00 0A:00 0B:00 0C:00 0D:00 0E:00 0F:00 10:00 11:00 12:00 13:00 14:45 15:20 16:45 17:20 18:45 19:20 1A:45 1B:20 1C:45 1D:20 1E:45 1F:20 20:45 21:20 22:45 23:20 24:45 25:20 26:45 27:20 28:45 29:20 2A:45 2B:20 2C:45 2D:20 2E:45 2F:20 30:45 31:20 32:45 33:20 34:45 35:20 36:45 37:20 38:45 39:20 3A:45 3B:20 3C:45 3D:20 3E:45 3F:20 40:45 41:20 42:45 43:20 44:45 45:20 46:45 47:20 48:45 49:20 4A:45 4B:20 4C:45 4D:20 4E:45 4F:20 50:45 51:20 52:45 53:20 54:45 55:20 56:45 57:20 58:45 59:20 5A:45 5B:20 5C:45 5D:20 5E:45 5F:20 60:45 61:20 62:45 63:20 64:45 65:20 66:45 67:20 68:45 69:20 6A:45 6B:20 6C:45 6D:20 6E:45 6F:20 70:45 71:20 72:45 73:20 74:45 75:20 76:45 77:20 78:45 79:20 7A:45 7B:20 7C:45 7D:20 7E:45 7F:20 80:45 81:20 82:45 83:20 84:45 85:20 86:45 87:20 88:45 89:20 8A:45 8B:20 8C:45 8D:20 8E:45 8F:20 90:45 91:20 92:45 93:20 94:45 95:20 96:45 97:20 98:45 99:20 9A:45 9B:20 9C:45 9D:20 9E:45 9F:20 A0:45 A1:20 A2:45 A3:20 A4:45 A5:20 A6:45 A7:20 A8:45 A9:20 AA:45 AB:20 AC:45 AD:20 AE:45 AF:20 B0:45 B1:20 B2:45 B3:20 B4:45 B5:20 B6:45 B7:20 B8:45 B9:20 BA:45 BB:20 BC:45 BD:20 BE:45 BF:20 C0:45 C1:20 C2:45 C3:20 C4:45 C5:20 C6:45 C7:20 C8:45 C9:20 CA:00 CB:00 CC:00 CD:00 CE:00 CF:00
2022-05-26 15:30:38 RegL_09. 00:00 01:00 02:00 03:00 04:00 05:00 06:00 07:00 08:00 09:00 0A:00 0B:00 0C:00 0D:00 0E:00 0F:00 10:00 11:00 12:00 13:00 14:45 15:20 16:45 17:20 18:45 19:20 1A:45 1B:20 1C:45 1D:20 1E:45 1F:20 20:45 21:20 22:45 23:20 24:45 25:20 26:45 27:20 28:45 29:20 2A:45 2B:20 2C:45 2D:20 2E:45 2F:20 30:45 31:20 32:45 33:20 34:45 35:20 36:45 37:20 38:45 39:20 3A:45 3B:20 3C:45 3D:20 3E:45 3F:20 40:45 41:20 42:45 43:20 44:45 45:20 46:45 47:20 48:45 49:20 4A:45 4B:20 4C:45 4D:20 4E:45 4F:20 50:45 51:20 52:45 53:20 54:45 55:20 56:45 57:20 58:45 59:20 5A:45 5B:20 5C:45 5D:20 5E:45 5F:20 60:45 61:20 62:45 63:20 64:45 65:20 66:45 67:20 68:45 69:20 6A:45 6B:20 6C:45 6D:20 6E:45 6F:20 70:45 71:20 72:45 73:20 74:45 75:20 76:45 77:20 78:45 79:20 7A:45 7B:20 7C:45 7D:20 7E:45 7F:20 80:45 81:20 82:45 83:20 84:45 85:20 86:45 87:20 88:45 89:20 8A:45 8B:20 8C:45 8D:20 8E:45 8F:20 90:45 91:20 92:45 93:20 94:45 95:20 96:45 97:20 98:45 99:20 9A:45 9B:20 9C:45 9D:20 9E:45 9F:20 A0:45 A1:20 A2:45 A3:20 A4:45 A5:20 A6:45 A7:20 A8:45 A9:20 AA:45 AB:20 AC:45 AD:20 AE:45 AF:20 B0:45 B1:20 B2:45 B3:20 B4:45 B5:20 B6:45 B7:20 B8:45 B9:20 BA:45 BB:20 BC:45 BD:20 BE:45 BF:20 C0:45 C1:20 C2:45 C3:20 C4:45 C5:20 C6:45 C7:20 C8:45 C9:20 CA:00 CB:00 CC:00 CD:00 CE:00 CF:00
2022-05-30 19:03:04 boostTime -
2022-05-26 15:31:40 cfgState TempChk
2022-05-30 19:03:04 commReporting off
2022-05-29 23:08:50 commState CMDs_done
2022-05-30 19:03:04 controlMode manual
2022-05-30 19:03:04 desired-temp 12.0
2022-05-30 19:02:54 humidity 31
2022-05-30 19:03:04 measured-temp 28.6
2022-05-29 23:08:50 recentStateType ack
2022-05-30 19:03:04 state T: 28.6 desired: 12.0
2022-05-30 19:03:04 winOpenReporting off
helper:
peerFriend peerRtTc
peerIDsRaw ,00000000
peerIDsState complete
peerOpt p:thermostat
regLst 1,7,8,9
cfgChk:
idTp00 file: ./tempList.cfg error:Can't open ./tempList.cfg: No such file or directory
cmds:
TmplKey :no:1653556566.42215
TmplTs 1653556566.42215
cmdKey 1:0:0::Heizung:00AD:02:
cmdLst:
clear [({msgErrors}|msgEvents|rssi|attack|trigger|register|oldRegs|readings|all)]
controlManu (on|off|5.0..30.0;0.5)
controlMode (auto|manual|boost|day|night)
controlParty -temp- -startDate- -startTime- -endDate- -endTime-
desired-temp (on|off|5.0..30.0;0.5)
getConfig noArg
getRegRaw (List0|List1|List2|List3|List4|List5|List6|List7) [-peerChn-]
inhibit [(on|{off})]
peerBulk -peer1,peer2,...- [({set}|unset)]
peerChan -btnNumber- -actChn- [({single})] [({set}|unset)] [(actor|remote|{both})]
regBulk -list-.-peerChn- -addr1:data1- [-addr2:data2-]...
regSet [(prep|{exec})] -regName- -value- [-peerChn-]
sign [(on|{off})]
tempListFri [(prep|{exec})] [({p1}|p2|p3)] -HH:MM- -temp- [...]
tempListMon [(prep|{exec})] [({p1}|p2|p3)] -HH:MM- -temp- [...]
tempListSat [(prep|{exec})] [({p1}|p2|p3)] -HH:MM- -temp- [...]
tempListSun [(prep|{exec})] [({p1}|p2|p3)] -HH:MM- -temp- [...]
tempListThu [(prep|{exec})] [({p1}|p2|p3)] -HH:MM- -temp- [...]
tempListTmpl [({verify}|restore)] [[-file-:]-templateName-]
tempListTue [(prep|{exec})] [({p1}|p2|p3)] -HH:MM- -temp- [...]
tempListWed [(prep|{exec})] [({p1}|p2|p3)] -HH:MM- -temp- [...]
tempTmplSet -tempTmpl-
tplDel -tplDel-
tplSet_0 -tplChan-
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
peerIDsH:
00000000 broadcast
regCollect:
role:
chn 1
shRegR:
07 00
shadowReg:
tmpl:
Attributes:
DbLogExclude .*
alexaName Boden
alias Boden
genericDeviceType thermostat
model HM-TC-IT-WM-W-EU
peerIDs 00000000
Anwesenheit:
Internals:
DEF function {`sudo /opt/fhem/lescan.sh 7C:2F:80:D1:89:44`}
FUUID 5c837bef-f33f-813e-c993-4f5b252e372ebb2b
INTERVAL_NORMAL 30
INTERVAL_PRESENT 30
MODE function
NAME BluetoothAnwesend
NOTIFYDEV global
NR 49
NTFY_ORDER 50-BluetoothAnwesend
STATE present
TYPE PRESENCE
READINGS:
2022-05-26 11:16:01 model function
2022-05-30 19:07:46 presence present
2022-05-30 19:07:46 state present
helper:
CURRENT_STATE present
call {`sudo /opt/fhem/lescan.sh 7C:2F:80:D1:89:44`}
Attributes:
DbLogExclude .*
absenceThreshold 2
alias Scan für Bluetooth G-Tag
event-on-change-reading .*
presenceThreshold 1
room Anwesenheit,GERAETE[/cod
Innentemperatur:
[code]
Internals:
DEF 5D43AC
FUUID 5c7bfa1e-f33f-813e-0431-9f1d24612e1a19b7
IODev myHmUART
LASTInputDev myHmUART
MSGCNT 2458
NAME Klima_Wohni
NR 46
NTFY_ORDER 48-Klima_Wohni
STATE T: 29.3 H: 35
TYPE CUL_HM
chanNo 01
disableNotifyFn 1
lastMsg No:13 - t:70 s:5D43AC d:000000 012523
myHmUART_MSGCNT 2458
myHmUART_RAWMSG 0500001E1386705D43AC000000012523
myHmUART_RSSI -30
myHmUART_TIME 2022-05-30 19:09:25
protLastRcv 2022-05-30 19:09:25
protRcv 2458 last_at:2022-05-30 19:09:25
rssi_at_myHmUART cnt:2458 min:-58 max:-25 avg:-35.16 lst:-30
Helper:
DBLOG:
humidity:
DBLogging:
TIME 1653917483.28001
VALUE 37
temperature:
DBLogging:
TIME 1653929833.48168
VALUE 29.6
READINGS:
2022-05-26 11:26:06 Activity alive
2019-03-03 17:00:30 CommandAccepted yes
2019-03-03 17:00:50 D-firmware 1.3
2019-03-03 17:00:50 D-serialNr OEQ1016948
2022-05-26 11:16:06 IODev myHmUART
2019-03-03 17:00:50 PairedTo 0x121059
2019-03-03 17:00:50 R-burstRx off
2019-03-03 17:00:50 R-pairCentral 0x121059
2019-03-03 17:00:50 RegL_00. 00:00 01:00 02:01 05:00 0A:12 0B:10 0C:59 0F:00
2022-05-30 19:09:25 battery ok
2022-05-30 19:09:25 humidity 35
2022-05-30 19:09:25 state T: 29.3 H: 35
2022-05-30 19:09:25 temperature 29.3
helper:
HM_CMDNR 19
lastMsgTm 1653930565.50166
mId 003D
peerFriend
peerIDsState complete
peerOpt p:THSensor
regLst 0
rxType 140
supp_Pair_Rep 0
cmds:
TmplKey :no:1653556566.44831
TmplTs 1653556566.44831
cmdKey 1:1:0::Klima_Wohni:003D:01:
cmdLst:
assignHmKey noArg
burstXmit 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-]
peerBulk -peer1,peer2,...- [({set}|unset)]
peerChan 0 -actChn- [({single})] [({set}|unset)] [actor|remote|both]
raw -data- [...]
regBulk -list-.-peerChn- -addr1:data1- [-addr2:data2-]...
regSet [(prep|{exec})] -regName- -value- [-peerChn-]
reset 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 +5D43AC,00,00,00
nextSend 1653930565.59791
rxt 2
vccu virtualCCU
p:
5D43AC
00
00
00
prefIO:
myHmUART
mRssi:
mNo 13
io:
myHmUART:
-22
-22
peerIDsH:
00000000 broadcast
prt:
bErr 0
sProc 0
q:
qReqConf
qReqStat
role:
chn 1
dev 1
rssi:
at_myHmUART:
avg -35.1647681041497
cnt 2458
lst -30
max -25
min -58
tmpl:
Attributes:
DbLogExclude .*
DbLogInclude temperature,humidity,state
IOgrp virtualCCU:myHmUART
actCycle 000:10
actStatus alive
autoReadReg 4_reqStatus
event-on-change-reading temperature:0.5,humidity:5
expert defReg,rawReg
firmware 1.3
icon temp_inside
model HM-WDS10-TH-O
peerIDs 00000000
room CUL_HM,Wohnraum
serialNr OEQ1016948
Zimmertemperatur
Internals:
DEF 5D43AC
FUUID 5c7bfa1e-f33f-813e-0431-9f1d24612e1a19b7
IODev myHmUART
LASTInputDev myHmUART
MSGCNT 2461
NAME Klima_Wohni
NR 46
NTFY_ORDER 48-Klima_Wohni
STATE T: 29.0 H: 35
TYPE CUL_HM
chanNo 01
disableNotifyFn 1
lastMsg No:16 - t:70 s:5D43AC d:000000 012223
myHmUART_MSGCNT 2461
myHmUART_RAWMSG 0500001E1686705D43AC000000012223
myHmUART_RSSI -30
myHmUART_TIME 2022-05-30 19:17:42
protLastRcv 2022-05-30 19:17:42
protRcv 2461 last_at:2022-05-30 19:17:42
rssi_at_myHmUART cnt:2461 min:-58 max:-25 avg:-35.15 lst:-30
Helper:
DBLOG:
humidity:
DBLogging:
TIME 1653917483.28001
VALUE 37
temperature:
DBLogging:
TIME 1653930911.0263
VALUE 29.1
READINGS:
2022-05-26 11:26:06 Activity alive
2019-03-03 17:00:30 CommandAccepted yes
2019-03-03 17:00:50 D-firmware 1.3
2019-03-03 17:00:50 D-serialNr OEQ1016948
2022-05-26 11:16:06 IODev myHmUART
2019-03-03 17:00:50 PairedTo 0x121059
2019-03-03 17:00:50 R-burstRx off
2019-03-03 17:00:50 R-pairCentral 0x121059
2019-03-03 17:00:50 RegL_00. 00:00 01:00 02:01 05:00 0A:12 0B:10 0C:59 0F:00
2022-05-30 19:17:42 battery ok
2022-05-30 19:17:42 humidity 35
2022-05-30 19:17:42 state T: 29.0 H: 35
2022-05-30 19:17:42 temperature 29.0
helper:
HM_CMDNR 22
lastMsgTm 1653931062.0256
mId 003D
peerFriend
peerIDsState complete
peerOpt p:THSensor
regLst 0
rxType 140
supp_Pair_Rep 0
cmds:
TmplKey :no:1653556566.44831
TmplTs 1653556566.44831
cmdKey 1:1:0::Klima_Wohni:003D:01:
cmdLst:
assignHmKey noArg
burstXmit 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-]
peerBulk -peer1,peer2,...- [({set}|unset)]
peerChan 0 -actChn- [({single})] [({set}|unset)] [actor|remote|both]
raw -data- [...]
regBulk -list-.-peerChn- -addr1:data1- [-addr2:data2-]...
regSet [(prep|{exec})] -regName- -value- [-peerChn-]
reset 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 +5D43AC,00,00,00
nextSend 1653931062.12179
rxt 2
vccu virtualCCU
p:
5D43AC
00
00
00
prefIO:
myHmUART
mRssi:
mNo 16
io:
myHmUART:
-22
-22
peerIDsH:
00000000 broadcast
prt:
bErr 0
sProc 0
q:
qReqConf
qReqStat
role:
chn 1
dev 1
rssi:
at_myHmUART:
avg -35.1584721657863
cnt 2461
lst -30
max -25
min -58
tmpl:
Attributes:
DbLogExclude .*
DbLogInclude temperature,humidity,state
IOgrp virtualCCU:myHmUART
actCycle 000:10
actStatus alive
autoReadReg 4_reqStatus
event-on-change-reading temperature:0.5,humidity:5
expert defReg,rawReg
firmware 1.3
icon temp_inside
model HM-WDS10-TH-O
peerIDs 00000000
room CUL_HM,Wohnraum
serialNr OEQ1016948
subType THSensor
Für mich stellen sich folgende Fragen:
1. Ist defmod oder define der richtige Weg. Ich habe defmod gewählt, da es wiederkehrend ist.
2. Ist DOIF das richtige Hilfsmodul oder sollte ich besser at nehmen.
3. ist die Abfrage BluetoothAnwesend:presence eq "present" so korrekt oder muss ich mit $EVPART1 arbeiten?
4. Klima_Wohni:temperature < 14.0 zu dieser Abfrage hab ich grosses Vertrauen
5. zum Befehl set Heizung_Climate desired-temp 15.0 hab ich auch grosses Vertrauen..
Was sagt ihr dazu?
Kenne DOIF nicht wirklich aber soviel schon:
du musst überlegen was "triggern" soll
Also soll bei jeder Temperatur von Klima_Wohni:temperature getriggert werden und dann auf kleiner 14 geprüft und die Uhrzeit geprüft und presence geprüft werden?
Dann muss eben Klima_Wohni:temperature triggern, die anderen Prüfungen nur abfragend...
Oder soll bei Absent/Present getriggert werden? Dann eben auf das triggern und die anderen Dinge abfragen...
(denke eher nicht)
Usw.
Siehe commandref DOIF: Trigger und Abfrage
Wie ein DOIF mit Zeittrigger geht: keine Ahnung und ob das dann (aber in welchen Intervallen) zwischen 5 und 6 Uhr triggert?
Ein at kann ja nur zu einem Zeitpunkt triggern bzw. eben zyklisch z.B. alle 5min und dann eben per disabledForIntervals entsprechend außerhalb von 5 und 6 Uhr deaktivieren...
Gruß, Joachim
ZitatFür mich stellen sich folgende Fragen:
1. Ist defmod oder define der richtige Weg. Ich habe defmod gewählt, da es wiederkehrend ist.
Die Begründung finde ich toll 8)
Meinst Du bei define wird das Device nach dem ersten Lauf wieder gelöscht?
Man legt eine Device mit define an und ändert es per defmod (wenn es "automatisch" erfolgen soll).
ZitatFür mich stellen sich folgende Fragen:
2. Ist DOIF das richtige Hilfsmodul oder sollte ich besser at nehmen.
DOIF ist mächtig, da kann man viel machen, wenn man sich einliest.
Ein at wird zur zu einem Zeitpunkt ausgelöst und Du musst alle anderen Bedingungen dann im at prüfen. Oder, kannst Du mir ein Beispiel at zeigen was zwischen zwei Zeitpunkten auslöst?
Zitat von: UweUwe am 30 Mai 2022, 19:23:21
2. Prüfung der Zimmertemperatur Modul Klima_Wohni reading: temperature
3. Prüfung der Anwesenheit Modul BluetoothAnwesend:presence reading present
Es fängt schon damit an, dass der Begriff "Modul" hier völlig falsch ist. Ein "Modul" ist ein von FHEM mitgeliefertes Stück Programmcode.
Was Du eigentlich meinst, ist ein "device"
Zitat von: UweUwe am 30 Mai 2022, 19:23:21
1. Ist defmod oder define der richtige Weg. Ich habe defmod gewählt, da es wiederkehrend ist.
Der richtige Weg, ein device anzulegen, ist immer "define". Deshalb wirst Du beim Abspeichern einer Konfiguration auch niemals ein "defmod" im Ergebnis finden.
"defmod" wurde erst im April 2015 zusätzlich eingeführt.
"defmod" kann man zur Laufzeit verwenden, um ein bereits vorhandenes device einfach zu verändern.
Ja, man kann mit defmod auch ein neues Gerät anlegen, aber auch dieses wird beim Abspeichern immer mit "define" in die Konfiguration geschrieben.
Dass es zum Ändern von bestehenden devices auch noch den Befehl "modify" gibt, lassen wir jetzt einfach mal unbeachtet.
Zitat von: rabehd am 30 Mai 2022, 19:58:13
Oder, kannst Du mirein Beispiel at zeigen wwas zwischen zwei Zeitpunkten auslöst?
Ja, wie geschrieben: zyklisches at mit disabledForIntervals als Einschränkung für den gewünschten Zeitraum...
defmod atTest2 at +*00:05:00 {Log3(undef, 3, "at hat ausgelöst")}
attr atTest2 disabledForIntervals 06:00-24:00 00:00-05:00
Alle 5min zwischen 05:00 und 06:00...
Übrigens als "RawDef", deswegen auch defmod ;)
Gruß, Joachim
Hi,
bin grad eben erst von der Arbeit heimgekommen, hab den Kopf noch ziemlich voll, deshalb hab ich mir nicht ALLES durch den Kopf gehn lassen hier.
Aber eines ist schon mal auffällig. Das DOIF kann so eigentlich garnicht funktionieren, weil die Klmmersetzung falsch ist:
defmod di_Heizung_morgens DOIF ([5:00-6:00] and [BluetoothAnwesend:presence] eq "present" and [Klima_Wohni:temperature] < 14.0 ) (set Heizung_Climate desired-temp 15.0)
So müsste es richtigerweise lauten.
lg, Stefan
@Joachim
Das ist eine Variante die mir widerstrebt. Da bin ich eher der Fan eines DOIF. ;)
Aber ich gebe zu, es geht eben (wie immer) auch anders.
Vielleicht brauche ich es mal und hoffe dann an Deinen Tipp zu denken.
Hallo Joachim,
Inhaltlich möchte ich folgendes realisiert haben:
Zwischen 5 und 6 Uhr soll geprüft werden, ob die Temperatur unter 14 Grad liegt. Deine Nachfrage hat mnir aber gezeigt, worin ein Problem liegt. Wie oft soll geprüft werden, alle 15 Minuten oder alle 15 Sekunden oder den trigger auf die Temoperatur legen..
Fals die Temperatur unter 15 Sekunden soll, wenn die Anwesenheit "present" ist, die desired_temp gestellt werden,. Also Presence nur "abfragend" und "aktuelle Zimmertemperatur nur abfragend.
Hab ich verstanden.
rallo rabehd,
sorry, ich kann deinen Ausfühungen mit define und defmod leider nicht folgen.
Hallo Icinger,
danke für den Hinweis mit der Klammer. Ich habe die Definition des devices entsprechend mödifiziert.
Man sehen was FHEM morgen früh zwischen 5 und 6 Uhr macht.
In dem Logfile müsste ich doch erkennen, falls etwas schief gegangen ist.
Zitat von: UweUwe am 30 Mai 2022, 22:34:13
sorry, ich kann deinen Ausfühungen mit define und defmod leider nicht folgen.
Das ist nicht schlimm, ich habe Deine Begründung für die Verwendung defmod auch nicht verstanden.
Vielleicht hast Du die Erklärung von betateilchen verstanden, er hat nicht anderes gesagt, aber ausführlicher.
Hallo an Alle,
mei DOIF hat heute leider keine Reaktion gezeigt, auch nicht im Logfile, auch keine Fehlermeldung.
Der Hinweis von Ichinger war gut und hab ich auch gestern schon eingebaut.
Ich habe mich gewundert, dass mein Fehler nicht durch " Codeimport " gefunden worden ist.
Gibt es ein Hilfsmittel, mit dem ich die Funktion des DOIF prüfen kann?
Kölnnt ihr bitte nochmals auf die DOIF schauen:
defmod di_Heizung_morgens DOIF ([5:00-6:00] and [BluetoothAnwesend:presence] eq "present" and [Klima_Wohni:temperature] < 14.0 ) (set Heizung_Climate desired-temp 15.0)
Es soll morgens zwischen 5 Uhr und 6 Uhr prüfen (Alternativ ist für mich auch eine Prüfung nur um 5 Uhr ok.)
ob Anwesenheit ist (present) ==> hier vermute ich das Syntaxthema
ob die Innentemperatur unter 14 Grad ist, ( Klima_Wohni).
Danke
Falls beides positiv ==> Heizung_Climate desired-temp auf 15 Grad stellen.
Dann poste/verschiebe es doch im richtigen Unterforum inkl. lists aller beteiligter Devices...
help DOIF
Module: 98_DOIF.pm Maintainer: damian-s Forum: Automatisierung/DOIF
Gruß, Joachim
Moi moin,
meine DOIF´s sind in diesem Format angelegt
defmod di_Heizung_morgens DOIF ([05:00-06:00] and [?BluetoothAnwesend:presence] eq "present" and [?Klima_Wohni:temperature] < 14.0) (set Heizung_Climate desired-temp 15.0)
attr di_Heizung_morgens do always
ZitatKölnnt ihr bitte nochmals auf die DOIF schauen:
Ohne ein list wird das nur raten.
Hi,
vielleicht kann ich ja ein wenig zur Ent(Ver?)-wirrung beitragen. Es scheint ja nicht so klar zu sein, wie das DOIF (oder fhem) arbeitet. Man liest hier sehr oft etwas von "Es soll morgens zwischen 5 Uhr und 6 Uhr prüfen" oder ähnlich. Es wird aber eigentlich nix geprüft, ausser Du selbst tust das, z.B. mittels DOIF oder at. Ansonsten ist fhem EVENT-gesteuert, d.h. irgendwas erzeugt einen Event, z.B. eine Temperatursensor meldet einen
neuen Temperaturwert, und irgendwas anderes reagiert darauf (z.B. temperature < xx ?). Wenn das mit der Event-Steuerung klarer geworden ist findet man schnell heraus, dass der Event-Monitor (linke Menüspalte, ziemlich unten) dein Freund und Helfer ist: hier sehe ich, welche Events ein Device erzeugt und vor allem wie oft (das ist für die gesamte Performance wichtig!). Ausserdem kann ich mir dort auch gleich die nötigen Code-schnipsel erzeugen lassen, um auf die Events zu reagieren, und zwar für notify/DOIF/Filelog etc.
Zeitgesteuerte Dinge sind dann auch nix anderes als Events, auf die reagiert wird. Bei Zeiträumen, wie z.B. im DOIF [05:00-06:00] ist es dann so, dass der Ausdruck 05:00-06:00 innerhalb dieser Zeit "wahr"(1) ist, ausserhalb ist er "falsch"(0). Ein Event wird somit um 5:00 und um 6:00 erzeugt, jeweils der Zustandswechsel 0->1 sowie 1->0.
Um bei Deinem Beispiel zu bleiben:
Zitatdefmod di_Heizung_morgens DOIF ([05:00-06:00] and [?BluetoothAnwesend:presence] eq "present" and [?Klima_Wohni:temperature] < 14.0) (set Heizung_Climate desired-temp 15.0)
Hier hast Du die Bedingungen für Presence und Temperatur durch das Fragezeichen auf nicht-triggernd oder "abfragend" eingestellt, also wird dieser Zweig des DOIF genau 2 mal durchlaufen: um 5:00 wird die erste Bedingung wahr, wenn die beiden anderen zu diesem Zeitpunkt auch wahr sind, dann wird der Ausführungsteil abgearbeitet (set Heizung_Climate desired-temp 15.0). Um 6:00 wird der erste Ausdruck unwahr/falsch/0, somit ist es egal, wie die beiden folgenden Bedingungen sind, der Ausführungsteil wird nicht ausgeführt.
Jetzt bist Du dran: wer soll wann was schalten dürfen? Es geht darum, was innerhalb der Zeitspanne passiert. Alles, was schalten/triggern soll, darf dann keine Fragezeichen haben. Der Temperatur-Sensor wird allerdings öfter einen neuen Wert liefern, der dann jedesmal das DOIF triggern würde, und wenn er jeweils unter 14 Grad ist auch jedesmal die desired-temp einstellen. Für diesen Fall bietet es sich an, den Temperatursensor in einem DOIF_Readings einzutragen und im DOIF selbst dann darauf zu reagieren. DOIF_Readings erzeugen keine Events in Richtung fhem, nur innerhalb des DOIF.
Abschliesend kommt dann noch die große Frage: was sonst tun? Was passiert ausserhalb z.B. des Zeitraumes? Also die Frage DOELSE oder DOELSIF. Das kannst auch nur Du beantworten.
Noch ein Tipp: Spiel doch einfach mal mit fhem rum, sprich "programmiere" dir ein Testdoif, wo du solche Abfragen/Events und die Reaktion darauf einfach mal simulierst. Zeiträume im Minutenraster sind doch viel einfacher zu überschauen, als wie in deinem Beispiel immer zum nächsten Tag wartest... Devices kannst Du durch Dummys simulieren, denen Du per "setreading meinDummy mein Reading meinWert" einen Event entlockst, auf welchen Du im test-DOIF dann reagierst. Oder Du hast noch irgenwelche übrigen Sensoren/Aktoren, die Daten an fhem liefern können). Lass den Event-Monitor laufen, lass Dir auf weiteren Browserfenstern die Devices anzeigen, mach ein Terminal mit "tail -f -n500 /opt/fhem/log/fhem-2022-05.log" (<--wie das aktuelle Logfile eben heist) auf und schau dem Log zu.... und und und
Hausaufgaben:
- commandref DOIF
- https://wiki.fhem.de/wiki/DOIF (https://wiki.fhem.de/wiki/DOIF)
- https://wiki.fhem.de/wiki/Event_monitor (https://wiki.fhem.de/wiki/Event_monitor)
- DOIF_Readings, event_readings in der commandref
Viel Erfolg!
Sany
...und Joachim hat recht, vielleicht den Thread nach DOIF verschieben.
Kann das funktionieren ohne DOELSE oder ohne "attr <name> do always" ?
do always hat er wohl gesetzt, ansonsten funktioniert das schon, aber eben nur ein mal, wenn die Bedingungen erfüllt sind. Deshalb ja meine Ausführung zu: was sonst?
Ich würde alle Trigger zulassen und do always nicht setzen:
defmod di_Heizung_morgens DOIF ([05:00-06:00] and [BluetoothAnwesend:presence] eq "present" and [Klima_Wohni:temperature] < 14.0) (set Heizung_Climate desired-temp 15.0)
Begründung:
Wenn Presence nach 05:00 Uhr wahr wird, wäre das Setzen der Temperatur sinnvoll, genauso, wenn nach 05:00 Uhr die Temperatur unter 14 fällt.
Ohne do always wird nur einmal geschaltet und dann ggf. erst wieder am nächsten Tag oder wenn Presence zwischendurch unwahr war bzw. Temperatur auf über 14 Grad gestiegen und wieder gefallen ist - also so, wie es Sinn macht.
Als nächstes wird die Frage kommen, wann wird die Solltemperatur auf einen anderen Wert gesetzt :)
Zitat von: Damian am 31 Mai 2022, 13:25:03
Als nächstes wird die Frage kommen, wann wird die Solltemperatur auf einen anderen Wert gesetzt :)
Jetzt hat es doch einer ausgesprochen! ;)
Sie war's, sie war's, äh: er war's, er war's... :D
Gruß, Joachim
Hab jetzt die Frage verschoben, wie gebeten , nach Automatisierung, sehr gerne.
Die "List" sind in meinem Startbeitrag alles beinhaltet.
Morgen schau ich mir eure Vorschläge noch an. Das ? vor zum Beispiel "Bluetoothanwesend" macht mir noch Kopfzerbrechen.
Das Fragezeichen bei DOIF bedeutet: wenn das DOIF getriggert wird, also eine "Auswertung" startet, dann werden Bedingungen mit Fragezeichen nur "abgefragt". D.h. eine Änderung von Anwesenheit führt nicht zur Triggerung des DOIF (das muss dann durch eine der anderen Bedingungen erfolgen, z.B. eben Temperatur)
Das meinte ich ja mit: du musst wissen welche Änderungen das DOIF triggern sollen und welche Dinge nur "bewertet" werden sollen...
Gruß, Joachim
Vielen Dank für eure bisherigen Hinweise und Hilfen. Ich habe den Eindruck, dass das DOIF jetzt tut, was es soll. Damit ich alles korrekt verstehe und auch für weitere DOIFs anwenden kann, möchte ich den Befehl mal analysiern:
Hier nochmal das DOIF:
defmod di_Heizung_morgens DOIF ([05:00-06:00] and [?BluetoothAnwesend:presence] eq "present" and [?Klima_Wohni:temperature] < 14.0) (set Heizung_Climate desired-temp 15.0)
Hinweise: ? bedeutet:
Das Fragezeichen bei DOIF bedeutet: wenn das DOIF getriggert wird, also eine "Auswertung" startet, dann werden Bedingungen mit Fragezeichen nur "abgefragt". D.h. eine Änderung von Anwesenheit führt nicht zur Triggerung des DOIF (das muss dann durch eine der anderen Bedingungen erfolgen, z.B. eben Temperatur)
==> für meinen Fall bedeutet dies Um 5 Uhr wird das DOIF getriggert und die Werte für BluetoothAnwesend und Klima_Wohni einmal ausgewertet. Heizung_Climate wird daraufhin geändert oder auch nicht. Durch die ? vor BluetoothAnwesend und Klima_Wohni ist die Definition eines Zeitraumes sinnlos. Man erhält dasselbe Ergebnis, wenn man den Zeitraum 5:00 Uhr-6:00 Uhr durch den Zeitpunkt 5:00 Uhr ersetzt. Es wird danach sowieso nicht mehr geprüft.
defmod: ==> ??ich verstehe noch nicht wann ich define und wann ich defmod machen muss.
di_Heizung_morgens : ==> Name der DOIF
DOIF ==> Befehlsname
05:00-06:00 ==> DOIF prüft überhaupt nur in diesem Zeitraum , dazu muss aber ein Trigger vorliegen, um 5:00 Uhr wird in jedem Fall geprüft.
?BluetoothAnwesend:presence : ==> das Reading presence des Modules BluetoothAnwesend wird um 5:00 Uhr geprüft , aufgrund des ? erzeugt BluetoothAnwesend:presence keinen Trigger.
eq ==> Prüfung auf syntaktische Gleichheit
present ==> Ausdruck, auf den das Reading "BluetoothAnwesend:presence geprüft wird
and => logisches Und
?Klima_Wohni:temperature ==> das Reading Klima_Wohni:temperature wird auch um 5:00 Uhr geprüft, wie BluetoothAnwesend:presence erzeugt auch Klima_Wohni keinen Trigger bei Änderung
< : ==> kleiner als
14.0 ==> Wert auf den Klima_Wohni geprüft wird.
(set Heizung_Climate desired-temp 15.0) : ==> falls die Prüfung positiv ist, wird über den Kanal Heizung_Climate desired temperature gesetzt.
attr di_Heizung_Test do always : ==> ?? ich verstehe nicht, warum dies notwendig ist.
Euer Kommentar war folgendenmassen:
Ohne do always wird nur einmal geschaltet und dann ggf. erst wieder am nächsten Tag oder wenn Presence zwischendurch unwahr war bzw. Temperatur auf über 14 Grad gestiegen und wieder gefallen ist - also so, wie es Sinn macht:
Aufgrund der Fragezeichen wird doch sowieso nur einmal um 5 Uhr geprüft, auch wenn sich Presence oder Temperatur ändert. Aus meiner Sicht ist deshalb das Setzten des Attributes "do always". unnötig
Vielen Dank
define - erstellt ein neues Device
modify- ändert ein vorhandenes Device
defmod - ändert ein vorhandenes Device, ist keins vorhanden, wird es erstellt.
Quasi das Tool für beides, wurde kreiert, um Codes zu importieren, ohne Rücksicht darauf, ob schon da oder nicht. Kannst du also immer verwenden.
[05:00-06:00] kannst du verwenden, da es hier der einzige Trigger ist, kannst du auch [05:00] verwenden, da der Endeteil zwar triggert, gleichzeitig aber false ist.
Damit könnte man z.B. ein DOELSE auslösen.
do always brauchst du hier eher (noch) nicht, aber ein DOIF wächst gern mal über die Zeit, bei dir fehlt ja auch noch das Umschalten auf eine andere desired-temp...