由于IoT 物联网设备分布在全球各地,设备地理位置追踪成为每个物联网企业必须面对的问题。阿里云IoT企业物联网平台为企业提供了基于GPS坐标,移动基站、WiFi热点3种地理位置解析服务,满足不同场景下设备地理定位的诉求。
定位服务的物模型定义
使用IoT 物联网平台的地理位置解析服务,需要为产品创建物模型,添加属性GeoLocation和 事件LocationInfo,如下图:
GPS 定位方案
内置GPS硬件模块的IoT设备,可以直接同步采集到的经纬度坐标信息到云端,存储在物模型的GeoLocation属性中。
物模型GeoLocation属性定义如下:
通信示例如下:
Topic:
/sys/{productKey}/{deviceName}/thing/event/property/post
Payload:
{
"id":1619329267488,
"params":{
"GeoLocation":{
"Altitude":100,
"CoordinateSystem":1,
"Longitude":116.423367,
"Latitude":39.908227
}
},
"version":"1.0",
"method":"thing.event.property.post"
}
设备详情的物模型数据>运行状态可以查看当前设备的地理位置信息,如下图:
WiFi 热点定位方案
设备无GPS模块,或者设备处于室内,可以上报WiFi热点信息,IoT物联网平台会在云端自动解析出设备经纬度信息,为业务系统提供设备定位结果。
物模型LocationInfo事件定义如下:
通信示例如下:
Topic:
/sys/{productKey}/{deviceName}/thing/event/LocationInfo/post
Payload:
{
"id":1619330564988,
"version":"1.0",
"params":{
"mmac":"4c:48:da:26:ea:d9,-56,iot",
"macs":"4c:48:da:26:ea:d8,-56,iot|e6:a4:71:6e:45:83,-58,TPLink-LV4mshO"
},
"method":"thing.event.LocationInfo.post"
}
设备详情的物模型数据>运行状态可以查看当前设备的地理位置信息,如下图:
蜂窝基站定位方案
设备无GPS,采用运营商蜂窝基站接入网络时,可以主动上报蜂窝基站信息,IoT物联网平台会在云端自动解析出设备经纬度信息,为业务系统提供设备定位结果。
物模型LocationInfo事件定义如下:
通信示例如下:
Topic:
/sys/{productKey}/{deviceName}/thing/event/LocationInfo/post
Payload:
{
"id":1619330349204,
"version":"1.0",
"params":{
"cdma":"0",
"bts":"460,0,6257,27781423,45",
"nearbts":"460,0,6257,7807116,41|460,0,6257,7806997,53|460,0,6257,27781413,38|460,0,6257,27781433,57"
},
"method":"thing.event.LocationInfo.post"
}
设备详情的物模型数据>运行状态可以查看当前设备的地理位置信息,如下图:
云上业务系统获取设备位置
云端业务系统通过调用IoT物联网平台的QueryDevicePropertyData API获取设备最新的位置信息,Java调用示例如下:
CommonRequest request = new CommonRequest();
request.setSysMethod(MethodType.POST);
request.setSysDomain("iot.cn-shanghai.aliyuncs.com");
request.setSysVersion("2018-01-20");
request.setSysAction("QueryDevicePropertyData");
request.putQueryParameter("RegionId", "cn-shanghai");
request.putQueryParameter("StartTime", "1618330349204");
request.putQueryParameter("Identifier", "GeoLocation");
request.putQueryParameter("Asc", "0");
request.putQueryParameter("EndTime", "1629330349204");
request.putQueryParameter("PageSize", "10");
request.putQueryParameter("IotInstanceId", "iot-068a03kg");
request.putQueryParameter("ProductKey", "g7palBDnzmT");
request.putQueryParameter("DeviceName", "dk003");
CommonResponse response = client.getCommonResponse(request);
IoT物联网平台返回设备位置信息示例:
{
"RequestId": "C56790F8-AC97-497C-BA86-D7F57F090795",
"Data": {
"NextValid": false,
"NextTime": 1619330564810,
"List": {
"PropertyInfo": [
{
"Value": "{\"altitude\":0,\"CoordinateSystem\":2,\"latitude\":39.9932251,\"longitude\":116.4727718}",
"Time": 1619330564811
}
]
}
},
"Code": "",
"Success": true
}
设备地理发布大盘
基于以上多种地理位置解析服务,IoT物联网平台为企业提供了可视化的运维大盘,可以轻松查看设备地理分布。
往期推荐