代码在下
PROJECT = 'test'
VERSION = '2.0.0'
-- sys库是标配
_G.sys = require("sys")
--[[特别注意, 使用mqtt库需要下列语句]]
_G.sysplus = require("sysplus")
if wdt then
--添加硬狗防止程序卡死,在支持的设备上启用这个功能
wdt.init(9000)--初始化watchdog设置为9s
sys.timerLoopStart(wdt.feed, 3000)--3s喂一次狗
end
local LED = gpio.setup(8, 0, gpio.PULLUP)
local LED1 = gpio.setup(27, 0, gpio.PULLUP)
local mqttc = nil
sys.taskInit(function()
while true do
local iccid = mobile.iccid()
if iccid then
LED1(1)
break
end
end
log.info(iccid)
sys.wait(2000)
local product_key,device_id,device_secret = 你懂的"
local client_id,user_name,password = iotauth.qcloud(product_key,device_id,device_secret,"sha256",1709136000)
log.info("qcloud",client_id,user_name,password)
mqttc = mqtt.create(nil, product_key .. ".iotcloud.tencentdevices.com", 1883)
mqttc:auth(client_id, user_name, password)
mqttc:keepalive(240) -- 默认值240s
mqttc:autoreconn(true, 3000) -- 自动重连机制
mqttc:on(
function(mqtt_client, event, data, payload)
if event == "conack"then
sys.publish("mqtt_conack")
log.info("mqtt", "mqtt已连接")
mqtt_client:subscribe("$thing/down/property/" .. product_key .. "/".. device_id)
elseif event == "recv" then
log.info("mqtt", "收到消息", data, payload)
local json = json.decode(payload)
if json.method == "control" then
if json.params.power_switch == 1 then
LED(1)
elseif json.params.power_switch == 0 then
LED(0)
end
end
elseif event == "sent"then
log.info("mqtt", "sent", "pkgid", data)
end
end)
mqttc:connect()
sys.wait(10000)
sys.waitUntil("mqtt_conack")
while true do
local ret, topic, data, qos = sys.waitUntil("mqtt_pub", 30000)
if ret then
if topic == "close" then
break
end
mqttc:publish(topic, data, qos)
end
end
mqttc:close()
mqttc = nil
end)
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!