Hallo ,
das habe ich aus dem Forum im Einsatz ,
<?
// 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=23707 /*[Geräte\LED Stripe\RGBW-868 (Stripe)]*/;
$commands =array( //R,G,B, Fade-Zeit, Pause
array(255,0,0,120,0),
array(255,120,0,120,0),
array(255,0,255,120,0),
array(100,255,100,120,0),
array(50,20,255,120,0),
array(80,182,197,120,0),
// array(200,150,100,120,0),
array(255,100,50,120,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
}
?>