Analysis of binary data reported by equipment on IoT platform
Related Tags:1.IoT Platform
2. AliwareMQ for IoT
Abstract: The practice of parsing the binary data reported by the device on the IoT platform
In the IoT scenario, many sensors collect private protocol binary data streams, and the device side does not have the ability to convert them into structured JSON. At this time, the device can report binary data through a custom topic. The IoT IoT platform supports cloud configuration parsing scripts, which can be dynamically converted into structured JSON data.
1: Define the topic and data format rules of binary reporting
2: The cloud pre configures the JS parsing script for the original data of the specified topic
3: After the script parses the simulation data input and verifies that the script business logic is correct, submit it to the IoT cloud
4: Run the device and specify the topic to report the original data
5: Cloud Log Service View Data Analysis Process
We take the watch as an example. The sensor reports hex data to the IoT Internet of Things platform, analyzes it in the cloud, and finally transfers it to the business system with structured JSON.
Private protocol data conversion link:
Changes before and after message conversion:
Product definition and message communication topic selection
Data conversion script
raw data:
0x035e8192fd0000000d0000001b00000a8c
Full script content
/**
*Convert the device customized topic data to json format data, and call when the device reports the data to the Internet of Things platform
*Input parameter: topic string, topic of the reported message by the device
*Input parameter: rawData byte [] array cannot be empty
*Output parameter: jsonObj JSON object cannot be empty
*/
function transformPayload(topic, rawData) {
var jsonObj = {}
/*
Raw hex data: 0x035e8192fd0000000d0000001b00000a8c
JSON data after conversion:
{
"heartbeat": 15,
"id": 1585549855,
"steps": 2700,
"speed": 56
}
*/
if (topic.endsWith('/user/update')) {
var uint8Array = new Uint8Array(rawData.length);
for (var i = 0; i < rawData.length; i++) {
uint8Array[i] = rawData[i] & 0xff;
}
var dataView = new DataView(uint8Array.buffer, 0);
var fHead = uint8Array[0]; // command
if (fHead == 0x03) {
//
jsonObj['id'] = dataView.getInt32(1);
//Heartbeat
jsonObj['heartbeat'] = dataView.getInt32(5);
//Speed
jsonObj['speed'] = dataView.getInt32(9);
//Total Steps
jsonObj['steps'] = dataView.getInt32(13);
}
}
return jsonObj;
}
Code snippet for equipment reporting hex raw data:
const mqtt = require('aliyun-iot-mqtt');
//Device Identity
const options = {
productKey: "a1kaK7XC8oB",
deviceName: "BlXj1yasMJXmpKxymoUC",
deviceSecret: "41798535d799c60c8f67f02efd28b01c",
regionId: "cn-shanghai"
};
//Establish a connection
const client = mqtt.getAliyunIotMqttClient(options);
//Is the message topic carried_ Sn=default ID
const topic = `/${options.productKey}/${options.deviceName}/user/update?_ sn=default`;
//Raw data
var payloadArray = [ 3, 94, 129, 169, 59, 0, 0, 0, 23, 0, 0, 0, 79, 0, 0, 30, 220 ];
var payload = new Buffer(payloadArray);
//Publish data to topic
client. publish(topic, payload);
2. AliwareMQ for IoT
Abstract: The practice of parsing the binary data reported by the device on the IoT platform
Analysis of binary data reported by equipment on IoT platform
In the IoT scenario, many sensors collect private protocol binary data streams, and the device side does not have the ability to convert them into structured JSON. At this time, the device can report binary data through a custom topic. The IoT IoT platform supports cloud configuration parsing scripts, which can be dynamically converted into structured JSON data.
The complete end-to-end development process is as follows:
1: Define the topic and data format rules of binary reporting
2: The cloud pre configures the JS parsing script for the original data of the specified topic
3: After the script parses the simulation data input and verifies that the script business logic is correct, submit it to the IoT cloud
4: Run the device and specify the topic to report the original data
5: Cloud Log Service View Data Analysis Process
We take the watch as an example. The sensor reports hex data to the IoT Internet of Things platform, analyzes it in the cloud, and finally transfers it to the business system with structured JSON.
1. Technical architecture scheme
Private protocol data conversion link:
Changes before and after message conversion:
2 Cloud development
Product definition and message communication topic selection
Data conversion script
raw data:
0x035e8192fd0000000d0000001b00000a8c
Full script content
/**
*Convert the device customized topic data to json format data, and call when the device reports the data to the Internet of Things platform
*Input parameter: topic string, topic of the reported message by the device
*Input parameter: rawData byte [] array cannot be empty
*Output parameter: jsonObj JSON object cannot be empty
*/
function transformPayload(topic, rawData) {
var jsonObj = {}
/*
Raw hex data: 0x035e8192fd0000000d0000001b00000a8c
JSON data after conversion:
{
"heartbeat": 15,
"id": 1585549855,
"steps": 2700,
"speed": 56
}
*/
if (topic.endsWith('/user/update')) {
var uint8Array = new Uint8Array(rawData.length);
for (var i = 0; i < rawData.length; i++) {
uint8Array[i] = rawData[i] & 0xff;
}
var dataView = new DataView(uint8Array.buffer, 0);
var fHead = uint8Array[0]; // command
if (fHead == 0x03) {
//
jsonObj['id'] = dataView.getInt32(1);
//Heartbeat
jsonObj['heartbeat'] = dataView.getInt32(5);
//Speed
jsonObj['speed'] = dataView.getInt32(9);
//Total Steps
jsonObj['steps'] = dataView.getInt32(13);
}
}
return jsonObj;
}
3 Device side development
Code snippet for equipment reporting hex raw data:
const mqtt = require('aliyun-iot-mqtt');
//Device Identity
const options = {
productKey: "a1kaK7XC8oB",
deviceName: "BlXj1yasMJXmpKxymoUC",
deviceSecret: "41798535d799c60c8f67f02efd28b01c",
regionId: "cn-shanghai"
};
//Establish a connection
const client = mqtt.getAliyunIotMqttClient(options);
//Is the message topic carried_ Sn=default ID
const topic = `/${options.productKey}/${options.deviceName}/user/update?_ sn=default`;
//Raw data
var payloadArray = [ 3, 94, 129, 169, 59, 0, 0, 0, 23, 0, 0, 0, 79, 0, 0, 30, 220 ];
var payload = new Buffer(payloadArray);
//Publish data to topic
client. publish(topic, payload);
Related Articles
-
A detailed explanation of Hadoop core architecture HDFS
Knowledge Base Team
-
What Does IOT Mean
Knowledge Base Team
-
6 Optional Technologies for Data Storage
Knowledge Base Team
-
What Is Blockchain Technology
Knowledge Base Team
Explore More Special Offers
-
Short Message Service(SMS) & Mail Service
50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00