App快速配置MQTT

在宜启智控 App 中,您可以轻松配置 MQTT 服务器参数,以及数据项主动上报规则。

MQTT 配置入口

MQTT 配置入口

MQTT 配置页面

MQTT 配置页面

SSL / TLS 证书配置

SSL / TLS 证书配置

数据项主动上报规则

数据项主动上报规则

协议概述

宜启智控支持标准MQTT协议,MQTT版本:V3.1.1,QoS等级:QoS 0,可对接任意MQTT Broker,包括:

  • 阿里云IoT
  • 腾讯云IoT
  • 巴法云
  • ThingsCloud
  • ThingsBoard
  • Home Assistant
  • EMQX
  • 自建私有MQTT服务器

数据上报格式

设备上报采用 JSON 格式,并遵循以下数据同步规范:

初始化 首次连接成功后,立即上报全量数据
增量更新 仅在数据点发生变化时,主动上报变更字段
自定义 上报逻辑可通过 App 内“数据同步云端”精准配置。
{
  "devNameA": [{              // 设备名称,格式:yq_MainId_subId;其中yq为固定字符串,
                              // MainId:为16进制的宜启智控设备ID,subId:为16进制Mesh子设备ID;eg:yq_A755_0
    "o": [states, size],      // states: 开关状态,二进制位代表一个输出的状态,0:关闭,1:开启;size:输出路数
    "p": [onoffs,inverses,p0,h0,pr0,hr0,...,pN,hN,prN,hrN],
                              // PWM状态,onoffs: 开关状态,二进制位代表输出的状态,0:关闭,1:开启;
                              // inverses:占空比反向,二进制位代表输出的状态,0:正向,1:反向;
                              // pN:第N路占空比(放大100倍);hN:第N路频率;prN:第N路占空比加减速速率;hrN:第N路频率加减速速率
    "i": [onoffs,pulse0,hz0,...,pulseN,hzN],
                              // 输入状态,onoffs: 开关量开关状态,二进制位代表输出的状态,0:静默,1:激活;
                              // pulseN:第N路脉冲计数;hzN:第N路频率值;
    "t": [t1, t2, humi],      // 环境数据。t1:温度1(DS18B20);t2:温度2(SHT30);humi:湿度(SHT30)
    "a": [a1, a2, a3],        // 模拟量输入映射值(放大了100倍),a1:模拟量1;a2:模拟量2;a3:模拟量3
    "c": [c1, c2, ..., c16],  // 计数器值。16个Int32类型的计数器当前值
    "r": rfValue,             // 接收到的433MHz遥控信号。高20位为遥控器ID,低4位为按键值
    "s": states,              // 设备内部状态。bit0:启动, bit1:蓝牙连接, bit2:蓝牙断开
    "mb": [states, size],     // RS485读取到的线圈/离散量输入状态,states: 二进制位代表状态,0:关闭,1:开启; size:数量
    "mv": [v1, v2, ...,valN], // RS485读取到的保持/输入寄存器数值,valN:第N个值
    "v": [fVer, uVer, dVer]   // 版本号。fVer:框架固件;uVer:用户逻辑;dVer:驱动固件;(仅首次连接成功上报)
  }],
        ...,
    "devNameN":[{...}],
}

上报报文示例

{
  "yq_6809_0": [{
    "o": [10, 6],
    "i": [4, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0],
    "c": [500, 500, 0, 0, 0, 0, 0, 398, 0, 0, 0, 0, 0, 0, 0, 0],
    "p": [1, 0, 0, 500, 0, 0, 10000, 500, 0, 0, 10000, 500, 0, 0, 10000, 500, 0, 0],
    "t": [0, 16, 43],
    "a": [115, 0, 0],
    "v": [83, 1767745693, 3],
    "mb": [0, 0],
    "mv": []
  }]
}

下发控制命令

下发控制数据格式(单个控制命令)

