Files
librenms-librenms/doc/Developing/os/Wireless-Sensors.md
VVelox 6575042f5f go through making lots of the docs more lint happy (#10342)
* clean up all but header incrementing in Creating-Transport.md

* make Device-Dependencies.md mdl happy

* make Entities.md as mdl happy as possible... one long table line left

* make mdl as happy as possible for index.md

* clean up Introduction.md as much as possible

* minor formatting cleanup... move each icon onto its own row

* make ack and notes the same style

* clean Macros.md up

* clean Rules.md up as much as possible

* tweak one line a bit to get it to format a bit nicer

* a bit more format tweaking, making sure it does not sure with >

* clean up as much as possible for Templates.md

* make Testing.md as mdl happy as possibly

* clean Transports.md up as much as possible

* clean as many issues as possible for Alerts.md

* clean up as much of ARP.md as possible

* clean up as much as possible for Bills.md

* make DeviceGroups.md as mdl happy as possible

* cleanup Devices.md

* make as mdl happy as possible Inventory.md and index.md

* mdl cleanup for Logs.md and PortGroups.md

* make Ports.md and Routing.md as happy as possible

* clean up Services.md, Switching.md, and Systems.md as much as possible

* more markup cleanup

* lots more md cleanup udner Devloping/

* reapply bits from #10343 that accidentally got removed when merging
2019-06-20 13:53:44 -05:00

7.0 KiB

source: Developing/os/Wireless-Sensors.md path: blob/master/doc/

This document will guide you through adding wireless sensors for your new wireless device.

Currently we have support for the following wireless metrics along with the values we expect to see the data in:

Type Measurement Interface Description
ap-count % WirelessApCountDiscovery The number of APs attached to this controller
capacity % WirelessCapacityDiscovery The % of operating rate vs theoretical max
ccq % WirelessCcqDiscovery The Client Connection Quality
clients count WirelessClientsDiscovery The number of clients connected to/managed by this device
distance km WirelessDistanceDiscovery The distance of a radio link in Kilometers
error-rate bps WirelessErrorRateDiscovery The rate of errored packets or bits, etc
error-ratio % WirelessErrorRatioDiscovery The percent of errored packets or bits, etc
errors count WirelessErrorsDiscovery The total bits of errored packets or bits, etc
frequency MHz WirelessFrequencyDiscovery The frequency of the radio in MHz, channels can be converted
mse dB WirelessMseDiscovery The Mean Square Error
noise-floor dBm/Hz WirelessNoiseFloorDiscovery The amount of noise received by the radio
power dBm WirelessPowerDiscovery The power of transmit or receive, including signal level
quality % WirelessQualityDiscovery The % of quality of the link, 100% = perfect link
rate bps WirelessRateDiscovery The negotiated rate of the connection (not data transfer)
rssi dBm WirelessRssiDiscovery The Received Signal Strength Indicator
snr dB WirelessSnrDiscovery The Signal to Noise ratio, which is signal - noise floor
xpi dBm WirelessXpiDiscovery The Cross Polar Interference values
ssr dB WirelessSsrDiscovery The Signal strength ratio, the ratio(or difference) of Vertical rx power to Horizontal rx power
utilization % WirelessUtilizationDiscovery The % of utilization compared to the current rate

You will need to create a new OS class for your os if one doen't exist under LibreNMS/OS. The name of this file should be the os name in camel case for example airos -> Airos, ios-wlc -> IosWlc.

Your new OS class should extend LibreNMS\OS and implement the interfaces for the sensors your os supports.

namespace LibreNMS\OS;

use LibreNMS\Device\WirelessSensor;
use LibreNMS\Interfaces\Discovery\Sensors\WirelessClientsDiscovery;
use LibreNMS\OS;

class Airos extends OS implements WirelessClientsDiscovery
{
    public function discoverWirelessClients()
    {
        $oid = '.1.3.6.1.4.1.41112.1.4.5.1.15.1'; //UBNT-AirMAX-MIB::ubntWlStatStaCount.1
        return array(
            new WirelessSensor('clients', $this->getDeviceId(), $oid, 'airos', 1, 'Clients')
        );
    }
}

All discovery interfaces will require you to return an array of WirelessSensor objects.

new WirelessSensor() Accepts the following arguments:

  • $type = Required. This is the sensor class from the table above (i.e humidity).
  • $device_id = Required. You can get this value with $this->getDeviceId()
  • $oids = Required. This must be the numerical OID for where the data can be found, i.e .1.2.3.4.5.6.7.0. If this is an array of oids, you should probably specify an $aggregator.
  • $subtype = Required. This should be the OS name, i.e airos.
  • $index = Required. This must be unique for this sensor type, device and subtype. Typically it's the index from the table being walked or it could be the name of the OID if it's a single value.
  • $description = Required. This is a descriptive value for the sensor. Shown to the user, if this is a per-ssid statistic, using SSID: $ssid here is appropriate
  • $current = Defaults to null. Can be used to set the current value on discovery. If this is null the values will be polled right away and if they do not return valid value(s), the sensor will not be discovered. Supplying a value here implies you have already verified this sensor is valid.
  • $multiplier = Defaults to 1. This is used to multiply the returned value.
  • $divisor = Defaults to 1. This is used to divided the returned value.
  • $aggregator = Defaults to sum. Valid values: sum, avg. This will combine multiple values from multiple oids into one.
  • $access_point_id = Defaults to null. If this is a wireless controller, you can link sensors to entries in the access_points table.
  • $high_limit = Defaults to null. Sets the high limit for the sensor, used in alerting to report out range sensors.
  • $low_limit = Defaults to null. Sets the low threshold limit for the sensor, used in alerting to report out range sensors.
  • $high_warn = Defaults to null. Sets the high warning limit for the sensor, used in alerting to report near out of range sensors.
  • $low_warn = Defaults to null. Sets the low warning limit for the sensor, used in alerting to report near out of range sensors.
  • $entPhysicalIndex = Defaults to null. Sets the entPhysicalIndex to be used to look up further hardware if available.
  • $entPhysicalIndexMeasured = Defaults to null. Sets the type of entPhysicalIndex used, i.e ports.

Polling is done automatically based on the discovered data. If for some reason you need to override polling, you can implement the required polling interface in LibreNMS/Interfaces/Polling/Sensors. Using the polling interfaces should be avoided if possible.

Graphing is performed automatically for wireless sensors, no custom graphing is required or supported.