[GELÖST] Anwesenheitserkennung über ping

Begonnen von m311331, 17 Dezember 2014, 22:26:19

Vorheriges Thema - Nächstes Thema

m311331

Hi @ll,

habe nach dem wiki versucht eine Anwesenheitserkennung über ping zu realisieren
aber es will nicht richtig, kann mir einer bitte helfen 

define Handy1 PRESENCE lan-ping 192.168.0.129 30
attr Handy1 event-on-change-reading state

define watchdog_Abwesenheit watchdog Handy1:absent 00:02 Handy1:present set Sonos StopAll
attr watchdog_Abwesenheit regexp1WontReactivate 1

define watchdog_Anwesenheit watchdog Handy1:pesent 00:01 Handy1:absent set Sonos_Flur Play
attr watchdog_Anwesenheit regexp1WontReactivate 1


das Handy1 steht die ganze Zeit auf present obwohl das Handy1 weg ist  :o


mfg. m311331

JMW

Ich habe das gleiche Problem. Ohne die watchdog Geschichte wird bei mir alles korrekt erkannt, aber wenn ich einen watchdog verwede, so wird der Zustand beim Zuschlagen des watchdogs umgeschaltet (von present -> absent -> watchdog schlägt zu -> present).
Versuche mal ob das bei dir auch nur funktioniert, wenn der watchdog nicht definiert ist.

der-Lolo

#2
ihr habt vermutlich einfach das setstate noch nicht eingebaut...
vom prinzip her muss der watchdog wenn er ausgelöst hat wieder zurückgesetzt werden...
im code beispiel oben hat es ausserdem noch einen tippfehler "pesent"

meine definition als beispiel...


define wd_z1compact_away watchdog z1compact:absent 00:05 z1compact:present setstate wd_z1compact_here defined
define wd_z1compact_here watchdog z1compact:present 00:00 z1compact:absent setstate wd_z1compact_away defined

m311331

#3
Hi @ll,

habs mal abgeänder


define Handy PRESENCE lan-ping 192.168.0.129 60
attr Handy event-on-change-reading state
attr Handy room Anwesenheit

define watchdog_Abwesenheit watchdog Handy:absent 00:02 Handy:present setstate Sonos StopAll
attr watchdog_Abwesenheit regexp1WontReactivate 1

define watchdog_Anwesenheit watchdog Handy:present 00:01 Handy:absent setstate Sonos_Flur Play
attr watchdog_Anwesenheit regexp1WontReactivate 1


geht leider nicht  :-\


mfg. m311331

der-Lolo

War es schon etwas spät für dich? wo nimmst du nun her das du ein setstate auf dein Sonos loslassen sollst?
Seh es wie eine wechselschaltung - du schaltest zwischen den beiden watchdogs hin und her...
Dein sonos zu schalten ist dann der zweite befehl den du anhängst...

wenn der watchdog ausgelöst hat steht in dessen state triggered - wenn er wieder aufpassen soll muss du den state des watchdogs auf defines setzen.
Quasi wieder scharf schalten.


m311331

Hi der-Lolo,


ZitatWar es schon etwas spät für dich?
;D
ja genau

habs jetzt ohne watchdog gelöst
trotzdem danke für die Hilfe


mfg. m311331

der-Lolo

wäre toll wenn du jetzt - wo schon gelöst dran steht entweder schreibst wie du es gelöst hast oder meine version versuchst und bestätigst das diese funktioniert. Es gab schliesslich noch jemanden der dieses problem hier hatte - und auch später folgende werden dankbar sein.

PichlAlex

Zitat von: der-Lolo am 18 Dezember 2014, 17:14:29
wäre toll wenn du jetzt - wo schon gelöst dran steht entweder schreibst wie du es gelöst hast oder meine version versuchst und bestätigst das diese funktioniert. Es gab schliesslich noch jemanden der dieses problem hier hatte - und auch später folgende werden dankbar sein.
*vote*
ich hab das Thema auch auf meiner ToDo Liste und wäre fürs Coding mehr als dankbar :-)

der-Lolo

#8
Hallo PichlAlex,
ich habe die besten erfahrungen mit der Anwesenheitserkennung über Bluetooth 4.0 gemacht -
an unseren Handys ist Bluetooth wegen dieser geschichte und unseren kfz freisprechanlagen immer aktiv, ein bluetooth 4.0 Handy veträgt das auch recht gut in hinsicht auf akku verbrauch.
Einen Bluetooth stick kannst du problemlos an deiner Fhem Serverhardware anschliessen - falls du ncht auf der fritzbox installiert hast.
Dann richtest Du ein PRESENCE Device mithilfe der Bluetooth Mac-Adresse deines Mobiltelefones ein.
etwa so.


define z1compact PRESENCE local-bluetooth 68:xx:xx:xx:xx:11 10 60
attr z1compact alias Michael
attr z1compact event-on-change-reading state
attr z1compact room Residents


Die beiden zahlen hinter der Mac Adresse des Handys geben an das wenn das gerät absent ist im 10 sekunden rhytmus gescannt wird. Wenn das gerät present ist wird im 60 sekunden rhytmus gescannt.
Wenn Du das eingerichtet hast reagiert das Presence Device schon auf den Zustand deines Handys.
Bluetooth aus = absent
Bluetooth an = present

Das alleine ist aber noch zu ungenau, um kurzzeitiges verschwinden der Devices zu unterdrücken brauchst du zwei Watchdogs.

etwa so


define wd_z1compact_away watchdog z1compact:absent 00:05 z1compact:present setstate wd_z1compact_here defined ; set rr_Michael absent
attr wd_z1compact_away regexp1WontReactivate 1
attr wd_z1compact_away room Residents

define wd_z1compact_here watchdog z1compact:present 00:00 z1compact:absent setstate wd_z1compact_away defined ; set rr_Michael home
attr wd_z1compact_here regexp1WontReactivate 1
attr wd_z1compact_here room Residents


im erstem watchdog wird festgelegt das wenn die meldung z1compact:absent fünf minuten ohne änderung anliegt der state des zweiten watchdogs auf defined gesetzt wird. Bei mir wird ausserdem rr_Michael auf absent gesetzt - das setzen des state vom zweitem watchdog sorgt dafür das der zweite watchdog scharfgeschaltet wird. Dieser schaut nun wann sein trigger z1compact:present auftaucht. In meinem Fall wird dann ohne verzögerung der erste watchdog scharfgeschaltet und rr_Michael auf home gesetzt.

rr_Michael ist ein "bewohner" im Residents Modul. Jegliche weitere beschaltungen nehme ich über das Residents Modul vor - dort kann ich auf einzelne bewohner reagieren oder eben auf alle.
Z.b. Heizung und Steckdosen aus wenn kein bewohner mehr zuhause ist.
Musik an wenn ich heim komme aber die Frau nicht da ist...
HUELampe auf rot wenn ich zuhause bin und die Frau heimkommt ;-)

Es gibt ausserdem die möglichkeit watchdogs mithilfe des DOIF moduls zu bauen, ich vermute das das nun die lösung von m311331 ist. Vielleicht teilt er uns seine lösung ja noch mit.

In meinem erstem Beispiel ist noch ein lan-bluetooth anstelle des local-bluetooth verankert, ich vermute das m311331 deswegen nicht klarkam - ich habe einen cubietruck in der einen ecke der wohnung. In der gegenüberliegenden ecke gibt es noch einen BeagleBone der auch per Bluetooth nach geräten scannt, beide zusammen ergeben einen collectcord welcher dann mit lan-bluetooth angesprochen wird.

Ich hoffe hiermit kannst du dein ToDo abarbeiten...


Scubao

Servus, vielen Dank für den Codeschnippsel, der hat mir ein gutes Stück geholfen.

Leider funktioniert der set rr_Michael xyz Befehl nach dem ; nicht - wenn ich den in der Eingabebox benutze schneidet
fhem das komplett ab dem ";" ab und wenn ich das direkt in die Config paste bleibt er stehen. Ich verstehe einfach nicht
warum, laut doku kann man doch mit ";" ein weiteres kommando anfügen.

Hat vielleicht jemand eine Idee was da falsch ist?

Zitat von: der-Lolo am 22 Dezember 2014, 17:21:52

define wd_z1compact_away watchdog z1compact:absent 00:05 z1compact:present setstate wd_z1compact_here defined ; set rr_Michael absent
attr wd_z1compact_away regexp1WontReactivate 1
attr wd_z1compact_away room Residents

define wd_z1compact_here watchdog z1compact:present 00:00 z1compact:absent setstate wd_z1compact_away defined ; set rr_Michael home
attr wd_z1compact_here regexp1WontReactivate 1
attr wd_z1compact_here room Residents


der-Lolo

#10
Ich benutze das Residents Modul - rr_Michael ist ein Bewohner, wenn Du das Residents Modul nicht benutzt brauchst du ein Device oder einen Dummy der den state auch aufnimmt.

define rr_Beispiel Dummy
set rr_Beispiel home


Les mal ein wenig zum Residents Modul und definier es in deiner config. Ich denke das ist genau was Du suchst.

define meinHaus RESIDENTS
define rr_Michael ROOMMATE meinHaus


wenn Du direkt in die Config schreibst musst Du 2 Semikolon setzen - ;; - Aber in die Config schreibt man eigentlich nicht von Hand, gewöhn Dir das gar nicht erst an - das macht nur ärger.

Scubao

Hab ich ja - es gibt bei mir einen rr_Oliver aber FHEM mag das Semikolon nicht, ohne
funktioniert der Watchdog, setzt nur leider den RESIDENT Status nicht.

Macht es Sinn das auf Loglevel 4 oder 5 zu debuggen?

der-Lolo

Ich glaube Du bearbeitest falsch...
klicke bitte auf den wd_z1compact_here sodass Du in die Detail Seite kommst, dort steht unter Internals DEF - da kann man raufklicken. In dieses Feld kannst du das hier per Paste einfügen

z1compact:present 00:00 z1compact:absent setstate wd_z1compact_away defined ; set rr_Michael home ; set .*Events add Michael ist nach Hause gekommen...   

.*Events ist eine definition aus dem readingsHistory Modul - kannst Du löschen.

Scubao

Zitat von: der-Lolo am 27 Dezember 2014, 21:18:37
Ich glaube Du bearbeitest falsch...
klicke bitte auf den wd_z1compact_here sodass Du in die Detail Seite kommst, dort steht unter Internals DEF - da kann man raufklicken. In dieses Feld kannst du das hier per Paste einfügen

z1compact:present 00:00 z1compact:absent setstate wd_z1compact_away defined ; set rr_Michael home ; set .*Events add Michael ist nach Hause gekommen...   

.*Events ist eine definition aus dem readingsHistory Modul - kannst Du löschen.

Danke für die Hilfe - ich musste ";; set rr_XYZ state home" benutzen damit ging es.

Gruß
Oliver

der-Lolo

Das verstehe ich nicht, ich hoffe auch das es kein problem in der Zukunft bedeutet, das Internals STATE hat andere Eigenschaften (Events - auslösen) als das Reading state.

Versuch es bitte nochmal mit meinem Schnipsel - das muss gehen.