Moin,
ich hab seit ewigen Zeiten ein RGB Farbwechsler-Script im Webfront um mal für Partys ein bisschen buntes Licht zu machen. Mittlerweile habe ich auf die 5.x migriert und Halloween naht…
Leider funktioniert das alte Script so ohne weiteres nicht (hab die Nummer der RGBW-Instanz natürlich angepasst) und wirft mir „Undefined variable: IPS_SENDER in /var/lib/symcon/scripts/14593.ips.php on line xx“-Meldungen.
Könnte da mal jemand kurz schauen was ich ändern muss damit es auch unter 5.x läuft?
Merci und Gruß,
Der Hocky
<?
//return;
// 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=17770 /*[Objekt #17770 existiert nicht]*/;
$kanaele=3; //1 -> 1 Kanal / 2 -> Max 2 Kanäle / 3 -> Max 3 Kanäle / 4 -> immer 2 Kanäle / 5 -> immer 3 Kanäle
$minlum=0;
if(($IPS_SENDER == "Runscript")or($IPS_SENDER == "Execute")or($IPS_SENDER == "WebFront")){
$aktivid =CreateVariableByName($IPS_SELF, "Aktiv", 0);
$maxlumid=CreateVariableByName($IPS_SELF, "Helligkeit (1-255)", 1);
$fadetimeid=CreateVariableByName($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"){
$aktiv=GetValue(@IPS_GetVariableIDByName("Aktiv", $IPS_SELF));
if ($aktiv==false){
IPS_SetScriptTimer($IPS_SELF, 0);
PJ_DimRGBW($LEDid,0,0,0,0,0,0,0,0);
return;
}
$maxlumid=CreateVariableByName($IPS_SELF, "Helligkeit (1-255)", 1);
$fadetimeid=CreateVariableByName($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);
}
switch ($kanaele)
{
case "1":
$colors=rand(1,3);
break;
case "2":
$colors=rand(1,6);
break;
case "3":
$colors=rand(1,7);
break;
case "4":
$colors=rand(4,6);
break;
case "5":
$colors=7;
break;
}
switch ($colors)
{
case "1":
$r=rand($minlum,$maxlum);$g=0;$b=0;
break;
case "2":
$r=0;$g=rand($minlum,$maxlum);$b=0;
break;
case "3":
$r=0;$g=0;$b=rand($minlum,$maxlum);
break;
case "4":
$r=rand($minlum,$maxlum);$g=rand($minlum,$maxlum);$b=0;
break;
case "5":
$r=rand($minlum,$maxlum);$g=0;$b=rand($minlum,$maxlum);
break;
case "6":
$r=0;$g=rand($minlum,$maxlum);$b=rand($minlum,$maxlum);
break;
case "7":
$r=rand($minlum,$maxlum);$g=rand($minlum,$maxlum);$b=rand($minlum,$maxlum);
break;
}
PJ_DimRGBW($LEDid,$r,$fade,$g,$fade,$b,$fade,0,0);
IPS_SetScriptTimer($IPS_SELF, $fade);
}
function CreateVariableByName($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;
}
?>