public function ApplyChanges() { //Never delete this line! parent::ApplyChanges(); $change = false; // Zwangskonfiguration des ClientSocket $ParentID = $this->GetParent(); if (!($ParentID === false)) { if (IPS_GetProperty($ParentID, 'Host') != $this->ReadPropertyString('Host')) { IPS_SetProperty($ParentID, 'Host', $this->ReadPropertyString('Host')); $change = true; } if (IPS_GetProperty($ParentID, 'Port') != $this->ReadPropertyInteger('Port')) { IPS_SetProperty($ParentID, 'Port', $this->ReadPropertyInteger('Port')); $change = true; } $ParentOpen = $this->ReadPropertyBoolean('Open'); // Keine Verbindung erzwingen wenn Host leer ist, sonst folgt später Exception. if (IPS_GetProperty($ParentID, 'Open') != $ParentOpen) { IPS_SetProperty($ParentID, 'Open', $ParentOpen); $change = true; } if ($change) { @IPS_ApplyChanges($ParentID); } } /* Eigene Profile */ //Workaround für persistente Daten der Instanz // Wenn wir verbunden sind, am Gateway mit listen anmelden für Events if ($this->ReadPropertyBoolean('Open') and $this->HasActiveParent($ParentID)) { $this->SetStatus(102); } }
/** * This function will be available automatically after the module is imported with the module control. * Using the custom prefix this function will be callable from PHP and JSON-RPC through: * * LOCATIVE_ProcessHookData($id); * */ public function ProcessHookData() { if ($_IPS['SENDER'] == "Execute") { echo "This script cannot be used this way."; return; } if (IPS_GetProperty($this->InstanceID, "Username") != "" || IPS_GetProperty($this->InstanceID, "Password") != "") { if (!isset($_SERVER['PHP_AUTH_USER'])) { $_SERVER['PHP_AUTH_USER'] = ""; } if (!isset($_SERVER['PHP_AUTH_PW'])) { $_SERVER['PHP_AUTH_PW'] = ""; } if ($_SERVER['PHP_AUTH_USER'] != IPS_GetProperty($this->InstanceID, "Username") || $_SERVER['PHP_AUTH_PW'] != IPS_GetProperty($this->InstanceID, "Password")) { header('WWW-Authenticate: Basic Realm="Locative WebHook"'); header('HTTP/1.0 401 Unauthorized'); echo "Authorization required"; return; } } /** The following $_POST data are slightly different from Geofency **/ if (!isset($_POST['device']) || !isset($_POST['id']) || !isset($_POST['trigger'])) { IPS_LogMessage("Locative", "Malformed data: " . print_r($_POST, true)); return; } $trigger = strtolower(isset($_POST["trigger"]) ? $_POST["trigger"] : ""); $name = htmlentities(utf8_decode(isset($_REQUEST["name"]) ? $_REQUEST["name"] : "Home")); IPS_LogMessage("IPSLocative", print_r($_REQUEST, true)); $deviceID = $this->CreateInstanceByIdent($this->InstanceID, $this->ReduceGUIDToIdent($_POST['device']), "Device"); SetValue($this->CreateVariableByIdent($deviceID, "Latitude", "Latitude", 2), floatval($_POST['latitude'])); SetValue($this->CreateVariableByIdent($deviceID, "Longitude", "Longitude", 2), floatval($_POST['longitude'])); SetValue($this->CreateVariableByIdent($deviceID, "Time", "Time", 1, "~UnixTimestamp"), $_POST['timestamp']); SetValue($this->CreateVariableByIdent($deviceID, "LastTrigger", "LastTrigger", 3), $trigger); $varID = $this->CreateVariableByIdent($deviceID, $name, $name, 0, "~Presence"); switch ($trigger) { case "enter": SetValue($varID, 1); echo "Welcome!"; break; case "exit": SetValue($varID, 0); echo "Bye!"; break; case "test": $status = isset($_GET["status"]) ? $_GET["status"] == "1" : false; echo "Test for {$name} received. Status {$status}"; SetValue($varID, $status); break; } }
private function RegisterHook($Hook, $TargetID) { $ids = IPS_GetInstanceListByModuleID("{015A6EB8-D6E5-4B93-B496-0D3F77AE9FE1}"); if (sizeof($ids) > 0) { $hooks = json_decode(IPS_GetProperty($ids[0], "Hooks"), true); $found = false; foreach ($hooks as $index => $hook) { if ($hook['Hook'] == "/hook/ips4WinDeviceReg") { if ($hook['TargetID'] == $TargetID) { return; } $hooks[$index]['TargetID'] = $TargetID; $found = true; } } if (!$found) { $hooks[] = array("Hook" => "/hook/ips4WinDeviceReg", "TargetID" => $TargetID); } IPS_SetProperty($ids[0], "Hooks", json_encode($hooks)); IPS_ApplyChanges($ids[0]); } }
public function RequestRead() { $Address = 0x0 + ($this->ReadPropertyInteger("Phase") - 1) * 2; $Volt = $this->SendDataToParent(json_encode(array("DataID" => "{E310B701-4AE7-458E-B618-EC13A1A6F6A8}", "Function" => 3, "Address" => $Address, "Quantity" => 2, "Data" => ""))); if ($Volt === false) { return; } $Volt = unpack("n*", substr($Volt, 2)); $Address = 0xc + ($this->ReadPropertyInteger("Phase") - 1) * 2; $Ampere = $this->SendDataToParent(json_encode(array("DataID" => "{E310B701-4AE7-458E-B618-EC13A1A6F6A8}", "Function" => 3, "Address" => $Address, "Quantity" => 2, "Data" => ""))); if ($Ampere === false) { return; } $Ampere = unpack("n*", substr($Ampere, 2)); $Address = 0x12 + ($this->ReadPropertyInteger("Phase") - 1) * 2; $Watt = $this->SendDataToParent(json_encode(array("DataID" => "{E310B701-4AE7-458E-B618-EC13A1A6F6A8}", "Function" => 3, "Address" => $Address, "Quantity" => 2, "Data" => ""))); if ($Watt === false) { return; } $Watt = unpack("n*", substr($Watt, 2)); $Address = 0x46 + ($this->ReadPropertyInteger("Phase") - 1) * 2; $KWh = $this->SendDataToParent(json_encode(array("DataID" => "{E310B701-4AE7-458E-B618-EC13A1A6F6A8}", "Function" => 3, "Address" => $Address, "Quantity" => 2, "Data" => ""))); if ($KWh === false) { return; } $KWh = unpack("n*", substr($KWh, 2)); if (IPS_GetProperty(IPS_GetInstance($this->InstanceID)['ConnectionID'], "SwapWords")) { SetValue($this->GetIDForIdent("Volt"), ($Volt[1] + ($Volt[2] << 16)) / 10); SetValue($this->GetIDForIdent("Ampere"), ($Ampere[1] + ($Ampere[2] << 16)) / 1000); SetValue($this->GetIDForIdent("Watt"), ($Watt[1] + ($Watt[2] << 16)) / 10); SetValue($this->GetIDForIdent("kWh"), ($KWh[1] + ($KWh[2] << 16)) / 10); } else { SetValue($this->GetIDForIdent("Volt"), ($Volt[2] + ($Volt[1] << 16)) / 10); SetValue($this->GetIDForIdent("Ampere"), ($Ampere[2] + ($Ampere[1] << 16)) / 1000); SetValue($this->GetIDForIdent("Watt"), ($Watt[2] + ($Watt[1] << 16)) / 10); SetValue($this->GetIDForIdent("kWh"), ($KWh[2] + ($KWh[1] << 16)) / 10); } }
/** * Forward Switch data to SwitchDev instances * Create one if needed * @param array $data */ private function SendSwitchData($data) { //parsing was OK, start distributing $this->debug(__FUNCTION__, 'Prepare'); $class = __CLASS__ . "-SW"; $Device = $data['DeviceID']; $typ = $data['Typ']; $found = false; $instID = 0; $caps = "Switch;Dimmer;Timer;FS20;TimerActionCode"; $instances = IPS_GetInstanceListByModuleID($this->module_interfaces['SwitchDev']); foreach ($instances as $instID) { $I = IPS_GetInstance($instID); $iid = (string) IPS_GetProperty($instID, 'DeviceID'); $ityp = (string) IPS_GetProperty($instID, 'Typ'); $iclass = (string) IPS_GetProperty($instID, 'Class'); $this->debug(__FUNCTION__, "Check my Device '{$Device}'' with Instance {$instID}({$iid})"); if ($I['ConnectionID'] == $this->InstanceID) { //my child if ($iid == $Device && $iclass == $class && $ityp == $typ) { $this->debug(__FUNCTION__, 'Use existing ID:' . $instID); $found = true; break; } //if destdevice } //if } //for if (!$found) { //no free instance available, have to create a new one if ($this->ReadPropertyBoolean('AutoCreate') == true) { //new instance needed $this->debug(__FUNCTION__, 'CREATE NEW Device'); $instID = $this->CreateSwitchDevice($data, $caps); $found = true; } else { $this->debug(__FUNCTION__, 'Creating FS20 Device ID ' . $Device . ' disabled by Property AutoCreate'); IPS_LogMessage($class, 'Creating FS20 Device ID ' . $Device . ' disabled by Property AutoCreate'); } //if autocreate } //if found if ($found && $instID > 0) { //send record to children $json = json_encode(array("DataID" => $this->module_interfaces['SWD-RX'], "DeviceID" => $data['DeviceID'], "Typ" => $data['Typ'], "Class" => $class, "SWData" => $data)); $this->debug(__FUNCTION__, $json); @$this->SendDataToChildren($json); $datum = date('Y-m-d H:i:s', time()); $vid = @$this->GetIDForIdent('LastUpdate'); if ($vid) { SetValueString($vid, $datum); } } //found }
/** * check if debug is enabled * @return bool */ protected function isDebug() { $debug = @IPS_GetProperty($this->InstanceID, 'Debug'); return $debug === true; }
public function SetSpdifInput($input_instance) { $ip = $this->ReadPropertyString("IPAddress"); $timeout = $this->ReadPropertyString("TimeOut"); if ($timeout && Sys_Ping($ip, $timeout) != true) { throw new Exception("Sonos Box " . $ip . " is not available"); } if (@GetValue($this->GetIDForIdent("MemberOfGroup"))) { $this->SetGroup(0); } include_once __DIR__ . "/sonosAccess.php"; $sonos = new SonosAccess($ip); $sonos->SetAVTransportURI("x-sonos-htastream:" . IPS_GetProperty($input_instance, "RINCON") . ":spdif"); $sonos->Play(); }
protected function GetIPGateway() { $ParentID = $this->GetParent(); $IPGateway = IPS_GetProperty($ParentID, 'Host'); return $IPGateway; }
if ($parent === false) { die("Manuelle Angabe der ID für Gewerke nicht vorhanden!"); } } if ($ScriptCat == 0) { $ScriptCat = GetOrCreateCategoryByName(0, "Aktions-Scripte"); } else { $parent = @IPS_GetObject($ScriptCat); if ($parent === false) { die("Manuelle Angabe der ID für Scripte nicht vorhanden!"); } } $HMDevices = IPS_GetInstanceListByModuleID("{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}"); $HMAdresses = array(); foreach ($HMDevices as $HMDevice) { $HMAdresses[] = IPS_GetProperty($HMDevice, "Address"); } foreach ($HMCcuAddress as $Key) { $HMParent = $HMSockets[$Key]; if (IPS_GetInstance($HMParent)['InstanceStatus'] != 102) { if (IPS_GetInstance($HMParent)['InstanceStatus'] >= 200) { if (@IPS_ApplyChanges($HMSocket) === false) { echo "Homematic-Socket (" . IPS_GetName($HMParent) . ") mit der InstanzID " . $HMParent . " konnte nicht reaktiviert werden." . PHP_EOL; } } if (IPS_GetInstance($HMParent)['InstanceStatus'] != 102) { echo "Homematic-Socket (" . IPS_GetName($HMParent) . ") mit der InstanzID " . $HMParent . " ist nicht aktiv." . PHP_EOL; echo " Überspinge alle Geräte dieser CCU" . PHP_EOL; echo "--------------------------------------------------------------------" . PHP_EOL; continue; }
/** * Forward Energy data to EnergyDev instances * Create one if needed * @param $caps string * @param $data array */ private function SendENData($caps, $data) { $this->debug(__FUNCTION__, 'Prepare'); $datum = date('Y-m-d H:i:s', time()); $data['Date'] = $datum; $Device = $data['Id']; $typ = $data['Typ']; $branch = $data['Branch']; $found = false; $instID = 0; $class = __CLASS__ . "-EN"; $instances = IPS_GetInstanceListByModuleID($this->module_interfaces['EnergyDev']); foreach ($instances as $instID) { $I = IPS_GetInstance($instID); $iid = (string) IPS_GetProperty($instID, 'DeviceID'); $ityp = (string) IPS_GetProperty($instID, 'Typ'); $iclass = (string) IPS_GetProperty($instID, 'Class'); //$this->debug(__FUNCTION__, "Check my Device '$Device'' with Instance $instID($iid)"); if ($I['ConnectionID'] == $this->InstanceID) { //my child if ($iid == $Device && $iclass == $class && $ityp == $typ) { $this->debug(__FUNCTION__, 'Use existing ID:' . $instID); $found = true; break; } //if destdevice } //if } //for if (!$found) { //no free instance available, have to create a new one if ($this->ReadPropertyBoolean('AutoCreate') == true) { //new instance needed $this->debug(__FUNCTION__, 'CREATE NEW Energy Device ' . $Device); $instID = $this->CreateEnergyDevice($data, $caps); $found = true; } else { $this->debug(__FUNCTION__, "Creating XS1 {$branch} Energy Device " . $Device . ' disabled by Property AutoCreate'); IPS_LogMessage(__CLASS__, "Creating XS1 {$branch} Energy Device " . $Device . ' disabled by Property AutoCreate'); } //if autocreate } //if found if ($found && $instID > 0) { //send record to children $json = json_encode(array("DataID" => $this->module_interfaces['EN-RX'], "DeviceID" => $Device, "Typ" => $typ, "Class" => $class, "ENData" => $data)); $this->debug(__FUNCTION__, "Json:" . $json); @$this->SendDataToChildren($json); } //found }
/** * Forward data to EnergyDev instances * Create one if needed * @param $data */ private function SendENData($data) { //parsing was OK, start distributing $this->debug(__FUNCTION__, 'Prepare ' . print_r($data, true)); $class = __CLASS__; if (!isset($data['Id']) || !isset($data['Typ'])) { IPS_LogMessage($class, 'Missing Data Id or Typ'); return; } $id = $data['Id']; $typ = $data['Typ']; $caps = ''; foreach ($this->fieldlist as $cap) { if (isset($data[$cap])) { $caps .= ";" . $cap; } } $caps = substr($caps, 1); $this->debug(__FUNCTION__, "USV {$id} Caps: {$caps} "); $found = false; $instID = 0; $instances = IPS_GetInstanceListByModuleID($this->module_interfaces['EnergyDev']); foreach ($instances as $instID) { $I = @IPS_GetInstance($instID); if ($I && $I['ConnectionID'] == $this->InstanceID) { //my child $iid = (string) IPS_GetProperty($instID, 'DeviceID'); $ityp = (string) IPS_GetProperty($instID, 'Typ'); $iclass = (string) IPS_GetProperty($instID, 'Class'); if ($iid == $id && $ityp == $typ && $iclass == $class) { $this->debug(__FUNCTION__, 'Use existing ID:' . $instID); $found = true; break; } //if destdevice } //if } //for if (!$found) { //no free instance available, have to create a new one if ($this->ReadPropertyBoolean('AutoCreate') == true) { //new instance needed $instID = $this->CreateENDevice($data, $caps); if ($instID > 0) { //new instance needed $this->debug(__FUNCTION__, 'CREATE Device with Caps: ' . $caps); $found = true; } } else { $this->debug(__FUNCTION__, 'Creating Device ID ' . $id . ' disabled by Property AutoCreate'); IPS_LogMessage($class, 'Creating Device ID ' . $id . ' disabled by Property AutoCreate'); } //if autocreate } //if found if ($found && $instID > 0) { //send record to children $json = json_encode(array("DataID" => $this->module_interfaces['EN-RX'], "DeviceID" => $id, "Typ" => $typ, "Class" => $class, "ENData" => $data)); $this->debug(__FUNCTION__, $json); @$this->SendDataToChildren($json); $this->log_data($data); } //found $this->debug(__FUNCTION__, 'Finished'); }
private function ReadBatteryStates() { $InstanzIDsListAll[] = IPS_GetInstanceListByModuleID("{A89F8DFA-A439-4BF1-B7CB-43D047208DDD}"); // FHT $InstanzIDsListAll[] = IPS_GetInstanceListByModuleID("{2FD7576A-D2AD-47EE-9779-A502F23CABB3}"); // FS20 HMS $InstanzIDsListAll[] = IPS_GetInstanceListByModuleID("{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}"); // HomeMatic $InstanzIDsListAll[] = IPS_GetInstanceListByModuleID("{101352E1-88C7-4F16-998B-E20D50779AF6}"); // Z-Wave $a = 0; $l = 0; foreach ($InstanzIDsListAll as $InstanzIDsList) { foreach ($InstanzIDsList as $InstanzID) { $InstanzHersteller = IPS_GetInstance($InstanzID); $InstanzHersteller = $InstanzHersteller["ModuleInfo"]["ModuleName"]; switch ($InstanzHersteller) { case "FHT": $InstanzHersteller = "FHT"; break; case "HMS": $InstanzHersteller = "HMS"; break; case "HomeMatic Device": $InstanzHersteller = "HomeMatic"; break; case "Z-Wave Module": $InstanzHersteller = "Z-Wave"; break; } //FHT $VarID = @IPS_GetObjectIDByIdent('LowBatteryVar', $InstanzID); if ($VarID !== false and $InstanzHersteller == "FHT") { $Var = IPS_GetVariable($VarID); $VarLastUpdated = $Var["VariableUpdated"]; $VarLastUpdatedDiffSek = time() - $VarLastUpdated; $DeviceID = IPS_GetProperty($InstanzID, "Address"); $LowBat = GetValueBoolean($VarID); if ($LowBat === true) { $Batterien_AR["Alle"][$a]["Name"] = $this->Umlaute_Ersetzen(IPS_GetName($InstanzID)); if ($this->ReadPropertyBoolean("NamenParentObjekt1CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr1NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle1TB")); $Batterien_AR["Alle"][$a][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } if ($this->ReadPropertyBoolean("NamenParentObjekt2CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr2NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle2TB")); $Batterien_AR["Alle"][$a][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } if ($this->ReadPropertyBoolean("NamenParentObjekt3CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr3NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle3TB")); $Batterien_AR["Alle"][$a][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } $Batterien_AR["Alle"][$a]["Batterie"] = "LEER"; $Batterien_AR["Alle"][$a]["Hersteller"] = $InstanzHersteller; $Batterien_AR["Alle"][$a]["ID"] = $DeviceID; $Batterien_AR["Alle"][$a]["Hersteller_ID"] = $InstanzHersteller . " - " . $DeviceID; $Batterien_AR["Alle"][$a]["LetztesVarUpdateTimestamp"] = $VarLastUpdated; $Batterien_AR["Alle"][$a]["LetztesVarUpdateVorSek"] = $VarLastUpdatedDiffSek; $Batterien_AR["Leer"][$l]["Name"] = $this->Umlaute_Ersetzen(IPS_GetName($InstanzID)); if ($this->ReadPropertyBoolean("NamenParentObjekt1CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr1NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle1TB")); $Batterien_AR["Leer"][$l][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } if ($this->ReadPropertyBoolean("NamenParentObjekt2CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr2NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle2TB")); $Batterien_AR["Leer"][$l][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } if ($this->ReadPropertyBoolean("NamenParentObjekt3CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr3NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle3TB")); $Batterien_AR["Leer"][$l][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } $Batterien_AR["Leer"][$l]["Batterie"] = "LEER"; $Batterien_AR["Leer"][$l]["Hersteller"] = $InstanzHersteller; $Batterien_AR["Leer"][$l]["ID"] = $DeviceID; $Batterien_AR["Leer"][$l]["Hersteller_ID"] = $InstanzHersteller . " - " . $DeviceID; $Batterien_AR["Leer"][$l]["LetztesVarUpdateTimestamp"] = $VarLastUpdated; $Batterien_AR["Leer"][$l]["LetztesVarUpdateVorSek"] = $VarLastUpdatedDiffSek; $a++; $l++; } else { $Batterien_AR["Alle"][$a]["Name"] = $this->Umlaute_Ersetzen(IPS_GetName($InstanzID)); if ($this->ReadPropertyBoolean("NamenParentObjekt1CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr1NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle1TB")); $Batterien_AR["Alle"][$a][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } if ($this->ReadPropertyBoolean("NamenParentObjekt2CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr2NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle2TB")); $Batterien_AR["Alle"][$a][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } if ($this->ReadPropertyBoolean("NamenParentObjekt3CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr3NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle3TB")); $Batterien_AR["Alle"][$a][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } $Batterien_AR["Alle"][$a]["Batterie"] = "OK"; $Batterien_AR["Alle"][$a]["Hersteller"] = $InstanzHersteller; $Batterien_AR["Alle"][$a]["ID"] = $DeviceID; $Batterien_AR["Alle"][$a]["Hersteller_ID"] = $InstanzHersteller . " - " . $DeviceID; $Batterien_AR["Alle"][$a]["LetztesVarUpdateTimestamp"] = $VarLastUpdated; $Batterien_AR["Alle"][$a]["LetztesVarUpdateVorSek"] = $VarLastUpdatedDiffSek; $a++; } } //FS20 HMS $VarID = @IPS_GetObjectIDByIdent('LowBatteryVar', $InstanzID); if ($VarID !== false and $InstanzHersteller == "HMS") { $Var = IPS_GetVariable($VarID); $VarLastUpdated = $Var["VariableUpdated"]; $VarLastUpdatedDiffSek = time() - $VarLastUpdated; $DeviceID = IPS_GetProperty($InstanzID, "DeviceID"); $LowBat = GetValueBoolean($VarID); if ($LowBat === true) { $Batterien_AR["Alle"][$a]["Name"] = $this->Umlaute_Ersetzen(IPS_GetName($InstanzID)); if ($this->ReadPropertyBoolean("NamenParentObjekt") == true) { if ($this->ReadPropertyBoolean("NamenParentObjekt1CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr1NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle1TB")); $Batterien_AR["Alle"][$a][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } } if ($this->ReadPropertyBoolean("NamenParentObjekt2CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr2NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle2TB")); $Batterien_AR["Alle"][$a][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } if ($this->ReadPropertyBoolean("NamenParentObjekt3CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr3NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle3TB")); $Batterien_AR["Alle"][$a][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } $Batterien_AR["Alle"][$a]["Batterie"] = "LEER"; $Batterien_AR["Alle"][$a]["Hersteller"] = $InstanzHersteller; $Batterien_AR["Alle"][$a]["ID"] = $DeviceID; $Batterien_AR["Alle"][$a]["Hersteller_ID"] = $InstanzHersteller . " - " . $DeviceID; $Batterien_AR["Alle"][$a]["LetztesVarUpdateTimestamp"] = $VarLastUpdated; $Batterien_AR["Alle"][$a]["LetztesVarUpdateVorSek"] = $VarLastUpdatedDiffSek; $Batterien_AR["Leer"][$l]["Name"] = $this->Umlaute_Ersetzen(IPS_GetName($InstanzID)); if ($this->ReadPropertyBoolean("NamenParentObjekt1CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr1NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle1TB")); $Batterien_AR["Leer"][$l][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } if ($this->ReadPropertyBoolean("NamenParentObjekt2CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr2NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle2TB")); $Batterien_AR["Leer"][$l][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } if ($this->ReadPropertyBoolean("NamenParentObjekt3CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr3NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle3TB")); $Batterien_AR["Leer"][$l][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } $Batterien_AR["Leer"][$l]["Batterie"] = "LEER"; $Batterien_AR["Leer"][$l]["Hersteller"] = $InstanzHersteller; $Batterien_AR["Leer"][$l]["ID"] = $DeviceID; $Batterien_AR["Leer"][$l]["Hersteller_ID"] = $InstanzHersteller . " - " . $DeviceID; $Batterien_AR["Leer"][$l]["LetztesVarUpdateTimestamp"] = $VarLastUpdated; $Batterien_AR["Leer"][$l]["LetztesVarUpdateVorSek"] = $VarLastUpdatedDiffSek; $a++; $l++; } else { $Batterien_AR["Alle"][$a]["Name"] = $this->Umlaute_Ersetzen(IPS_GetName($InstanzID)); if ($this->ReadPropertyBoolean("NamenParentObjekt1CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr1NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle1TB")); $Batterien_AR["Alle"][$a][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } if ($this->ReadPropertyBoolean("NamenParentObjekt2CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr2NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle2TB")); $Batterien_AR["Alle"][$a][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } if ($this->ReadPropertyBoolean("NamenParentObjekt3CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr3NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle3TB")); $Batterien_AR["Alle"][$a][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } $Batterien_AR["Alle"][$a]["Batterie"] = "OK"; $Batterien_AR["Alle"][$a]["Hersteller"] = $InstanzHersteller; $Batterien_AR["Alle"][$a]["ID"] = $DeviceID; $Batterien_AR["Alle"][$a]["Hersteller_ID"] = $InstanzHersteller . " - " . $DeviceID; $Batterien_AR["Alle"][$a]["LetztesVarUpdateTimestamp"] = $VarLastUpdated; $Batterien_AR["Alle"][$a]["LetztesVarUpdateVorSek"] = $VarLastUpdatedDiffSek; $a++; } } //HomeMatic $VarID = @IPS_GetObjectIDByIdent('LOWBAT', $InstanzID); if ($VarID !== false and $InstanzHersteller == "HomeMatic") { $Var = IPS_GetVariable($VarID); $VarLastUpdated = $Var["VariableUpdated"]; $VarLastUpdatedDiffSek = time() - $VarLastUpdated; $DeviceID = substr(IPS_GetProperty($InstanzID, "Address"), 0, -2); $LowBat = GetValueBoolean($VarID); if ($LowBat === true) { $Batterien_AR["Alle"][$a]["Name"] = $this->Umlaute_Ersetzen(IPS_GetName($InstanzID)); if ($this->ReadPropertyBoolean("NamenParentObjekt1CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr1NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle1TB")); $Batterien_AR["Alle"][$a][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } if ($this->ReadPropertyBoolean("NamenParentObjekt2CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr2NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle2TB")); $Batterien_AR["Alle"][$a][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } if ($this->ReadPropertyBoolean("NamenParentObjekt3CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr3NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle3TB")); $Batterien_AR["Alle"][$a][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } $Batterien_AR["Alle"][$a]["Batterie"] = "LEER"; $Batterien_AR["Alle"][$a]["Hersteller"] = $InstanzHersteller; $Batterien_AR["Alle"][$a]["ID"] = $DeviceID; $Batterien_AR["Alle"][$a]["Hersteller_ID"] = $InstanzHersteller . " - " . $DeviceID; $Batterien_AR["Alle"][$a]["LetztesVarUpdateTimestamp"] = $VarLastUpdated; $Batterien_AR["Alle"][$a]["LetztesVarUpdateVorSek"] = $VarLastUpdatedDiffSek; $Batterien_AR["Leer"][$l]["Name"] = $this->Umlaute_Ersetzen(IPS_GetName($InstanzID)); if ($this->ReadPropertyBoolean("NamenParentObjekt1CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr1NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle1TB")); $Batterien_AR["Leer"][$l][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } if ($this->ReadPropertyBoolean("NamenParentObjekt2CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr2NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle2TB")); $Batterien_AR["Leer"][$l][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } if ($this->ReadPropertyBoolean("NamenParentObjekt3CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr3NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle3TB")); $Batterien_AR["Leer"][$l][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } $Batterien_AR["Leer"][$l]["Batterie"] = "LEER"; $Batterien_AR["Leer"][$l]["Hersteller"] = $InstanzHersteller; $Batterien_AR["Leer"][$l]["ID"] = $DeviceID; $Batterien_AR["Leer"][$l]["Hersteller_ID"] = $InstanzHersteller . " - " . $DeviceID; $Batterien_AR["Leer"][$l]["LetztesVarUpdateTimestamp"] = $VarLastUpdated; $Batterien_AR["Leer"][$l]["LetztesVarUpdateVorSek"] = $VarLastUpdatedDiffSek; $a++; $l++; } else { $Batterien_AR["Alle"][$a]["Name"] = $this->Umlaute_Ersetzen(IPS_GetName($InstanzID)); if ($this->ReadPropertyBoolean("NamenParentObjekt1CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr1NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle1TB")); $Batterien_AR["Alle"][$a][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } if ($this->ReadPropertyBoolean("NamenParentObjekt2CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr2NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle2TB")); $Batterien_AR["Alle"][$a][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } if ($this->ReadPropertyBoolean("NamenParentObjekt3CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr3NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle3TB")); $Batterien_AR["Alle"][$a][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } $Batterien_AR["Alle"][$a]["Batterie"] = "OK"; $Batterien_AR["Alle"][$a]["Hersteller"] = $InstanzHersteller; $Batterien_AR["Alle"][$a]["ID"] = $DeviceID; $Batterien_AR["Alle"][$a]["Hersteller_ID"] = $InstanzHersteller . " - " . $DeviceID; $Batterien_AR["Alle"][$a]["LetztesVarUpdateTimestamp"] = $VarLastUpdated; $Batterien_AR["Alle"][$a]["LetztesVarUpdateVorSek"] = $VarLastUpdatedDiffSek; $a++; } } //Z-Wave $VarID = @IPS_GetObjectIDByIdent('BatteryLowVariable', $InstanzID); if ($VarID !== false and $InstanzHersteller == "Z-Wave") { $Var = IPS_GetVariable($VarID); $VarLastUpdated = $Var["VariableUpdated"]; $VarLastUpdatedDiffSek = time() - $VarLastUpdated; $DeviceID = IPS_GetProperty($InstanzID, "NodeID"); $LowBat = GetValueBoolean($VarID); if ($LowBat === true) { $Batterien_AR["Alle"][$a]["Name"] = $this->Umlaute_Ersetzen(IPS_GetName($InstanzID)); if ($this->ReadPropertyBoolean("NamenParentObjekt1CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr1NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle1TB")); $Batterien_AR["Alle"][$a][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } if ($this->ReadPropertyBoolean("NamenParentObjekt2CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr2NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle2TB")); $Batterien_AR["Alle"][$a][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } if ($this->ReadPropertyBoolean("NamenParentObjekt3CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr3NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle3TB")); $Batterien_AR["Alle"][$a][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } $Batterien_AR["Alle"][$a]["Batterie"] = "LEER"; $Batterien_AR["Alle"][$a]["Hersteller"] = $InstanzHersteller; $Batterien_AR["Alle"][$a]["ID"] = $DeviceID; $Batterien_AR["Alle"][$a]["Hersteller_ID"] = $InstanzHersteller . " - " . $DeviceID; $Batterien_AR["Alle"][$a]["LetztesVarUpdateTimestamp"] = $VarLastUpdated; $Batterien_AR["Alle"][$a]["LetztesVarUpdateVorSek"] = $VarLastUpdatedDiffSek; $Batterien_AR["Leer"][$l]["Name"] = $this->Umlaute_Ersetzen(IPS_GetName($InstanzID)); if ($this->ReadPropertyBoolean("NamenParentObjekt1CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr1NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle1TB")); $Batterien_AR["Leer"][$l][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } if ($this->ReadPropertyBoolean("NamenParentObjekt2CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr2NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle3TB")); $Batterien_AR["Leer"][$l][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } if ($this->ReadPropertyBoolean("NamenParentObjekt3CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr3NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle3TB")); $Batterien_AR["Leer"][$l][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } $Batterien_AR["Leer"][$l]["Batterie"] = "LEER"; $Batterien_AR["Leer"][$l]["Hersteller"] = $InstanzHersteller; $Batterien_AR["Leer"][$l]["ID"] = $DeviceID; $Batterien_AR["Leer"][$l]["Hersteller_ID"] = $InstanzHersteller . " - " . $DeviceID; $Batterien_AR["Leer"][$l]["LetztesVarUpdateTimestamp"] = $VarLastUpdated; $Batterien_AR["Leer"][$l]["LetztesVarUpdateVorSek"] = $VarLastUpdatedDiffSek; $a++; $l++; } else { $Batterien_AR["Alle"][$a]["Name"] = $this->Umlaute_Ersetzen(IPS_GetName($InstanzID)); if ($this->ReadPropertyBoolean("NamenParentObjekt1CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr1NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle1TB")); $Batterien_AR["Alle"][$a][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } if ($this->ReadPropertyBoolean("NamenParentObjekt2CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr2NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabelle2TB")); $Batterien_AR["Alle"][$a][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } if ($this->ReadPropertyBoolean("NamenParentObjekt3CB") == true) { $ParentID = $this->ParentIDermitteln("ParentNr3NS", $InstanzID); $ParentNameTabelle = $this->Umlaute_Ersetzen($this->ReadPropertyString("NameParentTabell3TB")); $Batterien_AR["Alle"][$a][$ParentNameTabelle] = $this->Umlaute_Ersetzen(IPS_GetName($ParentID)); } $Batterien_AR["Alle"][$a]["Batterie"] = "OK"; $Batterien_AR["Alle"][$a]["Hersteller"] = $InstanzHersteller; $Batterien_AR["Alle"][$a]["ID"] = $DeviceID; $Batterien_AR["Alle"][$a]["Hersteller_ID"] = $InstanzHersteller . " - " . $DeviceID; $Batterien_AR["Alle"][$a]["LetztesVarUpdateTimestamp"] = $VarLastUpdated; $Batterien_AR["Alle"][$a]["LetztesVarUpdateVorSek"] = $VarLastUpdatedDiffSek; $a++; } } } } if (isset($Batterien_AR)) { //Array sortieren, doppelte Einträge entfernen und neu durchnummerieren foreach ($Batterien_AR["Alle"] as $nr => $inhalt) { $nameALLE[$nr] = strtolower($inhalt["Name"]); if ($this->ReadPropertyBoolean("NamenParentObjekt1CB") == true) { $nameParent1ALLE[$nr] = $this->Umlaute_Ersetzen(strtolower($inhalt[$this->ReadPropertyString("NameParentTabelle1TB")])); } if ($this->ReadPropertyBoolean("NamenParentObjekt2CB") == true) { $nameParent2ALLE[$nr] = $this->Umlaute_Ersetzen(strtolower($inhalt[$this->ReadPropertyString("NameParentTabelle2TB")])); } if ($this->ReadPropertyBoolean("NamenParentObjekt3CB") == true) { $nameParent3ALLE[$nr] = $this->Umlaute_Ersetzen(strtolower($inhalt[$this->ReadPropertyString("NameParentTabelle3TB")])); } $batterieALLE[$nr] = strtolower($inhalt["Batterie"]); $herstellerALLE[$nr] = strtolower($inhalt["Hersteller"]); $idALLE[$nr] = strtolower($inhalt["ID"]); $herstelleridALLE[$nr] = strtolower($inhalt["Hersteller_ID"]); $lastupdatetsALLE[$nr] = strtolower($inhalt["LetztesVarUpdateTimestamp"]); $lastupdatevsALLE[$nr] = strtolower($inhalt["LetztesVarUpdateVorSek"]); } //Nach was soll das Array sortiert werden? if ($this->ReadPropertyString("ArraySortierWert") == "name") { array_multisort($nameALLE, SORT_ASC, $Batterien_AR["Alle"]); } elseif ($this->ReadPropertyString("ArraySortierWert") == "parentname1") { if ($this->ReadPropertyBoolean("NamenParentObjekt1CB") == true) { array_multisort($nameParent1ALLE, SORT_ASC, $Batterien_AR["Alle"]); } else { array_multisort($nameALLE, SORT_ASC, $Batterien_AR["Alle"]); } } elseif ($this->ReadPropertyString("ArraySortierWert") == "parentname2") { if ($this->ReadPropertyBoolean("NamenParentObjekt2CB") == true) { array_multisort($nameParent2ALLE, SORT_ASC, $Batterien_AR["Alle"]); } else { array_multisort($nameALLE, SORT_ASC, $Batterien_AR["Alle"]); } } elseif ($this->ReadPropertyString("ArraySortierWert") == "parentname3") { if ($this->ReadPropertyBoolean("NamenParentObjekt3CB") == true) { array_multisort($nameParent3ALLE, SORT_ASC, $Batterien_AR["Alle"]); } else { array_multisort($nameALLE, SORT_ASC, $Batterien_AR["Alle"]); } } elseif ($this->ReadPropertyString("ArraySortierWert") == "batterie") { array_multisort($batterieALLE, SORT_ASC, $Batterien_AR["Alle"]); } elseif ($this->ReadPropertyString("ArraySortierWert") == "hersteller") { array_multisort($herstellerALLE, SORT_ASC, $Batterien_AR["Alle"]); } elseif ($this->ReadPropertyString("ArraySortierWert") == "id") { array_multisort($idALLE, SORT_ASC, $Batterien_AR["Alle"]); } elseif ($this->ReadPropertyString("ArraySortierWert") == "letztesupdts") { array_multisort($lastupdatetsALLE, SORT_ASC, $Batterien_AR["Alle"]); } $Batterien_AR["Alle"] = $this->Array_UniqueBySubitem_Sort($Batterien_AR["Alle"], "Hersteller_ID"); $Batterien_AR["Alle"] = array_merge($Batterien_AR["Alle"]); if (isset($Batterien_AR["Leer"])) { foreach ($Batterien_AR["Leer"] as $nr => $inhalt) { $nameLEER[$nr] = strtolower($inhalt["Name"]); if ($this->ReadPropertyBoolean("NamenParentObjekt1CB") == true) { $nameParent1LEER[$nr] = $this->Umlaute_Ersetzen(strtolower($inhalt[$this->ReadPropertyString("NameParentTabelle1TB")])); } if ($this->ReadPropertyBoolean("NamenParentObjekt2CB") == true) { $nameParent2LEER[$nr] = $this->Umlaute_Ersetzen(strtolower($inhalt[$this->ReadPropertyString("NameParentTabelle2TB")])); } if ($this->ReadPropertyBoolean("NamenParentObjekt3CB") == true) { $nameParent3LEER[$nr] = $this->Umlaute_Ersetzen(strtolower($inhalt[$this->ReadPropertyString("NameParentTabelle3TB")])); } $batterieLEER[$nr] = strtolower($inhalt["Batterie"]); $herstellerLEER[$nr] = strtolower($inhalt["Hersteller"]); $idLEER[$nr] = strtolower($inhalt["ID"]); $herstelleridLEER[$nr] = strtolower($inhalt["Hersteller_ID"]); $lastupdatetsLEER[$nr] = strtolower($inhalt["LetztesVarUpdateTimestamp"]); $lastupdatevsLEER[$nr] = strtolower($inhalt["LetztesVarUpdateVorSek"]); } //Nach was soll das Array sortiert werden? if ($this->ReadPropertyString("ArraySortierWert") == "name") { array_multisort($nameLEER, SORT_ASC, $Batterien_AR["Leer"]); } elseif ($this->ReadPropertyString("ArraySortierWert") == "parentname1") { if ($this->ReadPropertyBoolean("NamenParentObjekt1CB") == true) { array_multisort($nameParent1LEER, SORT_ASC, $Batterien_AR["Leer"]); } else { array_multisort($nameLEER, SORT_ASC, $Batterien_AR["Leer"]); } } elseif ($this->ReadPropertyString("ArraySortierWert") == "parentname2") { if ($this->ReadPropertyBoolean("NamenParentObjekt2CB") == true) { array_multisort($nameParent2LEER, SORT_ASC, $Batterien_AR["Leer"]); } else { array_multisort($nameLEER, SORT_ASC, $Batterien_AR["Leer"]); } } elseif ($this->ReadPropertyString("ArraySortierWert") == "parentname3") { if ($this->ReadPropertyBoolean("NamenParentObjekt3CB") == true) { array_multisort($nameParent3LEER, SORT_ASC, $Batterien_AR["Leer"]); } else { array_multisort($nameLEER, SORT_ASC, $Batterien_AR["Leer"]); } } elseif ($this->ReadPropertyString("ArraySortierWert") == "batterie") { array_multisort($batterieLEER, SORT_ASC, $Batterien_AR["Leer"]); } elseif ($this->ReadPropertyString("ArraySortierWert") == "hersteller") { array_multisort($herstellerLEER, SORT_ASC, $Batterien_AR["Leer"]); } elseif ($this->ReadPropertyString("ArraySortierWert") == "id") { array_multisort($idLEER, SORT_ASC, $Batterien_AR["Leer"]); } elseif ($this->ReadPropertyString("ArraySortierWert") == "letztesupdts") { array_multisort($lastupdatetsLEER, SORT_ASC, $Batterien_AR["Leer"]); } $Batterien_AR["Leer"] = $this->Array_UniqueBySubitem_Sort($Batterien_AR["Leer"], "Hersteller_ID"); $Batterien_AR["Leer"] = array_merge($Batterien_AR["Leer"]); } return $Batterien_AR; } else { return false; } }
if ($sleeptimer) { $SleeptimerArray = explode(":", $sonos->GetSleeptimer()); $SleeptimerMinutes = $SleeptimerArray[0] * 60 + $SleeptimerArray[1]; if ($SleeptimerArray[2]) { $SleeptimerMinutes = $SleeptimerMinutes + 1; } } else { $SleeptimerMinutes = 0; } SetValueInteger(IPS_GetObjectIDByName("Sleeptimer", IPS_GetParent($_IPS["SELF"])), $SleeptimerMinutes); } } $nowPlaying = GetValueString(IPS_GetObjectIDByName("nowPlaying", IPS_GetParent($_IPS["SELF"]))); if ($actuallyPlaying != $nowPlaying) { SetValueString(IPS_GetObjectIDByName("nowPlaying", IPS_GetParent($_IPS["SELF"])), $actuallyPlaying); } } // Set Group Volume if (IPS_GetProperty(IPS_GetParent($_IPS["SELF"]), "GroupCoordinator")) { $groupMembers = GetValueString(IPS_GetObjectIDByName("GroupMembers", IPS_GetParent($_IPS["SELF"]))); $groupMembersArray = array(); if ($groupMembers) { $groupMembersArray = array_map("intval", explode(",", $groupMembers)); } $groupMembersArray[] = IPS_GetParent($_IPS["SELF"]); $GroupVolume = 0; foreach ($groupMembersArray as $key => $ID) { $GroupVolume += GetValueInteger(IPS_GetObjectIDByName("Volume", $ID)); } SetValueInteger(IPS_GetObjectIDByName("GroupVolume", IPS_GetParent($_IPS["SELF"])), intval(round($GroupVolume / sizeof($groupMembersArray)))); }
public function SetValue($key, $value) { $stateId = IPS_GetObjectIDByIdent('STATE', $this->InstanceID); $cmId = IPS_GetObjectIDByIdent('COLOR_MODE', $this->InstanceID); $ctId = @IPS_GetObjectIDByIdent('COLOR_TEMPERATURE', $this->InstanceID); $briId = IPS_GetObjectIDByIdent('BRIGHTNESS', $this->InstanceID); $satId = @IPS_GetObjectIDByIdent('SATURATION', $this->InstanceID); $hueId = @IPS_GetObjectIDByIdent('HUE', $this->InstanceID); $colorId = @IPS_GetObjectIDByIdent('COLOR', $this->InstanceID); $stateValue = GetValueBoolean($stateId); $cmValue = $cmId ? GetValueInteger($cmId) : 0; $ctValue = $ctId ? (500 - round(347 * GetValueInteger($ctId) / 100)) : 0; $briValue = round(GetValueInteger($briId)*2.54); $satValue = $satId ? round(GetValueInteger($satId)*2.54) : 0; $hueValue = $hueId ? GetValueInteger($hueId) : 0; $colorValue = $colorId ? GetValueInteger($colorId) : 0; switch ($key) { case 'STATE': $stateNewValue = $value; break; case 'COLOR': $colorNewValue = $value; $stateNewValue = true; $hex = str_pad(dechex($value), 6, 0, STR_PAD_LEFT); $hsv = $this->HEX2HSV($hex); SetValueInteger($colorId, $value); $hueNewValue = $hsv['h']; $briNewValue = $hsv['v']; $satNewValue = $hsv['s']; $cmNewValue = 0; break; case 'BRIGHTNESS': $briNewValue = $value; $stateNewValue = true; if (IPS_GetProperty($this->InstanceID, 'LightFeatures') != 3) { if ($cmValue == '0') { $newHex = $this->HSV2HEX($hueValue, $satValue, $briNewValue); SetValueInteger($colorId, hexdec($newHex)); $hueNewValue = $hueValue; $satNewValue = $satValue; } else { $ctNewValue = $ctValue; } } break; case 'SATURATION': $cmNewValue = 0; $satNewValue = $value; $stateNewValue = true; $newHex = $this->HSV2HEX($hueValue, $satNewValue, $briValue); SetValueInteger($colorId, hexdec($newHex)); $hueNewValue = $hueValue; $briNewValue = $briValue; break; case 'COLOR_TEMPERATURE': $cmNewValue = 1; $ctNewValue = $value; $briNewValue = $briValue; break; case 'COLOR_MODE': $cmNewValue = $value; $stateNewValue = true; if ($cmNewValue == 1) { $ctNewValue = $ctValue; IPS_SetHidden($colorId, true); IPS_SetHidden($ctId, false); IPS_SetHidden($satId, true); } else { $hueNewValue = $hueValue; $satNewValue = $satValue; $briNewValue = $briValue; $newHex = $this->HSV2HEX($hueValue, $satValue, $briValue); SetValueInteger($colorId, hexdec($newHex)); IPS_SetHidden($colorId, false); IPS_SetHidden($ctId, true); IPS_SetHidden($satId, false); } break; } $changes = array(); if (isset($stateNewValue)) { SetValueBoolean($stateId, $stateNewValue); $changes['on'] = $stateNewValue; } if (isset($hueNewValue)) { SetValueInteger($hueId, $hueNewValue); $changes['hue'] = $hueNewValue; } if (isset($satNewValue)) { SetValueInteger($satId, round($satNewValue * 100 / 254)); $changes['sat'] = $satNewValue; } if (isset($briNewValue)) { SetValueInteger($briId, round($briNewValue * 100 / 254)); $changes['bri'] = $briNewValue; } if (isset($ctNewValue)) { SetValueInteger($ctId, 100 - round(($ctNewValue - 153) * 100 / 347)); $changes['ct'] = $ctNewValue; } if (isset($cmNewValue)) { SetValueInteger($cmId, $cmNewValue); $changes['colormode'] = $cmNewValue == 1 ? 'ct' : 'hs'; } $lightId = $this->ReadPropertyInteger("LightId"); return HUE_Request($this->GetBridge(), "/lights/$lightId/state", $changes); }
/** * Forward weather data to WSDev instances * Create one if needed * @param $weather_data */ private function SendWSData($weather_data) { //parsing was OK, start distributing $this->debug(__FUNCTION__, 'Prepare'); $class = __CLASS__; $ts = $weather_data['date']; $datum = date('Y-m-d H:i:s', $ts); foreach ($this->sensors as $Device) { if (!isset($weather_data[$Device])) { continue; } $data = array(); $caps = ''; $id = $weather_data[$Device]['Id']; $typ = $weather_data[$Device]['Typ']; $data['Date'] = $datum; foreach ($this->fieldlist as $cap) { if (isset($weather_data[$Device][$cap])) { $data[$cap] = $weather_data[$Device][$cap]; $caps .= ";" . $cap; } } $this->debug(__FUNCTION__, "Sensor: {$id} Caps: {$caps} Prepared Data:" . print_r($data, true)); $found = false; $instID = 0; $instances = IPS_GetInstanceListByModuleID($this->module_interfaces['WSDEV']); foreach ($instances as $instID) { $I = @IPS_GetInstance($instID); if ($I && $I['ConnectionID'] == $this->InstanceID) { //my child $iid = (string) IPS_GetProperty($instID, 'DeviceID'); $ityp = (string) IPS_GetProperty($instID, 'Typ'); $iclass = (string) IPS_GetProperty($instID, 'Class'); if ($iid == $Device && $ityp == $typ && $iclass == $class) { $this->debug(__FUNCTION__, 'Use existing ID:' . $instID); $found = true; break; } //if destdevice } //if } //for if (!$found) { //no free instance available, have to create a new one if ($this->ReadPropertyBoolean('AutoCreate') == true) { //new instance needed $instID = $this->CreateWSDevice($data, $caps); if ($instID > 0) { //new instance needed $this->debug(__FUNCTION__, 'CREATE Device with Caps: ' . $caps); $found = true; } } else { $this->debug(__FUNCTION__, 'Creating Device ID ' . $Device . ' disabled by Property AutoCreate'); IPS_LogMessage($class, 'Creating Device ID ' . $Device . ' disabled by Property AutoCreate'); } //if autocreate } //if found if ($found && $instID > 0) { //send record to children $json = json_encode(array("DataID" => $this->module_interfaces['WS-RX'], "DeviceID" => $Device, "Typ" => $typ, "Class" => $class, "WSData" => $data)); $this->debug(__FUNCTION__, $json); @$this->SendDataToChildren($json); $this->log_weather($data); } //found } //for $this->debug(__FUNCTION__, 'Finished'); }
/** * Forward data to EnergyDev instances * Create one if needed * @param array $data * @param string $caps */ private function SendEnData($data, $caps) { //parsing was OK, start distributing $this->debug(__FUNCTION__, 'Prepare'); $class = $data['Class']; $id = $data['Id']; $typ = $data['Typ']; $found = false; $instID = 0; $instances = IPS_GetInstanceListByModuleID($this->module_interfaces['EnergyDev']); foreach ($instances as $instID) { $I = IPS_GetInstance($instID); $iid = (string) IPS_GetProperty($instID, 'DeviceID'); $ityp = (string) IPS_GetProperty($instID, 'Typ'); $iclass = (string) IPS_GetProperty($instID, 'Class'); if ($I['ConnectionID'] == $this->InstanceID) { //my child if ($iid == $id && $iclass == $class && $ityp == $typ) { $this->debug(__FUNCTION__, 'Use existing ID:' . $instID); $found = true; break; } //if destdevice } //if } //for if (!$found) { //no free instance available, have to create a new one if ($this->ReadPropertyBoolean('AutoCreate') == true) { //new instance needed $this->debug(__FUNCTION__, 'CREATE NEW Device'); $instID = $this->CreateENDevice($data, $caps); $found = true; } else { $this->debug(__FUNCTION__, 'Creating Device ID ' . $id . ' disabled by Property AutoCreate'); IPS_LogMessage($class, 'Creating Device ID ' . $id . ' disabled by Property AutoCreate'); } //if autocreate } //if found //drop counterfactor from data if (isset($data['CounterFactor'])) { unset($data['CounterFactor']); } if ($found && $instID > 0) { //send record to children $json = json_encode(array("DataID" => $this->module_interfaces['EN-RX'], "DeviceID" => $data['Id'], "Typ" => $data['Typ'], "Class" => $class, "ENData" => $data)); $this->debug(__FUNCTION__, $json); @$this->SendDataToChildren($json); $datum = date('Y-m-d H:i:s', time()); $vid = @$this->GetIDForIdent('LastUpdate'); if ($vid) { SetValueString($vid, $datum); } } //found }
/** * GetProperty Modul class of creator * @return string */ private function GetCounterFactor() { return floatval(IPS_GetProperty($this->InstanceID, 'CounterFactor')); }
if (!curl_exec($curl)) { continue; } $xmlr = new SimpleXMLElement($result); $rincon = str_replace("uuid:", "", $xmlr->device->UDN); IPS_SetProperty($SonosID, "RINCON", $rincon); IPS_ApplyChanges($SonosID); } } $rinconMapping[] = array("ID" => $SonosID, "RINCON" => $rincon); if ($SonosID === IPS_GetParent($_IPS["SELF"])) { $ownRincon = $rincon; } } $ipAddress = IPS_GetProperty(IPS_GetParent($_IPS["SELF"]), "IPAddress"); $timeout = IPS_GetProperty(IPS_GetParent($_IPS["SELF"]), "TimeOut"); if (!$timeout || Sys_Ping($ipAddress, $timeout) == true) { $sonos = new SonosAccess($ipAddress); $sonosGroupCoordinator = explode(":", $sonos->GetZoneGroupAttributes()["CurrentZoneGroupID"])[0]; foreach ($rinconMapping as $key => $value) { if ($value["RINCON"] === $sonosGroupCoordinator) { $sonosGroupCoordinatorID = $value["ID"]; break; } } // If groupCoordinator in Sonos = this instance --> set ID to 0 (does not belong to group) if ($sonosGroupCoordinatorID === IPS_GetParent($_IPS["SELF"])) { $sonosGroupCoordinatorID = 0; } if ($sonosGroupCoordinatorID !== $MemberOfGroup) { if ($groupForcing) {
protected function GetPassword() { $ParentID = $this->GetParent(); $GatewayPassword = IPS_GetProperty($ParentID, 'Passwort'); return $GatewayPassword; }
public function GetDeviceByUniqueId($uniqueId) { $deviceIds = IPS_GetInstanceListByModuleID($this->DeviceGuid()); foreach($deviceIds as $deviceId) { if(IPS_GetProperty($deviceId, 'UniqueId') == $uniqueId) { return $deviceId; } } }
/** * GetProperty Modul class of creator * @return string */ private function GetClass() { return (string) IPS_GetProperty($this->InstanceID, 'Class'); }
/** * Forward weather data to WSDev instances * Create one if needed * @param $weather_data */ private function SendWSData($weather_data) { //parsing was OK, start distributing $this->debug(__FUNCTION__, 'Prepare '); //$this->debug(__FUNCTION__, 'Data:'. print_r($weather_data, true)); $dt = $weather_data['date']; $datum = date('Y-m-d H:i:s', $dt); for ($Device = 0; $Device < self::MAXSENSORS; $Device++) { if (!$weather_data['records'][$Device]['typ']) { continue; } $data = array(); $id = $weather_data['records'][$Device]['id']; $typ = $weather_data['records'][$Device]['typ']; //$sensor=$weather_data['records'][$Device]['sensor']; $temp = $weather_data['records'][$Device]['temp']; $hum = $weather_data['records'][$Device]['hum']; $data['Id'] = $id; $data['Typ'] = $typ; $data['Date'] = $datum; $caps = "Temp"; $data['Temp'] = $temp; if ($typ == 'T/F') { $data['Hum'] = $hum; $caps .= ";Hum"; } if ($Device < 9) { //innensensor hat keinenbatteryanzeige $lost = $weather_data['records'][$Device]['lost']; $bat = $weather_data['records'][$Device]['battery']; $data["Battery"] = $bat; $data["Lost"] = $lost; $caps .= ";Battery;Lost"; } if ($Device == 8) { $rain = $weather_data['rain']; $rainc = $weather_data['rainc']; $israining = $weather_data['israining']; $wind = $weather_data['wind']; $typ = 'Kombisensor'; $data['Typ'] = $typ; $data['Rain'] = $rain; $data['RainCounter'] = $rainc; $data['IsRaining'] = $israining; $data['Wind'] = $wind; $caps .= ";Wind;Rain;IsRaining;RainCounter"; } if ($Device == 9) { $typ = 'Indoor'; $press = $weather_data['press']; $willi = $weather_data['willi']; $data['Typ'] = $typ; $data["Press"] = $press; $data['Forecast'] = $willi; $caps .= ";Hum;Press;Forecast"; } if (strlen($temp) == 0) { continue; //nothing to send } //if temp //$this->debug(__FUNCTION__, "Sensor: $id Caps: $caps Data:" . print_r($data, true)); $found = false; $instID = 0; $instances = IPS_GetInstanceListByModuleID($this->module_interfaces['WSDEV']); foreach ($instances as $instID) { $I = @IPS_GetInstance($instID); if ($I && $I['ConnectionID'] == $this->InstanceID) { //my child $iid = (string) IPS_GetProperty($instID, 'DeviceID'); $ityp = (string) IPS_GetProperty($instID, 'Typ'); $class = (string) IPS_GetProperty($instID, 'Class'); if ($iid == $Device && $ityp == $typ && $class == __CLASS__) { $this->debug(__FUNCTION__, 'Use existing ID:' . $instID); $found = true; break; } //if destdevice } //if } //for if (!$found) { //no free instance available, have to create a new one if ($this->ReadPropertyBoolean('AutoCreate') == true) { //new instance needed $instID = $this->CreateWSDevice($data, $caps); if ($instID > 0) { //new instance needed $this->debug(__FUNCTION__, 'CREATE Device with Caps: ' . $caps); $found = true; } } else { $this->debug(__FUNCTION__, 'Creating Device ID ' . $Device . ' disabled by Property AutoCreate'); IPS_LogMessage(__CLASS__, 'Creating Device ID ' . $Device . ' disabled by Property AutoCreate'); } //if autocreate } //if found if ($found && $instID > 0) { //send record to children $json = json_encode(array("DataID" => $this->module_interfaces['WS-RX'], "DeviceID" => $Device, "Typ" => $typ, "Class" => __CLASS__, "WSData" => $data)); $this->debug(__FUNCTION__, $json); @$this->SendDataToChildren($json); } //found } //for $this->debug(__FUNCTION__, 'Finished'); $vid = $this->GetIDForIdent('LastUpdate'); SetValueString($vid, $datum); }
/** * OneWireLan_GetRomID * @return string */ public function GetRomID() { if ($_IPS['SENDER'] != "RunScript") { trigger_error("Do not use this function!", E_USER_WARNING); return; } if ($this->ReadPropertyString("ROMId")) { trigger_error("ROMId is not empty!", E_USER_WARNING); return; } $ModuleID_r = IPS_GetInstanceListByModuleID("{21C81179-662C-46E5-BB0E-F3E18EF75637}"); $resultat = $this->SendDataToParent(json_encode(array("DataID" => "{C7DF8BCB-7CF7-4AD9-B636-5A3DEFE4E034}", "Buffer" => "NEW"))); if ($resultat == "") { trigger_error("Interface is closed!", E_USER_WARNING); return; } $Data = json_decode($resultat); switch ($this->ReadPropertyInteger("DataType")) { case 0: foreach ($Data->DS18B20 as $Key => $Value) { $ROMId = $Key; foreach ($ModuleID_r as $ID) { if (IPS_GetProperty($ID, "ROMId") == $Key) { $ROMId = ""; } } if ($ROMId != "") { IPS_SetProperty($this->InstanceID, "ROMId", $ROMId); IPS_ApplyChanges($this->InstanceID); echo "New ROMID: " . $ROMId . " found and saved! PLEASE CLOSE THE WINDOW!"; return; } } echo "No New ROMId for DS18B20 found!"; return; break; case 2: foreach ($Data->DS18S20 as $Key => $Value) { $ROMId = $Key; foreach ($ModuleID_r as $ID) { if (IPS_GetProperty($ID, "ROMId") == $Key) { $ROMId = ""; } } if ($ROMId != "") { IPS_SetProperty($this->InstanceID, "ROMId", $ROMId); IPS_ApplyChanges($this->InstanceID); echo "New ROMID: " . $ROMId . " found and saved! PLEASE CLOSE THE WINDOW!"; return; } } echo "No New ROMId for DS18S20 found!"; return; break; case 1: foreach ($Data->DS2438 as $Key => $Value) { $ROMId = $Key; foreach ($ModuleID_r as $ID) { if (IPS_GetProperty($ID, "ROMId") == $Key) { $ROMId = ""; } } if ($ROMId != "") { IPS_SetProperty($this->InstanceID, "ROMId", $ROMId); IPS_ApplyChanges($this->InstanceID); echo "New ROMID: " . $ROMId . " found and saved! PLEASE CLOSE THE WINDOW!"; return; } } echo "No New ROMId for DS2438 found!"; return; break; } }
public function joinZone() { $joinzonename = GetValueFormatted($this->GetIDForIdent("JoinZone")); if ($joinzonename != "Off") { $allboseinstances = IPS_GetInstanceListByModuleID("{4836EF46-FF79-4D6A-91C9-FE54F1BDF2DB}"); foreach ($allboseinstances as $key => $value) { $instancename = IPS_GetName($value); if ($instancename == $joinzonename) { $zonemasterip = IPS_GetProperty($value, "DeviceIP"); $zonemasterid = IPS_GetProperty($value, "DeviceID"); } } $zonememberip = $this->ReadPropertyString("DeviceIP"); $zonememberid = $this->ReadPropertyString("DeviceID"); // check if masterdevice is on $timeout = $this->ReadPropertyString("Timeout"); $deviceip = $zonemasterip; try { if ($timeout && Sys_Ping($deviceip, $timeout) != true) { throw new Exception("Device " . $deviceip . " is not available"); } include_once __DIR__ . "/bose_soundtouch_api.php"; $bosedevice = new BoseSoundTouchAPI($deviceip); $result = $bosedevice->getDeviceNowPlayingAPI(); $devicemode = $result["devicemode"]; if ($devicemode != "Standby") { $joinzone = $bosedevice->setDeviceZoneAPI($zonemasterip, $zonemasterid, $zonememberip, $zonememberid); } else { SetValue($this->GetIDForIdent("JoinZone"), false); } } catch (Exception $e) { echo $e->getMessage(); } } }
private function SetCover() { $CoverID = @IPS_GetObjectIDByIdent('CoverIMG', $this->InstanceID); if ($CoverID === false) { $CoverID = IPS_CreateMedia(1); IPS_SetParent($CoverID, $this->InstanceID); IPS_SetIdent($CoverID, 'CoverIMG'); IPS_SetName($CoverID, 'Cover'); IPS_SetPosition($CoverID, 27); IPS_SetMediaCached($CoverID, true); IPS_SetMediaFile($CoverID, "media" . DIRECTORY_SEPARATOR . "Cover_" . $this->InstanceID . ".png", False); } $ParentID = $this->GetParent(); if (!($ParentID === false)) { $Host = IPS_GetProperty($ParentID, 'Host') . ":" . IPS_GetProperty($ParentID, 'Webport'); $Size = $this->ReadPropertyString("CoverSize"); $PlayerID = rawurlencode($this->Address); $CoverRAW = @Sys_GetURLContent("http://" . $Host . "/music/current/" . $Size . ".png?player=" . $PlayerID); if (!($CoverRAW === false)) { IPS_SetMediaContent($CoverID, base64_encode($CoverRAW)); } } return; }
/** * Forward weather data to WSDev instances * Create one if needed * @param array $data * @param string $caps */ private function SendWSData($data, $caps) { //parsing was OK, start distributing $this->debug(__FUNCTION__, 'Prepare'); $class = __CLASS__; $id = $data['Id']; $typ = $data['Typ']; $this->debug(__FUNCTION__, 'GetInstance for Sensor:' . $id); $found = false; $instID = 0; $instances = IPS_GetInstanceListByModuleID($this->module_interfaces['WSDEV']); foreach ($instances as $instID) { $I = @IPS_GetInstance($instID); if ($I && $I['ConnectionID'] == $this->InstanceID) { //my child $iid = (string) IPS_GetProperty($instID, 'DeviceID'); $ityp = (string) IPS_GetProperty($instID, 'Typ'); $iclass = (string) IPS_GetProperty($instID, 'Class'); //$this->debug(__FUNCTION__, "Check my Device '$id'' with Instance $instID($iid)"); if ($iid == $id && $iclass == $class && $ityp == $typ) { $this->debug(__FUNCTION__, 'Use existing ID:' . $instID); $found = true; break; } //if destdevice } //if } //for if (!$found) { //no free instance available, have to create a new one if ($this->ReadPropertyBoolean('AutoCreate') == true) { //new instance needed $instID = $this->CreateWSDevice($data, $caps); if ($instID > 0) { //new instance needed $this->debug(__FUNCTION__, 'CREATE Device with Caps: ' . $caps); $found = true; } } else { $this->debug(__FUNCTION__, 'Creating Device ID ' . $id . ' disabled by Property AutoCreate'); IPS_LogMessage($class, 'Creating Device ID ' . $id . ' disabled by Property AutoCreate'); } //if autocreate } //if found if ($found && $instID > 0) { //send record to children $json = json_encode(array("DataID" => $this->module_interfaces['WS-RX'], "DeviceID" => $id, "Class" => $class, "Typ" => $typ, "WSData" => $data)); $this->debug(__FUNCTION__, $json); @$this->SendDataToChildren($json); $datum = date('Y-m-d H:i:s', time()); $vid = @$this->GetIDForIdent('LastUpdate'); if ($vid) { SetValueString($vid, $datum); } $this->log_weather($data); } //found }