Ich nutze dazu den php-Script-Server von cacti:
PHP Script Server
Zur Abfrage liegt folgendes Script bei mir unter /usr/share/cacti/site/scripts
PHP-Code:
<?php
#!/usr/bin/php -q
$no_http_headers = true;
/* display No errors */
error_reporting(E_ERROR);
include_once(dirname(__FILE__) . "/../include/config.php");
include_once(dirname(__FILE__) . "/../lib/snmp.php");
if (!isset($called_by_script_server)) {
array_shift($_SERVER["argv"]);
print call_user_func_array("ss_knxread", $_SERVER["argv"]);
}
function ss_knxread($id) {
/* KNX_open */
$address = "localhost";
$port = "1028";
$fp = fsockopen($address, $port, $errno, $errstr, 30);
/* KNX Werte mit LinKNX auslsen */
$in = "<read><object id='$id'/></read>\n\4";
fwrite($fp, $in);
$ret = '';
$cnt = 0;
while ($cnt < 4 && $fp && !feof($fp)) {
$ret .= fgets($fp, 128);
$c = fgetc($fp);
if ($c == "\4") {
if (ereg ("<read status='success'>([^<]+)</read>", $ret,$regs))
$ret = $regs[1];
break;
}
$ret .= $c;
$cnt++;
}
return $ret;
/* KNX_close */
fclose($fp);
}
?>
Der Aufruf in den Data Input Methods - siehe Screenshot.
VG Frank