FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Morgennebel am 25 Januar 2017, 20:56:23

Titel: DOIF mit Zeit-Fenstern: Ermitteln, ob ein Fenster aktiv ist?
Beitrag von: Morgennebel am 25 Januar 2017, 20:56:23
Moin Moin,


ich setzte einige DOIFs mit Zeitfenstern, also [HH:MM-HH:MM], ein.

Gibt es eine Möglichkeit, ein Reading o.ä. im DOIF zu haben, welches erkennt, ob eines der Zeitfenster wahr ist?

Konkret: kann ich irgendwie ein Reading erzeugen, daß den Wert "0" annimmt, wenn kein Zeitfenster zutrifft und den Wert 1....N für das 1te bis Nte Zeitfenster?

Das liesse sich ganz wunderbar nutzen, um die "AKTIV"-Zeiten in Diagrammen zu visualisieren.

Danke, -MN
Titel: Antw:DOIF mit Zeit-Fenstern: Ermitteln, ob ein Fenster aktiv ist?
Beitrag von: Ellert am 26 Januar 2017, 07:00:49
Du könntest Dir ein DOIF bauen mit je einer Zeitspanne pro Zweig und DOELSE, dann zeigt Dir das Reading cmd das aktive Zeitfenster.

Alternativ könntest Du Dir ein userReading anlegen und dort mit einer Perl-Funktion prüfen für welche Zeitspanne die aktuelle Zeit innerhalb dieser liegt.
Titel: Antw:DOIF mit Zeit-Fenstern: Ermitteln, ob ein Fenster aktiv ist?
Beitrag von: Morgennebel am 26 Januar 2017, 09:15:28
Danke, Ellert,

ich suche eigentlich eine Lösung, die die verwendeten Zeiten nicht manuell kopiert oder in mehreren DOIFs pflegt, da diese bei Änderungen nie synchron sein werden.

Die perl-Lösung klingt gut, da man dort eine generische Lösung in mehreren DOIFs verwenden könnte. Aber dazu fehlt mir Wissen (meine Perl-Kenntnisse kommen von 2002-2004) und Zeit...

Danke, -MN
Titel: Antw:DOIF mit Zeit-Fenstern: Ermitteln, ob ein Fenster aktiv ist?
Beitrag von: Ellert am 26 Januar 2017, 10:20:22
Zitatda diese bei Änderungen nie synchron sein
Das könntest Du verhindern indem Du indirekte Timer verwendest mit Bezug auf das andere DOIF.

so etwa müsste es aussehen (ungetestet):
([[anderesDOIF:timer_01_c01:"(\d\d:\d\d:\d\d)":$1]-[anderesDOIF:timer_02_c01:"(\d\d:\d\d:\d\d)":$1]])
Titel: Antw:DOIF mit Zeit-Fenstern: Ermitteln, ob ein Fenster aktiv ist?
Beitrag von: Per am 26 Januar 2017, 12:48:05
Oder dich auf den cmdState beziehst. Sollte leichter zu lesen sein.
(([anderesDOIF] eq "cmd01") and xxx)
Titel: Antw:DOIF mit Zeit-Fenstern: Ermitteln, ob ein Fenster aktiv ist?
Beitrag von: Morgennebel am 26 Januar 2017, 19:18:29
Vielen Dank für die Denkanstösse. Damit kann ich bestimmt eine Lösung finden.

Danke, -MN