Anwesenheit mit EgiGeoZone für Android Anpassung für die Geofency Library

Nabend Zusammen,

Ich habe hier eine apfelfreie Zone, also musste ich die geofency.php etwas modifizieren, sodas nun auch die Androiden mit der EgiGeoZone Geofence App funktionieren.

In der EgiGeoZone App muss unter der FEHM URL hinter den Devicenamen noch ein &
und die geänderte Geofancy.php sollte eingetragen sein.

http://deine.ip.adresse:deinport/user/GeofencyInfo/Geofancy.php?IPSName=XYZ[b]&

[/b]Geofancy.zip (1.65 KB)

Hallo, bin grad am Testen von deiner geänderten Geofency.php Datei.
Ein paar Fragen habe ich dazu?

[ul]
[li]Wird bei dir der GeoZonen Name richtig übertragen, den du in der EgiGeofency App festgelegt hast. Bei mir steht da immer EgiGeoZone.
[/li][li]
[/li][li]Wird der Breitengrad und Längengrad übertragen? Zwei Werte werden dennoch übertragen aber nur zweistellig und dann immer die gleichen.
[/li][/ul]

Für weitere Informationen wäre ich sehr dankbar.

Ja die Namen werden richtig übertragen (keine Umlaute und Sonderzeichen verwenden).
In der GeofencyInfo_Configuration sollten natürlich genau die gleichen Namen hinterlegt sein.
Es werden die für die Zone im Handy hinterlegten Grade übertragen. Die Zone sollte nicht kleiner als 15m sein. Mein Note 3 ist dank GPSFIX relativ genau. Ich habe zu Hause 3 Zonen angelegt (Vorderhaus Hinterhaus und Garten) diese werden zuverlässig erkannt. Im dunkeln geht meine Gartenbeleuchtung an wen ich die Garten-Zone betrete.

Das ganze funktioniert nur mit ECHT DATEN. Der TEST geht nur mit den von Dir gesehen zweistelligen Koordinaten und der „GeofencyZone“

Urlaubsgrüße aus dem Spreewald

Hi,

ich habe das Problem das mein EgiGeozone als Name immer „EgiGeofency“ schickt.
Was aber komisch ist, bei meiner Frau (hat das gleiche Handy wie ich Galaxy Note 3) wird der Geofency Name den ich vergeben habe auch richtig versendet.Hat jemand eine ähnliches verhalten und oder weis Rat?

Hätte da nochmal eine Frage. Laut Beschreibung sollte mit dem Eintrag Nr.5 „ID von irgendeinem Skript“ bei Ankunft
das Skript ausgeführt werde, tut es aber bei mir nicht. Habe ich da irgendwo einen kleinen Fehler?

siehe Auschnit aus GeofencyInfo_Configuration,

*   Beispiel  - array(1,true,"iPhone",false,false,false,false),
*******************************************************************************/
  $DeviceConfig = array(
	   array(1, true,"Uwe",false,false,false,false),
	   array(2, true,"CHR",false,false,false,false),
	   array(3, false,"",false,false,false,false),
	   array(4, false,"",false,false,false,false),
	   array(5, false,"",false,false,false,false),
	   array(6, false,"",false,false,false,false),
	   array(7, false,"",false,false,false,false),
	   array(8, false,"",false,false,false,false),
	   array(9, false,"",false,false,false,false),
	   array(10,false,"",false,false,false,false),
				);   

/***************************************************************************//**
* Geraete Aktionen 
*             
*   Feld 01   -   laufende Nummer
*   Feld 02   -   Geraet aktiv (true/false)
*   Feld 03   -   Geraetenamen ( identisch mit dem Namen in der URL (IPSName=xx)
*   Feld 04   -   Location Name   
*   Feld 05   -   Coming ( SkriptID welches beim Kommen ausgefuehrt werden soll)
*   Feld 06   -   Going  ( SkriptID welches beim Gehen ausgefuehrt werden soll)
*   Feld 07   -   Reserve             
* 
*   Beispiel  - array(1,true,"iPhone","Home",12345 /*[Objekt #12345 existiert nicht]*/,12345,false),
*******************************************************************************/
  $ActionConfig = array(
	   array(1, true ,"Uwe","Home",31030 /*[Räume\EG\Wohnzimmer\Wohnzimmer\Sonnenschutz-Wonhnz]*/,11874,false),
	   array(2, true,"CHR","Home",false,false),
	   array(3, false,"",false,false,false,false),
	   array(4, false,"",false,false,false,false),
	   array(5, false,"",false,false,false,false),
	   array(6, false,"",false,false,false,false),
	   array(7, false,"",false,false,false,false),
	   array(8, false,"",false,false,false,false),
	   array(9, false,"",false,false,false,false),
	   array(10,false,"",false,false,false,false),
				);
				

Push,

hat denn keiner eine Idee warum mein Skript bei Ankommen nicht startet?

Schau mal in deinem Array, der zwote Eintrag.
Dem fehlt glaube ich ein Element. Er hat nur 6 Elemente die anderen haben 7.
Vielleicht hängt es damit zusammen.


$ActionConfig:
alt:
[...]
array(2, true,"CHR","Home",false,false), 
[...]

neu:
[...]
array(2, true,"CHR","Home",false,false,false), 
[...]

Das ist was ich nun per Sichtung erkennen kann.
Vielleicht hilft es.

Grüße
Pio

Hat :(leider nicht geholfen.

Hat zufällig schon einer das neuste Update der IPSLibrary (Vers.1.0.16) gemacht?
Seitdem geht es auch nicht mehr.

Hab´s mal kurz umgeschrieben! und bis jetzt geht´s wieder!


<?php
/***************************************************************************//**
* geofancy.php      
* Anpassungen für Android APP EGIGEOFANCY 
* $_POST gegen $_GET getauscht;             
*******************************************************************************/

	IPSUtils_Include ("IPSLogger.inc.php","IPSLibrary::app::core::IPSLogger");
  IPSUtils_Include ("IPSInstaller.inc.php","IPSLibrary::install::IPSInstaller");

	IPSUtils_Include("GeofencyInfo.inc.php","IPSLibrary::app::modules::Informationen::GeofencyInfo");
	IPSUtils_Include("GeofencyInfo_Configuration.inc.php","IPSLibrary::config::modules::Informationen::GeofencyInfo");

      
  $Parent = IPSUtil_ObjectIDByPath("Program.IPSLibrary.data.modules.Informationen.GeofencyInfo");

  if ( !isset($_GET["IPSName"] ) )
    { 
    if ( DEBUG_MODE ) IPSLogger_Dbg(__FILE__,"Kein IPSName angegeben");
    echo "Kein IPSName angegeben";
    return;
    }
  else
    {
    $IPSName = $_GET["IPSName"];
    $_GET["IPSName"] = $IPSName;
    }
  
  if ( isset( $_GET["date"] ) )     $GEOdate         =$_GET["date"] ;      else $GEOdate="";
  if ( isset( $_GET["name"] ) )     $GEOname         =$_GET["name"] ;      else $GEOname="";    
  if ( isset( $_GET["id"] ) )       $GEOid           =$_GET["id"] ;        else $GEOid="";
  if ( isset( $_GET["longitude"] ) )$GEOlongitude    =$_GET["longitude"] ; else $GEOlongitude="";
  if ( isset( $_GET["latitude"] ) ) $GEOlatitude     =$_GET["latitude"] ;  else $GEOlatitude="";
  if ( isset( $_GET["entry"] ) )    $GEOentry        =$_GET["entry"] ;     else $GEOentry="";
  if ( isset( $_GET["device"] ) )   $GEOdevice       =$_GET["device"] ;    else $GEOdevice="";

  if ( isset( $_GET["radius"] ))    $GEOradius       =$_GET["radius"]  ;   else $GEOradius = ""; 
  if ( isset( $_GET["beaconUUID"])) $GEObeaconUUID   =$_GET["beaconUUID"]; else $GEObeaconUUID ="";
  if ( isset( $_GET["major"] ))     $GEOmajor        =$_GET["major"];      else $GEOmajor ="";
  if ( isset( $_GET["minor"] ))     $GEOminor        =$_GET["minor"];      else $GEOminor ="";
  if ( isset( $_GET["address"] ))   $GEOaddress      =$_GET["address"];    else $GEOaddress ="";
  
  
  $GEOlogStringAddress = str_replace(chr(10), " ", $GEOaddress);
  $GEOlogStringAddress = str_replace(chr(226), "", $GEOlogStringAddress);
  $GEOlogStringAddress = str_replace(chr(128), "", $GEOlogStringAddress);
  $GEOlogStringAddress = str_replace(chr(142), "", $GEOlogStringAddress);
 
  $out = $IPSName.",".$GEOdate.",".$GEOname.",".$GEOid.",".$GEOlongitude.",".$GEOlatitude.",".$GEOentry.",".$GEOdevice;
  $out = $out . "," .$GEOradius .",".$GEObeaconUUID.",". $GEOmajor.",".$GEOminor.",".$GEOlogStringAddress;
  Geofencylogging(false,$out,'incoming.log');


  if ( $GEOentry == '1' )
    $GEOentry == true;
  else
    $GEOentry = false;
    
    
  if ( $IPSName == '' )
    {
    if ( DEBUG_MODE ) IPSLogger_Dbg(__FILE__,"Keine Location angegeben");
    echo "Keine Location angegeben";
    return;
    }

  
  if ( !$Parent )
    {
    if ( DEBUG_MODE ) IPSLogger_Dbg(__FILE__,"Parent Pfad NOK");
    echo "Parent-Pfad NOK";
    return;    
    }
  
  $IDname     = CreateCategory($IPSName,$Parent,0);
  $IDLocation = CreateCategory($GEOname,$IDname,0);

  $IDlatitude  = CreateVariable('Latitude'  ,3,$IDLocation,7);  
  $IDlongitude = CreateVariable('Longitude' ,3,$IDLocation,8);  
  $IDlocID     = CreateVariable('LocationID',3,$IDLocation,6);  
  $IDankunftIPS= CreateVariable('IPSAnkunft',1,$IDLocation,4,'~UnixTimestamp',false,0);  
  $IDabfahrtIPS= CreateVariable('IPSAbfahrt',1,$IDLocation,5,'~UnixTimestamp',false,0);  
  $IDankunftGEO= CreateVariable('GEOAnkunft',1,$IDLocation,2,'~UnixTimestamp',false,0);  
  $IDabfahrtGEO= CreateVariable('GEOAbfahrt',1,$IDLocation,3,'~UnixTimestamp',false,0);  
  $IDentry     = CreateVariable('Entry'     ,0,$IDLocation,1,'~Presence',false,false);  
  $IDdevice    = CreateVariable('Device'    ,3,$IDLocation,9);  
  $IDAction    = CreateVariable('Action'    ,3,$IDLocation,10);  
  $IDradius    = CreateVariable('Radius'    ,3,$IDLocation,11);  
  $IDaddress   = CreateVariable('Address'   ,3,$IDLocation,12);  
 

  SetValue($IDentry,$GEOentry);
  SetValue($IDlatitude,$GEOlatitude);
  SetValue($IDlongitude,$GEOlongitude);
  SetValue($IDlocID,$GEOid);
  SetValue($IDdevice,$GEOdevice);
  SetValue($IDradius,$GEOradius);
  SetValue($IDaddress,$GEOlogStringAddress);
  
  if ($GEOentry)
    {
    SetValue($IDankunftIPS,time());
    $t = strtotime($GEOdate);
    SetValue($IDankunftGEO,$t);
    SetValue($IDabfahrtGEO,0);    
    $loc = str_pad ( $GEOname, 15 , ' ' );     
    $out = "Ankunft: " . $IPSName . " - " . $loc  ;
    $richtung = "Ankunft";
    }
  else
    {
    SetValue($IDabfahrtIPS,time());
    $t = strtotime($GEOdate);
    SetValue($IDabfahrtGEO,$t);
    $loc = str_pad ( $GEOname, 15 , ' ' );     
    $out = "Abfahrt: " . $IPSName . " - " . $loc  ; ;
    $richtung = "Abfahrt";
    }
    
   if ( DEBUG_MODE ) IPSLogger_Dbg(__FILE__,$out);
    
  Geofencylogging($Parent,$out,'geofency.log');

  $DeviceID = IPSUtil_ObjectIDByPath("Program.IPSLibrary.data.modules.Informationen.GeofencyInfo.".$IPSName);
  $HTMLBoxID = CreateVariable('GoogleMap'  ,3,$DeviceID,99,'~HTMLBox'); 
  DoGoogleMaps($HTMLBoxID,trim($GEOlatitude),trim($GEOlongitude));

  $HTMLBoxID = CreateVariable('OSMMap'  ,3,$DeviceID,99,'~HTMLBox'); 
  
  DoOSMMap($HTMLBoxID,trim($GEOlatitude),trim($GEOlongitude),$GEOentry,$GEOradius);
  
  $ActionOK = GEOActions($GEOentry,trim($IPSName),trim($GEOname),$_GET);

  $OldActionValue = GetValue($IDAction);
  $OldActionValues = explode(',',$OldActionValue);
  
  if ($GEOentry)
    $OldActionValues[0] = $ActionOK;
  else
    $OldActionValues[1] = $ActionOK;

  if ( !isset($OldActionValues[0]) )
    $OldActionValues[0] = '1';
  if ( !isset($OldActionValues[1]) )
    $OldActionValues[1] = '1';
        
  $ActionValues = $OldActionValues[0] . "," . $OldActionValues[1];      
  SetValue($IDAction,$ActionValues);
  
  HTMLlogging($Parent,$GEOentry,$GEOdevice,$GEOname,$GEOdate,$IPSName,$ActionOK);
  
  //CreateHTMLBoxWithMap($Parent,$IPSName,$ActionOK);
 
  $out = ";".$IPSName.";".$GEOname.";".$richtung.";".$ActionOK; 
  Geofencylogging($Parent,$out,'Device_'.$IPSName.'.log');

  RefreshHTMLBoxWithMap($IPSName);

              
?>

Moin, im Prinzip geht das, ABER:

Ich habe im Log etwa stündlich einen „Abfahrt“-Eintrag, auch wenn ich 300km weg mit (Zonenradius in EgiGeoZone beträgt 500m)

Auch wenn ich anwesend bin, habe ich mehrfache Einträge.