当前位置: 首页 > news >正文

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

实际连云的接线图如下:

2023-09-02-1-Hardwear.jpg

搭建环境

硬件连接

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

2023-09-02-2-Reset.jpg

软件工具

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

2023-09-02-3-HaaSStudio.jpg

2023-09-02-4-Aos.jpg

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

2023-09-02-5-Project.jpg

HaaS510的HelloWorld

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

2023-09-02-6-HelloWorld1.jpg
或者使用以下命令进行烧录:

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 ,查看调试输出。

2023-09-02-6-HelloWorld2.jpg

HaaS510真机连云上报数据

硬件连线

分别连接了 Main UART (用于烧录部署应用)和 Debug UART (用于调试与查看日志)。

注意:

  1. 如果烧录程序后,发现云平台的设备依然不在线,可能是没装SIM卡没安装天线或者SIM卡存在机卡分离等原因。
  2. 用的是实际生产环境下的物联网SIM卡,因此要到物联网卡管理平台进行激活,避免机卡分离的问题。

物联网平台配置

添加产品——>添加设备——>编辑物模型。

  • 设备三元组
{"ProductKey": "ibneFAfjvhy","DeviceName": "ElectricalFireMonitoringSystem","DeviceSecret": "9dc9c43e02ad25448de2d0913b49f802"
}

实际编码之前,先用 MQTTX 工具测试下设备的连接性。

2023-09-02-8-MQTTX.jpg

  • 物模型

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

2023-09-02-7-ThingModel.jpg

编码实现

以下代码修改自创建的模板项目中的实例: 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 ,报错。

2023-09-02-9-Log3.jpg

部署到DTU

将上述代码通过 Main UART 发布至 HAAS510

2023-09-02-7-APP.jpg

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

2023-09-02-8-COM.jpg

效果验证

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

2023-09-02-8-Online.jpg

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

  • 日志服务

2023-09-02-9-Log1.jpg

  • 在线调试

2023-09-02-9-Log2.jpg

  • 物模型数据

2023-09-02-9-Log4.jpg

小总结

这篇文章主要介绍了 HaaS510 开板式 DTU (数据传输单元)的真机连云过程,以及如何将监测数据上报至阿里云物联网平台。文章提供了硬件和软件环境的准备步骤,包括硬件设备和软件工具的连接和配置。然后,文章演示了如何使用 HaaS510HelloWorld 示例程序和 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倍&#xff0c;1px的边框在devicePixelRatio2的移动显示屏下会显示成2px&#xff0c;所以在高清瓶下看着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科技决策力的独特之选

在金融投资的复杂领域中&#xff0c;Vatee万腾以其独特的科技决策力创造了一场真正的奇迹。这不仅是一种引领投资者走向成功的选择&#xff0c;更是一种开启新时代的科技决策奇迹。 Vatee的科技决策力背后蕴藏着强大的智慧和创新。通过大数据分析、智能算法的运用&#xff0c;V…...

ai技术是怎么换脸的,实现原理是什么,有那些软件

人工智能&#xff08;AI&#xff09;在近年来的迅猛发展中&#xff0c;带来了许多令人惊叹的技术创新&#xff0c;其中之一就是人工智能换脸技术。这项技术通过深度学习和图像处理的手段&#xff0c;使得用户可以将自己的面孔替换成其他人物&#xff0c;引发了广泛的讨论和应用…...

在IDEA中使用maven项目总结

一 什么是maven Maven本身也是Java写的&#xff0c;他是一款服务于Java平台的自动化构建工具 Maven是一个项目管理工具&#xff0c;旨在简化软件项目的构建、依赖管理和项目信息管理。它使用基于项目对象模型&#xff08;Project Object Model&#xff0c;POM&#xff09;的…...

oracle备份一个表需要做的操作

在 Oracle 中备份一个表可以通过以下步骤完成&#xff0c;包括备份表结构&#xff08;DDL&#xff09;和备份表数据&#xff08;DML&#xff09;&#xff1a; 备份表结构&#xff08;DDL&#xff09;&#xff1a; 使用 CREATE TABLE AS SELECT&#xff1a; 创建一个新表&#…...

C 语言 switch 语句

C 语言 switch 语句 在本教程中&#xff0c;您将通过一个示例学习在C语言编程中创建switch语句。 switch语句使我们可以执行许多代替方案中的一个代码块。 虽然您可以使用if…else…if阶梯执行相同的操作。但是&#xff0c;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(…...

莫桑比克市场开发攻略,收藏一篇就够了

中国与莫桑比克之间的经贸关系源远流长&#xff0c;两国之间的贸易和投资合作呈现出快速增长的趋势。莫桑比克是农业国&#xff0c;生产以及生活资料依赖进口&#xff0c;市场潜力还是非常不错的&#xff0c;今天就给大家分享一下。文章略长&#xff0c;大家点赞收藏关注慢慢看…...

go语言学习

1、示例代码&#xff1a; imgName : g.Cfg().MustGet(ctx, "migrate.img-arm-rbd").String() 在给定的代码行中&#xff0c;g.Cfg() 是一个函数调用&#xff0c;它返回一个配置对象。MustGet(ctx, "migrate.img-arm-rbd") 则是在这个配置对象上调用的方法…...

安哥拉市场开发攻略,收藏一篇就够了

安哥拉是非洲南部的一个国家&#xff0c;中国是安哥拉最大的贸易伙伴&#xff0c;安哥拉是中国在非洲的第二大贸易伙伴&#xff0c;中国人在安哥拉也是非常受欢迎的&#xff0c;虽然安哥拉经济比较落后&#xff0c;但是市场潜力还是非常不错的。今天就来给大家分享一下安哥拉的…...

第六章 :Spring Boot web开发常用注解(一)

第六章 &#xff1a;Spring Boot web开发常用注解&#xff08;一&#xff09; 前言 本章节知识重点&#xff1a;作者结合自身开发经验&#xff0c;以及觉察到的一个现象&#xff1a;Springboot注解全面理解和掌握的并不多&#xff0c;对注解进行了全面总结&#xff0c;共分两个…...

Unity DOTS系列之System中如何使用SystemAPI.Query迭代数据

最近DOTS发布了正式的版本, 我们来分享一下System中如何基于SystemAPI.Query来迭代World中的数据&#xff0c;方便大家上手学习掌握Unity DOTS开发。 SystemAPI.Query的使用 System有两种&#xff0c;一种是Unmanaged 的ISystem,一种是managed 的SystemBase,这两种System都可…...

【objectarx.net】创建渐变填充

net.gradientHatch(创建渐变填充)...

【软考】信息安全基本要素

目录 一、机密性二、完整性三、可用性四、可控性五、可审查性六、可鉴别性七、不可抵赖性八、可靠性 一、机密性 1.保证信息不泄露给未经授权的进程或实体&#xff0c;只供授权者使用 二、完整性 1.信息只能被得到允许的人修改&#xff0c;并且能够被判别该信息是否已被篡改过…...

[C++ ]:7.内存管理+模板引入。

内存管理模板引入 一.内存管理&#xff1a;1.内存区域划分图&#xff1a;2.区域划分实例&#xff1a;3.C 内存管理方式&#xff1a;newdelete4.自定义类型的new和delete&#xff1a;一.简单类&#xff1a;二.日期类&#xff1a;三.栈类&#xff1a;四.队列类&#xff08;栈实现…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献&#xff1a; stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下&#xff0c;文章也主…...