Android Geofence App: EgiGeoZone

Begonnen von egmontr, 02 April 2014, 20:01:25

Vorheriges Thema - Nächstes Thema

egmontr

Edit: Erste Version ist fertig! Siehe Link am Ende dieses Threads.

Hallo zusammen,

ich bin dabei eine Android Geofence App zu schreiben, welche auch das Geofancy Modul von Loredo unterstützen wird: http://fhem.de/commandref.html#GEOFANCY
Ich hoffe, dass sich viele finden werden, diese App zu testen und dann auch zu nutzen.

Also die App wird EgiGeoZone heißen und wird in der 1. Version folgende Features haben:

  • Es können bis zu 100 GeoZonen angelegt werden (ist durch die Android Api auf 100 begrenzt)
  • Beim Betreten oder Verlassen einer dieser Zonen kann man verschiedene Aktionen auslösen. Zur Zeit sind folgende Aktionen implementiert:
    * Einen Webservice aufrufen
    * Eine SMS senden
    * Eine Email senden
  • Die angelegten GeoZonen können teilweise geändert werden oder ganz gelöscht werden.
  • Die GeoZone ist kreisförmig
  • Benachrichtigung (Notification) beim Betreten oder Verlassen einer Zone
  • Eine GeoZone hat folgende Attribute, welche in der App erfasst werden können:

Es können nicht nur Fhem-URLs aufgerufen werden, sondern auch URLs beliebiger Serverapplikationen, wenn man diese erst mal fest vorgibt.
Der Geofancy-Aufruf wird von der App selbst erstellt und zieht vor den anderen URLs. Ist die URL für Geofancy leer so werden die alternativen URLs verwendet falls angegeben. Wenn keine URL angegeben wurde, so kommt nur eine Benachrichtigung, dass Zone betreten oder verlassen.

Das Menü sollte sprechend sein. Nur einen Hinweis noch: über dem Menüpunkt "Aktuelle Koordinaten" kann man sich die Koordinaten des aktuellen Standortes eintragen lassen.

Tipps:
1. Die Log-Datei ist unter "interner Speicher"/egigeozone/egigeozone.log zu finden. Der Debug Level ist von Start an auf ERROR gesetzt. Für die Fehlersuche kann man ihn auch höher setzen. Siehe dazu Punkt "Debug level" im Menü.

2. Die Zertifikate sind im Verzeichnis "interner Speicher"/egigeozone/ abzulegen.
Wenn der Server ein Client Zertifikat verlangt, so kann dieses angegeben werden. Das Zertifikat muss im PKCS12-Format vorliegen.
Falls für die SSL-Verbindung ein Truststore mit den Ausstellerzertifikaten vorhanden ist, sollte man dieses auch angeben. Falls das Feld dazu leer bleibt, wird die Verbindung als vertrauenswürdig erkannt. Ist also ein Fake-SSL, was die meisten APPs so handeln. Also am Besten den Truststore immer angeben! Dieser muss im PEM-Format vorliegen.

Wie der Server für eine SSL-Verbindung konfiguriert werden kann und wie man Zertifikate dazu erstellt ist nicht Gegenstand dieser Erklärung. Dazu gibt es Hilfe in Hülle und Fülle im mächtigen Internet oder gar hier im Forum: http://forum.fhem.de/index.php/topic,19227.msg129108.html#msg129108



ToDos für die nächste Version:

  • Testen der Verbindung
  • Koordinate aus Karte übernehmen und evtl. auch Radius durch vergrößern dessen auf der Karte übernehmen.
  • Requests merken und bei Internetverbindung feuern.
  • Benachrichtigungen ein- oder ausschalten


Viel Spaß bei der Nutzung der App!!

So, nun ist die App auch im Play Store von Google zu haben: https://play.google.com/store/apps/details?id=de.egi.geofence.geozone

Erforderliche Android-Version: 4.0 oder höher

Anbei auch 3 Screenshots der App.
LG Egmont

RPI B+ mit FHEM und CUL V3 868MHZ

egmontr

#1
Die erste Version der App ist für Testfreudige zu haben. Für Download siehe Post 1. ganz unten.
LG Egmont

RPI B+ mit FHEM und CUL V3 868MHZ

illuminati2.0

Habs eben beim suchen nach andFHEM im Googlestore gesehen, Cool 8)

Schonmal Danke. Auch wenn ich sie noch nicht geladen habe. :)

Werde Tesen helfen bin aber mit FHEM noch im Aufbau.

hyper2910

Hi,

super das habe ich schon lange gesucht.

Habe gerade mal geladen!


Der Radius ist in Metern??


Eine Frage habe ich dazu noch, wenn ich in den Radius einfahre, z.B. 300meter von zu hause entfernt, soll eine bestimmte Aktion stattfinden, ist das realisierbar!
GRuss Dirk
Cubietruck mit FHEM, CUL V3 443MHz, 2 x CULV3 868MHz, Milights, Max Heizungssteuerung, Homematic, IT,

egmontr

