亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中怎么利用MQTT協議連接OneNet

發布時間:2021-07-10 13:53:58 來源:億速云 閱讀:836 作者:Leah 欄目:互聯網科技

今天就跟大家聊聊有關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有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

自贡市| 兰坪| 延川县| 如皋市| 浦东新区| 桓仁| 上林县| 河津市| 沂水县| 高尔夫| 花莲市| 明光市| 自贡市| 达日县| 巴林右旗| 六盘水市| 青铜峡市| 顺义区| 鄱阳县| 西峡县| 嘉峪关市| 宿州市| 富阳市| 石首市| 惠安县| 修水县| 商丘市| 句容市| 乌拉特前旗| 叶城县| 北流市| 金华市| 曲周县| 佛冈县| 藁城市| 墨竹工卡县| 封开县| 桃园市| 闽侯县| 钟山县| 策勒县|