Servus zusammen,
also das ganz ist wirklich noch ein bissle primitiv. Wenn es aber hilft, das Thema weiter zu bringen, gerne
Script 1 / Einfach Befehle, Statusabfragen
<?
/*
$soap = new SoapClient("https://192.168.0.117:8080/dss.wsdl");
$result = $soap->GetKernelVersion();
echo "KernelVersion: ".$result;
*/
/* $fileContent = curl_exec($curl_handle);
//var_dump(curl_error($curl_handle));
$result = json_decode($fileContent, false);
$url = "https://192.168.0.117:8080/json/apartment/callScene?groupID=1&sceneNumber=1;
curl_setopt($curl_handle, CURLOPT_URL,$url);
var_dump($fileContent);
/*
$url = "https://192.168.0.117:8080/json/apartment/callScene?groupID=1&sceneNumber=17&token=$sessionToken";
curl_setopt($curl_handle, CURLOPT_URL,$url);
$fileContent = curl_exec($curl_handle);
var_dump($fileContent);
$url = "https://192.168.0.117:8080/json/apartment/callScene?groupID=1&sceneNumber=1&token=$sessionToken";
curl_setopt($curl_handle, CURLOPT_URL,$url);
$fileContent = curl_exec($curl_handle);
var_dump($fileContent);
*/
global $curl_handle;
$curl_handle=curl_init();
authenticate();
$url = 'https://192.168.0.117:8080/json/apartment/callScene?groupID=1&sceneNumber=17';
$jsResult = invokeDsCall($url);
var_dump($jsResult);
sleep(5);
$url = 'https://192.168.0.117:8080/json/apartment/callScene?groupID=1&sceneNumber=1';
$jsResult = invokeDsCall($url);
var_dump($jsResult);
/**
* Authentifizierung mit ds server, holt sessiontoken
*/
function authenticate()
{
global $sessionToken;
$sessionToken = null;
$token = '9dc46924327922c9c719f71547bc389753c631dc4dce05fbbe0f988ed3e211ed';
$url = 'https://192.168.0.117:8080/json/system/loginApplication?loginToken='.$token; //
$result = invokeDsCall($url);
$sessionToken = $result->result->token;
}
/*
* ruft eine Remote-Funktion mittels json interface beim DS Server auf
* dekodiert das Ergebnis und gibt es als Objekt zurück
*/
function invokeDsCall($url)
{
global $sessionToken, $curl_handle;
if (isset($sessionToken) && $sessionToken != null) // wenn es ein session Token gibt, verwende es; gibt es nicht beim 1. Aufruf (Funktion authenticate())
$url = "$url&token=$sessionToken";
var_dump($url);
curl_setopt($curl_handle, CURLOPT_URL,$url);
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT,5);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_handle, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl_handle, CURLOPT_FAILONERROR, true);
$fileContent = curl_exec($curl_handle);
var_dump(curl_error($curl_handle));
return json_decode($fileContent, false);
}
curl_close($curl_handle);
?>
Script 2, Ansteuerung von Stimmungen uns Auswertungen.
Mein Ziel war es hier, alle Stimmungen und Aktoren mal auszulesen. Diese dann eventuell mit einer Variable/Button zu verbinden. Aber eben, war/ist mein Ziel. Ist noch am entstehen.
<?
global $curl_handle;
$curl_handle=curl_init();
authenticate();
$url = 'https://192.168.0.117:8080/json/apartment/getStructure?';
$jsResult = invokeDsCall($url);
if ($jsResult->ok != true)
{
echo 'ERROR: no result';
return;
}
foreach($jsResult->result->apartment->zones as $zone)
{
echo $zone->id . ': ' .utf8_decode($zone->name)."
";
echo "Devices:
";
foreach($zone->devices as $device)
{
echo $device->id . ': name=' .utf8_decode($device->name).', hwInfo=' .utf8_decode($device->hwInfo) ."
";
}
echo "
";
}
// callScene => broadcast an alle der Aktoren jeweiligen Farbe
// https://192.168.0.117:8080/json/apartment/callScene?groupName=gray&sceneNumber=0 => alle Rolladen aus
// fernsehen 100% => 75%
$url = 'https://192.168.0.117:8080/json/apartment/callScene?sceneNumber=5';
$jsResult = invokeDsCall($url);
//var_dump($jsResult);
sleep(5);
$url = 'https://192.168.0.117:8080/json/apartment/callScene?sceneNumber=17';
$jsResult = invokeDsCall($url);
curl_close($curl_handle);
return true;
/**
* Authentifizierung mit ds server, holt sessiontoken
*/
function authenticate()
{
global $sessionToken;
$sessionToken = null;
$token = '9dc46924327922c9c719f71547bc389753c631dc4dce05fbbe0f988ed3e211ed';
$url = 'https://192.168.0.117:8080/json/system/loginApplication?loginToken='.$token; //
$result = invokeDsCall($url);
$sessionToken = $result->result->token;
}
/*
* ruft eine Remote-Funktion mittels json interface beim DS Server auf
* dekodiert das Ergebnis und gibt es als Objekt zurück
*/
function invokeDsCall($url)
{
global $sessionToken, $curl_handle;
if (isset($sessionToken) && $sessionToken != null) // wenn es ein session Token gibt, verwende es; gibt es nicht beim 1. Aufruf (Funktion authenticate())
$url = "$url&token=$sessionToken";
curl_setopt($curl_handle, CURLOPT_URL,$url);
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT,5);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_handle, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl_handle, CURLOPT_FAILONERROR, true);
$fileContent = curl_exec($curl_handle);
$error = curl_error($curl_handle);
if ($error != null) echo "ERROR: $error, url: $url
";
return json_decode($fileContent, false);
}
?>
Hoffe wir kommen da auf nen „grünen Zweig“