干货

MicroPython使用MQTT协议接入OneNET云平台

分类名:经验日期:2016-11-22作者:hanyeguxingwo 阅读原文
分享到
微博
QQ
微信
LinkedIn

本帖最后由 hanyeguxingwo 于 2016-11-22 11:33 编辑

       之前使用Arduino+ESP8266使用EDP协议成功接入了OneNET,实现了物联网控制,本次使用板载ESP8266的ESP-MP-01 MicroPython开发板使用MQTT协议同样成功接入,通过发布TOPIC成功实现智能设备控制。
【1】MQTT协议简介:
        MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。做为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
【2】硬件与软件:
        本次使用的硬件为ESP-MP-01开发板:

         需要准备的软件有:
1、ESP_DOWNLOAD_TOOL  用于下载开发板固件;
2、uPyLoader 用于与开发板的文件传输,同时该软件也具有终端软件调试的功能,该软件的使用和介绍可以在:https://github.com/BetaRavener/uPyLoader/中查看
3、第三方库文件:umqtt,该模块封装了MQTT协议,该模块可以在:https://github.com/micropython/micropython-lib中找到
【3】创建产品和设备:
        在OneNET平台创建MQTT公开协议的产品并添加设备:


【4】程序代码:
1、使用ESP_DOWNLOAD_TOOL 工具下载Micropython固件到开发板,固件:


2、打开命令行窗口,在uPyLoader目录下输入python main.py打开uPyLoader软件,该软件的运行需要使用pip安装PyQt5和pyserial;


3、选择与开发板连接的串口,连接成功后点击File->Init transfer files初始化传输文件,初始化成功后在MCU端会新增_upload.py和_download.py两个文件:

4、编辑boot.py,mqtt.py和main.py,并将编辑完成后的三个文件和umqtt目录下的simple.py文件一起传输至MCU端;
boot.py用于设置和连接网络:

  1. def do_connect():

  2.         import network

  3.         sta_if = network.WLAN(network.STA_IF)

  4.         ap_if = network.WLAN(network.AP_IF)

  5.         if ap_if.active():

  6.                 ap_if.active(False)

  7.         if not sta_if.isconnected():

  8.                 print('connecting to network...')

  9.         sta_if.active(True)

  10.         sta_if.connect('MicroPython', '12345678') #wifi的SSID和密码

  11.         while not sta_if.isconnected():

  12.                 pass

  13.         print('network config:', sta_if.ifconfig())

  14.         do_connect()

  15.         gc.collect()


复制代码



mqtt.py用于平台接入和消息处理:

  1. from simple import MQTTClient

  2. from machine import Pin

  3. import machine

  4. import micropython

  5. # ESP8266 ESP-12 modules have blue, active-low LED on GPIO2, replace

  6. # with something else if needed.

  7. led = Pin(2, Pin.OUT, value=1)

  8. # Default MQTT server to connect to

  9. SERVER = "183.230.40.39"

  10. CLIENT_ID = "4070825"

  11. TOPIC = b"micropython1"

  12. username='76013'

  13. password='micropythonespmp01'

  14. state = 0

  15. def sub_cb(topic, msg):

  16.     global state

  17.     print((topic, msg))

  18.     if msg == b"on":

  19.             led.value(0)

  20.             state = 1

  21.             print("1")

  22.     elif msg == b"off":

  23.             led.value(1)

  24.             state = 0

  25.             print("0")

  26.     elif msg == b"toggle":

  27.             # LED is inversed, so setting it to current state

  28.             # value will make it toggle

  29.             led.value(state)

  30.             state = 1 - state

  31. def main(server=SERVER):

  32.     c = MQTTClient(CLIENT_ID, server,6002,username,password)

  33.     # Subscribed messages will be delivered to this callback

  34.     c.set_callback(sub_cb)

  35.     c.connect()

  36.     c.subscribe(TOPIC)

  37.     print("Connected to %s, subscribed to %s topic" % (server, TOPIC))

  38.     try:

  39.             while 1:

  40.                     #micropython.mem_info()

  41.                     c.wait_msg()

  42.     finally:

  43.             c.disconnect()


复制代码



main.py用于程序的运行:

  1. import mqtt

  2. mqtt.main()

复制代码


simple.py无需更改。

【5】连接测试:
        打开uPyLoader的终端窗口,复位开发板后可以看到成功连接值无线网络和接入OneNET服务器:


       发送MQTT命令,发送on开发板LED灯亮;发送off命令开发板LED灯灭。


【6】效果展示:
MicroPython接入OneNET云平台效果演示


关键字:MicroPython'、'MQTT'、'OneNET'、'云平台
阅读原文 浏览量:24940 收藏:6
此内容由EEWORLD论坛网友 hanyeguxingwo 原创,如需转载或用于商业用途需征 得作者同意并注明出处

上一篇: [10月DIY]编写个超简单的CPU
下一篇: MicroPython动手做(32)——物联网之MQTT

评论

登录 | 注册 需要登陆才可发布评论    
评论加载中......
SJH50
学习中,谢谢作者
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved