Anwesenheitserkennung mit Handy LanPing

Begonnen von kleinz, 17 Juli 2015, 10:40:39

Vorheriges Thema - Nächstes Thema

kleinz

Hi ich habe mal nach einer Anwesenheitsabfrage gesucht und was gefunden.
Hab die Namen angepasst und für 3 Personen gemacht
Frau ,Tochter , Ich
Jeder einzelne funktioniert auch.
Aber wenn schon einer Present ist schaltet er wenn der nächste kommt trotzdem wieder an
Bzw. aus wen einer geht ob wohl die beiden anderen da sind.
Wie kann ich also eine Abfrage machen
Wenn 1 da und 2 oder 3 kommt nichts machen
Wenn 2 Da und 1 oder 3 kommt nichts machen
usw .
Für ein Schalten und ausschalten
Ich müsste eine Art zwischen Merker schreiben
If (1 or 2 or 3) on nichts finde da aber keine Lösung

[code#######################Anwesenheitscheck###################################
###Kalle
define Kalle PRESENCE lan-ping 192.168.x.x 30 60
attr Kalle event-on-change-reading state
attr Kalle fp_Groundfloor 229,201,1,,
attr Kalle ping_count 3
attr Kalle room Wohnung
define FileLog_Kallehandy.dummy FileLog ./log/Kallehandy.dummy-%Y-%m.log Kallehandy.dummy
attr FileLog_Kallehandy.dummy logtype text
define Kallehandy.notify notify Kalle:present { fhem ("set Wohnung_kommen on;; setstate watchdogKallehandyAbwesend defined") if (Value("Kallehandy.dummy") ne "on") }
attr Kallehandy.notify room Wohnung
#Kalle auf off setzen nach 2 min abwesenheit
define watchdogKallehandyAbwesend watchdog Kalle:absent 00:02 Kalle:present set Wohnung_kommen off;;{fhem ('setstate watchdogKallehandyAbwesend defined')}
attr watchdogKallehandyAbwesend regexp1WontReactivate 1

#define Kalle_kommt notify Kallehandy.dummy:on set Pushover1 msg 'message' 'Kalle kommt nach Hause' ''0''
#define fenster__auf notify fensterkontakt.*:open.* {fhem ("get ipcam image") if (Value("Kallehandy.dummy") eq "off" && #Value("monihandy.dummy") eq "off") }

###Lea
define Lea PRESENCE lan-ping 192.168.x.x 30 60
attr Lea event-on-change-reading state
attr Lea fp_Groundfloor 230,262,1,,
attr Lea ping_count 3
attr Lea room Wohnung
##define FileLog_Kallehandy.dummy FileLog ./log/Kallehandy.dummy-%Y-%m.log Kallehandy.dummy
##attr FileLog_Kallehandy.dummy logtype text
define Leahandy.notify notify Lea:present { fhem ("set Wohnung_kommen on;; setstate watchdogLeahandyAbwesend defined") if (Value("Leahandy.dummy") ne "on") }
attr Leahandy.notify room Wohnung
#Lea auf off setzen nach 2 min abwesenheit
define watchdogLeahandyAbwesend watchdog Lea:absent 00:02 Lea:present set Wohnung_kommen off;;{fhem ('setstate watchdogLeahandyAbwesend defined')}
attr watchdogLeahandyAbwesend regexp1WontReactivate 1

###Susanne
define Susanne PRESENCE lan-ping 192.168.x.x 30 60
attr Susanne event-on-change-reading state
attr Susanne fp_Groundfloor 230,311,1,,
attr Susanne ping_count 3
attr Susanne room Wohnung
##define FileLog_Kallehandy.dummy FileLog ./log/Kallehandy.dummy-%Y-%m.log Kallehandy.dummy
##attr FileLog_Kallehandy.dummy logtype text
define Susannehandy.notify notify Susanne:present { fhem ("set Wohnung_kommen on;; setstate watchdogSusannehandyAbwesend defined") if (Value("Susannehandy.dummy") ne "on") }
attr Susannehandy.notify room Wohnung
#Susanne auf off setzen nach 2 min abwesenheit
define watchdogSusannehandyAbwesend watchdog Susanne:absent 00:02 Susanne:present set Wohnung_kommen off;;{fhem ('setstate watchdogSusannehandyAbwesend defined')}
attr watchdogSusannehandyAbwesend regexp1WontReactivate 1]


