Anwesenheitserkennung über Apples Freunde App (find my friends)

Begonnen von PsychoD, 22 Oktober 2015, 23:13:05

Vorheriges Thema - Nächstes Thema

PsychoD

Hi,

aufgrund der Nachfrage hier mein Code zur Prüfung des Anwesenheitsstatus mehrerer Personen, die alle iPhones (oder andere iDevices) haben müssen. Das alles funktioniert ohne Presence, wobei das sicher auch gut eingesetzt werden kann. Ich bin sicher, dass es das Ganz oder in Teilen bereits im Forum gibt, aufgrund der Nachfrage aber nochmal am Stück wie es bei mir funktioniert: 
Der Ablauf ist wie folgt:

Voraussetzungen:
1. Zunächst muss ein IMAP-Account vorhanden sein, dafür reicht ein GMail Account.
2. In der Freunde App muss eine Benachrichtigung über den eingenen Standort angelegt werden. (in der App unten auf "ich" klicken, und dann "Freunde informieren" aktivieren). Dort für die E-Mail Adresse des IMAP Accounts einstellen, dass sowohl bei Ankunft als auch beim Verlassen benachrichigt wird. Auf jeden Fall "Jedes mal wiederholen" aktivieren.

Im FHEM:
3. Mittels Mailcheck wird der IMAP-Account abgefragt und per Notify auf das Subject reagiert. Mailcheck siene auch http://forum.fhem.de/index.php?topic=14092.0

define mailcheck mailcheck imap.gmail.com [HIERDEINEMAILADRESSE]@gmail.com [HIERDEINMAILKENNWORT]
define FileLog_mailcheck FileLog ./log/%Y-%m-mailcheck.log mailcheck.*

# Notify
define n_mailcheck_bewohner_1 notify mailcheck.*Subject:.* { if (( ($EVENT) =~ (/Bewohner1 ist an folgendem Standort angekommen: Privat/i) ) && $value{"HomeStatus_Bewohner1"} ne "Zuhause") {fhem("set HomeStatus_Bewohner1 Zuhause")} elsif ( ($EVENT) =~ (/Bewohner1 hat folgenden Standort verlassen: Privat/i) ) {fhem("set HomeStatus_Bewohner1 Abwesend")}}


Den Notify-Block legt ihr dann pro Bewohner an, so dass es pro Bewohner einen Dummy gibt ob dieser akuell zuhause ist oder nicht. Dabei passt ihr natürlich Name und Betreffzeile darauf an, was eure Freunde App schickt, das kann schonmal variieren je nach dem ob man den Ort als "Zuhause" definiert hat, oder ob einfach nur die Straße geschickt wird (seht ihr dann schon).

4. Die Homestatus aller Bewohner werden dann zusammengeführt, so dass es eine Dummy Variable gibt die zeigt ob jemand zuhause ist, oder die Bude leer ist:

# == HomeStatus Aggregation ==
define n_HomeStatusUpdate notify (HomeStatus_Bewohner1|HomeStatus_Bewohner2) { my $hs = $value{"HomeStatus"};;my $hs1 = $value{"HomeStatus_Bewohner1"};; my $hs2 = $value{"HomeStatus_Bewohner2"};; if ($hs1 eq "Abwesend" && $hs2 eq "Abwesend" && $hs ne "Abwesend") {   fhem "set HomeStatus Abwesend" } elsif ($hs ne "Zuhause") {   fhem "set HomeStatus Zuhause" } }


5. Auf den globalen HomseStatus Dummy könnt ihr dann mittels Notify reagieren, mit was auch immer. Im Beispiel: Heizung und alle Geräte aus.


define n_Abwesenheit notify HomeStatus:Abwesend set bad_heizung_Clima controlManu 8.0;;set wz_heizung_Clima controlManu 10.0;;set AllesInWohnung off
define n_Zuhause notify HomeStatus:Zuhause set bad_heizung_Clima controlMode auto;;set wz_heizung_Clima controlMode auto;;set Kuechengeraete on


Vielleicht hilft es ja dem ein oder anderen.

Viele Grüße
Psy

gloob

Vielen Dank.

Hab es gerade eingebaut und es funktioniert mit einem ersten kurzen Test sehr gut.
Ich hoffe, dass die Mails von Apple immer ankommen.

Um mailcheck definieren zu können musste ich noch Mail::IMAPClient installieren:

cpan install Mail::IMAPClient

Vielleicht hat ja noch jemand das gleiche Problem.
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

PsychoD

Hi,

ab und zu gibt es dabei Unregelmäßigkeiten bei den Mails, um zu versuchen das etwas globaler zu fassen habe ich dazu ein extra Thema gestartet:
http://forum.fhem.de/index.php/topic,42747.0.html

Zur Installation: Stimmt, das muss sein. Ich hab die folgenden installiert, der MIME::Parser ist notwendig, falls es mit Umlauten zu Schwierigkeiten kommt.
- cpan install Mail::IMAPClient
- cpan install IO::Socket::SSL
- cpan install IO::Socket::INET
- cpan install MIME::Parser

Noch ein Hinweis: Ich hatte auf einem alten RPI der ersten Generation (256MB RAM) Probleme mit CPAN, cpanm hat aber funktioniert.

Viele Grüße
Psy

gloob

Hallo,

Das Maulcheck Modul spuckt bei mir folgendes aus:

mailcheck Subject: =?UTF-8?Q?Tina_Werner_ist_an_folgendem_Stando?= =?UTF-8?Q?rt_angekommen:_=E2=80=8ETina_Werners_Privat?=

Kann es irgendwie an den Spracheinstellungen vom Raspberry liegen?

Gruß
Stefan Riese
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

PsychoD

