HaaS510开板式DTU真机连云:上报监测数据至阿里云物联网平台
背景
HaaS: Hardware as a Service。
HAAS510 是一种开板式 DTU ,旨在为用户已开发好的设备快速增加 4G 连云能力的 4G CAT1 数传模块。它通过将模组与用户设备集成到一个外壳内,既保持设备的一体性,又降低重新开发 PCB 的时间消耗和模组开发的难度。 HAAS510 产品采用了 JavaScript 脚本的方式,将模组的本地串口通信和通过 4G 连接云端平台的能力开放给用户。同时,它还为用户提供了编写本地业务逻辑的能力,使得用户可以根据不同的应用场景,在设备侧完成数据清洗甚至一些简单的控制功能,从而给用户带来更大的创新自由度。
依托阿里云物联网平台,结合 HAAS510 的连云能力、实际生产环境中的电气火灾监控系统以及4G物联网卡,实现对电气火灾的远程监测。
物料准备
-
硬件设备
- HaaS510
- USB转双TTL串口
- FPC天线
- SIM卡
-
软件环境
- amp-win
- SSCOM V5.13.1串口调试助手
- VSCode
- MQTTX
HAAS510 上有两个 UART ,并且为方便接线,对杜邦线做了分组: Main UART (用于烧录部署应用)和 Debug UART (用于调试与查看日志),由于我先接了 Debug UART ,所有 COM 口的情况如下:
- Debug UART:COM3
- Main UART:COM4
实际连云的接线图如下:

搭建环境
硬件连接
根据 HAAS510 的文档,下载了 amp-win ,结合 SSCOM V5.13.1串口调试助手 进行了测试:按下复位键,apm shakehand begin。

软件工具
在 VSCode 的插件市场搜索 haas-studio 安装,点击左下角的激活 Aos 插件。


在 VSCode 的已安装插件列表中修改了 haas-studio 的版本,从 v2.3.1 降到了 v2.2.0 ,支持创建 JavaScript 的项目。

HaaS510的HelloWorld
创建的 JavaScript 项目中自带了 HelloWorld 示例程序,点击部署运行,选择本地更新——>选择串口(我这里是COM4:Main UART)——>波特率:115200。

或者使用以下命令进行烧录:
c:\Users\nxq01\.vscode\extensions\haas.haas-studio-2.2.0/amp/amp-win/dist/amp.exe serialput d:\JavaScript\Node.js\haas-test\test_demo\solutions\test_demo COM4 -b 115200
根据提示复位 DTU 板(板子上的reset按钮),可以通过串口工具在 Debug UART ,我这里是 COM3 ,查看调试输出。

HaaS510真机连云上报数据
硬件连线
分别连接了 Main UART (用于烧录部署应用)和 Debug UART (用于调试与查看日志)。
注意:
- 如果烧录程序后,发现云平台的设备依然不在线,可能是没装SIM卡、没安装天线或者SIM卡存在机卡分离等原因。
- 用的是实际生产环境下的物联网SIM卡,因此要到物联网卡管理平台进行激活,避免机卡分离的问题。
物联网平台配置
添加产品——>添加设备——>编辑物模型。
- 设备三元组
{"ProductKey": "ibneFAfjvhy","DeviceName": "ElectricalFireMonitoringSystem","DeviceSecret": "9dc9c43e02ad25448de2d0913b49f802"
}
实际编码之前,先用 MQTTX 工具测试下设备的连接性。

- 物模型
根据实际的电气火灾监控系统监测指标,模拟了剩余电流、电压、电流以及功率等参数。

