溫馨提示×

溫馨提示×

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

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

如何使用MQTT協(xié)議上傳數據點到OneNET平臺

發(fā)布時間:2021-12-07 09:22:57 來源:億速云 閱讀:2674 作者:iii 欄目:互聯網科技

本篇內容主要講解“如何使用MQTT協(xié)議上傳數據點到OneNET平臺”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何使用MQTT協(xié)議上傳數據點到OneNET平臺”吧!


    準備工作


    TPYBoard v202開發(fā)板(33元某寶可以買到)
    USB數據線
    電腦
    NotePad ++ 軟件(其他編輯工具也可以)
    MicroPython File Uploader(MFU)軟件
    瀏覽器(谷歌瀏覽器為例)


    OneNET平臺新建數據流


    OneNET平臺官網地址:<https://open.iot.10086.cn/>。
    若沒有使用過的該平臺的,可以參考上面前言中的教程,先進行產品和設備的添加。
    在數據點上報之前,我們需要在OneNET云平臺上添加一個數據流模板。步驟如下:
    1、進入[開發(fā)者中心]的[設備管理]頁面,在左側菜單欄中選擇[數據流模板],點擊[添加數據流]。

如何使用MQTT協(xié)議上傳數據點到OneNET平臺


    2、會彈出一個添加數據流的對話框,必填項名稱,其他可以選填,填完之后點擊[添加]。

如何使用MQTT協(xié)議上傳數據點到OneNET平臺


    3、添加成功后,對話框會自動關閉。數據流展示列表會自動增加剛才新添加的數據流信息。
    到此,數據流模塊就建立完成了。

如何使用MQTT協(xié)議上傳數據點到OneNET平臺


    向OneNET平臺上傳數據點


    接下來就要進行數據點的上傳了。上傳數據點時需要參考協(xié)議規(guī)則說明,大家可以去OnetNET平臺文檔中心上下載,OnetNET平臺文檔中心地址:https://open.iot.10086.cn/doc/art431.html#118。
    找到[1.1 說明文檔]找到關于MQTT項目中的設備終端接入協(xié)議-MQTT進行下載。

如何使用MQTT協(xié)議上傳數據點到OneNET平臺


    下載的是一個word文檔,打開之后找到[5.2消息發(fā)布]-[5.2.1 數據點上報]。

如何使用MQTT協(xié)議上傳數據點到OneNET平臺


    數據類型采用JSON格式,主要看[數據類型1(type == 1)格式說明]。

如何使用MQTT協(xié)議上傳數據點到OneNET平臺


    了解完publish報文格式后,找到之前[接入OneNET平臺]教程的程序,添加上上傳數據點的功能即可。
    程序下載地址:https://github.com/TPYBoard/developmentBoard/tree/master/TPYBoard-v20x-master/TPYBoard v202 典型實例/09.MQTT協(xié)議接入OneNET平臺。


    修改mqtt.py文件,如下:

from simple import MQTTClient

from machine import Pin

import machine

import micropython

import json

#選擇G4引腳

g4 = Pin(4, Pin.OUT, value=0)

# MQTT服務器地址域名為:183.230.40.39,不變

SERVER = "183.230.40.39"

#設備ID

CLIENT_ID = "deviceID"

#隨便起個名字

TOPIC = b"TurnipRobot"

#產品ID

username='productID'

#產品APIKey:

password='APIKey'

state = 0

#要上報的數據點

message = {'datastreams':[{

'id':'temperature',

'datapoints':[{'value':35}]}

]}

def pubdata(data):

    j_d = json.dumps(data)

    j_l = len(j_d)

    arr = bytearray(j_l + 3)

    arr[0] = 1 #publish數據類型為json

    arr[1] = int(j_l / 256) # json數據長度 高位字節(jié)

    arr[2] = j_l % 256      # json數據長度 低位字節(jié)

    arr[3:] = j_d.encode('ascii') # json數據

    return arr

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))

    #publish報文上傳數據點

    c.publish('$dp',pubdata(message))

    print('publish message:',message)

    try:

        while 1:

            c.wait_msg()

    finally:

        c.disconnect()


    程序解析:

def pubdata(data):

    j_d = json.dumps(data)

    j_l = len(j_d)

    arr = bytearray(j_l + 3)

    arr[0] = 1 #publish數據類型為json

    arr[1] = int(j_l / 256) # json數據長度 高位字節(jié)

    arr[2] = j_l % 256      # json數據長度 低位字節(jié)

    arr[3:] = j_d.encode('ascii') # json數據

    return arr


    我們自定義一個pubdata方法,該方法的功能是組合成協(xié)議要求的報文格式。
    c.publish('$dp',pubdata(message))
    設備使用publish報文來上傳數據點。$dp為系統(tǒng)上傳數據點的指令(2個字節(jié)的字符串)。


    運行結果:

如何使用MQTT協(xié)議上傳數據點到OneNET平臺


    找到設備管理頁面,在tpyboardv202設備信息的操作列中,點擊[查看詳情]。

如何使用MQTT協(xié)議上傳數據點到OneNET平臺


    選擇[數據展示],

如何使用MQTT協(xié)議上傳數據點到OneNET平臺


    選擇數據流[temperature]信息行的最右側展開小三角,查看詳細數據點。

如何使用MQTT協(xié)議上傳數據點到OneNET平臺

如何使用MQTT協(xié)議上傳數據點到OneNET平臺

到此,相信大家對“如何使用MQTT協(xié)議上傳數據點到OneNET平臺”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!

向AI問一下細節(jié)

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

AI