micropython mqtt_MicroPython使用MQTT协议接入OneNET云平台
MicroPython使用MQTT協議接入OneNET云平臺
[復制鏈接]
本帖最后由 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開發板:
37195061288919969.jpg (84.75 KB, 下載次數: 15)
2016-11-22 11:29 上傳
需要準備的軟件有:
1、ESP_DOWNLOAD_TOOL 用于下載開發板固件;
2、uPyLoader 用于與開發板的文件傳輸,同時該軟件也具有終端軟件調試的功能,該軟件的使用和介紹可以在:;
。
【3】創建產品和設備:
在OneNET平臺創建MQTT公開協議的產品并添加設備:
Screenshot_1.png (94.85 KB, 下載次數: 16)
2016-11-22 11:30 上傳
360截圖20161122101039179.jpg (70.36 KB, 下載次數: 17)
2016-11-22 11:30 上傳
【4】程序代碼:
1、使用ESP_DOWNLOAD_TOOL工具下載Micropython固件到開發板,固件:
2016-11-22 11:31 上傳
點擊文件名下載附件
;
2、打開命令行窗口,在uPyLoader目錄下輸入python main.py打開uPyLoader軟件,該軟件的運行需要使用pip安裝PyQt5和pyserial;
Screenshot_2.png (4.39 KB, 下載次數: 15)
2016-11-22 11:30 上傳
Screenshot_3.png (61.54 KB, 下載次數: 17)
2016-11-22 11:30 上傳
3、選擇與開發板連接的串口,連接成功后點擊File->Init transfer files初始化傳輸文件,初始化成功后在MCU端會新增_upload.py和_download.py兩個文件:
Screenshot_4.png (70.44 KB, 下載次數: 15)
2016-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)
2016-11-22 11:30 上傳
Screenshot_6.png (64.16 KB, 下載次數: 17)
2016-11-22 11:30 上傳
發送MQTT命令,發送on開發板LED燈亮;發送off命令開發板LED燈滅。
Screenshot_7.png (61.65 KB, 下載次數: 16)
2016-11-22 11:30 上傳
Screenshot_8.png (25.86 KB, 下載次數: 16)
2016-11-22 11:30 上傳
【6】效果展示:
總結
以上是生活随笔為你收集整理的micropython mqtt_MicroPython使用MQTT协议接入OneNET云平台的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 上海欢乐谷餐厅价目表
- 下一篇: 我有100块海皇波塞冬值得买吗