Präsenzerkennung (iPhone) via WLAN

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

onkelbobby
Beiträge: 4
Registriert: 7. Apr 2016 20:55

Re: Präsenzerkennung (iPhone) via WLAN

Beitrag von onkelbobby »

Hallo Seppy, Hallo Cyrelian,

vielen Dank für Eure Hilfe. Ich hatte gestern Abend alles nochmal alles neu geschrieben und siehe da, es funktioniert :-)
Mein Fehler war im cronjob ... da hatte ich die irgendetwas in der falschen Reihenfolge.

Ich hab nun zwei Handys als Schalter angelegt und diese werden auch automatisch auf ON und OFF gesetzt.

Um diese Anwesenheitserkennung nutzbar zu machen habe ich die Presence rule vom openHAB Wiki https://github.com/openhab/openhab/wiki ... nestablets eingesetzt und entsprechend angepasst. Vom openHAB Designer bekomme ich nun leider immer folgende Fehlermeldung und finde keine Lösung diese weg zu bekommen.
Bildschirmfoto 2016-04-18 um 22.52.32.png
folgende libraries habe ich bereits eingebunden:

Code: Alles auswählen

import org.openhab.core.library.types.*
import org.openhab.core.persistence.*
import org.openhab.model.script.actions.*
import org.joda.time.*
doch leider hilft das auch nichts...
Habt Ihr vielleicht noch ne Idee, woran es liegen könnte?

Danke und Grüße
Bobby
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

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

Re: Präsenzerkennung (iPhone) via WLAN

Beitrag von Cyrelian »

Hi Bobby,

ich habe den gleichen Fehler im Designer..aber in einer anderen Rule

Code: Alles auswählen

OnTime = createTimer(now.plusSeconds(3))
Der Designer meckert zwar, aber bei mir läuft das trotzdem. Probier´s mal aus, bin mir ziemlich sicher, dass das läuft :D

CU
Cyrelian

emdox
Beiträge: 1
Registriert: 23. Jul 2017 11:15

Re: Präsenzerkennung (iPhone) via WLAN

Beitrag von emdox »

Hallo erstmal,

das ist mein erster Beitrag hier im Forum, bin auf der suche nach genau so einer Präsenzerkennung für mein iPhone 5s hier gelandet - google sei dank ;)

Ich bin euren Anleitungen gefolgt, leider ohne Erfolg...
Ich bin nicht all zu bewandert mit Linux, wusste aber dennoch das Kali-Linux für die ersten Schritte schon alles vorinstalliert mitbringt. Mein Ziel ist es das ganze mal später auch auf einem pi laufen zu lassen.. ich wollte aber dennoch erstmal sehen ob ich zuverlässig mein IPhone pingen kann. ALso Ohne cronjob oder regeln usw. ich wollte einfach nur das Herzstück eures "tools" testen. Also das Script an sich.
Also habe ich:

0. In meiner Fritz.box dem Iphone eine feste IP gegeben.
1. Kali auf einem vm (virtualbox) installiert - später habe ich das ganze auch auf einer lubuntu vm versucht
2. die Scripts von euch erstellt
3. die entsprechenden Daten eingegeben (ip,mac)
4. auch überprüft auf welchen interface die vm arbeitet (eth0)

5. Die Scripts per Hand in der Console gespamt...

...leider bekomme ich immer die Rückmeldung das mein IPhone nicht zu finden ist... egal wie oft ich spame
Selbst wenn sich das IPhone nicht im Sleep-Modus befindet, ist das Ergebnis immer: "Abwesend"

Jetzt Frage ich mich ob vielleicht durch ein neueres IOS oder ähnliches diese Herangehensweise nicht mehr funktioniert oder oder oder ....
wäre cool wenn mir jemand helfen könnte.

lg
emdox

Benutzeravatar
alkaline
Beiträge: 173
Registriert: 20. Apr 2017 13:25

Re: Präsenzerkennung (iPhone) via WLAN

Beitrag von alkaline »

Damit hatte ich auch angefangen, das ganze hat jedoch einen entscheidenden Haken: Dein iPhone geht irgendwann in den Ruhemodus und damit ist deine Erkennung hinüber. Mit dem Wissen eines Ruhemodus gibt es noch ein anderes Problemchen:
Solltest du in Abhängigkeit der Erkennung irgendwas steuern wollen, nehmen wir mal den Radio, Fernseh oder andere Sachen wie Heizung, dann gehen die Sachen einfach aus, wenn sich dein Telefon schlafen legt....sehr schlecht für den WAF.
Oder du gehst mit deinem Telefon schnell in den Keller und zack, gehen deine Geräte aus. :(

Ich empfehle daher eine doppelte Erkennung, zum einen aus WLAN / Wifi und zum anderen entweder Bluetooth oder zonale Erkennung einer Area, etwa mit Location, Locomotive oder einem anderen Tracker. ich habe das ganze für zwei Personen gemacht, ein hinzufügen weiterer Personen ist in wenigen Minuten erledigt.

Wenn Interesse besteht dann erkläre ich das mal.

emdoxn
Beiträge: 1
Registriert: 23. Jul 2017 00:22

Re: Präsenzerkennung (iPhone) via WLAN

Beitrag von emdoxn »

Eine Erklärung wäre toll.

Aber hast du auch eine Idee woran das liegt das ich mein IPhone mit den Scripts überhaupt nicht erreiche ? Selbst wenn ich es gerade benutze ?
Ein normaler Ping geht aber durch, also natürlich nur während in Benutzung....

lg

Benutzeravatar
alkaline
Beiträge: 173
Registriert: 20. Apr 2017 13:25

Re: Präsenzerkennung (iPhone) via WLAN

Beitrag von alkaline »

Arbeitsweise wie folgt:
Es laufen 4 Sensoren für die Erkennung: zwei lokale mittels Wifi, zwei "Area Sensoren" (ca. 500 m um die Whg / Haus herum)
Ist kein Sensor aktiv läuft ein Timer an, Hauptstatus gpresent ist OFF.
Ist ein Sensor aktiv wird der jeweilige Timer ausgeschaltet, der Hauptstatus "gpresent" wird auf ON gesetzt

Vorbereitung:

1. IFTTT Konto erstellen und anmelden
1a. In IFTTT zwei Widget's anlegen: eines "Verlassen der Area" und eines "Betreten der Area". Beide arbeiten mit iOS "Location"
Manage Applets - IFTTT.png
Turn Presence on when entering your home area - IFTTT.png
2. IFTTT App auf Handy installieren und Konto konfigurieren, Abfragen durch iOS zulassen
3. OpenHAB Cloud Service einrichten (lokal auf deinem Server)
Du musst die beiden Schalter "Person1_loc und Person2_Loc (hier im Bild mit "Alex_Loc" bezeichnet) in die OH Cloud Config eintragen.
Paper UI.png
4. Auf myopenhab.org anmelden und Applikation IFTTT zulassen
--> siehe nächsten Kommentar, sieht so aus als ob man nur 3 Screenshots in einen Kommentar schreiben darf (Kann man das ändern?= Eher lästig, oder?)

presense_detection.items:

Code: Alles auswählen

// IFTTT Detection using Location 
// presense Detection using Wifi only is not working good enough therefore IFTTT Applet in addition 

// Optionally one can create additional groups to aggregate all the sensors for
// each person if that matters to you, but the sensors need to all be members of
// gPresent as well
Switch Present "Jemand zuhause" <present>  // Master presence switch
Group:Switch:AND(OFF,ON) gPresent <present>	(Whg)	// all presence sensors belong to this group
Switch Present_Timer { expire="3m,command=OFF" }

Group:Switch:AND(OFF,ON) gPerson1Present <present> 
Switch Person1_Present 	"Person1"	<present> 	// Master Person1 present switch
Switch Person1_Present_Timer { expire="2m,command=OFF" }

Group:Switch:AND(OFF,ON) gPerson2Present <present>	
Switch Person2_Present 	"Person2"	<present>  // Master Person2 present switch
Switch Person2_Present_Timer { expire="2m,command=OFF" }

Switch Person1_iphone 	"Person1 iPhone"	(gPresent,gPerson1Present)	{fritzboxtr064="maconline:11-22-33-44-55-66"}
Switch Person1_Loc 		"Person1 Area"		(gPresent,gPerson1Present)

Switch Person2_iphone 	"Person2 iPhone"	(gPresent,gPerson2Present)	{fritzboxtr064="maconline:11-22-33-44-55-66"}
Switch Person2_Loc 		"Person2 Area"		(gPresent,gPerson2Present)	
presense_detection.rules

Code: Alles auswählen

import org.eclipse.xtext.xbase.lib.Functions

val String filename = "presense_mobiles.rules"

val Functions$Function3 <GroupItem, SwitchItem, SwitchItem, Boolean> processPresence = [grp, sw, timer |
    // someone came home
    if(gPresent.state == ON && Present.state != ON) {
        Present_Timer.postUpdate(OFF) // cancel the timer if necessary
        Present.sendCommand(ON)
        //sendBroadcastNotification(sw.label + " returned home")
    }
    // nobody at home
    else if(gPresent.state == OFF && Present.state != OFF) {
        Present_Timer.sendCommand(ON) // start the timer
    }
    true
]

val Functions$Function1 <SwitchItem, Boolean> processTimer = [sw |
    Present.sendCommand(OFF)
    //sendBroadcastNotification(sw.label + " has left home")
    true
]

rule "System started"
when
    System started
then
    // assume no one is home on startup
    Present.sendCommand(OFF) 
    Person1_Present.sendCommand(OFF)
    Person2_Present.sendCommand(OFF)
    Person1_Loc.sendCommand(OFF)
    Person2_Loc.sendCommand(OFF)
end

rule "gPresent updated, at least one sensor changed state"
when
    Item gPresent received update
then
    processPresence.apply(gPresent, Present, Present_Timer )
end

rule "gMPerson1Present updated, at least one sensor changed state"
when
    Item gPerson1Present received update
then
    processPresence.apply(gPerson1Present, Person1_Present, Person1_Present_Timer )
end

rule "gPerson2Present updated, at least one sensor changed state"
when
    Item gPerson2Present received update
then
    processPresence.apply(gPerson2Present, Person2_Present, Person2_Present_Timer )
end

rule "Present_Timer expired"
when
    Item Present_Timer received command OFF
then
    processTimer.apply(Present)
end

rule "Person1_Present_Timer expired"
when
    Item Person1_Present_Timer received command OFF
then
    processTimer.apply(Person1_Present)
end

rule "Person2_Present_Timer expired"
when
    Item Person2_Present_Timer received command OFF
then
    processTimer.apply(Person2_Present)
end

Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von alkaline am 24. Jul 2017 08:01, insgesamt 2-mal geändert.

Benutzeravatar
alkaline
Beiträge: 173
Registriert: 20. Apr 2017 13:25

Re: Präsenzerkennung (iPhone) via WLAN

Beitrag von alkaline »

Zu 4. Auf myopenhab.org anmelden und Applikation IFTTT zulassen
openHAB Cloud - Applications.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Antworten