作者:symco
项目:SymconB
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);
}
}
作者:Nall-cha
项目:IPSSqueezeBo
protected function SetStatus($InstanceStatus)
{
if (IPS_GetKernelRunlevel() == KR_READY) {
$OldStatus = IPS_GetInstance($this->InstanceID)['InstanceStatus'];
} else {
$OldStatus = -1;
}
if ($InstanceStatus != $OldStatus) {
parent::SetStatus($InstanceStatus);
if ($InstanceStatus == IS_ACTIVE) {
$this->SetTimerInterval('KeepAlive', 3600000);
} else {
$this->SetTimerInterval('KeepAlive', 0);
}
return true;
} else {
return false;
}
}
作者:Wolbola
项目:IPSymconAIOGatewa
protected function AddAddress(string $address)
{
$instance = IPS_GetInstance($this->InstanceID)["InstanceID"];
IPS_SetProperty($instance, "LEDAdresse", $address);
//Adresse setzten.
IPS_SetProperty($instance, "LearnAddressLED", false);
//Haken entfernen.
IPS_ApplyChanges($instance);
//Neue Konfiguration übernehmen
IPS_LogMessage("LED Controller Adresse hinzugefügt:", $address);
}
作者:Tommi2Da
项目:ipsymcon-phpmodule-by-Tomm
/**
* Check if a parent for Instance $id exists
* @param $id integer InstanceID
* @return integer
*/
protected function GetParent($id = 0)
{
$parent = 0;
if ($id == 0) {
$id = $this->InstanceID;
}
if (IPS_InstanceExists($id)) {
$instance = IPS_GetInstance($id);
$parent = $instance['ConnectionID'];
} else {
$this->debug(__FUNCTION__, "Instance #{$id} doesn't exists");
}
return $parent;
}
作者:Nall-cha
项目:HomematicEasyInstal
function GetOrCreateHMDevice($Parent, $Name, $Address, $Protocol, $HMParent)
{
$ObjID = IPS_CreateInstance("{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}");
if (IPS_GetInstance($ObjID)['ConnectionID'] != $HMParent) {
IPS_DisconnectInstance($ObjID);
IPS_ConnectInstance($ObjID, $HMParent);
}
IPS_SetParent($ObjID, $Parent);
IPS_SetName($ObjID, $Name);
IPS_SetProperty($ObjID, 'Address', $Address);
IPS_SetProperty($ObjID, 'Protocol', $Protocol);
IPS_SetProperty($ObjID, 'EmulateStatus', false);
usleep(50000);
@IPS_ApplyChanges($ObjID);
/* {
echo "Error beim Erzeugen von Gerät ".$Address.PHP_EOL;
// echo " Gerät mit Namen ".$Name." wird wieder gelöscht.".PHP_EOL;
// IPS_DeleteInstance($ObjID);
// return false;
} */
return $ObjID;
}
作者:Tommi2Da
项目:ipsymcon-phpmodule-by-Tomm
/**
* 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');
}
作者:Nall-cha
项目:IPSXBeeZigBe
protected function SetStatus($InstanceStatus)
{
if ($InstanceStatus != IPS_GetInstance($this->InstanceID)['InstanceStatus']) {
parent::SetStatus($InstanceStatus);
}
}
作者:florianprobs
项目:ips-librar
/**
* checks if the instance to $archiveId is a valid IPS archive object
*
* @param integer $archiveId instance id to be checked
* @throws Exception if $archiveId does not match to IPS archive
* @return true if id refers to an archive
* @access private
*/
private function checkArchive($archiveId)
{
$archive = @IPS_GetInstance($archiveId);
if ($archive == NULL) {
throw new Exception("Archive with instance id {$archiveId} does not exist");
}
if ($archive["ModuleInfo"]["ModuleID"] == "{43192F0B-135B-4CE7-A0A7-1475603F3060}") {
return true;
}
return false;
}
作者:Vansda
项目:SymconHU
public function SyncDevices() {
$lightsCategoryId = $this->GetLightsCategory();
$lights = $this->Request('/lights');
foreach ($lights as $lightId => $light) {
$name = utf8_decode((string)$light->name);
$uniqueId = (string)$light->uniqueid;
echo "$lightId. $name ($uniqueId)\n";
$deviceId = $this->GetDeviceByUniqueId($uniqueId);
if ($deviceId == 0) {
$deviceId = IPS_CreateInstance($this->DeviceGuid());
IPS_SetProperty($deviceId, 'UniqueId', $uniqueId);
}
IPS_SetParent($deviceId, $lightsCategoryId);
IPS_SetProperty($deviceId, 'LightId', (integer)$lightId);
IPS_SetName($deviceId, $name);
// Verbinde Light mit Bridge
if (IPS_GetInstance($deviceId)['ConnectionID'] <> $this->InstanceID) {
@IPS_DisconnectInstance($deviceId);
IPS_ConnectInstance($deviceId, $this->InstanceID);
}
IPS_ApplyChanges($deviceId);
HUE_RequestData($deviceId);
}
}
作者:Bayaro
项目:BY_BatterieMonito
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"));
//.........这里部分代码省略.........
作者:Vansda
项目:SymconHU
protected function GetBridge() {
$instance = IPS_GetInstance($this->InstanceID);
return ($instance['ConnectionID'] > 0) ? $instance['ConnectionID'] : false;
}
作者:Tommi2Da
项目:ipsymcon-phpmodule-by-Tomm
/**
* 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');
}
作者:Tommi2Da
项目:ipsymcon-phpmodule-by-Tomm
/**
* 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
}
作者:naphan
项目:IPSFoobo
private function deviceInstanceExists($name)
{
//if ($isUpdate)
//{
$children = IPS_GetChildrenIDs($this->InstanceID);
foreach ($children as $child) {
if (IPS_InstanceExists($child)) {
$childInstance = @IPS_GetInstance($child);
$childInstanceID = $childInstance['InstanceID'];
$childInstanceName = @IPS_GetName($childInstanceID);
// Check if it is a Dummy Module and if it has a known device name
if ($childInstanceName == $name and $childInstance['ModuleInfo']['ModuleID'] == "{485D0419-BE97-4548-AA9C-C083EB82E61E}") {
return true;
}
}
}
return false;
//} else {
// return false;
//}
}
作者:Wolbola
项目:IPSymconAIOGatewa
protected function GetParent()
{
$instance = IPS_GetInstance($this->InstanceID);
//array
return $instance['ConnectionID'] > 0 ? $instance['ConnectionID'] : false;
//ConnectionID
}
作者:ubittne
项目:SymconBoseSoundTouc
public function setRadio()
{
// reset values
SetValue($this->GetIDForIdent("DeviceMode"), "");
SetValue($this->GetIDForIdent("DeviceState"), "");
SetValue($this->GetIDForIdent("NowPlaying"), "");
SetValue($this->GetIDForIdent("Description"), "");
SetValue($this->GetIDForIdent("Logo"), "");
// get radio
$instanceid = IPS_GetInstance($this->InstanceID)['InstanceID'];
$stationname = GetValueFormatted($this->GetIDForIdent("Radio"));
$associations = IPS_GetVariableProfile("bose.Device" . $instanceid . "RadioStations")["Associations"];
foreach ($associations as $key => $value) {
if ($value["Name"] == $stationname) {
$index = $value["Value"];
}
}
$associations = IPS_GetVariableProfile("bose.Device" . $instanceid . "RadioLocations")["Associations"];
foreach ($associations as $key => $value) {
if ($value["Value"] == $index) {
$location = $value["Name"];
}
}
// set location
$timeout = $this->ReadPropertyString("Timeout");
$deviceip = $this->ReadPropertyString("DeviceIP");
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->setDeviceRadioStationAPI($location);
// get now playing ???
SetValue($this->GetIDForIdent("DevicePower"), true);
} catch (Exception $e) {
echo $e->getMessage();
}
}
作者:Wolbola
项目:IPSymconAIOGatewa
protected function DeleteInstance($InsID)
{
//Prüfen ob Instanz existiert
$InstanzID = @IPS_GetInstance($InsID);
if ($InstanzID === false) {
//echo "Instanz nicht gefunden!";
//Instanz muss nicht gelöscht werden, existiert nicht.
return $InsID;
} else {
//echo "Die Instanz-ID wurde gelöscht: ". $InstanzID;
IPS_DeleteInstance($InsID);
return $InstanzID;
}
}
作者:Tommi2Da
项目:ipsymcon-phpmodule-by-Tomm
/**
* 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
}