Danke im voraus

Otto123

Hi,

das löst Du über Structur

Und schreibe nicht alles in code Tags  ???
Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

kleinz

Hi was meinst du genau .
Meinen Code soll ich so lassen nur das set Wohnung_kommen entfernen ?
Ich hab mal bei structure gelsesen aber versteh das nicht ganz.
Kannst du mir an hand meines Codes ein Beispiel nennen?


Hollo

#3
Definiere Deine Presence-Abfragen und vergiss die watchdogs/notify.
Dann bindest Du die "Personen" in einer gemeinsamen structure (commandref) ein.

Wichtig ist dabei "clientstate_behavior" und "clientstate_priority" .
Heisst grob, es müssen für anwesend nicht alle da sein, aber für abwesend alle weg sein.

Hier ein Codeschnipsel für die structure:

define Bewohner structure Anwesenheit Er Sie Es
attr Bewohner clientstate_behavior relative
attr Bewohner clientstate_priority anwesend|present abwesend|absent
attr Bewohner devStateIcon present:user_available@green absent:user_available@red
attr Bewohner event-on-change-reading state


Arrgg, fehlt doch was...

Um bei An-/Abwesenheit Aktionen auslösen zu können, nutzt Du dann notify/watchdog auf die structure.

Beispiel:

define n_Zuhause notify (Bewohner:anwesend) set HomeStatus home
define w_Bewohner watchdog Bewohner:abwesend 00:10:00 Bewohner:anwesend set HomeStatus away ;; trigger w_Bewohner .


P.S.:
Die Handy-Erkennung über WLAN war bei mir sehr unzuverlässig; ich bin dann auf bluetooth umgestiegen.
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

Otto123

Zitat von: kleinz am 17 Juli 2015, 11:25:24
Kannst du mir an hand meines Codes ein Beispiel nennen?
Mein Link zur Commandref reicht Dir nicht?  :-[ Oder nicht gesehen?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Otto123

Zitat von: Hollo am 17 Juli 2015, 12:31:33
und vergiss die watchdogs/notify.
@Hollo Da bin ich ja mal froh, dass Du noch nachgebessert hast :)
@kleinz Genauso wie Hollo schreibt musst Du es machen 8)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

kleinz

Hi
Er Sie Es sind die Benutzer Namen oder.
Also kann ich mit meinem Code einfach den jeweiligen Benutzer auf an oder aus setzen
Diese werden von Hollo's Code dann abgefragt oder?

Otto123

Wenn du zwei Lampen hast, können die jeweils  on und off.
Wenn Du beide Lampen in eine structure wirfst kannst Du anschließend die structure on oder off schalten. In der structure kannst Du definieren wann die structure on oder off ist. Also im Normalfall zeigt die structure Dir off wenn beide Lampen aus sind.
Ob es Lampen oder Leute sind ist FHEM egal 8)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Hollo

