*/ IPSUtils_Include ('IPSComponentDimmer.class.php', 'IPSLibrary::app::core::IPSComponent::IPSComponentDimmer'); class IPSComponentDimmer_FS20 extends IPSComponentDimmer { private $instanceId; /** * @public * * Initialisierung eines IPSComponentDimmer_FS20 Objektes * * @param integer $instanceId InstanceId des FS20 Devices */ public function __construct($instanceId) { $this->instanceId = IPSUtil_ObjectIDByPath($instanceId); } /** * @public * * Funktion liefert String IPSComponent Constructor String. * String kann dazu benützt werden, das Object mit der IPSComponent::CreateObjectByParams * wieder neu zu erzeugen. * * @return string Parameter String des IPSComponent Object */ public function GetComponentParams() { return get_class($this).','.$this->instanceId; } /** * @public * * Function um Events zu behandeln, diese Funktion wird vom IPSMessageHandler aufgerufen, um ein aufgetretenes Event * an das entsprechende Module zu leiten. * * @param integer $variable ID der auslösenden Variable * @param string $value Wert der Variable * @param IPSModuleDimmer $module Module Object an das das aufgetretene Event weitergeleitet werden soll */ public function HandleEvent($variable, $value, IPSModuleDimmer $module){ } /** * @public * * Zustand Setzen * * @param integer $power Geräte Power * @param integer $level Wert für Dimmer Einstellung (Wertebereich 0-100) */ public function SetState($power, $level) { // Zeit in Sekunden wie schnell der Aktor dimmmen soll $DimspeedSec = 2; if (!$power) { FS20_SetIntensity ($this->instanceId, 0, $DimspeedSec); // Wartezeit um den Aktor auf OFF zu Schalten // IPS_Sleep wird in Millisekunden angegeben, darum * 1000 IPS_Sleep ($DimspeedSec*1000); FS20_SwitchMode ($this->instanceId, false); } else { // 100% Helligkeit Entsprechen bei FS20 dem Wert 16 $levelFS20 = round($level / 100 * 16); FS20_SetIntensity ($this->instanceId, $levelFS20, $DimspeedSec); } } /** * @public * * Liefert aktuellen Level des Dimmers * * @return integer aktueller Dimmer Level */ public function GetLevel() { return GetValue(IPS_GetVariableIDByName('Intensität', $this->instanceId)); } /** * @public * * Liefert aktuellen Power Zustand des Dimmers * * @return boolean Gerätezustand On/Off des Dimmers */ public function GetPower() { return GetValue(IPS_GetVariableIDByName('Intensität', $this->instanceId)) > 0; } } /** @}*/ ?>