Hi!
Da hier auch noch keine Antwort geposted wurde, stelle ich mal meine Lösung zur Verfügung.
Man kann den HomeMatic Dimmer zwar direkt mit dem LEVEL Wert vom Aktor verlinken, allerdings drückt man dann auf den Slider auf z.B. 40% und dann springt der Slider kurz auf 40%, dann zurück auf den alten Wert und dann wieder auf 40%. Sieht irgendwie doof aus. Das Licht wird aber direkt und richtig auf 40% gedimmt.
Um das zu umgehen und schöner darzustellen, habe ich mir 2 Variablen angelegt und diese im WebFront verlinkt:
Level-WF (Float) und Status (Boolean)
Die Level-WF Variable hab ich dann mit diesem Skript versehen, welches als Start-Ereignis die Variablenaktualisierung der LEVEL Variable vom Aktor verwendet.
<?
$ips_id_stehlampe1_level = 45070 /*[Hardware & Skripte\HomeMatic\Dimmer\DIM01\Dimmer\LEVEL]*/;
$ips_id_stehlampe1_levelwf = 42549 /*[Hardware & Skripte\HomeMatic\Dimmer\DIM01\Dimmer\Level-WF]*/;
$ips_id_stehlampe1_status = 42200 /*[Hardware & Skripte\HomeMatic\Dimmer\DIM01\Dimmer\Status]*/;
$ips_id_stehlampe1_dim01 = 47714 /*[Hardware & Skripte\HomeMatic\Dimmer\DIM01\Dimmer]*/;
// Setzt den Wert aus dem Webfront in die Variable
if ($IPS_SENDER == "WebFront") {
SetValue($ips_id_stehlampe1_levelwf, $_IPS['VALUE']);
}
$stehlampe1dimlevel = GetValue(42549 /*[Hardware & Skripte\HomeMatic\Dimmer\DIM01\Dimmer\Level-WF]*/);
HM_WriteValueFloat($ips_id_stehlampe1_dim01, "LEVEL", $stehlampe1dimlevel);
if ($stehlampe1dimlevel == 0) {
SetValue($ips_id_stehlampe1_status, false);
}
elseif ($stehlampe1dimlevel > 0) {
SetValue($ips_id_stehlampe1_status, true);
}
?>
Drückt man also auf z.B. 40%, dann wird die Lampe auf 40% gedimmt und der Status wird auf AN geschaltet.
Um auch über den Status schalten zu können, also AN AUS von 0 auf 100% und umgekehrt, habe ich die Status Variable mit folgendem Skript verknüpft und im WebFront verlinkt:
<?
$ips_id_stehlampe1_status = 42200;
$ips_id_stehlampe1_levelwf = 42549;
$stehlampe1dimlevel = GetValue(42549);
if ($IPS_SENDER == "WebFront") {
if (($ips_id_stehlampe1_status == true) AND ($stehlampe1dimlevel < 1)) {
HM_WriteValueFloat($ips_id_stehlampe1_dim01, "LEVEL", 1);
SetValue($ips_id_stehlampe1_status, true);
SetValue($ips_id_stehlampe1_levelwf, 1);
}
else {
SetValue($ips_id_stehlampe1_status, false);
SetValue($ips_id_stehlampe1_levelwf, 0);
HM_WriteValueFloat($ips_id_stehlampe1_dim01, "LEVEL", 0);
}
}
?>
Drückt man also auf 40% wird auf den Wert gedimmt, drückt man dann auf AN, schaltet der Dimmer auf 100%, drückt man dann auf AUS, geht die Lampe auf 0%. Drückt man wieder auf AN, dann gehts direkt wieder auf 100% oder wenn man auf den Slider drückt, wird auf den gewählten Wert gedimmt
Man könnte das Verhalten auch umdrehen, dass die Lampe von gedimmt erst auf 0 geht und dann auf 100, aber so wie ich es jetzt gemacht habe, entspricht es unserem Nutzungsverhalten
Grüße,
Chris