MQTT 升级协议
<p>[TOC]</p>
<h1>1 远程升级请求报文</h1>
<p>流水号+报文</p>
<h2>1.1 报文内容</h2>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=f679301354ef2999638e9354d34e0968&amp;file=file.png" alt="" /></p>
<h2>1.2 数据内容</h2>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=15159d9bedf19a41c107eaef8d498ea4&amp;file=file.png" alt="" />
<strong>升级设备目标:</strong></p>
<table>
<thead>
<tr>
<th>设备类型</th>
<th>设备地址</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>NDB5E-0-XX</td>
<td>00</td>
<td>网关升级</td>
</tr>
<tr>
<td>NDB5E-1-XX</td>
<td>00</td>
<td>断路器广播升级</td>
</tr>
<tr>
<td>NDB5E-1-XX</td>
<td>XX</td>
<td>断路器单点升级</td>
</tr>
</tbody>
</table>
<h3>示例:1.2.1 发起升级</h3>
<p>以升级上位机下发数据示例:
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=a5b9ca76b42fc20b376203c420e37073&amp;file=file.png" alt="" /></p>
<p>2024-03-19 13:51:14::请求升级 发送数据: topic:LXB5/WriteData/98D863B915A4000000 内容:</p>
<pre><code class="language-json">000000327:FD0D0066010000474154455741590000004D3031303042474430303234303332304130303230330001C680019001232DF166E0,2024-03-22 18:43:04</code></pre>
<p>解析如下:</p>
<table>
<thead>
<tr>
<th>字符</th>
<th>说明</th>
<th>备注</th>
</tr>
</thead>
<tbody>
<tr>
<td>000000004:</td>
<td>流水号</td>
</tr>
<tr>
<td>FD</td>
<td>消息头</td>
<td>FD:网关参数上报</td>
</tr>
<tr>
<td>0D</td>
<td>消息类型</td>
<td>0D 远程升级</td>
</tr>
<tr>
<td>0066</td>
<td>数据包长度</td>
</tr>
<tr>
<td>01</td>
<td>网关端口</td>
<td>保留值</td>
</tr>
<tr>
<td>00</td>
<td>功能码</td>
<td>请求升级</td>
</tr>
<tr>
<td>00</td>
<td>传包方式</td>
<td>00:应答方式,01:补包方式</td>
</tr>
<tr>
<td>00</td>
<td>设备地址</td>
</tr>
<tr>
<td>47415445574159000000</td>
<td>设备类型</td>
<td>硬件版本,详见 附录A.1</td>
</tr>
<tr>
<td>4D303130304247443030</td>
<td>硬件信息</td>
<td>字符串M0100B0100 详见 附录A.2</td>
</tr>
<tr>
<td>323430333230413030323033</td>
<td>软件信息</td>
<td>字符串240320A00203,详见附录 A.3</td>
</tr>
<tr>
<td>0001C680</td>
<td>总文件大小</td>
</tr>
<tr>
<td>00190</td>
<td>文件分包大小</td>
<td>0X0190 = 400</td>
</tr>
<tr>
<td>0123</td>
<td>文件分包数量</td>
<td>0X0123 = 291</td>
</tr>
<tr>
<td>2DF1</td>
<td>文件CRC</td>
</tr>
<tr>
<td>66E0</td>
<td>数据包CRC</td>
</tr>
<tr>
<td>,2024-03-19 13:51:14</td>
<td></td>
</tr>
</tbody>
</table>
<p>2024-03-19 14:17:11::接受到消息 topoc:LXB5/DataChange/98D863B915A4000000 应答报文:</p>
<pre><code class="language-json">{'params':{'DataHead':'fc','CmdId':'000000004','CmdAck':'2000','DataRead':'0'},'method':'thing.event.property.post'}
</code></pre>
<h3>示例: 1.2.2 传输数据</h3>
<p>2024-03-19 14:17:11::数据传输 当前包序号:1 发送数据: topic:LXB5/WriteData/98D863B915A4000000 内容:</p>
<table>
<thead>
<tr>
<th>字符</th>
<th>说明</th>
<th>备注</th>
</tr>
</thead>
<tbody>
<tr>
<td>000000005:</td>
<td>流水号</td>
<td></td>
</tr>
<tr>
<td>FD</td>
<td>消息头</td>
<td></td>
</tr>
<tr>
<td>0D</td>
<td>消息类型</td>
<td></td>
</tr>
<tr>
<td>033C</td>
<td>消息长度</td>
<td></td>
</tr>
<tr>
<td>01</td>
<td>端口地址</td>
<td></td>
</tr>
<tr>
<td>01</td>
<td>功能码</td>
<td>0X01:数据传输</td>
</tr>
<tr>
<td>0001</td>
<td>包序号</td>
<td></td>
</tr>
<tr>
<td>0190</td>
<td>包大小</td>
<td>400</td>
</tr>
<tr>
<td>40DC ... 0108</td>
<td>文件分包数据</td>
<td></td>
</tr>
<tr>
<td>B10F</td>
<td>分包CRC</td>
<td></td>
</tr>
<tr>
<td>0E0B</td>
<td>消息CRC</td>
<td></td>
</tr>
<tr>
<td>,2024-03-19 14:17:11</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<p>400个byte的数据长度(1个byte 用2个char,总共800个字符)
备注:最新WIFI固件支持1400个字符长度,建议每包512 字节大小数据(1个byte占用2个字符);</p>
<h3>示例:1.2.3 传输完成</h3>
<p>000000012:FD0D00100102B9A3,2024-03-27 11:14:53</p>
<h3>示例:1.2.4 确认升级</h3>
<p>2024-03-19 14:31:14::确认升级 发送数据: topic:LXB5/WriteData/98D863B915A4000000 内容:000000423:FD0D0012010300629A,2024-03-22 18:53:42</p>
<table>
<thead>
<tr>
<th>字符</th>
<th>说明</th>
<th>备注</th>
</tr>
</thead>
<tbody>
<tr>
<td>000000423:</td>
<td>序列号</td>
<td></td>
</tr>
<tr>
<td>FD</td>
<td>消息头</td>
<td></td>
</tr>
<tr>
<td>0D</td>
<td>消息类型</td>
<td></td>
</tr>
<tr>
<td>0012</td>
<td>此包数据长度</td>
<td></td>
</tr>
<tr>
<td>01</td>
<td>网关端口地址</td>
<td></td>
</tr>
<tr>
<td>03</td>
<td>升级功能码</td>
<td>0X03:确认/取消升级</td>
</tr>
<tr>
<td>00</td>
<td>确认升级</td>
<td>0X00:确认 0X01取消</td>
</tr>
<tr>
<td>629A</td>
<td>消息CRC</td>
<td></td>
</tr>
<tr>
<td>,2024-03-22 18:53:42</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<h3>示例:1.2.5 补包查询</h3>
<p>000000002:FD0D0010010439A1,2024-03-27 10:42:37
命令执行结果</p>
<pre><code class="language-json">{
'params':{
'DataHead':'fc',
'CmdId':'000000002',
'CmdAck':'2000',
'DataRead':'0'
},
'method':'thing.event.property.post'
}</code></pre>
<p>查询数据应答</p>
<pre><code class="language-json">{
'params':{
'DataHead':'fd',
'DataTag':'00',
'DataLength':'0182',
'MacAddr':'9CD863B915A4000000',
'GwType':'03',
'PortAddr':'01',
'MegTag':'0d',
'PackCount':'0001',
'PackId':'0001',
'DataValue':'000100B4000100020003000400050006000700080009000A000B000C000D000E000F0010001100120013001400150016001700180019001A001B001C001D001E001F0020002100220023002400250026002700280029002A002B002C002D002E002F0030003100320033003400350036003700380039003A003B003C003D003E003F0040004100420043004400450046004700480049004A004B004C004D004E004F0050005100520053005400550056005700580059005A005B005C005D005E005F0060006100620063006400650066006700680069006A006B006C006D006E006F0070007100720073007400750076007700780079007A007B007C007D007E007F0080008100820083008400850086008700880089008A008B008C008D008E008F0090009100920093009400950096009700980099009A009B009C009D009E009F00A000A100A200A300A400A500A600A700A800A900AA00AB00AC00AD00AE00AF00B000B100B200B300B4',
'DataCRC':46B3,
'DataRead':'0'
},
'method':'thing.event.property.post'
}</code></pre>
<h1>2 上报内容(升级结果、补包查询)</h1>
<p>针对网关升级可以直接查询结果;
对断路器升级后,网关是通过广播方式对下属断路器所有设备进行升级的,</p>
<pre><code class="language-json">{
'params': {
'DataHead': 'fd',
'DataTag': '00',
'DataLenth': '00D2',
'MacAddr': '98D863B915A4000000',
'GwType': '03',
'PortAddr': '01',
'MegTag': '0d',
'PackCount': '0001',
'PackId': '0001',
'DataValue': 'XXXXX',//升级结果数据
'DataCRC': '1EC7',
'DataRead': '0'
},
'method': 'thing.event.property.post'
}
</code></pre>
<table>
<thead>
<tr>
<th>消息类型</th>
<th>字节数</th>
<th>格式</th>
<th>说明</th>
<th>备注</th>
</tr>
</thead>
<tbody>
<tr>
<td>升级结果上报</td>
<td>2</td>
<td>HEX</td>
<td>0X0000</td>
<td>上报类型</td>
</tr>
<tr>
<td></td>
<td>1</td>
<td>HEX</td>
<td>升级结果</td>
<td>0X00:成功,0X01:失败</td>
</tr>
<tr>
<td></td>
<td>10</td>
<td>ASCII</td>
<td>设备类型</td>
<td></td>
</tr>
<tr>
<td></td>
<td>10</td>
<td>ASCII</td>
<td>硬件信息</td>
<td></td>
</tr>
<tr>
<td></td>
<td>12</td>
<td>ASCII</td>
<td>软件信息</td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>补漏包上报</td>
<td>2</td>
<td>HEX</td>
<td>0X0001</td>
<td>上报类型</td>
</tr>
<tr>
<td></td>
<td>2</td>
<td>HEX</td>
<td>漏包个数</td>
<td></td>
</tr>
<tr>
<td></td>
<td>2xN</td>
<td>HEX</td>
<td>漏包序号</td>
<td></td>
</tr>
</tbody>
</table>
<h1>附录 A 版本号说明</h1>
<h2>A.1 产品类型 0x021A ~0x021E(ASCII x 10)</h2>
<p><strong>示例:NDB5E-0-03 </strong>
NDB5E WIFI 类型网关</p>
<table>
<thead>
<tr>
<th>NDB5E</th>
<th>-</th>
<th>0</th>
<th>-</th>
<th>03</th>
</tr>
</thead>
<tbody>
<tr>
<td>产品系列:</td>
<td></td>
<td>产品大类:</td>
<td></td>
<td>产品子类:</td>
</tr>
<tr>
<td>NDB5E/NDB5L</td>
<td></td>
<td>0:网关/1:断路器</td>
<td>-</td>
<td>子类(见注1)</td>
</tr>
</tbody>
</table>
<p><strong>注1:产品子类</strong></p>
<table>
<thead>
<tr>
<th>子类</th>
<th>00</th>
<th>01</th>
<th>02</th>
<th>03</th>
<th>04</th>
<th>05</th>
<th>06</th>
<th>07</th>
<th>08</th>
<th>09</th>
</tr>
</thead>
<tbody>
<tr>
<td>网关</td>
<td>NB-IOT</td>
<td>4G网关</td>
<td>ETH网关</td>
<td>WIFI网关</td>
<td>网关服务器</td>
</tr>
<tr>
<td>断路器</td>
<td>NDB5E不带漏电</td>
<td>NDB5EL带漏电</td>
<td>NDB5EZ直流</td>
</tr>
</tbody>
</table>
<p>注1:
1、网关子类与良信智能配电IOT_RDS_ECS_Restful协议网关类型一致;
2、断路器子类与断路器数据地址0x0200 寄存器协议表述一致;</p>
<p><strong>升级规则:</strong>
1、网关、断路器必须完全匹配类型才会产生对应的升级任务;</p>
<h2>A.2 硬件版本 0x021F ~ 0x0223(ASCII x 10)</h2>
<p><strong>示例 B0101MGD00</strong></p>
<table>
<thead>
<tr>
<th>B</th>
<th>01</th>
<th>01</th>
<th>M</th>
<th>GD</th>
<th>00</th>
</tr>
</thead>
<tbody>
<tr>
<td>B:PCB</td>
<td>硬件版本</td>
<td>子版本</td>
<td>MCU</td>
<td>品牌</td>
<td>品牌子型号(见注2)</td>
</tr>
</tbody>
</table>
<p><strong>注2:品牌子型号:</strong></p>
<table>
<thead>
<tr>
<th>字符</th>
<th>中文名</th>
<th>00</th>
<th>01</th>
<th>02</th>
<th>03~99</th>
</tr>
</thead>
<tbody>
<tr>
<td>GD</td>
<td>兆易创新</td>
<td>GD32E503</td>
<td>GD32E103</td>
<td>GD32E230</td>
</tr>
<tr>
<td>NX</td>
<td>恩智浦</td>
<td>MK22FX512</td>
<td>MK22FN128</td>
<td></td>
<td></td>
</tr>
<tr>
<td>NS</td>
<td>国民</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>KF</td>
<td>芯旺微</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<p><strong>升级规则:</strong>
PCB+芯片型号组成的 硬件版本,必须一致才允许升级</p>
<h2>A.3 软件版本 0x0224 ~ 0x0229(ASCII x 12)</h2>
<p><strong> 示例:240307A01000</strong></p>
<table>
<thead>
<tr>
<th>240307</th>
<th>A01</th>
<th>000</th>
</tr>
</thead>
<tbody>
<tr>
<td>YYMMDD年月日</td>
<td>版本</td>
<td>子版本</td>
</tr>
</tbody>
</table>
<p><strong>升级规则:</strong>
1、日期作为版本参考信息,不作为升级比对规则依据;
2、版本号高于当前版本号,或者版本号一致时,子版本号更高;
比如240307A01002 允许240307A01003 、240307A02001 版本的升级;</p>
<h1>附录B</h1>
<h2>B.1消息头定义</h2>
<table>
<thead>
<tr>
<th>消息头</th>
<th>描述</th>
<th>备注</th>
</tr>
</thead>
<tbody>
<tr>
<td>fah</td>
<td>网关数据操作</td>
<td>新增</td>
</tr>
<tr>
<td>fbh</td>
<td>设备上线/离线状态上报</td>
<td></td>
</tr>
<tr>
<td>fch</td>
<td>网关应答</td>
<td></td>
</tr>
<tr>
<td>fdh</td>
<td>网关参数设置,断路器参数设置,测量运维数据上报,网关上报请求数据</td>
<td></td>
</tr>
<tr>
<td>feh</td>
<td>网关参数上报</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<h2>B.2消息类型码定义</h2>
<table>
<thead>
<tr>
<th>类型码</th>
<th>描述</th>
<th>备注</th>
</tr>
</thead>
<tbody>
<tr>
<td>01h</td>
<td>产品信息</td>
<td></td>
</tr>
<tr>
<td>02h</td>
<td>运维参数</td>
<td></td>
</tr>
<tr>
<td>03h</td>
<td>运行状态</td>
<td></td>
</tr>
<tr>
<td>04h</td>
<td>测量数据/数据读取</td>
<td>此类型码当前产品复用,后续数据读取调整为0Eh</td>
</tr>
<tr>
<td>05h</td>
<td>保护参数</td>
<td></td>
</tr>
<tr>
<td>06h</td>
<td>故障告警变位信息</td>
<td></td>
</tr>
<tr>
<td>07h</td>
<td>设备参数写入/遥控指令参数</td>
<td></td>
</tr>
<tr>
<td>08h</td>
<td>数据上报频率设置</td>
<td></td>
</tr>
<tr>
<td>09h</td>
<td>点表增减设置/数据读取应答</td>
<td>此类型码当前产品复用,后续数据读取应答调整为0Eh</td>
</tr>
<tr>
<td>0Ah</td>
<td>注册</td>
<td></td>
</tr>
<tr>
<td>0Bh</td>
<td>远程复位</td>
<td></td>
</tr>
<tr>
<td>0Ch</td>
<td>总召</td>
<td></td>
</tr>
<tr>
<td>0Dh</td>
<td>远程升级</td>
<td></td>
</tr>
<tr>
<td>0Eh</td>
<td>数据读取</td>
<td>预留调整</td>
</tr>
<tr>
<td>0Fh</td>
<td>复费率电能</td>
<td></td>
</tr>
<tr>
<td>10h</td>
<td>电能质量分析</td>
<td></td>
</tr>
<tr>
<td>11h</td>
<td>故障录波</td>
<td></td>
</tr>
<tr>
<td>12h</td>
<td>内部参数配置</td>
<td></td>
</tr>
</tbody>
</table>
<h2>B.3 消息类型码定义</h2>
<table>
<thead>
<tr>
<th>错误码(HEX)</th>
<th>说明</th>
<th>备注</th>
</tr>
</thead>
<tbody>
<tr>
<td>2000</td>
<td>下发成功</td>
<td></td>
</tr>
<tr>
<td>2001</td>
<td>无效操作码</td>
<td></td>
</tr>
<tr>
<td>2002</td>
<td>无效地址</td>
<td></td>
</tr>
<tr>
<td>2003</td>
<td>无效数据</td>
<td></td>
</tr>
<tr>
<td>2004</td>
<td>无权限</td>
<td></td>
</tr>
<tr>
<td>2005</td>
<td>目标无应答</td>
<td></td>
</tr>
<tr>
<td>2006</td>
<td>CRC错误</td>
<td></td>
</tr>
<tr>
<td>2007</td>
<td>目标节点不可达</td>
<td></td>
</tr>
<tr>
<td>2008</td>
<td>报文格式错误</td>
<td></td>
</tr>
<tr>
<td>2009</td>
<td>拒绝响应</td>
<td>升级场景,可能因为版本不匹配等原因</td>
</tr>
</tbody>
</table>