关于传感器:设备上报二进制数据在-IoT-平台解析实践实践类

5次阅读

共计 1915 个字符,预计需要花费 5 分钟才能阅读完成。

设施上报二进制数据在 IoT 平台解析实际

在 IoT 场景中,很多传感器采集到的是公有协定二进制数据流,设施端又不具备转换成结构化 JSON 的能力,这时设施能够通过自定义 Topic 上报二进制数据,在 IoT 物联网平台反对云端配置解析脚本,动静转换成结构化的 JSON 数据。

残缺端到端开发过程如下
1. 明确二进制上报的 Topic 和数据格式规定
2. 云端事后配置针对指定 Topic 的原始数据配置 JS 解析脚本
3. 在脚本解析模仿数据输出,校验脚本业务逻辑正确后,提交到 IoT 云端
4. 运行设施,指定 Topic 上报原始数据
5. 云端日志服务查看数据解析过程

咱们以手表为例,传感器上报 hex 进制数据,到 IoT 物联网平台,在云端解析,最终以结构化 JSON 流转到业务零碎。

1. 技术架构计划

公有协定数据转换链路

音讯转换前后变动:

2 云端开发产

品定义和音讯通信 Topic 抉择

数据转换脚本
原始数据:0x035e8192fd0000000d0000001b00000a8c
数据业务格局:

云端产品数据解析脚本配置

残缺脚本内容

/**
 * 将设施自定义 topic 数据转换为 json 格局数据, 设施上报数据到物联网平台时调用
 * 入参:topic   字符串,设施上报音讯的 topic
 * 入参:rawData byte[]数组                  不能为空
 * 出参:jsonObj JSON 对象                    不能为空
 */
function transformPayload(topic, rawData) {var jsonObj = {}
/*
原始 hex 数据 : 0x035e8192fd0000000d0000001b00000a8c
转换后 JSON 数据 : 
{
  "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);
                // 心跳
                jsonObj['heartbeat'] = dataView.getInt32(5);
                // 速度
                jsonObj['speed'] = dataView.getInt32(9);
                // 总步数
                jsonObj['steps'] = dataView.getInt32(13);
            }
    }
    return jsonObj;
}

3 设施端开发

设施上报 hex 原始数据的代码片段:

const mqtt = require('aliyun-iot-mqtt');

// 设施身份
const options = {
    productKey: "a1kaK7XC8oB",
    deviceName: "BlXj1yasMJXmpKxymoUC",
    deviceSecret: "41798535d799c60c8f67f02efd28b01c",
    regionId: "cn-shanghai"
};

// 建设连贯
const client = mqtt.getAliyunIotMqttClient(options);

// 音讯 Topic 携带?_sn=default 标识
const topic = `/${options.productKey}/${options.deviceName}/user/update?_sn=default`;
// 原始数据
var payloadArray = [3, 94, 129, 169, 59, 0, 0, 0, 23, 0, 0, 0, 79, 0, 0, 30, 220];
var payload = new Buffer(payloadArray);

// 公布数据到 topic
client.publish(topic, payload);

4 运行日志

设施上报原始 hex 数据日志

往期举荐

1、39 张传感器工作原理 GIF 图汇总
2、智能手持测温枪开发实际
3、JMeter 压测 MQTT 服务性能实战
4、IoT 物联网平台日志服务详解
5、自建 MQTT 集群迁徙阿里云 IoT 实际
6、工业 Modbus 电力 104 规约接入 IoT 平台
7、设施免烧录三元组,即时注册解决方案
8、IoT+TSDB+Quick BI 搭建楼宇环境监控
9、JS 全栈开发,构建智能家居小程序

物联网平台产品介绍详情:https://www.aliyun.com/produc…

             阿里云物联网平台客户交换群
正文完
 0