Hab mir jetzt ein Dimmerscript gebastelt, welches folgende Funktionen zur Verfügung stellt:
1x kurz drücken - Lampe voll auf oder abdimmen
lang drücken - es wird rauf / runtergedimmt, geht man von der FB-Taste runter, beginnt ein Timeout von 2 Sekunden. Nach diesen 2 Sekunden wird beim langen Drücken der Taste in die andere Richtung weiter gedimmt.
Vielleicht kanns ja wer brauchen, 4 Variablen werden dazu in IPS benötigt (sind im Script angeführt)
Das Script ist sicher nicht perfekt, aber bei mir klappts ganz gut ![:smiley: :smiley:](https://community.symcon.de/images/emoji/win10/smiley.png?v=9)
<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File : Lampe_Dimmen.ips.php
Trigger : Dimmer1_Data (OnUpdate)
Interval :
Benötigt 4 IPS-Variablen
Dimmer1_Value, Integer - Gedimmter Wert (1-16)
Dimmer1_UP, Boolean - aktuelle Dimmrichtung (Rauf/Runter)
Dimmer1_ON, Boolean - Lampe ist gedimmt oder aus
Dimmer1_Data, Integer - 18 wenn FB-Taste kurz gedrückt, 21 wenn länger gedrückt
*/
$Di1 = 64414; // Nummer der zu dimmende Lampe in der IPS Instanz
$D1Value = GetValueInteger("Dimmer1_Value");
$D1UP = GetValueBoolean("Dimmer1_UP");
$D1Data = GetValueInteger("Dimmer1_Data");
if ($D1Value > 0) SetValueBoolean("Dimmer1_On", True); // Lampe gedimmt oder aus?
else SetValueBoolean("Dimmer1_On", False);
$D1On = GetValueBoolean("Dimmer1_On");
if($IPS_SENDER == "TimerEvent") { // Wird nach rauf oder runterdimmen aufgerufen
SetValueBoolean("Dimmer1_UP",!$D1UP); // Nach 2 Sekunden invertieren
IPS_SetScriptTimer($IPS_SELF,0); // Script nicht mehr aufrufen
}
else if(($IPS_SENDER == "Variable") or ($IPS_SENDER == "Designer"))
{
if ($D1Data <> 21) { // Taster nur kurz gedrückt
if (!$D1On) { // Lampe voll hochfahren
FS20_SetIntensity($Di1, 16, 5);
SetValueBoolean("Dimmer1_On", True);
SetValueInteger("Dimmer1_Value", 16);
SetValueBoolean("Dimmer1_UP",True);
}
else { // Lampe herunterfahren
FS20_SetIntensity($Di1, 0, 5);
SetValueBoolean("Dimmer1_On", False);
SetValueBoolean("Dimmer1_UP",False);
SetValueInteger("Dimmer1_Value", 0);
}
}
if ($D1Data == 21) { // Taster wurde länger gedrückt
if ($D1UP) { // Runterdimmen
$divalue = $D1Value - 1;
if ($divalue <= 0) {
$divalue = 0;
SetValueBoolean("Dimmer1_UP",False);
}
FS20_SetIntensity($Di1, $divalue, 0);
SetValueInteger("Dimmer1_Value",$divalue);
}
else { // Raufdimmen
$divalue = $D1Value + 1;
if ($divalue >= 16) {
$divalue = 16;
SetValueBoolean("Dimmer1_UP",True);
}
FS20_SetIntensity($Di1, $divalue, 0);
SetValueInteger("Dimmer1_Value",$divalue);
}
IPS_SetScriptTimer($IPS_SELF,2);
}
}
?>
Grüße,
Wolfgang