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-ratio % WirelessErrorRatioDiscovery The percent of errored packets or bits, etc
frequency MHz WirelessFrequencyDiscovery The frequency of the radio in MHz, channels can be converted
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 dBm WirelessSnrDiscovery The Signal to Noise ratio, which is signal - noise floor
ssr dBm 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:

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.