RGB 868: Lichtszenen per Knopfdruck durchschalten

Hey Jungs, kann mir da jemand helfen?
Ich habe das RGB 868 im Einsatz; über das Webfront habe ich 4 Lichtszenen vorprogrammiert:

<?

$id = 52548 /*[Garten\RGBW-868 (Stripe)]*/;
$szene = GetValueFormatted(57499 /*[Garten\RGBW-868 (Stripe)\Licht Szene]*/);
$dimm = 2;

if ($szene == "Aus"){
    PJ_DimRGBW($id,0,$dimm,0,$dimm,0,$dimm,0,0);
}
if ($szene == "Dunkelrot"){
    PJ_DimRGBW($id,255,$dimm,100,$dimm,0,$dimm,0,0);
}
if ($szene == "Weiss"){
    PJ_DimRGBW($id,255,$dimm,225,$dimm,205,$dimm,0,0);
}
if ($szene == "Blau"){
    PJ_DimRGBW($id,0,$dimm,180,$dimm,255,$dimm,0,0);

}
if ($szene == "Flieder"){
    PJ_DimRGBW($id,205,$dimm,100,$dimm,255,$dimm,0,0);

}

?>

Die Variable $szene enthält die verschiedenen Farben und wird über das Webfront angesteuert (seit 2.4 jetzt auch mit entsprechend farbigen Buttons :wink: )

Diese Steuerung funktioniert prima;

Ich würde jetzt gerne noch über einen Taster (enocean) diese farben durchswitchen;

Leider reichen meine Programmierkenntnisse nicht aus, ich kann mit dem Taster nur über ein event eine Farbe einschalten.

Was müsste ich denn bei Tastendruck für ein Skript laufen lassen, damit er durchschaltet?

Wäre super, wenn mir hierzu einer helfen könnte!

Grüße
Alex

Möglicher Ansatz, wenn nur 1 Taste verwendet:

  • Tastendruck startet Script, welches die Variable „Szene“ (integer) hochzählt. Bei erreichen des Maximum-Wertes wird aus „0“ zurückgesetzt.
  • Dein Ansteuerscript wird über ein Ereigniss „Variablenänderung von Szene“ getriggert

Wenn mehrere Tasten im Spiel sind, kann Szene natürlich durch tastenspezifische Scripte verändert werden.

Gruß
blopp

Danke! Genau so habe ich es jetzt gelöst:


<?

$i = GetValueInteger (57499 /*[Garten\RGBW-868 (Stripe)\Licht Szene]*/);
  $i = ($i + 1);
   If ($i > 4) {                                                                                                            
   $i = 0;   // zurücksetzen auf null
    }
 SetValueInteger (57499 /*[Garten\RGBW-868 (Stripe)\Licht Szene]*/ ,$i);

?>

Da ich immer wieder zusätzliche Szenarien erweitere, lese ich in der Tasterlogik nun das Szenen-Profil aus. Damit spare ich mir bei Erweiterungen weitere Skritanpassungen.


$Szene = GetValue($id_Szene); //Wert auslesen

//Max-Wert des Szene-Profil auslesen
$VarProfil = IPS_GetVariable ($id_Szene);
$VarProfil_Name = IPS_GetVariableProfile ($VarProfil['VariableCustomProfile']);
$VarProfil_Max = $VarProfil_Name['MaxValue'];

//Szene hochhälen, bzw. Reseten, wenn Max-Wert des Profil erreicht ist

if ($Szene >= $VarProfil_Max)
   $Szene = 1;
else
	$Szene = $Szene + 1;


SetValueInteger($id_Szene, $Szene);