Was können wir verbessern?

Dokumentation

IPS_GetFunctionList

Benötigt: IP-Symcon >= 2.6

array IPS_GetFunctionList ( integer $InstanzID )

Parameterliste

InstanzID InstanzID, für zu suchende Funktion. 0, um alle zu suchen.

Rückgabewerte

Ein Array von Strings aller Funktionsnamen

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. eine Instanz des TTS-Moduls (Text-To-Speech) konfiguriert ist, dann werden zusätzlich auch alle TTS-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 ermitteln 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";
}