JavaScript轻应用高级组件

简介: 除了基础的功能组件外,JavaScript轻应用还提供了阿里云智能物联网平台连接以及语音播报等能力,具体介绍如下。

1、前言

除了基础的功能组件外,JavaScript轻应用还提供了阿里云智能物联网平台连接以及语音播报等能力,具体介绍如下。

2、iot - 阿里云IoT平台连接组件

示例代码


  1. /* iot - 阿里云IoT连接平台连接组件示例,产品功能定义:
  2. * [功能类型] ------ [功能名称] ------ [标志符] ------ [数据类型]
  3. * 属性 主灯开关 LightSwitch bool (0-关闭 1-开启)
  4. * 服务 开关翻转 ToggleLightSwitch -
  5. * 事件 故障上报 Error 参数标志符:ErrorCode
  6. * */
  7. var iot = require( 'iot');
  8. var productKey = '';
  9. var deviceName = '';
  10. var deviceSecret = '';
  11. var lightSwitch = 0;
  12. var device = iot.device({
  13. productKey: productKey,
  14. deviceName: deviceName,
  15. deviceSecret: deviceSecret,
  16. region: 'cn-shanghai',
  17. success: function () {
  18. console.log( 'connect success');
  19. onConnect();
  20. },
  21. fail: function () {
  22. console.log( 'connect failed');
  23. }
  24. });
  25. function onConnect() {
  26. setInterval( function () {
  27. /** post properties */
  28. lightSwitch = 1 - lightSwitch;
  29. device.postProps({
  30. payload: {
  31. LightSwitch: lightSwitch
  32. },
  33. success: function () {
  34. console.log( 'postProps success');
  35. },
  36. fail: function () {
  37. console.log( 'postProps failed');
  38. }
  39. });
  40. /** post events */
  41. device.postEvent({
  42. id: 'Error',
  43. params: {
  44. ErrorCode: 0
  45. },
  46. success: function () {
  47. console.log( 'postEvent success');
  48. },
  49. fail: function () {
  50. console.log( 'postEvent failed');
  51. }
  52. });
  53. }, 3000);
  54. }
  55. device.on( 'connect', function () {
  56. console.log( '(re)connected');
  57. });
  58. /* 网络断开事件 */
  59. device.on( 'disconnect', function () {
  60. console.log( 'disconnect ');
  61. });
  62. /* 关闭连接事件 */
  63. device.on( 'close', function () {
  64. console.log( 'iot client just closed');
  65. });
  66. /* 发生错误事件 */
  67. device.on( 'error', function (err) {
  68. console.log( 'error ' + err);
  69. });
  70. /* 云端设置属性事件 */
  71. device.on( 'props', function (payload) {
  72. console.log( 'cloud req data is ', payload);
  73. console.log( 'LightSwitch ', payload.LightSwitch ? 'ON' : 'OFF');
  74. });
  75. /* 云端下发服务事件 */
  76. device.on( 'service', function (id, payload) {
  77. console.log( 'received cloud serviceid is ' + id);
  78. console.log( 'received cloud req_data is ' + payload);
  79. });

 
  1. var iot = require( 'iot');
  2. var productKey = '';
  3. var deviceName = '';
  4. var deviceSecret = '';
  5. /* 设备签名 */
  6. iot.sign({
  7. productKey: productKey,
  8. deviceName: deviceName,
  9. deviceSecret: deviceSecret,
  10. region: 'cn-shanghai',
  11. success: function (params) {
  12. console.log( 'sign success');
  13. console.log(params);
  14. },
  15. fail: function () {
  16. console.log( 'sign failed');
  17. }
  18. });

device(Object option)

创建 iot 实例,同时会开始尝试连接阿里云IoT平台。iot实例默认开启TLS加密。

入参

属性

类型

必填

描述

productKey

String

设备的prodctKey

deviceName

String

设备的deviceName

deviceSecret

String

设备的deviceSecret

region

String

阿里云region,默认值:cn-shanghai。阿里云region详细说明见阿里云物联网平台 - 地域和可用区

success

Function

连接成功时的回调函数

fail

Function

连接失败的回调函数

返回

  • iot 实例。

sign(Object option)

进行设备签名。本接口相对独立,当 iot JSAPI 无法满足要求时,可以使用本接口进行设备认证,然后使用 mqtt JSAPI 接入阿里云物联网平台。设备签名请参考 设备接入Link SDK - 设备签名

入参

属性

类型

必填

描述

productKey

String

设备的prodctKey

deviceName

String

设备的deviceName

deviceSecret

String

设备的deviceSecret

region

String

阿里云region,默认值:cn-shanghai。阿里云region详细说明见阿里云物联网平台 - 地域和可用区

success

Function

认证成功的回调函数

fail

Function

认证失败的回调函数

success回调函数参数

Object类型,其属性有:

属性

类型

描述

host

String

可以连接的MQTT服务器域名地址, 根据入参 region 自动计算

port

Number

可以连接的MQTT服务器端口号, 根据标准MQTT协议一般是 1883 或者 443

username

String

连接MQTT服务器时将要使用的用户名

password

String

连接MQTT服务器时将要使用的密码, 和用户名一一对应

clientid

String

连接MQTT服务器时标识设备的自定义ID, 服务器对此不做校验, 鉴权通过 username password 进行

fail回调函数参数

属性

类型

描述

error

String

错误信息

iot 实例

事件

当iot client 连接到iot平台时,触发connect事件。断开重连时也会触发该事件。

当连接断开时,触发'disconnect'事件。

当iot client 关闭时,触发close事件。

当iot云端下发属性设置时,触发props事件。

当iot云端调用设备service时,触发service事件。

当设备跟iot平台通信过程中遇到错误时,触发error事件。

方法

上报属性。

上报事件。

关闭iot实例。

注册iot事件回调函数。

事件:'connect'

当iot client 连接到iot平台时,触发'connect'事件。断开重连时也会触发该事件。

事件:'disconnect'

当连接断开时,触发'disconnect'事件。三元组错误、三元组重复上线、服务端断开连接、主动断开连接、网络发生异常等都会触发该事件。该事件触发时,会自动尝试重连。

事件:'close'

当iot client 关闭时,触发'close'事件。

事件:'props'

当iot云端下发属性设置时,触发'props'事件。

回调函数参数有:

属性

类型

描述

payload

Object

服务端设置设备属性的内容

事件:'service'

当iot云端调用设备service时,触发'service'事件。

回调函数参数有:

属性

类型

描述

id

String

服务标志符,详细请参考什么是物的模型

payload

Object

服务端设置设备属性的内容

事件:'error'

当设备跟iot平台通信过程中遇到错误时,触发'error'事件。'error'事件的回调函数参数有:

属性

类型

描述

error

String

错误信息

iot.postProps(Object options)

上报设备属性。

入参

Object类型,其属性有:

属性

类型

必填

描述

payload

Object

设备定义的属性参数。详细请参考什么是物的模型

success

Function

上报设备属性成功的回调函数

fail

Function

上报设备属性失败的回调函数

iot.postEvent(Object options)

上报设备的事件。

入参

Object类型,其属性有:

属性

类型

必填

描述

id

String

事件标志符,详细请参考什么是物的模型

params

Object

要上报的事件参数

success

Function

上报设备事件成功的回调函数,其函数参数参见下面说明

fail

Function

上报设备事件失败的回调函数

success回调函数参数:

属性

类型

描述

res

String

服务端reply的消息内容

iot.close()

关闭IoT实例。

iot.on(String event, Function callback)

监听事件。

入参

属性

类型

必填

描述

event

String

注册的事件名称

callback

Function

监听事件的回调函数

3、audioplayer - 音频播放组件

示例代码


  
  1. var audioplayer = require( 'audioplayer');
  2. var audioplayerState = [ 'stop', 'paused', 'playing', 'listplay_begin', 'listplay_end', 'error'];
  3. audioplayer.on( 'stateChange', function(state) {
  4. console.log( 'audioplayer state: ' + audioplayerState[state]);
  5. });
  6. audioplayer.setVolume( 60);
  7. audioplayer.play( "/test.mp3");
  8. setTimeout( function() {
  9. console.log( "playback pause");
  10. audioplayer.pause();
  11. var position = audioplayer.getPosition();
  12. var duration = audioplayer.getDuration();
  13. console.log( 'playback progress: ' + position + '/' + duration);
  14. }, 5000)
  15. setTimeout( function() {
  16. console.log( "playback resume");
  17. audioplayer.resume();
  18. }, 10000)
  19. setTimeout( function() {
  20. console.log( "playback from 1s");
  21. audioplayer.seekto( 1);
  22. }, 15000)
  23. setTimeout( function() {
  24. var position = audioplayer.getPosition();
  25. var duration = audioplayer.getDuration();
  26. console.log( 'playback progress: ' + position + '/' + duration);
  27. }, 16000)
  28. setTimeout( function() {
  29. console.log( "playback stop");
  30. audioplayer.stop();
  31. }, 30000)

play(String path)

开始播放指定的音频。

入参

属性

类型

必填

描述

path

String

本地音频文件绝对路径或者音频url。

支持的音频格式:

mp3、wav

返回值

  • Number类型,0:成功,其他:失败。

pause()

暂停播放。

入参

  • 无。

返回值

  • Number类型,0:成功,其他:失败。

resume()

继续播放。

入参

  • 无。

返回值

  • Number类型,0:成功,其他:失败。

stop()

停止播放。

入参

  • 无。

返回值

  • Number类型,0:成功,其他:失败

listPlay(Array paths)

依次播放列表中的音频文件。

入参

  • 音频文件绝对路径数组。

返回值

  • Number类型,0:成功,其他:失败。

setVolume(Number volume)

设置播放音量。

入参

属性

类型

必填

描述

volume

Number

音量大小,取值范围:0-100,默认:40

返回值

  • Number类型,0:成功,其他:失败。

getVolume()

获取当前音量。

入参

  • 无。

返回值

  • Number类型,当前音量大小。

getState()

获取当前播放器状态。

入参

  • 无。

返回值

播放器状态

属性

类型

描述

state

Number

音频播放器当前状态

0 - 播放停止

