前言
WiFi 定位功能是OneNET 繼基站定位之後最新推出的一項定位服務。(編稿時仍處於灰度測試階段)
然後我有幸參與了WiFi 定位功能的灰度測試,測試成功,在此記錄一下
開始
1)爲設備開啓WiFi 定位功能
-
WiFi 定位功能門戶(編稿時處於半開放狀態,官網不能查詢到,直接點擊下方鏈接進入):
https://open.iot.10086.cn/develop/lbs/#/wifi/wifiab -
登錄OneNET 賬戶
創建好產品、設備。 -
開通WiFi 服務
2)上傳數據
首先進入WiFi 定位開發文檔:
https://open.iot.10086.cn/doc/develop/lbs/book/wifi/introduce.html
可以看到:
要進行WiFi 定位,我們需要做三件事:
- 首先設備需要獲取周邊WiFi 數據並能夠成功訪問互聯網;
ESP8266 輸入AT+CWLAP
指令即可獲取周邊WiFi 信息:
- 然後將WiFi 數據信息上傳到OneNET 平臺;
我們需要向$OneNET_LBS_WIFI
這個數據流上傳規定格式的WiFi 信息數據點,平臺收到數據點後,會將數據點轉化爲對應的經緯度信息。
$OneNET_LBS_WIFI
:
字段名稱 | 數據類型 | 字段 | 是否必填 |
---|---|---|---|
移動用戶識別碼 | String | imsi | 選填,移動用戶識別碼,可以提高精度 |
設備接入基站時對應的網關ip | String | serverip | 選填,可以提高精度,無法定位時,可根據該參數排查問題 |
可以接收到的熱點mac信息 | String | macs | 必填,單mac信息同 mmac,mac之間使用“ |
已連熱點mac信息 | String | mmac | 選填,格式mac,signal,ssid。如:f0:7d:68:9e:7d:18,-41,TPLink,可以提高精度 |
手機mac碼 | String | smac | 選填,可以提高精度,無法定位時,可根據該參數排查問題 |
IOS手機的idfa | String | idfa | 選填,可以提高精度,無法定位時,可根據該參數排查問題 |
對於WiFi 信息數據的上傳和之前上傳傳感器數據的格式有些不一樣,參照MQTT 上傳數據點方式:
https://open.iot.10086.cn/doc/multiprotocol/book/develop/mqtt/api/15.%E4%B8%8A%E4%BC%A0%E6%95%B0%E6%8D%AE%E7%82%B9.html
所以最後我們需要上傳的數據簡單來就是這樣:
這樣一來,我們就得出了需要通過ESP8266 透傳給OneNET 平臺的數據如下 👇:
POST http://api.heclouds.com/devices/xxxxxx666/datapoints HTTP/1.1
api-key: Wl=WlxxxxxxxxxxxxxxxxxxCoo=
Host:api.heclouds.com
Connection:Keep-Alive
Content-Length:154
{"datastreams":[{"id":"$OneNET_LBS_WIFI","datapoints":[{"value":{"macs":"d8:xx:xx:xx:xx:70,-40|00:xx:xx:xx:xx:a2,-88","mmac":"d8:xx:xx:xx:xx:70,-40"}}]}]}
上傳成功 👇:
- 最後調用經緯度查詢API 進行位置的查看
這就比較簡單了,跟着文檔說的走就對了,那我就直接貼出格式:
查詢最新位置:
(發送給OneNET 的GET 請求下面必須有兩行回車)
GET http://api.heclouds.com/devices/xxxxxx666/lbs/latestWifiLocation HTTP/1.1
api-key: Wl=WlxxxxxxxxxxxxxxxxxxCoo=
Host:api.heclouds.com
Connection:close
經緯度正確 👆
查詢歷史軌跡:
(發送給OneNET 的GET 請求下面必須有兩行回車)
GET http://api.heclouds.com/devices/xxxxxx666/lbs/getWifiTrail HTTP/1.1
api-key: WlxxxxxxxxxxxxxxxxxxCoo=
Host:api.heclouds.com
Connection:close