金桔藍牙基站默認是常開藍牙掃描,經過金桔ACserver能夠關閉基站的藍牙掃描功能,金桔藍牙基站主要對四種設備進行掃描傳輸:beacon設備(錨點設備),金桔定位設備(定位卡,定位手環,資產定位等),通常藍牙廣播設備和中繼。用戶對接第三方藍牙設備屬於通常藍牙廣播設備,注意,儘可能對某一類數據進行掃描透傳數據,若是開多種數據透傳,那麼下降基站帶的節點數量,如下對金桔ACserver配置基站參數的說明:javascript
基站透傳通常藍牙廣播數據開啓,好比第三方藍牙設備。若是用戶須要透傳第三方設備數據,須要打開此功能,此功能須要配合其餘幾個參數來用,如下將分參數說明如何接入第三方的藍牙設備。java
廠商數據是藍牙標準裏0xFF段數據,藍牙標準裏規定廠商自定義的數據放在此數據段裏,因此大多數的標準藍牙設備只要廠商部分數據便可(跟設備廠家相關)。例如,咱們在手機上找個藍牙設備:node
看起來是一個蘋果的藍牙設備,咱們看下廣播格式:ide
咱們不用關係其餘的段數據,發現這個數據有0xFF段數據,咱們打開基站的廣播 透傳功能,並暫時關閉過濾(參見地址過濾),咱們這樣設置金桔藍牙基站:編碼
咱們看下透傳的數據,由於沒有開過濾,全部掃描到的藍牙數據都透傳過濾因此數據比較多:code
{ "Gateway": "10000060", "NodeId": "00000000", "SystemId": "10990145", "Type": "ble_station_online", "online": [ { "addr": "8C34DC964241", "adv": "07,0F,00,02,20,41,42,96,DC,34,8C,F5,64,E4,58,09,00", "advType": "adv", "nodeType": "node", "rssi": -73 }, { "addr": "76E1DAB29237", "adv": "01,09,20,02,39,F9,C5,F7,28,AE,6A,A6,05,DA,BB,98,04,F3,A5,EC,E6,91,EE,3B,C3,3E,3C", "advType": "adv", "nodeType": "node", "rssi": -48 }, { "addr": "100000054342", "adv": "03,10,00,00,60,EA,02,3B,10", "advType": "adv", "nodeType": "node", "rssi": -22 }, { "addr": "297D1285EC5F", "adv": "10,05,41,1C,61,98,20", "advType": "adv", "nodeType": "node", "rssi": -48 }, { "addr": "DD0E5AAD62EA", "adv": "02,15,B5,B1,82,C7,EA,B1,49,88,AA,99,B5,C1,51,70,08,D9,00,01,DD,0E,C5", "advType": "adv", "nodeType": "node", "rssi": -61 }, { "addr": "DCB951E05C48", "adv": "10,05,03,1C,B1,22,85", "advType": "adv", "nodeType": "node", "rssi": -70 }, { "addr": "EBB6CA6BD71D", "adv": "01,09,20,02,9D,90,CA,D0,D9,5F,85,DA,CE,49,0E,AE,B4,8C,15,AF,20,8D,FF,82,CC,A8,70", "advType": "adv", "nodeType": "node", "rssi": -75 }, { "addr": "E48B86593B18", "adv": "01,09,20,02,84,42,8C,BD,D4,81,77,18,DB,66,3D,AF,C9,F3,8C,1A,A7,0E,65,6D,4B,F4,7D", "advType": "adv", "nodeType": "node", "rssi": -77 }, { "addr": "E20D237D282D", "adv": "01,09,20,02,A6,82,56,06,7B,BE,0C,90,98,E9,A2,9D,E6,B3,1B,0C,FF,6A,AE,D4,F5,25,D0", "advType": "adv", "nodeType": "node", "rssi": -66 }, { "addr": "E60BF9204B5A", "adv": "10,05,13,1C,DE,96,FF", "advType": "adv", "nodeType": "node", "rssi": -69 }, { "addr": "A97F4F3FF742", "adv": "10,06,17,1E,57,BD,E5,E8", "advType": "adv", "nodeType": "node", "rssi": -72 }, { "addr": "3137F8BA387F", "adv": "10,05,54,1C,95,76,94", "advType": "adv", "nodeType": "node", "rssi": -68 }, { "addr": "8B55C7C37A79", "adv": "10,05,13,18,B0,B5,D6", "advType": "adv", "nodeType": "node", "rssi": -83 } ] }
咱們只關心其中是41:42:96:DC:34:8C 的設備,注意,基站解析地址是小字節序跟手機上的地址正好相反因此咱們要找地址爲8c34dc964241的設備server
{ "addr": "8C34DC964241", "adv": "07,0F,00,02,20,41,42,96,DC,34,8C,F5,64,E4,58,09,00", "advType": "adv", "nodeType": "node", "rssi": -73 },
咱們看下adv字段裏就是該設備廣播的數據跟上圖手機上的廠商數據是一致的。blog
上個例子中,咱們透傳的數據中沒有包含0x4c00 這兩位的廠商編碼,通常來講這兩位是固定的,是廠商的編碼,因此不包含在數據當中,當咱們打開基站設置的的這個功能時就能夠包含廠商編碼,例如咱們這樣設置基站:ip
咱們再次看一下透傳數據,咱們只看41:42:96:DC:34:8C 的設備:it
{ "addr": "8C34DC964241", "adv": "4C,00,07,0F,00,02,20,41,42,96,DC,34,8C,F5,18,E4,4A,09,00", "advType": "adv", "nodeType": "node", "rssi": -72 }
透傳的數據包含4C00 是整個0xFF(廠商數據)段數據。
注意,廠商編碼開啓或者關閉,只有在開啓透傳廠商數據功能開啓時纔有效,若是廠商數據功能關閉,這個功能開啓與否沒有效果。
若是咱們關閉了透傳廠商數據將是透傳整個藍牙廣播包,咱們先看下手機上的一個藍牙設備的數據,這裏咱們隨機找一個設備:
咱們這樣設置藍牙基站:
咱們再看一下廣播的數據:
{ "addr": "C789AF11577B", "adv": "02,01,06,0A,FF,4C,00,10,05,07,1C,22,81,34", "advType": "adv", "nodeType": "node", "rssi": -71 }
跟手機看到的原始廣播包是一致的。
藍牙廣播的標準原始數據格式是:段長度+段類型+段數據,如上面的例子02 是長度 01是類型(廣播標誌) 06是數據;再日後,0A又是長度,FF是類型(廠商數據)後面是10個字節的數據。