设备上报二进制数据在 IoT 平台解析实践

简介: 设备上报二进制数据在 IoT 平台解析实践

设备上报二进制数据在 IoT 平台解析实践


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

完整端到端开发过程如下:

  1. 明确二进制上报的Topic和数据格式规则
  2. 云端预先配置针对指定Topic的原始数据配置JS解析脚本
  3. 在脚本解析模拟数据输入,校验脚本业务逻辑正确后,提交到IoT云端
  4. 运行设备,指定Topic上报原始数据
  5. 云端日志服务查看数据解析过程

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

1.技术架构方案

私有协议数据转换链路:

消息转换前后变化:

2云端开发

产品定义和消息通信Topic选择
image.png

数据转换脚本
原始数据:
0x035e8192fd0000000d0000001b00000a8c

数据业务格式:
image.png
云端产品数据解析脚本配置
image.png

完整脚本内容

/**
 * 将设备自定义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数据日志

image.png

往期推荐

[

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

相关文章
|
3天前
|
存储 缓存 安全
Java内存模型深度解析:从理论到实践####
【10月更文挑战第21天】 本文深入探讨了Java内存模型(JMM)的核心概念与底层机制,通过剖析其设计原理、内存可见性问题及其解决方案,结合具体代码示例,帮助读者构建对JMM的全面理解。不同于传统的摘要概述,我们将直接以故事化手法引入,让读者在轻松的情境中领略JMM的精髓。 ####
20 6
|
18天前
|
编解码 前端开发 UED
探索无界:前端开发中的响应式设计深度解析与实践####
【10月更文挑战第29天】 本文深入探讨了响应式设计的核心理念,即通过灵活的布局、媒体查询及弹性图片等技术手段,使网站能够在不同设备上提供一致且优质的用户体验。不同于传统摘要概述,本文将以一次具体项目实践为引,逐步剖析响应式设计的关键技术点,分享实战经验与避坑指南,旨在为前端开发者提供一套实用的响应式设计方法论。 ####
40 4
|
19天前
|
安全 编译器 PHP
PHP 8新特性解析与实践应用####
————探索PHP 8的创新功能及其在现代Web开发中的实际应用
|
21天前
|
机器学习/深度学习 人工智能 自然语言处理
医疗行业的语音识别技术解析:AI多模态能力平台的应用与架构
AI多模态能力平台通过语音识别技术,实现实时转录医患对话,自动生成结构化数据,提高医疗效率。平台具备强大的环境降噪、语音分离及自然语言处理能力,支持与医院系统无缝集成,广泛应用于门诊记录、多学科会诊和急诊场景,显著提升工作效率和数据准确性。
|
28天前
|
存储 安全 Java
系统安全架构的深度解析与实践:Java代码实现
【11月更文挑战第1天】系统安全架构是保护信息系统免受各种威胁和攻击的关键。作为系统架构师,设计一套完善的系统安全架构不仅需要对各种安全威胁有深入理解,还需要熟练掌握各种安全技术和工具。
80 10
|
24天前
|
存储 JSON 运维
智能物联网平台:Azure IoT Hub在设备管理中的实践
【10月更文挑战第26天】随着物联网技术的发展,Azure IoT Hub成为企业管理和连接数百万台设备的强大平台。本文介绍Azure IoT Hub的设备管理功能,包括设备注册、设备孪生、直接方法和监控诊断,并通过示例代码展示其应用。
37 4
|
27天前
|
存储 弹性计算 NoSQL
"从入门到实践,全方位解析云服务器ECS的秘密——手把手教你轻松驾驭阿里云的强大计算力!"
【10月更文挑战第23天】云服务器ECS(Elastic Compute Service)是阿里云提供的基础云计算服务,允许用户在云端租用和管理虚拟服务器。ECS具有弹性伸缩、按需付费、简单易用等特点,适用于网站托管、数据库部署、大数据分析等多种场景。本文介绍ECS的基本概念、使用场景及快速上手指南。
69 3
|
30天前
|
PHP 数据安全/隐私保护 开发者
PHP 7新特性解析与实践
【10月更文挑战第20天】本文将深入浅出地介绍PHP 7的新特性,包括性能提升、语法改进等方面。我们将通过实际代码示例,展示如何利用这些新特性优化现有项目,提高开发效率。无论你是PHP新手还是资深开发者,都能从中获得启发和帮助。
|
30天前
|
人工智能 资源调度 数据可视化
【AI应用落地实战】智能文档处理本地部署——可视化文档解析前端TextIn ParseX实践
2024长沙·中国1024程序员节以“智能应用新生态”为主题,吸引了众多技术大咖。合合信息展示了“智能文档处理百宝箱”的三大工具:可视化文档解析前端TextIn ParseX、向量化acge-embedding模型和文档解析测评工具markdown_tester,助力智能文档处理与知识管理。
|
1月前
|
设计模式 存储 数据库连接
PHP中的设计模式:单例模式的深入解析与实践
在PHP开发中,设计模式是提高代码可维护性、扩展性和复用性的关键技术之一。本文将通过探讨单例模式,一种最常用的设计模式,来揭示其在PHP中的应用及优势。单例模式确保一个类仅有一个实例,并提供一个全局访问点。通过实际案例,我们将展示如何在PHP项目中有效实现单例模式,以及如何利用这一模式优化资源配置和管理。无论是PHP初学者还是经验丰富的开发者,都能从本文中获得有价值的见解和技巧,进而提升自己的编程实践。
下一篇
无影云桌面