Observium_CE/includes/discovery/sensors/teracom-tcw240b-mib.inc.php

91 lines
3.3 KiB
PHP

<?php
/**
* Observium
*
* This file is part of Observium.
*
* @package observium
* @subpackage discovery
* @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2022 Observium Limited
*
*/
$scale = 1;
// Tested with TCW240B. And yes the Teracom MIBs are stupid
// 1-Wire sensors
for ($i = 1; $i <= 8; $i++) {
//$data = snmp_get_multi_oid($device, 's'.$i.'description.0 s'.$i.'ID.0 s'.$i.'1x10Int.0 s'.$i.'2x10Int.0 s'.$i.'1MINx10Int.0 s'.$i.'1MAXx10Int.0', array(), $mib);
$data = snmp_get_multi_oid($device, 's'.$i.'description.0 s'.$i.'ID.0 s'.$i.'1x10Int.0 s'.$i.'1MINx10Int.0 s'.$i.'1MAXx10Int.0', array(), $mib);
if ($data[0]['s'.$i.'ID'] === 'ff:ff:ff:ff:ff:ff') { continue; }
$descr = $data[0]['s'.$i.'description'];
//$oid = ".1.3.6.1.4.1.38783.1.3.1.1.$i.0";
$oid = ".1.3.6.1.4.1.38783.1.3.1.$i.1.0";
$value = $data[0]['s'.$i.'1x10Int'];
// TODO figure out how to identify sensor types
$type = 'temperature';
$scale = 0.1;
$limits = array('limit_low' => $data[0]['s'.$i.'1MINx10Int'] * $scale,
'limit_high' => $data[0]['s'.$i.'1MAXx10Int'] * $scale);
discover_sensor('temperature', $device, $oid, 's'.$i.'1x10Int.0', 'teracom', $descr, $scale, $value, $limits);
}
// Analog inputs
for ($i = 1; $i <= 4; $i++) {
$data = snmp_get_multi_oid($device, 'voltage'.$i.'description.0 voltage'.$i.'x10Int.0 voltage'.$i.'min.0 voltage'.$i.'max.0', array(), $mib);
$descr = $data[0]['voltage'.$i.'description'];
switch(substr($descr, 0, 2)) {
case 'I ':
$type = 'current';
$descr = substr($descr, 2);
break;
case 'F ':
$type = 'frequency';
$descr = substr($descr, 2);
break;
case 'H ':
$type = 'humidity';
$descr = substr($descr, 2);
break;
default:
$type = 'voltage';
}
$oid = ".1.3.6.1.4.1.38783.1.3.2.$i.0";
$value = $data[0]['voltage'.$i.'x10Int'];
$scale = 0.1;
$limits = array('limit_low' => $data[0]['voltage'.$i.'min'] * $scale,
'limit_high' => $data[0]['voltage'.$i.'max'] * $scale);
discover_sensor($type, $device, $oid, 'voltage'.$i.'x10Int.0', 'teracom', $descr, $scale, $value, $limits);
}
// Digital inputs
for ($i = 1; $i <= 4; $i++) {
$data = snmp_get_multi_oid($device, 'digitalInput'.$i.'description.0 digitalInput'.$i.'State.0', array(), $mib);
$descr = $data[0]['digitalInput'.$i.'description'];
$oid = ".1.3.6.1.4.1.38783.1.3.3.$i.0";
$value = $data[0]['digitalInput'.$i.'State'];
discover_status($device, $oid, 'digitalInput'.$i.'State.0', 'teracom-digitalin-state', $descr, $value, array('entPhysicalClass' => 'other'));
}
// Relay outputs
for ($i = 1; $i <= 4; $i++) {
$data = snmp_get_multi_oid($device, 'relay'.$i.'description.0 relay'.$i.'State.0', array(), $mib);
$descr = $data[0]['relay'.$i.'description'];
$oid = ".1.3.6.1.4.1.38783.1.3.4.$i.1.0";
$value = $data[0]['relay'.$i.'State'];
discover_status($device, $oid, 'relay'.$i.'State.0', 'teracom-relay-state', $descr, $value, array('entPhysicalClass' => 'other'));
}
// Status FIXME definition-based
$value = snmp_get_oid($device, 'hardwareErr.0', $mib);
if (!safe_empty($value)) {
$descr = 'Status';
$oid = '.1.3.6.1.4.1.38783.1.3.8.0';
discover_status($device, $oid, 'hardwareErr.0', 'teracom-alarm-state', $descr, $value, array('entPhysicalClass' => 'other'));
}
unset($data, $oid, $descr, $limits, $value);
// EOF