$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', [], $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 = ['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', [], $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, ['entPhysicalClass' => 'other']); } // Relay outputs for ($i = 1; $i <= 4; $i++) { $data = snmp_get_multi_oid($device, 'relay' . $i . 'description.0 relay' . $i . 'State.0', [], $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, ['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