Geofencing Modul für Geofency.com und Geofancy.com

Begonnen von Loredo, 07 Januar 2014, 16:57:26

Vorheriges Thema - Nächstes Thema

FunkOdyssey

Ich habe die Anleitung auch ausprobiert. Ziemlich kompliziert, wenn es beim RasPi doch eigentlich so einfach ist. Auch nach nem Reboot: leider keinen Erfolg. Ich habe auch immer noch die zwei Stunden Zeitversatz.

volschin

Warum komplizierte Anleitungen und nicht den offiziellen Weg über raspiconfig?
Intel NUC+Ubuntu 24.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7690, Echo Dots+Show8, HomeBridge

FunkOdyssey


Loredo

#303
Dann habe ich die steile These, dass ihr weder Geofency noch Geofancy (aka Copycat #1) als App benutzt, sondern eine der anderen Copycats.
Beim Nachbau der Geofency API hat der Entwickler dann möglicherweise übersehen, dass das date-Feld ein ISO8601-konformes Zeit-/Datums-Format mit UTC Zeitzone erwartet und nicht mit der lokalen Zeitzone. Dafür steht das Z am Ende des Timestamps, siehe mein Beispiel von vorhin:



id:98787897-DDDD-CCCC-BBBB-AAAAAAA name:XYZ trig:0 date:2015-07-01T06:52:38Z lat:xxx long:yyy dev:Julian



Siehe dazu Wikipedia:
https://de.wikipedia.org/wiki/ISO_8601#Zeitzonen


Wenn ich damit richtig liegen sollte, dann müsst ihr die Entwickler eurer Apps bitten das zu fixen.


Ich habe beide Apps, für die ich das Modul entwickelt habe (Geofency und Geofancy), gerade nochmals bei mir getestet.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

FunkOdyssey

Danke für den hilfreichen Hinweis. Ich hab es mal gemeldet.

no_Legend

Zitat von: Funk.Odyssey am 01 Juli 2015, 20:44:46
Ich habe die Anleitung auch ausprobiert. Ziemlich kompliziert, wenn es beim RasPi doch eigentlich so einfach ist. Auch nach nem Reboot: leider keinen Erfolg. Ich habe auch immer noch die zwei Stunden Zeitversatz.

In meinem Fall Läuft das ganze nicht auf einem Raspi.
Sondern auf eine Cubitruck mit Ubuntu.

Zitat von: Funk.Odyssey am 01 Juli 2015, 22:23:42
Danke für den hilfreichen Hinweis. Ich hab es mal gemeldet.

Bei welcher App hast du es gemeldet?
Docker FHEM immer aktuell,4x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
Homematic, Shelly, Tasmota, MQTT, Unifi Network usw.

C0mmanda

#306
Moin moin!

Stehe in Sachen Geofency und Fhem gerade leicht auf dem Schlauch....
Bin erst seit 2 Tagen mit Fhem beschäftigt und stehe gerade vor einem ziemlichen Problem...

Ich habe Geofency in Fhem eingerichtet und er zeigt mir auch brav an ob ich zuhause bin, im Büro oder unterwegs.

Was sich mir jetzt leider noch nicht erschliesst:
Wie kann ich das jetzt nutzen um weitere Aktionen in Gang zu setzen? z.B. Licht einzuschalten oder eine Push absetzen etc.?
Habe den ganzen Thread und auch das Wiki durchgewälzt, finde aber nichts dazu?! Vielleicht habe ich auch einfach nur Tomaten auf den Augen oder das ist für alte Hasen so selbstverständlich dass man es nicht erwähnen muss?!

Ich wäre jedenfalls unendlich dankbar wenn mir da jemand auf die Sprünge helfen könnte!

Folgendermaßen habe ich Geofancy konfiguriert:


##Geofency definieren + Aliase ###
define geofancy GEOFANCY geo
attr geofancy devAlias 9B5XXXX-07XX-4XXE-XXXX-XXXXC32B1CC:C0mmanda
attr geofancy room Unsorted

### WEBhook definieren Geofency FHEM-App ###
define WEBhook FHEMWEB 8099 global
attr WEBhook allowedCommands ,
attr WEBhook hiddenroom input,detail,save,Unsorted,Everything,CUL_HM,FS20,Commandref,style,Edit files,Select style,Logfile,Floorplans,Remote doc,FileLogs,Apartment,Bathroom,Bedroom
attr WEBhook room hidden
attr WEBhook webname webhook
attr WEBhook basicAuth { "$user:$password" eq "EinUserName:EinPasswort" }

#Anwesenheitserkennung C0mmanda

define C0mmanda.Zuhause notify geofancy:currLoc_C0mmanda:.Home set C0mmanda.homestatus Home
define C0mmanda.Unterwegs notify geofancy:currLoc_C0mmanda:.underway set C0mmanda.homestatus Unterwegs
define C0mmanda.Office notify geofancy:currLoc_C0mmanda:.Office set C0mmanda.homestatus Office

define n_C0mmanda.whereabout notify geofancy:currLoc_C0mmanda:.* set C0mmanda.whereabout $EVTPART1

#Dummies
define C0mmanda.homestatus dummy
attr C0mmanda.homestatus setList Home Unterwegs Office
define C0mmanda.whereabout dummy


Vielen Dank im voraus!

//EDIT

Habe es hinbekommen! :D
Da ist noch viel Übung gefragt wie mir scheint... :)

#Esszimmer_Stehlampe an wenn C0mmanda nach Hause kommt
define C0mmandaAnkunftAn1 notify C0mmanda.homestatus:Home.* { fhem ("set Esszimmer_Stehlampe on") if (Value("Esszimmer_Stehlampe") eq "off")}
define C0mmandaAnkunftAus1 notify C0mmanda.homestatus:Unterwegs.* { fhem ("set Esszimmer_Stehlampe off") if (Value("Esszimmer_Stehlampe") eq "on")}

Motivierte linke Hände

Hi!

Erstmal herzlichen Dank für das Modul - eine tolle Funktionalität in FHEM! Zwei kleinere Problemchen habe ich noch, ausgelöst damit, dass die Übermittlung (wie bei vielen hier) nicht immer ganz zuverlässig erfolgt:

1. Ich habe geofancy und geofency auf meinem iPhone installiert. "e" läuft. "a" gibt bei einem Request die Fehlermeldung aus: "GET Fehler: Request failed: unauthorized (491)". Interessant ist, dass von diesen Versuchen auch bei verbose=5 im Log NICHTS zu finden ist. Die Einstellungen sind dieselben, die bei Geofency funktionieren...
Gibt's da irgendwelche Tricks für Geofancy?

2. Ich habe auch Bluetooth-Anwesenheitserkennung über Raspi zu Hause. Aggregiert wird das Ganze (einschließlich fritzweb) über ein struc. Problem: Geofencing (app-neutral :-)) bringt manchmal komische Ergebnisse. Gleichzeitig geht das Handy irgendwann in den Schlaf, ist aus der Bluetooth-Zone raus... => Die Alternativen zum Geofancy-Modul funktionieren auch nicht immer. Um zumindest keine Abwesenheits-Aktionen auszulösen, wenn alle da sind, würde ich gerne als Sicherheit einbauen: Wenn Bluetooth das Handy zu Hause erkennt, soll der Status im Geofancy-Modul auf "zu Hause" gesetzt werden.

Kann ich dafür einfach

setreading geofancy currloc_[Name] Zu_Hause

verwenden? Oder mache ich damit irgendwas nachhaltig kaputt? Ich möchte die "persistente" Statusermittlung im Geofancy-Modul gerne auf Zu_Hause setzen, wenn das Handy sicher zu Hause ist (weil eine andere Erkennung angeschlagen hat).

