Problem mit DOIF und resetwait

Begonnen von Banis, 19 Februar 2018, 11:05:02

Vorheriges Thema - Nächstes Thema

Banis

Hallo zusammen,

da ich beim Thema Anwesenheitserkennung schon sehr viel ausprobiert habe und leider bei keiner Lösung voll überzeugt war, hab ich meine derzeitige Anwesenheitserkennung mit einem DOIF umgesetzt.

Meine Handy meldet per Automagic an FHEM dass ich daheim bin solbald ich mit WLAN verbunden bin und dann alle 5 Minuten. Dazu hab ich folgenden Dummy definiert:

define Max_anwesend dummy
attr Max_anwesend Event-on-change-reading state
attr Max_anwesend room Anwesenheit
attr Max_anwesend webCmd on:off


Ein DOIF setzt diesen Dummy alle 10 Minuten auf "off" sofern in der Zwischenzeit keine "on" Meldung vom Handy gekommen ist.


define di_Max_anwesend_off DOIF ([Max_anwesend] eq "on") (set Max_anwesend off) DOELSE
attr di_Max_anwesend_off do resetwait
attr di_Max_anwesend_off room Anwesenheit
attr di_Max_anwesend_off wait 600


Das hat auch prima funktioniert bis ich versucht habe die Events durch "Event-on-change-reading state" etwas zu begrenzen.

Seihther funktioniert das DOIF nicht mehr. Also auch wenn über mehr als 600 Sekunden keine Anwesenheit vom Handy gemeldet wird, stellt das DOIF den Dummy nicht auf "off".

Zur Not könnte ich schon mit den vielen Evets leben, wenn mir aber jemand ein Tipp hätte wie ich das DOIF trotz des Event-on-change-reading hinbekommen wäre ich sehr dankbar.


Intel Nuc i8 mit Proxmox. FHEM läuft als LXC

Banis

Ich wollte das Thema nochmal nach oben holen.

Hat keiner einen Lösungsvorschlag?
Intel Nuc i8 mit Proxmox. FHEM läuft als LXC

Ellert

#2
Verzichte auf den Dummy und setze DOIF durch Automagic wiederholt direkt auf cmd_1 unter Verwendung des Attributes cmdState auf on/off.

defmod anwtest DOIF (1) () ()
attr anwtest cmdState on,off
attr anwtest do resetwait
attr anwtest wait 0,600


Innerhalb von 600 s muss set anwtest cmd_1 wiederholt werden, dann bleibt state on, sonst off

Banis

super, vielen Dank das war die Lösung
Intel Nuc i8 mit Proxmox. FHEM läuft als LXC