Installier mal den MIME:: Parser, siehe oben.

Viele Grüße
Psy

PsychoD

Nabend,

hat sonst niemand Erfahrungswerte zur Zuverlässigkeit der Freunde App beizusteuern?  :-\

VG
Psy

DJ-Mix

Hallo zusammen,

habe die App auch einmal ausprobiert, Danke schon mal für die Arbeit.
Leider bekomme ich aber leider keinen Status übermittelt.  :(
Mailcheck meldet das es verbunden ist.  :)
Notify gibt keinen HomeStatus zurück ?  :'(

Des weiteren habe ich ein kleines Problem, dass das Subject bei mir nicht ganz eindeutig ist. Die Freude App meldet mal Hausnummer x dann Y dann Z usw.
Kann ich das mit einer Variablen irgendwie abfangen?

Danke gruß
Markus

PsychoD

Hi,

Also Mails kommen im Mailcheck an? Dann muss es an deinem Regulären Ausdruck im Notify hapert. Poste doch mal deinen Code.

Zu der Adressproblematik: in der Freunde App kannste labels vergeben, z.b. "privat", oder "Zuhause". Versuch mal ob es damit besser geht. Ansonsten muss man den regulären Ausdruck lockerer gestalten.

Viele Grüße
Psy

DJ-Mix

Also in Mailcheck kommt nix an. Ist nur halt verbunden.
Habe mir dazu extra ein GMail Konto eingerichtet so wie Du es beschrieben hast.

Config poste ich dann heute Abend wenn ich Zuhause bin.

DJ-Mix

#9
code von Mailcheck

Internals:
   CONNECTS   1
   DEF        imap.gmail.com xxxxx@gmail.com xxxxx INBOX
   Folder     INBOX
   HAS_GPG    0
   HAS_MIME   1
   Host       imap.gmail.com
   LAST_CONNECT 2015-10-26 18:24:54
   LAST_DISCONNECT 2015-10-26 18:24:55
   NAME       mailcheck
   NR         1093
   NTFY_ORDER 50-mailcheck
   STATE      Disconnected
   TYPE       mailcheck
   tag
   Helper:
     password   xxxxx
     user       xxxxx@gmail.com
Attributes:
   room       Mail


Leider bekomme ich keinen Connect mehr zustande! Warum weiß ich leider nicht?
(Das System hat sich aber gestern aufgehangen und ist nicht mehr gelaufen)

das notify
Internals:
   CFGFN
   DEF        mailcheck.*Subject:.* { if (( ($EVENT) =~ (/xxxxx ist an folgendem Standort angekommen: Privat/i) ) && $value{"HomeStatus_Bewohner1"} ne "Zuhause") {fhem("set HomeStatus_Bewohner1 Zuhause")} elsif ( ($EVENT) =~ (/xxxxx hat folgenden Standort verlassen: Privat/i) ) {fhem("set HomeStatus_Bewohner1 Abwesend")}}
   NAME       n_mailcheck_bewohner_1
   NR         1153
   NTFY_ORDER 50-n_mailcheck_bewohner_1
   REGEXP     mailcheck.*Subject:.*
   STATE      active
   TYPE       notify
   Readings:
     2015-10-26 18:34:40   state           active
Attributes:
   room       Mail


Gruß
Markus

PsychoD

Hi,

im Vergleich fällt mir auf, dass bei dir der Ordner im DEF auftaucht, bei mir nicht:

Internals
CONNECTS 11
DEF imap.gmail.com xxx@gmail.com yyy
FD 21
Folder INBOX
HAS_GPG 0
HAS_IDLE 1
HAS_MIME 1
Host imap.gmail.com
INTERVAL 600
LAST_CONNECT 2015-10-26 03:01:57
LAST_DISCONNECT 2015-10-26 03:01:56
LAST_LOGIN 2015-10-26 03:01:57
LAST_POLL 2015-10-26 18:31:58
NAME mailcheck
NOTIFYDEV global
NR 87
NTFY_ORDER 50-mailcheck
STATE Logged in
TYPE mailcheck
tag 304



Wie definierst du den Mailcheck?

Ansonsten vielleicht mal im Mailcheck-Thema fragen...

VG
Psy

DJ-Mix

mir ist aufgefallen, wenn ich die Original 32_mailchek.pm nehme kriege ich keinen Connect . . .
Nehme ich die erste 32_mailcheck.pm aus dem Beitrag http://forum.fhem.de/index.php/topic,14092.0.html
dann funktioniert zumindest der Connect.

gruß
Markus

DJ-Mix

Hallo,

das Problem des Connect wurde gelöst und ich erhalte nun meinen Status. ;D

Zu dem Modul kann ich sagen, wenn man es in FHEM und dem Iphone (Freunde App) synchron eingestellt hat,
funkltioniert es ziemlich gut. Der Status wird zufriedenstellend übermittelt.
Mails erhalte ich bei Betreten bzw. Verlassen der eingestellten Bereiche.

Vielen Dank nochmals für das Modu und die Umsetzung.  :)
Nun kann ich meine Szenarien bei verschiedenen Situationen erstellen.  ;)

gruß
Markus

RockSteadyBeat

Hallo zusammen, habe mailcheck aktiv aber noch ein Problem mit dem notify...
Die Auswertung kommt bei mir offensichtlich nicht mit dem DOPPELPUNKT in der Betreffzeile der iCloud-Mail zurecht... Schicke ich mir den gleichen Text von meiner Mailaddr ohne DOPPELPUNKT findet eines Auswertung statt und der Dummy wird geschaltet...
Irgendjemand eine Idee?
LG RockSteadyBeat


Gesendet von iPhone mit Tapatalk
fhem on OSX
HMLAN,
CUL433

PsychoD