mqtts_receiver.lua 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. --[[
  2. @module mqtts_receiver
  3. @summary mqtts cient数据接收处理应用功能模块
  4. @version 1.0
  5. @date 2025.07.29
  6. @author 马梦阳
  7. @usage
  8. 本文件为mqtts client 数据接收应用功能模块,核心业务逻辑为:
  9. 处理接收到的publish数据,同时将数据发送给其他应用功能模块做进一步处理;
  10. 本文件的对外接口有2个:
  11. 1、mqtts_receiver.proc(topic, payload, metas):publish数据处理入口,在mqtts_main.lua中调用;
  12. 2、sys.publish("RECV_DATA_FROM_SERVER", "recv from mqtt ssl server: ", topic, payload):
  13. 将接收到的publish中的topic和payload数据通过消息"RECV_DATA_FROM_SERVER"发布出去;
  14. 需要处理数据的应用功能模块订阅处理此消息即可,本demo项目中uart_app.lua中订阅处理了本消息;
  15. ]]
  16. local mqtts_receiver = {}
  17. --[[
  18. 处理接收到的publish数据
  19. @api mqtts_receiver.proc(topic, payload, metas)
  20. @param1 topic string
  21. 表示publish主题
  22. @param2 payload string
  23. 表示publish数据负载
  24. @param2 payload string
  25. 表示publish数据负载
  26. @param3 metas table
  27. 表示publish报文的一些参数;格式如下:
  28. {
  29. qos: number类型,取值范围0,1,2
  30. retain:number类型,取值范围0,1
  31. dup:number类型,取值范围0,1
  32. message_id: number类型
  33. }
  34. @return1 result nil
  35. @usage
  36. mqtts_receiver.proc(topic, payload, metas)
  37. ]]
  38. function mqtts_receiver.proc(topic, payload, metas)
  39. log.info("mqtts_receiver.proc", topic, payload:len(), json.encode(metas))
  40. -- 接收到数据,通知网络环境检测看门狗功能模块进行喂狗
  41. sys.publish("FEED_NETWORK_WATCHDOG")
  42. -- 将topic和payload通过"RECV_DATA_FROM_SERVER"消息publish出去,给其他应用模块处理
  43. sys.publish("RECV_DATA_FROM_SERVER", "recv from mqtt ssl server: ", topic, payload)
  44. -- 也可以直接在此处编写代码,处理topic和payload
  45. end
  46. return mqtts_receiver