openWRT界面开发

WiFi连接设备数Demo

前端部分

  这个demo是基于angular实现的,与使用普通方法没有本质区别。当用户登录后,首先进入/luci/view/web/home.htm, 在这个页面bootstrap angular, 如下:

<script>
    seajs.config({
        base:'<%=media%>',
        alias:{
            'app':'javascript/app.js'
        }
    });
    seajs.use(['app'], function(app) {
        angular.bootstrap(document, ['app']);
    });
</script>

  配置router,当请求到index状态时,会使用StatusFactory请求页面中设置的全局API.System.Status链接,并返回相应的数据;

$stateProvider
.state('index', {
    url: '/',
    templateUrl: _G.base.res + '/views/content/status.html',
    controller:'StatusCtrl',
    resolve:{
        status:['StatusFactory', function(StatusFactory) {
            return StatusFactory.query();
        }]
    }
})

后台luCI部分

  首先要在/lua/controller/api目录下注册相应的entry。

entry({"api", "system", "status"},call("getStatusInfo"), (""), 128)

  然后在/lua/service/module目录下的status.lua中会处理API.System.Status请求,通过luci.tools.status.wifi_networks()可以获取wifi链接设备数;

function getAssociatedWifiCount()
    local wifi_networks = luci.tools.status.wifi_networks()
    local count = 0
    for k, v in pairs(wifi_networks) do
        local networks = v["networks"]
        for i, j in pairs(networks) do
            local assoclist = j["assoclist"]
            print("result is " .. 'myadd(1, 1)')
            for m, n in pairs(assoclist) do
                count = count + 1
            end
        end
    end

    return count
end

运行结果

登录页面:

登录成功页面:

登录成功设置页: