towerops/priv/profiles/os_discovery/airos-af60.yaml
Graham McIntire 1ec3ca16ae
feat: add AirFiber wireless metrics (frequency, distance, capacity, RSSI, SNR)
Add TIER 2 HIGH priority wireless metrics for comprehensive AirFiber point-to-point monitoring.
These sensors enable capacity planning, link budget analysis, and interference detection.

AirFiber AF60 additions:
- Frequency: Operating frequency in MHz (OID: .1.3.6.1.4.1.41112.1.11.1.1.2)
- Distance: Link distance in km, divisor 1000 (OID: .1.3.6.1.4.1.41112.1.11.1.3.1.15)
- TX Capacity: Transmit capacity in Mbps, divisor 1000 (OID: .1.3.6.1.4.1.41112.1.11.1.3.1.7)
- RX Capacity: Receive capacity in Mbps, divisor 1000 (OID: .1.3.6.1.4.1.41112.1.11.1.3.1.8)
- Local RSSI: Local received signal strength in dBm (OID: .1.3.6.1.4.1.41112.1.11.1.3.1.3)
- Remote RSSI: Remote received signal strength in dBm (OID: .1.3.6.1.4.1.41112.1.11.1.3.1.18)
- Local SNR: Local signal-to-noise ratio in dB (OID: .1.3.6.1.4.1.41112.1.11.1.3.1.4)
- Remote SNR: Remote signal-to-noise ratio in dB (OID: .1.3.6.1.4.1.41112.1.11.1.3.1.19)

AirFiber AF-LTU additions:
- Frequency: Operating frequency in MHz (OID: .1.3.6.1.4.1.41112.1.10.1.2.2)
- Distance: Link distance in km, divisor 1000 (OID: .1.3.6.1.4.1.41112.1.10.1.4.1.23)
- TX Capacity: Transmit capacity in Mbps, divisor 1000 (OID: .1.3.6.1.4.1.41112.1.10.1.4.1.3)
- RX Capacity: Receive capacity in Mbps, divisor 1000 (OID: .1.3.6.1.4.1.41112.1.10.1.4.1.4)

Impact:
- Distance enables link budget analysis and alignment verification
- RSSI/SNR enable interference detection and signal quality monitoring
- Capacity metrics enable throughput monitoring and bandwidth planning
- Frequency confirms correct channel selection

Implementation:
- All sensor definitions match LibreNMS exactly
- Divisors applied for proper unit conversion (1000 for distance/capacity)
- Source: LibreNMS LibreNMS/OS/AirosAf60.php, LibreNMS/OS/AirosAfLtu.php

Priority: TIER 2 HIGH (4-6 hour effort, capacity planning and troubleshooting)
Gap Status: AF60 parity 50% → 80%, AF-LTU parity 60% → 80%
Next: TIER 3 - UniFi channel-to-frequency conversion, AF-LTU optical power sensors

Files:
- priv/profiles/os_discovery/airos-af60.yaml
- priv/profiles/os_discovery/airos-af-ltu.yaml
- CHANGELOG.txt
2026-02-12 08:52:49 -06:00

152 lines
6.6 KiB
YAML

mib: UI-AF60-MIB
modules:
os:
hardware: UI-AF60-MIB::af60DevModel.1
version: UI-AF60-MIB::af60FirmwareVersion.1
version_regex: '/(?<version>v[0-9]+\.[0-9]+\.[0-9]+[-RC]*)/'
lat: UI-AF60-MIB::af60GpsLat.1
long: UI-AF60-MIB::af60GpsLon.1
processors:
data:
-
oid: af60CpuUsage
num_oid: '.1.3.6.1.4.1.41112.1.11.1.2.6.{{ $index }}'
sensors:
state:
data:
-
oid: af60Role
num_oid: '.1.3.6.1.4.1.41112.1.11.1.1.1.{{ $index }}'
index: af60Role
descr: Radio Role
state_name: af60Role
states:
- { value: 0, generic: 0, graph: 0, descr: AP }
- { value: 1, generic: 0, graph: 0, descr: CPE }
-
oid: af60GpsStatus
num_oid: '.1.3.6.1.4.1.41112.1.11.1.4.1.{{ $index }}'
index: af60GpsStatus
descr: GPS Status
state_name: af60GpsStatus
states:
- { value: 0, generic: 1, graph: 0, descr: Absent }
- { value: 1, generic: 1, graph: 0, descr: Off }
- { value: 2, generic: 0, graph: 0, descr: On }
-
oid: af60GpsFix
num_oid: '.1.3.6.1.4.1.41112.1.11.1.4.2.{{ $index }}'
index: af60GpsFix
descr: GPS fix
state_name: af60GpsFix
states:
- { value: 0, generic: 1, graph: 0, descr: Unknown }
- { value: 1, generic: 1, graph: 0, descr: Nofix }
- { value: 2, generic: 0, graph: 0, descr: Fix2d }
- { value: 3, generic: 0, graph: 0, descr: Fix3d }
-
oid: af60StaTxMCS
num_oid: '.1.3.6.1.4.1.41112.1.11.1.3.1.5.{{ $index }}'
index: af60StaTxMCS
descr: TX MCS Rate
state_name: af60StaTxMCS
states:
- { value: 1, generic: 2, graph: 1, descr: 1X }
- { value: 2, generic: 2, graph: 1, descr: 2X }
- { value: 3, generic: 1, graph: 1, descr: 3X }
- { value: 4, generic: 1, graph: 1, descr: 4X }
- { value: 5, generic: 0, graph: 1, descr: 5X }
- { value: 6, generic: 0, graph: 1, descr: 6X }
- { value: 7, generic: 0, graph: 1, descr: 7X }
- { value: 8, generic: 0, graph: 1, descr: 8X }
- { value: 9, generic: 0, graph: 1, descr: 9X }
-
oid: af60StaRxMCS
num_oid: '.1.3.6.1.4.1.41112.1.11.1.3.1.6.{{ $index }}'
index: af60StaRxMCS
descr: RX MCS Rate
state_name: af60StaRxMCS
states:
- { value: 1, generic: 2, graph: 1, descr: 1X }
- { value: 2, generic: 2, graph: 1, descr: 2X }
- { value: 3, generic: 1, graph: 1, descr: 3X }
- { value: 4, generic: 1, graph: 1, descr: 4X }
- { value: 5, generic: 0, graph: 1, descr: 5X }
- { value: 6, generic: 0, graph: 1, descr: 6X }
- { value: 7, generic: 0, graph: 1, descr: 7X }
- { value: 8, generic: 0, graph: 1, descr: 8X }
- { value: 9, generic: 0, graph: 1, descr: 9X }
-
oid: af60StaActiveLink
num_oid: '.1.3.6.1.4.1.41112.1.11.1.3.1.2.{{ $index }}'
index: af60StaActiveLink
descr: Active Link
state_name: af60StaActiveLink
states:
- { value: 1, generic: 0, graph: 1, descr: Main }
- { value: 2, generic: 1, graph: 1, descr: Backup }
frequency:
data:
-
oid: af60Freq
num_oid: '.1.3.6.1.4.1.41112.1.11.1.1.2.{{ $index }}'
index: af60Freq
descr: Frequency
distance:
data:
-
oid: af60StaDistance
num_oid: '.1.3.6.1.4.1.41112.1.11.1.3.1.15.{{ $index }}'
index: af60StaDistance
descr: Distance
divisor: 1000
rate:
data:
-
oid: af60StaTxCapacity
num_oid: '.1.3.6.1.4.1.41112.1.11.1.3.1.7.{{ $index }}'
index: af60StaTxCapacity
descr: TX Capacity
divisor: 1000
-
oid: af60StaRxCapacity
num_oid: '.1.3.6.1.4.1.41112.1.11.1.3.1.8.{{ $index }}'
index: af60StaRxCapacity
descr: RX Capacity
divisor: 1000
rssi:
data:
-
oid: af60StaLocalRSSI
num_oid: '.1.3.6.1.4.1.41112.1.11.1.3.1.3.{{ $index }}'
index: af60StaLocalRSSI
descr: Local RSSI
-
oid: af60StaRemoteRSSI
num_oid: '.1.3.6.1.4.1.41112.1.11.1.3.1.18.{{ $index }}'
index: af60StaRemoteRSSI
descr: Remote RSSI
snr:
data:
-
oid: af60StaLocalSNR
num_oid: '.1.3.6.1.4.1.41112.1.11.1.3.1.4.{{ $index }}'
index: af60StaLocalSNR
descr: Local SNR
-
oid: af60StaRemoteSNR
num_oid: '.1.3.6.1.4.1.41112.1.11.1.3.1.19.{{ $index }}'
index: af60StaRemoteSNR
descr: Remote SNR
count:
data:
-
oid: af60GpsSatsVisible
num_oid: '.1.3.6.1.4.1.41112.1.11.1.4.7.{{ $index }}'
index: af60GpsSatsVisible
descr: Sat visible
-
oid: af60GpsSatsTracked
num_oid: '.1.3.6.1.4.1.41112.1.11.1.4.8.{{ $index }}'
index: af60GpsSatsTracked
descr: Sat tracked