Zitat von: kleinz am 17 Juli 2015, 13:29:48
...Er Sie Es sind die Benutzer Namen oder.
Also kann ich mit meinem Code einfach den jeweiligen Benutzer auf an oder aus setzen...
Ich glaube Du schmeisst da einiges durcheinander; zumal ich eben erst gesehen habe, dass Du parallel einen Beitrag zu structure am Laufen hast.   >:(
In dem Beitrag lief Deine Anwesenheitserkennung aber schon 1 Stunde vor dem Start hier problemlos !?   :o

Also,
- Deine Erkennung läuft über Presence quasi automatisch; da brauchst Du nichts setzen.
- Eine Presence ist presence oder absent (nicht on oder off)
- Über die structure fasst Du alle Bewohner zusammen, und weisst keiner oder mind. 1 da.
- Darin machen wir auch das verständlichere anwesend/abwesend
- über das notify reagierst Du darauf, wenn der 1. nach Hause kommt / erkannt wird ; was soll dann gemacht werden
- über den watchdog reagierst Du darauf, wenn der letzte gegangen ist ; was soll dann etwas verzögert gemacht werden

Mach das erstmal lauffähig; am besten mit einer einzelnen Lampe, die Du damit an und aus machst.
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

kleinz

@Hollo
Der andere Beitrag über Structure ging in eine andere Richtung und zwar am Ende ging es um das
Schalten einer Lampe mit den Bedingungen Sonnenuntergang und das jemand nach Hause kommt.
Ich möchte bei der Variante aber mit der WLAN Anwesenheits Prüfung bleiben .
Eure Code Beispiele werde ich ab Montag testen .
Dafür aber schon mal vielen Dank

ujaudio

Ich habe das mitgelesen und gleich meine eigene Anwesenheitserkennung entsprechend modifiziert, wo ich schon die Logik von 1 auf 2 Personen erweitert hatte und nun das viel bequemer tun programmieren kann. Klasse, wieder etwas gelernt!

Aber eines ist mir nicht wirklich klar geworden, auc nicht nach mehrfachem Lesen der Commandref  :(
Was genau macht <struct_type>? Wo und wie wird es ausgewertet?

Beispiel:
define Wohnzimmer structure Zimmer Lampe1 Lampe2 Rollladen1
define Schlafzimmer structure Zimmer LampeA LampeB DimmerC Hifianlage RollladenA

oder
define Wohnzimmer structure Zimmer Lampe1 Lampe2 Rollladen1
define Schlafzimmer structure Room LampeA LampeB DimmerC Hifianlage RollladenA

Was wäre da der Unterschied?
Einen lieben Gruß
Jürgen

kleinz

Hi an alle
Ich hab Hollo`s Code eingebaut und mir für meine 3 Familien Mitgliedern eine Anwesenheits abfrage gemacht.
Diese Arbeitet einwandfrei
Dann hab ich den Code benutzt um eineAlarmanlage zu initieren.
Habe zwei weitere Benutzer zugefügt die nur die Alarmanlage ein oder ausschalten.
Auch das funktioniert einwandfrei.
Eine generelle Frage .
Kann es sein das durch diesen Code das ganze System verlangsamt wird?
Es kommt mir manchmal so vor als ob das Seiten laden von der App aus länger dauert
Was ich zum Code noch hinzufügen möchte ist für Anwesenheitskontrolle und für Alarm Pushnachrichten auf mein Handy
So werd mal sufu benutzen

Hollo

Zitat von: kleinz am 19 Juli 2015, 00:34:52
...Ich hab Hollo`s Code eingebaut und mir für meine 3 Familien Mitgliedern eine Anwesenheits abfrage gemacht.
Diese Arbeitet einwandfrei
Das ist doch schon mal erfreulich. Danke für's Feedback.

ZitatDann hab ich den Code benutzt um eineAlarmanlage zu initieren.
Habe zwei weitere Benutzer zugefügt die nur die Alarmanlage ein oder ausschalten.
Benutzer als MitBewohner oder Dummy?
Wenn Du mit anwesend/abwesend eine"Alarmanlage" schalten willst, würde ich das über die structure Bewohner machen.
Also einfach in die Befehle mit aufnehmen... aktivieren über den watchdog beim Verlassen.
Das Deaktivieren wird etwas tricky, Du musst ja bei einer Bewegungserkennung prüfen, ob ein Fremder oder ein bekannter MitBewohner die Wohnung betreten hat. Also evtl. bei Bewegungserkennung eine Verzögerung der Auslösung, die zur Erkennung der Presence passt.

Zitat
Kann es sein das durch diesen Code das ganze System verlangsamt wird?
Es kommt mir manchmal so vor als ob das Seiten laden von der App aus länger dauert
Das ist subjektiv von Device, verwendetem Browser, Style, etc. abhängig.
Schenk dem erstmal nicht so große Bedeutung und bau Dein System langsam Schritt für Schritt auf.
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

kleinz

@Hollo
Also wird wenn fertig so aussehen.
Benutzer X kommt in Wlan bereich ->Anwesend wird gesetzt ->Alarmanlage aus
Benutzer x öffnet jetzt die Tür (Türerkennung + Anwesend Benutzer X)=Benutzer X wird mit Herzlich Willkommen MP3 und Steckdosen / Licht an begrüßt
Beim verlassen einfach verlassen des Wlan bereiches = Benutzer X abwesend Alarm an wenn kein anderer anwesend.

Habe die Benutzer wie in deinem Code mit Structure eingebunden