Verständnisfrage Wochentagssteuerung

Begonnen von Bartimaus, 08 September 2016, 12:15:13

Vorheriges Thema - Nächstes Thema

Bartimaus

Moin,

warum wird bei diesem Code define di_radio DOIF ([08:00-17:00|8] or [09:00-13:00|7]) (set radio on) DOELSE (set radio off)
oder alternativ define di_radio DOIF ([08:00-17:00|8] (set radio on) DOELSEIF [09:00-13:00|7]) (set radio on) DOELSE (set radio off)


Das Radio Wochentags um 13:00 Uhr ausgeschaltet ? Wird an der Stelle der Wochentag nicht abgefragt ?


Edit: https://forum.fhem.de/index.php/topic,57148.0.html werde ich mal genauer unter die Lupe nehmen
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Ellert

Ich bin kein Freund von DOELSE, weil manchmal Dinge eintreten, die man intuitiv nicht erwartet. Daher würde ich auch die andere(n) Bedingung(en) ausformulieren.

([08:00|8] or [09:00|7])
   (set radio on)
DOELSEIF ([17:00|8] or [13:00|7])
   (set radio off)


Ist FHEM aktuell?
Welche DOIF-Version läuft?
shutdown restart nach update durchgeführt?

Bartimaus

Hi,

ja FHEM ist aktuell, und letzte Woche habe ich erst alle Module aktualisiert.

Ich verwende DOIF mit DOELSE in diesem Fall, weil ich noch andere Parameter in diesem Zusammenhang abfrage. (Anwesenheit). Dabei soll das Radio nei Abwesenheit abgeschaltet, und bei Rückkehr innerhalb des Zeitraums wieder angeschaltet werden.

Dies hatte ich mit DOELSEIF + DOELSE definiert.

Konkret:

define di_radio DOIF ([08:00-17:00|8]
  and [Abwesenheit] eq "off"
(set radio on)
DOELSEIF [09:00-13:00|7]
and [Abwesenheit] eq "off" )
(set radio on)
DOELSE (set radio off)


Dabei wurde egal ob Abwesend oder nicht, Wochentags ( 8 ) das Radio um 13:00 ausgeschaltet, obwohl gem. erster Bedingung dies UNWAHR (-> 17:00) ist. WAHR ist diese Bedingung (13:00) NUR am Wochenende(7). Also wird 13:00 UNABHÄNGIG vom angehängtem Wochentag = UNWAHR. So zumindest meine Interpretation, oder auch die von manch anderem User hier noch.

Setze ich das ganze in eine Bedingung ohne DOELSEIF mit "OR", funktioniert es...
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Ellert

Also funktioniert dies?
define di_radio DOIF ([08:00-17:00|8] or [09:00-13:00|7]) (set radio on) DOELSE (set radio off)
oder was meinst Du mit
ZitatSetze ich das ganze in eine Bedingung ohne DOELSEIF mit "OR", funktioniert es...
?

Bartimaus

Yip.

Warum die DOELSEIF-Variante nicht funktioniert möchte ich verstehen.... ::)
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Ellert

ZitatYip.

Warum behauptest Du dann, es würde nicht funktionieren?

Zitatwarum wird bei diesem Code

define di_radio DOIF ([08:00-17:00|8] or [09:00-13:00|7]) (set radio on) DOELSE (set radio off)

Das Radio Wochentags um 13:00 Uhr ausgeschaltet ?

Damian

Zitat von: Bartimaus am 08 September 2016, 21:55:15
Yip.

Warum die DOELSEIF-Variante nicht funktioniert möchte ich verstehen.... ::)

Man kann sagen, dass mehrere DOIF-Zweige mit einem DOELSE in Kombination mit Zeitintervallen meisten nicht so funktionieren, wie der User es möchte.

Das liegt daran, dass der jeweilige DOIF-Zweig z. B. mit [09:00-13:00|7] auch an Wochentagen um 09:00 Uhr und 13:00 Uhr ausgewertet wird und dann nicht wahr ist. Als Folge wird dann DOELSE ausgeführt.

Vielleicht gelingt es mir irgendwann den Mechanismus in DOIF so zu ändern, dass in solchen Fällen, die Bedingung erst garnicht ausgewertet wird.

Gruß

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

Bartimaus

@Ellert

Sorry, war irgendwie für mich schon zu spät  ::)

@Damian

Danke für die Info. Hatte mich halt nur gewundert.  Weiss ich jedenfalls Bescheid, so das ich bei mehreren Zeitintervallen mit einer "OR"-Verknüpfung arbeiten muss.

LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Damian

Zitat von: Bartimaus am 09 September 2016, 08:42:30
@Ellert

Sorry, war irgendwie für mich schon zu spät  ::)

@Damian

Danke für die Info. Hatte mich halt nur gewundert.  Weiss ich jedenfalls Bescheid, so das ich bei mehreren Zeitintervallen mit einer "OR"-Verknüpfung arbeiten muss.

Oder anders gesagt: ein DOIF-Fall und ein DOELSE ist bei Zeitintervallen normalerweise kein Problem, da es nur zwei Zustände gibt, die sich gegenseitig ausschließen.

Gruß

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