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 ![:smiley: :smiley:](https://community.symcon.de/images/emoji/win10/smiley.png?v=9)
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 ![:cool: :cool:](https://community.symcon.de/images/emoji/win10/cool.png?v=9)
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
?>