test
<h3>协议应答样例</h3>
<h5>下发命令描述</h5>
<table>
<thead>
<tr>
<th>字段名称</th>
<th>字段描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>cmd</td>
<td>下发协议号</td>
</tr>
<tr>
<td>ack</td>
<td>1:需接收服务器应答,未收到应答时需重发 0:不需要服务器应答</td>
</tr>
<tr>
<td>seq</td>
<td>服务器产生唯一标识</td>
</tr>
<tr>
<td>data</td>
<td>数据包</td>
</tr>
</tbody>
</table>
<h4>cmd:137 下发示例ack为1 - 添加WIFI</h4>
<h5>下发示例ack为1</h5>
<pre><code>{
&quot;cmd&quot;:137,
&quot;ack&quot;:1,// 1:需上报原数据
&quot;seq&quot;:1213232,//服务器产生唯一标识
&quot;data&quot;:{
&quot;wifiAccount&quot;:&quot;wifi名&quot;,
&quot;wifiPassword&quot;:&quot;wifi密码&quot;
}
}</code></pre>
<h5>设备应答命令描述</h5>
<table>
<thead>
<tr>
<th>字段名称</th>
<th>字段描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>cmd</td>
<td>应答协议号</td>
</tr>
<tr>
<td>code</td>
<td>0:成功 1:失败</td>
</tr>
<tr>
<td>keys</td>
<td>用于封装服务器需要的参数KEY</td>
</tr>
<tr>
<td>seq</td>
<td>应答唯一标识</td>
</tr>
</tbody>
</table>
<h5>设备应答返回示例</h5>
<pre><code>{
&quot;cmd&quot;:137,
&quot;code&quot;:0, //0:成功 1:失败
&quot;keys&quot;:{
&quot;id&quot;:1 //wifi ID
},
&quot;seq&quot;:1213232 //应答唯一标识
}</code></pre>
<h5>服务器应答设备描述</h5>
<table>
<thead>
<tr>
<th>字段名称</th>
<th>字段描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>cmd</td>
<td>应答协议号 固定为: 11111</td>
</tr>
<tr>
<td>seq</td>
<td>应答唯一标识:未收到应答唯一标识,设备需要重复上报</td>
</tr>
</tbody>
</table>
<h5>服务器应答设备示例</h5>
<pre><code>{
&quot;cmd&quot;:11111,
&quot;seq&quot;:1213232 //应答唯一标识
}</code></pre>
<h4>cmd:137 下发示例ack为0 - 添加WIFI</h4>
<h5>下发示例ack为1</h5>
<pre><code>{
&quot;cmd&quot;:137,
&quot;ack&quot;:0,// 0:不需上报原数据
&quot;data&quot;:{
&quot;wifiAccount&quot;:&quot;wifi名&quot;,
&quot;wifiPassword&quot;:&quot;wifi密码&quot;
}
}</code></pre>
<h5>设备应答命令描述</h5>
<table>
<thead>
<tr>
<th>字段名称</th>
<th>字段描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>cmd</td>
<td>应答协议号</td>
</tr>
<tr>
<td>code</td>
<td>0:成功 1:失败</td>
</tr>
<tr>
<td>ackData</td>
<td>数据包</td>
</tr>
<tr>
<td>keys</td>
<td>用于封装服务器需要的参数KEY</td>
</tr>
<tr>
<td>seq</td>
<td>应答唯一标识</td>
</tr>
</tbody>
</table>
<h5>设备应答返回示例</h5>
<pre><code>{
&quot;cmd&quot;:137,
&quot;code&quot;:0, //0:成功 1:失败
}</code></pre>
<p><br />
<br /></p>
<h1>扫地机上报</h1>
<h4>cmd:103 配网状态</h4>
<pre><code>{
&quot;cmd&quot;: 103,
&quot;data&quot;: {
&quot;status&quot;: 1,
&quot;user_id&quot;: 123,
&quot;model&quot;: 1, //机型 0:s40 1:s40max
&quot;wifiId&quot;:1,
&quot;wifiAccount&quot;:&quot;wifi名称”,
&quot;wifiPassword&quot;:&quot;Wifi密码&quot;,
}
}</code></pre>
<h4>cmd:20040 机器上传地图数据</h4>
<pre><code>{
&quot;cmd&quot;: 20040,
&quot;data&quot;: {
&quot;mapData&quot;: &quot;protobuf数据&quot;,
&quot;mapId&quot;:1, //地图id
}
}</code></pre>
<h4>cmd:20042 房间轮廓</h4>
<pre><code>{
&quot;cmd&quot;:20042,
&quot;mapId&quot;:0,
“room”:[
{
&quot;id&quot;:1,//房间ID
&quot;name&quot;:&quot;客厅&quot;
“contour”:&quot;轮廓点世界坐标&quot; //每个点x和分别存入float数组
},
{
&quot;id&quot;:2,//房间ID
&quot;name&quot;:&quot;客厅&quot;
“contour”:&quot;轮廓点世界坐标&quot; //每个点x和分别存入float数组
}
}</code></pre>
<h4>cmd:11252 机器上传设备状态(变化慢的有变化才上传,实时清扫轨迹、面积、清扫时长等等可以每几秒传一次)</h4>
<pre><code>{
&quot;cmd&quot;:11252,
&quot;data&quot;: {
“robotStatus”:0, //0:离线 1:待机中 2:清洁中 3:回充中 4:充电中 5:建图中
&quot;errorCode&quot;:0, //故障码 1:低电 2:卡住了需要认为移动 3:。。
“battery”:0, //电池电量百分比
“cleanType”:0,//0:全局清扫; 1 指定房间清扫;2 指定区域清扫
&quot;mapId&quot;:0, //清扫的地图ID
&quot;usedPlanId&quot;:0, //全局清扫使用方案时上报方案ID
&quot;cleanArea&quot;: 0,//清扫面积 单位:㎡
&quot;cleanTime&quot;: 0,//清扫时间 默认区间为0min—9999分钟(没有小数点,整数表示)
“cleanPath”:[x1,y1,x2,y2], //清扫路线float数组
&quot;robotPosition&quot;:[x,y,raw], //扫地机世界坐标x,y和方向
“baseStation”:[x,y], //基站世界坐标
}
}</code></pre>
<h4>cmd:11256 机器上传设备信息(每次开机连上服务器后上报一次,后面数据有变化再单独传变化的字段,比如WIfi信号强度)</h4>
<pre><code>{
&quot;cmd&quot;:11256,
&quot;data&quot;: {
“tzString”:&quot;Asia/Shanghai&quot;
&quot;language&quot;:0, //0;英语 1:简体中文 2:繁体中文 3:日本语 4:西班牙 5:法语 6:德语 7:俄语 8:葡萄牙语
&quot;serialNumber&quot;: “系列号”,
&quot;version&quot;: “固件版本”,
&quot;ip&quot;: &quot;IP地址&quot;,
&quot;wifiId&quot;:1, //WIFI ID
&quot;macAddr&quot;: &quot;wifi mac地址&quot;,
&quot;wifiStrength&quot;:0,
&quot;deviceModel&quot;: 0, //0:S40 1:S40 Max等等
&quot;bindTime&quot;: &quot;首次配网成功时间年月日时分秒&quot;
}
}</code></pre>
<h4>cmd:11257 机器上传单次清扫记录</h4>
<pre><code>{
&quot;cmd&quot;:11257,
&quot;data&quot;: {
“id”:0, //记录ID
&quot;startMode&quot;:0, //启动方式:0 设备端启动 1:app启动 2:定时任务
&quot;cleanArea&quot;: 0,//清扫面积 单位:㎡
&quot;cleanTime&quot;: 0,//清扫时间 默认区间为0min—9999分钟(没有小数点,整数表示)
&quot;cleanCount&quot;: 0,//清扫次数 1次或者2次
&quot;mapId&quot;:0, //清扫的地图ID
“cleanPath”:[x1,y1,x2,y2], //清扫路线float数组
“cleanType”:0,//0:全局清扫; 1 指定房间清扫;2 指定区域清扫
“cleanMode”:0, //0:单扫 1:单洗 2:边扫边洗
&quot;cleanStatus&quot;:0, //0:清扫完成 1:有新任务终止此任务 2:电量不足停止 3:。。。
}
}</code></pre>
<h4>cmd:11258 机器上传耗材状态</h4>
<pre><code>{
&quot;cmd&quot;:11258,
&quot;data&quot;: {
“edgeBrush”:&quot;80%,360&quot;, //边刷 剩余百分比,剩余时间,单位小时
“rollBrush”:&quot;80%,360&quot;, //滚刷 剩余百分比,剩余时间,单位小时
“mainFilter”:&quot;80%,360&quot;, //主机滤网 剩余百分比,剩余时间,单位小时
“baseFilter”:&quot;80%,360&quot;, //基站滤网 剩余百分比,剩余时间,单位小时
“roller”:&quot;80%,360&quot;, //滚筒 剩余百分比,剩余时间,单位小时
}
}</code></pre>
<h4>cmd:11259 机器上报新固件通知</h4>
<pre><code>{
&quot;cmd&quot;:11259,
&quot;data&quot;: {
&quot;hasNewVersion&quot;:0, //1:有新版本
“versionCode”:1,
“versionStr”:&quot;1.0.1&quot;,
&quot;currentVersion&quot;: &quot;1.0.0&quot;,
“content”:&quot;更新清扫逻辑&quot;
}
}</code></pre>
<h4>cmd:11260 恢复出厂(按回充和开始按键配网的同时机器上报,服务端清楚绑定关系、记录等等)</h4>
<pre><code>{
&quot;cmd&quot;:11260
}</code></pre>
<h3>APP下发消息</h3>
<h4>cmd:111 回充</h4>
<pre><code>{
&quot;cmd&quot;:111,
&quot;action&quot;:1 //0:停止回充;1 开始回充 2:继续回充; 3 暂停
}</code></pre>
<h5>返回示例</h5>
<pre><code>{
“cmd”:111,
&quot;code&quot;:0, //0:成功 1:失败
}</code></pre>
<h4>cmd:112 开始清扫</h4>
<pre><code>{
&quot;cmd&quot;:112,
“mapId”:1,//地图id,type为1或者2时需要
&quot;action&quot;:1,//0:结束并返回; 1 开始清扫;2:继续 3 暂停
“type”:1,//0:全局清扫; 1 指定房间清扫;2 指定区域清扫
“room”: //指定房间,type为1才有此项
[{
&quot;id&quot;:1, //房间ID
“material”:0, //0:瓷砖 1:大理石 2:木地板 3:地毯
“cleanMode”:0, //0:单扫 1:单洗 2:边扫边洗
“water”:0, //0:小 1:中 2:大 -1:地毯不能水洗
“cleanCnt”:0, //1:1次 2:2次
“order”:0, //0: 按序清扫, 1:自主清扫
}],
“area”: //指定区域,type为2才有此项
[{
&quot;id&quot;:1,
&quot;type&quot;:0, //0:矩形 1:圆形 2:5边形
&quot;points&quot;:&quot;顶点世界坐标&quot;, //矩形4个点; 圆形1个点;5边型5个点;//每个点x和y分别存入float数组
&quot;radius:12, //圆形半径
“material”:0, //0:瓷砖 1:大理石 2:木地板 3:地毯
“cleanMode”:0, //0:单扫 1:单洗 2:边扫边洗
“water”:0, //0:小 1:中 2:大 -1:地毯不能水洗
“cleanCnt”:0, //1:1次 2:2次
“order”:0, //0: 按序清扫, 1:自主清扫
}],
}</code></pre>
<h5>返回示例</h5>
<pre><code>{
“cmd”:112,
&quot;code&quot;:0, //0:成功 1:失败
}</code></pre>
<h4>cmd:113 基站操作</h4>
<pre><code>{
&quot;cmd&quot;:113,
&quot;action&quot;:1 //0:集污;1 开始深度清洁 2:停止深度清洁; 3 开始烘干 4:停止烘干
}</code></pre>
<h5>返回示例</h5>
<pre><code>{
“cmd”:113,
&quot;code&quot;:0, //0:成功 1:失败
}</code></pre>
<h4>cmd:114 快速建图</h4>
<pre><code>{
&quot;cmd&quot;:114
}</code></pre>
<h5>返回示例</h5>
<pre><code>{
“cmd”:114,
&quot;code&quot;:0, //0:成功 1:失败
&quot;mapId&quot;:123 //上报地图id
}</code></pre>
<h4>cmd:115 多地图开关</h4>
<pre><code>{
&quot;cmd&quot;:115,
&quot;action&quot;:0, //1:开 0:关
}</code></pre>
<h5>返回示例</h5>
<pre><code>{
“cmd”:115,
&quot;code&quot;:0, //0:成功 1:失败
}</code></pre>
<h4>cmd:116 使用新地图/切换地图</h4>
<pre><code>{
&quot;cmd&quot;:116,
&quot;mapId&quot;:0,
}</code></pre>
<h5>返回示例</h5>
<pre><code>{
“cmd”:116,
&quot;code&quot;:0, //0:成功 1:失败
}</code></pre>
<h4>cmd:117 删除地图</h4>
<pre><code>{
&quot;cmd&quot;:117,
&quot;mapId&quot;:0,
}</code></pre>
<h5>返回示例</h5>
<pre><code>{
“cmd”:117,
&quot;code&quot;:0, //0:成功 1:失败
}</code></pre>
<h4>cmd:118 新增禁区</h4>
<pre><code>{
&quot;cmd&quot;:118,
&quot;mapId&quot;:0,
“shape”:0, //0:线型 1:矩形
“points”:“顶点世界坐标” //线型2个点,矩形4个点;//每个点x和y分别存入float数组
}</code></pre>
<h5>返回示例</h5>
<pre><code>{
“cmd”:118,
&quot;code&quot;:0, //0:成功 1:失败
}</code></pre>
<h4>cmd:119 房间划分</h4>
<pre><code>{
&quot;cmd&quot;:119,
&quot;mapId&quot;:0,
&quot;roomId&quot;:0, //房间Id
“divideLine”:[x1,y1,x2,y2] //float点集
}</code></pre>
<h5>返回示例</h5>
<pre><code>{
“cmd”:119,
&quot;code&quot;:0, //0:成功 1:失败
}</code></pre>
<h4>cmd:120 房间重命名</h4>
<pre><code>{
&quot;cmd&quot;:120,
&quot;mapId&quot;:0,
“roomId”:1,
&quot;roomName&quot;:&quot;新名字&quot;
}</code></pre>
<h5>返回示例</h5>
<pre><code>{
“cmd”:120,
&quot;code&quot;:0, //0:成功 1:失败
}</code></pre>
<h4>cmd:121 合并房间</h4>
<pre><code>{
&quot;cmd&quot;:121,
&quot;mapId&quot;:0,
“roomIds”:[1,2], //int[] 合并房间ID为1和2的两个房间
}</code></pre>
<h5>返回示例</h5>
<pre><code>{
“cmd”:121,
&quot;code&quot;:0, //0:成功 1:失败
}</code></pre>
<h4>cmd:122 添加门槛条</h4>
<pre><code>{
&quot;cmd&quot;:122,
&quot;mapId&quot;:0,
“points”:[x1,y1,x2,y2,x3,y3,x4,y4...], //float[]矩形门槛条4个顶点世界坐标一组,支持多组
}</code></pre>
<h5>返回示例</h5>
<pre><code>{
“cmd”:122,
&quot;code&quot;:0, //0:成功 1:失败
}</code></pre>
<h4>cmd:123 添加地毯</h4>
<pre><code>{
&quot;cmd&quot;:123,
&quot;mapId&quot;:0,
“points”:[x1,y1,x2,y2,x3,y3,x4,y4...], //float[]矩形地毯4个顶点世界坐标一组,支持多组
&quot;types&quot;:[1,2] //int[]地毯属性数组 1:禁止进入 2:仅拖地
}</code></pre>
<h5>返回示例</h5>
<pre><code>{
“cmd”:123,
&quot;code&quot;:0, //0:成功 1:失败
}</code></pre>
<h4>cmd:124 设置房间材质</h4>
<pre><code>{
&quot;cmd&quot;:124,
&quot;mapId&quot;:0,
&quot;roomIds&quot;:[1,2], //int[]房间ID数组
“materials”:[1,2], //int[]材质数组,对应每个房间的材质 0:瓷砖 1:大理石 2:木地板 3:地毯
}</code></pre>
<h5>返回示例</h5>
<pre><code>{
“cmd”:124,
&quot;code&quot;:0, //0:成功 1:失败
}</code></pre>
<h4>cmd:125 新增/修改方案</h4>
<pre><code>{
&quot;cmd&quot;:125,
&quot;mapId&quot;:0,
&quot;planId&quot;:0, //新增方案app产生ID,修改方案传原方案ID
“room”:[
{
&quot;id&quot;:1, //房间ID
&quot;onOff&quot;:0, //开关 1:开代表扫这个房间
“material”:0, //0:瓷砖 1:大理石 2:木地板 3:地毯
“cleanMode”:0, //0:单扫 1:单洗 2:边扫边洗
“water”:0, //0:小 1:中 2:大 -1:地毯不能水洗
“cleanCnt”:0, //1:1次 2:2次
}
]
}</code></pre>
<h5>返回示例</h5>
<pre><code>{
“cmd”:125,
&quot;code&quot;:0, //0:成功 1:失败
}</code></pre>
<h4>cmd:126 使用方案</h4>
<pre><code>{
&quot;cmd&quot;:126,
&quot;planId&quot;:0,
&quot;onOff&quot;:0, //1:开启
&quot;mapId&quot;:0,
}</code></pre>
<h5>返回示例</h5>
<pre><code>{
“cmd”:126,
&quot;code&quot;:0, //0:成功 1:失败
}</code></pre>
<h4>cmd:127 预约方案</h4>
<pre><code>{
&quot;cmd&quot;:127,
“onOff”:1, //1:打开,0关闭
&quot;mapId&quot;:0,
&quot;planId&quot;:0,
“time”:&quot;15:34&quot;, //hh:mm格式时间
“repeat”:&quot;1111111&quot; //周日-周一...周六,每天代表一个字符,1代表重复
}</code></pre>
<h5>返回示例</h5>
<pre><code>{
“cmd”:127,
&quot;code&quot;:0, //0:成功 1:失败
}</code></pre>
<h4>cmd:128 删除方案</h4>
<pre><code>{
&quot;cmd&quot;:128,
&quot;mapId&quot;:0,
“planId”:0, //方案ID
}</code></pre>
<h5>返回示例</h5>
<pre><code>{
“cmd”:128,
&quot;code&quot;:0, //0:成功 1:失败
}</code></pre>
<h4>cmd:129 耗材重置</h4>
<pre><code>{
&quot;cmd&quot;:129,
“type”:0, //0:边刷 1:滚刷 2:主机滤网 3:基站滤网 4:滚筒
}</code></pre>
<h5>返回示例</h5>
<pre><code>{
“cmd”:129,
&quot;code&quot;:0, //0:成功 1:失败
}</code></pre>
<h4>cmd:130 固件升级</h4>
<pre><code>{
&quot;cmd&quot;:130,
“action”:1, //1:立即升级
}</code></pre>
<h5>返回示例</h5>
<pre><code>{
“cmd”:130,
&quot;code&quot;:0, //0:成功 1:失败
}</code></pre>
<h4>cmd:131 AI进化开关</h4>
<pre><code>{
&quot;cmd&quot;:131,
“action”:0, //0:关 1:开
}</code></pre>
<h5>返回示例</h5>
<pre><code>{
“cmd”:131,
&quot;code&quot;:0, //0:成功 1:失败
}</code></pre>
<h4>cmd:132 设置语音播报音量</h4>
<pre><code>{
&quot;cmd&quot;:132,
“volum”:80, //百分比 80%
}</code></pre>
<h5>返回示例</h5>
<pre><code>{
“cmd”:132,
&quot;code&quot;:0, //0:成功 1:失败
}</code></pre>
<h4>cmd:133 设置时区</h4>
<pre><code>{
&quot;cmd&quot;:133,
“timezone”:8.0,
“tzString”:&quot;Asia/Shanghai&quot;
}</code></pre>
<h5>返回示例</h5>
<pre><code>{
“cmd”:133,
&quot;code&quot;:0, //0:成功 1:失败
}</code></pre>
<h4>cmd:134 定位洗地机</h4>
<pre><code>{
&quot;cmd&quot;:134,
}</code></pre>
<h5>返回示例</h5>
<pre><code>{
“cmd”:134,
&quot;code&quot;:0, //0:成功 1:失败
}</code></pre>
<h4>cmd:135 设置扫地机语言</h4>
<pre><code>{
&quot;cmd&quot;:135,
&quot;language&quot;:0, //0;英语 1:简体中文 2:繁体中文 3:日本语 4:西班牙 5:法语 6:德语 7:俄语 8:葡萄牙语
}</code></pre>
<h5>返回示例</h5>
<pre><code>{
“cmd”:135,
&quot;code&quot;:0, //0:成功 1:失败
}</code></pre>
<h4>cmd:136 查询固件是否有更新</h4>
<pre><code>{
&quot;cmd&quot;:136
}</code></pre>
<h5>回复cmd:11259</h5>
<h4>cmd:137 添加WIFI</h4>
<pre><code>{
&quot;cmd&quot;:137,
&quot;ack&quot;:1,// 1:需上报原数据
“wifiAccount”:&quot;wifi名&quot;,
“wifiPassword”:“wifi密码”,
}</code></pre>
<h5>返回示例</h5>
<pre><code>{
“cmd”:137,
&quot;wifiId&quot;:1, //WIFI ID
&quot;code&quot;:0, //0:成功 1:失败
}</code></pre>
<h4>cmd:138 删除WIFI</h4>
<pre><code>{
&quot;cmd&quot;:138,
“wifiId”:1
}</code></pre>
<h5>返回示例</h5>
<pre><code>{
“cmd”:138,
&quot;code&quot;:0, //0:成功 1:失败
}</code></pre>