Empfehlung für Geofencing App für Andriod

Edmotion
Beiträge: 209
Registriert: Di 29. Mai 2018, 20:36

So 26. Jul 2020, 11:28

Mike1509 hat geschrieben:
Fr 17. Jul 2020, 14:49
Nachdem Locative bei meiner Frau schon seit 2 Jahren nicht mehr funktioniert hat, ist die Alternative für IOS "Geofency".
Ist aber etwas mühsam, da dort insbesondere nach App-Updates kein Geofence ausgelöst wird und das Ganze erst nach einem manuellen Start der App wieder normal funktioniert. Und da Apple ja nicht zulässt, dass man automatische Updates für einzelne Apps deaktiviert, muss man da halt immer hinterher sein.

lg MMichael
Hi - wenn ich "Geofency" eingebe kommt als erstes "GPSPlus Work..." und als zweites "Geofency Zeierfassung" welches ist da nun das richtige!?!?
ITL1000 für Hoftor und Garagentore, ITDM250 + ITL230 + CRM für Beleuchtung, ITT1500 + ITS + YAW8500 + ITW852 als Sender, Sonos One und Sonos 1
Mike1509
Beiträge: 65
Registriert: Mo 10. Okt 2016, 21:57

Mi 29. Jul 2020, 20:41

Keine Ahnung, bei mir kommt da nur 1 Resultat. Es ist Geofency Zeiterfassung. Einer der Zwecke der App ist offenbar, dass man bei betreten verlassen des Geofence eine automatische Zeiterfassung erstellen lassen kann. Aber HTTP Get Befehle gehen eben auch.
Wahl-HHer
Beiträge: 47
Registriert: Mo 5. Okt 2020, 17:15

Do 8. Okt 2020, 23:07

Ich habe bei mir auch die Anwesenheitserkennung über den Weg mit der Fritzbox, wo abgefragt wird welche Geräte im WLAN angemeldet sind gewählt. Für die Abfrage läuft alle 10 Minuten ein php-Script auf meinem NAS. Funktioniert prima.

Der Nachteil für mich ist allerdings, dass die LED vom LMAir dann auch alle 10 Minuten kurz rot aufblinkt, also jedesmal dann wenn das Script die Marker setzt. Da der LMAir bei mir unter dem TV platziert ist, stört es doch ein wenig.
In der ursprünglichen Lösung wurde ja vorher abgefragt, welche Werte in der params.xml gesetzt sind. Aber ich meine hier gelesen zu haben, dass es die nicht mehr gibt. Ist das korrekt so?

Mein Script setzt direkt die Marker, es wird keine Szene aufgerufen. Wie könnte ich es lösen, dass die Werte wirklich nur noch gesetzt werden, wenn sie sich ändern, damit der LMAir nur noch dann blinkt? Die Option "LED immer aus" ist aktiviert, hat darauf aber keinen Einfluss.
gens69
Beiträge: 529
Registriert: Sa 6. Jan 2018, 17:49

Fr 9. Okt 2020, 07:36

Wahl-HHer hat geschrieben:
Do 8. Okt 2020, 23:07
Ich habe bei mir auch die Anwesenheitserkennung über den Weg mit der Fritzbox, wo abgefragt wird welche Geräte im WLAN angemeldet sind gewählt. Für die Abfrage läuft alle 10 Minuten ein php-Script auf meinem NAS. Funktioniert prima.

Der Nachteil für mich ist allerdings, dass die LED vom LMAir dann auch alle 10 Minuten kurz rot aufblinkt, also jedesmal dann wenn das Script die Marker setzt. Da der LMAir bei mir unter dem TV platziert ist, stört es doch ein wenig.
In der ursprünglichen Lösung wurde ja vorher abgefragt, welche Werte in der params.xml gesetzt sind. Aber ich meine hier gelesen zu haben, dass es die nicht mehr gibt. Ist das korrekt so?

Mein Script setzt direkt die Marker, es wird keine Szene aufgerufen. Wie könnte ich es lösen, dass die Werte wirklich nur noch gesetzt werden, wenn sie sich ändern, damit der LMAir nur noch dann blinkt? Die Option "LED immer aus" ist aktiviert, hat darauf aber keinen Einfluss.
Das hört sich sehr interessant an.
Kannst du mir das Skript mal zukommen lassen?
paule26
Beiträge: 535
Registriert: Fr 18. Aug 2017, 18:37

Fr 9. Okt 2020, 07:54

Die Option "LED immer aus" ist aktiviert, hat darauf aber keinen Einfluss
Wieso klebst Du die LED nicht einfach altmodisch ab, wenn sie eh sonst abgeschaltet ist?

Gruß Jürgen
Gruß Jürgen
Benutzeravatar
Blackbird
Beiträge: 831
Registriert: Sa 20. Feb 2016, 17:51

Fr 9. Okt 2020, 08:19

Wahl-HHer hat geschrieben:
Do 8. Okt 2020, 23:07

Mein Script setzt direkt die Marker, es wird keine Szene aufgerufen. Wie könnte ich es lösen, dass die Werte wirklich nur noch gesetzt werden, wenn sie sich ändern, damit der LMAir nur noch dann blinkt?
Indem Du eben doch eine Szene auslöst anstatt den Marker direkt zu setzen. Die Szene wiederum nur dann ausführen, wenn der Marker inaktiv ist. Genau dafür sind die Marker ja da!
Wahl-HHer
Beiträge: 47
Registriert: Mo 5. Okt 2020, 17:15

Fr 9. Okt 2020, 08:51

paule26 hat geschrieben:
Fr 9. Okt 2020, 07:54
Die Option "LED immer aus" ist aktiviert, hat darauf aber keinen Einfluss
Wieso klebst Du die LED nicht einfach altmodisch ab, wenn sie eh sonst abgeschaltet ist?

Gruß Jürgen
Weil die LED ja trotz der Einstellung noch Warnungen signalisiert, wenn z.B. die Verbindung zum WiFi weg ist.
gens69 hat geschrieben:
Fr 9. Okt 2020, 07:36
Das hört sich sehr interessant an.
Kannst du mir das Skript mal zukommen lassen?
Hier das angepasste Script für alle die es interessiert. Original stammt von schlaue-huette.de.

Code: Alles auswählen

<?php
 
// Anwesenheitserkennung:
// Based on work of https://www.schlaue-huette.de
 
$fritzbox_ip = "fritz.box";
$tr64_port = "49000";
$Host1 = 'Name1';  //Dies muss der exakte Hostname sein, der in der FritzBox aufgeführt wird. Alternativ kann man auch IP oder MAC Adresse nutzen. Dazu muss jedoch die SOAP Abfrage geändert werden.
$Host2 = 'Name2';  //Dies muss der exakte Hostname sein, der in der FritzBox aufgeführt wird. Alternativ kann man auch IP oder MAC Adresse nutzen. Dazu muss jedoch die SOAP Abfrage geändert werden.
$Lightmanager_ip = 'xxx.xxx.xxx.xxx';
$host1_marker_nr = 4; // Die Marker-Nr -1. Also bei Marker1 wäre es hier 0.
$host2_marker_nr = 5; // Die Marker-Nr -1. Also bei Marker1 wäre es hier 0.
$abwesend_marker_nr = 0; // Die Marker-Nr -1. Also bei Marker1 wäre es hier 0.
 
// SOAP Abfrage:
$client = new SoapClient(null,array(	'location'		=> "http://" . $fritzbox_ip . ":" . $tr64_port . "/upnp/control/hosts",
										'uri'			=> "urn:dslforum-org:service:Hosts:1",
										'soapaction'	=> "urn:dslforum-org:service:Hosts:1#GetSpecificHostEntry",
										'noroot'		=> False
	));
 
$NumberOfHosts = $client->GetHostNumberOfEntries();
 
