Hallo … Ich habe mir in IPS ein Virtuellen Taster angelegt (Integer). Der soll mein Dimmer (HomeMatic) zusätzlich mit festen Werten Steuern. Den Taster
habe ich ein Profil zugeordnet. Unter Assoziationen 5 Werte eingetragen. 10 % 30 % usw. Aber ich kann ja nur ein Skript ausführen. . wie bekomme ich das mit den Werten hin ??
Ich hab gerade heute auch einen Dimmer in Betrieb genommen.
Anbei mein Script, wobei eine Integer-Variable mit 5 Assoziationen hinterlegt ist.
Aufgabe des Scriptes:
Umwandeln der diskreten Schritte der Visualisierungs-Variable in float
Aktualisierung der Visualisierungs-Variable, wenn Dimmer durch Taster oder sonstige Scripte verändert wird.
<?
/***************************************/
/* Ab hier Konfigurieren */
$id_aktor = 53340 /*[Homematic\Wohnzimmer - Deckenleuchte]*/;
$id_MyLevel =48143 /*[Homematic\Wohnzimmer - Deckenleuchte\Treiber\MyLevel]*/;
/* Bis hier Konfigurieren */
/***************************************/
//* Aktuellen Level des Aktor auslesen
$id_Level = @IPS_GetObjectIDByName("LEVEL", $id_aktor);
$Level = GetValue($id_Level);
//Webfront-Eingabe einlesen und Jalousie ansteuern
if ($IPS_SENDER == "WebFront") {
SetValue($IPS_VARIABLE, $IPS_VALUE);
//"MyLevel" wird der über Webfront eingelesene Wert übergeben
$MyLevel = GetValue($id_MyLevel);
//Zu setzender Level "SetLEvel" wird lokal bestimmt
$SetLevel = 0.0;
if ($MyLevel == 25)
$SetLevel = 0.25;
if ($MyLevel == 50)
$SetLevel = 0.5;
if ($MyLevel == 75)
$SetLevel = 0.75;
if ($MyLevel == 100)
$SetLevel = 1.0;
//Aktor wird mit berechnetem "SetLevel" angesteuert
HM_WriteValueFloat ($id_aktor, "LEVEL", $SetLevel);
} /*Webfront*/
else
{ //Else-Zweig soll ausgeführt werden, wenn Script durch Trigger "Working == False" gestartet wird
//Lokale Berechnung von $MyLevel (MyLevel entspricht der Anzeige im Webfront
$MyLevel = 0;
if ($Level > 0.01)
$MyLevel = 25;
if ($Level > 0.35)
$MyLevel = 50;
if ($Level > 0.7)
$MyLevel = 75;
if ($Level > 0.95)
$MyLevel = 100;
//Berechneter MyLevel wird geschrieben
SetValueInteger($id_MyLevel, $MyLevel);
} /*else Webfront*/
?>
/* Bis hier Konfigurieren /
/**************************************/
//* Aktuellen Level des Aktor auslesen
$id_Level = @IPS_GetObjectIDByName(„LEVEL“, $id_aktor);
$Level = GetValue($id_Level);
//Webfront-Eingabe einlesen und Jalousie ansteuern
if ($IPS_SENDER == „WebFront“) {
SetValue($IPS_VARIABLE, $IPS_VALUE);
//"MyLevel" wird der über Webfront eingelesene Wert übergeben
$MyLevel = GetValue($id_MyLevel);
//Zu setzender Level "SetLEvel" wird lokal bestimmt
$SetLevel = 0.0;
if ($MyLevel == 25)
$SetLevel = 0.25;
if ($MyLevel == 50)
$SetLevel = 0.5;
if ($MyLevel == 75)
$SetLevel = 0.75;
if ($MyLevel == 100)
$SetLevel = 1.0;
//Aktor wird mit berechnetem "SetLevel" angesteuert
HM_WriteValueFloat ($id_aktor, "LEVEL", $SetLevel);
} /Webfront/
else
{ //Else-Zweig soll ausgeführt werden, wenn Script durch Trigger „Working == False“ gestartet wird
//Lokale Berechnung von $MyLevel (MyLevel entspricht der Anzeige im Webfront
$MyLevel = 0;
if ($Level > 0.01)
$MyLevel = 25;
if ($Level > 0.35)
$MyLevel = 50;
if ($Level > 0.7)
$MyLevel = 75;
if ($Level > 0.95)
$MyLevel = 100;
//Berechneter MyLevel wird geschrieben
SetValueInteger($id_MyLevel, $MyLevel);