Super Sache!
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
Gruß André