#4
Erstmal eine Mitteilung in eigener Sache  :) Im Google Play Store befindet sich nun eine neue Version 1.1.0 mit folgenden neuen Features:
- Übernahme von Koordinaten aus Google Maps:      
Karte an die richtige stelle verschieben/zoomen und durch langes Tippen Koordinaten übernhemen
Marker an die gewünschte Stelle verschieben und dann darauf klicken. Es erscheint ein Info-Fenster. Wenn man dann da nochmals darauf klickt, werden die Koordinaten übernommen.
Der Radius kann nicht graphisch vergrößert werden. Dieser muss noch manuell eingegeben werden.
- Verbesserung der Optik.
- Hinweisfenster beim Löschen einer Zone.


@illuminati2.0: Viel Spass damit.


@hyper2910:

Zitat von: hyper2910 am 11 April 2014, 15:21:57
Der Radius ist in Metern??
Ja.

Zitat von: hyper2910 am 11 April 2014, 15:21:57
Eine Frage habe ich dazu noch, wenn ich in den Radius einfahre, z.B. 300meter von zu hause entfernt, soll eine bestimmte Aktion stattfinden, ist das realisierbar!

Das ist ja der Sinn der App  ;)
Erstmal kannst Du eine URL (Kommando) von Fhem oder irgend einen Server aufrufen.
Z.B. kannst Du in Fhem das Geofancy Modul von Loredo konfigurieren und dann in meiner App die URL eintragen. Dann wird 300 Meter von deinem zu Hause der Befehl abgesetzt.

Beispiel für das Schalten eines Dummys mit Hilfe eines Notifys vom Geofancy Modul in Fhem:
In Fhem trägst du das Geofancy Modul ein:
define geofancy GEOFANCY geo
attr geofancy room Haus
attr geofancy devAlias b2d461bf-1070-3927-8824-67320acd405e:Egmont

define egmont.zuHause notify geofancy:currLoc_Egmont:.zuHause {fhem("set Abwesend nein")}

define egmont.nichtHause notify geofancy:currLoc_Egmont:.underway {fhem("set Abwesend ja")}


In EgiGeoZone trägst du ein:
Name: zuHause
Breitengrad: 48.12457852
Längengrad: 11.45845721
Radius: 300
User: huber
Passwort: geheim
und zuletzt die URL für Fhem. Z.B http://rpi.xxxx.de:1994/fhem/geo
Wenn die Verbindung verschlüsselt sein soll, dann musst du die anderen Parameter für die Zertifikate auch angeben.


Ich z.B. mache Fahrgemeinschaft mit einem Freund. Dieser braucht ca. 10 Minuten bis er bei mir in der Arbeit ist um mich abzuholen. Habe EgiGeoZone bei ihm auf dem Handy installiert. Wenn er seine Arbeit verlässt, bekomme ich über Fhem zu Hause eine Email in die Arbeit, dass er unterwegs ist. Cool!

Was für andere Aktionen hättest Du gerne?
Einige habe ich schon jetzt in Planung: SMS senden, EMail direkt vom Handy senden.
Für Anregungen bin ich dankbar.




LG Egmont

RPI B+ mit FHEM und CUL V3 868MHZ

hyper2910

Habe mal alles installiert,  jedoch bekomme ich keine readings!   

Geofancy ist so konfiguriert


define geofancy GEOFANCY geo
define WEBhook FHEMWEB 8088 global
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,Kitchen,Living,Residents,System,Weather,Event monitor,NEW,DashboardRoom
attr WEBhook HTTPS
attr WEBhook basicAuth { "$user:$password" eq "xxxxx:xxxxx" }
attr WEBhook room hidden
attr WEBhook webname webhook



In der Android app
Ist unter url fhem geofancy. Https:// xxxxxxxxxx:8080/webhook/geo drin.
Wenn ich diese aufrufe bekomme ich auch:

NOK no Data



Irgendjemand eine Idee
Cubietruck mit FHEM, CUL V3 443MHz, 2 x CULV3 868MHz, Milights, Max Heizungssteuerung, Homematic, IT,

egmontr

#6
Wenn du NOK No data received bekommst, ist das richtig, da du ja nur die URL aufgerufen hast.
Dahinter sind keine Daten die das Geofancy Modul auswerten kann.

EgiGeoZone würde dann deine Adresse mit den nötigen Infos ergänzen.
Probiere mal https:// xxxxxxxxxx:8080/webhook/geo?id=UUIDloc&name=zuHause&entry=1&date=2014-04-11&latitude=xx.x&longitude=xx.x&device=HandyDirk
Die Werte sind nur Fakes, also keine echten Werte, aber du solltest Readings bekommen :-)
LG Egmont

RPI B+ mit FHEM und CUL V3 868MHZ

hyper2910

#7
Hi,


danke dir.   musste deine URL noch um "geo" erweitern, dann bekomme ich das Reading

https:// xxxxxxxxxx:8080/webhook/geo?id=UUIDloc&name=zuHause&entry=1&date=2014-04-11&latitude=xx.x&longitude=xx.x&device=HandyDirk

