Hauptmenü

Verständnisfrage DOIF

Begonnen von Burny4600, 23 Mai 2016, 14:11:59

Vorheriges Thema - Nächstes Thema

Burny4600

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?
LG Chris

Raspberry Pi 2-5, Bullseye Lite, Bookworm Lite
Schnittstellen: 1-Wire, FHEM2FEHEM, HM-MOD-UART, LAN, Modbus, MQTT, nanoCUL, RFXtrx433E, SIGNALduino, ser2net
Devices: APC, Eastron, FS20, IT, Homematic, MQTT, PV-(DEYE, EPEVER, FRONIUS), Resol-VBUS, S.USV, TEK603, WMR200, YouLess

Per

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.

Burny4600

Danke für die Info:

Werde ich gleich einmal testen.
LG Chris

Raspberry Pi 2-5, Bullseye Lite, Bookworm Lite
Schnittstellen: 1-Wire, FHEM2FEHEM, HM-MOD-UART, LAN, Modbus, MQTT, nanoCUL, RFXtrx433E, SIGNALduino, ser2net
Devices: APC, Eastron, FS20, IT, Homematic, MQTT, PV-(DEYE, EPEVER, FRONIUS), Resol-VBUS, S.USV, TEK603, WMR200, YouLess

automatisierer

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..

Per

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

automatisierer

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...

Burny4600

@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.
LG Chris

Raspberry Pi 2-5, Bullseye Lite, Bookworm Lite
Schnittstellen: 1-Wire, FHEM2FEHEM, HM-MOD-UART, LAN, Modbus, MQTT, nanoCUL, RFXtrx433E, SIGNALduino, ser2net
Devices: APC, Eastron, FS20, IT, Homematic, MQTT, PV-(DEYE, EPEVER, FRONIUS), Resol-VBUS, S.USV, TEK603, WMR200, YouLess