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
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.
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
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
Installier mal den MIME:: Parser, siehe oben.
Viele Grüße
Psy
Nabend,
hat sonst niemand Erfahrungswerte zur Zuverlässigkeit der Freunde App beizusteuern? :-\
VG
Psy
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
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
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.
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
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
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
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
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
Poste doch mal deinen Notify code hier rein.
Hallo PsychoD,
hier mein notify:
mailcheck.*Subject:.* { if (( ($EVENT) =~ (/Vorname Nachname ist an folgendem Standort angekommen: Vorname Nachnames Privat/i) )
&& $value{"test"} ne "home") {fhem("set test home")}
elsif ( ($EVENT) =~ (/Vorname Nachname hat folgenden Standort verlassen: Vorname Nachnames Privat/i) )
{fhem("set test absent")}}
Hmm, da sehe ich jetzt auf Anhieb leider auch nicht was falsch ist, tut mir leid. Vielleicht jemand anders?
Hi RockSteadyBeat,
weiß nicht, ob dein Problem noch aktuell ist, aber ich bin bei deinem Code über $value{} gestoßen und in der Commandref steht:
Zitatdas $value hash für notify wird nur bis featurelevel 5.6 befüllt, da es unerwünscht ist. Stattdessen sollte man die Value() Funktion verwenden.
Hi All,
meine Erfahrungen sind übrigens "ganz ok" mit der Freunde App. Es lief ca. 8 Wochen gut, dann hat die Freunde App meinen Standort nicht mehr erkannt und ich musste ihn neu hinterlegen. Seitdem geht es wieder. Keine Ahnung, wodran das lag, der angezeigte und per Mail zu pushende Standort war exakt gleich...
Zur direkten Kontrolle schicke ich mir seitdem meine Ab/Anwesenheit per Pushover. Wenn alles funktioniert, ist es sehr schnell, aber auch ziemlich ungenau. Mehr ist aber auch nicht zu erwarten. Gehe ich mit dem Hund raus, werde ich manchmal schon gute hundert Meter früher als anwesend erkannt. Muss ich länger mal einen Parkplatz suchen, bimmelt Pushover mich bei jeder Runde um den Block brav an. Ich würde es jetzt nicht dafür benutzen um um in fhem lebenswichtiges zu schalten, aber trotzdem gefällt es mir meine An/Abwesenheit zu loggen und "genau" zu wissen, wann ich das Haus verlassen habe. Ansonsten benutze ich auch noch die Fritzbox und überprüfe die Anwesenheit der Smartphones, aber das ist natürlich deutlich verzögerter, dafür allerdings bisher 100% zuverlässig.
Viele Grüße
Chris
Ich bin mittlerweile recht frustriert davon. Mittels iPhone habe ich keine 100% zuverlässige Lösung gefunden. :( Aktuell fahre ich ein Dreigespann aus Freunde, Mail durch IFTTT und Locative (ex geofancy) auf zwei iPhones, und dennoch kommt es ca. 1x alle 2 Wochen vor, dass die Erkennung nicht greift. Ich werd nun noch eine Fritzbox-Erkennung hinzufügen, wobei mir das auch nicht zu 100% passt weil man dann keinen Flugmodus mehr anmachen darf zuhause. Vielleicht lieber ein Beacon am Schlüsselbund, aber da fehlt mir noch das KNowhow bzw. die richtige Hardware...
Viele Grüße
Psy
Hi Psy,
das mit dem Beacon würde mich auch interessieren. Mal sehen, vielleicht habe ich demnächst ein wenig Zeit, mich damit mal zu beschäftigen, dann werde ich von meinen Erfahrungen berichten. Ich habe jetzt nicht gesucht, aber ich bin mir fast sicher, dass es hier im Forum schon jemanden gibt, der es ausprobiert hat.
Rein inhaltlich komme ich mit der Fritzbox ganz gut klar. Ich schalte aber eh nur etwas ab, wenn keiner im Haus ist. Ich schalte nichts an, wenn jemand nach Hause kommt. Dafür wäre auch ein Bewegungsmelder ausreichend. Allerdings weiß man dann nicht, wer sich bewegt hat. Wobei ich auch schon von IP-Cams mit Gesichtserkennung gehört habe - aber der Technik kann man sicher auch nicht 100% vertrauen.
@iPhone Flugmodus: würde dir da nicht auch das "Nicht stören" reichen, anstatt es gleich ganz lahm zu legen?
Viele Grüße
Chris
Hallo zusammen,
entschuldigt hat etwas gedauert... ;D
@jsChris: Du hast recht, Value() ist "eleganter" als $value{} aber genutzt hat es trotzdem nicht.
Trotz allem scheint es nun zu funktionieren, was habe ich gemacht?
Nachdem ich im notify die Regex bis zum erbrechen umgestellt habe (Doppelpunkte raus etc.) und alles nicht funktioniert hat war ich gestern "gezwungen" ein copy&paste aus dem mailcheck:Subject zu machen, dabei ist mir aufgefallen das nach dem einfügen im notify dort ein zusätzliches Zeichen steht das ich nie vorher gesehen hab (leider nur als Bild im Anhang).
Hat jemand eine Ahnung warum das so ist?
greetz RockSteadyBeat
Zitat von: jsChris am 05 April 2016, 11:02:22
Hi Psy,
das mit dem Beacon würde mich auch interessieren. Mal sehen, vielleicht habe ich demnächst ein wenig Zeit, mich damit mal zu beschäftigen, dann werde ich von meinen Erfahrungen berichten. Ich habe jetzt nicht gesucht, aber ich bin mir fast sicher, dass es hier im Forum schon jemanden gibt, der es ausprobiert hat.
Rein inhaltlich komme ich mit der Fritzbox ganz gut klar. Ich schalte aber eh nur etwas ab, wenn keiner im Haus ist. Ich schalte nichts an, wenn jemand nach Hause kommt. Dafür wäre auch ein Bewegungsmelder ausreichend. Allerdings weiß man dann nicht, wer sich bewegt hat. Wobei ich auch schon von IP-Cams mit Gesichtserkennung gehört habe - aber der Technik kann man sicher auch nicht 100% vertrauen.
@iPhone Flugmodus: würde dir da nicht auch das "Nicht stören" reichen, anstatt es gleich ganz lahm zu legen?
Viele Grüße
Chris
Der ausführlichste Thread hier im Forum zu Bluetooth Tags ist wohl der hier:
https://forum.fhem.de/index.php/topic,28753.0.html
Ich hatte allerdings auch noch keine Zeit, mich ausführlich damit zu beschäftigen, welcher davon der zuverlässigste mit dem besten P/L-Verhältnis ist.
@Flugmodus: Ja, da hast du Recht, das sollte gehen. Einzig der "Akku leer"-Fall ist dann noch problematisch. Sobald der Akku leer ist, wird man automatisch auf "abwesend" gesetzt - was auch blöd ist.
Gruß
Psy
Hi,
ich bin gemäß der Anleitung von PsychoD vorgegangen. Mailcheck ist aktiv. Die Freunde App schickt zuverlässig ein Mail, wenn ich den Standort verlasse und wenn ich wieder zurückkehre. Mailcheck liest diese Mails auch korrekt. Leider funktioniert das Schalten der Testlampe im Badezimmer nicht.
n_mailcheck_bewohner_1
mailcheck.*Subject:.* { if (( ($EVENT) =~ (/Uwe Rech ist an folgendem Standort angekommen: Zuhause/i) ) && $value{"HomeStatus_Bewohner1"} ne "Zuhause") {fhem("set HomeStatus_Bewohner1 Zuhause")} elsif ( ($EVENT) =~ (/Uwe Rech hat folgenden Standort verlassen: Zuhause/i) ) {fhem("set HomeStatus_Bewohner1 Abwesend")}}
n_Abwesenheit
HomeStatus:Abwesend set Bad.Deckenleuchte off
n_Zuhause
HomeStatus:Zuhause set Bad.Deckenleuchte on
n_HomeStatusUpdate
(HomeStatus_Bewohner1) { my $hs = $value{"HomeStatus"};my $hs1 = $value{"HomeStatus_Bewohner1"}; if ($hs1 eq "Abwesend" && $hs ne "Abwesend") { fhem "set HomeStatus Abwesend" } elsif ($hs ne "Zuhause") { fhem "set HomeStatus Zuhause" } }
Hier noch der Auszug aus dem Logfile, nachdem ich zu Hause angekommen bin:
2017.10.31 20:11:53 2: autocreate: define FileLog_KNX_1000006 FileLog ./log/KNX_1000006-%Y.log KNX_1000006
2017.10.31 20:11:59 1: PERL WARNING: Use of uninitialized value $value{"HomeStatus_Bewohner1"} in string ne at (eval 34320) line 1.
2017.10.31 20:11:59 3: eval: my $EVTPART4='an';my $SELF='n_mailcheck_bewohner_1';my $EVTPART0='Subject:';my $EVTPART6='Standort';my $EVTPART5='folgendem';my $EVTPART2='Rech';my $TYPE='mailcheck';my $EVTPART1='Uwe';my $EVENT='Subject: Uwe Rech ist an folgendem Standort angekommen: Zuhause';my $EVTPART3='ist';my $EVTPART8='Zuhause';my $EVTPART7='angekommen:';my $NAME='mailcheck';{ if (( ($EVENT) =~ (/Uwe Rech ist an folgendem Standort angekommen: Zuhause/i) ) && $value{"HomeStatus_Bewohner1"} ne "Zuhause") {fhem("set HomeStatus_Bewohner1 Zuhause")} elsif ( ($EVENT) =~ (/Uwe Rech hat folgenden Standort verlassen: Zuhause/i) ) {fhem("set HomeStatus_Bewohner1 Abwesend")}}
2017.10.31 20:11:59 3: set HomeStatus_Bewohner1 Zuhause : Please define HomeStatus_Bewohner1 first
2017.10.31 20:11:59 3: n_mailcheck_bewohner_1 return value: Please define HomeStatus_Bewohner1 first
Leider finde ich den Fehler trotzdem nicht. Hat jemand eine Idee?
Grüße, Uwe
Zitat von: schwabenuwe2103 am 01 November 2017, 19:37:12
2017.10.31 20:11:59 3: set HomeStatus_Bewohner1 Zuhause : Please define HomeStatus_Bewohner1 first
2017.10.31 20:11:59 3: n_mailcheck_bewohner_1 return value: Please define HomeStatus_Bewohner1 first
Hallo Uwe, ist HomeStatus_Bewohner1 definiert?
Hallo Hauswart,
das scheint in der Tat zu fehlen. Wäre es so korrekt?
define HomeStatus_Bewohner1 dummy
Grüße, Uwe
FHEM durchgestartet und jetzt läuft es :)