local ubus = require "ubus" local iwinfo = require "iwinfo" local function scrape() local metric_wifi_station_signal = metric("wifi_station_signal","gauge") local metric_wifi_station_tx_packets = metric("wifi_station_tx_packets","gauge") local metric_wifi_station_rx_packets = metric("wifi_station_rx_packets","gauge") local u = ubus.connect() local status = u:call("network.wireless", "status", {}) for dev, dev_table in pairs(status) do for _, intf in ipairs(dev_table['interfaces']) do local ifname = intf['ifname'] local iw = iwinfo[iwinfo.type(ifname)] local assoclist = iw.assoclist(ifname) for mac, station in pairs(assoclist) do local labels = { ifname = ifname, mac = mac, } metric_wifi_station_signal(labels, station.signal) metric_wifi_station_tx_packets(labels, station.tx_packets) metric_wifi_station_rx_packets(labels, station.rx_packets) end end end end return { scrape = scrape }