DOIF mit Zeit-Fenstern: Ermitteln, ob ein Fenster aktiv ist?

Begonnen von Morgennebel, 25 Januar 2017, 20:56:23

Vorheriges Thema - Nächstes Thema

Morgennebel

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
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

Ellert

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.

Morgennebel

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
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

Ellert

#3
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]])

Per

Oder dich auf den cmdState beziehst. Sollte leichter zu lesen sein.
(([anderesDOIF] eq "cmd01") and xxx)

Morgennebel

Vielen Dank für die Denkanstösse. Damit kann ich bestimmt eine Lösung finden.

Danke, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA