Sooooo,
charykuns script war auf jeden Fall GENAU das, nachdem ich gesucht habe…aber auch Peter bin ich sehr dankbar, da ich seinen weg sehr gut „nachverfolgen“ kann und damit einige tests noch machen will.
Eine kleine Änderung, die ich in charykuns script vorgenommen habe:
Ich lasse nach der Aktion der lang gedrückten Tasten die Variable auf 6 setzen…so lande ich immer auf Szene 1 nachdem ich die rechte Taste wieder kurz drücke.
Sehr schön gefällt mir auch, daß die Szenen von der letzten (Szene 6) wieder auf die erste (Szene 1) springt…ich bleibe also nicht vorne oder hinten „hängen“.
Vielen Dank euch allen
Die Scheidung wurde verschoben ![:slight_smile: :slight_smile:](https://community.symcon.de/images/emoji/win10/slight_smile.png?v=9)
Hier mal das Script, mit dem ich hier in meiner kleinen Entwicklungsumgebung herumspiele.
LG
Sascha
<?
function setDisplay($text, $beep, $backlight, $unit) {
$id = 45294 /*[DISPLAY]*/;
HM_WriteValueString($id, "TEXT", $text);
HM_WriteValueString($id, "BEEP", $beep);
HM_WriteValueString($id, "BACKLIGHT", $backlight);
HM_WriteValueString($id, "UNIT", $unit);
HM_WriteValueBoolean($id, "SUBMIT", True);
}
// Integer Variable für die Lichtszenen (1 - 6)
$IDFunktion = 23023 /*[Fernbedienung\Menu\Lichtszenen 1-6]*/;
// HomeMatic Variablen als Ereignis Bei Variablenaktualisierung im Skript zugewiesen
$IDLinks = 32619 /*[KEY 15\PRESS_SHORT]*/;
$IDLinksLong = 35873 /*[KEY 15\PRESS_LONG]*/;
$IDRechts = 27929 /*[KEY 16\PRESS_SHORT]*/;
$IDRechtsLong = 39566 /*[KEY 16\PRESS_LONG]*/;
if($_IPS['SENDER'] == 'Variable')
{
if($_IPS['VARIABLE'] == $IDLinks)
{
$i=GetValue($IDFunktion)-1;
if($i == 0){ $i=6; }
SetValue($IDFunktion,$i);
}
if($_IPS['VARIABLE'] == $IDRechts)
{
$i=GetValue($IDFunktion)+1;
if($i == 7){$i=1;}
SetValue($IDFunktion,$i);
}
if($_IPS['VARIABLE'] == $IDLinks or $_IPS['VARIABLE'] == $IDRechts)
{
switch (GetValueInteger($IDFunktion))
{
case 1:
setDisplay("Scn.1", 1, 1, 0); // Display Anzeigen Text 1
break;
case 2:
setDisplay("Scn.2", 1, 1, 0); // Display Anzeigen Text 2
break;
case 3:
setDisplay("Scn.3", 1, 1, 0); // Display Anzeigen Text 3
break;
case 4:
setDisplay("Scn.4", 1, 1, 0); // Display Anzeigen Text 4
break;
case 5:
setDisplay("Scn.5", 1, 1, 0); // Display Anzeigen Text 5
break;
case 6:
setDisplay("Scn.6", 1, 1, 0); // Display Anzeigen Text 6
break;
}
}
if($_IPS['VARIABLE'] == $IDLinksLong) // Alles aus
{
HM_WriteValueBoolean(18804 /*[Lichtsäule]*/, "STATE", false);
HM_WriteValueBoolean(27385 /*[Schreibtischlampe]*/, "STATE", false);
SetValueInteger(23023 /*[Fernbedienung\Menu\Lichtszenen 1-6]*/,6);
}
if($_IPS['VARIABLE'] == $IDRechtsLong)
{
switch (GetValueInteger($IDFunktion))
{
case 1:
HM_WriteValueBoolean(27385 /*[Schreibtischlampe]*/, "STATE", true); // Lichtszene 1
SetValueInteger(23023 /*[Fernbedienung\Menu\Lichtszenen 1-6]*/,6);
break;
case 2:
HM_WriteValueBoolean(18804 /*[Lichtsäule]*/, "STATE", true); // Lichtszene 2
SetValueInteger(23023 /*[Fernbedienung\Menu\Lichtszenen 1-6]*/,6);
break;
case 3:
HM_WriteValueBoolean(27385 /*[Schreibtischlampe]*/, "STATE", true); // Lichtszene 3
HM_WriteValueBoolean(18804 /*[Lichtsäule]*/, "STATE", true);
SetValueInteger(23023 /*[Fernbedienung\Menu\Lichtszenen 1-6]*/,6);
break;
case 4:
// Lichtszene 4
break;
case 5:
// Lichtszene 5
break;
case 6:
// Lichtszene 6
break;
}
}
}
?>