使用DTP的MQTT插件对接
使用步科 Kinco DToolsPro 软件中 MQTT 功能连接 M-IoT 平台
前提条件
- 用户至少具备一台步科
F2/G2/GL2系列的触摸屏硬件,且触摸屏具有连接互联网的条件(以太网 / WiFi / 4G 网络均可)。本案例中选择的触摸屏型号为 G2070E; - 用户电脑已安装
Kinco DToolsPro V1.9.0及以上版本的组态软件,并能正常使用; - 用户已拥有
Kinco M-IoT平台管理权限的账号。
配置流程图
操作步骤
1. 创建物模型
- 名称、机型:指的是设备相关信息
- 模块数:这里是指一台设备的采集终端数量。一般是
1
2. Dtools Pro 打开MQTT模块
目前使用标准 MQTT 功能连接 M-IoT 平台
3. 设置 MQTT 连接信息
- 基础信息(云平台的 MQTT 连接信息)
- MQTT 客户端版本: MQTT V3.1.1
- 连接地址: da.m-iot.net
- 连接端口: 2883
- 客户端 ID: dau:%2
- 用户名: dau
- 密码: 云平台个人信息的 MQTT 连接信息中查看
- 消息格式
- 发布
- 报文格式:
{"ts":%t,"dn":"%2",%C} - 数据格式:
"%N":%V
- 报文格式:
- 订阅
- 报文格式:
{%C} - 数据格式:
"%N":%V
- 报文格式:
- 发布
4. 设备注册
- 主题属性
- 主题:
m3c/dau/evt/boot - 发送模式: 连接成功后触发
- 内容格式: 自定义报文格式
- 报文格式:
{"ts":%t,"dn":"%2",%C,"mk":"model key","un":0}- mk: 自己创建的物模型 ID
- 数据格式:
"%N":%V
- 报文格式:
- 主题:
- 参数列表
- 设备名: 平台里面的设备名(内容为空时,平台不会注册本设备)
- 名称:
mach_no - 数据类型: 字符串
- 名称:
- 设备名: 平台里面的设备名(内容为空时,平台不会注册本设备)
5. 设备控制参数上报
- 主题属性
- 主题:
m3c/dau/evt/mach - 发送模式: 数据改变时触发
- 内容格式: 自定义报文格式
- 报文格式:
{"ts":%t,"dn":"%2",%C} - 数据格式:
"%N":%V
- 报文格式:
- 主题:
- 参数列表
- 设备运行状态: 设备运行状态
- 名称:
mach_sts - 数据类型: 8 位无符号数
- 必须存在,平台定义内容(0:待机;1:运行;2:故障;)
- 名称:
- 设备运行状态: 设备运行状态
6. 定时上报数据
目前还没有直接设置定时发送的模式(后续会增加相关发送模式),通过增加
内存变量和全局控制,来实现定时功能
-
新建一个
内存变量,数据类型是位。作为定时上报的触发条件 -
在
全局控制中,新增一个控制
- 触发设置
- 运行状态:运行时
- 触发条件:始终触发
- 执行方式:一直执行
- 执行间隔:6000 * 100 毫秒 = 10 分钟(平台接收数据频率最高为 1 次/分钟)
- 动作设置
- 操作模式:位
- 执行设置:取反
- 变量:选择上面新建的
内存变量
- 主题属性
- 主题:
m3c/dau/evt/sync - 发送模式: 触发变量
- 触发方式:
关->开(自动恢复) - 触发变量:上面步骤新建的
内存变量
- 触发方式:
- 内容格式: 自定义报文格式
- 报文格式:
{"ts":%t,"dn":"%2",%C} - 数据格式:
"%N":%V
- 报文格式:
- 主题:
- 参数列表
- 需要上报的所有参数
7. 故障上报
- 主题属性
- 主题:
m3c/dau/evt/errs - 发送模式: 数据改变时触发
- 内容格式: 自定义报文格式
- 报文格式:
{"ts":%t,"dn":"%2",%C} - 数据格式:
"%N":%V
- 报文格式:
- 主题:
- 参数列表
- 故障参数的数据类型是
位
- 故障参数的数据类型是
8. 设备参数下发
设备参数下发分为以下步骤:
- 设备订阅消息,平台发送响应消息,设备接收消息
- 设备接收消息后,向平台发送确认消息。
- 平台接收到消息,确认下发任务完成
8.1 设备订阅
MQTT主题订阅- 主题属性
- 主题:
m3c/das/cmd/conf/dau:%2 - 内容格式: 自定义报文格式
- 报文格式:
{%C} - 数据格式:
"%N":%V
- 报文格式:
- 主题:
- 接收参数列表
- 系统参数(固定参数,必须存在)
- 1.订阅接收后触发发送确认消息
- 名称:
req - 数据类型:位
- 内存变量,默认值是
0,平台下发的固定值1,接收数据后,0->1,触发发送确认消息,确认消息发送后,值重新设置为0
- 名称:
- 2.平台下发任务号
- 名称:
rid - 数据类型:32 位无符号数
- 发送确认消息时,本参数需要原值发送给平台
- 名称:
- 3.平台下发任务标识
- 名称:
cmd - 数据类型:字符串
- 发送确认消息时 ,本参数需要原值发送给平台
- 名称:
- 1.订阅接收后触发发送确认消息
- 自定义参数
- 接收的参数,一定是来源于
设备控制参数上报的参数
- 接收的参数,一定是来源于
- 系统参数(固定参数,必须存在)
8.2 订阅接收成功的通知
MQTT主题发布- 主题属性
- 主题:
m3c/dau/ack/conf - 发送模式: 触发变量
- 触发方式:
关->开(自动恢复) - 触发变量:
订阅接收的系统参数 req
- 触发方式:
- 内容格式: 自定义报文格式
- 报文格式:
{"dn":"%2",%C} - 数据格式:
"%N":%V
- 报文格式:
- 主题:
- 参数列表(固定 2 个参数)
- 订阅任务ID
- 名称:
rid - 数据类型:32 位无符号数
订阅接收的系统参数 rid(需要把平台下发的内容发还给平台)
- 名称:
- 订阅方法标识
- 名称:
cmd - 数据类型:字符串
订阅接收的系统参数 cmd(需要把平台下发的内容发还给平台)
- 名称:
- 订阅任务ID
9. 模型导入到云平台
- 将 MQTT 工程的配置导出到本地,默认文件名是
MQTT.json
- 打开平台的物模型管理画面,在模型的
配置信息中,点击DTP导入,导入MQTT.json文件
- 如果导入存在错误,请参考错误信息,修改工程的 MQTT 相关设置,然后重新导出再导入
10. 样例工程
DTP工具内部存在模板工程
