FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: ujaudio am 09 Januar 2016, 16:07:43

Titel: [gelöst] DOIF Logik bei Zeitintervallen
Beitrag von: ujaudio am 09 Januar 2016, 16:07:43
Aus der commandref habe ich
define di_radio DOIF ([08:00-10:00]) (set radio on) DOELSE (set radio off)
an meine Definitionen angepasst und wie folgt erweitert (Kopie aus DEF-Fenster):
([05:30-08:30] || [15:30-22:30])
  (set tr_BrunnenBaum ont)
DOELSE (set tr_BrunnenBaum offt)

Und das funktioniert.
Ich möchte aber, dass das nur im Dezember und Januar erfolgt. Wenn ich nun die Bedingung erweitere
(({$month}==12 || {$month}==1) && ([05:30-08:30] || [15:30-22:30]))
  (set tr_BrunnenBaum ont)
DOELSE (set tr_BrunnenBaum offt)

dann ist das DOIF immer in "cmd_2", also mein Weihnachtsbaum auf der Terrasse bleibt dauerhaft aus.

Was denke ich falsch? Die Klammern passen doch und $month ist laut commandref von 1 bis 12 (und nicht wie sonst in perl von 0 bis 11)??!?

Nachtrag: ich habe zum test die Zeit 15:30 immer etwas angepasst, dass wieder getriggert wird. Jetzt habe ich im Logfile folgende Meldungen - genau zu den Triggerzeitpunkten:
2016.01.09 15:30:00 1: PERL WARNING: Odd number of elements in anonymous hash at (eval 265) line 1.
2016.01.09 15:40:00 1: PERL WARNING: Odd number of elements in anonymous hash at (eval 446) line 1.
2016.01.09 15:52:00 1: PERL WARNING: Odd number of elements in anonymous hash at (eval 659) line 1.
2016.01.09 15:53:00 1: PERL WARNING: Odd number of elements in anonymous hash at (eval 680) line 1.

Titel: Antw:DOIF Logik bei Zeitintervallen
Beitrag von: Damian am 09 Januar 2016, 17:16:32
Zitat von: ujaudio am 09 Januar 2016, 16:07:43
Aus der commandref habe ich
define di_radio DOIF ([08:00-10:00]) (set radio on) DOELSE (set radio off)
an meine Definitionen angepasst und wie folgt erweitert (Kopie aus DEF-Fenster):
([05:30-08:30] || [15:30-22:30])
  (set tr_BrunnenBaum ont)
DOELSE (set tr_BrunnenBaum offt)

Und das funktioniert.
Ich möchte aber, dass das nur im Dezember und Januar erfolgt. Wenn ich nun die Bedingung erweitere
(({$month}==12 || {$month}==1) && ([05:30-08:30] || [15:30-22:30]))
  (set tr_BrunnenBaum ont)
DOELSE (set tr_BrunnenBaum offt)

dann ist das DOIF immer in "cmd_2", also mein Weihnachtsbaum auf der Terrasse bleibt dauerhaft aus.

Was denke ich falsch? Die Klammern passen doch und $month ist laut commandref von 1 bis 12 (und nicht wie sonst in perl von 0 bis 11)??!?

Nachtrag: ich habe zum test die Zeit 15:30 immer etwas angepasst, dass wieder getriggert wird. Jetzt habe ich im Logfile folgende Meldungen - genau zu den Triggerzeitpunkten:
2016.01.09 15:30:00 1: PERL WARNING: Odd number of elements in anonymous hash at (eval 265) line 1.
2016.01.09 15:40:00 1: PERL WARNING: Odd number of elements in anonymous hash at (eval 446) line 1.
2016.01.09 15:52:00 1: PERL WARNING: Odd number of elements in anonymous hash at (eval 659) line 1.
2016.01.09 15:53:00 1: PERL WARNING: Odd number of elements in anonymous hash at (eval 680) line 1.


$month ist eine Perl-Variable - sie wird in der Bedingung nicht in geschweifte Klammern gepackt.

Gruß

Damian

Titel: Antw:DOIF Logik bei Zeitintervallen
Beitrag von: ujaudio am 09 Januar 2016, 17:38:10
Danke, ich dachte $mon ist die perl-Variable. Aber ungeachtet dessen: commandref noch sorgfältiger lesen, wirklich versuchen jede Zeile 100% geistig zu verarbeiten. Den logischen Schluss, dass $month und $mon aufgrund des $ beides perö-Variable sind, sollte ich dann hinbekommen.