Hallo,
habe die ref jetzt xmal gelesen und auch beispiele von anderen - scheitere aber an der verzügerung - anbei mein code:
([TESTSCHALTER1:state] eq "1002" and [WZ_Licht_3:state] eq "off")(set WZ_Licht_3 on)(set WZ_Licht_3 off) /
DOELSEIF ([TESTSCHALTER1:state] eq "1002" and [WZ_Licht_3:state] eq "on")(set WZ_Licht_3 off)
weiters ist folgendes definiert:
cmdpause 2:2
do always
wait 0,10:0
leider wird nach dem einschalten kein wait timer gesetzt - es hat irgendwie mit dem 2ten doelseif zu tun da wenn ich nur das mache:
([TESTSCHALTER1:state] eq "1002" and [WZ_Licht_3:state] eq "off")(set WZ_Licht_3 on)(set WZ_Licht_3 off)
und den cmdpause 2 bzw wait 0,10 habe ein timer erstellt wird ...
kann mir jemand ned tip geben?
DANKE
lg
AL
Reicht da nicht ein ......DOELSE (set WZ_Licht_3 off)
?
In welchem Zustand ist er nach dem anschalten? Poste lieber ein "list" vom DOIF während der 10 Sekunden, es ist einfacher zu sehen, was passiert
hallo,
anbei das list:
Internals:
CFGFN
DEF ([TESTSCHALTER1:state] eq "1002" and [WZ_Licht_3:state] eq "off") (set WZ_Licht_3 on)(set WZ_Licht_3 off) DOELSEIF ([TESTSCHALTER1:state] eq "1002" and [WZ_Licht_3:state] eq "on")(set WZ_Licht_3 off) DOELSEIF ([TESTSCHALTER1:state] eq "1001" and [WZ_Licht_3:state] eq "off")(set WZ_Licht_3 on) DOELSE ()
FUUID 5e07cb2c-f33f-aa97-1517-b432c8d1476e6e46
MODEL FHEM
NAME DOIF_Licht_Vorraum
NOTIFYDEV WZ_Licht_3,TESTSCHALTER1,global
NR 1035
NTFY_ORDER 50-DOIF_Licht_Vorraum
STATE cmd_1_1
TYPE DOIF
VERSION 20811 2019-12-22 17:45:08
Helper:
DBLOG:
cmd:
DBLogging:
TIME 1577576632.07047
VALUE 1.1
cmd_event:
DBLogging:
TIME 1577576632.07047
VALUE TESTSCHALTER1
cmd_nr:
DBLogging:
TIME 1577576632.07047
VALUE 1
cmd_seqnr:
DBLogging:
TIME 1577576632.07047
VALUE 1
last_cmd:
DBLogging:
TIME 1577570667.53432
VALUE cmd_1_1
mode:
DBLogging:
TIME 1577573802.60436
VALUE enabled
state:
DBLogging:
TIME 1577576632.07047
VALUE cmd_1_1
wait_timer:
DBLogging:
TIME 1577576632.18899
VALUE no timer
READINGS:
2019-12-29 00:43:52 Device WZ_Licht_3
2019-12-29 00:43:52 cmd 1.1
2019-12-29 00:43:52 cmd_event TESTSCHALTER1
2019-12-29 00:43:52 cmd_nr 1
2019-12-29 00:43:52 cmd_seqnr 1
2019-12-29 00:43:52 e_TESTSCHALTER1_state 1002
2019-12-29 00:43:52 e_WZ_Licht_3_state on
2019-12-28 23:56:42 mode enabled
2019-12-29 00:43:52 state cmd_1_1
2019-12-29 00:43:52 wait_timer no timer
Regex:
accu:
cond:
TESTSCHALTER1:
0:
state ^TESTSCHALTER1$:^state:
1:
state ^TESTSCHALTER1$:^state:
2:
state ^TESTSCHALTER1$:^state:
WZ_Licht_3:
0:
state ^WZ_Licht_3$:^state:
1:
state ^WZ_Licht_3$:^state:
2:
state ^WZ_Licht_3$:^state:
attr:
cmdState:
cmdpause:
2
2
2
wait:
0:
0
10
1:
0
2:
0
waitdel:
condition:
0 ::ReadingValDoIf($hash,'TESTSCHALTER1','state') eq "1002" and ::ReadingValDoIf($hash,'WZ_Licht_3','state') eq "off"
1 ::ReadingValDoIf($hash,'TESTSCHALTER1','state') eq "1002" and ::ReadingValDoIf($hash,'WZ_Licht_3','state') eq "on"
2 ::ReadingValDoIf($hash,'TESTSCHALTER1','state') eq "1001" and ::ReadingValDoIf($hash,'WZ_Licht_3','state') eq "off"
do:
0:
0 set WZ_Licht_3 on
1 set WZ_Licht_3 off
1:
0 set WZ_Licht_3 off
2:
0 set WZ_Licht_3 on
3:
0
helper:
DEVFILTER ^global$|^WZ_Licht_3$|^TESTSCHALTER1$
NOTIFYDEV global|WZ_Licht_3|TESTSCHALTER1
event on,reportedState: on
globalinit 1
last_timer 0
sleepdevice TESTSCHALTER1
sleepsubtimer 1
sleeptimer -1
timerdev WZ_Licht_3
timerevent on,reportedState: on
triggerDev WZ_Licht_3
timerevents:
on
reportedState: on
timereventsState:
state: on
reportedState: on
triggerEvents:
on
reportedState: on
triggerEventsState:
state: on
reportedState: on
internals:
readings:
all TESTSCHALTER1:state WZ_Licht_3:state
trigger:
uiState:
uiTable:
Attributes:
cmdpause 2:2:2
do always
room ZigBee
wait 0,10:0:0
Im code ist jetzt noch ein weiteres element ändert aber an meinem problem nicht wirklich was...
DANKE
lg
AL
So hab das problem gefunden - das ein und ausschlaten des lichts hat auch das doif getriggert (sollte eigentlich ja nicht so sein wenn durch doif geschalten wird oder?) - habe jetzt einfach ein ? vor der nur zu prüfenden lichtabfrage gegeben die damit nicht triggert:
([TESTSCHALTER1:state] eq "1002" and [?WZ_Licht_3:state] eq "off") (set WZ_Licht_3 on)(set WZ_Licht_3 off) /
DOELSEIF ([TESTSCHALTER1:state] eq "1002" and [?WZ_Licht_3:state] eq "on")(set WZ_Licht_3 off) /
DOELSEIF ([TESTSCHALTER1:state] eq "1001" and [?WZ_Licht_3:state] eq "off")(set WZ_Licht_3 on)
Danke lg
AL
Wird das ? jetzt nicht zum namen dazugerechnet ?
Gibt es irgend wo eine Dokumentation was das ? bewirkt?
Hi,
das ? vor dem namen sagt das hier nur der wert geprüft wird aber der wert nicht als trigger fungiert - siehe hier (ganz unten):
https://wiki.fhem.de/wiki/DOIF/Einsteigerleitfaden,_Grundfunktionen_und_Erl%C3%A4uterungen
Zitat
Alle Auslöser
[?<Auslöserangabe>] Auslöser, die mit Fragezeichen beginnen lösen nicht aus, sie werden nur abgefragt
lg
AL
Danke! Wieder was dazugelernt. :)
Zitat von: al15 am 29 Dezember 2019, 11:57:06
(sollte eigendlich ja nicht so sein wenn durch doif geschalten wird oder?)
Jein. DOIF unterdrück die Selbst-triggerung, um endlose Schleifen zu vermeiden. Aber da Du mit Pausen und Timer arbeitest, werden die Events doch bewertet