前言
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
来源:CSDN
作者:Waao666
链接:https://blog.csdn.net/weixin_40973138/article/details/103933578