Verständnisfrage zu Readings..

Begonnen von UweUwe, 30 Mai 2022, 19:23:21

Vorheriges Thema - Nächstes Thema

UweUwe

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?



MadMax-FHEM

#1
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
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)

rabehd

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).
Auch funktionierende Lösungen kann man hinterfragen.

rabehd

#3
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?
Auch funktionierende Lösungen kann man hinterfragen.

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

MadMax-FHEM

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
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)

Icinger

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
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

rabehd

@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.
Auch funktionierende Lösungen kann man hinterfragen.

UweUwe

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.





rabehd

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.
Auch funktionierende Lösungen kann man hinterfragen.

UweUwe

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.

MadMax-FHEM

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
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)

Thomas0401

#12
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

rabehd

ZitatKölnnt ihr bitte nochmals auf die DOIF schauen:
Ohne ein list wird das nur raten.
Auch funktionierende Lösungen kann man hinterfragen.

Sany

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/Event_monitor
- DOIF_Readings, event_readings in der commandref

Viel Erfolg!


Sany

...und Joachim hat recht, vielleicht den Thread nach DOIF verschieben.

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