An/Aus / Statusvariable RGBW686

Hallo,

hat jemand ein script oder eine Anwendung um das RGWB 868 an/abzuschalten aber mit der vorher abgeschalteten Farbe.

Leider hat das RGBW ja keine Statusvariable oder täusche ich mich da?

Viele Grüße und danke

„$rgb_alt“ > als Integer-Variable neu anlegen z.B. „RGB Alt“

$id = 12345;  // RGBW Modul
$rgb_ist = GetValue(67890; // Color Status Variable vom RGBW
$rgb_alt = GetValue(11223); // Merker

if($rgb_ist > 0){
	PJ_DimRGBW($id,0,0,0,0,0,0,0,0);  	//   alles Aus
	SetValue(22166, $rgb_ist);
}else{                                 // alte Farbe Ein
	// in RGB zerlegen
	$bl = ($rgb_alt & 255);
	$gr = (($rgb_alt >> 8) & 255);
	$rot = (($rgb_alt >> 16) & 255);
	PJ_SetRGBW($id, $rot, $gr, $bl, 0);
}

MST

Ich hatte mir schon fast gedacht, dass es nur über die Möglichkeit geht „Schwarz“ zu setzten.

Mir hat nurnoch die Möglichkeit gefehlt die Farbe aus der Integerer Variable neu zu setzten.

Vielen Dank für die Lösung!

… na ja An/Aus geht schon:

PJ_RunProgram: IP-Symcon :: Automatisierungssoftware

Nur die Status-Variable muss man sich selber anlegen.
Der Vorteil das o.g. Skript besteht darin, dass nach Spannungsunterbrechung die alte Farbe wieder hergestellt wird.

MST

Oh über die Programme…das ist allerdings richtig…Übersehen…:cool:

Ein riesen Vorteil deines Scripts sind allerdings natürlich die einstellbaren Dimzeiten beim ein Ausschalten wenn man DimRGBW statt SetRGBW verwendet…

muchas gracias

Und wie wird das Script angetriggert?

Kann alles sein, was sich in IPS auswerten lässt, bloß Stecker ziehen klappt nicht. :smiley:

Gruß
Bruno

:mad: Naja, ich frag nur … ich hab so etwas ähnliches schon mit einem Kanal meiner Wago verknüpft, nur scheint es manchmal etwas länger zu dauern bis die Funkverbindung nach Stromwiederkehr da ist und dadurch kommt der Befehl nicht an!?
Vielleicht gibts da ja noch andere Möglichkeiten auf die ich nicht gekommen bin …

Hi zusammen,

an dieser Stelle wollte ich auch mal mein Script zum steuern des RGBW-Stripes kund tun.

Es speichert die letzte Farbe und aktiviert dieses wieder beim Einschalten.
Ein Set an eigenen Farben kann definiert werden.
Je nach dem durch welches Ereigniss das Scirpt getriggered wird werden folgende Funtkionen ausgelöst:

  • Toggle On/Off
  • nächste Farbe
  • Spezialfunktion: In diesem Fall die Farbe Weis einstellen.

Installation:

  • Das Script muss unterhalb der RGBW-Instanz angelegt werden.
  • Das Script muss über 3 verschiedene Ereignisse angestoßen werden. z.B.: Die Knöpfe einer Fernbedienung (ich habe bei mir 2 Tasten genommen und davon jeweils SHORT_PRESS und LONG_PRESS)

Bei Fragen wendet euch gerne an mich.


<?

// Define your colors here
$values[] = "FF0000"; // Red
$values[] = "FFFF00"; // Yellow
$values[] = "00FF00"; // Green
$values[] = "00FFFF"; // Cyan
$values[] = "0000FF"; // Blue
$values[] = "FF00FF"; // Purple

// Define your buttons which will trigger this script here
$buttons['power'] = 54804 /*[EG\Remote Control\RC01-Key05\PRESS_SHORT]*/;
$buttons['nextColor'] = 28701 /*[EG\Remote Control\RC01-Key06\PRESS_SHORT]*/;
$buttons['white'] = 47661 /*[EG\Remote Control\RC01-Key06\PRESS_LONG]*/;

// -----------------------------------------------------------------------------------------------------------------
// DON'T CHANGE ANYTHING BELOW THIS LINE !!!
// -----------------------------------------------------------------------------------------------------------------

function CreateVariableByName($id, $name, $type, $profile = "", $hidden = false)
{
  global $IPS_SELF;
  $vid = @IPS_GetVariableIDByName($name, $id);
  if($vid === false)
  {
      $vid = IPS_CreateVariable($type);
      IPS_SetParent($vid, $id);
      IPS_SetName($vid, $name);
      IPS_SetInfo($vid, "this variable was created by script #$IPS_SELF");
      IPS_SetHidden($vid, $hidden);
      if($profile !== "") { IPS_SetVariableCustomProfile($vid, $profile); }
  }
  return $vid;
}

// -----------------------------------------------------------------------------------------------------------------

function SetRGB($device_id, $color, $time = 3)
{
   $colorRGB = str_split($color,2);
	PJ_DimRGBW($device_id,hexdec($colorRGB[0]),$time,hexdec($colorRGB[1]),$time,hexdec($colorRGB[2]),$time,0,0);
}

// -----------------------------------------------------------------------------------------------------------------

// check if Stripe is on or off
if (GetValueFormatted(IPS_GetVariableIDByName("Color",IPS_GetParent($IPS_SELF))) == "000000")
{
	// OFF -> turning ON
	SetRGB(IPS_GetParent($IPS_SELF),GetValueString(IPS_GetVariableID("LastColor")));
}
else
{
	switch ($IPS_VARIABLE) {

   	case $buttons['nextColor']:
		   // Change Color
		   // Look for index of current color in array
			$key = array_search(GetValueFormatted(IPS_GetVariableIDByName("Color",IPS_GetParent($IPS_SELF))), $values);
			if (($key < sizeof($values)-1)
			and (isset($key)))
			{
			   $nextValue = $key+1;
			}
			else
			{
				$nextValue = 0;
			}
			// set Color
			SetRGB(IPS_GetParent($IPS_SELF),$values[$nextValue]);
         break;
         
		case $buttons['white']:
         SetRGB(IPS_GetParent($IPS_SELF),"FFFFFF");
	      break;
	     
		default:
			// ON -> turning OFF
			
			//save old color value
			SetValueString(CreateVariableByName($IPS_SELF, "LastColor", 3, "", true), GetValueFormatted(IPS_GetVariableIDByName("Color",IPS_GetParent($IPS_SELF))));
			
			// turn RGB-Stripe off
			SetRGB(IPS_GetParent($IPS_SELF),"000000");
	}
}

?>

Sieht gut aus, vielen Dank. Werde ich mal testen…