ESP32運行MicroPython通過MQTT上報溫溼度到騰訊雲

目錄

騰訊雲創建產品和設備

MQTT.fx模擬設備接入

ESP32設備連接到騰訊雲


騰訊雲創建產品和設備

1、物聯網通信

2、創建產品

3、創建設備

產品列表---》設備列表---》添加新設備

4、設備信息

上面的client id 、mqtt usernme、mqtt password都是我們需要用到的。

除了上面3個參數,還需要知道Broker Address和Broker Port,根據騰訊官方的資料Broker Address和Broker Port分別是如下格式的:

Broker Address:PRODUCT_ID.iotcloud.tencentdevices.com

Broker Port:1883

5、訂閱和發佈主題

產品列表---》設備列表---》權限列表,可以看到如下3個主題:

MQTT.fx模擬設備接入

1、配置客戶端

2、建立連接

 3、訂閱和發佈主題

訂閱成功之後,如下面的顯示:

上報數據:Publish(發佈)

騰訊雲日誌查看:

 下發數據:設備列表---》點進相應的設備裏面---》在線調試

客戶端查看:

ESP32設備連接到騰訊雲 

1、創建產品

創建產品和設備、客戶端參數的生成和上面一樣的方法;創建一個溫溼度上報到騰訊雲的產品和設備。

2、MQTT庫

ESP32需要使用到MQTT庫,使用網上開源的umqtt:https://github.com/micropython/micropython-lib/blob/master/umqtt.simple/umqtt/simple.py需要把這個文件導入到ESP32中。

3、溫溼度

MicroPython本身內置了dht模塊,支持DHT11、DHT22。

4、硬件連接

VCC <------>3V3

GND<------>GND

DAT <------>G4

5、腳本編寫

程序設計:

定義了4個函數:ConnectWifi(ssid,passwd)用於連接wifi,ReadTemHum()用於讀取溫溼度,

sub_cb(topic, msg)訂閱主題回調,apptimerevent(mytimer)定時器回調函數。

from umqtt.simple import MQTTClient
from machine import Pin
import network
import time
import machine
import dht
from machine import Timer

SSID="*********"
PASSWORD="**********"

SERVER ='LGSODS81VJ.iotcloud.tencentdevices.com'  #MQTT Server: LGSODS81VJ.iotcloud.tencentdevices.com
CLIENT_ID = "LGSODS81VJESP32Devcice1"   #設備ID
#PORT=1883
username='LGSODS81VJESP32Devcice1;12010126;C2PYL;1622167250'
password='ecd65158e4c9cdbfe48d116ca08ff069589f305936d8748fee269396207b01f8;hmacsha256'

publish_TOPIC = 'LGSODS81VJ/ESP32Devcice1/data'
subscribe_TOPIC ='LGSODS81VJ/ESP32Devcice1/data'

client=None
mydht=None

def sub_cb(topic, msg):
    print((topic, msg))

def connectWifi(ssid,passwd):
    global wlan
    wlan=network.WLAN(network.STA_IF)         #create a wlan object
    wlan.active(True)                         #Activate the network interface
    wlan.disconnect()                         #Disconnect the last connected WiFi
    wlan.connect(ssid,passwd)                 #connect wifi
    while(wlan.ifconfig()[0]=='0.0.0.0'):
        time.sleep(1)
    print(wlan.ifconfig())

def apptimerevent(mytimer):
    try:
        sensordata=ReadTemHum()
        mymessage='{"CurrentTemperature": %d ,"CurrentHumidity": %d }'%(sensordata[0],sensordata[1])
        client.publish(topic=publish_TOPIC,msg= mymessage, retain=False, qos=0)
    except Exception as ex_results2:
        print('exception',ex_results2)
        mytimer.deinit()
#     finally:
#         machine.reset()
# 
# #Catch exceptions,stop program if interrupted accidentally in the 'try'
def ReadTemHum():
    mydht.measure()
    tem=mydht.temperature()
    hum=mydht.humidity()
    data=[tem,hum]
    print(data)
    
    return data
    
if __name__=='__main__':
    try:
        mydht=dht.DHT11(machine.Pin(4))
        connectWifi(SSID,PASSWORD)
        client = MQTTClient(CLIENT_ID, SERVER,0,username,password,60)     #create a mqtt client
        print(client)
        client.set_callback(sub_cb)                         #set callback
        client.connect()                                    #connect mqtt
        client.subscribe(subscribe_TOPIC)                   #client subscribes to a topic
        mytimer=Timer(0)
        mytimer.init(mode=Timer.PERIODIC, period=5000,callback=apptimerevent)
        while True:
            client.wait_msg()                            #wait message
            
    except Exception  as ex_results:
        print('exception1',ex_results)
    finally:
        if(client is not None):
            client.disconnect()
        wlan.disconnect()
        wlan.active(False)

 數據以JSON格式上傳:

        mymessage='{"CurrentTemperature": %d ,"CurrentHumidity": %d }'%(sensordata[0],sensordata[1])

產品列表---》設備---》雲日誌---》內容日誌---》可以查看上報的數據

接收數據:

在行爲日誌裏面可以看到,設備發送到平臺的,平臺發送到設備的:

 

                                                                              ——————END——————

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章