DOIF mit Zeitintervall schaltet nach Event ins DOELSE

Begonnen von hanske, 26 September 2017, 10:28:04

Vorheriges Thema - Nächstes Thema

hanske

Folgendes DOIF schaltet nach einem Event von rt_weather immer ins DOELSE
obwohl das Zeitintervall gültig ist.
Erwartet hätte ich, dass bei gültigem Zeitintervall immer CMD_1 getriggert wird.

DOIF ([09:00-14:00] ) ()
DOELSEIF([rt_weather:humidity] > 70 )()
DOELSE ()


Ist wahrscheinlich bekannt aber ich finde es unlogisch.

Grüße
Raspberry Pi (Wheezy), Aeon Labs Z-Wave USB Stick 2, HM-USB Adapter, EBUS 2.0 mit Wemos
diverse HM und Z-Wave Geräte

Ellert


hanske

Nein, hat mir nicht geholfen.
Dort steht:
ZitatWenn die aktuelle Uhrzeit in der angegebenen Zeitspanne liegt, ist die Zeitspanne wahr.
... und damit auch die erste Bedingung und es müsste der in der Strukturgrafik angezeigte erste Zweig ausgeführt und nicht die anderen  Bedingungen überprüft werden.
Gibt es einen Workaround um mein Beispiel nach "meiner" Logik zum Laufen zu kriegen?
Mehrere DOIFs möchte ich vermeiden.

Danke
Raspberry Pi (Wheezy), Aeon Labs Z-Wave USB Stick 2, HM-USB Adapter, EBUS 2.0 mit Wemos
diverse HM und Z-Wave Geräte

Damian

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

Frank_Huber

Zitat von: hanske am 26 September 2017, 11:23:48
Gibt es einen Workaround um mein Beispiel nach "meiner" Logik zum Laufen zu kriegen?
Mehrere DOIFs möchte ich vermeiden.

vielleicht sagst Du uns mal was du mit dem DOIF erreichen willst?
interessant wäre auch noch ob und welche Attribute gesetzt sind.

Ellert

Zitat von: hanske am 26 September 2017, 11:23:48
Nein, hat mir nicht geholfen.
Dort steht:... und damit auch die erste Bedingung und es müsste der in der Strukturgrafik angezeigte erste Zweig ausgeführt und nicht die anderen  Bedingungen überprüft werden.
Gibt es einen Workaround um mein Beispiel nach "meiner" Logik zum Laufen zu kriegen?
Mehrere DOIFs möchte ich vermeiden.

Danke

Ich weiss nicht, wo Du das:
und damit auch die erste Bedingung und es müsste der in der Strukturgrafik angezeigte erste Zweig ausgeführt und nicht die anderen  Bedingungen überprüft werden.
gelesen hast, jedenfalls nicht in dem von mir angegebenen Abschnitt.

hanske

Dein Link Beispiel C): Kombinierte Ereignis- und Zeitsteuerung
ZitatWenn die aktuelle Uhrzeit in der angegebenen Zeitspanne liegt, ist die Zeitspanne wahr.
ZitatDOELSE das Schlüsselwort leitet einen Befehlszweig ohne explizite Bedingung ein. Dieser Zweig wird ausgeführt, wenn keine geprüfte Bedingung wahr ist.
Wahrscheinlich ist die Uhrzeit einfach keine "geprüfte Bedingung", warum nicht?

Das "checkall" hat mir aber sehr geholfen. Ich dachte das wäre der Standardfall.

Danke an Damian
Raspberry Pi (Wheezy), Aeon Labs Z-Wave USB Stick 2, HM-USB Adapter, EBUS 2.0 mit Wemos
diverse HM und Z-Wave Geräte

Frank_Huber

Zitat von: hanske am 26 September 2017, 16:17:51
Dein Link Beispiel C): Kombinierte Ereignis- und ZeitsteuerungWahrscheinlich ist die Uhrzeit einfach keine "geprüfte Bedingung", warum nicht?

das wäre dann aber eher:
DOIF ([09:00-14:00] and [rt_weather:humidity] > 70 ) ()
DOELSE ()


kombiniert ist in einem Zweig. Du hast die Kombination in zwei Zweige aufgeteilt.

Ellert

Zitat von: hanske am 26 September 2017, 16:17:51
Dein Link Beispiel C): Kombinierte Ereignis- und ZeitsteuerungWahrscheinlich ist die Uhrzeit einfach keine "geprüfte Bedingung", warum nicht?

Das "checkall" hat mir aber sehr geholfen. Ich dachte das wäre der Standardfall.

Danke an Damian

Zitat...warum nicht?

Hast Du denn die Erläuterung zu "checkall" nicht gleich gelesen?
ZitatBei der Abarbeitung der Bedingungen, werden nur die Bedingungen überprüft, die zum ausgelösten Event das dazughörige Device bzw. die dazugehörige Triggerzeit beinhalten.

Per

Zitat von: hanske am 26 September 2017, 16:17:51
Dein Link Beispiel C): Kombinierte Ereignis- und ZeitsteuerungWahrscheinlich ist die Uhrzeit einfach keine "geprüfte Bedingung", warum nicht?
Die Zeit wird nicht geprüft, wenn in diesem Zweig kein aktiver (!) Event vorhanden ist. Und aktiv ist die Zeit an sich (in deinem Beispiel) nur genau um 9 und 14 Uhr.
Dazwischen ist die Bedingung zwar wahr, wird aber mangels Event, nicht geprüft.