FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Burny4600 am 23 Mai 2016, 14:11:59

Titel: Verständnisfrage DOIF
Beitrag von: Burny4600 am 23 Mai 2016, 14:11:59
Folgende Bedingungen sind gegeben.

define PSTH3 DOIF ([10:30-16:00] and [ZLPD] eq "on" and [DL2_T04k:state] >= 20 and [DL2_T04k:state] < 25 and [DL2_T11:state] > 18 and [PSTHD] eq "off")(set PSTHD on)
DOELSEIF
([PSTHD] eq "on")(set PSTHD off)


Der Start funktioniert noch richtig. Sowie eine der Bedingungen in dem Zeitraum 10:30-16:00 nicht gegeben ist müsste die Bedingung im Teil 2 set PSTHD off erfolgen.
Tut es aber nicht, sondern erst um 16:00 erfolgt die Abschaltung.
Ist das mit DOIF grundsätzlich anders zu verstehen als in den Anleitungen festgehalten?
Titel: Antw:Verständnisfrage DOIF
Beitrag von: Per am 23 Mai 2016, 14:30:02
Der Zweig ([PSTHD] eq "on") wird nur ausgeführt, wenn PSTHD den Status auf "on" ändert. Das ist keine Statusabfrage, sondern eine Triggerabfrage.
Allerdings gibt es einen internen Sicherheitsmechanismus, welcher verhindert, dass ein DOIF die selbst vorgenommene Änderung gleich wieder selbst auswertet (siehe selftrigger).
Bei dir wäre vllt.
define PSTH3 DOIF ([10:30-16:00] and [ZLPD] eq "on" and [DL2_T04k:state] >= 20 and [DL2_T04k:state] < 25 and [DL2_T11:state] > 18)(set PSTHD:FILTER=state=off on)
DOELSE (set PSTHD:FILTER=state=on off)

möglich.
Titel: Antw:Verständnisfrage DOIF
Beitrag von: Burny4600 am 23 Mai 2016, 16:30:27
Danke für die Info:

Werde ich gleich einmal testen.
Titel: Antw:Verständnisfrage DOIF
Beitrag von: automatisierer am 23 Mai 2016, 17:02:23
Aus welchem Grund lässt du das Gerät denn nur off schalten wenn es on ist und umgekehrt? Das macht mMn doch nur Sinn, wenn du statt einem bestimmetn Gerät einen 'Sammelbegriff' eingibst. Also 'set Licht.* on' und das würde dann auf 20 Geräte passen - um dann die Funklast zu minimieren, setzt du den Filter ein und schaltest nur die 'Licht.*' on die off sind...  Wenn der Befehl aber nur auf ein Gerät passt, macht es doch wenig Sinn, oder gibt es da einen anderen Hintergrund?!?

Dann brauchst du auch nach einem Neustart von FHEM nicht den aktuellen Zustand des Gerätes abfragen...
Und falls beim senden des letzten Befehls mal was in die Hose gegangen ist und der Device:STATE dann z.B. IOerr ist, dann schaltet dein Befehl weder on noch off..
Titel: Antw:Verständnisfrage DOIF
Beitrag von: Per am 23 Mai 2016, 17:07:51
Zitat von: automatisierer am 23 Mai 2016, 17:02:23und der Device:STATE dann z.B. IOerr ist
Du kannst mit "ungleich" arbeiten, dafür habe ich die Syntax aber gerade nicht griffbereit (wahrscheinlich "!=").
Also ...:FILTER=state!=off off
Titel: Antw:Verständnisfrage DOIF
Beitrag von: automatisierer am 23 Mai 2016, 17:16:52
Zitat...:FILTER=state!=off off
!= sollte passen, hab ich gestern noch in der Commandref überflogen... das macht es funtionssicherer, aber mMn immer noch keinen wirklichen Sinn wenn ich nur ein Device anspreche...
Titel: Antw:Verständnisfrage DOIF
Beitrag von: Burny4600 am 23 Mai 2016, 19:24:40
@automatisierer
ZitatAus welchem Grund lässt du das Gerät denn nur off schalten wenn es on ist und umgekehrt?
Das war bei einem früher verwendeten System notwendig, da ständig bei einer Änderung eines Sensors oder Sonstigen der Aktor per Funksignal angesprochen wurde was ja nicht notwendig war.

Mit FHEM lässt sich vieles komfortabler ausführen.
Zum einem muss ich das Alte System schön langsam vergessen, und die Möglichkeiten von FHEM alle mir einmal erarbeiten.