• 正文
  • 推荐器件
  • 相关推荐
申请入驻 产业图谱

【产品应用】IoT云平台如何识别设备透传的黑盒数据?

2023/06/23
651
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

设备与云平台通信,通常是一串二进制数据,不具备可读性,需要将数据解析成更易读的数据格式。本文将介绍数据解析是什么,以及在ZWS云平台中如何配置解析脚本对设备数据解析。

应用场景

市面上生产的传统设备,往往不具备联网能力,且外界通信主要通过串口传输二进制数据。在将这些设备接入物联网平台,进行数字化管理过程中,会遇到一个问题“如何将上报的二进制数据变成更易读的JSON数据?”,比如:上报 “01040209E8A9”如何变成“温度:25.36℃”,这个将原始数据转换成JSON数据的过程就是数据解析。

数据解析流程

数据解析简化流程:黑盒二进制数据->解析处理->易读JSON数据。

数据解析配置

接下来,我们通过温控器+DTU接入ZWS物联网云平台,来看看温控器数据是如何进行数据解析的。

* 说明:温控器不具备入网能力,这里用DTU作为网关透传。

1. 配置数据模型首先,要在云平台中定义设备类型的数据模型,温控器有温度、湿度两个数据点,所以数据模型配置如下:

后续的解析脚本会按照模型设置的数据点来返回解析后的数据。

2. 配置数据解析脚本

编写解析脚本前,需要先了解设备上报的数据格式,我们来看下温控器读取温湿度的数据帧。温控器使用自定义协议格式的数据帧,格式如下:

以数据0406E219647FE6为例,解析规则对应:04数据长度(表示数据有4个字节)、06E21964 温湿度值、7FE6 校验码。

因此,温控器解析脚本内容如下:

//GroovyUtils为通用解析工具import com.zlgcloud.iotplatform.iotmapping.commons.GroovyUtilsimport java.nio.ByteBuffer;

/** * 将二进制报文解析成物模型的map数据 * * @param rawData 二进制报文 * @return 物模型数据 * @description 方法名必须为rawDataToJson,参数必须是byte[]类型 */static Map<String, Object> rawDataToJson(byte[] rawData) {    Map<String, Object> map = new HashMap<>();    Map<String, Object> dataMap = new HashMap<>();    //定义解析数据的map,key固定为data,用于存放对应事件内字段的数据    map.put("data", dataMap);    //设置数据模型配置中定义的数据点    map.put("event_name", "MX_TEMP_fn.raw");
    //初始温度、湿度为0    float temperature = 0;    float 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;}

说明:

1. 解析脚本中支持对多个数据点进行解析处理,不仅限于两个数据点。
2. 解析脚本中的数据点要与数据模型中配置的一致,否则会解析保存失败。

将编写好的解析脚本配置到温控器的设备类型上:

3. 查看解析后的数据

将解析脚本配置成功后,温控器再次上报原始数据,在云平台中就可以看到解析后的温湿度数据了。

 

 

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
KSZ8041NL-TR 1 Microchip Technology Inc DATACOM, ETHERNET TRANSCEIVER, QCC32

ECAD模型

下载ECAD模型
$1.71 查看
XB3-24Z8PT-J 1 Digi International Inc Telecom Circuit, 1-Func, MODULE-20

ECAD模型

下载ECAD模型
$20.06 查看
AD9361BBCZ 1 Analog Devices Inc RF Agile Transceiver

ECAD模型

下载ECAD模型
$269.47 查看
致远电子

致远电子

广州致远电子股份有限公司成立于2001年,注册资金5000万元,国家级高新技术认证企业,广州市高端工控测量仪器工程技术研究开发中心,Intel ECA全球合作伙伴和微软嵌入式系统金牌合作伙伴。

广州致远电子股份有限公司成立于2001年,注册资金5000万元,国家级高新技术认证企业,广州市高端工控测量仪器工程技术研究开发中心,Intel ECA全球合作伙伴和微软嵌入式系统金牌合作伙伴。收起

查看更多

相关推荐