Ich habe die Parameterübergabe zu IPS_RunScriptWaitEx nicht verstanden

Ich nutze eine Homematic und steuere diese (seit neuestem) über IPS.

Ich habe Probleme meine Rollläden (22 an der Zahl) beim Öffnen der Haustür alle gleichzeitig runter bzw, hochzufahren. Einige Rollläden fahren und andere halt nicht. Schicke ich den Befehl mehrfach funktioniert es irgendwann. Der Erfolg oder Misserfolg des Funktionsaufrufes wird korrekt über die Statusabfrage des Befehlsaufrufs angezeigt. Das möchte ich ausnutzen und habe dazu ein Script mit dem Namen „SafeExecution“ geschrieben. Das Prinzip basiert darauf das man über den Funktionsaufruf IPS_RunScriptWaitEx Parameter übergeben kann so das „SafeExecution“ mehrfach Verwendung findet. Das sieht dann so aus :

IPS_RunScriptWaitEx(44319, Array(„BlINDID“ => 46290, „MAXCOUNT“ => 10, „LEVEL“ => 1.0, „SLEEP“ => 500));

Wobei 44319 die ID des Scripts „SafeExecution“ darstellt.
Ich übergebe die ID des zu steuernden Rolladens mit „BLINDID“ => 46290,
dann als Sicherheit einen Zähler zum Abbruch der aufgerufenen Funktion „MAXCOUNT“ => 10,
den Rolladenstand mit „LEVEL“ => 1.0,
und eine Zeitverzögerung mit „SLEEP“ => 500

Die aufgerufene Funktion (ID 44319) sieht wie folgt aus

<?

$check = false;
$Counter = 0;
while (!$check)
{
$check = HM_WriteValueFloat($BlINDID,„LEVEL“,$LEVEL);
IPS_Sleep($SLEEP);
$Counter++;
if ($Counter >= $MAXCOUNT)
{
$check = true;
}
else
{

}

}

?>

Ich bekomme die folgende Fehlermeldung (Warum kann ich die eigentlich nicht kopieren ?) :

Die folgenden Variablen sind angeblich nicht bekannt:

$BlINDID,
$LEVEL
$SLEEP
$MAXCOUNT

Hat jemand eine Idee was ich falsch mache ???

Versuch es doch damit einmal, ob die Werte ankommen.

<?
$check = false;
$Counter = 0;
IPS_LogMessage ("IPS-Test ",.$BlINDID." ".$LEVEL." ".$SLEEP);
/*
while (!$check)
    {
    $check = HM_WriteValueFloat($BlINDID,"LEVEL",$LEVEL);
    IPS_Sleep($SLEEP);
    $Counter++;
    if ($Counter >= $MAXCOUNT)
        {
        $check = true;
        }
    else
        {
        }
    }
*/
?>

Bei mir geht es ohne Probleme

Vielen Dank erstaml für den Tipp, In ein paar Stunden bin ich zu Hause und werde das testen und berichten. In der Zwischenzeit eine kleine Frage : Wozu sind eigentlich die Punkte gut Vor und teilweise nach den Variablen im Print ???

IPS_LogMessage ("IPS-Test „,.$BlINDID.“ „.$LEVEL.“ ".$SLEEP);

Mit einen (Punkt) setzt Du in PHP Stringvariablen zusammen.

echo "Test 1" . " und " . "Test 2";

ergibt ein banales

 
Test 1 und Test 2

In diesem Fall sollte zwischen dem Inhalt deiner Variablen einfach ein Leerzeichen wegen der Lesbarkeit erscheinen.

Guter Tip der Hinweis mit der IPS_LogMessage.

In der Tat hat das alles von Anfang an funktioniert.

Mein Fehler war das Script zu testen :).

Als Resultat kam die Fehlermeldung : Notice undefined variable … und dieser Nachricht hab ich halt geglaubt :frowning: und nur noch versucht die Meldung loszuwerden.

In wirklichkeit lief das Script tadellos, über IPS_LogMessage habe ich mir das alles genau anschauen können (Fehlerfall und Gutfall).

Dickes Dankeschön und Tschüss bis zum nächsten Problem

PS. Danke auch für den Hinweis mit den Punkten, dachte zuerst das könnten Pointer sein wie bei C