Hallo,
das Ereignis startet auch das Script, allerdings geht der Controller nicht an. Starte ich das Script mit „Ausführen“ geht das Licht an und bei nochmaligem Drücken wieder aus.
Mit IPS_Runscript geht es auch nicht. Was mich eben auch wundert ist, das nach einmaligem betätigen des Tasters der Status „true“ erhalten bleibt… Hier mal das Script:
<?
// Installation:
//1. Bei $LEDid die ID der RGBW-868 Instanz eintragen.
//2. Script mit dem Ausühren-Button oder Runscript starten.
//3. Es ist alles so schön bunt hier!
//An-Ausschalten mit:
//1. "Ausführen" Button im Editor oder
//2. IPS_runscript (diese Script-ID) oder
//3. direktes Ändern der Variablen "Aktiv" auf true oder false
//Zu Hell? Helligkeit im Objektbaum einstellbar (1-255)
//Dimmzeit im Objektbaum einstellbar
$LEDid=30631 /*[Steuerung Haus\WC\RGBW-868 (Stripe)]*/;
if(($IPS_SENDER == "Runscript")or($IPS_SENDER == "Execute")or($IPS_SENDER == "WebFront")){
$aktivid =LEDCreateVariableByName($IPS_SELF, "Aktiv", 0);
$maxlumid=LEDCreateVariableByName($IPS_SELF, "Helligkeit (1-255)", 1);
$fadetimeid=LEDCreateVariableByName($IPS_SELF, "Dimmzeit (Sek.)", 1);
$eid = @IPS_GetEventIDByName("Aktiv-Event", $IPS_SELF);
if($eid===false) {
$eid = IPS_CreateEvent(0);
IPS_SetEventTrigger($eid, 1, $aktivid);
IPS_SetParent($eid, $IPS_SELF);
IPS_SetName($eid, "Aktiv-Event");
IPS_SetEventActive($eid, true);
}
SetValue ($aktivid, (GetValue($aktivid) ? false:true));
}
if($IPS_SENDER == "Variable") {
$aktivid = @IPS_GetVariableIDByName("Aktiv", $IPS_SELF);
$aktiv=GetValue($aktivid);
if($aktiv){
IPS_SetScriptTimer($IPS_SELF, 1);
}
else{
IPS_SetScriptTimer($IPS_SELF, 0);
PJ_DimRGBW($LEDid,0,0,0,0,0,0,0,0);
}
}
if($IPS_SENDER == "TimerEvent"){
$maxlumid=LEDCreateVariableByName($IPS_SELF, "Helligkeit (1-255)", 1);
$fadetimeid=LEDCreateVariableByName($IPS_SELF, "Dimmzeit (Sek.)", 1);
$maxlum=GetValue($maxlumid);
if (($maxlum>=256)or($maxlum<=0)){
$maxlum=255;
SetValue($maxlumid,$maxlum);
}
$fade=GetValue($fadetimeid);
if ($fade<=0){
$fade=10;
SetValue($fadetimeid,$fade);
}
PJ_DimRGBW($LEDid,rand(0,$maxlum),$fade,rand(0,$maxlum),$fade,rand(0,$maxlum),$fade,0,0);
IPS_SetScriptTimer($IPS_SELF, $fade);
}
function LEDCreateVariableByName($id, $name, $type) { //Variablen auslesen bzw. erstellen
$vid = @IPS_GetVariableIDByName($name, $id);
if($vid===false) {
$vid = IPS_CreateVariable($type);
IPS_SetParent($vid, $id);
IPS_SetName($vid, $name);
}
return $vid;
}
?>
Gruß
Mario