欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4581|回復: 1
收起左側

[MicroPython]TPYBoard v202 MQTT協議2:上傳數據點到OneNET平臺

[復制鏈接]
ID:130183 發表于 2018-9-14 10:58 | 顯示全部樓層 |閱讀模式
    前言

    在之前的教程中,學習過如何使用MQTT協議接入OneNET平臺,同時獲取該平臺下發的命令實現遠程控制的功能。若之前沒有接觸過MQTT協議和OneNET平臺的朋友,建議先學習之前的教程
    本次教程,將要學習如何在OneNET平臺上新建數據流,同時使用MQTT協議中publish報文格式上傳數據點。

    準備工作

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

    OneNET平臺新建數據流

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

01.png


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

02.png


    3、添加成功后,對話框會自動關閉。數據流展示列表會自動增加剛才新添加的數據流信息。

03.png


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

04.png


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

05.png


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

06.png


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

    修改mqtt.py文件,如下:

from simple importMQTTClient
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數據長度 高位字節
    arr[2] = j_l % 256      # json數據長度 低位字節
    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)

defmain(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數據長度 高位字節
    arr[2] = j_l % 256      # json數據長度 低位字節
    arr[3:] = j_d.encode('ascii') # json數據

    return arr

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

    運行結果:

07.png


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

08.png


    選擇[數據展示],

09.png


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

10.png
11.png


    大家可根據上面學習到的內容進行擴展,比如接DHT11溫濕度模塊等各類傳感器,上傳溫濕度、氣壓、光照等信息。
    OneNET云平臺除了支持MQTT協議外,還支持HTTP、TCP透傳等多種協議,大家可以嘗試添加其他協議的產品進行智能物聯的開發。

回復

使用道具 舉報

ID:565137 發表于 2019-6-17 22:42 | 顯示全部樓層
感覺你的教程
但是 這個 onenet怎么發送心跳包啊!
我網絡斷開后 還顯示鏈接
但是消息上傳上去服務器收不到
服務器下發的命令客戶端也收不到

比如我WIFI不斷 光貓重啟下  
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表