Danke, Christian
FHEM 6 in einer KVM VM mit Ubuntu
HM-CFG-USB2, 2xHM-CFG-HMLAN, HM-HMUARTLGW mit 100+ HomeMatic Devices, Geofencing, Fritzbox, Unifi, HUE, Harmony-Hub, Denon-Receiver-Modul, Calendar, GardenaSmartDevice, Shelly, MQTT (zigbee2mqtt, Tasmota und Shelly) und ein wenig 1Wire.

Loredo

Zitat von: Motivierte linke Hände am 29 Juli 2015, 16:36:01
1. Ich habe geofancy und geofency auf meinem iPhone installiert. "e" läuft. "a" gibt bei einem Request die Fehlermeldung aus: "GET Fehler: Request failed: unauthorized (491)". Interessant ist, dass von diesen Versuchen auch bei verbose=5 im Log NICHTS zu finden ist. Die Einstellungen sind dieselben, die bei Geofency funktionieren...
Gibt's da irgendwelche Tricks für Geofancy?


Mir ist da nichts bekannt. Ich kanns auch grad nicht testen, Geofancy.app läuft unter iOS9 Beta aktuell nicht.


Zitat von: Motivierte linke Hände am 29 Juli 2015, 16:36:012. Ich habe auch Bluetooth-Anwesenheitserkennung über Raspi zu Hause. Aggregiert wird das Ganze (einschließlich fritzweb) über ein struc. Problem: Geofencing (app-neutral :-)) bringt manchmal komische Ergebnisse. Gleichzeitig geht das Handy irgendwann in den Schlaf, ist aus der Bluetooth-Zone raus... => Die Alternativen zum Geofancy-Modul funktionieren auch nicht immer. Um zumindest keine Abwesenheits-Aktionen auszulösen, wenn alle da sind, würde ich gerne als Sicherheit einbauen: Wenn Bluetooth das Handy zu Hause erkennt, soll der Status im Geofancy-Modul auf "zu Hause" gesetzt werden.Kann ich dafür einfachsetreading geofancy currloc_[Name] Zu_Hauseverwenden? Oder mache ich damit irgendwas nachhaltig kaputt? Ich möchte die "persistente" Statusermittlung im Geofancy-Modul gerne auf Zu_Hause setzen, wenn das Handy sicher zu Hause ist (weil eine andere Erkennung angeschlagen hat).


Kaputt nicht. Aber ich würde dir raten da nichts mit setreading künstlich in den Modulstatus zu schreiben. Besser wäre es wohl dein Structure Konstrukt entsprechend anzupassen. Ich selbst verwende keine Structure sondern Roommate, daher kann ich dir zu dieser Konstellation nicht viel sagen.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Motivierte linke Hände

Zitat von: Loredo am 02 August 2015, 11:34:42Kaputt nicht. Aber ich würde dir raten da nichts mit setreading künstlich in den Modulstatus zu schreiben. Besser wäre es wohl dein Structure Konstrukt entsprechend anzupassen. Ich selbst verwende keine Structure sondern Roommate, daher kann ich dir zu dieser Konstellation nicht viel sagen.

Ja, verstehe ich. Mir ist nur nicht so ganz klar, wie man das mit der Structure sinnvoll machen sollte. Natürlich könnte ich einen Dummy per notify auf Geofancy auf den Wert von Geofancy setzen und dann diesen Dummy in die Structure einbringen. Den Dummy könnte ich dann über einen weiteren notify auf den Bluetooth-Check ggf. anpassen. Scheint mir allerdings ein wenig komplex für die doch recht simple Anwendung hier... Ich ändere mal das Reading direkt und beobachte mal, ob's zu Problemen führt.

Danke, Christian
FHEM 6 in einer KVM VM mit Ubuntu
HM-CFG-USB2, 2xHM-CFG-HMLAN, HM-HMUARTLGW mit 100+ HomeMatic Devices, Geofencing, Fritzbox, Unifi, HUE, Harmony-Hub, Denon-Receiver-Modul, Calendar, GardenaSmartDevice, Shelly, MQTT (zigbee2mqtt, Tasmota und Shelly) und ein wenig 1Wire.

Loredo

#310
Zitat von: Motivierte linke Hände am 03 August 2015, 11:59:46
Ja, verstehe ich. Mir ist nur nicht so ganz klar, wie man das mit der Structure sinnvoll machen sollte.


Aus diesem Grund (und anderen) nutze ich keine Structure, sondern habe stattdessen das ROOMMATE Modul geschrieben.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Loredo

Ich habe gerade eine neue Version des Moduls mit verbesserter Input Validation eingecheckt, um Abstürze bei falsch übermittelten Werten zu verhindern (siehe http://forum.fhem.de/index.php/topic,39832.0.html).


Je nachdem, ob man seinen Webhook durch unautorisierten Zugriff richtig geschützt hat oder nicht, kann das Relevant für die Sicherheit sein. Ich empfehle deshalb jedem ein Update des Moduls.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

FunkOdyssey

Ich muss hier noch einmal nachfragen. Die Entwickler der FHEM App sind fleissig am fixen. Dennoch habe ich ein Problem mit dem Zeitversatz. Nun wurde mir mitgeteilt, dass dies wohl doch evtl. an Geofancy-Modul liegen könnte, da die Zeit richtig übermittelt wird.

Ich zeige euch mal das Log:
2015-08-13_10:43:59 geofancy id:Arbeit name:Arbeit trig:0 date:2015-08-13T10:43:59Z lat:51.00000 long:6.00000 dev:Julian
2015-08-13_10:43:59 geofancy lastDevice: Julian
2015-08-13_10:43:59 geofancy lastDep: Julian Arbeit
2015-08-13_10:43:59 geofancy Julian: left Arbeit
2015-08-13_10:43:59 geofancy currLoc_Julian: underway
2015-08-13_10:43:59 geofancy currLocLat_Julian: -
2015-08-13_10:43:59 geofancy currLocLong_Julian: -
2015-08-13_10:43:59 geofancy currLocTime_Julian: 2015-08-13 12:43:59


Ich sehe in FHEM, dass die richtige Zeit getriggert wird, aber in den Readings (rechts am Rande das Änderungsdatum) direkt danach überschrieben wird mit +2h.

Habt ihr einen Tipp, woran das liegen kann? App? Modul? :-)

stromer-12

Ist auf deinen Rechner die richtige Zeit/Zeitzone eingestellt?

Gesendet von meinem GT-I9295

FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

Loredo

Das GEOFANCY Modul übernimmt für die Readings absichtlich strikt die Zeiten, die die Apps über die API übertragen.
Der Grund dafür ist, dass die Apps somit die Möglichkeit haben ihre Events in einer Queue zu speichern und erst verspätet abzusetzen (beispielsweise wenn gerade keine Netzverbindung besteht) und dabei trotzdem die Originalzeit, als das Event auf dem Endgerät ausgelöst wurde, erhalten bleibt.


Diese Funktion wurde von der Geofency.app eingeführt, der Nachbau Geofancy.app hat diese Funktion nicht.


Das GEOFANCY Modul wurde für diese beiden Apps entwickelt. Andere Apps, die die Funktionen dieser Apps bzw. deren (leicht unterschiedlichen) APIs nachbauen, müssen sich an deren API Spezifikation halten. Die genauen API Spezifikationen sind für iOS und Android Entwickler einsehbar und sollten gelesen bzw. verstanden werden.
Im Hinblick auf die Zeit steht das "Z" ganz hinten nach ISO Norm dafür, dass die Zeitangabe in GMT+0 erfolgt. Endgeräte müssen demnach ihre lokale Zeit in GMT+0 umrechnen, bevor diese mit übertragen wird.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER