Also bei mir kommen keine Fehlermeldungen.
Ich habe aber trotzdem das Script für den Datenabruf mal neu gemacht. Jetzt muss man die Variablen der zu Empfangenden Daten nicht mehr händisch anlegen.
<?php
//Variablennummer mit Access Token in die Klammer eingeben
$token = GetValue ();
//Geräte ID zwischen die ' eingeben
$geraet = '';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.oilfox.io/customer-api/v1/device/' .$geraet);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
$headers = array();
$headers[] = "Authorization: Bearer ".$token;
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close ($ch);
//Anlage der Variablenprofile
if (IPS_VariableProfileExists("intTage") == false){
IPS_CreateVariableProfile("intTage", 1);
IPS_SetVariableProfileText("intTage", "", " Tage");
}
if (IPS_VariableProfileExists("intProzent") == false){
IPS_CreateVariableProfile("intProzent", 1);
IPS_SetVariableProfileText("intProzent", "", " %");
}
if (IPS_VariableProfileExists("intLiter") == false){
IPS_CreateVariableProfile("intLiter", 1);
IPS_SetVariableProfileText("intLiter", "", " L");
}
//Anlage der Variablen
$hwidID = @IPS_GetObjectIDByIdent("hwid", $_IPS['SELF']);
if ($hwidID == false){
$hwidID = IPS_CreateVariable(3);
IPS_SetName($hwidID, "hwid"); // Variable benennen
IPS_SetParent($hwidID, $_IPS['SELF']);
IPS_SetIdent($hwidID, "hwid");
}
$currentMeteringAtID = @IPS_GetObjectIDByIdent("currentMeteringAt", $_IPS['SELF']);
if ($currentMeteringAtID == false){
$currentMeteringAtID = IPS_CreateVariable(3);
IPS_SetName($currentMeteringAtID, "currentMeteringAt"); // Variable benennen
IPS_SetParent($currentMeteringAtID, $_IPS['SELF']);
IPS_SetIdent($currentMeteringAtID, "currentMeteringAt");
}
$fillLevelPercentID = @IPS_GetObjectIDByIdent("fillLevelPercent", $_IPS['SELF']);
if ($fillLevelPercentID == false){
$fillLevelPercentID = IPS_CreateVariable(1);
IPS_SetName($fillLevelPercentID, "fillLevelPercent"); // Variable benennen
IPS_SetParent($fillLevelPercentID, $_IPS['SELF']);
IPS_SetIdent($fillLevelPercentID, "fillLevelPercent");
IPS_SetVariableCustomProfile($fillLevelPercentID, "intProzent");
}
$batteryLevelID = @IPS_GetObjectIDByIdent("batteryLevel", $_IPS['SELF']);
if ($batteryLevelID == false){
$batteryLevelID = IPS_CreateVariable(3);
IPS_SetName($batteryLevelID, "batteryLevel"); // Variable benennen
IPS_SetParent($batteryLevelID, $_IPS['SELF']);
IPS_SetIdent($batteryLevelID, "batteryLevel");
}
$daysReachID = @IPS_GetObjectIDByIdent("daysReach", $_IPS['SELF']);
if ($daysReachID == false){
$daysReachID = IPS_CreateVariable(1);
IPS_SetName($daysReachID, "daysReach"); // Variable benennen
IPS_SetParent($daysReachID, $_IPS['SELF']);
IPS_SetIdent($daysReachID, "daysReach");
IPS_SetVariableCustomProfile($daysReachID, "intTage");
}
$fillLevelQuantityID = @IPS_GetObjectIDByIdent("fillLevelQuantity", $_IPS['SELF']);
if ($fillLevelQuantityID == false){
$fillLevelQuantityID = IPS_CreateVariable(1);
IPS_SetName($fillLevelQuantityID, "fillLevelQuantity"); // Variable benennen
IPS_SetParent($fillLevelQuantityID, $_IPS['SELF']);
IPS_SetIdent($fillLevelQuantityID, "fillLevelQuantity");
IPS_SetVariableCustomProfile($fillLevelQuantityID, "intLiter");
}
$nextMeteringAtID = @IPS_GetObjectIDByIdent("nextMeteringAt", $_IPS['SELF']);
if ($nextMeteringAtID == false){
$nextMeteringAtID = IPS_CreateVariable(3);
IPS_SetName($nextMeteringAtID, "nextMeteringAt"); // Variable benennen
IPS_SetParent($nextMeteringAtID, $_IPS['SELF']);
IPS_SetIdent($nextMeteringAtID, "nextMeteringAt");
}
$quantityUnitID = @IPS_GetObjectIDByIdent("quantityUnit", $_IPS['SELF']);
if ($quantityUnitID == false){
$quantityUnitID = IPS_CreateVariable(3);
IPS_SetName($quantityUnitID, "quantityUnit"); // Variable benennen
IPS_SetParent($quantityUnitID, $_IPS['SELF']);
IPS_SetIdent($quantityUnitID, "quantityUnit");
}
//Wird aktuell nicht benötigt
//$validationErrorID = @IPS_GetObjectIDByIdent("validationError", $_IPS['SELF']);
//if ($validationErrorID == false){
//$validationErrorID = IPS_CreateVariable(3);
//IPS_SetName($validationErrorID, "validationError"); // Variable benennen
//IPS_SetParent($validationErrorID, $_IPS['SELF']);
//IPS_SetIdent($validationErrorID, "validationError");
//}
$a =(json_decode($result));
//hwid = string = Hardware ID of the device
SetValue(IPS_GetObjectIDByIdent("hwid", $_IPS['SELF']), $a->{"hwid"});
//currentMeteringAt = string = RFC3339 timestamp
SetValue(IPS_GetObjectIDByIdent("currentMeteringAt", $_IPS['SELF']), $a->{"currentMeteringAt"});
//fillLevelPercent = int, optional = fill level in %, 0-100
SetValue(IPS_GetObjectIDByIdent("fillLevelPercent", $_IPS['SELF']), $a->{"fillLevelPercent"});
//batteryLevel = string, optional = enum of the battery level, see below
SetValue(IPS_GetObjectIDByIdent("batteryLevel", $_IPS['SELF']), $a->{"batteryLevel"});
//daysReach = int, optional = estimated days until the storage runs empty
SetValue(IPS_GetObjectIDByIdent("daysReach", $_IPS['SELF']), $a->{"daysReach"});
//fillLevelQuantity = int, optional = fill level in kg or L
SetValue(IPS_GetObjectIDByIdent("fillLevelQuantity", $_IPS['SELF']), $a->{"fillLevelQuantity"});
//nextMeteringAt = string = RFC3339 timestamp
SetValue(IPS_GetObjectIDByIdent("nextMeteringAt", $_IPS['SELF']), $a->{"nextMeteringAt"});
//quantityUnit = string = unit of the fill level: kg or L
SetValue(IPS_GetObjectIDByIdent("quantityUnit", $_IPS['SELF']), $a->{"quantityUnit"});
//validationError = string, optional = enum with errors regarding the measurement, see below
//SetValue(IPS_GetObjectIDByIdent("validationError", $_IPS['SELF']), $a->{"validationError"});