目錄
騰訊雲創建產品和設備
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——————