GEOFANCY, iBeacon -> Zeitversatz

Begonnen von MikeR, 14 Oktober 2018, 20:10:46

Vorheriges Thema - Nächstes Thema

MikeR

Hallo,

ich schildere erst mal kurz was ich mache, bzw. warum ich das tue...

Meine primäre Homeautomation ist EIB/KNX, ich benutze verschiedene Raspberrys als Gateways von und zu KNX, z.B. für ZWave.
Nun möchte ich die Funktionalität "beim nach Hause kommen" verbessern, da ich bisher Single war, war einfach ein "Jemand öffnet von außen die Wohnungstür" (Tür wird geöffnet, Bewegungsnmelder im Flur meldet KEINE Bewegung), das Signal eine Statusmeldung per Text-to-Speech abzuspielen, also wie viele Anrufe in Abwesenheit es gab, wieviele FAXe eingegangen sind, wie viele eMails und bei allem auch von wem die Kommunikation ist. Hat bisher einfach so funktioniert...

Nun ist es komplizierter geworden, weil ich eine Frau in der Wohnung habe.  ;)

Natürlich soll ein Wohnungsbetreter nicht mit dem Meldungen für den anderen "belästigt" werden. Also brauche ich ein "wer kommt gerade nach Hause"-Merkmal. Das wollte ich über die iOS-App "Geofancy" und das Modul "GEOFANCY" auf einem Raspberry mit FHEM abbilden. Der Raspberry sendet über's KNX-Gateway wer gerade heim kommt, die Info wird nach 15 Sekunden wieder gelöscht und bleibt auch gelöscht, bis betreffende Geofancy-App erst ein Abwesend gesendet hat. So gewährleiste ich, das wenn einer heim kommt und schon einer zuhause ist, trotzdem nur die Meldungen für den Heimkommer an der Wohnungstür angesagt.

Soweit funktioniert das alles. Der Raspi als iBeacon tut, Geofancy (App) bekommt das iBeacon mit und sendet per Webhook an das GEOFANCY-Modul...
...blöderweise aber mit rund 70-90 Sekunden Verzögerung. Bis dahin ist längst keiner mehr im Eingangsbereich um die Meldungen anzuhören!!! An der Kommunikation Geofancy-App zu GEOFANCY-Modul zu -App kann es nicht liegen, steige ich in meinem Stockwerk aus dem Aufzug aus und benutze sofort den Testknopf in den Webhook-Einstellungen der App, kommt nahezu synchron die Meldung innen.

Mein Problem ist also ein Timing-Problem zwischen dem Erkennen des iBeacon-Raspberry-Signals (Der BT-Dongle am Raspberry ist direkt innen neben der Tür versteckt) und dem "Zünden" des Webhooks.

Funktioniert so ein Beacon den wie ein echter Leuchtturm und schickt quasi Impulse mit längeren Wartezeiten (wie beim Leuchtturm die Wiederkehr des Lichtkegels nach 360°), oder ist das sozusagen ein permanentes Plappern. Sprich: Könnte man im Raspi-Beacon die Impulszeit verkürzen?

Oder hat sonst jemand eine Idee woran es liegen, oder wie man das Problem sonst lösen könnte???

Herzlichen Dank schonmal und schönen Rest-Sontag
Mike

Jamo

#1
Hi Mike,
Die Beobachtung / das Problem habe ich auch.
Der iBeacon schickt Impulse im ms Bereich (etwa alle 100ms einen Impuls bei den iBeacons die ich benutze BlueSenseNetworks). Daran liegt es also nicht. Und wenn man in Geofancy den 'Testknopf' drückt, wird ja auch nur die Verbindung / der Webhook an sich getestet.
Aber:
Wenn Geofancy erst verlässlich erkennen soll, ob ein iBeacon wirklich empfangen wurde, vergehen bei mir auch etwa 20 sekunden. Ich denke Geofancy wartet also erstmal, bis der iBeacon mehrere Male über einen längeren Zeitraum empfangen wurde, bis er das als 'sicher' erkennt.
Als kleine Abhilfe habe ich die iBeacons so eingestellt, das diese mit maximaler Leistung senden (und im 100ms Raster, das kann man auch einstellen), damit die presence Erkennung schon in grösserer Entfernung beginnt. Das hat ein wenig geholfen, allerdings dauert es damit auch länger, bis ein 'abwesend' erkannt wird.

