Virtueller Taster (Integer)

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 ??

Holli

z.B. mit switch - case Anweisungen.

Mein Skript für Dimmer 50% sieht so aus .

<?

$device1 = 23346 /[Wohnzimmer UG\DIMMER Wohnen UG]/;
HM_WriteValueFloat($device1 , „LEVEL“ , 0.5);

?>

Hast Du mein ein Beispiel für mich wie ich das machen soll ??

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*/
?>




Hallo …

Danke für die Hilfe …

Funktioniert super …

Hallo …
Habe das Skript so übernommen und nur ID`s geändert … Es funktioniert auch aber zum Schluss kommt immer diese Felermeldung.

" Warning: Variable #0 existiert nicht in [HM\Level] on line 15 "

Hier das Skript …

<?

/**************************************/
/
Ab hier Konfigurieren */

$id_aktor = 23346 /[Wohnzimmer UG\Dimmer]/;
$id_MyLevel = 39694 /[Wohnzimmer UG\Dimmer\Level fest]/;

/* 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/
?>

hast Du evtl. die Variable „Level“ umbenannt?

$id_Level = @IPS_GetObjectIDByName(„LEVEL“, $id_aktor);

Hallo …
Hat sich von alleine erledigt. Nach dem ich IPS einmal geschlossen und wieder gestartet hatte geht es …

Warum auch immer :confused: