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
相关文章
|
28天前
|
监控 安全 中间件
Next.js 实战 (十):中间件的魅力,打造更快更安全的应用
这篇文章介绍了什么是Next.js中的中间件以及其应用场景。中间件可以用于处理每个传入请求,比如实现日志记录、身份验证、重定向、CORS配置等功能。文章还提供了一个身份验证中间件的示例代码,以及如何使用限流中间件来限制同一IP地址的请求次数。中间件相当于一个构建模块,能够简化HTTP请求的预处理和后处理,提高代码的可维护性,有助于创建快速、安全和用户友好的Web体验。
|
30天前
|
缓存 NoSQL JavaScript
Vue.js应用结合Redis数据库:实践与优化
将Vue.js应用与Redis结合,可以实现高效的数据管理和快速响应的用户体验。通过合理的实践步骤和优化策略,可以充分发挥两者的优势,提高应用的性能和可靠性。希望本文能为您在实际开发中提供有价值的参考。
56 11
|
1月前
|
JavaScript 前端开发
【Vue.js】监听器功能(EventListener)的实际应用【合集】
而此次问题的核心就在于,Vue实例化的时机过早,在其所依赖的DOM结构尚未完整构建完成时就已启动挂载流程,从而导致无法找到对应的DOM元素,最终致使计算器功能出现异常,输出框错误地显示“{{current}}”,并且按钮的交互功能也完全丧失响应。为了让代码结构更为清晰,便于后续的维护与管理工作,我打算把HTML文件中标签内的JavaScript代码迁移到外部的JS文件里,随后在HTML文件中对其进行引用。
52 8
|
1月前
|
敏捷开发 人工智能 JavaScript
Figma-Low-Code:快速将Figma设计转换为Vue.js应用,支持低代码渲染、数据绑定
Figma-Low-Code 是一个开源项目,能够直接将 Figma 设计转换为 Vue.js 应用程序,减少设计师与开发者之间的交接时间,支持低代码渲染和数据绑定。
107 3
Figma-Low-Code:快速将Figma设计转换为Vue.js应用,支持低代码渲染、数据绑定
|
3月前
|
存储 缓存 监控
如何使用内存监控工具来优化 Node.js 应用的性能
需要注意的是,不同的内存监控工具可能具有不同的功能和特点,在使用时需要根据具体工具的要求和操作指南进行正确使用和分析。
91 31
|
3月前
|
JavaScript
如何使用内存快照分析工具来分析Node.js应用的内存问题?
需要注意的是,不同的内存快照分析工具可能具有不同的功能和操作方式,在使用时需要根据具体工具的说明和特点进行灵活运用。
76 3
|
3月前
|
JavaScript 前端开发 API
深入理解Node.js事件循环及其在后端开发中的应用
本文旨在揭示Node.js的核心特性之一——事件循环,并探讨其对后端开发实践的深远影响。通过剖析事件循环的工作原理和关键组件,我们不仅能够更好地理解Node.js的非阻塞I/O模型,还能学会如何优化我们的后端应用以提高性能和响应能力。文章将结合实例分析事件循环在处理大量并发请求时的优势,以及如何避免常见的编程陷阱,从而为读者提供从理论到实践的全面指导。
|
3月前
|
监控 JavaScript 算法
如何使用内存监控工具来定位和解决Node.js应用中的性能问题?
总之,利用内存监控工具结合代码分析和业务理解,能够逐步定位和解决 Node.js 应用中的性能问题,提高应用的运行效率和稳定性。需要耐心和细致地进行排查和优化,不断提升应用的性能表现。
224 77
|
3月前
|
前端开发 JavaScript 关系型数据库
基于 Vue2.0 + Nest.js 全栈开发的后台应用
Vue2 Admin 是一个基于 Vue2 和 Ant Design Pro 开发的前端项目,配合 Nest.js 构建的后端,提供了一个完整的全栈后台应用解决方案。该项目支持动态国际化、用户权限管理、操作日志记录等功能,适合全栈开发者学习参考。线上预览地址:https://vue2.baiwumm.com/,用户名:Admin,密码:abc123456。
|
3月前
|
JavaScript 前端开发 API
Vue.js 3:深入探索组合式API的实践与应用
Vue.js 3:深入探索组合式API的实践与应用