隨着移動互聯網的發展,MQTT因爲開放源代碼,耗電量小等特色,將會在移動消息推送領域會有更多的貢獻,在物聯網領域,傳感器與服務器的通訊,信息的收集,MQTT均可以做爲考慮的方案之一。在將來MQTT會進入到咱們生活的各各方面,本篇文章教你們利用TPYBoardv202使用MQTT協議接入OneNET平臺,而且遠程控制LED燈。php
什麼是MQTT協議html
早在1999年,IBM的AndyStanford-Clark博士以及Arcom公司ArlenNipper博士發明了MQTT(MessageQueuingTelemetryTransport,消息隊列遙測傳輸)技術。MQTT(MessageQueuingTelemetryTransport,消息隊列遙測傳輸)是IBM開發的一個即時通信協議,有可能成爲物聯網的重要組成部分。該協議支持全部平臺,幾乎能夠把全部聯網物品和外部鏈接起來,被用來當作傳感器和致動器(好比經過Twitter讓房屋聯網)的通訊協議。python
實驗準備服務器
1、硬件材料網絡
1.TPYBoardv202app
2.麪包板工具
3.數據線ui
4.LED發光二極管spa
2、軟件準備開放源代碼
1.MicroPythonFileUploader用於與開發板的文件傳輸
下載地址:http://www.tpyboard.com/download/tool/170.html
2.ESPFlashDownloadTool_v3.3.4TPYBoardv202固件燒寫工具
下載地址:http://www.tpyboard.com/download/tool/185.html
3.第三方庫文件:micropython-lib\umqtt.simple\umqtt\simple.py
下載地址:http://www.tpyboard.com/download/data/184.html
4.TPYBoardv202固件
下載地址:http://www.tpyboard.com/download/firmware/171.html
OneNET平臺建立MQTT協議的產品並添加設備
若是沒有產品,點擊建立產品便可,上面顯示我已經建立完畢。
SmartBoy是我添加的設備,當咱們插上TPYBoardv202時,就會看到上圖綠點點亮,拔了之後就會變灰,前提是板子里程序已經寫入。
實物接線圖
我用的TPYBoardv202的G4引腳,這個引腳能夠隨便定義,主要看程序裏你想用哪一個。
程序源代碼
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(WIFI名稱, '密碼') #wifi的SSID和密碼 while not sta_if.isconnected(): pass print('network config:', sta_if.ifconfig()) do_connect()
mqtt.py源碼
from simple import MQTTClient from machine import Pin import machine import micropython #選擇G4引腳 g4 = Pin(4, Pin.OUT, value=0) # MQTT服務器地址域名爲:183.230.40.39,不變 SERVER = "183.230.40.39" #設備ID CLIENT_ID = "9377500" #隨便起個名字 TOPIC = b"TurnipRobot" #產品ID username='91025' #產品APIKey: password='y7zd=7wNaObdfRYhxQn7D5jiDnI=' state = 0 def sub_cb(topic, msg): global state print((topic, msg)) if msg == b"on": g4.value(1) state = 1 print("1") elif msg == b"off": g4.value(0) state = 0 print("0") elif msg == b"toggle": state = 1 - state g4.value(state) def main(server=SERVER): #端口號爲:6002 c = MQTTClient(CLIENT_ID, server,6002,username,password) c.set_callback(sub_cb) c.connect() c.subscribe(TOPIC) print("Connected to %s, subscribed to %s topic" % (server, TOPIC)) try: while 1: c.wait_msg() finally: c.disconnect()
simple.py源碼不用更改,直接按照下載地址下載便可。
main.py源碼
import mqtt mqtt.main()
源碼下載請到:http://www.tpyboard.com/download/data/183.html
效果展現
這個時候咱們OneNET雲平臺上設備就會顯示在線了
當咱們發送指令on的時候,就會看到控制檯顯示
(b'$creq/3e25b3f5-27c8-50d5-b2bb-b7cb7ddddac4',b'on')
1而且看到咱們麪包板上的led會亮起來
當咱們發送指令off的時候,就會看到控制檯顯示
(b'$creq/c01cc820-72b2-50e2-ab0c-6954d35796ef',b'off')
0而且看到咱們麪包板上的led燈會熄滅
當咱們發送toggle時候,就會看到控制檯顯示:
(b'$creq/e2f94a0b-7363-56ec-b87c-1d5d02dc4774',b'toggle')
而且看到咱們麪包板上的led燈會亮起來,再次發送,控制檯會顯示:
(b'$creq/9aa4a04f-eb90-503f-b14f-6f0575869c23',b'toggle')
咱們會看到led熄滅。
視頻展現效果
在這只是給你們演示了TPYBoardv202怎麼用MQTT協議接入OneNet雲平臺,並教你們如何控制一個外圍電路點亮一個led,你們能夠利用TPYBoardv202接入更復雜,更好玩的東西。