久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4444|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

[MicroPython]TPYBoard v202 MQTT協(xié)議2:上傳數(shù)據(jù)點(diǎn)到OneNET平臺

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
    前言

    在之前的教程中,學(xué)習(xí)過如何使用MQTT協(xié)議接入OneNET平臺,同時(shí)獲取該平臺下發(fā)的命令實(shí)現(xiàn)遠(yuǎn)程控制的功能。若之前沒有接觸過MQTT協(xié)議和OneNET平臺的朋友,建議先學(xué)習(xí)之前的教程
    本次教程,將要學(xué)習(xí)如何在OneNET平臺上新建數(shù)據(jù)流,同時(shí)使用MQTT協(xié)議中publish報(bào)文格式上傳數(shù)據(jù)點(diǎn)。

    準(zhǔn)備工作

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

    OneNET平臺新建數(shù)據(jù)流

    OneNET平臺官網(wǎng)地址
    若沒有使用過的該平臺的,可以參考上面前言中的教程,先進(jìn)行產(chǎn)品和設(shè)備的添加。
    在數(shù)據(jù)點(diǎn)上報(bào)之前,我們需要在OneNET云平臺上添加一個(gè)數(shù)據(jù)流模板。步驟如下:
    1、進(jìn)入[開發(fā)者中心]的[設(shè)備管理]頁面,在左側(cè)菜單欄中選擇[數(shù)據(jù)流模板],點(diǎn)擊[添加數(shù)據(jù)流]。




    2、會彈出一個(gè)添加數(shù)據(jù)流的對話框,必填項(xiàng)名稱,其他可以選填,填完之后點(diǎn)擊[添加]。




    3、添加成功后,對話框會自動關(guān)閉。數(shù)據(jù)流展示列表會自動增加剛才新添加的數(shù)據(jù)流信息。




    到此,數(shù)據(jù)流模塊就建立完成了。
    向OneNET平臺上傳數(shù)據(jù)點(diǎn)
    接下來就要進(jìn)行數(shù)據(jù)點(diǎn)的上傳了。上傳數(shù)據(jù)點(diǎn)時(shí)需要參考協(xié)議規(guī)則說明,大家可以去OnetNET平臺文檔中心上下載,OnetNET平臺文檔中心地址:https://open.iot.10086.cn/doc/art431.html#118
    找到[1.1 說明文檔]找到關(guān)于MQTT項(xiàng)目中的設(shè)備終端接入?yún)f(xié)議-MQTT進(jìn)行下載。




    下載的是一個(gè)word文檔,打開之后找到[5.2消息發(fā)布]-[5.2.1 數(shù)據(jù)點(diǎn)上報(bào)]。




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




    了解完publish報(bào)文格式后,找到之前[接入OneNET平臺]教程的程序,添加上上傳數(shù)據(jù)點(diǎn)的功能即可。
    程序下載地址:https://github.com/TPYBoard/deve ... 20x-master/TPYBoard v202 典型實(shí)例/09.MQTT協(xié)議接入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服務(wù)器地址域名為:183.230.40.39,不變
SERVER ="183.230.40.39"
#設(shè)備ID
CLIENT_ID ="deviceID"
#隨便起個(gè)名字
TOPIC =b"TurnipRobot"
#產(chǎn)品ID
username='productID'
#產(chǎn)品APIKey:
password='APIKey'
state = 0
#要上報(bào)的數(shù)據(jù)點(diǎn)
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數(shù)據(jù)類型為json
    arr[1] = int(j_l / 256) # json數(shù)據(jù)長度 高位字節(jié)
    arr[2] = j_l % 256      # json數(shù)據(jù)長度 低位字節(jié)
    arr[3:] = j_d.encode('ascii') # json數(shù)據(jù)
    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報(bào)文上傳數(shù)據(jù)點(diǎn)
    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數(shù)據(jù)類型為json
    arr[1] = int(j_l / 256) # json數(shù)據(jù)長度 高位字節(jié)
    arr[2] = j_l % 256      # json數(shù)據(jù)長度 低位字節(jié)
    arr[3:] = j_d.encode('ascii') # json數(shù)據(jù)

    return arr

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

    運(yùn)行結(jié)果:




    找到設(shè)備管理頁面,在tpyboardv202設(shè)備信息的操作列中,點(diǎn)擊[查看詳情]。




    選擇[數(shù)據(jù)展示],




    選擇數(shù)據(jù)流[temperature]信息行的最右側(cè)展開小三角,查看詳細(xì)數(shù)據(jù)點(diǎn)。





    大家可根據(jù)上面學(xué)習(xí)到的內(nèi)容進(jìn)行擴(kuò)展,比如接DHT11溫濕度模塊等各類傳感器,上傳溫濕度、氣壓、光照等信息。
    OneNET云平臺除了支持MQTT協(xié)議外,還支持HTTP、TCP透傳等多種協(xié)議,大家可以嘗試添加其他協(xié)議的產(chǎn)品進(jìn)行智能物聯(lián)的開發(fā)。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:565137 發(fā)表于 2019-6-17 22:42 | 只看該作者
感覺你的教程
但是 這個(gè) onenet怎么發(fā)送心跳包啊!
我網(wǎng)絡(luò)斷開后 還顯示鏈接
但是消息上傳上去服務(wù)器收不到
服務(wù)器下發(fā)的命令客戶端也收不到

比如我WIFI不斷 光貓重啟下  
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 每日更新av | 亚洲乱码一区二区三区在线观看 | 在线观看免费av网 | 亚洲视频免费在线观看 | 综合网中文字幕 | 91视频精选| 不卡欧美 | 欧美日韩一区二区三区不卡视频 | 天堂一区二区三区 | 久久精品国产一区二区电影 | 欧美一级网站 | 性福视频在线观看 | 亚洲狠狠丁香婷婷综合久久久 | 欧美日韩电影一区二区 | 久久久久国产精品一区三寸 | 天天色av| 国产乱码高清区二区三区在线 | 色综合色综合色综合 | 伊人伊人伊人 | 天天亚洲 | 中文字幕在线观看www | www.嫩草 | 精品国产一区二区国模嫣然 | 成人午夜免费视频 | 午夜成人在线视频 | 99精品欧美一区二区三区综合在线 | 精品日本中文字幕 | www.亚洲精品 | 日韩精品国产精品 | 第四色狠狠 | 91精品久久久久久久久中文字幕 | 精品一二区 | 成人日韩 | 国产精品国产三级国产播12软件 | 欧美一区二区三区在线观看 | 国产999精品久久久久久 | 午夜视频在线免费观看 | av黄色在线| 在线视频a | 久草资源在线视频 | 欧美日一区二区 |