main
cc 2025-07-24 21:41:12 +08:00
parent 76c798cddd
commit 18d92884a6
6 changed files with 102 additions and 49 deletions

View File

@ -1,5 +1,6 @@
local _C = { local _C = {
TAG = "【配置】" TAG = "【配置】",
CFLAG = false,
} }
-- 日志等级 -- 日志等级
@ -9,7 +10,7 @@ PRODUCT_KEY = "0VrZxxSwrI7qE3GU8ddLFww5FbP3DqQu"
-- 默认配置 -- 默认配置
local default_config = { local default_config = {
-- 联网最长等待时间(秒) -- 联网最长等待时间(秒)
-- ip_ready_timeout_s = 30, ip_ready_timeout_s = 30,
-- 配置接口地址 -- 配置接口地址
config_url = "http://miot.xaxi.cn/app/device/conf/", config_url = "http://miot.xaxi.cn/app/device/conf/",
-- http请求最长等待时间毫秒 -- http请求最长等待时间毫秒
@ -34,27 +35,27 @@ function _C.init()
return 0 return 0
end end
-- local function get_ip_ready_timeout_s() local function get_ip_ready_timeout_s()
-- local timeout = fskv.get("config", "ip_ready_timeout_s") local timeout = fskv.get("config", "ip_ready_timeout_s")
-- return (type(timeout) == "number") and timeout or default_config.ip_ready_timeout_s return (type(timeout) == "number") and timeout or default_config.ip_ready_timeout_s
-- end end
-- local function set_ip_ready_timeout_s(v) local function set_ip_ready_timeout_s(v)
-- if type(v) ~= "number" then if type(v) ~= "number" then
-- log.warn(COSO, _C.TAG, "缺少 ip_ready_timeout_s 字段") log.warn(COSO, _C.TAG, "缺少 ip_ready_timeout_s 字段")
-- return return
-- end end
-- local _ip_ready_timeout_s = get_ip_ready_timeout_s() local _ip_ready_timeout_s = get_ip_ready_timeout_s()
-- if v == _ip_ready_timeout_s then return end if v == _ip_ready_timeout_s then return end
-- if v < 10 or v > 30 then if v < 10 or v > 30 then
-- log.error(COSO, _C.TAG, "ip_ready_timeout_s 校验失败", v) log.error(COSO, _C.TAG, "ip_ready_timeout_s 校验失败", v)
-- return return
-- end end
-- if not fskv.sett("config", "ip_ready_timeout_s", v) then if not fskv.sett("config", "ip_ready_timeout_s", v) then
-- log.error(COSO, _C.TAG, "更新失败 ip_ready_timeout_s", v) log.error(COSO, _C.TAG, "更新失败 ip_ready_timeout_s", v)
-- end end
-- log.info(COSO, _C.TAG, "更新成功 ip_ready_timeout_s", v) log.info(COSO, _C.TAG, "更新成功 ip_ready_timeout_s", v)
-- end end
local function get_config_url() local function get_config_url()
local url = fskv.get("config", "config_url") local url = fskv.get("config", "config_url")
@ -207,9 +208,9 @@ local function set_t_o(v)
log.info(COSO, _C.TAG, "更新成功 t_o", v) log.info(COSO, _C.TAG, "更新成功 t_o", v)
end end
-- function _C.get_net_timeout() function _C.get_net_timeout()
-- return get_ip_ready_timeout_s() return get_ip_ready_timeout_s()
-- end end
function _C.get_d_u() function _C.get_d_u()
return get_d_u() return get_d_u()

View File

@ -1,5 +1,7 @@
require("globals") require("globals")
local function start() local function start()
local wakeup_sta = { local wakeup_sta = {
[0] = "上电开机", [0] = "上电开机",
@ -11,10 +13,14 @@ local function start()
} }
local wakeup, sleep = pm.lastReson() local wakeup, sleep = pm.lastReson()
log.info(COSO, "【设备开机】",wakeup_sta[wakeup],slp_sta[sleep], rtos.buildDate(), rtos.firmware()) log.info(COSO, "【设备开机】",wakeup_sta[wakeup],slp_sta[sleep], rtos.buildDate(), rtos.firmware())
local code, connet_time
code = cfg.init()
if code ~= 0 then return sta.handling(code) end
log.info(COSO, "【数据库】", "初始化完成")
if sleep > 0 then if sleep > 0 then
mobile.flymode(0,false) mobile.flymode(0,false)
end end
local code, connet_time = net.init(30) code, connet_time = net.init(cfg.get_net_timeout())
if code ~= 0 then return sta.handling(code) end if code ~= 0 then return sta.handling(code) end
log.info(COSO, "【网络】", "连接成功", connet_time) log.info(COSO, "【网络】", "连接成功", connet_time)
sys.publish("config_check") sys.publish("config_check")
@ -22,31 +28,27 @@ end
local function configTask() local function configTask()
sys.waitUntil("config_check") sys.waitUntil("config_check")
log.info(COSO, "【检查配置") log.debug(COSO, "【DEV】", cfg.get_net_timeout())
local code = cfg.init()
if code ~= 0 then return sta.handling(code) end
log.info(COSO, "【数据库】", "初始化完成")
cfg.check()
log.debug(COSO, "【DEV】", cfg.get_d_u()) log.debug(COSO, "【DEV】", cfg.get_d_u())
log.debug(COSO, "【DEV】", cfg.get_g_u()) log.debug(COSO, "【DEV】", cfg.get_g_u())
log.debug(COSO, "【DEV】", cfg.get_ota()) log.debug(COSO, "【DEV】", cfg.get_ota())
log.debug(COSO, "【DEV】", cfg.get_s_u()) log.debug(COSO, "【DEV】", cfg.get_s_u())
log.debug(COSO, "【DEV】", cfg.get_t_o()) log.debug(COSO, "【DEV】", cfg.get_t_o())
cfg.check()
if cfg.get_ota() then
sys.publish("ota_update")
else
sys.publish("get_data") sys.publish("get_data")
end end
end
local function dataTask() local function dataTask()
sys.waitUntil("get_data") sys.waitUntil("get_data")
sys.publish("report_data") report.upload(data.getData())
end sleep.goPSM(10 or cfg.get_s_u())
local function reportTask()
sys.waitUntil("report_data")
sleep.goPSM(10)
end end
sys.taskInit(start) sys.taskInit(start)
sys.taskInit(configTask) sys.taskInit(configTask)
sys.taskInit(dataTask) sys.taskInit(dataTask)
sys.taskInit(reportTask)

34
c210m/data.lua Normal file
View File

@ -0,0 +1,34 @@
local _C = {
TAG = "【数据获取】",
data = {
net = {},
},
}
local function get_net_data()
_C.data.net = {
imei = mobile.imei(),
imsi = mobile.imsi(),
sn = mobile.sn():toHex(),
muid = mobile.muid(),
iccid = mobile.iccid(),
csq = mobile.csq(),
rssi = mobile.rssi(),
rsrq = mobile.rsrq(),
rsrp = mobile.rsrp(),
snr = mobile.snr(),
simid = mobile.simid(),
}
end
function _C.getData()
get_net_data()
return _C.data
end
function _C.updateData()
end
return _C

View File

@ -6,4 +6,6 @@ cfg = require("config")
net = require("net") net = require("net")
ota = require("ota") ota = require("ota")
data = require("data")
sleep = require("sleep") sleep = require("sleep")
report = require("report")

View File

@ -1,20 +1,24 @@
local _C = { local _C = {
TAG = "【4G网络】" TAG = "【4G网络】",
READY = false
} }
sys.subscribe("IP_READY", function()
_C.READY = true
end)
function _C.init(v) function _C.init(v)
if _C.READY then
return 0, 0
end
local start_time = os.clock() local start_time = os.clock()
local result while not (_C.READY or ((os.clock() - start_time) * 100 > v)) do
while not (result or ((os.clock() - start_time) * 100 > v)) do if not _C.READY then
result = sys.waitUntil("IP_READY", 990) sys.wait(1000)
if not result then log.info(COSO, _C.TAG, "联网中:", (os.clock() - start_time) * 100, "超时:", v)
log.warn(COSO, _C.TAG, "联网中:", (os.clock() - start_time) * 100, "超时:", v)
sys.wait(10)
end end
end end
return result and 0 or 3, (os.clock() - start_time) * 100 return _C.READY and 0 or 3, (os.clock() - start_time) * 100
end end
return _C return _C

View File

@ -2,4 +2,14 @@ local _C = {
TAG = "【上报数据】" TAG = "【上报数据】"
} }
function _C.upload(v)
log.info(COSO, _C.TAG, json.encode(v))
local code, _, body = http.request("POST", "http://miot.xaxi.cn/app/device/data/", nil, json.encode(v), { timeout = cfg.get_t_o() }).wait()
log.debug(COSO, _C.TAG, code, body)
if code ~= 200 then return 1 end
body = json.decode(body)
if body.code ~= 0 then return 2 end
return 0
end
return _C return _C