HaaS轻应用(JavaScript)- DTU功能示例

简介: 在HaaS610开发板上把用户串口接收到的数据,通过物模型把数据上传到阿里云物联网平台。本示例适合实时性要求不高、数据量不大的应用场景。
来源 | HaaS技术社区

1、示例简介

在HaaS610开发板上把用户串口接收到的数据,通过物模型把数据上传到阿里云物联网平台。本示例适合实时性要求不高、数据量不大的应用场景。

1.1、连接示例

image.png

通过USB转TLL串口线(3.3V ),把PC与HaaS610的用户串口(上图序号 8处)连接起来。

1.2、流程

在PC上通过串口调试工具发送数据,HaaS610 Kit收到数据后触发uart监听事件。HaaS610 Kit在uart监听事件回调函数中把数据通过MQTT发送到物联网平台指定Topic。

2、示例代码

app.js

var iot = require('iot');
var network = require('network');
var uart = require('uart');
 
var net = network.openNetWorkClient();
var serial3 = uart.open({
    id: 'serial3'
});
 
function ArrayToString(fileData){
    var dataString = "";
    for (var i = 0; i < fileData.length; i++) {
      dataString += String.fromCharCode(fileData[i]);
    }
    return dataString;
}
 
serial3.on('data', function(data) {
    var data_str = ArrayToString(data);
    console.log('serial3:' + data_str);
 
    /* post props */
    device.postProps('{\"serial3\": ' + '\"' + data_str + '\"' + '}');
 
});
 
var productKey = 'xxxx';      /* your productKey */
var deviceName = 'xxxx';    /* your deviceName */
var deviceSecret = 'xxxx';    /* your deviceSecret */
 
var device;
var topic = '/sys/' + productKey + '/' + deviceName + '/user/haas/info';
 
function createDevice() {
    device = iot.device({
        productKey: productKey,
        deviceName: deviceName,
        deviceSecret: deviceSecret,
    });
 
    device.on('connect', function () {
        console.log('(re)connected');
 
        /* 云端设置属性事件 */
        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);
    });
}
 
var status = net.getStatus();
console.log('net status is: ' + status);
 
if (status == 'connect') {
    createDevice();
} else {
    net.on('connect', function () {
        createDevice();
    });
}

app.json

{
    "version": "1.0.0",
    "io": {
      "serial3":{
        "type":"UART",
        "port":2,
        "dataWidth":8,
        "baudRate":9600,
        "stopBits":1,
        "flowControl":"disable",
        "parity":"none"
      }
    },
    "debugLevel": "DEBUG",
    "repl": "enable"
}

开发者支持

如需更多技术支持,可加入钉钉开发者群,或者关注微信公众号。

image.png

更多技术与解决方案介绍,请访问HaaS官方网站https://haas.iot.aliyun.com

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
3月前
|
监控 JavaScript 算法
如何使用内存监控工具来定位和解决Node.js应用中的性能问题?
总之,利用内存监控工具结合代码分析和业务理解,能够逐步定位和解决 Node.js 应用中的性能问题,提高应用的运行效率和稳定性。需要耐心和细致地进行排查和优化,不断提升应用的性能表现。
224 77
|
28天前
|
JavaScript 前端开发 安全
盘点原生JS中目前最没用的几个功能API
在JavaScript的发展历程中,许多功能与API曾风光无限,但随着技术进步和语言演化,部分功能逐渐被淘汰或被更高效的替代方案取代。例如,`with`语句使代码作用域复杂、可读性差;`void`操作符功能冗余且影响可读性;`eval`函数存在严重安全风险和性能问题;`unescape`和`escape`函数已被`decodeURIComponent`和`encodeURIComponent`取代;`arguments`对象则被ES6的剩余参数语法替代。这些变化体现了JavaScript不断优化的趋势,开发者应紧跟技术步伐,学习新技能,适应新技术环境。
43 10
|
1月前
|
缓存 NoSQL JavaScript
Vue.js应用结合Redis数据库:实践与优化
将Vue.js应用与Redis结合,可以实现高效的数据管理和快速响应的用户体验。通过合理的实践步骤和优化策略,可以充分发挥两者的优势,提高应用的性能和可靠性。希望本文能为您在实际开发中提供有价值的参考。
56 11
|
1月前
|
敏捷开发 人工智能 JavaScript
Figma-Low-Code:快速将Figma设计转换为Vue.js应用,支持低代码渲染、数据绑定
Figma-Low-Code 是一个开源项目,能够直接将 Figma 设计转换为 Vue.js 应用程序,减少设计师与开发者之间的交接时间,支持低代码渲染和数据绑定。
111 3
Figma-Low-Code:快速将Figma设计转换为Vue.js应用,支持低代码渲染、数据绑定
|
1月前
|
JavaScript 前端开发
【Vue.js】监听器功能(EventListener)的实际应用【合集】
而此次问题的核心就在于,Vue实例化的时机过早,在其所依赖的DOM结构尚未完整构建完成时就已启动挂载流程,从而导致无法找到对应的DOM元素,最终致使计算器功能出现异常,输出框错误地显示“{{current}}”,并且按钮的交互功能也完全丧失响应。为了让代码结构更为清晰,便于后续的维护与管理工作,我打算把HTML文件中标签内的JavaScript代码迁移到外部的JS文件里,随后在HTML文件中对其进行引用。
53 8
|
2月前
|
JavaScript 容器
带方向感知功能的js图片遮罩层插件
带方向感知功能的js图片遮罩层插件
|
29天前
|
监控 安全 中间件
Next.js 实战 (十):中间件的魅力,打造更快更安全的应用
这篇文章介绍了什么是Next.js中的中间件以及其应用场景。中间件可以用于处理每个传入请求,比如实现日志记录、身份验证、重定向、CORS配置等功能。文章还提供了一个身份验证中间件的示例代码,以及如何使用限流中间件来限制同一IP地址的请求次数。中间件相当于一个构建模块,能够简化HTTP请求的预处理和后处理,提高代码的可维护性,有助于创建快速、安全和用户友好的Web体验。
|
3月前
|
存储 缓存 监控
如何使用内存监控工具来优化 Node.js 应用的性能
需要注意的是,不同的内存监控工具可能具有不同的功能和特点,在使用时需要根据具体工具的要求和操作指南进行正确使用和分析。
91 31
|
3月前
|
JavaScript 前端开发 API
深入理解Node.js事件循环及其在后端开发中的应用
本文旨在揭示Node.js的核心特性之一——事件循环,并探讨其对后端开发实践的深远影响。通过剖析事件循环的工作原理和关键组件,我们不仅能够更好地理解Node.js的非阻塞I/O模型,还能学会如何优化我们的后端应用以提高性能和响应能力。文章将结合实例分析事件循环在处理大量并发请求时的优势,以及如何避免常见的编程陷阱,从而为读者提供从理论到实践的全面指导。
|
3月前
|
JavaScript
如何使用内存快照分析工具来分析Node.js应用的内存问题?
需要注意的是,不同的内存快照分析工具可能具有不同的功能和操作方式,在使用时需要根据具体工具的说明和特点进行灵活运用。
76 3