• DGIOT国内首家轻量级物联网开源平台——MQTT接入实战教程


    [小 迪 导读]
    本教程通过全链路虚拟环境讲述如何用DG-IoT开源工业物联网平台完成MQTT的接入,在掌握基础概念和业务流程之后,通过模拟软件来进行模拟演练。

    系统需要使用的一个软件:

    • MQTT X:MQTT X 是EMQ 开源的一款跨平台 MQTT 5.0 客户端工具,它支持 macOS, Linux, Windows,并且支持 MQTT 消息格式转换。

    系统架构逻辑图如下,包括设备模拟,通道通信,模型设置,应用显示部分

    操作步骤:

    本次连接先介绍平台产品及物模型的配置再介绍MQTTX。
    [小 迪 提醒]

    • 平台将MQTT融合到dgiot的DLink协议中,可以不进行创建通道,直接使用默认的MQTT通道即可。

    1.创建产品

    1.要连接MQTT,创建一种产品即可
    2.创建产品

    mqtt

    [小 迪 提醒]

    • 产品添加通道后需对相应的通道进行重启

    3.产品物模型配置
    进入产品详情
    file
    将以下物模型代码直接复制即可

    • MQTT物模型范例(不选择DLink协议)
    {
        "properties": [
            {
                "accessMode": "r",
                "dataForm": {
                    "address": "0X10",
                    "collection": "%s",
                    "control": "%d",
                    "countcollection": "%s",
                    "countround": "all",
                    "countstrategy": 20,
                    "data": "null",
                    "iscount": "0",
                    "offset": 0,
                    "operatetype": "readCoils",
                    "order": 0,
                    "originaltype": "short16_AB",
                    "protocol": "",
                    "rate": 1,
                    "round": "all",
                    "slaveid": "0X10",
                    "strategy": "主动上报"
                },
                "dataSource": {
                    "": []
                },
                "dataType": {
                    "das": [],
                    "specs": {
                        "max": 100,
                        "min": 0,
                        "precision": 3,
                        "step": 0,
                        "unit": "℃"
                    },
                    "type": "float"
                },
                "devicetype": "温度",
                "identifier": "temp",
                "isaccumulate": false,
                "isshow": true,
                "isstorage": true,
                "moduleType": "properties",
                "name": "温度",
                "required": true,
                "updateAt": "1661313208982",
                "index": 0
            }
        ]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50

    也可以新增自定义物模型
    file

    • MQTT物模型范例(选择DLink协议)
    {
        "properties": [
            {
                "accessMode": "r",
                "dataForm": {
                    "address": "0X10",
                    "afn": "",
                    "byteType": "",
                    "bytelen": "",
                    "collection": "%s",
                    "control": "%d",
                    "countcollection": "%s",
                    "countround": "all",
                    "countstrategy": 20,
                    "da": "",
                    "data": "null",
                    "dt": "",
                    "iscount": "0",
                    "offset": 0,
                    "operatetype": "readCoils",
                    "order": 0,
                    "originaltype": "short16_AB",
                    "protocol": "DLINK",
                    "rate": 1,
                    "round": "all",
                    "slaveid": "0X10",
                    "strategy": "主动上报"
                },
                "dataSource": {
                    "_dlinkindex": "",
                    "dis": [
                        {
                            "data": "2",
                            "key": "temperature",
                            "undefined": "2"
                        }
                    ]
                },
                "dataType": {
                    "das": [],
                    "specs": {
                        "max": 100,
                        "min": 0,
                        "precision": 3,
                        "step": 0,
                        "unit": "℃"
                    },
                    "type": "float"
                },
                "devicetype": "温度",
                "identifier": "temp",
                "isaccumulate": false,
                "isshow": true,
                "isstorage": true,
                "moduleType": "properties",
                "name": "温度",
                "required": true,
                "updateAt": "1661313524032",
                "index": 0
            }
        ]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62

    也可以新增自定义物模型

    4.如何复制物模型

    在产品管理-配置-物模型-查看物模型处

    将物模型代码复制粘贴即可

    2.MQTTX下载配置

    1)、下载安装MQTTX
    2)、配置连接参数。

    file

    参数解释
    名称任取即可
    Client ID{DeviceAddr}也即设备编号
    服务器地址服务器地址
    端口填写1883
    用户名产品id(位置见下图)
    密码产品密钥(位置见下图)

    file

    填写完成后选择连接。则会在对应产品下自动创建我们定义的设备,可在设备管理中查看:

    file

    3)、发送信息。

    file

    在MQTTX中向平台发送信息,报文格式选择为JSON。
    Topic:
         $dg/thing/{productid}/{deviceAddr}/properties/report

    报文内容:
        {
            “标识符”:值
            “标识符”:值
            ····
            “标识符”:值
        }

    topic中需明确发送信息对应的产品和设备,其中{productid}为产品id,与连接阶段输入的用户名为同一个,{deviceAddr}为设备地址,也即自定义的设备名。
    由topic确认了产品与设备后在报文的具体内容中传递属性值。由标识符确认要传递那个属性,并使用””扩起,在:后填写属性的具体数值。随后选择发送即可查看到产品的实时数据。

    file

    [小 迪 点评]

    • dgiot支持MQTT协议的设备接入,方便没有真实设备的用户尝试并进行模拟设备接入演练。

    想了解更多 dgiot 的具体细节,欢迎大家在GitHub上查看相关源代码。

  • 相关阅读:
    OCR使用总结
    深度学习 -- pytorch 计算图与动态图机制 autograd与逻辑回归模型
    Java刷题大全(笔试题)【大厂必备】(基础)
    关于MySQL主从复制的数据同步延迟问题
    安卓基础知识:Intent解析
    Lumerical | 针对 Grating coupler 的仿真分析方法
    修改svc的LoadBalancer的IP引发的惨案
    【毕业设计】基于Android的餐饮管理系统APP毕业设计源码
    STM32的hex文件格式的分析
    账号安全基本措施2
  • 原文地址:https://blog.csdn.net/DG_IOT/article/details/126506196