Präsenzerkennung (iPhone) via WLAN

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Benutzeravatar
Cyrelian
Beiträge: 601
Registriert: 24. Sep 2015 17:55
Answers: 4

Präsenzerkennung (iPhone) via WLAN

Beitrag von Cyrelian »

Hallo zusammen,

nachdem ich nun einiges im Thema Präsenzerkennung probiert habe, und mit den meisten Lösungen nicht wirklich zu frieden war, hab ich jetzt eine sehr zuverlässige Kombination laufen.
Ich habe habe das Script von Extrabannies etwas modifiziert und mit IFTTT kombiniert.

Das ganze sieht dann wie folgt aus:

Item

Code: Alles auswählen

Switch MOB01 "Handy 01 [MAP(Praesenz.map):%s]" (gPraesenz)
Switch MOB02 "Handy 02 [MAP(Praesenz.map):%s]" (gPraesenz)
String MOB01_WLAN "Handy 01 [%s]" (gPraesenz) {exec="<[/scripts/detectiphone01.sh:60000:REGEX((.*?))]"}
String MOB02_WLAN "Handy 02 [%s]" (gPraesenz) {exec="<[/scripts/detectiphone02.sh:60000:REGEX((.*?))]"}
Wie Ihr das auf der Sitemap darstellt ist Geschmackssache. Ich habe mich für den Switch entschieden, da man dann, anhand des Icons auch sehen kann, ob er "aktiv" oder "inaktiv" ist. Das Präsenzmännchen ist dann entweder ausgegraut oder halt in "farbe"
Aber auch der String lässt sich ohne weiters anzeigen.

Sitemap

Code: Alles auswählen

Frame item=gPraesenz label="Präsenzerkennung" icon="network" {
		Text item=MOB01 icon="present" valuecolor=[Anwesend="green",Abwesend="red"]		
		Text item=MOB02 icon="present" valuecolor=[Anwesend="green",Abwesend="red"]		
	}	
Voraussetzungen für das Script

Das Problem mit den iPhones ist, dass diese nach einiger Zeit in den "deep standby" fahren und das WLAN abschalten. Somit sind sie für den "normalen" Network Health nicht mehr sichtbar und werden als "abwesend" angezeigt. Um das zu umgehen und das iPhone aus dem "Dornröschenschlaf" zu erwecken, sendet man mittels "hping3" auf Port 5353 einen Ping, der das iPhone aufweckt. Somit taucht es dann in der ARP Tabelle auf und dort können wir dann mit Hilfe unseres Scriptes auf die gewünschte Adresse mittels

Code: Alles auswählen

arp -an | awk '{print $4}' 
filtern.

Code: Alles auswählen

apt-get install hping3

Script

Code: Alles auswählen

declare -a DEVICES
hping3 -2 -c 10 -p 5353 -i u1 192.168.x.x -q >/dev/null 2>&1 
DEVICES=`arp -an | awk '{print $4}'`
CHECK="xx:xx:xx:xx:xx:xx"
if [[ ${DEVICES[*]} =~ $CHECK ]]
then
echo "Anwesend"
else
echo "Abwesend"
fi
Eigentlich ist man an der Stelle fertig und alles ist gut .....aber wir wollen ja das Maximum aus der Präsenzerkennung holen :D.

Ich habe das ganze dann noch mittels myopenhab.org und IFTTT verbunden und via IFTTT eine "area" festgelegt die das Haus UND den Garten abdeckt. Somit kann man auch mal mit dem Handy in den Garten laufen, ohne das man direkt als "abwesend" deklariert wird ;)

Ich hoffe das Hilft dem einen oder anderen und wenn Ihr Ideen oder Vorschläge habt, immer her damit.

CYA

Benutzeravatar
seppy
Beiträge: 738
Registriert: 24. Sep 2015 20:25
Answers: 4
Wohnort: Bonn

Re: Präsenzerkennung (iPhone) via WLAN

Beitrag von seppy »

Hallo Zusammen,

meine Lösung schaut ähnlich aus, allerdings vertraue ich in meinem Fall den Systemtools :D also dem cron Deamon.
Von der Logik her arbeitet meine Lösung aber genau so.

Hier die Items:

Code: Alles auswählen

Group:Switch:OR(ON, OFF) gPresenceHome
Switch PresenceSeppy 
	"Anwesenheit Seppy@Home"
	(gPresenceDevices,gPresenceHome)
Eine Regel benötige ich nicht, sondern folgendes Shellscript und genau wie bei Cyrelian hping3 installiert.

Code: Alles auswählen

#!/bin/bash

# Seppys iPhone
/usr/sbin/hping3 -2 -c 10 -p 5353 -i u1 192.168.X.XXX -q >/dev/null
DEVICES=`/usr/sbin/arp -an | awk '{print $4}'`
if [[ $DEVICES == *48:43:XX:XX:XX:XX* ]]
  then
    echo "Seppy anwesend"
    curl --max-time 2 --connect-timeout 2 --header "Content-Type: text/plain" --request POST --data "ON" https://OPENHABHOST/rest/items/PresenceSeppy
  else
    echo "Seppy abwesend"
    curl --max-time 2 --connect-timeout 2 --header "Content-Type: text/plain" --request POST --data "OFF" https://OPENHABHOST/rest/items/PresenceSeppy
fi

Der Cronjob ruft das Script einmal pro Minute zwischen 9-22.00 Uhr auf. Die Einschränkung der Uhrzeit habe ich gemacht, da nachts die Smartphones in der Regel aus sind und somit nicht erreichbar. Der User ist aber normalerweise im Bett ;)

Code: Alles auswählen

*       9-22    *       *       *       /usr/share/openhab/scripts/iphonedetect.sh |/usr/bin/logger -t PresenceDetect
Homematic und HomematicIP über Raspberrymatic (RaspPi 4 4GB) mit 2x HMLAN. Steuerung und Visualisierung durch OpenHAB2 auf RaspPi in Hutschienengehäuse im Sicherungskasten. Rund 100 Aktoren/Sensoren

- Abgesichert durch APC USV
- Bewässerungssteuerung mit Hunter Magnetventilen (HM-LC-Sw4-DR)
- Beleuchtungssteuerung Innen und Aussen (HM-LC-Sw4-DR + HM-LC-SW1-FM + HMW-IO-12-SW7-DR)
- Rolladensteuerung mit Beschattungsautomatik über Temperaturdifferenzsensor (HM-LC-Bl1PBU-FM)
- Wetter und Unwetterinformationen von wunderground
- Benachrichtigung der Bewohner via Pushover
- Multimediawand und Dreambox Steuerung (HM-LC-SW1-FM)
- Heizungssteuerung mit Komfort und Energiesparfunktionen (HM-CC-RT-DN + HM-Sec-SC-2 + HMIP-eTRV-2)
- Werkstatt Kompressorsteuerung (HMW-IO-12-SW7-DR)
- Weihnachtsbeleuchtung außen
- Präsenzerkennung über Geolocation (iCloud Binding), iBeacon und WLAN (Unifi Binding)
- Philips HUE & Tasmota Devices (Tuya) Einbindung

Benutzeravatar
Cyrelian
Beiträge: 601
Registriert: 24. Sep 2015 17:55
Answers: 4

Re: Präsenzerkennung (iPhone) via WLAN

Beitrag von Cyrelian »

Hi Seppy,

sehr nice, so hast Du dir auf jeden Fall die "Rule" gespart und das System muss arbeiten und nicht openhab ;) . Was auf jeden Fall für Deine Variante spricht , ist der "Zeitraum" den man via CRON definieren kann. Das geht mit meiner so nicht.

CU

jaccolino
Beiträge: 6
Registriert: 17. Feb 2016 09:13

Re: Präsenzerkennung (iPhone) via WLAN

Beitrag von jaccolino »

Ich bin auf diese Forum gestossen, da ich eine Lösung für mein Problem bei der Präsenzerkennung Wlan IPhone suche. Ich benutze die Lösung von Cyrelian . Leider habe ich das Problem, dass mein Iphone 6 nach einiger Zeit nicht mehr antwortet, also Abwesend zeigt. Das Iphone 5 bleibt Anwesend, solange das Wlan eingeschaltet ist. Schalte ich nun kurzfristig auf dem Iphone 6 das Wlan aus und dann wieder an, wird es wieder als Anwesend angezeigt, dafür wird dann aber das Iphone 5 als Abwesend angezeigt, obwohl es im Wlan ist. Hat das schon einer etwas ähnliches beobachtet oder vielleicht eine Idee, woran das liegen kann. Ich weiss mir keinen Rat mehr.

Benutzeravatar
seppy
Beiträge: 738
Registriert: 24. Sep 2015 20:25
Answers: 4
Wohnort: Bonn

Re: Präsenzerkennung (iPhone) via WLAN

Beitrag von seppy »

Hi,

ich konnte keine Unterschiede in den iPhone Generationen beobachten. WLAN muss natürlich angeschaltet bleiben. Was ich allerdings nicht sagen kann, ob evtl. die iOS Version Einfluss hat. Welche iOS Version nutzt Du?

Gruß,
Seppy
Homematic und HomematicIP über Raspberrymatic (RaspPi 4 4GB) mit 2x HMLAN. Steuerung und Visualisierung durch OpenHAB2 auf RaspPi in Hutschienengehäuse im Sicherungskasten. Rund 100 Aktoren/Sensoren

- Abgesichert durch APC USV
- Bewässerungssteuerung mit Hunter Magnetventilen (HM-LC-Sw4-DR)
- Beleuchtungssteuerung Innen und Aussen (HM-LC-Sw4-DR + HM-LC-SW1-FM + HMW-IO-12-SW7-DR)
- Rolladensteuerung mit Beschattungsautomatik über Temperaturdifferenzsensor (HM-LC-Bl1PBU-FM)
- Wetter und Unwetterinformationen von wunderground
- Benachrichtigung der Bewohner via Pushover
- Multimediawand und Dreambox Steuerung (HM-LC-SW1-FM)
- Heizungssteuerung mit Komfort und Energiesparfunktionen (HM-CC-RT-DN + HM-Sec-SC-2 + HMIP-eTRV-2)
- Werkstatt Kompressorsteuerung (HMW-IO-12-SW7-DR)
- Weihnachtsbeleuchtung außen
- Präsenzerkennung über Geolocation (iCloud Binding), iBeacon und WLAN (Unifi Binding)
- Philips HUE & Tasmota Devices (Tuya) Einbindung

jaccolino
Beiträge: 6
Registriert: 17. Feb 2016 09:13

Re: Präsenzerkennung (iPhone) via WLAN

Beitrag von jaccolino »

Hallo,

erst mal vielen Dank für die schnelle Antwort.

Hab nun gerade gesehen, jetzt haben beide Abwesend, obwohl den ganzen Tag Wlan an war und beide Handys zu Hause sind und am selben Platz liegen.
Das Iphone 5 hat IOS 8.1.3, das Iphone 6 IOS 8.3.
Das IPhone 5 ist sofort auf anwesend gesprungen, als ich eben nach dem IOS geschaut habe, das IPhone 6 ist immer noch abwesend, obwohl ich auch gerade in Whatsapp geschrieben habe.
Kann es sein, dass das "wecken" nicht funzt?

Berichtigung: Jetzt hat sich auch das Iphone 6 auf Anwesend gestellt, hat eben nur ne lange Leitung scheinbar.

Gruss Jaccolino

Benutzeravatar
seppy
Beiträge: 738
Registriert: 24. Sep 2015 20:25
Answers: 4
Wohnort: Bonn

Re: Präsenzerkennung (iPhone) via WLAN

Beitrag von seppy »

Hallo,

ich würde mal das Script auf der Console ausführen und mir die Rückmeldung anschauen.

Viele Grüße,
Seppy
Homematic und HomematicIP über Raspberrymatic (RaspPi 4 4GB) mit 2x HMLAN. Steuerung und Visualisierung durch OpenHAB2 auf RaspPi in Hutschienengehäuse im Sicherungskasten. Rund 100 Aktoren/Sensoren

- Abgesichert durch APC USV
- Bewässerungssteuerung mit Hunter Magnetventilen (HM-LC-Sw4-DR)
- Beleuchtungssteuerung Innen und Aussen (HM-LC-Sw4-DR + HM-LC-SW1-FM + HMW-IO-12-SW7-DR)
- Rolladensteuerung mit Beschattungsautomatik über Temperaturdifferenzsensor (HM-LC-Bl1PBU-FM)
- Wetter und Unwetterinformationen von wunderground
- Benachrichtigung der Bewohner via Pushover
- Multimediawand und Dreambox Steuerung (HM-LC-SW1-FM)
- Heizungssteuerung mit Komfort und Energiesparfunktionen (HM-CC-RT-DN + HM-Sec-SC-2 + HMIP-eTRV-2)
- Werkstatt Kompressorsteuerung (HMW-IO-12-SW7-DR)
- Weihnachtsbeleuchtung außen
- Präsenzerkennung über Geolocation (iCloud Binding), iBeacon und WLAN (Unifi Binding)
- Philips HUE & Tasmota Devices (Tuya) Einbindung

jaccolino
Beiträge: 6
Registriert: 17. Feb 2016 09:13

Re: Präsenzerkennung (iPhone) via WLAN

Beitrag von jaccolino »

Hallo,

den Gedanken hatte ich vorhin auch schon. Dabei zeigt sich zumindest, dass bei dem IPhone 6 was nicht stimmt.

Hier mal die Ausgaben:

IPhone 5 arp -an | awk '{print $0}'

(192.168.6.42) at (incomplete) on en1 ifscope [ethernet]
(192.168.6.43) at c0:f2:fb:c9:9c:a6 on en1 ifscope [ethernet]

IPhone 6 arp -an | awk '{print $4}'

(incomplete)
c0:f2:fb:c9:9c:a6

Zu diesem Zeitpunkt der Abfrage müsste das IPhone 5 Anwesend angezeigt werden, tut es aber nicht. Im Logfile steht es auf off.
Jetzt, 1 Minute später, sieht es so aus

? (192.168.6.42) at (incomplete) on en1 ifscope [ethernet]
? (192.168.6.43) at (incomplete) on en1 ifscope [ethernet]

und

(incomplete)
(incomplete)

Lg Jaccolino

Benutzeravatar
Cyrelian
Beiträge: 601
Registriert: 24. Sep 2015 17:55
Answers: 4

Re: Präsenzerkennung (iPhone) via WLAN

Beitrag von Cyrelian »

Hi Jaccolino,

erstmal willkommen im Forum ;) .

Ich hab mal bei mir geschaut. Ich habe 2x iPhone 6 (mit IOS 9.2.1) und einmal iPhone 5 (mit IOS 9.2.1). Bis auf einen Aussetzer neulich Nacht läuft die Erkennung bisher tadellos.
Der Aussetzer neulich, deckt sich aber fast mit deiner Ausführung. Der einzige unterschied war, dass das iPhone 6 nach ein paar Minuten wieder "anwesend" war.
Ich habe dann mal alles aus dem Arp Cache gelöscht und seit dem gab es bisher keine Probleme mehr.

Nur mal so zur Sicherheit: Dein hping3 geht aber durch oder? Das Problem hatte ich Anfangs nämlich.

Ich hab dann die

Code: Alles auswählen

/etc/sudoers
bearbeitet und

Code: Alles auswählen

www-data ALL=(ALL) NOPASSWD: ALL

openhab ALL=(ALL) NOPASSWD: ALL
eingetragen

CU
Cyrelian

jaccolino
Beiträge: 6
Registriert: 17. Feb 2016 09:13

Re: Präsenzerkennung (iPhone) via WLAN

Beitrag von jaccolino »

Hallo,

genau das war es, da bin ich heute nacht auf drauf gestossen. Der Eintrag war falsch. liegt bei mir daran, dass mein Server manchmal den Hostnamen will und manchmal den Benutzer.
Nun scheint es zu funktionieren, als ich eben nach Hause kam und hoch ins Arbeitszimmer ging, war ich schon Anwesend, unterwegs hatte ich mal nachgesehen, ob ich Abwesend bin, stimmte.

Vielen Dank für die Hilfe!!!

Antworten