Hallo Freunde,
ich versuche mein Problem in einfachen Worten zu erklären.
Ausgangssituation:
Alarmanlage mit mehreren Fenster / Türkontakten wird per HTTPMOD ausgelesen. (event-on-change-reading=.*)
Das device hierzu nenne ich "Kontakte". In diesem stehen dann die READINGS (Fenster/Türen mit Zustand Open/Close)
Zusätzlich habe ein per "setreading Kontakte Status_Fenster" und "setreading Kontakte Status_Tuer" noch zwei Readings angelegt, die ich per DOIF nun befülle.
Das DOIF "Fenster" prüft ob ein Fensterkontakt "Door Open" ist. Ist das der Fall, dann wird das Reading unter Kontakte Status_Fenster auf "Open" gesetzt, bzw. Close.
DAS FUNKTIONIERT.
DOIF ---> Fenster
Internals:
CFGFN
DEF ([Kontakte:Badezimmer] eq "Door Open" or [Kontakte:Esszimmer] eq "Door Open" or [Kontakte:Flur] eq "Door Open" or [Kontakte:Kueche] eq "Door Open" or [Kontakte:Wohnzimmer_links] eq "Door Open" or [Kontakte:Wohnzimmer_rechts] eq "Door Open")
(setreading Kontakte Status_Fenster Open)
DOELSE
(setreading Kontakte Status_Fenster Close)
MODEL FHEM
NAME dKontakte_Fenster
NR 3872
NTFY_ORDER 50-dKontakte_Fenster
STATE cmd_2
TYPE DOIF
READINGS:
2018-03-31 19:21:12 Device Kontakte
2018-03-31 19:21:12 cmd 2
2018-03-31 19:21:12 cmd_event Kontakte
2018-03-31 19:21:12 cmd_nr 2
2018-03-31 19:21:12 e_Kontakte_Badezimmer Door Close
2018-03-31 19:21:12 e_Kontakte_Esszimmer Door Close
2018-03-31 19:21:12 e_Kontakte_Flur Door Close
2018-03-31 19:21:12 e_Kontakte_Kueche Door Close
2018-03-31 19:21:12 e_Kontakte_Wohnzimmer_links Door Close
2018-03-31 19:21:12 e_Kontakte_Wohnzimmer_rechts Door Close
2018-03-30 14:20:26 mode enabled
2018-03-31 19:21:12 state cmd_2
Regex:
condition:
0 ReadingValDoIf($hash,'Kontakte','Badezimmer') eq "Door Open" or ReadingValDoIf($hash,'Kontakte','Esszimmer') eq "Door Open" or ReadingValDoIf($hash,'Kontakte','Flur') eq "Door Open" or ReadingValDoIf($hash,'Kontakte','Kueche') eq "Door Open" or ReadingValDoIf($hash,'Kontakte','Wohnzimmer_links') eq "Door Open" or ReadingValDoIf($hash,'Kontakte','Wohnzimmer_rechts') eq "Door Open"
devices:
0 Kontakte
all Kontakte
do:
0:
0 setreading Kontakte Status_Fenster Open
1:
0 setreading Kontakte Status_Fenster Close
helper:
DOIF_Readings_events
DOIF_eventas
event Haustuer: Door Close
globalinit 1
last_timer 0
sleeptimer -1
timerdev Kontakte
timerevent Haustuer: Door Close
triggerDev Kontakte
timerevents:
Haustuer: Door Close
Status_Tuer: Close
timereventsState:
Haustuer: Door Close
Status_Tuer: Close
triggerEvents:
Haustuer: Door Close
Status_Tuer: Close
triggerEventsState:
Haustuer: Door Close
Status_Tuer: Close
internals:
itimer:
readings:
0 Kontakte:Badezimmer Kontakte:Esszimmer Kontakte:Flur Kontakte:Kueche Kontakte:Wohnzimmer_links Kontakte:Wohnzimmer_rechts
all Kontakte:Badezimmer Kontakte:Esszimmer Kontakte:Flur Kontakte:Kueche Kontakte:Wohnzimmer_links Kontakte:Wohnzimmer_rechts
trigger:
uiState:
uiTable:
Attributes:
do always
room Alarmanlage
Das DOIF "Türen" prüft ob ein Türkontakt "Door Open" ist. Ist das der Fall, dann wird das Reading unter Kontakte Status_Tuer auf "Open" gesetzt, bzw. Close.
DAS FUNKTIONIERT EBENFALLS.
DOIF---> Türen
Internals:
CFGFN
DEF ([Kontakte:Haustuer] eq "Door Open" or [Kontakte:Terassentuer] eq "Door Open" or [Kontakte:Kellertuer] eq "Door Open")
(setreading Kontakte Status_Tuer Open)
DOELSE
(setreading Kontakte Status_Tuer Close)
MODEL FHEM
NAME dKontakte_Tuer
NR 3463
NTFY_ORDER 50-dKontakte_Tuer
STATE cmd_2
TYPE DOIF
READINGS:
2018-03-31 19:21:12 Device Kontakte
2018-03-31 19:21:12 cmd 2
2018-03-31 19:21:12 cmd_event Kontakte
2018-03-31 19:21:12 cmd_nr 2
2018-03-31 19:21:12 e_Kontakte_Haustuer Door Close
2018-03-31 19:21:12 e_Kontakte_Kellertuer Door Close
2018-03-31 19:21:12 e_Kontakte_Terassentuer Door Close
2018-03-30 14:26:18 mode enabled
2018-03-31 19:21:12 state cmd_2
Regex:
condition:
0 ReadingValDoIf($hash,'Kontakte','Haustuer') eq "Door Open" or ReadingValDoIf($hash,'Kontakte','Terassentuer') eq "Door Open" or ReadingValDoIf($hash,'Kontakte','Kellertuer') eq "Door Open"
devices:
0 Kontakte
all Kontakte
do:
0:
0 setreading Kontakte Status_Tuer Open
1:
0 setreading Kontakte Status_Tuer Close
helper:
DOIF_Readings_events
DOIF_eventas
event Haustuer: Door Close
globalinit 1
last_timer 0
sleeptimer -1
timerdev Kontakte
timerevent Haustuer: Door Close
triggerDev Kontakte
timerevents:
Haustuer: Door Close
Status_Tuer: Close
timereventsState:
Haustuer: Door Close
Status_Tuer: Close
triggerEvents:
Haustuer: Door Close
Status_Tuer: Close
triggerEventsState:
Haustuer: Door Close
Status_Tuer: Close
internals:
itimer:
readings:
0 Kontakte:Haustuer Kontakte:Terassentuer Kontakte:Kellertuer
all Kontakte:Haustuer Kontakte:Terassentuer Kontakte:Kellertuer
trigger:
uiState:
uiTable:
Attributes:
do always
room Alarmanlage
J E T Z T wird es interessant!
Nun will ich mit einem DOIF die beiden STATIS überprüfen (Kontakte:Status_Tuer und Kontakte:Status_Fenster) ob einer der beiden Open ist und somit den STATE eines DUMMYS (Fenster.Tuer) auf Open oder Close setzen. JETZT kommt das Problem.
Wenn ich ein Fenster öffne wird der STATE auch auf Open gesetzt. Schließe ich das Fenster wird der STATE auf Close gesetzt. S U P E R! Aber dann:
Wenn ich eine Tuer öffne passiert nichts (also die anderen DOIFS laufen und das Reading Kontakte:Status_Tuer wird auch auf Open gesetzt), also der Dummy wird nicht geändert. SCHLIESSE ich nun die Tür, wir der Dummy plötzlich auf Open gesetzt. Also er arbeitet plötzlich falsch herum. Ich stehe auf dem Schlauch.
DOIF ---> KontakteState
Internals:
CFGFN
DEF ([Kontakte:Status_Tuer] eq "Open" or [Kontakte:Status_Fenster] eq "Open") (set Fenster.Tuer Open) DOELSEIF ([Kontakte:Status_Tuer] eq "Close" and [Kontakte:Status_Fenster] eq "Close") (set Fenster.Tuer Close)
MODEL FHEM
NAME dKontakte_STATE
NR 10337
NTFY_ORDER 50-dKontakte_STATE
STATE cmd_1
TYPE DOIF
READINGS:
2018-04-01 22:21:05 Device Kontakte
2018-04-01 22:20:40 cmd 1
2018-04-01 22:20:40 cmd_event Kontakte
2018-04-01 22:20:40 cmd_nr 1
2018-04-01 22:20:45 e_Kontakte_Status_Fenster Close
2018-04-01 21:51:31 e_Kontakte_Status_Tuer Open
2018-04-01 21:46:28 mode enabled
2018-04-01 22:20:40 state cmd_1
Regex:
condition:
0 ReadingValDoIf($hash,'Kontakte','Status_Tuer') eq "Open" or ReadingValDoIf($hash,'Kontakte','Status_Fenster') eq "Open"
devices:
0 Kontakte
all Kontakte
do:
0:
0 set Fenster.Tuer Open
1:
helper:
DOIF_Readings_events
DOIF_eventas
event Haustuer: Door Close
globalinit 1
last_timer 0
sleeptimer -1
timerdev Kontakte
timerevent Flur: Door Open,Status_Fenster: Open
triggerDev Kontakte
timerevents:
Flur: Door Open
Status_Fenster: Open
timereventsState:
Flur: Door Open
Status_Fenster: Open
triggerEvents:
Haustuer: Door Close
Status_Tuer: Close
triggerEventsState:
Haustuer: Door Close
Status_Tuer: Close
internals:
itimer:
readings:
0 Kontakte:Status_Tuer Kontakte:Status_Fenster
all Kontakte:Status_Tuer Kontakte:Status_Fenster
trigger:
uiState:
uiTable:
Attributes:
checkReadingEvent 1
do always
room Alarmanlage
DUMMY ---> Fenster.Tuer (im STATE anzeigen ob OPEN oder CLOSE)
Internals:
CFGFN
NAME Fenster.Tuer
NR 10325
STATE Open
TYPE dummy
READINGS:
2018-03-31 19:21:12 state Open
Attributes:
room Alarmanlage
Hat jemand eine Idee?
Warum habe ich das alles so gebaut?
Ich habe mir mit nem WEMOS eine LED-Anzeige gebaut, diese zeigt mir an ob ein Fenster oder eine Tür auf ist, sowie den Zustand der Alarmanlage.
Das einzige was ich jetzt wollte, ist eine Anzeige im die mir beide STATIS (Fenster und Tür) zusammenfasst. Komisch...
Schöne OSTERN!!!! Und danke für eure Hilfe!
Gruß Torben
hi,
ist es da nicht besser mit structure zu arbeiten,
ich habe mit dem mehrfachen or auch immer Probleme.
für Fenster habe ich das so gemacht
([RA01:window] eq "closedclosed" and [RA02:window] eq "closedclosed" and [RA03:window] eq "closedclosed" and
[RA04:window] eq "closedclosed" and [RA05:window] eq "closed")
(set $SELF Alarm 0,set Melder.01 blink 0 0,set Melder.01 off)
DOELSE (set $SELF Alarm 1,set Melder.01 blink 1000 1,trigger WEB JS:FW_okDialog("ACHTUNG<br><br>Fenster offen"))
gruss
Zitat von: eisman am 31 März 2018, 23:37:35
hi,
ist es da nicht besser mit structure zu arbeiten,
ich habe mit dem mehrfachen or auch immer Probleme.
für Fenster habe ich das so gemacht
([RA01:window] eq "closedclosed" and [RA02:window] eq "closedclosed" and [RA03:window] eq "closedclosed" and
[RA04:window] eq "closedclosed" and [RA05:window] eq "closed")
(set $SELF Alarm 0,set Melder.01 blink 0 0,set Melder.01 off)
DOELSE (set $SELF Alarm 1,set Melder.01 blink 1000 1,trigger WEB JS:FW_okDialog("ACHTUNG<br><br>Fenster offen"))
gruss
Ich habe aber nur ein Device, was alle Daten ausließt. Das HTTPMOD Kontakte.
So wie ich das lese brauche ich für ,,structure" mehrere devices. Und das ist ja gerade das Problem, dass die DOIFs komisch sind bei mir und ich deshalb ja nicht einmal Ben dummy befüllen kann.
Gruß Torben
Gesendet von iPhone mit Tapatalk
Hi,
deswegen habe ich bei meinen Fenster auf Status geschlossen geprüft.
da konnte ich mit and arbeiten. wenn also ein Fenster nicht geschlossen ist
wird der Status auf offen gesetzt, Klappt mit der anzeige offen (LED rot) sonst grün
structure habe ich mir grade angeschaut (eigenlich nutze ich die nicht) bin auf die schnelle
auch nicht ganz zufrieden, geht aber.
gruss
DEF ([Kontakte:Status_Tuer] eq "Open" or [Kontakte:Status_Fenster] eq "Open") (set Fenster.Tuer Open) DOELSEIF ([Kontakte:Status_Tuer] eq "Close" and [Kontakte:Status_Fenster] eq "Close") (set Fenster.Tuer Close)
So würde ich das machen.
Für jeden Zweig definierte Zustände.
Zitat von: Frank_Huber am 01 April 2018, 00:16:02
DEF ([Kontakte:Status_Tuer] eq "Open" or [Kontakte:Status_Fenster] eq "Open") (set Fenster.Tuer Open) DOELSEIF ([Kontakte:Status_Tuer] eq "Close" and [Kontakte:Status_Fenster] eq "Close") (set Fenster.Tuer Close)
Funktioniert nicht.
Echt komisch. Das DOELSEIF kommt nicht zur Geltung. Obwohl beide Zustände definitiv Close sind, reagiert das DOELSEIF nicht.
Zitat von: Torben80 am 01 April 2018, 21:12:49
Funktioniert nicht.
Echt komisch. Das DOELSEIF kommt nicht zur Geltung. Obwohl beide Zustände definitiv Close sind, reagiert das DOELSEIF nicht.
Do always gesetzt?
Poste mal ein ein list
Mit dem Handy online, daher kurz gefasst...
Zitat von: Frank_Huber am 01 April 2018, 21:27:28
Do always gesetzt?
Poste mal ein ein list
Mit dem Handy online, daher kurz gefasst...
Sind alle im ersten Beitrag "gelistet".
Danke :-)
Zitat von: Torben80 am 01 April 2018, 21:29:53
Sind alle im ersten Beitrag "gelistet".
Danke :-)
Das I'm ersten Post ist "nutzlos".
Das list beinhaltet auch die aktuellen stati der Readings.
Daher wäre es im aktuellen Zustand interessant. ;-)
Mit dem Handy online, daher kurz gefasst...
Internals:
CFGFN
DEF ([Kontakte:Status_Tuer] eq "Open" or [Kontakte:Status_Fenster] eq "Open") (set Fenster.Tuer Open) DOELSEIF ([Kontakte:Status_Tuer] eq "Close" and [Kontakte:Status_Fenster] eq "Close") (set Fenster.Tuer Close)
MODEL FHEM
NAME dKontakte_STATE
NR 10337
NTFY_ORDER 50-dKontakte_STATE
STATE cmd_1
TYPE DOIF
READINGS:
2018-04-01 21:36:40 Device Kontakte
2018-04-01 21:36:40 cmd 1
2018-04-01 21:36:40 cmd_event Kontakte
2018-04-01 21:36:40 cmd_nr 1
2018-04-01 21:36:40 e_Kontakte_Status_Fenster Close
2018-04-01 21:36:40 e_Kontakte_Status_Tuer Open
2018-04-01 08:29:20 mode enabled
2018-04-01 21:36:40 state cmd_1
Regex:
condition:
0 ReadingValDoIf($hash,'Kontakte','Status_Tuer') eq "Open" or ReadingValDoIf($hash,'Kontakte','Status_Fenster') eq "Open"
1 ReadingValDoIf($hash,'Kontakte','Status_Tuer') eq "Close" and ReadingValDoIf($hash,'Kontakte','Status_Fenster') eq "Close"
devices:
0 Kontakte
1 Kontakte
all Kontakte
do:
0:
0 set Fenster.Tuer Open
1:
0 set Fenster.Tuer Close
2:
helper:
DOIF_Readings_events
DOIF_eventas
event Terassentuer: Door Close
globalinit 1
last_timer 0
sleeptimer -1
timerdev Kontakte
timerevent Terassentuer: Door Close
triggerDev Kontakte
timerevents:
Terassentuer: Door Close
Status_Tuer: Close
timereventsState:
Terassentuer: Door Close
Status_Tuer: Close
triggerEvents:
Terassentuer: Door Close
Status_Tuer: Close
triggerEventsState:
Terassentuer: Door Close
Status_Tuer: Close
internals:
itimer:
readings:
0 Kontakte:Status_Tuer Kontakte:Status_Fenster
1 Kontakte:Status_Tuer Kontakte:Status_Fenster
all Kontakte:Status_Tuer Kontakte:Status_Fenster
trigger:
uiState:
uiTable:
Attributes:
do always
room Alarmanlage
Bitteschön ;-)
Der Dummy ist derzeit auf Open obwohl alles zu ist. Wenn ich ein Fenster öffne und wieder schließe, ist alles so wie es soll. Dummy Open und dann wieder Close.
Öffne ich die Tür, dann passiert erst nichts (also alle readings werden richtig gesetzt, aber beim Schließen arbeitet plötzlich das STATE-DoIf falsch herum, macht also auf.
Kann es hiermit etwas zu tun haben?
https://forum.fhem.de/index.php/topic,80749.msg728102.html#msg728102 (https://forum.fhem.de/index.php/topic,80749.msg728102.html#msg728102)
Also der doif arbeitet dem list nach richtig.
Vorschlag :
Liste mal alle doif im "fehlerzustand"
Denke der Fehler ist woanders.
Mit dem Handy online, daher kurz gefasst...
Frage mich, ob eines der Events verschluckt wird: Im list des DOIF stehen als Ausgangswerte für die Auswertung
2018-04-01 21:36:40 e_Kontakte_Status_Fenster Close
2018-04-01 21:36:40 e_Kontakte_Status_Tuer Open
also reagiert das DOIF richtig.
Wahrscheinlich wird es aber bei der Änderung
irgendeines Readings vom Dummy Kontakte und verpasst die letzte Änderung? Klingt blöd, aber ... versuche doch mal
ZitatReadingauswertung nur beim Event des jeweiligen Readings...
Standardmäßig werden angegebene Readings ausgewertet, wenn irgendein Event des angegebenen Devices triggert. Möchte man gezielt nur dann ein angegebenes Reading auswerten, wenn sich nur dieses ändert, so lässt sich das mit dem Attribut checkReadingEvent einschränken. Das ist insb. dann interessant, wenn ein Modul verschiedene Readings zu unterschiedlichen Zeitpunkten aktualisiert.
...
also
attr dKontakte_STATE checkReadingEvent 1
Du scheinst da noch eine Abhängigkeit zu haben(notify oder anderes DOIF), denn um 21:36:40 gab es sowohl das Event Fenster "Close", als auch Tuer "Open".
2018-04-01 21:36:40 e_Kontakte_Status_Fenster Close
2018-04-01 21:36:40 e_Kontakte_Status_Tuer Open
damit sind nicht beide "Close" -> cmd_1
@Damian
Ja, ich habe zwei NOFIFYs, die mein LED-Display befeuern.
LED für FENSTER:
Internals:
CFGFN
DEF Kontakte:Status_Fenster:.* {if (ReadingsVal("Kontakte","Status_Fenster",0) eq "Open") {fhem ("set LED_Rahmen pixel 6 25 0 0");} else {if (ReadingsVal("Kontakte","Status_Fenster",0) eq "Close") {fhem ("set LED_Rahmen pixel 6 0 25 0");}}}
NAME led_alarm_konFens
NOTIFYDEV Kontakte
NR 3698
NTFY_ORDER 50-led_alarm_konFens
REGEXP Kontakte:Status_Fenster:.*
STATE 2018-04-01 21:51:11
TYPE notify
READINGS:
2018-03-29 23:32:57 state active
Attributes:
room Alarmanlage
Uuuuund LED für Tür:
Internals:
CFGFN
DEF Kontakte:Status_Tuer:.* {if (ReadingsVal("Kontakte","Status_Tuer",0) eq "Open") {fhem ("set LED_Rahmen pixel 5 25 0 0");} else {if (ReadingsVal("Kontakte","Status_Tuer",0) eq "Close") {fhem ("set LED_Rahmen pixel 5 0 25 0");}}}
NAME led_alarm_konTuer
NOTIFYDEV Kontakte
NR 3702
NTFY_ORDER 50-led_alarm_konTuer
REGEXP Kontakte:Status_Tuer:.*
STATE 2018-04-01 21:51:31
TYPE notify
READINGS:
2018-03-29 23:34:31 state active
Attributes:
room Alarmanlage
Meinst, da mein NOTIFY schon drauf zugreift, kann das DOIF das nicht auch noch verarbeiten?
Zustände abfragen ist kein Problem, Zustände Ändern ist hier das Problem.
Schließe das Fenster und schaue im Eventmonitor, ob gleichzeitig etwas zu Tuer kommt und dann schließt du die Tuer und schaust, ob etwas zu Fenster kommt, wenn ja dann musst du im System schauen, wer da wohl den Zustand des anderen ändert. Denn eigentlich sollen es ja zwei unabhängige Devices sein.
Also...
Es sind ja Kontakte der Alarmanlage. Die Anlage wird per "defice Kontakte" HTTPMOD (JSON) alle 5 Sekunden abgefragt.
Hierbei wird dann ja erkannt, dass ein Fenster "Door Open" ist oder eine Tür "Door Open" ist.
Wenn ein Reading sich ändert, greift eines der DOIFS (Tuer oder Fenster) und setzt das Reading auf "Kontakte:Status_Fenster" aud Open oder Close.
Gleichzeitig greift mein Notify, und setzt die LED-Anzeige auf Grün oder Rot.
Ich werde mal eben ein Fenster AUFmachen und wieder ZUmachen und danach ein Tür AUFmachen und wieder ZUmachen und den Inhalt des EventMonitors mal eben posten, ich steige nicht mehr durch, da es für mich kein ersichtliches Problem gibt :-(
Event-on-change-reading in den httpmod gesetzt?
Das würde zumindest den traffic reduzieren
Mit dem Handy online, daher kurz gefasst...
############F E N S T E R AUF##################
2018-04-01 22:20:40 HTTPMOD Kontakte Flur: Door Open
2018-04-01 22:20:40 HTTPMOD Kontakte Status_Fenster: Open
2018-04-01 22:20:45 DOIF dKontakte_Fenster cmd_nr: 2
2018-04-01 22:20:45 DOIF dKontakte_Fenster cmd: 2
2018-04-01 22:20:45 DOIF dKontakte_Fenster cmd_event: Kontakte
2018-04-01 22:20:45 DOIF dKontakte_Fenster cmd_2
2018-04-01 22:20:45 DOIF dKontakte_Tuer cmd_nr: 2
2018-04-01 22:20:45 DOIF dKontakte_Tuer cmd: 2
2018-04-01 22:20:45 DOIF dKontakte_Tuer cmd_event: Kontakte
2018-04-01 22:20:45 DOIF dKontakte_Tuer cmd_2
2018-04-01 22:20:46 LEDStripe LED_Rahmen led_count: 8
2018-04-01 22:20:46 LEDStripe LED_Rahmen leds_on: 3
2018-04-01 22:20:46 HTTPMOD Kontakte Flur: Door Close
2018-04-01 22:20:46 HTTPMOD Kontakte Status_Fenster: Close
############F E N S T E R ZU ENDE##################
############TÜR AUF##################
2018-04-01 22:20:50 DOIF dKontakte_Fenster cmd_nr: 2
2018-04-01 22:20:50 DOIF dKontakte_Fenster cmd: 2
2018-04-01 22:20:50 DOIF dKontakte_Fenster cmd_event: Kontakte
2018-04-01 22:20:50 DOIF dKontakte_Fenster cmd_2
2018-04-01 22:20:50 DOIF dKontakte_Tuer cmd_nr: 1
2018-04-01 22:20:50 DOIF dKontakte_Tuer cmd: 1
2018-04-01 22:20:50 DOIF dKontakte_Tuer cmd_event: Kontakte
2018-04-01 22:20:50 DOIF dKontakte_Tuer cmd_1
2018-04-01 22:20:51 LEDStripe LED_Rahmen led_count: 8
2018-04-01 22:20:51 LEDStripe LED_Rahmen leds_on: 3
2018-04-01 22:20:51 HTTPMOD Kontakte Haustuer: Door Open
2018-04-01 22:20:51 HTTPMOD Kontakte Status_Tuer: Open
2018-04-01 22:21:05 DOIF dKontakte_Fenster cmd_nr: 2
2018-04-01 22:21:05 DOIF dKontakte_Fenster cmd: 2
2018-04-01 22:21:05 DOIF dKontakte_Fenster cmd_event: Kontakte
2018-04-01 22:21:05 DOIF dKontakte_Fenster cmd_2
2018-04-01 22:21:05 DOIF dKontakte_Tuer cmd_nr: 2
2018-04-01 22:21:05 DOIF dKontakte_Tuer cmd: 2
2018-04-01 22:21:05 DOIF dKontakte_Tuer cmd_event: Kontakte
2018-04-01 22:21:05 DOIF dKontakte_Tuer cmd_2
2018-04-01 22:21:05 LEDStripe LED_Rahmen led_count: 8
2018-04-01 22:21:05 LEDStripe LED_Rahmen leds_on: 3
2018-04-01 22:21:05 HTTPMOD Kontakte Haustuer: Door Close
2018-04-01 22:21:05 HTTPMOD Kontakte Status_Tuer: Close
############TÜR ZU ENDE##################
Zitat von: Frank_Huber am 01 April 2018, 22:23:07
Event-on-change-reading in den httpmod gesetzt?
Jap, ist es...
Warum lösen beide DOIFs aus?
dKontakte_Tuer
und
dKontakte_Fenster
Wenn ich ein Fenster ODER eine Tür öffne und schließe?
Lists sind im ersten Beitrag...
Die lists bringen nichts. (aktueller Zustand)
Schau in die doif, da siehst doch was getriggert hat
Mit dem Handy online, daher kurz gefasst...
Zustand JETZT (ALLES IST ZU)
Das letzte was auf und zu gemacht wurde, ist die Haustür.
Under der Satus vom DUMMY (Fenster.Tuer) ist nach dem Schließen der Haustür auf Open gesprungen?!
Hier nun ALLES:
DOIF ---> dKontakte_Fenster
Internals:
CFGFN
DEF ([Kontakte:Badezimmer] eq "Door Open" or [Kontakte:Esszimmer] eq "Door Open" or [Kontakte:Flur] eq "Door Open" or [Kontakte:Kueche] eq "Door Open" or [Kontakte:Wohnzimmer_links] eq "Door Open" or [Kontakte:Wohnzimmer_rechts] eq "Door Open")
(setreading Kontakte Status_Fenster Open)
DOELSE
(setreading Kontakte Status_Fenster Close)
MODEL FHEM
NAME dKontakte_Fenster
NR 3872
NTFY_ORDER 50-dKontakte_Fenster
STATE cmd_2
TYPE DOIF
READINGS:
2018-04-01 22:21:05 Device Kontakte
2018-04-01 22:21:05 cmd 2
2018-04-01 22:21:05 cmd_event Kontakte
2018-04-01 22:21:05 cmd_nr 2
2018-04-01 22:21:05 e_Kontakte_Badezimmer Door Close
2018-04-01 22:21:05 e_Kontakte_Esszimmer Door Close
2018-04-01 22:21:05 e_Kontakte_Flur Door Close
2018-04-01 22:21:05 e_Kontakte_Kueche Door Close
2018-04-01 22:21:05 e_Kontakte_Wohnzimmer_links Door Close
2018-04-01 22:21:05 e_Kontakte_Wohnzimmer_rechts Door Close
2018-03-30 14:20:26 mode enabled
2018-04-01 22:21:05 state cmd_2
Regex:
condition:
0 ReadingValDoIf($hash,'Kontakte','Badezimmer') eq "Door Open" or ReadingValDoIf($hash,'Kontakte','Esszimmer') eq "Door Open" or ReadingValDoIf($hash,'Kontakte','Flur') eq "Door Open" or ReadingValDoIf($hash,'Kontakte','Kueche') eq "Door Open" or ReadingValDoIf($hash,'Kontakte','Wohnzimmer_links') eq "Door Open" or ReadingValDoIf($hash,'Kontakte','Wohnzimmer_rechts') eq "Door Open"
devices:
0 Kontakte
all Kontakte
do:
0:
0 setreading Kontakte Status_Fenster Open
1:
0 setreading Kontakte Status_Fenster Close
helper:
DOIF_Readings_events
DOIF_eventas
event Haustuer: Door Close
globalinit 1
last_timer 0
sleeptimer -1
timerdev Kontakte
timerevent Haustuer: Door Close
triggerDev Kontakte
timerevents:
Haustuer: Door Close
Status_Tuer: Close
timereventsState:
Haustuer: Door Close
Status_Tuer: Close
triggerEvents:
Haustuer: Door Close
Status_Tuer: Close
triggerEventsState:
Haustuer: Door Close
Status_Tuer: Close
internals:
itimer:
readings:
0 Kontakte:Badezimmer Kontakte:Esszimmer Kontakte:Flur Kontakte:Kueche Kontakte:Wohnzimmer_links Kontakte:Wohnzimmer_rechts
all Kontakte:Badezimmer Kontakte:Esszimmer Kontakte:Flur Kontakte:Kueche Kontakte:Wohnzimmer_links Kontakte:Wohnzimmer_rechts
trigger:
uiState:
uiTable:
Attributes:
do always
room Alarmanlage
DOIF ---> dKontakte_Tuer
Internals:
CFGFN
DEF ([Kontakte:Haustuer] eq "Door Open" or [Kontakte:Terassentuer] eq "Door Open" or [Kontakte:Kellertuer] eq "Door Open")
(setreading Kontakte Status_Tuer Open)
DOELSE
(setreading Kontakte Status_Tuer Close)
MODEL FHEM
NAME dKontakte_Tuer
NR 3463
NTFY_ORDER 50-dKontakte_Tuer
STATE cmd_2
TYPE DOIF
READINGS:
2018-04-01 22:21:05 Device Kontakte
2018-04-01 22:21:05 cmd 2
2018-04-01 22:21:05 cmd_event Kontakte
2018-04-01 22:21:05 cmd_nr 2
2018-04-01 22:21:05 e_Kontakte_Haustuer Door Close
2018-04-01 22:21:05 e_Kontakte_Kellertuer Door Close
2018-04-01 22:21:05 e_Kontakte_Terassentuer Door Close
2018-03-30 14:26:18 mode enabled
2018-04-01 22:21:05 state cmd_2
Regex:
condition:
0 ReadingValDoIf($hash,'Kontakte','Haustuer') eq "Door Open" or ReadingValDoIf($hash,'Kontakte','Terassentuer') eq "Door Open" or ReadingValDoIf($hash,'Kontakte','Kellertuer') eq "Door Open"
devices:
0 Kontakte
all Kontakte
do:
0:
0 setreading Kontakte Status_Tuer Open
1:
0 setreading Kontakte Status_Tuer Close
helper:
DOIF_Readings_events
DOIF_eventas
event Haustuer: Door Close
globalinit 1
last_timer 0
sleeptimer -1
timerdev Kontakte
timerevent Haustuer: Door Close
triggerDev Kontakte
timerevents:
Haustuer: Door Close
Status_Tuer: Close
timereventsState:
Haustuer: Door Close
Status_Tuer: Close
triggerEvents:
Haustuer: Door Close
Status_Tuer: Close
triggerEventsState:
Haustuer: Door Close
Status_Tuer: Close
internals:
itimer:
readings:
0 Kontakte:Haustuer Kontakte:Terassentuer Kontakte:Kellertuer
all Kontakte:Haustuer Kontakte:Terassentuer Kontakte:Kellertuer
trigger:
uiState:
uiTable:
Attributes:
do always
room Alarmanlage
DOIF ---> dKontakte_STATE
Internals:
CFGFN
DEF ([Kontakte:Status_Tuer] eq "Open" or [Kontakte:Status_Fenster] eq "Open") (set Fenster.Tuer Open) DOELSEIF ([Kontakte:Status_Tuer] eq "Close" and [Kontakte:Status_Fenster] eq "Close") (set Fenster.Tuer Close)
MODEL FHEM
NAME dKontakte_STATE
NR 10337
NTFY_ORDER 50-dKontakte_STATE
STATE cmd_1
TYPE DOIF
READINGS:
2018-04-01 22:21:05 Device Kontakte
2018-04-01 22:20:40 cmd 1
2018-04-01 22:20:40 cmd_event Kontakte
2018-04-01 22:20:40 cmd_nr 1
2018-04-01 22:20:45 e_Kontakte_Status_Fenster Close
2018-04-01 21:51:31 e_Kontakte_Status_Tuer Open
2018-04-01 21:46:28 mode enabled
2018-04-01 22:20:40 state cmd_1
Regex:
condition:
0 ReadingValDoIf($hash,'Kontakte','Status_Tuer') eq "Open" or ReadingValDoIf($hash,'Kontakte','Status_Fenster') eq "Open"
devices:
0 Kontakte
all Kontakte
do:
0:
0 set Fenster.Tuer Open
1:
helper:
DOIF_Readings_events
DOIF_eventas
event Haustuer: Door Close
globalinit 1
last_timer 0
sleeptimer -1
timerdev Kontakte
timerevent Flur: Door Open,Status_Fenster: Open
triggerDev Kontakte
timerevents:
Flur: Door Open
Status_Fenster: Open
timereventsState:
Flur: Door Open
Status_Fenster: Open
triggerEvents:
Haustuer: Door Close
Status_Tuer: Close
triggerEventsState:
Haustuer: Door Close
Status_Tuer: Close
internals:
itimer:
readings:
0 Kontakte:Status_Tuer Kontakte:Status_Fenster
all Kontakte:Status_Tuer Kontakte:Status_Fenster
trigger:
uiState:
uiTable:
Attributes:
checkReadingEvent 1
do always
room Alarmanlage
Dummy ---> Fenster.Tuer:
Internals:
CFGFN
NAME Fenster.Tuer
NR 10325
STATE Open
TYPE dummy
READINGS:
2018-04-01 22:20:40 state Open
Attributes:
room Alarmanlage
notify Fenster:
Internals:
CFGFN
DEF Kontakte:Status_Fenster:.* {if (ReadingsVal("Kontakte","Status_Fenster",0) eq "Open") {fhem ("set LED_Rahmen pixel 6 25 0 0");} else {if (ReadingsVal("Kontakte","Status_Fenster",0) eq "Close") {fhem ("set LED_Rahmen pixel 6 0 25 0");}}}
NAME led_alarm_konFens
NOTIFYDEV Kontakte
NR 3698
NTFY_ORDER 50-led_alarm_konFens
REGEXP Kontakte:Status_Fenster:.*
STATE 2018-04-01 22:20:45
TYPE notify
READINGS:
2018-03-29 23:32:57 state active
Attributes:
room Alarmanlage
notify Tuer:
Internals:
CFGFN
DEF Kontakte:Status_Tuer:.* {if (ReadingsVal("Kontakte","Status_Tuer",0) eq "Open") {fhem ("set LED_Rahmen pixel 5 25 0 0");} else {if (ReadingsVal("Kontakte","Status_Tuer",0) eq "Close") {fhem ("set LED_Rahmen pixel 5 0 25 0");}}}
NAME led_alarm_konTuer
NOTIFYDEV Kontakte
NR 3702
NTFY_ORDER 50-led_alarm_konTuer
REGEXP Kontakte:Status_Tuer:.*
STATE 2018-04-01 22:21:05
TYPE notify
READINGS:
2018-03-29 23:34:31 state active
Attributes:
room Alarmanlage
Kontakte (HTTPMOD):
Internals:
BUSY 0
CHANGED
DEF http://user:pass@192.168.xx.xx/action/deviceListGet 5
Interval 5
JSONEnabled 1
LASTSEND 1522615779.73716
MainURL http://user:pass@192.168.xx.xx/action/deviceListGet
ModuleVersion 3.4.2 - 10.2.2018
NAME Kontakte
NR 26
STATE Close Close
TRIGGERTIME 1522615784.73552
TRIGGERTIME_FMT 2018-04-01 22:49:44
TYPE HTTPMOD
addr http://192.168.xx.xx:80
auth 1
code 200
compress 1
conn
data
displayurl http://user:pass@192.168.xx.xx/action/deviceListGet
header
host 192.168.xx.xx
httpheader HTTP/1.0 200 OK
Server: Mongoose
Pragma: no-cache
Cache-control: no-cache
Expires: 0
Content-Type: application/json; charset=utf-8
httpversion 1.0
hu_blocking 0
hu_filecount 68679
hu_port 80
hu_portSfx
ignoreredirects 0
loglevel 4
path /action/deviceListGet
protocol http
pwd pass
redirects 0
timeout 2
url http://user:pass@192.168.xx.xx/action/deviceListGet
user user
value 0
OLDREADINGS:
QUEUE:
READINGS:
2018-04-01 22:49:39 Badezimmer Door Close
2018-04-01 22:49:39 Esszimmer Door Close
2018-04-01 22:49:39 Flur Door Close
2018-04-01 22:49:39 Haustuer Door Close
2018-04-01 22:49:39 Kellertuer Door Close
2018-04-01 22:49:39 Kueche Door Close
2018-03-30 14:56:48 Status Open
2018-04-01 22:21:05 Status_Fenster Close
2018-04-01 22:21:05 Status_Tuer Close
2018-04-01 22:49:39 Terassentuer Door Close
2018-04-01 22:49:39 Wohnzimmer_links Door Close
2018-04-01 22:49:39 Wohnzimmer_rechts Door Close
REQUEST:
data
header
ignoreredirects 0
retryCount 0
type update
url http://user:pass@192.168.xx.xx/action/deviceListGet
value 0
defptr:
readingBase:
Badezimmer reading
Esszimmer reading
Flur reading
Haustuer reading
Kellertuer reading
Kueche reading
Terassentuer reading
Wohnzimmer_links reading
Wohnzimmer_rechts reading
readingNum:
Badezimmer 07
Esszimmer 02
Flur 08
Haustuer 01
Kellertuer 09
Kueche 06
Terassentuer 05
Wohnzimmer_links 03
Wohnzimmer_rechts 04
readingOutdated:
requestReadings:
update:
Badezimmer reading 07
Esszimmer reading 02
Flur reading 08
Haustuer reading 01
Kellertuer reading 09
Kueche reading 06
Terassentuer reading 05
Wohnzimmer_links reading 03
Wohnzimmer_rechts reading 04
sslargs:
Attributes:
devStateIcon Open:fts_window_1w_open Close:fts_window_1w
event-on-change-reading .*
reading01JSON senrows_10_status
reading01Name Haustuer
reading02JSON senrows_04_status
reading02Name Esszimmer
reading03JSON senrows_05_status
reading03Name Wohnzimmer_links
reading04JSON senrows_07_status
reading04Name Wohnzimmer_rechts
reading05JSON senrows_09_status
reading05Name Terassentuer
reading06JSON senrows_02_status
reading06Name Kueche
reading07JSON senrows_06_status
reading07Name Badezimmer
reading08JSON senrows_08_status
reading08Name Flur
reading09JSON senrows_03_status
reading09Name Kellertuer
room Alarmanlage
stateFormat Status_Tuer Status_Fenster
userReadings Status,Status_Fenster,Status_Tuer
userattr reading01JSON reading01Name reading02JSON reading02Name reading03JSON reading03Name reading04JSON reading04Name reading05JSON reading05Name reading06JSON reading06Name reading07JSON reading07Name reading08JSON reading08Name reading09JSON reading09Name
hi,
wenn ich das richtig verstanden habe soll eine LED bei Fenster offen auf Rot gehen und sonst auf grün, dito Türen.
die Lösung hatte ich weiter open schon geschrieben diese funktioniert bei 2 Installationen seit zwei Jahren ohne Probleme.
man muss sie nur etwas umbauen (device und readings).
entweder notify oder DOIF, beide braucht man dafür nicht.
bei der DOIF kann man auch die LED setzen.
Stellt sich mir die Frage will man hier eine Lösung oder nicht?????
gruss
Die notifys schalten die LEDs. Das läuft ja auch.
Ich will aber zusätzlich, im den State eines Devices auf Open / Close setzen wenn Tür oder Fenster auf ist.
Also muss ich ja per doif schon mal den Staus von Fenster und Türen überwachen um ihn dann auszuwerten.
Mfg torben
Gesendet von iPhone mit Tapatalk
Hi auch das funktioniert in der doif mit set Dummy state ohne Probleme...... gruss
Ja, das weiß ich.
Aber genau das ist ja das Problem was ich hier debattiere. Das Doif dreht den Status um. Siehe bitte erstes Post.
Ich habe schon alles auseinander gerissen, um den Fehler zu finden.
Gesendet von iPhone mit Tapatalk
Hi,
Nimm einfach alles aus der doif raus und fange mit einem Fenster an. Ich würde auch das or weglassen und mit eq oder ne arbeiten. Wenn ich das damals richtig verstanden habe,werte das or nur 2 Dinge , also muss man die klammern richtig setzen. Was bei and nicht dramatisch ist.
Entweder alle Fenster sind zu, dann grün oder sonst rot!
Da macht man keine Fehler
Und im Ausführung set led und set Dummy.
Gruß
Hier ist der fehler:
READINGS:
2018-04-01 22:21:05 Device Kontakte
2018-04-01 22:20:40 cmd 1
2018-04-01 22:20:40 cmd_event Kontakte
2018-04-01 22:20:40 cmd_nr 1
2018-04-01 22:20:45 e_Kontakte_Status_Fenster Close
2018-04-01 21:51:31 e_Kontakte_Status_Tuer Open
2018-04-01 21:46:28 mode enabled
2018-04-01 22:20:40 state cmd_1
Mit dem Handy online, daher kurz gefasst...
Ich kann in der Auswertung nicht ,,Set dummy" machen.
Warum?
Ein Doif nur für Fenster und
Ein Doif nur für Tür.
Dann muss jedes Doif in Auswertung LED schalten UND ein Reading irgendeines Devices auf Fenster ,,Open" / Tür ,,Open".
JETZT das dritte Doif, das den Zustand der beiden gerade genannten Readings prüft und per Auswertung den State des dummys setzt. Und da ist wieder das Problem aus Topic 1. er verwechselt den Zustand.
Gesendet von iPhone mit Tapatalk
@Frank Huber,
das habe ich schon gesehen, aber ich kann es ja nicht ändern, es liegt ja nicht an mir.
Die Readings stehen beide auf Close, definitiv!
Aber da zeigt er er Open an, als ob er den Stuswechsel (Event) nicht checkt.
Gesendet von iPhone mit Tapatalk
Zitat von: Torben80 am 01 April 2018, 23:33:52
@Frank Huber,
das habe ich schon gesehen, aber ich kann es ja nicht ändern, es liegt ja nicht an mir.
Die Readings stehen beide auf Close, definitiv!
Aber da zeigt er er Open an, als ob er den Stuswechsel (Event) nicht checkt.
Gesendet von iPhone mit Tapatalk
An dir nicht, aber an deiner Konfiguration Konfiguration. [emoji6]
Du musst also prüfen warum da kein Event erzeugt wird.
Mit dem Handy online, daher kurz gefasst...
Der Cmd2 Befehl von dKontakte_Tuer scheint nicht ausgeführt zu werden.
Kopier das mal in die Eingabezeile ob es da geht
Mit dem Handy online, daher kurz gefasst...
Morgen mehr...
wenn ich Zeit finde. Morgen ist Kindergeburtstag. Wohl dann eher übermorgen. Aber ich bleibe dran.
Danke erstmal bis hier und gute Nacht [emoji42]
Gesendet von iPhone mit Tapatalk
Hi,
Die letzte doif verstehe ich nicht
Fenster=open oder Tür = open mache das
DOELSEIF
Fenster=closed and Tür = closed mache das
?????
Richtig vielleicht:
Fenster = closed and Tür =closed mache das
DOELSE
Mache das
Und
Fenster 1 = closed and Fenster 2 = closed ......
Set led grün
DOELSE set rot
(attr cmdstate closed|open)
Gleiche für tür