您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關Python中怎么利用MQTT協議連接OneNet,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
一、MQTT簡介
MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸)是IBM開發的一個即時通訊協議,有可能成為物聯網的重要組成部分。該協議支持所有平臺,幾乎可以把所有聯網物品和外部連接起來,被用來當做傳感器和制動器(比如通過Twitter讓房屋聯網)的通信協議。
二、MQTT特點
MQTT協議是為大量計算能力有限,且工作在低帶寬、不可靠的網絡的遠程傳感器和控制設備通訊而設計的協議,它具有以下主要的幾項特性:
1、使用發布/訂閱消息模式,提供一對多的消息發布,解除應用程序耦合;
2、對負載內容屏蔽的消息傳輸;
3、使用 TCP/IP 提供網絡連接;
4、有三種消息發布服務質量:
“至多一次”,消息發布完全依賴底層 TCP/IP 網絡。會發生消息丟失或重復。這一級別可用于如下情況,環境傳感器數據,丟失一次讀記錄無所謂,因為不久后還會有第二次發送。
“至少一次”,確保消息到達,但消息重復可能會發生。
“只有一次”,確保消息到達一次。這一級別可用于如下情況,在計費系統中,消息重復或丟失會導致不正確的結果。
5、小型傳輸,開銷很小(固定長度的頭部是 2 字節),協議交換最小化,以降低網絡流量;
6、使用 Last Will 和 Testament 特性通知有關各方客戶端異常中斷的機制;
三、OneNet平臺MQTT接入說明:點擊查看
四、python代碼完整簡例:(上傳初始化值,實時接收服務端數值變化)
#前期準備,注冊OneNet物聯網平臺,并創建好項目,創建數據流 from __future__ import print_function import paho.mqtt.client as mqtt import struct import json # CONNECT 方式: # client_id: DEV_ID # username: PRO_ID # password: AUTHINFO(鑒權信息) # 可以連接上設備云,CONNECT 和 CONNACK握手成功 # temperature:已創建的一個數據流 #更多請查閱OneNet官方mqtt文檔與paho-mqtt開發文檔 #修改成自己的即可 DEV_ID = "29455901" #設備ID PRO_ID = "12555524" #產品ID AUTH_INFO = "JHFDJF55586jhk" #APIKEY TYPE_JSON = 0x01 TYPE_FLOAT = 0x17 #定義上傳數據的json格式 該格式是oneNET規定好的 按格式修改其中變量即可 body = { "datastreams":[ { "id":"wendu", #對應OneNet的數據流名稱 "datapoints":[ { "at":"2016-08-15T14:47:00", #數據提交時間,這里可通過函數來獲取實時時間 "value":55 #數據值 } ] } ] } def build_payload(type, payload): datatype = type packet = bytearray() packet.extend(struct.pack("!B", datatype)) if isinstance(payload, str): udata = payload.encode('utf-8') length = len(udata) packet.extend(struct.pack("!H" + str(length) + "s", length, udata)) return packet # 當客戶端收到來自服務器的CONNACK響應時的回調。也就是申請連接,服務器返回結果是否成功等 def on_connect(client, userdata, flags, rc): print("連接結果:" + mqtt.connack_string(rc)) #上傳數據 json_body = json.dumps(body) packet = build_payload(TYPE_JSON, json_body) client.publish("$dp", packet, qos=1) #qos代表服務質量 # 從服務器接收發布消息時的回調。 def on_message(client, userdata, msg): print("溫度:"+str(msg.payload,'utf-8')+"°C") #當消息已經被發送給中間人,on_publish()回調將會被觸發 def on_publish(client, userdata, mid): print("mid:" + str(mid)) def main(): client = mqtt.Client(client_id=DEV_ID, protocol=mqtt.MQTTv311) client.on_connect = on_connect client.on_publish = on_publish client.on_message = on_message client.username_pw_set(username=PRO_ID, password=AUTH_INFO) client.connect('183.230.40.39', port=6002, keepalive=120) client.loop_forever() if __name__ == '__main__': main()
看完上述內容,你們對Python中怎么利用MQTT協議連接OneNet有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。