Floorplan - Rolläden visualisieren mit aktuellen Level - Ideen ?

Super Sache!
:slight_smile:

Hallo Gemeinde,

ich wollte die functions etwas auffrischen stolpere aber über einen Punkt, über den ich nicht weiter komme:

In einem Script habe ich Constants definiert, die ich einbinden will. Z.B.:

//HM-Values---------------------------------------------------------------------
define("Rolladen_Arbeitszimmer", 40445 /*[Rolläden\Rolladen Arbeitszimmer\Rolladen Arbeitszimmer]*/);

Dazu existiert ein Array aller Rolläden:

Array
(
    [1] => Array
        (
            [name] => Rolladen_Arbeitszimmer
            [value] => true
            [return] => true
            [button] => images/button_ok_blue_80x80.png
        )
...

Auf dieses greife ich mit einer Schleife zu, um die aktivierten Rolläden zu verfahren. In den functions habe ich bisher für jeden Rolladen die entsprechenden HM_WriteValueFloat - Befehle für jeden Rolladen einzeln definiert. Z.B.:

for($i=1,$size=count($shutter);$i<$size+1;$i++)
	{
	if ($shutter[$i]['value'] == 'true')
		{
		$name = ($shutter[$i]['name']);
		$name($Level);
		echo $name;
		//Rolladen_Move($name, $Level);
		}
	}

//functions

function Rolladen_Arbeitszimmer($Level)
{
HM_WriteValueFloat(40445 /*[Rolläden\Rolladen Arbeitszimmer\Rolladen Arbeitszimmer]*/, "LEVEL", ($Level/10));
}

Das funktioniert gut, ich will es aber auf eine Übergabe des Namens, der gleichzeitig auch in den Constants den HM-Aktor definiert, reduzieren.

for($i=1,$size=count($shutter);$i<$size+1;$i++)
	{
	if ($shutter[$i]['value'] == 'true')
		{
		$name = ($shutter[$i]['name']);
		//$name($Level);
		echo $name;
		Rolladen_Move($name, $Level);
		}
	}

function Rolladen_Move($name, $Level)
{
HM_WriteValueFloat($name, "LEVEL", ($Level/10));
}

Wenn ich den Befehl aber auf Rolladen_Move($name, $Level) reduziere, um die Constante = $name zu übergeben funktioniert es nicht. Es wird zwar per echo der richtige Name angezeigt, aber es kommt:

Rolladen_Arbeitszimmer
Warning:  Wrong parameter type for HM_WriteValueFloat() in [Rolläden\Floorplan\Shutter:Status] on line 33

Sieht jemand den Fehler ?

Gruß André

Namen gehen doch nicht, nur die ID, oder greift das auf die Status-Variable statt auf die K1-Instanz zu? Nur geraten :o

Gruß
Bruno

… tja. Schade. Ich hoffte, dass der in den Constants vordefinierte Name (hier:„Rolladen_Arbeitszimmer“) auch als ID (hier: 40445) interpretiert wird.

Gruß André

… ich habe HM_WriteValueFloat jetzt aus der Function herausgenommen, direkt in die Schleife gepackt und so funktioniert es. $name = define(„Rolladen_Arbeitszimmer“ … wird mir jetzt interpretiert.

for($i=1,$size=count($shutter);$i<$size+1;$i++)
	{
	if ($shutter[$i]['value'] == 'true')
		{
		$name = ($shutter[$i]['name']);
		$name($Level);
		//echo $name;
		HM_WriteValueFloat($name, "LEVEL", ($Level/10));
		}
	}

Mir wird wahrscheinlich die Constante in der Function nicht interpretiert weil ich die Bedeutung nicht übergebe (ich wüsste aber auch nicht wie). Aber: wieder etwas dazugelernt :slight_smile:

Gruß André