// Abfrage welcher Host online ist:
if (!(is_soap_fault($NumberOfHosts))) 
{
  for ($i=0;$i<$NumberOfHosts;$i++)  
	{
    $Host = $client->GetGenericHostEntry(new SoapParam($i,'NewIndex'));
    if  ($Host['NewHostName'] == $Host1) 
		{
		if(($Host['NewActive'] == 1)) 
		{
		$Host1anwesend = 1;
		}
		else 
		{
		$Host1anwesend = 0;
		}
		}
	}
}
if (!(is_soap_fault($NumberOfHosts))) 
{
  for ($i=0;$i<$NumberOfHosts;$i++)  
	{
    $Host = $client->GetGenericHostEntry(new SoapParam($i,'NewIndex'));
    if  ($Host['NewHostName'] == $Host2) 
		{
		if(($Host['NewActive'] == 1)) 
		{
		 $Host2anwesend = 1;
		}
		else 
		{
		$Host2anwesend = 0;
		}
		}
	}
}
 
// Wenn Host1 anwesend ist, wird die Variable host1_marker_set auf 1 gesetzt, ansonsten auf 0.
 
 if ($Host1anwesend == 1 )
{
	$host1_marker_set = 1;
}
else
{
	$host1_marker_set = 0; 
}
 
// Wenn Host1 angemeldet ist, wird der Marker im Lightmanager auf ein setzt, sonst auf aus.
 
if ($Host1anwesend == '1')
{

	$host1_marker = file_get_contents("http://" . $Lightmanager_ip . "/control?cmd=typ,smk,". $host1_marker_nr . ",". $host1_marker_set); 
}

 
elseif ($host1_marker_set == '0')
{

	$host1_marker = file_get_contents("http://" . $Lightmanager_ip . "/control?cmd=typ,smk,". $host1_marker_nr . ",". $host1_marker_set); 
}
 
 // Wenn Host2 anwesend ist, wird die Variable host2_marker_set auf 1 gesetzt, ansonsten auf 0.
 
 if ($Host2anwesend == 1 )
{
	$host2_marker_set = 1;
}
else
{
	$host2_marker_set = 0; 
}
 
// Wenn Host2 angemeldet ist, wird der Marker im Lightmanager auf ein setzt, sonst auf aus.
 
if ($Host2anwesend == '1')
{
	$host2_marker = file_get_contents("http://" . $Lightmanager_ip . "/control?cmd=typ,smk,". $host2_marker_nr . ",". $host2_marker_set); 
}
 
elseif ($host2_marker_set == '0' )
{
	$host2_marker = file_get_contents("http://" . $Lightmanager_ip . "/control?cmd=typ,smk,". $host2_marker_nr . ",". $host2_marker_set); 
}

	// Wenn keiner von beiden angemeldet ist, wird der Marker $abwesend_marker_set auf 1 gesetzt, sonst auf 0.
	
if ($Host1anwesend == 0 AND $Host2anwesend == 0)
{
	$abwesend_marker_set = 1;
}
else
{
	$abwesend_marker_set = 0; 
}
 
// Wenn keiner von beiden angemeldet ist wird der Marker $abwesend_marker_nr im Lightmanager auf ein setzt, sonst auf 0.
 
if ($abwesend_marker_set == '1' )
{
	$abwesend_marker = file_get_contents("http://" . $Lightmanager_ip . "/control?cmd=typ,smk," . $abwesend_marker_nr . ",". $abwesend_marker_set); 
}
 
elseif ($abwesend_marker_set == '0')
{
	$abwesend_marker = file_get_contents("http://" . $Lightmanager_ip . "/control?cmd=typ,smk,". $abwesend_marker_nr . ",". $abwesend_marker_set); 
}
?>

Wahl-HHer
Beiträge: 47
Registriert: Mo 5. Okt 2020, 17:15

Sa 10. Okt 2020, 20:06

