Perfekt danke.
Ich schnalle erst jetzt, dass deine Änderungen ja eigentlich die Umlaute in den Variablen ermöglichen und nicht umwandeln.
Dadurch, dass ich es vorher falsch gemacht habe, hat es alle Umlaute umgewandelt…
Jetzt mache ich mich an den zweiten, ähnlichen Script, den ich bereits abgeändert habe, nachdem ich so viel Inputs erhalten habe.
Diesen Script gibt es, wie schon vorher erwähnt, bereits im Forum. Nun ist er aber optimiert.
Auch dieser greift einen Webhook ab, welcher von Traccar die Events als json geliefert bekommt. Vielleicht magst du mal drüber sehen
<?
$ParentID = IPS_GetParent($_IPS['SELF']);
$hooks = file_get_contents("php://input");
$hooks =json_decode($hooks, true);
$NameDummyInstanz = $hooks['device']['name'];
$DummyID = CreateDummyInstance($ParentID,$NameDummyInstanz);
date_default_timezone_set("Europe/Berlin");
$timestamp = time();
$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("H:i",$timestamp);
$event = $hooks['event']['type'];
$id = CreateVariableByName($DummyID, 'Event', 3);
SetValue($id, $event);
if ( ($event == 'geofenceEnter') or ($event == 'geofenceExit') )
{
$geofence = $hooks['geofence']['name'];
$latitude = $hooks['position']['latitude'];
$longitude = $hooks['position']['longitude'];
$altitude = $hooks['position']['altitude'];
$address = $hooks['position']['address'];
$id = CreateVariableByName($DummyID, $geofence, 0);
$id = CreateVariableByName($DummyID, 'Breitengrad', 2);
SetValue($id, $latitude);
$id = CreateVariableByName($DummyID, 'Längengrad', 2);
SetValue($id, $longitude);
$id = CreateVariableByName($DummyID, 'Höhe', 2);
SetValue($id, $altitude);
$id = CreateVariableByName($DummyID, 'Adresse', 3);
SetValue($id, $address);
$geofence_ID = IPS_GetObjectIDByName($geofence, $DummyID );
if ($event == 'geofenceEnter')
{ SetValue ($geofence_ID ,1 );
$id = CreateVariableByName($DummyID, $geofence.' angekommen', 3);
SetValue ($id ,($datum." - ".$uhrzeit." Uhr" ));
}
if ($event == 'geofenceExit')
{ SetValue ($geofence_ID ,0 );
$id = CreateVariableByName($DummyID, $geofence.' verlassen', 3);
SetValue ($id ,($datum." - ".$uhrzeit." Uhr"));
}
}
else
{
$id = CreateVariableByName($DummyID, 'Zeit-'.$event, 3);
SetValue ($id ,($datum." - ".$uhrzeit." Uhr" ));
}
if ( ($event == 'deviceMoving') or ($event == 'deviceStopped') ){
$latitude = $hooks['position']['latitude'];
$longitude = $hooks['position']['longitude'];
$altitude = $hooks['position']['altitude'];
$address = $hooks['position']['address'];
$speed = $hooks['position']['speed'];
$id = CreateVariableByName($DummyID, 'Breitengrad', 2);
SetValue($id, $latitude);
$id = CreateVariableByName($DummyID, 'Längengrad', 2);
SetValue($id, $longitude);
$id = CreateVariableByName($DummyID, 'Höhe', 2);
SetValue($id, $altitude);
$id = CreateVariableByName($DummyID, 'Adresse', 3);
SetValue($id, $address);
$id = CreateVariableByName($DummyID, 'Geschwindigkeit', 2);
SetValue($id, $speed);
}
function CreateVariableByName($dummyID, $name, $type)
{
$search = array("Ä", "Ö", "Ü", "ä", "ö", "ü", "ß", " ","_");
$replace = array("Ae", "Oe", "Ue", "ae", "oe", "ue", "ss", "","-");
$ident = str_replace($search, $replace, $name);
$vid = @IPS_GetObjectIDByIdent($ident, $dummyID);
if($vid===false) {
$vid = IPS_CreateVariable($type);
IPS_SetParent($vid, $dummyID);
IPS_SetName($vid, $name);
IPS_SetIdent($vid, $ident);
}
return $vid;
}
function CreateDummyInstance($id, $name)
{
$vid = @IPS_GetInstanceIDByName($name, $id);
if($vid===false) {
$vid = IPS_CreateInstance("{485D0419-BE97-4548-AA9C-C083EB82E61E}");
IPS_SetParent($vid, $id);
IPS_SetName($vid, $name);
}
return $vid;
}