Add F5 iSeries fan speed support

Hi,

the F5 iSeries Loadbalancers don’t report their chassis fan speeds via SNMP, only with CLI commands.
On a BIG-IP 5050 for example, you can query the speed with SNMP:

snmpwalk -Ons -c public  -v 2c 127.0.0.1  sysChassisFanSpeed.1
sysChassisFanSpeed.1 = Gauge32: 11806

On an iSeries BIG-IP i4600 not:

snmpwalk -Ons -c public  -v 2c 127.0.0.1  sysChassisFanSpeed.1
sysChassisFanSpeed.1 = Gauge32: 0

According to F5, this is normal behaviour: https://support.f5.com/csp/article/K18802953
With ipmiutil sensor and tmctl sensor_measurement_table, I receive all the needed values:

ipmiutil sensor
ipmiutil ver 2.94
isensor: version 2.94
-- BMC version 8.00, IPMI version 2.0
_ID_ SDR_Type_xx ET Own Typ S_Num   Sens_Description   Hex & Interp Reading
0001 SDR IPMB 12 12 dev: 20 00 ff 1e 00 PilotII
0002 SDR FRU  11 13 dev: 20 00 80 00 07 01 MAIN FRU
0003 SDR FRU  11 12 dev: 20 03 80 00 0c 01 LCD FRU
0004 SDR FRU  11 13 dev: 20 01 80 00 0a 01 PSU1 FRU
0005 SDR FRU  11 13 dev: 20 02 80 00 0a 02 PSU2 FRU
0006 SDR Full 01 01 20 a 04 snum 2a Fan_1            = 64 OK   10000.00 RPM
0007 SDR Full 01 01 20 a 04 snum 2b Fan_2            = 64 OK   10000.00 RPM
0008 SDR Full 01 01 20 a 04 snum 2c Fan_3            = 60 OK   9600.00 RPM
0009 SDR Full 01 01 20 a 04 snum 2d Fan_4            = 60 OK   9600.00 RPM
000a SDR Full 01 01 20 a 01 snum 45 CPU 0            = 29 OK   41.00 degrees C
000b SDR Full 01 01 20 a 01 snum 46 CPU 0 TCTL-Delta = d7 OK   -41.00 degrees C
000c SDR Full 01 01 20 a 01 snum 10 Inlet            = 18 OK   24.00 degrees C
000d SDR Full 01 01 20 a 01 snum 11 Inlet_TMP421_int = 1e OK   30.00 degrees C
000e SDR Full 01 01 20 a 01 snum 16 Outlet           = 1c OK   28.00 degrees C
000f SDR Full 01 01 20 a 01 snum 17 Outlet_TMP421int = 20 OK   32.00 degrees C
0010 SDR Full 01 01 20 a 01 snum 12 HSB00            = 1e OK   30.00 degrees C
0011 SDR Full 01 01 20 a 01 snum 13 HSB00_TMP421_int = 1e OK   30.00 degrees C
0012 SDR Full 01 01 20 a 01 snum 14 HSB01            = 1d OK   29.00 degrees C
0013 SDR Full 01 01 20 a 01 snum 15 HSB01_TMP421_int = 1c OK   28.00 degrees C
0014 SDR Comp 02 6f 20 a 08 snum 1c PSU1 Status      = 0001 Present
0015 SDR Comp 02 6f 20 a 08 snum 1d PSU2 Status      = 0001 Present
0016 SDR Full 01 01 20 a 01 snum 51 PSU1 AC Inlet    = 22 OK   34.00 degrees C
0017 SDR Full 01 01 20 a 01 snum 50 PSU1 AC Primary  = 25 OK   37.00 degrees C
0018 SDR Full 01 01 20 a 01 snum 52 PSU1 AC Scndary  = 27 OK   39.00 degrees C
0019 SDR Full 01 01 20 a 04 snum 4f PSU1 AC Tach     = 3d OK   7808.00 RPM
001a SDR Full 01 01 20 a 02 snum 64 PSU1 AC Vin      = cf OK   229.77 Volts
001b SDR Full 01 01 20 a 01 snum 5b PSU2 AC Inlet    = 24 OK   36.00 degrees C
001c SDR Full 01 01 20 a 01 snum 5a PSU2 AC Primary  = 26 OK   38.00 degrees C
001d SDR Full 01 01 20 a 01 snum 5c PSU2 AC Scndary  = 29 OK   41.00 degrees C
001e SDR Full 01 01 20 a 04 snum 59 PSU2 AC Tach     = 2f OK   6016.00 RPM
001f SDR Full 01 01 20 a 02 snum 7a PSU2 AC Vin      = cf OK   229.77 Volts
0020 SDR Full 01 01 20 a 01 snum 38 PSU1 DC Ambient1 = 00 Init  0.00 degrees C
0021 SDR Full 01 01 20 a 01 snum 3a PSU1 DC Ambient2 = 00 Init  0.00 degrees C
0022 SDR Full 01 01 20 a 01 snum 39 PSU1 DC Sink     = 00 Init  0.00 degrees C
0023 SDR Full 01 01 20 a 04 snum 37 PSU1 DC Tach     = 00 Init  0.00 RPM
0024 SDR Full 01 01 20 a 02 snum 6a PSU1 DC Vin      = 00 Init  0.00 Volts
0025 SDR Full 01 01 20 a 01 snum 42 PSU2 DC Ambient1 = 00 Init  0.00 degrees C
0026 SDR Full 01 01 20 a 01 snum 44 PSU2 DC Ambient2 = 00 Init  0.00 degrees C
0027 SDR Full 01 01 20 a 01 snum 43 PSU2 DC Sink     = 00 Init  0.00 degrees C
0028 SDR Full 01 01 20 a 04 snum 41 PSU2 DC Tach     = 00 Init  0.00 RPM
0029 SDR Full 01 01 20 a 02 snum 8a PSU2 DC Vin      = 00 Init  0.00 Volts
002a SDR Comp 02 6f 20 a c0 snum 5e PG Status        = 0101 Asserted
002b SDR Comp 02 6f 20 a c1 snum 5d Module Presence  = 0041  _
002c SDR Comp 02 6f 20 a c6 snum 90 CPU Fault        = 0000  _
002d SDR Comp 02 6f 20 a c5 snum 8f Power Fault      = 0000  _
002e SDR Full 01 01 20 a 01 snum 78 LCD Temp         = 21 OK   33.00 degrees C
002f SDR Comp 02 08 20 a c3 snum 58 LCD Health       = 0000  _
0030 SDR Comp 02 6f 20 a c8 snum be FIPS Status      = 0000  _
     SDR IPMI       sensor: Power On Hours         = 5463 hours
ipmiutil sensor, completed successfully
tmctl sensor_measurement_table
key              value_desc sensor_type value unit cur_action timestamp
---------------- ---------- ----------- ----- ---- ---------- ---------
CPU 0            degrees C            1    41    1                    0
CPU 0 TCTL-Delta degrees C            1   -41    1                    0
Fan_1            RPM                  4  9600   18                    0
Fan_2            RPM                  4  9600   18                    0
Fan_3            RPM                  4 10000   18                    0
Fan_4            RPM                  4  9600   18                    0
HSB00            degrees C            1    30    1                    0
HSB00_TMP421_int degrees C            1    30    1                    0
HSB01            degrees C            1    29    1                    0
HSB01_TMP421_int degrees C            1    28    1                    0
Inlet            degrees C            1    24    1                    0
Inlet_TMP421_int degrees C            1    30    1                    0
LCD Temp         degrees C            1    33    1                    0
Outlet           degrees C            1    28    1                    0
Outlet_TMP421int degrees C            1    32    1                    0
PSU1 AC Inlet    degrees C            1    33    1                    0
PSU1 AC Primary  degrees C            1    37    1                    0
PSU1 AC Scndary  degrees C            1    39    1                    0
PSU1 AC Tach     RPM                  4  7808   18                    0
PSU1 AC Vin      Volts                2   229    4                    0
PSU2 AC Inlet    degrees C            1    36    1                    0
PSU2 AC Primary  degrees C            1    38    1                    0
PSU2 AC Scndary  degrees C            1    41    1                    0
PSU2 AC Tach     RPM                  4  6016   18                    0
PSU2 AC Vin      Volts                2   229    4                    0

Is there any chance to get the readings with LibreNMS?