Benötigt: IP-Symcon >= 2.6
array IPS_GetFunctionList (integer $InstanzID)
InstanzID | InstanzID, für zu suchende Funktion. 0, um alle zu suchen. |
Ein Array von Strings aller Funktionsnamen |
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.
$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"; }