Ich denke die URL stimmt ueberhaupt nicht.
http://192.168.178.32/web/geofency/geo.php
Wo hast du den deine geo.php ?
192.168.178.32 ist deine interne IP-Adresse aber Rest stimmt wohl nicht.
Welche URL hast du in der APP ?
Ich denke die URL stimmt ueberhaupt nicht.
http://192.168.178.32/web/geofency/geo.php
Wo hast du den deine geo.php ?
192.168.178.32 ist deine interne IP-Adresse aber Rest stimmt wohl nicht.
Welche URL hast du in der APP ?
Da habe ich http://home.4ox.de/geofency/geo.php
Wenn ich das im Skript eintrage, kommt zumindest kein Fehler
Wie sieht deine aktuelle geo.php aus ?
Hast du meine Eintrag uebernommen:
if ( !isset($_GET["device"] ) )
{
if ( $debug ) IPSLogger_Dbg(__FILE__,"Kein Device angegeben");
echo "Kein Device angegeben";
return;
}
dann nimm den mal raus.
Der testet ob ein DeviceName uebergeben wurde, also
http://home.4ox.de/geofency/geo.php?device=iPhone
Also Dein Test-Skript startet die passende geo.php und die sieht so aus:
<!DOCTYPE html>
<html>
<body>
<?php
if ( isset( $_POST["date"] ) ) $date =$_POST["date"] ; else $date="";
if ( isset( $_POST["name"] ) ) $locationName =$_POST["name"] ; else $locationName="";
if ( isset( $_POST["id"] ) ) $locationID =$_POST["id"] ; else $locationID="";
if ( isset( $_POST["longitude"] ) )$longitude =$_POST["longitude"] ; else $longitude="";
if ( isset( $_POST["latitude"] ) ) $latitude =$_POST["latitude"] ; else $latitude="";
if ( isset( $_POST["entry"] ) ) $isEntry =$_POST["entry"] ; else $isEntry="";
// Daten in die Variablen schreiben
if ($isEntry)
$out = date('d.m.Y H:i:s') ." entryDate: " . $date . ", entered at " . $locationName . "
";
SetValueInteger('AnkunftDatumZeit',time());
SetValueString('Latitude',$latitude);
SetValueString('Longitude',$longitude);
SetValueString('LocationID',$locationID);
SetValueString('LocationName',$locationName);
else
$out = date('d.m.Y H:i:s') ." exitDate: " . $date . ", exited at " . $locationName . "
";
SetValueInteger('AbfahrtDatumZeit'),time());
SetValueString('Latitude'),$latitude);
SetValueString('Longitude',$longitude);
SetValueString('LocationID',$locationID);
SetValueString('LocationName',$locationName);
echo $out;
// Logfile schreiben
$filename = "geofency.log";
$datei = fopen($filename,"a+");
fwrite($datei, $out . chr(13));
fclose($datei);
// Example condition:
// Send http request if it's later than 8pm (20:00).
$hour=substr($date, 8, 2);
if ($hour > '20' && $isEntry) {
echo "It’s time to eat <After Eight> and switch on lights.
";
// Integrate your e.g. house automation system here ...
// http_get("http://www.mypage.com/switchOnLights.html”);
}
?>
Und was steht dann im LOG ?
Aktuell gar nix mehr, wenn ich das Test-Skript starte
Du bist schon auf dem IPSymcon-Server oder auf einem Linux oä?
Dieses kann zum Schreiben in IPSymcon nicht funktionieren
SetValueString('Latitude'),$latitude);
Dein Script sollte im LOGFenster jede Menge Fehler liefern.
Du solltest mal alle „SetValue…“ ersetzen durch entsprechend zB
IPS_LogMessage(„GeoFency“,$latitude);
und dir es im Logfenster anssehen.
Das waere die minimalste Version
<?php
if ( isset( $_POST["date"] ) ) $date =$_POST["date"] ; else $date="";
if ( isset( $_POST["name"] ) ) $locationName =$_POST["name"] ; else $locationName="";
if ( isset( $_POST["id"] ) ) $locationID =$_POST["id"] ; else $locationID="";
if ( isset( $_POST["longitude"] ) )$longitude =$_POST["longitude"] ; else $longitude="";
if ( isset( $_POST["latitude"] ) ) $latitude =$_POST["latitude"] ; else $latitude="";
if ( isset( $_POST["entry"] ) ) $isEntry =$_POST["entry"] ; else $isEntry="";
$out = date('d.m.Y H:i:s') ." entryDate: " . $date . ", entered at " . $locationName . "
";
$filename = "geofency.log";
$datei = fopen($filename,"a+");
fwrite($datei, $out . chr(13));
fclose($datei);
?>
Der SetValue oben war ein Schreibfehler. Danke fürs finden
Ich habe das Skript nochmal umgebaut. Jetzt kommt zumindest das „AbfahrtDatumZeit“ in der Variablen an.
Den Rest muss ich jetzt suchen. Log ist eine gute Idee.
<!DOCTYPE html>
<html>
<body>
<?php
if ( isset( $_POST["date"] ) ) $date =$_POST["date"] ; else $date="";
if ( isset( $_POST["name"] ) ) $locationName =$_POST["name"] ; else $locationName="";
if ( isset( $_POST["id"] ) ) $locationID =$_POST["id"] ; else $locationID="";
if ( isset( $_POST["longitude"] ) )$longitude =$_POST["longitude"] ; else $longitude="";
if ( isset( $_POST["latitude"] ) ) $latitude =$_POST["latitude"] ; else $latitude="";
if ( isset( $_POST["entry"] ) ) $isEntry =$_POST["entry"] ; else $isEntry="";
// Daten in die Variablen schreiben
if ($isEntry)
$out = date('d.m.Y H:i:s') ." entryDate: " . $date . ", entered at " . $locationName . "
";
else
$out = date('d.m.Y H:i:s') ." exitDate: " . $date . ", exited at " . $locationName . "
";
echo $out;
// Logfile schreiben
$filename = "geofency.log";
$datei = fopen($filename,"a+");
fwrite($datei, $out . chr(13));
fclose($datei);
// Example condition:
// Send http request if it's later than 8pm (20:00).
$hour=substr($date, 8, 2);
if ($hour > '20' && $isEntry) {
echo "It’s time to eat <After Eight> and switch on lights.
";
// Integrate your e.g. house automation system here ...
// http_get("http://www.mypage.com/switchOnLights.html”);
}
if ($isEntry)
{
SetValueInteger('AnkunftDatumZeit',time());
SetValueString('Latitude',$latitude);
SetValueString('Longitude',$longitude);
SetValueString('LocationID',$locationID);
SetValueString('LocationName',$locationName);
}
else
{
SetValueInteger('AbfahrtDatumZeit',time());
SetValueString('Latitude',$latitude);
SetValueString('Longitude',$longitude);
SetValueString('LocationID',$locationID);
SetValueString('LocationName',$locationName);
}
?>
</body>
</html>
Wirklich ?
Normalweise braucht der Befehl
SetValueInteger('AbfahrtDatumZeit',time());
Die ID der Variablen. also eher so
SetValueInteger(12345,time());
Stimmt. Das war halt früher mal anders Da wurden die Variablen noch so angesprochen.
Also wenn ich es so eintrage, kommt jeweils im log und in den Variablen die „1“ an. Anscheinend kommt da nix an. Ich teste das dann morgen nochmal live …
if ( isset( $_POST["date"] ) ) $date =$_POST["date"] ; else $date="1";
if ( isset( $_POST["name"] ) ) $locationName =$_POST["name"] ; else $locationName="1";
if ( isset( $_POST["id"] ) ) $locationID =$_POST["id"] ; else $locationID="1";
if ( isset( $_POST["longitude"] ) )$longitude =$_POST["longitude"] ; else $longitude="1";
if ( isset( $_POST["latitude"] ) ) $latitude =$_POST["latitude"] ; else $latitude="1";
if ( isset( $_POST["entry"] ) ) $isEntry =$_POST["entry"] ; else $isEntry="1";
Ich hoffe du kommst jetzt weiter. Bin noch ein bisschen da.
Hab eben gerade Feierabend gehabt.
Bei Fragen einfach schreiben
Vielen Dank für Deine Hilfe. Ich habe gerade Urlaub und endlich mal wieder Zeit für IPS und neue Ideen
Morgen geht es weiter denn so um 6 Uhr ist die Nacht zu Ende.
Viele Dinge sind schon umgesetzt aber irgendwie gibt es ja immer mal wieder neue Dinge, die unbedingt realisiert werden müssen. Die Anwesenheitskontrolle ist ja schon super lange ein Thema ohne eine wirklich perfekte Lösung.
Ich berichte morgen, ob es jetzt klappt
Happy Night, Frank
Hallo 1007, hast Du mir bitte noch ein paar weitere Tipps/Hinweise zur Konfiguration mit deinem Script? Mir ist das leider auch zu hoch
Ich kann das geofency.php problemlos vom Device aus ansprechen, nur taucht im LOG geofency.txt nichts auf, auch kein Leereintrag.
-Was muss ich selbst anlegen ? Variablen ?
-Was im File anpassen ?
Vielen Dank schon mal !
Du hast keine Fehlermeldung im Meldungsfenster ?
Wenn du keine IPSLibrary hast solltest du alle
IPSLogger_Dbg(__FILE__,$out);
mal durch
IPS_Logmessage('Geofency',$out);
ersetzen.
Das Log wird aber angelegt ?
Im Ordner …\Logs\Geofency\ .
Gestern hab ich meine Version dahin erweitert , dass Kategorien und Variablen automatisch angelegt werden wenn
ich in der App neue Punkte anlege.
Doch, ich die IPSLibrary installiert (2.50.6) und nutze diese auch.
Nein, im IPSLogger finde ich die Daten nicht - evtl. wirds da nicht angelegt ?
Vielleicht liegt es am Logginlevel , aber im Meldungsfenster sollte es auch sein.
Das Script faengt ja so an
IPSUtils_Include ("IPSLogger.inc.php","IPSLibrary::app::core::IPSLogger");
$debug = true;
if ( !isset($_GET["device"] ) )
{
if ( $debug ) IPSLogger_Dbg(__FILE__,"Kein Device angegeben");
echo "Kein Device angegeben";
return;
}
if ( !isset( $_POST["date"] ) )
{
if ( $debug ) IPSLogger_Dbg(__FILE__,"Verbindungstest");
echo "Verbindungstest";
return;
}
Bei einem Verbindungstest in der App solltest du die Meldung zurueckbekommen „Verbindungstest“ oder ?
Ja, Verbindungstest wird rückgemeldet.