« Zurück zu Produkt

Dokumentation

IPS_GetFunctionList

Benötigt: Symcon >= 2.6

 array IPS_GetFunctionList (int $InstanzID) 

Parameterliste

InstanzID

ID der Instanz, deren Funktionen geliefert werden sollen. 0 für alle Funktionen.

Rückgabewert

Ein Array von Strings aller Funktionsnamen. Die Reihenfolge der Einträge ist nicht garantiert.

Beschreibung

Die Funktion ermittelt alle in der aktuellen Konfiguration von IP-Symcon verfügbaren IPS-Funktionen. Die Funktionen werden in einem Array aufgelistet. Die Anzahl der Funktionen ist abhängig von der derzeitigen Konfiguration von IP-Symcon. Wenn z.B. das TTS-Modul (Text-To-Speech) verfügbar ist oder eine Bibliothek über den Module Store installiert wurde, dann werden zusätzlich auch deren Funktionen aufgeführt.

Als Parameter kann die InstanzID als Filter angegeben werden. Somit werden nur die Funktionen angezeigt, die die betreffende Instanz veröffentlicht. Wird als InstanzID 0 angegeben, so ist der Filtermechanismus nicht aktiv und es werden alle in IP-Symcon verfügbaren Funktionen ausgegeben.

Details zu den einzelnen Funktionen können über IPS_GetFunction ermittelt werden.

Beispiel

$alleFunktionen = IPS_GetFunctionList(0);
print_r(IPS_GetFunction($alleFunktionen[48]));  // nur Funktion 48 ausgeben (IPS_CreateScript) 

/* liefert:
Array
(
    [FunctionName] => IPS_CreateScript
    [Parameters] => Array
    (
        [0] => Array
        (
            [Description] => ScriptType
            [Type_] => 1
        )
    
    )
    [Result] => Array
    (
        [Description] => Result
        [Type_] => 1
    )
)
*/

//Exportiert alle IP-Symcon Funktionen mit einer Parameterliste
$instanceid = 0; //0 = Alle Funktionen, sonst Filter auf InstanzID
$fs = IPS_GetFunctionList($instanceid);
asort($fs);
$typestr = Array("boolean", "integer", "float", "string", "variant", "array");
foreach($fs as $f) {
    $f = IPS_GetFunction($f);
    echo sprintf("[%7s]", $typestr[$f['Result']['Type_']]) . " - ".$f['FunctionName']."(";
    $a = Array();
    foreach($f['Parameters'] as $p) {
        if(isset($p['Enumeration']) && sizeof($p['Enumeration']) > 0) {
            $b=Array();
            foreach($p['Enumeration'] as $k => $v) {
                $b[] = $k."=".$v;
            }
            $type = "integer/enum[".implode(", ", $b)."]";
        } else {
            $type = $typestr[$p['Type_']];
        }
        $a[]=$type." $".$p['Description'];
    }
    echo implode(", ", $a).");\n";
}
Haben Sie noch Fragen?