<%- local ubus = require "ubus" local sys = require "luci.sys" local utl = require "luci.util" function guess_thread_signal(info) local scale local icon local rssi = info.Rssi or 0 if rssi <= -100 then scale = 0 elseif rssi >= -50 then scale = 100 else scale = math.floor(2 * (100 + rssi)) end if info.NetworkName == nil then icon = resource .. "/icons/signal-none.png" elseif scale < 15 then icon = resource .. "/icons/signal-0.png" elseif scale < 35 then icon = resource .. "/icons/signal-0-25.png" elseif scale < 55 then icon = resource .. "/icons/signal-25-50.png" elseif scale < 75 then icon = resource .. "/icons/signal-50-75.png" else icon = resource .. "/icons/signal-75-100.png" end return icon end function percent_thread_signal(info) local rssi = info.Rssi or 0 if rssi <= -100 then return 0 elseif rssi >= -50 then return 100 else return math.floor(2 * (100 + rssi)) end end function scanlist() local k, v local l = { } local conn = ubus.connect() if not conn then error("Failed to connect to ubusd") end local scanresult = conn:call("otbr", "scan", {}) for k, v in pairs(scanresult.scan_list) do l[#l+1] = v end return l end -%> <%+header%>

<%:Join Network: Thread Scan%>


<%:RSSI%>
<%:Channel%>
<%:PAN Id%>
<%:Lqi%>
 
<% for i, net in ipairs(scanlist()) do %>

<%=percent_thread_signal(net)%>%
<%=net.Channel%>
<%=net.PanId%>
<%=net.Lqi%>
<% end %>
<%+footer%>