登录ZWS物联网云平台,创建设备类型:温控器。
进入设备类型的功能块编辑页面,添加温度、湿度数据字段。
根据业务情况编写数据解析的脚本,提交到物联网云平台。
//GroovyUtils为通用解析工具
import com.zlgcloud.iotplatform.iotmapping.commons.GroovyUtils
import java.nio.ByteBuffer;
/**
* 将二进制报文解析成物模型的map数据
*
* @param rawData 二进制报文
* @return 物模型数据
* @description 方法名必须为rawDataToJson,参数必须是byte[]类型
*/
static Map
rawDataToJson(byte[] rawData) {Map
map = new HashMap<>(); Map
dataMap = new HashMap<>(); //定义解析数据的map,key固定为data,用于存放对应事件内字段的数据
map.put("data", dataMap);
//设置数据模型配置中定义的数据点
map.put("event_name", "thermostat_fn.Temp_data");
//初始温度、湿度为0
float temperature = 0;
int humidity = 0;
//开始解析数据
ByteBuffer byteBuffer = ByteBuffer.wrap(rawData);
//从第0个字节开始读取
int offset = 0;
//读取长度
int dataLen = byteBuffer.get(offset);
offset += 1;
//如果长度为4,则同时解析温度和湿度数据;否则长度就为2,只解析温度数据
if (dataLen == 4) {
// 解析温度
temperature = byteBuffer.getShort(offset);
if (temperature >= 4096) {
// 负值
temperature = -1 * (temperature - 4096);
}
temperature = temperature / 100;
//解析湿度
offset += 2;
humidity = byteBuffer.getShort(offset);
humidity = humidity / 100;
} else {
//解析温度
temperature = byteBuffer.getShort(offset);
if (temperature >= 4096) {
// 负值
temperature = -1 * (temperature - 4096);
}
temperature = temperature / 100;
}
//将数据按数据模型配置定义的格式放入返回值中
dataMap.put("temperature", temperature);
dataMap.put("humidity", humidity);
return map;
}
云端添加温控器设备,通过DTU设备将温控器上线并上报raw数据,在设备详情的实时数据页面,就能查看解析后的温湿度数据。
更多往期文章,请点击“ 阅读原文 ”。