Was schneller funktioniert, ist das umgekehrte: Ein Siemens GTAG am Schlüsselbund (also quasi den iBeacon am Schlüsselbund), der über eine lepresenced instanz in FHEM (also der Empfänger mit einem BTLE dongle am Raspi) erkannt wird.

Beste Grüsse
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Markus M.

Zitat von: MikeR am 14 Oktober 2018, 20:10:46Oder hat sonst jemand eine Idee [...] wie man das Problem sonst lösen könnte???
Du machst es erst mal so wie bisher wenn niemand zuhause ist, nur dass als zusätzliche Bedingung dein Telefon in der Home Zone sein muss. Oder du nimmst einen Taster.

Und erst wenn du explizit nach der Funktion gefragt wirst, machst du dir weitere Gedanken, wie man das automatisiert für mehrere Personen umsetzen kann.  ;)
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

MikeR

#3
@inoma:
Jepp, vielen Dank. Habe zwei Beacons/Tags besorgt, zweimal ein PRESENCE-Object eingerichtet, mit jeweils einem Aufruf für den lepresenced, natürlich bei beiden PRESENCE Modulen der richtigen BT-MAC. Das funktioniert mit beiden Tags getrennt super gut, also zeitnah genug damit das Tag "auslöst" bevor ich die Tür öffne. Allerdings funktioniert das nicht zeitnah genug, wenn meine Frau und ich beide jeweils mit dem eigenen Tag "bewaffnet" gemeinsam nach Hause kommen. Dann wird immer nur meine Frau erkannt.  :(

Kann man da noch irgendwo was drehen, oder liegt das schlicht daran das ich zwei PRESENCE-Objekte nehme, die den gleichen lepresenced rufen?

@Markus M.:
Taster ist nicht optimal, weil ich ja bei einer vernünftigen Home-Automation davon weg will, so weit es geht. Und kurz nach meinem Post wurde ich "natürlich" gefragt, wann das den endlich geht "das die Wohnung uns beide einzeln erkennt".

LG
MIKE

Jamo

Eigentlich verstehe ich nicht wieso nur ein GTag erkannt wird, wenn Ihr beide reinkommtkommt. Kann eigentlich nicht sein.
Ich habe insgesamt 5 GTags, und die werden immer alle erkannt.
Bleibt dann dein Presence Object immer auf 'absent'? Also nachdem deine Frau reinkommt, wird dein GTAG gar nicht mehr erkannt?
Ansonsten ist es wohl immer so, das das sende-staerkere GTag Beacon zuersterkannt wird, das sende-schwaechere dann als zweites.
Magst Du mal die Definition von deinen PRESENCE-Objekten posten?
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

MikeR

Ähm, ne sorry. Da hab ich mich unpräzise ausgedrückt. Es werden schon beide Tags erkannt. Nur eben das von meiner Frau wird, wenn wir beide heim kommen, "rechtzeitig" erkannt und meines nicht. Kommen wir solo heim, dann werden wir auch direkt erkannt. Von der Reichweite her auch mit ca. zwei bis drei Meter "Puffer".

Die Definition von "meiner Frau":
defmod TagTanja PRESENCE lan-bluetooth AC:23:3F:26:59:A0 127.0.0.1:5333

setstate TagTanja present
setstate TagTanja 2018-11-06 18:35:10 .absenceThresholdCounter 0
setstate TagTanja 2018-11-06 18:35:10 .presenceThresholdCounter 0
setstate TagTanja 2018-11-01 20:05:11 command_accepted yes
setstate TagTanja 2018-11-06 18:35:10 daemon lepresenced V0.83
setstate TagTanja 2018-11-06 18:35:10 device_name (unknown)
setstate TagTanja 2018-11-06 18:35:10 model lan-lepresenced
setstate TagTanja 2018-11-06 18:35:10 presence present
setstate TagTanja 2018-11-06 18:35:10 rssi -64
setstate TagTanja 2018-11-06 18:35:10 state present


...und die von "Mir":
defmod TagMike PRESENCE lan-bluetooth C2:00:D3:00:00:42 127.0.0.1:5333

setstate TagMike present
setstate TagMike 2018-11-06 18:36:11 .absenceThresholdCounter 0
setstate TagMike 2018-11-06 18:36:11 .presenceThresholdCounter 0
setstate TagMike 2018-10-31 16:34:45 command_accepted yes
setstate TagMike 2018-11-06 18:36:11 daemon lepresenced V0.83
setstate TagMike 2018-11-06 18:36:11 device_name MikeTag00000
setstate TagMike 2018-11-06 18:36:11 model lan-lepresenced
setstate TagMike 2018-11-06 18:36:11 presence present
setstate TagMike 2018-11-06 18:36:11 rssi -70
setstate TagMike 2018-11-06 18:36:11 state present

Jamo

#6
OK, ich denke es ist so:
Du hast 2 Presence devices, die ja immer immer im 'check_interval' (kann man bei der Definition im Modul mit übergeben ), den lepresenced abfragen. Deine beiden Devices laufen (da kein check interval explizit  angegeben) mit dem gleichen default Interval los.  Da FHEM nach dem starten die Devices seriell prozessiert, kommt nun mal das eine von dener Frau immer zuerst dran. Bei dem ausgeführten check 'blockiert' oder started le-presenced dann den bluetooth scan kurzfristig, nach der Freigabe vom bluetooth scan ist dann das andere Device von Dir dran.

Wenn es so ist, dann gibt es wohl dafür keine richtige Lösung, aber Du kannst folgendes machen / probieren:

- Ich vermute, wenn du die Reihenfolge der Devices in der FHEM.cfg umdrehen würdest (default interval bleibt), kommst Du zuerst dran :-)
  (oder renamen, man sollte die fhem.cfg ja nicht direkt editieren - Du kannst aber einfach mal die BT MAC mal gegeneinander vertauschen).