编码实现
以下代码修改自创建的模板项目中的实例: iot-device 。
let iot = require('iot');
let network = require('network');let net = network.openNetWorkClient();/* 设备三元组信息 */
let productKey = 'ibneFAfjvhy';
let deviceName = 'ElectricalFireMonitoringSystem';
let deviceSecret = '9dc9c43e02ad25448de2d0913b49f802';let device;
let topic = '/sys/' + productKey + '/' + deviceName + '/thing/event/property/post';/* 模拟属性数据:JSON字符串*/
let json = '{"RC":0.5,"LineCurrent":8.0,"LineVotage":210.0,"LinePower":20.0}';function createDevice() {device = iot.device({productKey: productKey,deviceName: deviceName,deviceSecret: deviceSecret});device.on('connect', function() {console.log('(re)connected');device.subscribe({topic: topic,qos: 0});setInterval(function() {/* post props */device.postProps(json);}, 5000);/* 云端设置属性事件 */device.onProps(function(res) {console.log('cloud req msg_id is ' + res.msg_id);console.log('cloud req params_len is ' + res.params_len);console.log('cloud req params is ' + res.params);});/* 云端下发服务事件 */device.onService(function(res) {console.log('received cloud msg_id is ' + res.msg_id);console.log('received cloud service_id is ' + res.service_id);console.log('received cloud params_len is ' + res.params_len);console.log('received cloud params is ' + res.params);});});/* 网络断开事件 */device.on('disconnect', function() {console.log('disconnect ');});/* mqtt消息 */device.on('message', function(res) {console.log('mqtt message')console.log('mqtt topic is ' + res.topic);console.log('mqtt payload is ' + res.payload);})/* 关闭连接事件 */device.on('end', function() {console.log('iot client just closed');});/* 发生错误事件 */device.on('error', function(err) {console.log('error ' + err);});
}let status = net.getStatus();
console.log('net status is: ' + status);if (status == 'connect') {createDevice();
} else {net.on('connect', function() {createDevice();});
}
注意: JSON 字符串中的值类型与物模型中定义的值类型要一致;一开始将在字符串中将传感器的值写成了字符串类型,导致云平台无法解析为 Double ,报错。

部署到DTU
将上述代码通过 Main UART 发布至 HAAS510 。

从 Debug UART 串口可以看到属性上报的记录。

效果验证
阿里云物联网平台上可以看到设备已在线。

以下是在日志服务、在线调试以及物模型数据在设备上报属性时的记录与展示。
- 日志服务

- 在线调试

- 物模型数据

