体征传感器-接口文档


6.MQTT对接BLE广播体征数据教程

<hr /> <h4>1.服务器信息</h4> <p>1.1 服务器地址:mqtt.he-info.cn 1.2 服务器端口:1883 1.3 类型:tcp 1.4 测试账号:iot_device_smartmattres 1.5 测试密码:brj5vYjviaMqzo45R9m3EnZOkSq3Abb0eoiI10ythoLcid7S6P19fr22AaHaM3ky</p> <hr /> <h4>2.数据信息</h4> <p>2.1 发布主题:bgup 2.2 发布消息类型为J001</p> <hr /> <h4>3.ble4.2广播帧搜索算法</h4> <pre><code>uint16_t ble_advdata_search(uint8_t* p_encoded_data,uint16_t data_len,uint16_t* p_offset,uint8_t ad_type) { uint16_t i = 0; while (((i &amp;lt; *p_offset) || (p_encoded_data[i + 1] != ad_type)) &amp;amp;&amp;amp; (i &amp;lt; data_len)) { i += (p_encoded_data[i] + 1); } if (i &amp;gt;= data_len) { return 0; } else { uint16_t offset = i + 2; uint16_t len = p_encoded_data[i] - 1; if ((offset + len) &amp;gt; data_len) { return 0; } *p_offset = offset; return len; } }</code></pre> <h4>4.数据处理</h4> <p>exp1:</p> <pre><code>{ &amp;quot;t&amp;quot;: 1, &amp;quot;u&amp;quot;: &amp;quot;AABB11223344&amp;quot; &amp;quot;m&amp;quot;: &amp;quot;348518b1a3da&amp;quot;, &amp;quot;r&amp;quot;: -45, &amp;quot;d&amp;quot;: &amp;quot;CAlBSVRILVYyFf/t/wNqNIUYsaPYAAAAAeV9YAECAA==&amp;quot; }</code></pre> <p>t:业务类型,必须为1 u:网关设备自己的mac地址 m:当前广播包是哪个设备地址发出的 r:信号强度 d:经过base64编码后的标准ble4.2广播帧 ……………………………………………………………………………………………… 开始解算数据: 1.获取t字段,如果不等于1则丢弃消息 2.获取d字段 d=[CAlBSVRILVYyFf/t/wNqNIUYsaPYAAAAAeV9YAECAA==] 3.base64解码后的二进制数据 array=[0X08,0X09,0X41,0X49,0X54,0X48,0X2D,0X56,0X32,0X15,0XFF,0XED,0XFF,0X03,0X6A,0X34,0X85,0X18,0XB1,0XA3,0XD8,0X00,0X00,0X00,0X01,0XE5,0X7D,0X60,0X01,0X02,0X00] 4.由于体征传感器使用了厂商自定义数据特征码(AD_TYPE=0XFF)进行携带数据,所以需要使用ble_advdata_search算法在array数组中查找ad_type=0XFF的数据并提取出来 5.提取数据</p> <pre><code>uint16_t offset=0; uint16_t ulen = ble_advdata_search(array, array数组的长度, &amp;amp;offset, 0XFF);</code></pre> <p>6.ulen&lt;=0代表搜索失败,当前广播包不存在厂商自定义数据,丢弃即可,本例中ulen=0x14 7.offset代表当前提取到的数据在array的偏移,本例中offset=0x0b 8.由于厂商自定义数据在最开始2字节固定为UUID,体征传感器使用UUID=0xedff作为其服务UUID</p> <pre><code>uint16_t cuuid=array[offset]*256+array[offset+1]</code></pre> <p>9.通过计算得到cuuid,如果cuuid!=0xedff,丢弃数据包即可 10.得到体征传感数据,其开始位置为array+offset+2,长度为ulen-2 11.得到体征传感器数据为:[0X03,0X6A,0X34,0X85,0X18,0XB1,0XA3,0XD8,0X00,0X00,0X00,0X01,0XE5,0X7D,0X60,0X01,0X02,0X00] 12.从上一步得到的数据请使用本系列教程中&lt;5.体征传感器BLE广播协议格式&gt;文档进行下一步解析即可。</p> <hr />

页面列表

ITEM_HTML