設備與云平臺通信,通常是一串二進制數據,不具備可讀性,需要將數據解析成更易讀的數據格式。本文將介紹數據解析是什么,以及在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 rawDataToJson(byte[] rawData) { Map map = new HashMap<>(); Map 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.查看解析后的數據
將解析腳本配置成功后,溫控器再次上報原始數據,在云平臺中就可以看到解析后的溫濕度數據了。
-
IOT
+關注
關注
187文章
4207瀏覽量
196734
發布評論請先 登錄
相關推薦
評論