Hallo,
ich habe folgendes Skript welches übre ein Ereignis alle 15 Sekunden gestartet wird:
<?
$url="http://10.0.0.16/homebus/?language=de_DE";
// möglicher Gerätestatus: 'Aus', 'In Betrieb'
$content = @file_get_contents($url);
if((strpos($http_response_header[0], "200") === false)) {
return;
}
$result=array();
$devices=simplexml_load_string($content);
foreach($devices as $device) {
$uid = str_replace("-", "N", $device->UID);
$name = utf8_decode($device->name);
$url = $device->actions->action->attributes()['URL'];
readdevice($uid, $name, $url);
}
function readdevice($uid, $name, $url)
{
$content = @file_get_contents($url);
if((strpos($http_response_header[0], "200") === false)) {
return;
}
$cid=GetDummyModule(IPS_GetParent($_IPS['SELF']), $uid, $name);
$device=simplexml_load_string($content);
$keys = $device->information;
foreach($keys->children() as $key)
{
if (utf8_decode($key['name'])=='Gerätestatus') {
$id=GetVariable($cid, filter_characters(utf8_decode($key['name'])), utf8_decode($key['name']),0);
SetValueBoolean ($id, ( utf8_decode($key['value']) == 'In Betrieb' ) );
if ( utf8_decode($key['value']) == 'Aus' ) {
$id=GetVariable($cid, 'Funktion', 'Funktion',3);
SetValueString($id, '');
$id=GetVariable($cid, 'Phase', 'Phase',3);
SetValueString($id, '');
$id=GetVariable($cid, 'Restzeit', 'Restzeit',3);
SetValueString($id, '');
$id=GetVariable($cid, 'Temperatur', 'Temperatur',3);
SetValueString($id, '');
$id=GetVariable($cid, 'Automatic', 'Automatic',3);
SetValueString($id, '');
$id=GetVariable($cid, 'Dauer', 'Dauer',3);
SetValueString($id, '');
if ( IPS_GetName($cid) == 'Wäschetrockner' ) {
$id=GetVariable($cid, 'Dauer', 'Dauer',3);
SetValueString($id, '');
$id=GetVariable($cid, 'Programm', 'Programm',3);
SetValueString($id, '');
$id=GetVariable($cid, 'Trockenstufe', 'Trockenstufe',3);
SetValueString($id, '');
}
elseif ( IPS_GetName($cid) == 'Dampfgarer' ) {
$id=GetVariable($cid, 'Temperatur', 'Temperatur',3);
SetValueString($id, '');
}
}
} else {
$id=GetVariable($cid, filter_characters(utf8_decode($key['name'])), utf8_decode($key['name']),3);
SetValueString($id, utf8_decode($key['value']));
}
}
}
function GetVariable($id, $ident, $name, $type)
{
$vid = @IPS_GetObjectIDByIdent($ident, $id);
if ($vid === false)
{
$vid = IPS_CreateVariable($type);
IPS_SetParent($vid, $id);
IPS_SetIdent($vid, $ident);
IPS_SetName($vid, $name);
IPS_SetInfo($vid, "This Variable was created by Script #$id");
IPS_SetVariableCustomProfile($vid, "~String");
}
return $vid;
}
function GetDummyModule($id, $ident, $name)
{
$iid = @IPS_GetObjectIDByIdent($ident, $id);
if ($iid === false)
{
$iid = IPS_CreateInstance("{485D0419-BE97-4548-AA9C-C083EB82E61E}");
IPS_SetParent($iid, $id);
IPS_SetIdent($iid, $ident);
IPS_SetName($iid, $name);
IPS_SetInfo($iid, "This Instance was created by Script #$id");
}
return $iid;
}
function filter_characters($input) {
$search = explode(",","ç,æ,œ,á,é,í,ó,ú,à,è,ì,ò,ù,ä,ë,ï,ö,ü,ÿ,â,ê,î,ô,û,å,e,i,ø,u,-, ");
$replace = explode(",","c,ae,oe,a,e,i,o,u,a,e,i,o,u,a,e,i,o,u,y,a,e,i,o,u,a,e,i,o,u,_,_");
return str_replace($search, $replace, $input);
}
?>