配置LoRa网关后,您需要在物联网平台上创建LoRa产品和设备,定义物模型,编写和提交LoRa设备的数据解析脚本。
创建产品和设备
在物联网平台注册LoRa产品和设备。
定义物模型
本示例中,气象监测设备上报温度、湿度、气压、地理位置坐标等信息。因此,先在物联网平台上,为以上信息定义数据模型,即定义对应的属性。
编写数据解析脚本
本示例中LoRa设备上报的数据是二进制格式,例如01880537A5109D5A00846C
。其中 1、2 字节为数据标识码01 88
;3、4、5字节为海拔数据altitude:339m
;6、7、8字节为纬度数据latitude:34.1925
;9、10、11字节为经度数据longitude:108.8858
。
阿里云物联网平台的标准数据格式为Alink JSON格式,不能直接使用二进制数据进行业务处理,且物联网平台下发的数据也是Alink JSON格式。对此,物联网平台提供数据解析功能,您可以依据设备数据格式和物模型,编写数据解析脚本,提交至物联网平台,以供物联网平台调用来解析设备的上下行数据。
附录:物模型TSL
使用时,请替换productKey值为您实际产品的ProductKey值。
{
"schema": "https://iotx-tsl.oss-ap-southeast-1.aliyuncs.com/schema.json",
"profile": {
"version": "1.0",
"productKey": "a1****WRg"
},
"properties": [
{
"identifier": "Temperature",
"name": "温度",
"accessMode": "rw",
"required": false,
"dataType": {
"type": "double",
"specs": {
"min": "-99",
"max": "100",
"unit": "°C",
"unitName": "摄氏度",
"step": "0.01"
}
}
},
{
"identifier": "Humidity",
"name": "湿度",
"accessMode": "rw",
"required": false,
"dataType": {
"type": "double",
"specs": {
"min": "1",
"max": "100",
"unit": "%",
"unitName": "百分比",
"step": "0.01"
}
}
},
{
"identifier": "Atmosphere",
"name": "大气压",
"accessMode": "rw",
"required": false,
"dataType": {
"type": "float",
"specs": {
"min": "550",
"max": "1060",
"unit": "hPa",
"unitName": "百帕",
"step": "0.01"
}
}
},
{
"identifier": "Longitude",
"name": "经度",
"accessMode": "rw",
"required": false,
"dataType": {
"type": "double",
"specs": {
"min": "-180",
"max": "180",
"unit": "°",
"unitName": "度",
"step": "0.01"
}
}
},
{
"identifier": "Latitude",
"name": "纬度",
"accessMode": "rw",
"required": false,
"dataType": {
"type": "double",
"specs": {
"min": "-90",
"max": "90",
"unit": "°",
"unitName": "度",
"step": "0.01"
}
}
},
{
"identifier": "Altitude",
"name": "海拔",
"accessMode": "rw",
"required": false,
"dataType": {
"type": "float",
"specs": {
"min": "0",
"max": "9999",
"unit": "m",
"unitName": "米",
"step": "0.01"
}
}
},
{
"identifier": "Acceleration_X",
"name": "X加速度",
"accessMode": "rw",
"required": false,
"dataType": {
"type": "float",
"specs": {
"min": "-1000",
"max": "1000",
"unit": "mg",
"unitName": "毫克",
"step": "0.01"
}
}
},
{
"identifier": "Acceleration_Y",
"name": "Y加速度",
"accessMode": "rw",
"required": false,
"dataType": {
"type": "float",
"specs": {
"min": "-1000",
"max": "1000",
"unit": "mg",
"unitName": "毫克",
"step": "0.01"
}
}
},
{
"identifier": "Acceleration_Z",
"name": "Z加速度",
"accessMode": "rw",
"required": false,
"dataType": {
"type": "float",
"specs": {
"min": "-1000",
"max": "1000",
"unit": "mg",
"unitName": "毫克",
"step": "0.01"
}
}
},
{
"identifier": "Speed",
"name": "运行速度",
"accessMode": "rw",
"required": false,
"dataType": {
"type": "float",
"specs": {
"min": "-10000",
"max": "10000",
"unit": "km/h",
"unitName": "千米每小时",
"step": "0.01"
}
}
},
{
"identifier": "Battery_voltage",
"name": "电池电压",
"accessMode": "rw",
"required": false,
"dataType": {
"type": "float",
"specs": {
"min": "0",
"max": "100000",
"unit": "V",
"unitName": "伏特",
"step": "0.01"
}
}
},
{
"identifier": "Gas_resistance",
"name": "气体阻力",
"accessMode": "rw",
"required": false,
"dataType": {
"type": "float",
"specs": {
"min": "-10000",
"max": "10000",
"step": "0.01"
}
}
}
],
"events": [
{
"identifier": "post",
"name": "post",
"type": "info",
"required": true,
"desc": "属性上报",
"method": "thing.event.property.post",
"outputData": [
{
"identifier": "Temperature",
"name": "温度",
"dataType": {
"type": "double",
"specs": {
"min": "-99",
"max": "100",
"unit": "°C",
"unitName": "摄氏度",
"step": "0.01"
}
}
},
{
"identifier": "Humidity",
"name": "湿度",
"dataType": {
"type": "double",
"specs": {
"min": "1",
"max": "100",
"unit": "%",
"unitName": "百分比",
"step": "0.01"
}
}
},
{
"identifier": "Atmosphere",
"name": "大气压",
"dataType": {
"type": "float",
"specs": {
"min": "550",
"max": "1060",
"unit": "hPa",
"unitName": "百帕",
"step": "0.01"
}
}
},
{
"identifier": "Longitude",
"name": "经度",
"dataType": {
"type": "double",
"specs": {
"min": "-180",
"max": "180",
"unit": "°",
"unitName": "度",
"step": "0.01"
}
}
},
{
"identifier": "Latitude",
"name": "纬度",
"dataType": {
"type": "double",
"specs": {
"min": "-90",
"max": "90",
"unit": "°",
"unitName": "度",
"step": "0.01"
}
}
},
{
"identifier": "Altitude",
"name": "海拔",
"dataType": {
"type": "float",
"specs": {
"min": "0",
"max": "9999",
"unit": "m",
"unitName": "米",
"step": "0.01"
}
}
},
{
"identifier": "Acceleration_X",
"name": "X加速度",
"dataType": {
"type": "float",
"specs": {
"min": "-1000",
"max": "1000",
"unit": "mg",
"unitName": "毫克",
"step": "0.01"
}
}
},
{
"identifier": "Acceleration_Y",
"name": "Y加速度",
"dataType": {
"type": "float",
"specs": {
"min": "-1000",
"max": "1000",
"unit": "mg",
"unitName": "毫克",
"step": "0.01"
}
}
},
{
"identifier": "Acceleration_Z",
"name": "Z加速度",
"dataType": {
"type": "float",
"specs": {
"min": "-1000",
"max": "1000",
"unit": "mg",
"unitName": "毫克",
"step": "0.01"
}
}
},
{
"identifier": "Speed",
"name": "运行速度",
"dataType": {
"type": "float",
"specs": {
"min": "-10000",
"max": "10000",
"unit": "km/h",
"unitName": "千米每小时",
"step": "0.01"
}
}
},
{
"identifier": "Battery_voltage",
"name": "电池电压",
"dataType": {
"type": "float",
"specs": {
"min": "0",
"max": "100000",
"unit": "V",
"unitName": "伏特",
"step": "0.01"
}
}
},
{
"identifier": "Gas_resistance",
"name": "气体阻力",
"dataType": {
"type": "float",
"specs": {
"min": "-10000",
"max": "10000",
"step": "0.01"
}
}
}
]
}
],
"services": [
{
"identifier": "set",
"name": "set",
"required": true,
"callType": "async",
"desc": "属性设置",
"method": "thing.service.property.set",
"inputData": [
{
"identifier": "Temperature",
"name": "温度",
"dataType": {
"type": "double",
"specs": {
"min": "-99",
"max": "100",
"unit": "°C",
"unitName": "摄氏度",
"step": "0.01"
}
}
},
{
"identifier": "Humidity",
"name": "湿度",
"dataType": {
"type": "double",
"specs": {
"min": "1",
"max": "100",
"unit": "%",
"unitName": "百分比",
"step": "0.01"
}
}
},
{
"identifier": "Atmosphere",
"name": "大气压",
"dataType": {
"type": "float",
"specs": {
"min": "550",
"max": "1060",
"unit": "hPa",
"unitName": "百帕",
"step": "0.01"
}
}
},
{
"identifier": "Longitude",
"name": "经度",
"dataType": {
"type": "double",
"specs": {
"min": "-180",
"max": "180",
"unit": "°",
"unitName": "度",
"step": "0.01"
}
}
},
{
"identifier": "Latitude",
"name": "纬度",
"dataType": {
"type": "double",
"specs": {
"min": "-90",
"max": "90",
"unit": "°",
"unitName": "度",
"step": "0.01"
}
}
},
{
"identifier": "Altitude",
"name": "海拔",
"dataType": {
"type": "float",
"specs": {
"min": "0",
"max": "9999",
"unit": "m",
"unitName": "米",
"step": "0.01"
}
}
},
{
"identifier": "Acceleration_X",
"name": "X加速度",
"dataType": {
"type": "float",
"specs": {
"min": "-1000",
"max": "1000",
"unit": "mg",
"unitName": "毫克",
"step": "0.01"
}
}
},
{
"identifier": "Acceleration_Y",
"name": "Y加速度",
"dataType": {
"type": "float",
"specs": {
"min": "-1000",
"max": "1000",
"unit": "mg",
"unitName": "毫克",
"step": "0.01"
}
}
},
{
"identifier": "Acceleration_Z",
"name": "Z加速度",
"dataType": {
"type": "float",
"specs": {
"min": "-1000",
"max": "1000",
"unit": "mg",
"unitName": "毫克",
"step": "0.01"
}
}
},
{
"identifier": "Speed",
"name": "运行速度",
"dataType": {
"type": "float",
"specs": {
"min": "-10000",
"max": "10000",
"unit": "km/h",
"unitName": "千米每小时",
"step": "0.01"
}
}
},
{
"identifier": "Battery_voltage",
"name": "电池电压",
"dataType": {
"type": "float",
"specs": {
"min": "0",
"max": "100000",
"unit": "V",
"unitName": "伏特",
"step": "0.01"
}
}
},
{
"identifier": "Gas_resistance",
"name": "气体阻力",
"dataType": {
"type": "float",
"specs": {
"min": "-10000",
"max": "10000",
"step": "0.01"
}
}
}
],
"outputData": []
},
{
"identifier": "get",
"name": "get",
"required": true,
"callType": "async",
"desc": "属性获取",
"method": "thing.service.property.get",
"inputData": [
"Temperature",
"Humidity",
"Atmosphere",
"Longitude",
"Latitude",
"Altitude",
"Acceleration_X",
"Acceleration_Y",
"Acceleration_Z",
"Speed",
"Battery_voltage",
"Gas_resistance"
],
"outputData": [
{
"identifier": "Temperature",
"name": "温度",
"dataType": {
"type": "double",
"specs": {
"min": "-99",
"max": "100",
"unit": "°C",
"unitName": "摄氏度",
"step": "0.01"
}
}
},
{
"identifier": "Humidity",
"name": "湿度",
"dataType": {
"type": "double",
"specs": {
"min": "1",
"max": "100",
"unit": "%",
"unitName": "百分比",
"step": "0.01"
}
}
},
{
"identifier": "Atmosphere",
"name": "大气压",
"dataType": {
"type": "float",
"specs": {
"min": "550",
"max": "1060",
"unit": "hPa",
"unitName": "百帕",
"step": "0.01"
}
}
},
{
"identifier": "Longitude",
"name": "经度",
"dataType": {
"type": "double",
"specs": {
"min": "-180",
"max": "180",
"unit": "°",
"unitName": "度",
"step": "0.01"
}
}
},
{
"identifier": "Latitude",
"name": "纬度",
"dataType": {
"type": "double",
"specs": {
"min": "-90",
"max": "90",
"unit": "°",
"unitName": "度",
"step": "0.01"
}
}
},
{
"identifier": "Altitude",
"name": "海拔",
"dataType": {
"type": "float",
"specs": {
"min": "0",
"max": "9999",
"unit": "m",
"unitName": "米",
"step": "0.01"
}
}
},
{
"identifier": "Acceleration_X",
"name": "X加速度",
"dataType": {
"type": "float",
"specs": {
"min": "-1000",
"max": "1000",
"unit": "mg",
"unitName": "毫克",
"step": "0.01"
}
}
},
{
"identifier": "Acceleration_Y",
"name": "Y加速度",
"dataType": {
"type": "float",
"specs": {
"min": "-1000",
"max": "1000",
"unit": "mg",
"unitName": "毫克",
"step": "0.01"
}
}
},
{
"identifier": "Acceleration_Z",
"name": "Z加速度",
"dataType": {
"type": "float",
"specs": {
"min": "-1000",
"max": "1000",
"unit": "mg",
"unitName": "毫克",
"step": "0.01"
}
}
},
{
"identifier": "Speed",
"name": "运行速度",
"dataType": {
"type": "float",
"specs": {
"min": "-10000",
"max": "10000",
"unit": "km/h",
"unitName": "千米每小时",
"step": "0.01"
}
}
},
{
"identifier": "Battery_voltage",
"name": "电池电压",
"dataType": {
"type": "float",
"specs": {
"min": "0",
"max": "100000",
"unit": "V",
"unitName": "伏特",
"step": "0.01"
}
}
},
{
"identifier": "Gas_resistance",
"name": "气体阻力",
"dataType": {
"type": "float",
"specs": {
"min": "-10000",
"max": "10000",
"step": "0.01"
}
}
}
]
}
]
}