- Du kannst das check_interval der Devices gegeneinander leicht verschieben, also sagen wir mal das eine 59 Sekunden, das andere 61 Sekunden (oder 31 / 30 oder so was, also AC:23:3F:26:59:A0 127.0.0.1:5333 30 und C2:00:D3:00:00:42 127.0.0.1:5333 31). Dann laufen beide Checks immer leicht voneinander weg, dann kommt Ihr wahrscheinlich immer abwechselnd dran.

- Alternativ könntest Du deine beiden Presence devices mit einem Watchdog verknüpfen, und erstmal warten, ob innerhalb von x Sekunden auch das andere Gtag erkannt wird.

- Mal den Maintainer vom le-presenced fragen, ob man nicht mehrere BT-adressen gleichzeitig an le-presenced übergeben kann.

Ansonsten ist mir noch aufgefallen:
1) Du hast lepresenced V0.83, es gibt mitlerweile einen lepresenced V0.9 - wird aber keinen Unterschied machen
2) Dein rssi ist schwächer, vielleicht mal die Batterie wechseln (ich weiss nicht ob eine volle Batterie die Sendeleistung erhöht), oder heimlich das Gtag von deiner Frau austauschen gegen deins :-)

Du kannst ja mal berichten. Aber sag mal, deine Frage war nur interessehalber, weil das ist ja eigentlich kein Problem, oder?

Beste Grüsse!
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

MikeR

#7
Zitat- Du kannst das check_interval der Devices gegeneinander leicht verschieben, also sagen wir mal das eine 59 Sekunden, das andere 61 Sekunden (oder 31 / 30 oder so was, also AC:23:3F:26:59:A0 127.0.0.1:5333 30 und C2:00:D3:00:00:42 127.0.0.1:5333 31). Dann laufen beide Checks immer leicht voneinander weg, dann kommt Ihr wahrscheinlich immer abwechselnd dran.

Das teste ich mal! Klingt plausibel.

Zitat- Mal den Maintainer vom le-presenced fragen, ob man nicht mehrere BT-adressen gleichzeitig an le-presenced übergeben kann.

Auch eine Möglichkeit. Könnte mir auch mal die Sourcen davon angucken. Aus dem aktiven "Programmiergeschäft" bin ich schon länger raus, aber "lesen" sollte noch halbwegs gehen.