1 - 播放暂停

2 - 播放开始

3 - 列表播放开始

4 - 列表播放结束

5 - 播放器错误

seekto(Number seconds)

从指定位置处开始播放。

入参

属性

类型

必填

描述

seconds

Number

播放位置,单位:秒

返回值

  • Number类型,0:成功,其他:失败。

getPosition()

获取当前播放进度。

入参

  • 无。

返回值

  • Number类型,当前播放进度,单位:秒。

getDuration()

获取当前音频文件时长。

入参

  • 无。

返回值

  • Number类型,当前播放音频文件时长,单位:秒。

事件:'stateChange'

当播放器状态变化时,触发'stateChange'事件。

回调函数参数有:

属性

类型

描述

state

Number

音频播放器当前状态

0 - 播放停止

1 - 播放暂停

2 - 播放开始

3 - 列表播放开始

4 - 列表播放结束

5 - 播放器错误

开发者技术支持

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

更多技术与解决方案介绍,请访问阿里云AIoT首页https://iot.aliyun.com/

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
2月前
|
前端开发 机器人 API
前端大模型入门(一):用 js+langchain 构建基于 LLM 的应用
本文介绍了大语言模型(LLM)的HTTP API流式调用机制及其在前端的实现方法。通过流式调用,服务器可以逐步发送生成的文本内容,前端则实时处理并展示这些数据块,从而提升用户体验和实时性。文章详细讲解了如何使用`fetch`发起流式请求、处理响应流数据、逐步更新界面、处理中断和错误,以及优化用户交互。流式调用特别适用于聊天机器人、搜索建议等应用场景,能够显著减少用户的等待时间,增强交互性。
559 2
|
24天前
|
监控 JavaScript 算法
如何使用内存监控工具来定位和解决Node.js应用中的性能问题?
总之,利用内存监控工具结合代码分析和业务理解,能够逐步定位和解决 Node.js 应用中的性能问题,提高应用的运行效率和稳定性。需要耐心和细致地进行排查和优化,不断提升应用的性能表现。
174 77
|
26天前
|
存储 缓存 JavaScript
如何优化Node.js应用的内存使用以提高性能?
通过以上多种方法的综合运用,可以有效地优化 Node.js 应用的内存使用,提高性能,提升用户体验。同时,不断关注内存管理的最新技术和最佳实践,持续改进应用的性能表现。
116 62
|
22天前
|
存储 缓存 监控
如何使用内存监控工具来优化 Node.js 应用的性能
需要注意的是,不同的内存监控工具可能具有不同的功能和特点,在使用时需要根据具体工具的要求和操作指南进行正确使用和分析。
65 31
|
23天前
|
JavaScript 前端开发 API
深入理解Node.js事件循环及其在后端开发中的应用
本文旨在揭示Node.js的核心特性之一——事件循环,并探讨其对后端开发实践的深远影响。通过剖析事件循环的工作原理和关键组件,我们不仅能够更好地理解Node.js的非阻塞I/O模型,还能学会如何优化我们的后端应用以提高性能和响应能力。文章将结合实例分析事件循环在处理大量并发请求时的优势,以及如何避免常见的编程陷阱,从而为读者提供从理论到实践的全面指导。
|
22天前
|
JavaScript
如何使用内存快照分析工具来分析Node.js应用的内存问题?
需要注意的是,不同的内存快照分析工具可能具有不同的功能和操作方式,在使用时需要根据具体工具的说明和特点进行灵活运用。
39 3
|
26天前
|
JavaScript 前端开发 安全
JavaScript与TypeScript的对比,分析了两者的特性及在实际项目中的应用选择
本文深入探讨了JavaScript与TypeScript的对比,分析了两者的特性及在实际项目中的应用选择。JavaScript以其灵活性和广泛的生态支持著称,而TypeScript通过引入静态类型系统,提高了代码的可靠性和可维护性,特别适合大型项目。文章还讨论了结合使用两种语言的优势,以及如何根据项目需求和技术背景做出最佳选择。
44 4
|
26天前
|
机器学习/深度学习 人工智能 JavaScript
JavaScript和TypeScript的未来发展趋势及其在Web开发中的应用前景
本文探讨了JavaScript和TypeScript的未来发展趋势及其在Web开发中的应用前景。JavaScript将注重性能优化、跨平台开发、AI融合及WebAssembly整合;TypeScript则强调与框架整合、强类型检查、前端工程化及WebAssembly的深度结合。两者结合发展,特别是在Vue 3.0中完全采用TypeScript编写,预示着未来的Web开发将更加高效、可靠。
40 4
|
28天前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
41 5
|
24天前
|
前端开发 JavaScript 关系型数据库
基于 Vue2.0 + Nest.js 全栈开发的后台应用
Vue2 Admin 是一个基于 Vue2 和 Ant Design Pro 开发的前端项目,配合 Nest.js 构建的后端,提供了一个完整的全栈后台应用解决方案。该项目支持动态国际化、用户权限管理、操作日志记录等功能,适合全栈开发者学习参考。线上预览地址:https://vue2.baiwumm.com/,用户名:Admin,密码:abc123456。
下一篇
DataWorks