So ich habe mal alles in ein Script zusammengefasst, nur die IP ändern und den Namen der Instanz ändern und 1 x ausführen.
Es werden alle Variablen mit den passierenden Variableprofielen angelegt 
Wenn mir jemand noch den fertigen Part für den Helligkeit postet baue ich das auch noch ein…
Verbesserungswünsche oder Erweiterungen könnt Ihr mir gerne mitteilen :rolleyes:
Man kenn jetzt auch ganz einfach per Script die Farbe wechseln:
<?
setvalue(46867 /*[RGBW Controller 1\Power]*/, true); // Gerät einschalten !
IPS_Sleep(1000);
setvalue(36409 /*[RGBW Controller 1\Farben]*/, 1); // Feste Farbe wählen !
?>
Das funktioniert genauso mit den Programmen 
Hier das Script:
<?
// ***************Config: *************************************
$name="RGBW Controller 1";
$ip="192.168.0.121";
//********************** Ab hier nix mehr ändern **************
$varid = @$_IPS['VARIABLE']; // Wer hat das Script ausgelöst ?
$varsender=$_IPS['SENDER'];
//print $varsender;
// Variable Profil erstellen
$vprofilname="RGBW-Farben";
if (!IPS_VariableProfileExists($vprofilname)) // Wenn das Provil noch nicht Exestiert dann lege es an:
{
IPS_CreateVariableProfile($vprofilname, 1); // Variabelprofil erstellen
IPS_SetVariableProfileAssociation($vprofilname, 1, "Rot", "", 0xff0000);
IPS_SetVariableProfileAssociation($vprofilname, 2, "Gruen", "", 0x2EFE2E);
IPS_SetVariableProfileAssociation($vprofilname, 3, "Blau", "", 0x0000ff);
IPS_SetVariableProfileAssociation($vprofilname, 4, "Weiss", "", 0xffffff);
}
// Variable Profil erstellen
$vprofilname="RGBW-Programm";
if (!IPS_VariableProfileExists($vprofilname)) // Wenn das Provil noch nicht Exestiert dann lege es an:
{
IPS_CreateVariableProfile($vprofilname, 1); // Variabelprofil erstellen
IPS_SetVariableProfileAssociation($vprofilname, 1, "7-Farben", "", 0xff0000);
IPS_SetVariableProfileAssociation($vprofilname, 2, "Blau", "", 0xff0000);
IPS_SetVariableProfileAssociation($vprofilname, 3, "Gruen", "", 0x2EFE2E);
IPS_SetVariableProfileAssociation($vprofilname, 4, "Cyan", "", 0x0000ff);
IPS_SetVariableProfileAssociation($vprofilname, 5, "Weiss", "", 0xffffff);
IPS_SetVariableProfileAssociation($vprofilname, 6, "Rot-Blau", "", 0xffffff);
IPS_SetVariableProfileAssociation($vprofilname, 7, "Grün-Blau", "", 0xffffff);
IPS_SetVariableProfileAssociation($vprofilname, 8, "Rot-Grün", "", 0xffffff);
}
$instance=GetOrCreateInstanz($name , "dummy", 0);
$powerid=GetOrCreateVariable( "Power", "0", "", "~Switch",$_IPS['SELF'], true, $instance);
$farbenid=GetOrCreateVariable( "Farben", "1", "", "RGBW-Farben",$_IPS['SELF'], false, $instance);
$farbenpickerid=GetOrCreateVariable( "Farben-Picker", "1","", "~HexColor",$_IPS['SELF'], false, $instance);
$programmid=GetOrCreateVariable( "Programme", "1","", "RGBW-Programm",$_IPS['SELF'], false, $instance);
$speedid=GetOrCreateVariable( "Geschwindigkeit", "1","", "~Intensity.255",$_IPS['SELF'], false, $instance);
IPS_SetPosition($powerid, 1);
IPS_SetPosition($farbenid, 2);
IPS_SetPosition($farbenpickerid,3);
IPS_SetPosition($programmid,4);
IPS_SetPosition($speedid, 5);
$powereventid=GetOrCreateEvent("power",$powerid, $_IPS['SELF']);
$farbeneventid=GetOrCreateEvent("farben",$farbenid, $_IPS['SELF']);
$farbenpickereventid=GetOrCreateEvent("farbenpicker",$farbenpickerid, $_IPS['SELF']);
$programmeventid=GetOrCreateEvent("programm",$programmid, $_IPS['SELF']);
$speedeventid=GetOrCreateEvent("speed",$speedid, $_IPS['SELF']);
IPS_SetHidden($_IPS['SELF'], true);
if ($varsender=="Execute") IPS_SetParent($_IPS['SELF'],$instance);
// Webfrontend
//if($_IPS['SENDER'] == 'WebFront') SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
$power=getvalue($powerid);
//******************** On / Off **************
if ($varid==$powerid)
{
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
$power=getvalue($powerid);
if ($power == true) fwrite(fsockopen("tcp://$ip", 5577), "\x71\x23\x0F\xA3");//Stripe An
else fwrite(fsockopen("tcp://$ip", 5577), "\x71\x24\x0f\xa4");//Stripe Aus
}
// ************************ Farben Setzten *******************
if (($varid==$farbenid) && ($power==true))
{
$farben=getvalue($farbenid);
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
if ($farben == 1){fwrite(fsockopen("tcp://$ip", 5577), "\x31\xff\x00\x00\x00\x00\x0f\x3f") && SetValue ($farbenpickerid,16711680);}//rot
else
if ($farben == 2){fwrite(fsockopen("tcp://$ip", 5577), "\x31\x00\xff\x00\x00\x00\x0f\x3f") && SetValue ($farbenpickerid,65280 /*[Objekt #65280 existiert nicht]*/);}//gruen
else
if ($farben == 3){fwrite(fsockopen("tcp://$ip", 5577), "\x31\x00\x00\xff\x00\x00\x0f\x3f") && SetValue ($farbenpickerid,255);}//blau
else
if ($farben == 4){fwrite(fsockopen("tcp://$ip", 5577), "\x31\x00\x00\x00\xff\x00\x0f\x3f");}//weiss
}
else if (($varid==$farbenid) && ($power !=true)) echo "Gerät muss an sein, um es zu steuern !";
// ************************** Farbenpicker ***********************************
if (($varid==$farbenpickerid) && ($power==true))
{
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
$farbenpicker=getvalue($farbenpickerid);
//SetValue($_IPS['VARIABLE'], $_IPS['VALUE']); // Speichert den vom Picker gesendeten Wert in der angelegten Variable
//Picker Umwandlung und Zerteilung in HEX Farben
$r = (($_IPS['VALUE'] >> 16) & 0xFF);
$g = (($_IPS['VALUE'] >> 8) & 0xFF);
$b = (($_IPS['VALUE'] >> 0) & 0xFF);
$sigdez = 49+$r+$g+$b+15;//Signatur Berechnung Dezimal
$sighex = dechex($sigdez);//Signatur Umrechnung Dezimal zu Hex
$signatur = substr($sighex, -2); //Nur letzte 2 Zeichen verwenden
$signatur1 = hexdec($signatur); //Signatur Umrechnung Hex zu Dezimal
//Sendet Dezimal Werte an Client Socket
fwrite(fsockopen("tcp://$ip", 5577), chr(49) . chr($r) . chr($g) . chr($b) . chr(00) . chr(00) . chr(15) . chr($signatur1));
}
else if (($varid==$farbenpickerid) && ($power !=true)) echo "Gerät muss an sein, um es zu steuern !";
// ********************** Programme *****************
if (($varid==$programmid) && ($power==true))
{
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
$speed=getvalue($speedid);
$programm=getvalue($programmid);
$p1 = 37; //Seven Color Cross Fade
$p2 = 40; //Blue Gradual Change
$p3 = 39; //Green Gradual Change
$p4 = 42; //Cyan Gradual Change
$p5 = 44; //White Gradual Change
$p6 = 46; //Red, Blue, Cross Fade
$p7 = 47; //Green, Blue Cross Fade
$p8 = 45; //Red,Green Cross Fade
$sigdez1 = 97+$p1+$speed+15; //Signatur Berechnung Dezimal
$sighex1 = dechex($sigdez1); //Signatur Umrechnung Dezimal zu Hex
$sigkurz1 = substr($sighex1, -2); //Nur letzte 2 Zeichen verwenden
$signatur1 = hexdec($sigkurz1); //Signatur Umrechnung Hex zu Dezimal
$sigdez2 = 97+$p2+$speed+15; //Signatur Berechnung Dezimal
$sighex2 = dechex($sigdez2); //Signatur Umrechnung Dezimal zu Hex
$sigkurz2 = substr($sighex2, -2); //Nur letzte 2 Zeichen verwenden
$signatur2 = hexdec($sigkurz2); //Signatur Umrechnung Hex zu Dezimal
$sigdez3 = 97+$p3+$speed+15; //Signatur Berechnung Dezimal
$sighex3 = dechex($sigdez3); //Signatur Umrechnung Dezimal zu Hex
$sigkurz3 = substr($sighex3, -2); //Nur letzte 2 Zeichen verwenden
$signatur3 = hexdec($sigkurz3); //Signatur Umrechnung Hex zu Dezimal
$sigdez4 = 97+$p4+$speed+15; //Signatur Berechnung Dezimal
$sighex4 = dechex($sigdez4); //Signatur Umrechnung Dezimal zu Hex
$sigkurz4 = substr($sighex4, -2); //Nur letzte 2 Zeichen verwenden
$signatur4 = hexdec($sigkurz4); //Signatur Umrechnung Hex zu Dezimal
$sigdez5 = 97+$p5+$speed+15; //Signatur Berechnung Dezimal
$sighex5 = dechex($sigdez5); //Signatur Umrechnung Dezimal zu Hex
$sigkurz5 = substr($sighex5, -2); //Nur letzte 2 Zeichen verwenden
$signatur5 = hexdec($sigkurz5); //Signatur Umrechnung Hex zu Dezimal
$sigdez6 = 97+$p6+$speed+15; //Signatur Berechnung Dezimal
$sighex6 = dechex($sigdez6); //Signatur Umrechnung Dezimal zu Hex
$sigkurz6 = substr($sighex6, -2); //Nur letzte 2 Zeichen verwenden
$signatur6 = hexdec($sigkurz6); //Signatur Umrechnung Hex zu Dezimal
$sigdez7 = 97+$p7+$speed+15; //Signatur Berechnung Dezimal
$sighex7 = dechex($sigdez7); //Signatur Umrechnung Dezimal zu Hex
$sigkurz7 = substr($sighex7, -2); //Nur letzte 2 Zeichen verwenden
$signatur7 = hexdec($sigkurz7); //Signatur Umrechnung Hex zu Dezimal
$sigdez8 = 97+$p8+$speed+15; //Signatur Berechnung Dezimal
$sighex8 = dechex($sigdez8); //Signatur Umrechnung Dezimal zu Hex
$sigkurz8 = substr($sighex8, -2); //Nur letzte 2 Zeichen verwenden
$signatur8 = hexdec($sigkurz8); //Signatur Umrechnung Hex zu Dezimal
//SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
if ($_IPS["VALUE"] == 1){fwrite(fsockopen("tcp://$ip", 5577), chr(97) . chr($p1) . chr($speed) . chr(15) . chr($signatur1));}//Seven Color Cross Fade
else
if ($_IPS["VALUE"] == 2){fwrite(fsockopen("tcp://$ip", 5577), chr(97) . chr($p2) . chr($speed) . chr(15) . chr($signatur2));}//Blue Gradual Change
else
if ($_IPS["VALUE"] == 3){fwrite(fsockopen("tcp://$ip", 5577), chr(97) . chr($p3) . chr($speed) . chr(15) . chr($signatur3));}//Green Gradual Change
else
if ($_IPS["VALUE"] == 4){fwrite(fsockopen("tcp://$ip", 5577), chr(97) . chr($p4) . chr($speed) . chr(15) . chr($signatur4));}//Cyan Gradual Change
else
if ($_IPS["VALUE"] == 5){fwrite(fsockopen("tcp://$ip", 5577), chr(97) . chr($p5) . chr($speed) . chr(15) . chr($signatur5));}//White Gradual Change
else
if ($_IPS["VALUE"] == 6){fwrite(fsockopen("tcp://$ip", 5577), chr(97) . chr($p6) . chr($speed) . chr(15) . chr($signatur6));}//Red, Blue, Cross Fade
else
if ($_IPS["VALUE"] == 7){fwrite(fsockopen("tcp://$ip", 5577), chr(97) . chr($p7) . chr($speed) . chr(15) . chr($signatur7));}//Green, Blue Cross Fade
else
if ($_IPS["VALUE"] == 8){fwrite(fsockopen("tcp://$ip", 5577), chr(97) . chr($p8) . chr($speed) . chr(15) . chr($signatur8));}//Red,Green Cross Fade
}
else if (($varid==$programmid) & ($power !=true)) echo "Gerät muss an sein, um es zu steuern !";
// ****************************** Speed ******************
if (($varid==$speedid) & ($power==true))
{
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
$speed=getvalue($speedid);
$p1 = 37; //Seven Color Cross Fade
$p2 = 40; //Blue Gradual Change
$p3 = 39; //Green Gradual Change
$p4 = 42; //Cyan Gradual Change
$p5 = 44; //White Gradual Change
$p6 = 46; //Red, Blue, Cross Fade
$p7 = 47; //Green, Blue Cross Fade
$p8 = 45; //Red,Green Cross Fade
$sigdez1 = 97+$p1+$speed+15; //Signatur Berechnung Dezimal
$sighex1 = dechex($sigdez1); //Signatur Umrechnung Dezimal zu Hex
$sigkurz1 = substr($sighex1, -2); //Nur letzte 2 Zeichen verwenden
$signatur1 = hexdec($sigkurz1); //Signatur Umrechnung Hex zu Dezimal
$sigdez2 = 97+$p2+$speed+15; //Signatur Berechnung Dezimal
$sighex2 = dechex($sigdez2); //Signatur Umrechnung Dezimal zu Hex
$sigkurz2 = substr($sighex2, -2); //Nur letzte 2 Zeichen verwenden
$signatur2 = hexdec($sigkurz2); //Signatur Umrechnung Hex zu Dezimal
$sigdez3 = 97+$p3+$speed+15; //Signatur Berechnung Dezimal
$sighex3 = dechex($sigdez3); //Signatur Umrechnung Dezimal zu Hex
$sigkurz3 = substr($sighex3, -2); //Nur letzte 2 Zeichen verwenden
$signatur3 = hexdec($sigkurz3); //Signatur Umrechnung Hex zu Dezimal
$sigdez4 = 97+$p4+$speed+15; //Signatur Berechnung Dezimal
$sighex4 = dechex($sigdez4); //Signatur Umrechnung Dezimal zu Hex
$sigkurz4 = substr($sighex4, -2); //Nur letzte 2 Zeichen verwenden
$signatur4 = hexdec($sigkurz4); //Signatur Umrechnung Hex zu Dezimal
$sigdez5 = 97+$p5+$speed+15; //Signatur Berechnung Dezimal
$sighex5 = dechex($sigdez5); //Signatur Umrechnung Dezimal zu Hex
$sigkurz5 = substr($sighex5, -2); //Nur letzte 2 Zeichen verwenden
$signatur5 = hexdec($sigkurz5); //Signatur Umrechnung Hex zu Dezimal
$sigdez6 = 97+$p6+$speed+15; //Signatur Berechnung Dezimal
$sighex6 = dechex($sigdez6); //Signatur Umrechnung Dezimal zu Hex
$sigkurz6 = substr($sighex6, -2); //Nur letzte 2 Zeichen verwenden
$signatur6 = hexdec($sigkurz6); //Signatur Umrechnung Hex zu Dezimal
$sigdez7 = 97+$p7+$speed+15; //Signatur Berechnung Dezimal
$sighex7 = dechex($sigdez7); //Signatur Umrechnung Dezimal zu Hex
$sigkurz7 = substr($sighex7, -2); //Nur letzte 2 Zeichen verwenden
$signatur7 = hexdec($sigkurz7); //Signatur Umrechnung Hex zu Dezimal
$sigdez8 = 97+$p8+$speed+15; //Signatur Berechnung Dezimal
$sighex8 = dechex($sigdez8); //Signatur Umrechnung Dezimal zu Hex
$sigkurz8 = substr($sighex8, -2); //Nur letzte 2 Zeichen verwenden
$signatur8 = hexdec($sigkurz8); //Signatur Umrechnung Hex zu Dezimal
$prog = GetValue ($programmid);
if ($prog == 1){fwrite(fsockopen("tcp://$ip", 5577), chr(97) . chr($p1) . chr($speed) . chr(15) . chr($signatur1));}//Seven Color Cross Fade
else
if ($prog == 2){fwrite(fsockopen("tcp://$ip", 5577), chr(97) . chr($p2) . chr($speed) . chr(15) . chr($signatur2));}//Blue Gradual Change
else
if ($prog == 3){fwrite(fsockopen("tcp://$ip", 5577), chr(97) . chr($p3) . chr($speed) . chr(15) . chr($signatur3));}//Green Gradual Change
else
if ($prog == 4){fwrite(fsockopen("tcp://$ip", 5577), chr(97) . chr($p4) . chr($speed) . chr(15) . chr($signatur4));}//Cyan Gradual Change
else
if ($prog == 5){fwrite(fsockopen("tcp://$ip", 5577), chr(97) . chr($p5) . chr($speed) . chr(15) . chr($signatur5));}//White Gradual Change
else
if ($prog == 6){fwrite(fsockopen("tcp://$ip", 5577), chr(97) . chr($p6) . chr($speed) . chr(15) . chr($signatur6));}//Red, Blue, Cross Fade
else
if ($prog == 7){fwrite(fsockopen("tcp://$ip", 5577), chr(97) . chr($p7) . chr($speed) . chr(15) . chr($signatur7));}//Green, Blue Cross Fade
else
if ($prog == 8){fwrite(fsockopen("tcp://$ip", 5577), chr(97) . chr($p8) . chr($speed) . chr(15) . chr($signatur8));}//Red,Green Cross Fade
}
else if (($varid==$speedid) & ($power !=true)) echo "Gerät muss an sein, um es zu steuern !";
// ************************** Funktionen ******************
function GetOrCreateVariable($name , $vtyp, $ident, $profil, $ascript, $log ,$parent ) // erstellt eine Variable, wenn es noch nicht exestiert
// Erstellt eine Variable, Wert 1 = Name , Wert 2 ist der Typ der Variable, Wert 3, Variabel-Ident, Wert 4 Provil, Wert 5 ScriptID , Wert 6 ist die Übergeordnete Instanz, wo die Variable angelegt werden soll
{
$ObjId = @IPS_GetObjectIDByName($name , $parent);
if ($ObjId === false)
{
$ObjId = IPS_CreateVariable($vtyp);
IPS_SetName($ObjId, $name); // Namer vergeben
@IPS_SetIdent($ObjId, $ident); // ObjectIdent vergeben...
@IPS_SetParent($ObjId,$parent ); // Variable unter die Instantz verschieben
@IPS_SetVariableCustomProfile($ObjId, $profil); // Variable Profil zuordnen
@IPS_SetVariableCustomAction($ObjId, $ascript);// Verknüpft das Script mit der Variable als Actionscript
// Archive Control ID herrausfinden
foreach(IPS_GetInstanceList ( ) as $m_id)// Durchsucht alle Instanzen und gibt die INstanzid an $i_id weiter
{
$typ=IPS_GetInstance($m_id)['ModuleInfo']['ModuleName']; // Fragt die Instanzen nach den Modulnamen ab....
if ($typ=="Archive Control") $modul_id=$m_id; // Wenn die INstanz den Modulnamen "Archive Control" hat, dann schreibe die ID in $modul_id
}
$logging=AC_GetLoggingStatus($modul_id,$ObjId);
if ($logging != 1)
{
AC_SetLoggingStatus($modul_id,$ObjId, $log);
IPS_ApplyChanges($modul_id);
}// Ende Logging
}
return $ObjId;
} //Ende der Funktion GetOrCreateVariable
function GetOrCreateInstanz($name , $ityp, $parent ) // erstellt eine Variable, wenn es noch nicht exestiert
// Erstellt eine Variable, Wert 1 = Name , Wert 2 ist der Typ der Variable, Wert 3, Variabel-Ident, Wert 4 Provil, Wert 5 ScriptID , Wert 6 ist die Übergeordnete Instanz, wo die Variable angelegt werden soll
{
$ObjId = @IPS_GetObjectIDByName($name , $parent);
if ($ObjId === false)
{
if ($ityp=="dummy") $ityp='{485D0419-BE97-4548-AA9C-C083EB82E61E}';
$ObjId = IPS_CreateInstance($ityp);
IPS_SetName($ObjId, $name); // Namer vergeben
IPS_SetParent($ObjId,$parent ); // Variable unter die Instantz verschieben
}
return $ObjId;
} //Ende der Funktion GetOrCreateInstanz
function GetOrCreateEvent($name,$vid, $scriptid) // erstellt ein Event, wenn es noch nicht exestiert
// Erstellt ein Event, Wert 1 = Name , Wert 2 ist die VariableID, wo das Event angelegt werden soll, Wert 3 ist das Script was das Event auslösen soll
{
$ObjId = @IPS_GetObjectIDByName($name , $scriptid);
if ($ObjId === false)
{
$ObjId = IPS_CreateEvent(0);
IPS_SetEventTrigger($ObjId, 1, $vid); //Bei Änderung von Variable mit ID $vid
IPS_SetName($ObjId, $name);
IPS_SetParent($ObjId, $_IPS['SELF']); //Eregnis zuordnen
IPS_SetEventActive($ObjId, true); //Ereignis aktivieren
}
return $ObjId;
} //Ende der Funktion GetOrCreateEvent
?>