小总结
这篇文章主要介绍了 HaaS510 开板式 DTU (数据传输单元)的真机连云过程,以及如何将监测数据上报至阿里云物联网平台。文章提供了硬件和软件环境的准备步骤,包括硬件设备和软件工具的连接和配置。然后,文章演示了如何使用 HaaS510 的 HelloWorld 示例程序和 JavaScript 编码实现真机连云上报数据的功能。最后,文章验证了连云效果,并提供了参考资料供进一步学习和开发。
Reference
- AIOT应用框架开发手册HaaS510
相关文章:
HaaS510开板式DTU真机连云:上报监测数据至阿里云物联网平台
背景 HaaS: Hardware as a Service。 HAAS510 是一种开板式 DTU ,旨在为用户已开发好的设备快速增加 4G 连云能力的 4G CAT1 数传模块。它通过将模组与用户设备集成到一个外壳内,既保持设备的一体性,又降低重新开发 PCB 的时间消耗和模组开…...
贾扬清开源 AI 框架 Caffe | 开源英雄
【编者按】在开源与人工智能的灿烂星河里,贾扬清的名字都格外地耀眼。因为导师 Trevor Darrell 教授的一句“你是想多花时间写一篇大家估计不是很在意的毕业论文,还是写一个将来大家都会用的框架?”,学生贾扬清一头扎进了创 Caffe…...
【objectarx.net】使用公式自动更新表格项的内容
使用公式自动更新表格项的内容...
CSS 移动端 1px(线条/边框) 不同机型上显示粗细不同,解决办法
由于不同的手机有不同的像素密度导致的。如果移动显示屏的分辨率始终是普通屏幕的2倍,1px的边框在devicePixelRatio2的移动显示屏下会显示成2px,所以在高清瓶下看着1px总是感觉变胖了 <!DOCTYPE html> <html lang"en"> <head&g…...
vue3使用vuex的示例(模块化功能)
目录 1. store/index.ts 2. main.ts 3. App.vue调用 4. 如果删除moduleA的namespaced属性, 保留moduleB的namespaced:true 5. 则App.vue修改为: 1. store/index.ts 注意: 需要使用时带上模块名称的namespaced必须为true, 不写或者为false时调用时不需要写模块名称(获取st…...
Vatee万腾的科技决策力奇迹:Vatee科技决策力的独特之选
在金融投资的复杂领域中,Vatee万腾以其独特的科技决策力创造了一场真正的奇迹。这不仅是一种引领投资者走向成功的选择,更是一种开启新时代的科技决策奇迹。 Vatee的科技决策力背后蕴藏着强大的智慧和创新。通过大数据分析、智能算法的运用,V…...
ai技术是怎么换脸的,实现原理是什么,有那些软件
人工智能(AI)在近年来的迅猛发展中,带来了许多令人惊叹的技术创新,其中之一就是人工智能换脸技术。这项技术通过深度学习和图像处理的手段,使得用户可以将自己的面孔替换成其他人物,引发了广泛的讨论和应用…...
在IDEA中使用maven项目总结
一 什么是maven Maven本身也是Java写的,他是一款服务于Java平台的自动化构建工具 Maven是一个项目管理工具,旨在简化软件项目的构建、依赖管理和项目信息管理。它使用基于项目对象模型(Project Object Model,POM)的…...
oracle备份一个表需要做的操作
在 Oracle 中备份一个表可以通过以下步骤完成,包括备份表结构(DDL)和备份表数据(DML): 备份表结构(DDL): 使用 CREATE TABLE AS SELECT: 创建一个新表&#…...
C 语言 switch 语句
C 语言 switch 语句 在本教程中,您将通过一个示例学习在C语言编程中创建switch语句。 switch语句使我们可以执行许多代替方案中的一个代码块。 虽然您可以使用if…else…if阶梯执行相同的操作。但是,switch语句的语法更容易读写。 switch … case的语…...
架构师:构建高可用服务治理Consul集群与Kong网关管理
1、简述 在微服务架构中,高可用性和服务治理是非常重要的方面。Consul作为一个开源的服务发现和配置工具,可以帮助我们实现高可用服务治理。Kong是一个用于管理 API 网关的工具,它可以提供强大的流量控制和安全功能。本文将介绍如何构建一个高可用的Consul集群,并结合Kong…...
elemenui的Upload上传整合成数组对象
1. 普通直接上传 <el-upload action"" :before-upload"doBeforeUpload"><el-button type"success" size"mini">导入</el-button></el-upload> methods:{doBeforeUpload(file) {let reader new FileReader(…...
莫桑比克市场开发攻略,收藏一篇就够了
中国与莫桑比克之间的经贸关系源远流长,两国之间的贸易和投资合作呈现出快速增长的趋势。莫桑比克是农业国,生产以及生活资料依赖进口,市场潜力还是非常不错的,今天就给大家分享一下。文章略长,大家点赞收藏关注慢慢看…...
go语言学习
1、示例代码: imgName : g.Cfg().MustGet(ctx, "migrate.img-arm-rbd").String() 在给定的代码行中,g.Cfg() 是一个函数调用,它返回一个配置对象。MustGet(ctx, "migrate.img-arm-rbd") 则是在这个配置对象上调用的方法…...
安哥拉市场开发攻略,收藏一篇就够了
安哥拉是非洲南部的一个国家,中国是安哥拉最大的贸易伙伴,安哥拉是中国在非洲的第二大贸易伙伴,中国人在安哥拉也是非常受欢迎的,虽然安哥拉经济比较落后,但是市场潜力还是非常不错的。今天就来给大家分享一下安哥拉的…...
第六章 :Spring Boot web开发常用注解(一)
第六章 :Spring Boot web开发常用注解(一) 前言 本章节知识重点:作者结合自身开发经验,以及觉察到的一个现象:Springboot注解全面理解和掌握的并不多,对注解进行了全面总结,共分两个…...
Unity DOTS系列之System中如何使用SystemAPI.Query迭代数据
最近DOTS发布了正式的版本, 我们来分享一下System中如何基于SystemAPI.Query来迭代World中的数据,方便大家上手学习掌握Unity DOTS开发。 SystemAPI.Query的使用 System有两种,一种是Unmanaged 的ISystem,一种是managed 的SystemBase,这两种System都可…...
【objectarx.net】创建渐变填充
net.gradientHatch(创建渐变填充)...
【软考】信息安全基本要素
目录 一、机密性二、完整性三、可用性四、可控性五、可审查性六、可鉴别性七、不可抵赖性八、可靠性 一、机密性 1.保证信息不泄露给未经授权的进程或实体,只供授权者使用 二、完整性 1.信息只能被得到允许的人修改,并且能够被判别该信息是否已被篡改过…...
[C++ ]:7.内存管理+模板引入。
内存管理模板引入 一.内存管理:1.内存区域划分图:2.区域划分实例:3.C 内存管理方式:newdelete4.自定义类型的new和delete:一.简单类:二.日期类:三.栈类:四.队列类(栈实现…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...
【实施指南】Android客户端HTTPS双向认证实施指南
🔐 一、所需准备材料 证书文件(6类核心文件) 类型 格式 作用 Android端要求 CA根证书 .crt/.pem 验证服务器/客户端证书合法性 需预置到Android信任库 服务器证书 .crt 服务器身份证明 客户端需持有以验证服务器 客户端证书 .crt 客户端身份…...
数据库正常,但后端收不到数据原因及解决
从代码和日志来看,后端SQL查询确实返回了数据,但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离,并且ai辅助开发的时候,很容易出现前后端变量名不一致情况,还不报错,只是单…...
