App快速配置MQTT
在宜启智控 App 中,您可以轻松配置 MQTT 服务器参数,以及数据项主动上报规则。
MQTT 配置入口
MQTT 配置页面
SSL / TLS 证书配置
数据项主动上报规则
协议概述
宜启智控支持标准MQTT协议,MQTT版本:V3.1.1,QoS等级:QoS 0,可对接任意MQTT Broker,包括:
数据上报格式
设备上报采用 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 字段验证版本号是否已更新,从而确认升级是否成功。
需要接入物联网平台?
查看平台接入教程 →