温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何使用MQTT协议上传数据点到OneNET平台

发布时间:2021-12-07 09:22:57 来源:亿速云 阅读:2703 作者:iii 栏目:互联网科技

本篇内容主要讲解“如何使用MQTT协议上传数据点到OneNET平台”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用MQTT协议上传数据点到OneNET平台”吧!


    准备工作


    TPYBoard v202开发板(33元某宝可以买到)
    USB数据线
    电脑
    NotePad ++ 软件(其他编辑工具也可以)
    MicroPython File Uploader(MFU)软件
    浏览器(谷歌浏览器为例)


    OneNET平台新建数据流


    OneNET平台官网地址:<https://open.iot.10086.cn/>。
    若没有使用过的该平台的,可以参考上面前言中的教程,先进行产品和设备的添加。
    在数据点上报之前,我们需要在OneNET云平台上添加一个数据流模板。步骤如下:
    1、进入[开发者中心]的[设备管理]页面,在左侧菜单栏中选择[数据流模板],点击[添加数据流]。

如何使用MQTT协议上传数据点到OneNET平台


    2、会弹出一个添加数据流的对话框,必填项名称,其他可以选填,填完之后点击[添加]。

如何使用MQTT协议上传数据点到OneNET平台


    3、添加成功后,对话框会自动关闭。数据流展示列表会自动增加刚才新添加的数据流信息。
    到此,数据流模块就建立完成了。

如何使用MQTT协议上传数据点到OneNET平台


    向OneNET平台上传数据点


    接下来就要进行数据点的上传了。上传数据点时需要参考协议规则说明,大家可以去OnetNET平台文档中心上下载,OnetNET平台文档中心地址:https://open.iot.10086.cn/doc/art431.html#118。
    找到[1.1 说明文档]找到关于MQTT项目中的设备终端接入协议-MQTT进行下载。

如何使用MQTT协议上传数据点到OneNET平台


    下载的是一个word文档,打开之后找到[5.2消息发布]-[5.2.1 数据点上报]。

如何使用MQTT协议上传数据点到OneNET平台


    数据类型采用JSON格式,主要看[数据类型1(type == 1)格式说明]。

如何使用MQTT协议上传数据点到OneNET平台


    了解完publish报文格式后,找到之前[接入OneNET平台]教程的程序,添加上上传数据点的功能即可。
    程序下载地址:https://github.com/TPYBoard/developmentBoard/tree/master/TPYBoard-v20x-master/TPYBoard v202 典型实例/09.MQTT协议接入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数据长度 高位字节

    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)

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数据长度 高位字节

    arr[2] = j_l % 256      # json数据长度 低位字节

    arr[3:] = j_d.encode('ascii') # json数据

    return arr


    我们自定义一个pubdata方法,该方法的功能是组合成协议要求的报文格式。
    c.publish('$dp',pubdata(message))
    设备使用publish报文来上传数据点。$dp为系统上传数据点的指令(2个字节的字符串)。


    运行结果:

如何使用MQTT协议上传数据点到OneNET平台


    找到设备管理页面,在tpyboardv202设备信息的操作列中,点击[查看详情]。

如何使用MQTT协议上传数据点到OneNET平台


    选择[数据展示],

如何使用MQTT协议上传数据点到OneNET平台


    选择数据流[temperature]信息行的最右侧展开小三角,查看详细数据点。

如何使用MQTT协议上传数据点到OneNET平台

如何使用MQTT协议上传数据点到OneNET平台

到此,相信大家对“如何使用MQTT协议上传数据点到OneNET平台”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI