MQTT

简介

MQTT 是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议 。本章介绍如何在 RT-Thread MicroPython 上使用 MQTT 功能,使用到的模块为 umqtt.simple 模块。

获取并安装 umqtt.simple 模块

同样的可以使用包管理中的两种方式来获取,使用 upip 安装的方式可使用 upip.install("micropython-umqtt.simple")如图:

1525690229174

umqtt.simple 模块的使用

MQTT 订阅功能

  • 使用 iot.eclipse.org 作为测试服务器
  1. import time
  2. from umqtt.simple import MQTTClient
  3.  
  4. # Publish test messages e.g. with:
  5. # mosquitto_pub -t foo_topic -m hello
  6.  
  7. # Received messages from subscriptions will be delivered to this callback
  8. def sub_cb(topic, msg):
  9. print((topic, msg))
  10.  
  11. def main(server="iot.eclipse.org"): # 测试 server 为 iot.eclipse.org
  12. c = MQTTClient("RT-Thread", server)
  13. c.set_callback(sub_cb)
  14. c.connect()
  15. c.subscribe(b"foo_topic") # 订阅 foo_topic 主题
  16. while True:
  17. if True:
  18. # Blocking wait for message
  19. c.wait_msg()
  20. else:
  21. # Non-blocking wait for message
  22. c.check_msg()
  23. # Then need to sleep to avoid 100% CPU usage (in a real
  24. # app other useful actions would be performed instead)
  25. time.sleep(1)
  26.  
  27. c.disconnect()
  28.  
  29. if __name__ == "__main__":
  30. main()
  • 使用 python 命令执行上述代码文件,就会连接上 MQTT 服务器,可收到我们从另一个客户端发布的以 foo_topic为主题的内容
    1525665942426

MQTT 发布功能

  • 执行下面的代码后将向 MQTT 服务器发布以 foo_topic 为主题的信息
  1. from umqtt.simple import MQTTClient
  2.  
  3. # Test reception e.g. with:
  4. # mosquitto_sub -t foo_topic
  5.  
  6. def main(server="iot.eclipse.org"):
  7. c = MQTTClient("SummerGift", server)
  8. c.connect()
  9. c.publish(b"foo_topic", b"Hello RT-Thread !!!")
  10. c.disconnect()
  11.  
  12. if __name__ == "__main__":
  13. main()

评论

原文: https://www.rt-thread.org/document/site/submodules/micropython/docs/09-Net_Programming_Guide/04-MQTT/