Internals:
   CFGFN      /opt/fhem/FHEM/geofancy.cfg
   DEF        geo
   NAME       geofancy
   NR         90
   STATE      id:UUIDloc name:zuHause trig:1 date:2014-04-11 lat:xx.x long:xx.x dev:HandyDirk
   TYPE       GEOFANCY
   Readings:
     2014-04-11 02:00:00   HandyDirk       arrived zuHause
     2014-04-11 02:00:00   currLocLat_HandyDirk xx.x
     2014-04-11 02:00:00   currLocLong_HandyDirk xx.x
     2014-04-11 02:00:00   currLocTime_HandyDirk 2014-04-11 02:00:00
     2014-04-11 02:00:00   currLoc_HandyDirk zuHause
     2014-04-11 02:00:00   lastArr         HandyDirk zuHause
     2014-04-11 02:00:00   lastDevice      HandyDirk
     2014-04-11 02:00:00   state           id:UUIDloc name:zuHause trig:1 date:2014-04-11 lat:xx.x long:xx.x dev:HandyDirk
   Fhem:
     infix      geo
   Helper:
     Device_aliases:
Attributes:



aber vom Mobil, nichts


desweiteren würde ich gerne das Zone Betreten nutzen.  Würde bedeuten ich nehme die URL   https:// xxxxxxxxxx:8080/webhook/geo in URL Zone Betreten, oder?

Dann sollte ja über den Notify  z.b. mein Garagentor aufgehen.
Cubietruck mit FHEM, CUL V3 443MHz, 2 x CULV3 868MHz, Milights, Max Heizungssteuerung, Homematic, IT,

egmontr

#8
Zitatmusste deine URL noch um "geo" erweitern, dann bekomme ich das Reading
Ja, habe ich nachgebessert.

Kommst Du grundsätzlich von Handy drauf? Hast mal probiert vom Browser am Handy? Siehst du was am Router? Bekommst du die Benachrichtigung/Notification am Handy? Bekommst du ein rote Benachrichtigung?
Ansonsten kannst du den Test am Handy immer wiederholen, indem du die Zone aufrufst und einfach Ändern klickst.
Du könntest auch Debug Level auf Debug setzen und mir die Log-Datei zu schicken. Liegt auf dem internen Speicher runter ../egigeizone/egigeozone.log

Ansonsten geht nur eines davon. Oder die Geo Adresse oder Betreten/Verlassen.
Du kannst deine Garage mit der Geo Adresse öffnen. Das Verlassen der Zone kannst du ja im fhem ignorieren.

Wenn du unbedingt die Betreten URL verwenden möchtest, dann kannst fhem direkt ansprechen (geht dann nicht über Geofancy) und deine Garagenaktor schalten oder ein Dummy setzen, oder ...
Z.B.  kannst du folgende Syntax benutzen: 
https://xxx.xxxx.de:1984/fhem?cmd.Garage=set%Garage%20auf Ist nur ein Beispiel!


LG Egmont

RPI B+ mit FHEM und CUL V3 868MHZ

hyper2910

Hi,

Also von mobile und tablet mit Android geht's auch, nur nicht über Chrome!  Musste dafür Firefox oder dolphin nutzen! 

Cubietruck mit FHEM, CUL V3 443MHz, 2 x CULV3 868MHz, Milights, Max Heizungssteuerung, Homematic, IT,

egmontr

Ich habe deine Konfig nachgebildet und es funktioniert bei mir über die App! Einziger unterschied ist, dass ich SSL über Apache mache.

@hyper2910: Geht es nun über die App?
LG Egmont

RPI B+ mit FHEM und CUL V3 868MHZ

T.ihmann

Egmont,

Sehr schöne App! Nur mal als Anregung, hast Du mal darüber nachgedacht, als Karte Openstreetmap zu unterstützen bzw. zu verwenden ?

Liebe Grüße

Thomas

egmontr

@: Habe ich nicht, da ich mit Google Maps schon etwas Erfahrung hatte. Aber was nicht ist, kann noch werden.
LG Egmont

RPI B+ mit FHEM und CUL V3 868MHZ

hyper2910

Hi,

so habe mal das ganze aus Port 1999 umgestellt und damit funktioniert es auf anhieb:

Readings von der APP kommen direkt


2014-04-12 23:05:46   currLoc_4c7442a5-482c-3b58-8d24-f3a66f0a42da zuhause
     2014-04-11 02:00:00   currLoc_HandyDirk zuHause
     2014-04-12 23:05:46   lastArr         4c7442a5-482c-3b58-8d24-f3a66f0a42da zuhause
     2014-04-12 23:05:46   lastDevice      4c7442a5-482c-3b58-8d24-f3a66f0a42da
     2014-04-13 09:06:04   state           initialized
Cubietruck mit FHEM, CUL V3 443MHz, 2 x CULV3 868MHz, Milights, Max Heizungssteuerung, Homematic, IT,

egmontr

Cool. Geht die Garage auf?

Ein paar Macken habe ich schon entdeckt und werde sie bald beheben.
LG Egmont

RPI B+ mit FHEM und CUL V3 868MHZ