ZitatDu hast lepresenced V0.83, es gibt mitlerweile einen lepresenced V0.9 - wird aber keinen Unterschied machen

Oh, hab's über das Raspian Repository installiert, meine ich. Wenn dem so ist, dann ist das noch gar nicht so lange her. Seltsam

ZitatDein rssi ist schwächer, vielleicht mal die Batterie wechseln (ich weiss nicht ob eine volle Batterie die Sendeleistung erhöht), oder heimlich das Gtag von deiner Frau austauschen gegen deins :-)

Keine gute Idee, Frauen sind bei sowas immer ziemlich schnell pissig. Also wenn man ihnen was weg nimmt. ;-)

ZitatDu kannst ja mal berichten. Aber sag mal, deine Frage war nur interessehalber, weil das ist ja eigentlich kein Problem, oder?

In wiefern kein Problem? Also Leben hängt nicht davon ab! :) Zielsetzung der Aktion ist aber, wie ganz oben erwähnt, das personenabhängige Statusmeldungen beim Betreten der Wohnung "vorgelesen" (angesagt) werden. Eben wer von uns beiden seit dem Weggehen FAXe oder Anrufe in Abwesenheit bekommen hat, welche Pflanzen mal wieder gegossen werden müssten (macht meine Frau) usw. Oder auch bestimmt Lichthelligkeiten als Defaults für die Bewegungsmeldersteuerung (ich bin eher eine "Es werde LIcht" und meine Frau ein "Kellerkind"). Wenn man Unterscheiden kannwer gerade rein kommt und natürlich auch wer insgesamt daheim ist und wer nicht, dann ergeben sich für eine Home-Automation ganz neue Möglichkeiten. Ggf. auch sowas wie Rufumleitungen vom Festnetz auf's Handy, nur dann wenn jemand wirklich nicht daheim ist (falls man das mit der Fritzbox als Steuerung von FHEM auis hinbekommt), als fiktives Beispiel.

LG
MIke

MikeR

Öhm, hab grad mal in den PRESENCE-Objekten geguckt. Finde da gar kein Attribut "check_interval"?
Oder bin ich blind?

Jamo

Also den 0.9 als perl script findest Du hier: https://svn.fhem.de/trac/export/HEAD/trunk/fhem/contrib/PRESENCE/lepresenced,
In der Commandref nach "Der le presenced ist zum Download verfügbar als:" suchen

Bei mir ist es so, das ich die anwesenden Personen nur abfrage, wenn alle in der Wohnung sind, also über zusätzliche Logik, noch einen optischen Tuerkontakt:
- Abwesend -> alle sind weg (Startwert)
- Tuer geht auf -> Jemand kommt
- Tuer ist zu -> 'Alle' sind drin
- Anwesenheitscheck -> Anzahl der Personen ermitteln die reingekommen sind.

Erst dann starte ich die personenabhängigen Aktionen.

Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Jamo

-> Attribut "check_interval"? <-

Die Gtag laufen doch mit Presence lan-bluetooth, das sieht dann so aus:
define <name> PRESENCE lan-bluetooth <Bluetooth-Adresse> <IP-Adresse>[:Port] [ <Interval> ]
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

MikeR

Oh Mann :-[
"defmod" war das Zauberwort. Dabei habe ich es sogar aus der RAW-Definition noch rauskopiert. Die Sache mit dem Wald und den Bäumen...

Danke schön

MikeR

So, Intervall geändert. Und auch die aktuelle lepresenced Version installiert. Jetzt muss ich morgen nur noch gleichzeitig mit meiner Frau heim kommen...

Nochmal vielen Dank für die Mühe
Mike

Jamo

Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

MikeR

Ach Mist, sorry. Völlig verpeilt.
Also, so mit dem Zeitversatz durch die unterschiedlichen Intervallängen geht es.
Hatte in der Testzeit ein oder zwei "Aussetzer", aber das waren dann statistisch unter 1%. Da kann ich prima mit leben, weil es ja keine Sicherheitsanwendung ist.

Herzlichen Dank noch mal für die Tipps und konstruktiven Ideen
Mike