1 local ubus = require "ubus"
2 local iwinfo = require "iwinfo"
4 local function scrape()
5 local metric_wifi_station_signal = metric("wifi_station_signal_dbm","gauge")
6 local metric_wifi_station_tx_packets = metric("wifi_station_tx_packets_total","gauge")
7 local metric_wifi_station_rx_packets = metric("wifi_station_rx_packets_total","gauge")
9 local u = ubus.connect()
10 local status = u:call("network.wireless", "status", {})
12 for dev, dev_table in pairs(status) do
13 for _, intf in ipairs(dev_table['interfaces']) do
14 local ifname = intf['ifname']
15 local iw = iwinfo[iwinfo.type(ifname)]
17 local assoclist = iw.assoclist(ifname)
18 for mac, station in pairs(assoclist) do
23 metric_wifi_station_signal(labels, station.signal)
24 metric_wifi_station_tx_packets(labels, station.tx_packets)
25 metric_wifi_station_rx_packets(labels, station.rx_packets)
31 return { scrape = scrape }