sleep im IF Ausführungsteil

Begonnen von Xcoder, 20 August 2016, 09:27:18

Vorheriges Thema - Nächstes Thema

Xcoder

Hallo

Ich habe ein sleep im Ausführungsteil eines IF:

define EIB_0010_N1 notify EIB_0010:on IF ($hms gt "15:30") (\
  set EIB_0100 value 1,\
  sleep 10, IF ([EIB_0012] eq "off") (\
    IF ($hms lt "20:00") ((set EIB_100a,EIB_1028,EIB_1096,EIB_4028 on))\
    ELSE ((set EIB_100a,EIB_4028 on))\
  ) ELSE ((set EIB_102b,EIB_400a on-till 23:00))\
)


fhem ist damit aber nicht glücklich und bringt die Warnung: "WARNING: sleep without additional commands is deprecated and blocks FHEM"

Wie mache ich fhem glücklich? Gemäss FHEM Referenz sollte das doch OK sein wenn nach dem sleep ein Befehl folgt.

Gruss, Xcoder

Damian

Zitat von: Xcoder am 20 August 2016, 09:27:18
Hallo

Ich habe ein sleep im Ausführungsteil eines IF:

define EIB_0010_N1 notify EIB_0010:on IF ($hms gt "15:30") (\
  set EIB_0100 value 1,\
  sleep 10, IF ([EIB_0012] eq "off") (\
    IF ($hms lt "20:00") ((set EIB_100a,EIB_1028,EIB_1096,EIB_4028 on))\
    ELSE ((set EIB_100a,EIB_4028 on))\
  ) ELSE ((set EIB_102b,EIB_400a on-till 23:00))\
)


fhem ist damit aber nicht glücklich und bringt die Warnung: "WARNING: sleep without additional commands is deprecated and blocks FHEM"

Wie mache ich fhem glücklich? Gemäss FHEM Referenz sollte das doch OK sein wenn nach dem sleep ein Befehl folgt.

Gruss, Xcoder

Entweder perl-if mit fhem-Befehl nehmen, oder DOIF mit wait benutzen.

Gruß

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

Xcoder

OK. Dann doch DOIF, hatte da bisher immer Mühe bis alle Klammern richtig gesetzt waren. Nun sieht das mal so aus:
define EIB_0010_D1 DOIF ([EIB_0010:?on] and $hms gt "15:30")\
  (set EIB_0100 value 1)\
  (IF ([EIB_0012] eq "off") (\
    IF ($hms lt "20:00") ((set EIB_100a,EIB_1028,EIB_1096,EIB_4028 on))\
    ELSE ((set EIB_100a,EIB_4028 on)) )\
  ELSE ((set EIB_102b,EIB_400a on-till 23:00)) )

attr EIB_0010_D1 alias EIB_0010_Dämmerung ein mit DOIF
attr EIB_0010_D1 wait 0,10


Mal sehen ob das nun für alle möglichen Fälle so tut wie erwarte.

Danke und Gruss, Xcoder

Damian

Zitat von: Xcoder am 20 August 2016, 13:18:44
OK. Dann doch DOIF, hatte da bisher immer Mühe bis alle Klammern richtig gesetzt waren. Nun sieht das mal so aus:
define EIB_0010_D1 DOIF ([EIB_0010:?on] and $hms gt "15:30")\
  (set EIB_0100 value 1)\
  (IF ([EIB_0012] eq "off") (\
    IF ($hms lt "20:00") ((set EIB_100a,EIB_1028,EIB_1096,EIB_4028 on))\
    ELSE ((set EIB_100a,EIB_4028 on)) )\
  ELSE ((set EIB_102b,EIB_400a on-till 23:00)) )

attr EIB_0010_D1 alias EIB_0010_Dämmerung ein mit DOIF
attr EIB_0010_D1 wait 0,10


Mal sehen ob das nun für alle möglichen Fälle so tut wie erwarte.

Danke und Gruss, Xcoder

Beim DOIF gibt es Zeitintervalle um Aktionen zeitlich einzuschränken:

z. B.

DOIF ([EIB_0010:"on"] and [15:30-00:00])...


Gruß

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