终端-保温灯协议
<h5>简要描述</h5>
<ul>
<li>网关与云端交互协议</li>
</ul>
<h5>请求 URL</h5>
<ul>
<li>参见环境信息</li>
</ul>
<h5>请求方式</h5>
<ul>
<li>emq</li>
</ul>
<h5><font color=red>上行协议 保温灯异常事件上报</font></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>71 </td>
<td>uint8</td>
</tr>
<tr>
<td>2 </td>
<td>设备SN </td>
<td>18bytes </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>20 </td>
<td>上报时间 </td>
<td>8bytes </td>
<td>long型时间戳</td>
<td> </td>
</tr>
<tr>
<td>28 </td>
<td>错误码 </td>
<td>1byte </td>
<td> </td>
<td>uint8</td>
</tr>
<tr>
<td>29 </td>
<td>异常值长度</td>
<td>1byte </td>
<td>异常值长度 </td>
<td> </td>
</tr>
<tr>
<td>30+ </td>
<td>异常值 </td>
<td>根据长度确定</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>31+ </td>
<td>结束符 </td>
<td>1byte </td>
<td>127 </td>
<td> </td>
</tr>
</tbody>
</table>
<p><font color=red>备注:</font></p>
<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;">18bytes</td>
<td style="text-align: left;"></td>
</tr>
<tr>
<td style="text-align: left;">20</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;">26</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;">27</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;">28</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;">29</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;">30</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;">31</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;">32</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;">33</td>
<td style="text-align: left;">当前功率</td>
<td style="text-align: left;">4bytes</td>
<td style="text-align: left;">10.23w-> 1023</td>
<td style="text-align: left;">unit32</td>
</tr>
<tr>
<td style="text-align: left;">37</td>
<td style="text-align: left;">设定功率</td>
<td style="text-align: left;">4bytes</td>
<td style="text-align: left;">10.23w-> 1023</td>
<td style="text-align: left;">unit32</td>
</tr>
<tr>
<td style="text-align: left;">41</td>
<td style="text-align: left;">当前温度</td>
<td style="text-align: left;">2bytes</td>
<td style="text-align: left;">23.38°C ->2338</td>
<td style="text-align: left;">unit16</td>
</tr>
<tr>
<td style="text-align: left;">43</td>
<td style="text-align: left;">设定温度</td>
<td style="text-align: left;">2bytes</td>
<td style="text-align: left;">23.38°C ->2338</td>
<td style="text-align: left;">unit16</td>
</tr>
<tr>
<td style="text-align: left;">45</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;">46</td>
<td style="text-align: left;">PCBA主板温度</td>
<td style="text-align: left;">2bytes</td>
<td style="text-align: left;">23.38°C ->2338</td>
<td style="text-align: left;">unit16</td>
</tr>
<tr>
<td style="text-align: left;">48</td>
<td style="text-align: left;">上报时间</td>
<td style="text-align: left;">8bytes</td>
<td style="text-align: left;">long型时间戳</td>
</tr>
<tr>
<td style="text-align: left;">56</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;">18bytes</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;">8bytes</td>
<td style="text-align: left;">long时间戳</td>
</tr>
<tr>
<td style="text-align: left;">28</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;">51:统计上报</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;">18bytes</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;">4bytes</td>
<td style="text-align: left;">13.30h->1330小时为单位,保留2位小数</td>
<td style="text-align: left;">uint32</td>
</tr>
<tr>
<td style="text-align: left;">24</td>
<td style="text-align: left;">累计耗电量</td>
<td style="text-align: left;">4bytes</td>
<td style="text-align: left;">14.32Kw.h ->1432 保留两位小数</td>
<td style="text-align: left;">uint32</td>
</tr>
<tr>
<td style="text-align: left;">28</td>
<td style="text-align: left;">累计开始时间</td>
<td style="text-align: left;">8bytes</td>
<td style="text-align: left;">long型时间戳</td>
</tr>
<tr>
<td style="text-align: left;">36</td>
<td style="text-align: left;">上报时间</td>
<td style="text-align: left;">8bytes</td>
<td style="text-align: left;">long型时间戳</td>
</tr>
<tr>
<td style="text-align: left;">44</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;">设备SN</td>
<td style="text-align: left;">18bytes</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;">8bytes</td>
<td style="text-align: left;">long型时间戳</td>
</tr>
<tr>
<td style="text-align: left;">28</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;">30</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;">31</td>
<td style="text-align: left;">目标值</td>
<td style="text-align: left;"></td>
<td style="text-align: left;"></td>
<td style="text-align: left;">ASCII码</td>
</tr>
<tr>
<td style="text-align: left;">28+ 目标值长度</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;">20</td>
<td style="text-align: left;">网关SN</td>
<td style="text-align: left;">18bytes</td>
<td style="text-align: left;"></td>
</tr>
<tr>
<td style="text-align: left;">38</td>
<td style="text-align: left;">服务器时间</td>
<td style="text-align: left;">8bytes</td>
<td style="text-align: left;">long型时间戳</td>
</tr>
<tr>
<td style="text-align: left;">46</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;">48</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;">49</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;">50</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;">51</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;">52</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;">54</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;">56</td>
<td style="text-align: left;">重复周期</td>
<td style="text-align: left;">1byte</td>
<td style="text-align: left;">00000000 最高位第七位为无效0 第6到第0位对应周一到周日</td>
</tr>
<tr>
<td style="text-align: left;">63</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;">64</td>
<td style="text-align: left;">定时任务ID</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">不定长</td>
</tr>
<tr>
<td style="text-align: left;"></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>