Simples Definiertes-Farb-Script für den RGBW-868 Stripe

Hallo,

für den, der seine Farbverläufe gerne selbst definiert:

<?

// Installation:
//1. Bei $LEDid die ID der RGBW-868 Instanz eintragen.
//2. RGB Werte, Fade und Pause Zeiten unter $commands eintagen.
//3. Script starten.
//4. 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


$LEDid=32126 /*[RGBW-868 (Stripe)]*/;

$commands =array( //R,G,B, Fade-Zeit, Pause
	array(255,255,100,5,0),
   array(0,255,255,5,0),
   array(255,0,255,5,0),
   array(100,255,100,5,0),
   array(50,20,255,5,0),
   array(80,182,197,5,0),
   array(200,150,100,5,0),
   array(255,100,50,5,0)
);

if(($IPS_SENDER == "Runscript")or($IPS_SENDER == "Execute")){ //Script wird durch 'runscript' oder 'execute' gestartet?
   $aktivid = @IPS_GetVariableIDByName("Aktiv", $IPS_SELF); //Variable 'Aktiv' vorhanden?
   if($aktivid===false) { //wenn nicht:
      $aktivid = IPS_CreateVariable(0); //Variable erstellen
      IPS_SetParent($aktivid, $IPS_SELF); //Variable Ort bestimmen
      IPS_SetName($aktivid, "Aktiv"); // Variable Name bestimmen
   }
   $stepid = @IPS_GetVariableIDByName("Step", $IPS_SELF); //Das gleiche wie mit der Variablen 'Aktiv'
   if($stepid===false) {
      $stepid = IPS_CreateVariable(1);
      IPS_SetParent($stepid, $IPS_SELF);
      IPS_SetName($stepid, "Step");
   }
	$eid = @IPS_GetEventIDByName("Aktiv-Event", $IPS_SELF); //Event 'Aktiv-Event' vorhanden?
   if($eid===false) { //wenn nicht:
      $eid = IPS_CreateEvent(0); // Event erzeugen
      IPS_SetEventTrigger($eid, 1, $aktivid); // Event aktivieren
      IPS_SetParent($eid, $IPS_SELF); // Event Ort bestimmen
      IPS_SetName($eid, "Aktiv-Event"); // Event Name bestimmen
      IPS_SetEventActive($eid, true); // Event aktivieren
   }
   SetValue ($aktivid, (GetValue($aktivid) ? false:true)); //Variable 'Aktiv' toggle (Script an/aus schalten)
	}

if($IPS_SENDER == "Variable")	{ // Wenn Script durch Variable getriggert:
   $aktivid = @IPS_GetVariableIDByName("Aktiv", $IPS_SELF); //ID der Variablen 'Aktiv' holen
   $aktiv=GetValue($aktivid); // Variable 'Aktiv' auslesen
	if($aktiv){ // Wenn Variable 'Aktiv' 'true' ist:
	   $stepid = @IPS_GetVariableIDByName("Step", $IPS_SELF); //ID der Variablen 'Step' holen 
	   SetValue($stepid,0); //Wert 0 in Variable 'Step' speichern
   	IPS_SetScriptTimer($IPS_SELF, 1); //Scripttimer auf 1 Sekunde setzen (Script aktivieren)
		}
	else{  // sonst:
	   IPS_SetScriptTimer($IPS_SELF, 0); //Scripttimer löschen und
	   PJ_DimRGBW($LEDid,0,0,0,0,0,0,0,0); //LEDs ausschalten
	   }
	}

if($IPS_SENDER == "TimerEvent"){  //Wenn Scriptaufruf durch Timer:
   $stepid = @IPS_GetVariableIDByName("Step", $IPS_SELF); // ID der Variable 'Step' auslesen
   $step=GetValue($stepid); // Variable Step auslesen
	PJ_DimRGBW($LEDid,$commands[$step][0],$commands[$step][3],$commands[$step][1],$commands[$step][3],$commands[$step][2],$commands[$step][3],0,0); //Werte aus dem Array 'Command' holen und an die LEDs senden
	IPS_SetScriptTimer($IPS_SELF, ($commands[$step][3]+$commands[$step][4])); // Scripttimer neu setzen für nächsten 'Step' (Wert 3/Fadezeit + Wert 4/Pause)
	$step++; // Variable 'Step' um 1 erhöhen
	if ($step>=count($commands)){SetValue($stepid,0);} // Wenn 'Step' größer als die Anzahl der Befehlszeilen in 'command' dann vorne beginnen
	else{SetValue($stepid,$step);} // Aktuellen 'Step' abspeichern
	}

?>

Bunte Grüße
Smudo