300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > micropython mqtt_MicroPython使用MQTT协议接入OneNET云平台

micropython mqtt_MicroPython使用MQTT协议接入OneNET云平台

时间:2020-05-22 19:13:19

相关推荐

micropython mqtt_MicroPython使用MQTT协议接入OneNET云平台

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

[复制链接]

本帖最后由 hanyeguxingwo 于 -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开发板:

37195061288919969.jpg (84.75 KB, 下载次数: 15)

-11-22 11:29 上传

需要准备的软件有:

1、ESP_DOWNLOAD_TOOL 用于下载开发板固件;

2、uPyLoader 用于与开发板的文件传输,同时该软件也具有终端软件调试的功能,该软件的使用和介绍可以在:;

【3】创建产品和设备:

在OneNET平台创建MQTT公开协议的产品并添加设备:

Screenshot_1.png (94.85 KB, 下载次数: 16)

-11-22 11:30 上传

360截图1122101039179.jpg (70.36 KB, 下载次数: 17)

-11-22 11:30 上传

【4】程序代码:

1、使用ESP_DOWNLOAD_TOOL工具下载Micropython固件到开发板,固件:

-11-22 11:31 上传

点击文件名下载附件

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

Screenshot_2.png (4.39 KB, 下载次数: 15)

-11-22 11:30 上传

Screenshot_3.png (61.54 KB, 下载次数: 17)

-11-22 11:30 上传

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

Screenshot_4.png (70.44 KB, 下载次数: 15)

-11-22 11:30 上传

4、编辑boot.py,mqtt.py和main.py,并将编辑完成后的三个文件和umqtt目录下的simple.py文件一起传输至MCU端;

boot.py用于设置和连接网络:

def do_connect():

import network

sta_if = network.WLAN(network.STA_IF)

ap_if = network.WLAN(network.AP_IF)

if ap_if.active():

ap_if.active(False)

if not sta_if.isconnected():

print('connecting to network...')

sta_if.active(True)

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

while not sta_if.isconnected():

pass

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

do_connect()

gc.collect()复制代码

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

from simple import MQTTClient

from machine import Pin

import machine

import micropython

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

# with something else if needed.

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

# Default MQTT server to connect to

SERVER = "183.230.40.39"

CLIENT_ID = "4070825"

TOPIC = b"micropython1"

username='76013'

password='micropythonespmp01'

state = 0

def sub_cb(topic, msg):

global state

print((topic, msg))

if msg == b"on":

led.value(0)

state = 1

print("1")

elif msg == b"off":

led.value(1)

state = 0

print("0")

elif msg == b"toggle":

# LED is inversed, so setting it to current state

# value will make it toggle

led.value(state)

state = 1 - state

def main(server=SERVER):

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

# Subscribed messages will be delivered to this callback

c.set_callback(sub_cb)

c.connect()

c.subscribe(TOPIC)

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

try:

while 1:

#micropython.mem_info()

c.wait_msg()

finally:

c.disconnect()复制代码

main.py用于程序的运行:

import mqtt

mqtt.main()复制代码

simple.py无需更改。

【5】连接测试:

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

Screenshot_5.png (61.55 KB, 下载次数: 13)

-11-22 11:30 上传

Screenshot_6.png (64.16 KB, 下载次数: 17)

-11-22 11:30 上传

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

Screenshot_7.png (61.65 KB, 下载次数: 16)

-11-22 11:30 上传

Screenshot_8.png (25.86 KB, 下载次数: 16)

-11-22 11:30 上传

【6】效果展示:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。