| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- local sys = require "sys"
- local aliyun = require "aliyun"
- --[[
- 函数名:pubqos1testackcb
- 功能 :发布1条qos为1的消息后收到PUBACK的回调函数
- 参数 :
- usertag:调用mqttclient:publish时传入的usertag
- result:任意数字表示发布成功,nil表示失败
- 返回值:无
- ]]
- local publishCnt = 1
- local function publishTestCb(result,para)
- log.info("aliyun", "发布后的反馈", result,para)
- sys.timerStart(publishTest,20000)
- publishCnt = publishCnt+1
- end
- --发布一条QOS为1的消息
- function publishTest()
- --注意:在此处自己去控制payload的内容编码,aLiYun库中不会对payload的内容做任何编码转换
- -- aliyun.publish(topic,qos,payload,cbFnc,cbPara)
- log.info("aliyun", "上行数据")
- aliyun.publish("/"..aliyun.opts.ProductKey.."/"..aliyun.opts.DeviceName.."/user/update",1,"LUATOS_CESHI",publishTestCb,"publishTest_"..publishCnt)
- end
- ---数据接收的处理函数
- -- @string topic,UTF8编码的消息主题
- -- @string payload,原始编码的消息负载
- local function rcvCbFnc(topic,payload,qos,retain,dup)
- log.info("aliyun", "收到下行数据", topic,payload,qos,retain,dup)
- end
- --- 连接结果的处理函数
- -- @bool result,连接结果,true表示连接成功,false或者nil表示连接失败
- local function connectCbFnc(result)
- log.info("aliyun","连接结果", result)
- if result then
- sys.publish("aliyun_ready")
- log.info("aliyun", "连接成功")
- --订阅主题
- --根据自己的项目需要订阅主题
- -- aliyun.subscribe(topic,qos)
- -- aliyun.subscribe("/".. aliyun.opts.ProductKey.."/".. aliyun.opts.DeviceName.."/user/ceshi",1)
- --PUBLISH消息测试
- publishTest()
- else
- log.warn("aliyun", "连接失败")
- end
- end
- -- 连接状态的处理函数
- aliyun.on("connect",connectCbFnc)
- -- 数据接收的处理函数
- aliyun.on("receive",rcvCbFnc)
- -- 一型一密的注册回调函数, 2024.6.17 添加
- -- aliyun.on("reg", function(result)
- -- aliyun.store(result)
- -- end)
- -- 数据发送的处理函数, 一般不需要
- -- aliyun.on("receive", sentCbFnc)
- -- OTA状态的处理函数
- -- aliyun.on("ota",function(result)
- -- if result == 0 then
- -- log.info("aliyun", "OTA成功")
- -- rtos.reboot()
- -- end
- -- end)
|