{
  "device": "devName",// devName:设备名,示例:"yq_6809_0"
  "data": {
    "id": 1,// 消息ID,自增
    "method": "",// 控制方法,示例:"so"
    "params": {}// 控制参数,根据控制方法不同而不同
}

下发控制数据格式(多个控制命令)

{
  "device": "yq_A755_0",
  "data": [
    { "id": 1, "method": "so", "params": [228, 0] },// 控制命令1
    { "id": 2, "method": "sp", "params": [0, 1, 0, 5000, 1000, 0, 0] }// 控制命令2
  ]
}

开关控制 (so) 控制继电器开关输出状态

"method": "so",// set output 
"params": [value0, value1]
    //value0:0-16个开关控制值,value1:保留,默认0。
    //value0的2进制值每2位对应1个输出: 00=不动作, 01=关, 10=开, 11=切换
    //示例:value0 = 228 = 0b 11 10 01 00
    //开关1: 00 = 不动作
    //开关2: 01 = 关闭
    //开关3: 10 = 打开  
    //开关4: 11 = 切换
    //其它开关:00 = 不动作
//示例代码:控制开关3打开,其它开关不动作
{ "device": "yq_6809_0", "data": { "id": 1, "method": "so", "params": [32, 0] } }

PWM控制 (sp) 控制PWM输出的占空比、频率及渐变速率

"method": "sp",// set pwm 
"params": [idx, onoff, inverse, pwm, hz, pwmRate, hzRate]
    // idx: PWM索引 (0开始)
    // onoff: 0=关, 1=开, 2=切换
    // inverse: 0=正向, 1=反向
    // pwm: 占空比 0-10000 (实际0-100.00%)
    // hz: 频率 1-150000Hz
    // pwmRate: 占空比渐变速率 0-10000/s(实际0-100.00%/s)
    // hzRate: 频率渐变速率 0-100000Hz/s
    // 设为-1表示保持原值
//示例代码:控制PWM1点空比为80%,其它参数保持原值
{ "device": "yq_6809_0", "data": { "id": 1, "method": "sp", "params": [1, -1, -1, 8000, -1, -1, -1] } }

计数器控制 (sc) 设置或修改设备内部的16个计数器值(参数值)

"method": "sc",// set counter 
"params": [idxN,typeN,valueN,...]
    // idx: 计数器索引 0-15
    // type: 操作类型 0=设置,直接设置数值; 1=递增,在当前值基础上递增; 2=递减,在当前值基础上递减
    // value: 操作的具体数值 (Int32)
//示例代码:计数器3设置为12345,计数器4递增8899
{ "device": "yq_6809_0", "data": { "id": 1, "method": "sc", "params": [2, 0, 12345, 3, 1, 8899] } }

RF433遥控器控制 (sr) 发送433MHz的射频信号以遥控控制相应的接收设备或模拟遥控器按钮

"method": "sr",// set RF 
"params": [idx, rfValue]
    // idx: 遥控器索引
    //0~9: 对应硬件预设遥控器1~10
    //10~19: 对应设备学习到的遥控器11~19
    //-1: 使用自定义rfValue (高20位ID + 低4位键值)
    //rfValue: 433MHz按键值 (0~15)
//示例代码:按下遥控器3的按钮3
{ "device": "yq_6809_0", "data": { "id": 1, "method": "sr", "params": [2, 3] } }

获取全量数据 (gd) 获取设备的所有数据

"method": "gd",// get data 
"params": dataType
    // dataType: 想要获取的数据类型,以全量数据上报
    //0: 基础数据 (开关、输入、PWM、温湿度、ADC、计数器、Modbus数据)
//示例代码:获取基础数据
{ "device": "yq_6809_0", "data": { "id": 1, "method": "gd", "params": 0 } }

执行"一键执行"任务 (ro)

"method": "ro",// run oneKeyTask 
"params": taskId // 任务ID (在APP中可见)
//示例代码:执行任务ID为12的"一键执行"任务
{ "device": "yq_6809_0", "data": { "id": 1, "method": "ro", "params": 12 } }

启用/禁用自动化任务或时间任务 (se)

"method": "se",//set enable 
"params": [taskId, enable]  //taskId:要控制的任务ID; enable: 0:禁用,1启用
//示例代码:禁用任务ID为13的任务
{ "device": "yq_6809_0", "data": { "id": 1, "method": "se", "params": [13,0] } }

中止正在执行延时的任务 (sd)

"method": "sd",//stop delay 
"params": id  // 要中止的任务ID, 若此任务没在执行,则无效果
//示例代码:中止任务ID为14的任务
{ "device": "yq_6809_0", "data": { "id": 1, "method": "sd", "params": 14 } }

开关量输入的脉冲计数清零 (cp)

"method": "cp",//clear pulse 
"params": idx  //要清零的开关量输入索引值
//示例代码:清零输入2的脉冲计数
{ "device": "yq_6809_0", "data": { "id": 1, "method": "cp", "params": 1 } }

系统命令

重启设备 (rb)

"method": "rb",//reboot 
"params": 1//1:重启
//示例代码:重启设备
{ "device": "yq_6809_0", "data": { "id": 1, "method": "rb", "params": 1 } }

设置/修改源来智能APP设备使用的密码(sk)

"method": "sk",//set key 
"params": [admin, user]//admin: 管理员密码,user: 用户密码;若任意一个设置为0,则清除密码
//示例代码:设置管理员密码为123456,用户密码为654321
{ "device": "yq_6809_0", "data": { "id": 1, "method": "sk", "params": [123456, 654321] } }

OTA远程升级 (ot)

⚠️ 谨慎操作

  • 升级成功后设备将自动重启,请评估现场风险。
  • 请确保固件版本正确且稳定,避免死机或功能异常。
  • 升级过程中必须保证网络(2.4G WiFi)和供电极其稳定。
  • MQTT版本的设备更新用户逻辑固件时,固件需包含MQTT配置,否则会导致丢失连接。
"method": "ot",//ota 
"params": [binType, url, wifiName, wifiPsw]
    // binType: 固件类型
    //  "0": Framework框架固件 (要求版本号 > 82)
    //  "1": 用户逻辑固件 (更新后会连接固件内的MQTT)
    //  "2": 用户逻辑固件 (永久生效)
    //  "3": 驱动固件
    // url: 固件文件的下载直链地址
    // wifiName: 现场2.4G WiFi名称
    // wifiPsw: 现场WiFi密码
//示例代码:升级用户逻辑固件
{ "device": "yq_6809_0", "data": { "id": 1, "method": "ot", "params": ["1", "http://example.com/firmware.bin", "WiFiName", "WiFiPassword"] } }

升级完成后,可通过设备上报的 v 字段验证版本号是否已更新,从而确认升级是否成功。

需要接入物联网平台?

查看平台接入教程 →