Ich habe es gelöst. Dieser kleine Script wird der RegVar zugeordnet, welche die SNMP Traps vom Denkovi empfängt. Geliefert wird ein assoziativer Array mit 2 keys: Id (kann von 0 bis 7 gehen) und State (0 und 1, on oder off). Die Schaltvorgänge der digitalen inputs werden geloggt.
PHP-Code:
<?
// wenn das Skript von einer RegisterVariable-Instanz aus aufgerufen worden ist
if ($_IPS['SENDER'] == "RegisterVariable") {
// bereits im Puffer der Instanz vorhandene Daten in $data kopieren
//$data = RegVar_GetBuffer($_IPS['INSTANCE']);
// neu empfangene Daten an $data anhängen
$data .= $_IPS['VALUE'];
// wenn das Trennzeichen ; in $data gefunden worden ist
if (strpos($data, ';')) {
// $data in durch ; separierte Datensätze zerlegen
$datasets = explode(';', $data);
// alle nicht durch ; terminierten Datensätze ausgeben
for ($i = 0; $i < count($datasets) - 1; $i++) {
echo "empfangener Datensatz: ".$datasets[$i]."\n";
}
// $data auf den Inhalt des letzten (unvollständigen) Datensatzes setzen
$data = $datasets[count($datasets) - 1];
}
// Inhalt von $data im Puffer der RegisterVariable-Instanz speichern
RegVar_SetBuffer($_IPS['INSTANCE'], $data);
}
$dataString = bin2Hex($data);
$lenDs = strlen($dataString);
$digitalInput = array(
"state" => substr($dataString, $lenDs-1,1),
"id" => substr($dataString, $lenDs-7, 1)
);
//add data to file
file_put_contents('C:\Users\aag\Desktop\denkovi_logfile.txt', date("Y-m-d H:i:s") .
" id: " . $digitalInput["id"] .
" state: ". $digitalInput["state"] . " " .
bin2Hex($data) . PHP_EOL, FILE_APPEND);
function String2Hex($string){
$hex='';
for ($i=0; $i < strlen($string); $i++){
$hex .= dechex(ord($string[$i]));
}
return $hex;
}
?>