OpenWrt_Luci_Lua/1_1.Mi_Lua/xiaoqiang/util/XQZigbeeUtil.lua
2015-06-13 22:22:49 +08:00

65 lines
1.9 KiB
Lua

module ("xiaoqiang.util.XQZigbeeUtil", package.seeall)
local JSON = require("luci.json")
local XQLog = require("xiaoqiang.XQLog")
local XQConfigs = require("xiaoqiang.common.XQConfigs")
local XQFunction = require("xiaoqiang.common.XQFunction")
local XQDeviceUtil = require("xiaoqiang.util.XQDeviceUtil")
function request_yeelink(payload)
local XQCryptoUtil = require("xiaoqiang.util.XQCryptoUtil")
local payload1 = XQCryptoUtil.binaryBase64Enc(payload)
local cmd = XQConfigs.THRIFT_TUNNEL_TO_MIIO % payload1
local LuciUtil = require("luci.util")
return JSON.decode(LuciUtil.exec(cmd))
end
function get_zigbee_count()
local device_list = request_yeelink("{\"command\":\"device_list\"}")
if device_list == nil or device_list.list == nil then
return 0
end
return #device_list.list
end
function append_yeelink_list(list)
local device_list = request_yeelink("{\"command\":\"device_list\"}")
if device_list == nil or device_list.list == nil or list == nil then
return
end
for _,item in ipairs(device_list.list) do
local it = {}
it.mac = item.mac
it.type = "zigbee"
it.ctype = 4 -- yeelink
it.ptype = 3 -- light
it.online = 0
it.origin_name = item.type
it.origin_info = item
local company = {}
if item.type == "light" then
it.name = "智能灯泡"
company.icon = "device_list_intelligent_lamp.png"
company.name = "Yeelink"
end
it.company = company
local deviceInfoDict = XQDeviceUtil.getDeviceInfoFromDB()
local deviceInfo = deviceInfoDict[it.mac]
if deviceInfo ~= nil and not XQFunction.isStrNil(deviceInfo.nickname) then
it.name = deviceInfoDict[it.mac].nickname
end
if not deviceInfo then
local XQDBUtil = require("xiaoqiang.util.XQDBUtil")
XQDBUtil.saveDeviceInfo(it.mac,it.origin_name,"","","")
end
table.insert(list,it)
end
end