Der Samichlaus hinterliess mir angehängtes Skript. Damit liesse sich perfekt ein periodischen Retour Kanal erstellen mit vermutlich hoher Frequenz Möglichkeit.
@paresy Ich hoffe, dieses Skript überzeugt Dich, dies in Angriff zu nehmen. Ansonsten zeig mir eine Möglichkeit, wie ich feststelle, ob eine bestimmte DSUID im Configurator bereits erzeugt wurde. Wenn erzeugt dann welche IP-Symcon ID. Wie überschreibe ich dann den Wert dieser ID, da dieser bekanntlich „gesperrt“ ist. Ebenso sollte die DS_MakeRequest Funktion erweitert werden, weil jetzt „api/v1/“ anstatt „json/“ steht. Token-Abfrage ist sehr langsam.
$Server = "192.168.1.50";
$AppToken = "506aa41219d946d918cf7421ced104154e067c2e0c378cda8e50d6fcb1a12345"; //64-Stelligen Applikation Token
$tcpPort = "8080";
$dsuid="303505d7f8000000000000400002271a00";
$Call1 = "/api/v1/apartment?includeALL=true";
$Call2 = "/api/v1/apartment/status?includeAll=true";
$arrContextOptions=array(
"ssl"=>array(
"verify_peer"=>false,
"verify_peer_name"=>false,
),
);
$sessionToken = fdSLogin();
//fdSGetJson($Call1, $sessionToken);
$ist2=fdSGetJson($Call2, $sessionToken);
$ist2=json_decode($ist2,true);
$ist2=$ist2['data']['included']['dsDevices'];
foreach ($ist2 as $value)
{
if ($value["id"]==$dsuid){
$wert=$value['attributes']['functionBlocks']['0']['outputs']['0']['value'];
$level=$value['attributes']['functionBlocks']['0']['outputs']['0']['level'];
print_r($wert);
print_r($level);}
//;
}
/************************************************* Funktionen definieren **********************************/
/* digitalSTROM Login Prozedure Function */
function fdSLogin(){
global $Server;
global $tcpPort;
global $AppToken;
global $arrContextOptions;
if($sessionToken = file_get_contents("https://" . $Server . ":" . $tcpPort . "/json/system/loginApplication?loginToken=" . $AppToken, false, stream_context_create($arrContextOptions))){
$sessionToken = json_decode($sessionToken);
return $sessionToken->result->token;
}
else{
return "<font color='red'><b>ERROR:</b> unable to get loginToken from digitalSTROM Server</font><br>";
}
}
/* digitalSTROM get JSON content Function */
function fdSGetJson($call, $sessionToken){
global $Server;
global $tcpPort;
global $arrContextOptions;
$sHelp;
global $debug;
$sHelp = "https://" . $Server . ":" . $tcpPort . $call . "&token=" . $sessionToken;
if($jsonOutput = file_get_contents($sHelp , false, stream_context_create($arrContextOptions))){
return $jsonOutput; // plain output
}
else{
return "<font color='red'><b>ERROR:</b> unable to get JSON Content from digitalSTROM Server</font><br>";
}
}