Hallo zusammen,
ich habe das Modul bei mir jetzt auch mal eingerichtet. Tests mit den Testbuttons der Geofency-App funktionieren auch prima.
Nun habe ich in der App verschiedene überwachte Orte eingerichtet. Für jeden Ort wird unter Device auch eine Bool-Variable mit dem Namen des übewachten Ortes eingerichtet und korrekt auf absent/present gesetzt. Die Variablen Latitude, Longitude und Timestamp gibt es aber nur einmal und werden beim Betätigen des Testbuttons aller überwachteten Orte gleichermaßen gesetzt. Erwarten würde ich eigentlich, dass für jeden überwachteten Ort eigene Variablen „Latitude“, „Longitude“, „Timestamp“ erzeugt werden. Also z.B. so:
Geofency
-> Device
-> <überwachter Ort 1>
-> Latitude
-> Longitude
-> Timestamp
-> <überwachter Ort 2>
-> Latitude
-> Longitude
-> Timestamp
EDIT:
In der module.php habe ich nun folgendes geändert. Damit scheint es nun nach meinen Wünschen zu funktionieren:
/*
$deviceID = $this->CreateInstanceByIdent($this->InstanceID, $this->ReduceGUIDToIdent($_POST['device']), "Device");
SetValue($this->CreateVariableByIdent($deviceID, "Latitude", "Latitude", 2), floatval($_POST['latitude']));
SetValue($this->CreateVariableByIdent($deviceID, "Longitude", "Longitude", 2), floatval($_POST['longitude']));
SetValue($this->CreateVariableByIdent($deviceID, "Timestamp", "Timestamp", 1, "~UnixTimestamp"), intval(strtotime($_POST['date'])));
SetValue($this->CreateVariableByIdent($deviceID, $this->ReduceGUIDToIdent($_POST['id']), utf8_decode($_POST['name']), 0, "~Presence"), intval($_POST['entry']) > 0);
*/
$deviceID = $this->CreateInstanceByIdent($this->InstanceID, $this->ReduceGUIDToIdent($_POST['device']), "Device");
SetValue($this->CreateVariableByIdent($deviceID, $this->ReduceGUIDToIdent($_POST['id']), utf8_decode($_POST['name']), 0, "~Presence"), intval($_POST['entry']) > 0);
$objektID = @IPS_GetObjectIDByName(utf8_decode($_POST['name']), $deviceID);
SetValue($this->CreateVariableByIdent($objektID, "Latitude", "Latitude", 2), floatval($_POST['latitude']));
SetValue($this->CreateVariableByIdent($objektID, "Longitude", "Longitude", 2), floatval($_POST['longitude']));
SetValue($this->CreateVariableByIdent($objektID, "Timestamp", "Timestamp", 1, "~UnixTimestamp"), intval(strtotime($_POST['date'])));
Gruß
Peter