Ich habe es jetzt umgebaut und rufe eine Szene auf die die Marke umschaltet. Zuerst hatte ich nur eine Szene pro Person deren Anwesenheit geprüft werden sollte und darin das Ausschalten das Markers wenn er eingeschaltet ist. Und das Einschalten wenn er ausgeschaltet ist. Das hat aber leider nicht funktioniert.
Dann habe ich je eine Szene für das Ein- und Ausschalten der Marker mit den jeweiligen Bedingen angelegt. Damit funktioniert es jetzt wie gewünscht.

Hier das umgebaute Script:

Code: Alles auswählen

<?php
 
// Anwesenheitserkennung:
// Based on work of https://www.schlaue-huette.de
 
$fritzbox_ip = "fritz.box";
$tr64_port = "49000";
$Lightmanager_ip = "lmair.fritz.box";//Dies muss der exakte Hostname wie er in der FritzBox aufgeführt wird sein, gefolgt von "fritz.box" (Standarddomäne der Fritzbox).
$Host1 = 'Name1';  //Dies muss der exakte Hostname sein, der in der FritzBox aufgeführt wird. Alternativ kann man auch IP oder MAC Adresse nutzen. Dazu muss jedoch die SOAP Abfrage geändert werden.
$Host2 = 'Name2';  //Dies muss der exakte Hostname sein, der in der FritzBox aufgeführt wird. Alternativ kann man auch IP oder MAC Adresse nutzen. Dazu muss jedoch die SOAP Abfrage geändert werden.
$host1_scene_on_nr = 22; // Die Szenen Nummer bzw. der Key lassen sich ganz einfach unter http://ipdeslightmanagers/config.xml herausfinden
$host1_scene_off_nr = 23; // Die Szenen Nummer bzw. der Key lassen sich ganz einfach unter http://ipdeslightmanagers/config.xml herausfinden
$host2_scene_on_nr = 24; // Die Szenen Nummer bzw. der Key lassen sich ganz einfach unter http://ipdeslightmanagers/config.xml herausfinden
$host2_scene_off_nr = 25; // Die Szenen Nummer bzw. der Key lassen sich ganz einfach unter http://ipdeslightmanagers/config.xml herausfinden
$zuHause_scene_nr = 19;
$Abwesend_scene_nr = 26;
// SOAP Abfrage:
$client = new SoapClient(null,array(	'location'		=> "http://" . $fritzbox_ip . ":" . $tr64_port . "/upnp/control/hosts",
										'uri'			=> "urn:dslforum-org:service:Hosts:1",
										'soapaction'	=> "urn:dslforum-org:service:Hosts:1#GetSpecificHostEntry",
										'noroot'		=> False
	));
 
$NumberOfHosts = $client->GetHostNumberOfEntries();
 
// Prüfung ob Host1 anwesend ist.
if (!(is_soap_fault($NumberOfHosts))) 
{
  for ($i=0;$i<$NumberOfHosts;$i++)  
	{
    $Host = $client->GetGenericHostEntry(new SoapParam($i,'NewIndex'));
    if  ($Host['NewHostName'] == $Host1) 
		{
		if(($Host['NewActive'] == 1)) 
		{
		$Host1anwesend = 1;
		}
		else 
		{
		$Host1anwesend = 0;
		}
		}
	}
}
// Prüfung ob Host2 anwesend ist.
if (!(is_soap_fault($NumberOfHosts))) 
{
  for ($i=0;$i<$NumberOfHosts;$i++)  
	{
    $Host = $client->GetGenericHostEntry(new SoapParam($i,'NewIndex'));
    if  ($Host['NewHostName'] == $Host2) 
		{
		if(($Host['NewActive'] == 1)) 
		{
		 $Host2anwesend = 1;
		}
		else 
		{
		$Host2anwesend = 0;
		}
		}
	}
}
  // Wenn Host1 anwesend ist, wird die Variable host2_marker_set auf 1 gesetzt, ansonsten auf 0.
  
 if ($Host1anwesend == '1')
{
	$host1_marker = file_get_contents("http://" . $Lightmanager_ip . "/control?scene=" . $host1_scene_on_nr ); // Hinter dem scene= einfach die Nummer der Szene angeben, die den Marker auf an setzt.
} 
else
{
	$host1_marker = file_get_contents("http://" . $Lightmanager_ip . "/control?scene=" . $host1_scene_off_nr ); // Hinter dem scene= einfach die Nummer der Szene angeben, die den Marker auf aus setzt.
}
 // Wenn Host2 anwesend ist, wird die Variable host2_marker_set auf 1 gesetzt, ansonsten auf 0.
 
 if ($Host2anwesend == '1')
{
	$host2_marker = file_get_contents("http://" . $Lightmanager_ip . "/control?scene=" . $host2_scene_on_nr ); // Hinter dem scene= einfach die Nummer der Szene angeben, die den Marker auf an setzt.
} 
else

