testEvt.lua 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. local sys = require "sys"
  2. local aliyun = require "aliyun"
  3. --[[
  4. 函数名:pubqos1testackcb
  5. 功能 :发布1条qos为1的消息后收到PUBACK的回调函数
  6. 参数 :
  7. usertag:调用mqttclient:publish时传入的usertag
  8. result:任意数字表示发布成功,nil表示失败
  9. 返回值:无
  10. ]]
  11. local publishCnt = 1
  12. local function publishTestCb(result,para)
  13. log.info("aliyun", "发布后的反馈", result,para)
  14. sys.timerStart(publishTest,20000)
  15. publishCnt = publishCnt+1
  16. end
  17. --发布一条QOS为1的消息
  18. function publishTest()
  19. --注意:在此处自己去控制payload的内容编码,aLiYun库中不会对payload的内容做任何编码转换
  20. -- aliyun.publish(topic,qos,payload,cbFnc,cbPara)
  21. log.info("aliyun", "上行数据")
  22. aliyun.publish("/"..aliyun.opts.ProductKey.."/"..aliyun.opts.DeviceName.."/user/update",1,"LUATOS_CESHI",publishTestCb,"publishTest_"..publishCnt)
  23. end
  24. ---数据接收的处理函数
  25. -- @string topic,UTF8编码的消息主题
  26. -- @string payload,原始编码的消息负载
  27. local function rcvCbFnc(topic,payload,qos,retain,dup)
  28. log.info("aliyun", "收到下行数据", topic,payload,qos,retain,dup)
  29. end
  30. --- 连接结果的处理函数
  31. -- @bool result,连接结果,true表示连接成功,false或者nil表示连接失败
  32. local function connectCbFnc(result)
  33. log.info("aliyun","连接结果", result)
  34. if result then
  35. sys.publish("aliyun_ready")
  36. log.info("aliyun", "连接成功")
  37. --订阅主题
  38. --根据自己的项目需要订阅主题
  39. -- aliyun.subscribe(topic,qos)
  40. -- aliyun.subscribe("/".. aliyun.opts.ProductKey.."/".. aliyun.opts.DeviceName.."/user/ceshi",1)
  41. --PUBLISH消息测试
  42. publishTest()
  43. else
  44. log.warn("aliyun", "连接失败")
  45. end
  46. end
  47. -- 连接状态的处理函数
  48. aliyun.on("connect",connectCbFnc)
  49. -- 数据接收的处理函数
  50. aliyun.on("receive",rcvCbFnc)
  51. -- 一型一密的注册回调函数, 2024.6.17 添加
  52. -- aliyun.on("reg", function(result)
  53. -- aliyun.store(result)
  54. -- end)
  55. -- 数据发送的处理函数, 一般不需要
  56. -- aliyun.on("receive", sentCbFnc)
  57. -- OTA状态的处理函数
  58. -- aliyun.on("ota",function(result)
  59. -- if result == 0 then
  60. -- log.info("aliyun", "OTA成功")
  61. -- rtos.reboot()
  62. -- end
  63. -- end)