Praxis - Dimmen mit dem FS20 System

Das nachfolgende Beispiel ist für alle interessant, die bei einer Visualisierung den exakten
Dimmwert einer Beleuchtung des FS20 Systems erfassen wollen.
Die Variable „Lampe_Dim_ist“ ist den jeweiligen Gerät (Intensity) zuzuordnen.
Es besteht aus zwei Skripten: Dimmen_Plus und Dimmen_Minus, die jeweils z.B. durch einen Taster getriggert werden.
Wobei der 1. Tastendruck den Dimm-Aktion startet und der 2. sie stoppt.
Die beiden Funktionen der Skripte sind gegenseitig „verriegelt“.
Wer nur die aktuelle Helligkeit um ein Wert verändern möchte, ohne den aktuellen Wert zu kennen,
der kann die IP-Symcon Befehle: FS20_DimUp und FS20_DimDown verwenden (verfügbar mit dem nächsten Update).

MST


<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File       : Dimmen_Plus.ips.php
Trigger  : beliebige Variable
Interval : 

*/

$id = 30780;
$value = GetValueInteger("Lampe_Dim_ist");
$script = "Dimmen_Minus";
$speed = 2;

if($IPS_SENDER == "Variable")
{
 if (IPS_GetScriptTimer($IPS_SELF) == 0) {
  IPS_SetScriptTimer($script, 0);
  IPS_SetScriptTimer($IPS_SELF, 1);
  SetDim($value + $speed);
 } else {
  IPS_SetScriptTimer($IPS_SELF, 0);
 }
}
else if($IPS_SENDER == "TimerEvent")
{
 if($value>=16) {
  IPS_SetScriptTimer($IPS_SELF, 0);
 } else {
  SetDim($value + $speed);
 }
}

function SetDim($value) {
  global $id;
  if($value > 16) {
   $value = 16;
  }
  if($value==0) {
   FS20_SwitchMode($id, FALSE);
   SetValueInteger("Lampe_Dim_ist", 0);
  } else {
   FS20_SetIntensity($id, $value, 0);
  }
}

?>


<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : Dimmen_Minus.ips.php
Trigger  : beliebige Variable
Interval : 
*/

$id = 30780;
$value = GetValueInteger("Lampe_Dim_ist");
$script = "Dimmen_Plus";
$speed = 2;

if($IPS_SENDER == "Variable")
{
 if (IPS_GetScriptTimer($IPS_SELF) == 0) {
  IPS_SetScriptTimer($script, 0);
  IPS_SetScriptTimer($IPS_SELF, 1);
  FS20_SetIntensity($id, $value - $speed, -1);
  SetDim($value - $speed);
 } else {
  IPS_SetScriptTimer($IPS_SELF, 0);
 }
}
else if($IPS_SENDER == "TimerEvent")
{
 if($value<=0) {
  IPS_SetScriptTimer($IPS_SELF, 0);
 } else {
  SetDim($value - $speed);
 }
}

function SetDim($value) {
  global $id;
  if($value < 0) {
   $value = 0;
  }
  FS20_SetIntensity($id, $value, 0);
}
?>

Hallo Steiner,

was ist $IPS_SELF? entspricht das dem Namen des gerade laufenden Scripts? Ist die Var neu?

Darüber gab es doch neulich eine Diskussion…

Gruß
Fabian

[nachobenschieb]

Woher ist die Variable? Aus 'ner aktuellen Beta?

Jupp. BETA vom wird vom 5.11 wird für IPS_SELF benötigt. Du kannst anstelle des Befehls auch den Scriptnamen einfügen.

paresy