终端-网关协议(新)
<h5>简要描述</h5>
<ul>
<li>网关与云端交互协议</li>
</ul>
<h5>请求 URL</h5>
<ul>
<li>参见环境信息</li>
</ul>
<h5>请求方式</h5>
<ul>
<li>emq</li>
</ul>
<h5>SN说明</h5>
<p>高4位:
0001表示网关
0010表示保温灯
0011表示照明灯
0100表示通风盒子
低4位:
0001 表示产品类型:175W</p>
<p>示例:00100001表示产品类型为175w的保温灯设备</p>
<h5>上行协议 (异常事件上报 )</h5>
<table>
<thead>
<tr>
<th>索引</th>
<th>内容 </th>
<th>长度 </th>
<th>说明 </th>
<th>备注 </th>
</tr>
</thead>
<tbody>
<tr>
<td>0 </td>
<td>起始符 </td>
<td>1byte </td>
<td>126 </td>
<td>uint8</td>
</tr>
<tr>
<td>1 </td>
<td>命令字 </td>
<td>1byte </td>
<td>72 </td>
<td>uint8</td>
</tr>
<tr>
<td>2 </td>
<td>设备SN </td>
<td>5bytes </td>
<td> 1字节(设备类型:高4bit+产品类型:低4bit) + 1字节年份(eg.:22)+ 1字节月份(eg.:11)+2字节序列号 </td>
<td> </td>
</tr>
<tr>
<td>7 </td>
<td>上报时间 </td>
<td>4bytes </td>
<td>long型时间戳 到秒</td>
<td> </td>
</tr>
<tr>
<td>11 </td>
<td>错误码 </td>
<td>1byte </td>
<td> </td>
<td>uint8</td>
</tr>
<tr>
<td>12 </td>
<td>错误状态 </td>
<td>1byte </td>
<td> 0正常 1异常 </td>
<td>uint8</td>
</tr>
<tr>
<td>13 </td>
<td>异常值长度</td>
<td>1byte </td>
<td>异常值长度 </td>
<td> </td>
</tr>
<tr>
<td>14+ </td>
<td>异常值 </td>
<td>根据长度确定</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>14+ </td>
<td>结束符 </td>
<td>1byte </td>
<td>127 </td>
<td> </td>
</tr>
</tbody>
</table>
<h5>备注</h5>
<table>
<thead>
<tr>
<th>错误码</th>
<th>说明 </th>
</tr>
</thead>
<tbody>
<tr>
<td>9 </td>
<td>蓝牙故障 </td>
</tr>
<tr>
<td>10 </td>
<td>无故障/故障已恢复/正常 </td>
</tr>
<tr>
<td>11 </td>
<td>蓝牙通信超时 </td>
</tr>
<tr>
<td>12 </td>
<td>联网异常 </td>
</tr>
<tr>
<td>13 </td>
<td>温度传感器通道 1 故障00000001 </td>
</tr>
<tr>
<td>14 </td>
<td>温度传感器通道 2 故障00000010 </td>
</tr>
<tr>
<td>15 </td>
<td>温度传感器通道 1 未连接00100000</td>
</tr>
<tr>
<td>16 </td>
<td>温度传感器通道 2 未连接01000000</td>
</tr>
<tr>
<td>17 </td>
<td>PIC 通讯故障 00010000 </td>
</tr>
<tr>
<td>18 </td>
<td>无负载故障 00000100 </td>
</tr>
<tr>
<td>19 </td>
<td>负载过流故障 00001000 </td>
</tr>
<tr>
<td>20 </td>
<td>过温保护 10000000 </td>
</tr>
<tr>
<td>21 </td>
<td>时钟读取异常 </td>
</tr>
</tbody>
</table>
<h5>上行协议(属性上报)</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">索引</th>
<th style="text-align: left;">内容</th>
<th style="text-align: left;">长度</th>
<th style="text-align: left;">说明</th>
<th style="text-align: left;">备注</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">0</td>
<td style="text-align: left;">起始符</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;">126</td>
<td style="text-align: left;">uint8</td>
</tr>
<tr>
<td style="text-align: left;">1</td>
<td style="text-align: left;">命令字</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;">详见:<a href="https://www.showdoc.com.cn/heatLamp/8407308295119053">https://www.showdoc.com.cn/heatLamp/8407308295119053</a></td>
<td style="text-align: left;">uint8</td>
</tr>
<tr>
<td style="text-align: left;">2 </td>
<td style="text-align: left;">设备SN </td>
<td style="text-align: left;">5bytes </td>
<td style="text-align: left;"> 1字节(设备类型:高4bit+产品类型:低4bit) + 1字节年份(eg.:22)+ 1字节月份(eg.:11)+2字节序列号 </td>
<td style="text-align: left;"> </td>
</tr>
<tr>
<td style="text-align: left;">7 </td>
<td style="text-align: left;">上报时间 </td>
<td style="text-align: left;">4bytes </td>
<td style="text-align: left;">long型时间戳 到秒</td>
<td style="text-align: left;"> </td>
</tr>
<tr>
<td style="text-align: left;">11</td>
<td style="text-align: left;">联网方式</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;">0:有线;1:wifi;2:自动切换</td>
<td style="text-align: left;">unit8</td>
</tr>
<tr>
<td style="text-align: left;">12</td>
<td style="text-align: left;">有线连接状态</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;">0:已断开;1:已连接</td>
<td style="text-align: left;">unit8</td>
</tr>
<tr>
<td style="text-align: left;">13</td>
<td style="text-align: left;">wifi连接状态</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;">0:已断开;1:已连接</td>
<td style="text-align: left;">unit8</td>
</tr>
<tr>
<td style="text-align: left;">14</td>
<td style="text-align: left;">MESH组网联网状态</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;">0:已退出;1:已入网</td>
<td style="text-align: left;">unit8</td>
</tr>
<tr>
<td style="text-align: left;">15</td>
<td style="text-align: left;">结束符</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;">127</td>
<td style="text-align: left;">uint8</td>
</tr>
</tbody>
</table>
<h5>上行协议(基础信息上报:开机上报,升级上报,每隔24小时上报一次)</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">索引</th>
<th style="text-align: left;">内容</th>
<th style="text-align: left;">长度</th>
<th style="text-align: left;">说明</th>
<th style="text-align: left;">备注</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">0</td>
<td style="text-align: left;">起始符</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;">126</td>
<td style="text-align: left;">uint8</td>
</tr>
<tr>
<td style="text-align: left;">1</td>
<td style="text-align: left;">命令字</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;">49</td>
<td style="text-align: left;">uint8</td>
</tr>
<tr>
<td style="text-align: left;">2 </td>
<td style="text-align: left;">设备SN </td>
<td style="text-align: left;">5bytes </td>
<td style="text-align: left;"> 1字节(设备类型:高4bit+产品类型:低4bit) + 1字节年份(eg.:22)+ 1字节月份(eg.:11)+2字节序列号 </td>
<td style="text-align: left;"> </td>
</tr>
<tr>
<td style="text-align: left;">7 </td>
<td style="text-align: left;">上报时间 </td>
<td style="text-align: left;">4bytes </td>
<td style="text-align: left;">long型时间戳 到秒</td>
<td style="text-align: left;"> </td>
</tr>
<tr>
<td style="text-align: left;">11</td>
<td style="text-align: left;">MAC地址</td>
<td style="text-align: left;">6bytes</td>
<td style="text-align: left;">00:1B:44:11:3A:B7</td>
<td style="text-align: left;">不带冒号</td>
</tr>
<tr>
<td style="text-align: left;">17</td>
<td style="text-align: left;">硬件版本主位</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;"></td>
</tr>
<tr>
<td style="text-align: left;">18</td>
<td style="text-align: left;">硬件版本次位</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;"></td>
</tr>
<tr>
<td style="text-align: left;">19</td>
<td style="text-align: left;">软件版本主位</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;"></td>
</tr>
<tr>
<td style="text-align: left;">20</td>
<td style="text-align: left;">软件版本次位</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;"></td>
</tr>
<tr>
<td style="text-align: left;">21</td>
<td style="text-align: left;">软件版本补丁位</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;"></td>
</tr>
<tr>
<td style="text-align: left;">22</td>
<td style="text-align: left;">蓝牙版本主位</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;"></td>
</tr>
<tr>
<td style="text-align: left;">23</td>
<td style="text-align: left;">蓝牙版本次位</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;"></td>
</tr>
<tr>
<td style="text-align: left;">24</td>
<td style="text-align: left;">蓝牙版本补丁位</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;"></td>
</tr>
<tr>
<td style="text-align: left;">25</td>
<td style="text-align: left;">结束符</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;">127</td>
<td style="text-align: left;">uint8</td>
</tr>
</tbody>
</table>
<h5>上行协议(请求、成功时应答)</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">索引</th>
<th style="text-align: left;">内容</th>
<th style="text-align: left;">长度</th>
<th style="text-align: left;">说明</th>
<th style="text-align: left;">备注</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">0</td>
<td style="text-align: left;">起始符</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;">126</td>
<td style="text-align: left;">uint8</td>
</tr>
<tr>
<td style="text-align: left;">1</td>
<td style="text-align: left;">命令字</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;">53:恢复出厂设置响应;60定时任务添加响应;62定时任务修改响应;64定时任务删除响应</td>
<td style="text-align: left;">uint8</td>
</tr>
<tr>
<td style="text-align: left;">2 </td>
<td style="text-align: left;">设备SN </td>
<td style="text-align: left;">5bytes </td>
<td style="text-align: left;"> 1字节(设备类型:高4bit+产品类型:低4bit) + 1字节年份(eg.:22)+ 1字节月份(eg.:11)+2字节序列号 </td>
<td style="text-align: left;"> </td>
</tr>
<tr>
<td style="text-align: left;">7 </td>
<td style="text-align: left;">上报时间 </td>
<td style="text-align: left;">4bytes </td>
<td style="text-align: left;">long型时间戳 到秒</td>
<td style="text-align: left;"> </td>
</tr>
<tr>
<td style="text-align: left;">11 </td>
<td style="text-align: left;">响应值 </td>
<td style="text-align: left;">不定长 </td>
<td style="text-align: left;"></td>
<td style="text-align: left;"> </td>
</tr>
<tr>
<td style="text-align: left;">11+</td>
<td style="text-align: left;">结束符</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;">127</td>
<td style="text-align: left;">uint8</td>
</tr>
</tbody>
</table>
<h5>备注</h5>
<ul>
<li>对于应答,在终端设置失败时上报即可,成功无需上报。</li>
</ul>
<h5>下行协议(指令下发)</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">索引</th>
<th style="text-align: left;">内容</th>
<th style="text-align: left;">长度</th>
<th style="text-align: left;">说明</th>
<th style="text-align: left;">备注</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">0</td>
<td style="text-align: left;">起始符</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;">126</td>
<td style="text-align: left;">uint8</td>
</tr>
<tr>
<td style="text-align: left;">1</td>
<td style="text-align: left;">命令字</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">uint8</td>
</tr>
<tr>
<td style="text-align: left;">2 </td>
<td style="text-align: left;">上报时间 </td>
<td style="text-align: left;">4bytes </td>
<td style="text-align: left;">long型时间戳 到秒</td>
<td style="text-align: left;"> </td>
</tr>
<tr>
<td style="text-align: left;">6</td>
<td style="text-align: left;">组播地址</td>
<td style="text-align: left;">2bytes</td>
<td style="text-align: left;">组播地址</td>
<td style="text-align: left;">unit16</td>
</tr>
<tr>
<td style="text-align: left;">8</td>
<td style="text-align: left;">设定目标值长度</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">uint8</td>
</tr>
<tr>
<td style="text-align: left;">9+</td>
<td style="text-align: left;">目标值</td>
<td style="text-align: left;"></td>
<td style="text-align: left;"></td>
</tr>
<tr>
<td style="text-align: left;">9+</td>
<td style="text-align: left;">结束符</td>
<td style="text-align: left;">127</td>
<td style="text-align: left;">0X7F</td>
<td style="text-align: left;">uint8</td>
</tr>
</tbody>
</table>
<h5>下行协议(定时任务下发 -> 第一条用于下发任务整体信息,收到该条信息后,要用同样的命令字回复,表示已经处理了该条指令)</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">索引</th>
<th style="text-align: left;">内容</th>
<th style="text-align: left;">长度</th>
<th style="text-align: left;">说明</th>
<th style="text-align: left;">备注</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">0</td>
<td style="text-align: left;">起始符</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;">126</td>
<td style="text-align: left;">uint8</td>
</tr>
<tr>
<td style="text-align: left;">1</td>
<td style="text-align: left;">命令字</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;">70</td>
<td style="text-align: left;">uint8</td>
</tr>
<tr>
<td style="text-align: left;">2 </td>
<td style="text-align: left;">上报时间 </td>
<td style="text-align: left;">4bytes </td>
<td style="text-align: left;">long型时间戳 到秒</td>
<td style="text-align: left;"> </td>
</tr>
<tr>
<td style="text-align: left;">6</td>
<td style="text-align: left;">组播地址</td>
<td style="text-align: left;">2bytes</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">unit16</td>
</tr>
<tr>
<td style="text-align: left;">8</td>
<td style="text-align: left;">任务主状态</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">0整体任务关闭,1整体任务开启</td>
</tr>
<tr>
<td style="text-align: left;">9</td>
<td style="text-align: left;">任务类型</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">定时任务类型(0每天重复 1每周重复)</td>
</tr>
<tr>
<td style="text-align: left;">10</td>
<td style="text-align: left;">定时任务个数</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">unit8</td>
</tr>
<tr>
<td style="text-align: left;">11</td>
<td style="text-align: left;">结束符</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;">127</td>
<td style="text-align: left;">uint8</td>
</tr>
</tbody>
</table>
<h5>下行协议(定时任务下发 -> 第二条到第N条用于下发任务具体信息,收到该条信息后,要用同样的命令字回复,表示已经处理了该条指令)</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">索引</th>
<th style="text-align: left;">内容</th>
<th style="text-align: left;">长度</th>
<th style="text-align: left;">说明</th>
<th style="text-align: left;">备注</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">0</td>
<td style="text-align: left;">起始符</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;">126</td>
<td style="text-align: left;">uint8</td>
</tr>
<tr>
<td style="text-align: left;">1</td>
<td style="text-align: left;">命令字</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;">71</td>
<td style="text-align: left;">uint8</td>
</tr>
<tr>
<td style="text-align: left;">2 </td>
<td style="text-align: left;">上报时间 </td>
<td style="text-align: left;">4bytes </td>
<td style="text-align: left;">long型时间戳 到秒</td>
<td style="text-align: left;"> </td>
</tr>
<tr>
<td style="text-align: left;">6</td>
<td style="text-align: left;">组播地址</td>
<td style="text-align: left;">2bytes</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">unit16</td>
</tr>
<tr>
<td style="text-align: left;">8</td>
<td style="text-align: left;">开始时间</td>
<td style="text-align: left;">2bytes</td>
<td style="text-align: left;">一个表示时一个表示分 09:34</td>
</tr>
<tr>
<td style="text-align: left;">10</td>
<td style="text-align: left;">结束时间</td>
<td style="text-align: left;">2bytes</td>
<td style="text-align: left;">一个表示时一个表示分 13:23</td>
</tr>
<tr>
<td style="text-align: left;">12</td>
<td style="text-align: left;">启用状态 & 重复周期</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;">00000000 最高位第七位表示启用状态 第6到第0位对应周一到周日</td>
</tr>
<tr>
<td style="text-align: left;">13</td>
<td style="text-align: left;">定时任务序号</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;"></td>
</tr>
<tr>
<td style="text-align: left;">14</td>
<td style="text-align: left;">结束符</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;">127</td>
<td style="text-align: left;">uint8</td>
</tr>
</tbody>
</table>
<h5>备注</h5>
<ul>
<li>当第一条任务下发指令中任务个数为0时,表示要删除所有的定时任务</li>
</ul>
<h5>下行协议(ota版本检查结果)</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">索引</th>
<th style="text-align: left;">内容</th>
<th style="text-align: left;">长度</th>
<th style="text-align: left;">说明</th>
<th style="text-align: left;">备注</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">0</td>
<td style="text-align: left;">起始符</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;">126</td>
<td style="text-align: left;">uint8</td>
</tr>
<tr>
<td style="text-align: left;">1</td>
<td style="text-align: left;">命令字</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;">66 固件版本检查响应</td>
<td style="text-align: left;">uint8</td>
</tr>
<tr>
<td style="text-align: left;">2 </td>
<td style="text-align: left;">上报时间 </td>
<td style="text-align: left;">4bytes </td>
<td style="text-align: left;">long型时间戳 到秒</td>
<td style="text-align: left;"> </td>
</tr>
<tr>
<td style="text-align: left;">6</td>
<td style="text-align: left;">mesh地址</td>
<td style="text-align: left;">2byte</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">网关单播地址</td>
</tr>
<tr>
<td style="text-align: left;">8</td>
<td style="text-align: left;">固件版本major</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">uint8</td>
</tr>
<tr>
<td style="text-align: left;">9</td>
<td style="text-align: left;">固件版本minor</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">uint8</td>
</tr>
<tr>
<td style="text-align: left;">10</td>
<td style="text-align: left;">固件版本patch</td>
<td style="text-align: left;">1bytes</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">uint8</td>
</tr>
<tr>
<td style="text-align: left;">11</td>
<td style="text-align: left;">升级文件MD5</td>
<td style="text-align: left;">16bytes</td>
<td style="text-align: left;"></td>
</tr>
<tr>
<td style="text-align: left;">27</td>
<td style="text-align: left;">升级文件大小</td>
<td style="text-align: left;">4bytes</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">uint32</td>
</tr>
<tr>
<td style="text-align: left;">31</td>
<td style="text-align: left;">升级文件URL</td>
<td style="text-align: left;"></td>
<td style="text-align: left;"></td>
</tr>
<tr>
<td style="text-align: left;">31+</td>
<td style="text-align: left;">结束符</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;">127</td>
<td style="text-align: left;">uint8</td>
</tr>
</tbody>
</table>
<h5>下行协议(时钟同步响应)</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">索引</th>
<th style="text-align: left;">内容</th>
<th style="text-align: left;">长度</th>
<th style="text-align: left;">说明</th>
<th style="text-align: left;">备注</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">0</td>
<td style="text-align: left;">起始符</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;">126</td>
<td style="text-align: left;">uint8</td>
</tr>
<tr>
<td style="text-align: left;">1</td>
<td style="text-align: left;">命令字</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">uint8</td>
</tr>
<tr>
<td style="text-align: left;">2 </td>
<td style="text-align: left;">上报时间 </td>
<td style="text-align: left;">4bytes </td>
<td style="text-align: left;">long型时间戳 到秒</td>
<td style="text-align: left;"> </td>
</tr>
<tr>
<td style="text-align: left;">6</td>
<td style="text-align: left;">mesh地址</td>
<td style="text-align: left;">2bytes</td>
<td style="text-align: left;">网关单播地址</td>
</tr>
<tr>
<td style="text-align: left;">8</td>
<td style="text-align: left;">结束符</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;">127</td>
<td style="text-align: left;">uint8</td>
</tr>
</tbody>
</table>
<h5>备注</h5>