迅鸣物联网文档

迅鸣物联网文档


IP网关协议

<p>[TOC]</p> <h1>IP网关协议</h1> <h1>注意: 所有向设备发送的数据,必须以 16进制的&quot;0b0a&quot;结束</h1> <p>协议组成</p> <ul> <li>header</li> <li>payload</li> </ul> <pre><code>==== mqtt 数据长度限制===== typedef struct { char timeStamp[15]; } mqtt_head_data_t; typedef struct { char nodeid[3]; char action[15]; char params[20]; } mqtt_device_data_t;</code></pre> <h2>消息组成</h2> <h3>header 消息</h3> <p><strong>Header消息包含</strong></p> <ul> <li>timeStamp --- 消息生成的时间戳</li> </ul> <p>消息格式</p> <pre><code class="language-json">{ "header":{ "timeStamp":"1592983921388" } }</code></pre> <h3>payload 消息</h3> <p><strong>payload消息包含</strong></p> <ul> <li>nodeid --- 网关的为000 设备的为1~127</li> <li>action --- 操作类型</li> <li>params --- 操作内容,由subID与mode_id 以及数据组成</li> <li>serviceid --- 业务id,APP端消息页面渲染模板</li> </ul> <p><strong>示例:</strong></p> <pre><code class="language-json">{ "payload":{ "devices":[ { "nodeid":"001", "action":"command", "serviceid":"10110e01", "params":"0110021100000000" } ] } }</code></pre> <h2>设备激活</h2> <p><strong>示例</strong> <strong>向设备发送的数据</strong> <strong> topic /xm/sh/request/mqtt/1320420010132811/active </strong></p> <pre><code class="language-json">{ "device_id":"1320420010132811", //设备sn "mqtt_host":"mqtt.xunmingiot.com", //mqtt服务器域名或ip地址 "mqtt_port":8883, //mqtt端口,注意是SSL端口 "mqtt_user":"1320420010132811", //mqtt登录用户名 "mqtt_pass":"54491741804120xxxxxx", //mqtt登录密码 "security":1, "mqtt_keepalive":120, "slot":16 //槽位指示即0x10 }</code></pre> <h2>主动同步</h2> <p><strong>此指令是发给网关的,发出后网关会将此网关下的所有设备主动上报一遍消息</strong></p> <p><strong>示例:</strong> <strong>向设备发送的数据</strong></p> <pre><code class="language-json">{ "header":{ "timeStamp":"1592983921388" }, "payload":{ "devices":[ { "nodeid":"000", "action":"sync", "params":"" } ] } }</code></pre> <p><strong>设备响应数据</strong> </p> <pre><code class="language-json">{ "header":{ "timeStamp":"1592983921388" }, "payload":{ "devices":[ { "nodeid": "000", "action":"sync", "serviceid":"10110e01" "params":"012001005e000000" } ] } }</code></pre> <h2>控制设备</h2> <p><strong>向设备发送的数据</strong></p> <pre><code class="language-json">{ 'header': {'timeStamp': ''}, 'payload': { 'devices': [ { 'nodeid': '001', // 所要控制设备的nodeid 'action': 'command', 'params': '0110111100000000' // 控制的数据 } ] } }</code></pre> <p><strong>设备响应数据</strong> </p> <pre><code class="language-json">{ "header":{ "timeStamp":"1592983921388" }, "payload":{ "devices":[ { "nodeid": "001", "action":"command", "params":"0110111100000000" } ] } }</code></pre> <h2>重启设备</h2> <p><strong>topic /xm/sh/request/mqtt/13204200010XXXXXX/2001/v1</strong> <strong>向设备发送的数据</strong></p> <pre><code class="language-json">{ 'header': {'timeStamp': ''}, 'payload': { 'devices': [ { 'nodeid': '000', 'action': 'restart', 'params': "" } ] } }</code></pre> <h2>ota升级</h2> <p><strong>向设备发送的数据</strong></p> <pre><code class="language-json">{ 'header': {'timeStamp': ''}, 'payload': { 'devices': [ { 'nodeid': '000', // 所要控制设备的nodeid 'action': 'ota', 'params': { "modeid":"2001", "ser_ip":"127.223.4.1", //文件下载服务器地址 "new_ver":"a1.0.9.t20010j01" // 所要ota升级的版本号 } } ] } }</code></pre> <p><strong>设备响应数据</strong></p> <pre><code class="language-json">{ "header":{ "timeStamp":"1592983921388" }, "payload":{ "devices":[ { "nodeid": "000", "action":"ota", "params":"0,a1.0.9.t20010j01" // 逗号前面是升级状态 0是成功 1是失败,逗号后面是版本号 } ] } }</code></pre> <h2>wifi设备 如何设置wifi</h2> <p><strong>topic: /xm/sh/request/mqtt/13204200010XXXXXX/2001/v1 </strong></p> <h3>一、发现周围wifi网络</h3> <p><strong>向设备发送的数据</strong></p> <pre><code class="language-json">{ "header":{ "timeStamp":"" },"payload": {"devices": [{ "nodeid":"000", "action":"scan_wifi", "params":"" }] } }</code></pre> <p><strong>设备响应数据</strong></p> <pre><code class="language-json">{ "header":{ "timeStamp":"" }, "payload":{ "devices":[{ "nodeid":"000", "action":"scan_wifi", "params":"SaiTong,bc:54:fc:94:43:f0,WPA+2,60,1;shenxuehulian,8c:53:c3:9f:77:fc,WPA+2,60,1;" }] // params 为周围wifi信息,顺序为: wifi名 mac地址 网络类型 信号 1 } } 注意: wifi名称为中文的无法发现</code></pre> <h3>二、手动配置WIFI</h3> <p><strong>topic: /xm/sh/request/mqtt/13204200010XXXXXX/2001/v1 </strong> <strong>向设备发送的数据</strong></p> <pre><code class="language-json">{ "header":{ "timeStamp":"" }, "payload":{ "devices":[{ "nodeid":"000", "action":"set_wifi", "params":{ "ssid":"123", // ssid 为wifi名称 "passwd":"123465" // passwd 为密码 } }] } }</code></pre> <p><strong>设备响应数据</strong></p> <pre><code class="language-json">{ "header":{ "timeStamp":"" }, "payload":{ "devices":[{ "nodeid":"000", "action":"set_wifi", "params":"0" //params 为0时,代表设置成功 }] } }</code></pre> <h2>数据解析</h2> <h3>MQTT-Topic 规则</h3> <p><strong>设备类型与控制时mode_id的对应关系</strong></p> <table> <thead> <tr> <th>类别</th> <th>对应mode_id</th> </tr> </thead> <tbody> <tr> <td>wifi网关</td> <td>2001</td> </tr> <tr> <td>4G网关</td> <td>2002</td> </tr> <tr> <td>电子锁</td> <td>1011</td> </tr> <tr> <td>GPS模块</td> <td>1010</td> </tr> <tr> <td>温度模块</td> <td>1012</td> </tr> <tr> <td>AGPS模块</td> <td>1013</td> </tr> </tbody> </table> <pre><code> request时的topic: /xm/sh/request/mqtt/1320420010122011/2001/v1 /xm/sh/request/mqtt/网关的sn号/所要控制设备的mode_id/v1 response时的topic: /xm/sh/response/mqtt/1320420010122011/1011/v1 /xm/sh/response/mqtt/网关的sn号/设备的mode_id/v1</code></pre> <h3>action 对应关系</h3> <table> <thead> <tr> <th>action</th> <th>操作</th> </tr> </thead> <tbody> <tr> <td>command</td> <td>正常上报/主动控制设备</td> </tr> <tr> <td>sync</td> <td>网关主动同步所有设备数据</td> </tr> <tr> <td>ota</td> <td>给设备OTA升级</td> </tr> <tr> <td>set_wifi</td> <td>设置wifi网络</td> </tr> <tr> <td>scan_wifi</td> <td>发现周围wifi网络,注意发现不了名称为中文的网络</td> </tr> <tr> <td>restart</td> <td>重启设备</td> </tr> </tbody> </table> <h3>params 解析规则</h3> <p><strong>网关数据示例: 01 2001 00 5e 000000 </strong></p> <table> <thead> <tr> <th>数值</th> <th>内容</th> </tr> </thead> <tbody> <tr> <td>01</td> <td>设备节点id</td> </tr> <tr> <td>2001</td> <td>网关的 mode_id</td> </tr> <tr> <td>00</td> <td>16进制,网关的电量百分比</td> </tr> <tr> <td>5e</td> <td>16进制,网关的信号百分比</td> </tr> <tr> <td>000000</td> <td>未使用,占位</td> </tr> </tbody> </table> <p><strong>电子锁的数据示例: 01 1011 1 1 0012 01 00 </strong></p> <table> <thead> <tr> <th>数值</th> <th>内容</th> </tr> </thead> <tbody> <tr> <td>01</td> <td>设备节点id</td> </tr> <tr> <td>1011</td> <td>锁的 mode_id</td> </tr> <tr> <td>1</td> <td>16进制,需转成2进制,从左往右依次为 1号位 2号位 3号位 4号位,哪一位上是1代表启用了哪一位,如: '0101' 代表1号位跟3号位启用</td> </tr> <tr> <td>1</td> <td>16进制,需转成2进制,从左往右依次为 1号位 2号位 3号位 4号位,与上面对应,0位关闭状态,1为开启,如: '0101' 代表1号位跟3号位开启,其余位置关闭</td> </tr> <tr> <td>0012</td> <td>开锁保持时间</td> </tr> <tr> <td>01</td> <td>是否自动关锁,0:不关,1:保持时间结束后关锁</td> </tr> <tr> <td>00</td> <td>未使用,占位</td> </tr> </tbody> </table> <h3>示例: 开锁</h3> <p><strong>向设备发送的数据</strong></p> <p><strong>topic: /xm/sh/request/mqtt/13204200010XXXXXX/1011/v1 </strong></p> <pre><code class="language-json">{"header":{"timeStamp":""},"payload":{"devices":[{"nodeid":"000","action":"command","params":"0110111100000000"}]}}</code></pre> <p><strong>设备响应数据</strong> <strong>topic: /xm/sh/response/mqtt/13204200010XXXXXX/1011/v1</strong></p> <pre><code class="language-json">{"header":{"timeStamp":""},"payload":{"devices":[{"nodeid":"000","action":"command","params":"0110111100000000"}]}}</code></pre>

页面列表

ITEM_HTML