{
	$host2_marker = file_get_contents("http://" . $Lightmanager_ip . "/control?scene=" . $host2_scene_off_nr ); // Hinter dem scene= einfach die Nummer der Szene angeben, die den Marker auf aus setzt.
}



if ($Host1anwesend == 0 AND $Host2anwesend == 0)
{
	$abwesend_marker_set = 1;
}
else
{
	$abwesend_marker_set = 0; 
}
  
if ($abwesend_marker_set == '1' )
{
	$abwesend_marker = file_get_contents("http://" . $Lightmanager_ip . "/control?scene=". $Abwesend_scene_nr ) ;
}
elseif ($abwesend_marker_set == '0')
{
	$abwesend_marker = file_get_contents("http://" . $Lightmanager_ip . "/control?scene=". $zuHause_scene_nr ); 
}
?>
Durch das verwenden der Szenen konnte ich auch noch folgendes Problem was ich hatte lösen.:
Ich nutze den Lightmanager in Kombination mit der Smarthome-Lösung homee ( mit Enocean und Z-Wave). Da beide Geräte Webhooks/Webrequests senden und darauf reagieren können, hatte ich es hinbekommen, dass beide Geräte den Modus synchronisieren.
Bei homee geht immer nur einer der vier Modi ("zuHause", "Abwesend", "Schlafend" und "Urlaub") zur gleichen Zeit.
Dabei war aber das Problem, immer wenn das Script lief und es wie vorgesehen den Modus auf "zuHause" gesetzt, wenn eines der Smartphones im WLan angemeldet war, dass dann der Modus "Schlafend" wieder überschrieben wurde. Im Modus "Schlafend" ist es bei mir z.B. so konfiguriert, dass die Beleuchtung im Flur bei Bewegungsalarm eines Bewegungsmelders nicht an geht, in den anderen dre Modi aber schon. Im Lightmanager konnte ich es jetzt so einstellen, dass der Modus nur dann auf "zuHause" gestellt wird, wenn der Marker "Schlafend" aus ist.

Jetzt bin ich soweit, dass schonmal 3 der 4 Modi automatisch aktiviert werden. :D
Neuling
Beiträge: 36
Registriert: Fr 9. Okt 2020, 20:56

Do 18. Feb 2021, 21:30

Hallo,
stelle mich gerade etwas doof an. Denke aber hier kann mir jemand sagen was ich falsch mache.
Probiere gerade auf iOS mit der APP Locative eine Anwesenheitserkennung nachzustellen. Leider habe ich da irgendwo etwas übersehen.
APP installiert, unter HTTP Push (GET) http://XXX.XXX.XXX.XX/control... (der Befehl aus dem Air) eingegeben und HTTP Basis Authentifizierung auf AUS.

Danke schon mal...
paule26
Beiträge: 535
Registriert: Fr 18. Aug 2017, 18:37

Fr 19. Feb 2021, 06:21

Es kann dir keiner Deine Million vom Konto stehlen, wenn Du den Befehl -an dem evtl. das Problem liegt- ausschreibst.
Gruß Jürgen
Antworten