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
相关文章
|
1月前
|
前端开发 机器人 API
前端大模型入门(一):用 js+langchain 构建基于 LLM 的应用
本文介绍了大语言模型(LLM)的HTTP API流式调用机制及其在前端的实现方法。通过流式调用,服务器可以逐步发送生成的文本内容,前端则实时处理并展示这些数据块,从而提升用户体验和实时性。文章详细讲解了如何使用`fetch`发起流式请求、处理响应流数据、逐步更新界面、处理中断和错误,以及优化用户交互。流式调用特别适用于聊天机器人、搜索建议等应用场景,能够显著减少用户的等待时间,增强交互性。
322 2
|
1月前
|
JavaScript 前端开发 API
探索后端技术:Node.js的优势和实际应用
【10月更文挑战第6天】 在当今数字化时代,后端开发是任何成功软件应用的关键组成部分。本文将深入探讨一种流行的后端技术——Node.js,通过分析其核心优势和实际应用案例,揭示其在现代软件开发中的重要性和潜力。
131 2
|
5天前
|
存储 缓存 JavaScript
如何优化Node.js应用的内存使用以提高性能?
通过以上多种方法的综合运用,可以有效地优化 Node.js 应用的内存使用,提高性能,提升用户体验。同时,不断关注内存管理的最新技术和最佳实践,持续改进应用的性能表现。
|
24天前
|
数据可视化 JavaScript 前端开发
数据可视化进阶:D3.js在复杂数据可视化中的应用
【10月更文挑战第26天】数据可视化是将数据以图形、图表等形式呈现的过程,帮助我们理解数据和揭示趋势。D3.js(Data-Driven Documents)是一个基于JavaScript的库,使用HTML、SVG和CSS创建动态、交互式的数据可视化。它通过数据驱动文档的方式,将数据与DOM元素关联,提供高度的灵活性和定制性,适用于复杂数据的可视化任务。 示例代码展示了如何使用D3.js创建一个简单的柱状图,展示了其基本用法。D3.js的链式调用和回调函数机制使代码简洁易懂,支持复杂的布局和交互逻辑。
64 3
|
1月前
|
机器学习/深度学习 自然语言处理 JavaScript
信息论、机器学习的核心概念:熵、KL散度、JS散度和Renyi散度的深度解析及应用
在信息论、机器学习和统计学领域中,KL散度(Kullback-Leibler散度)是量化概率分布差异的关键概念。本文深入探讨了KL散度及其相关概念,包括Jensen-Shannon散度和Renyi散度。KL散度用于衡量两个概率分布之间的差异,而Jensen-Shannon散度则提供了一种对称的度量方式。Renyi散度通过可调参数α,提供了更灵活的散度度量。这些概念不仅在理论研究中至关重要,在实际应用中也广泛用于数据压缩、变分自编码器、强化学习等领域。通过分析电子商务中的数据漂移实例,展示了这些散度指标在捕捉数据分布变化方面的独特优势,为企业提供了数据驱动的决策支持。
74 2
信息论、机器学习的核心概念:熵、KL散度、JS散度和Renyi散度的深度解析及应用
|
29天前
|
JavaScript 前端开发 开发者
探索JavaScript原型链:深入理解与实战应用
【10月更文挑战第21天】探索JavaScript原型链:深入理解与实战应用
31 1
|
1月前
|
JavaScript 前端开发 API
Vue.js:打造高效前端应用的最佳选择
【10月更文挑战第9天】Vue.js:打造高效前端应用的最佳选择
21 2
|
1月前
|
设计模式 JavaScript 前端开发
探索JavaScript中的闭包:从基础概念到实际应用
在本文中,我们将深入探讨JavaScript中的一个重要概念——闭包。闭包是一种强大的编程工具,它允许函数记住并访问其所在作用域的变量,即使该函数在其作用域之外被调用。通过详细解析闭包的定义、创建方法以及实际应用场景,本文旨在帮助读者不仅理解闭包的理论概念,还能在实际开发中灵活运用这一技巧。
|
1月前
|
缓存 JavaScript 前端开发
深入了解JavaScript的闭包:概念与应用
【10月更文挑战第8天】深入了解JavaScript的闭包:概念与应用
|
21天前
|
前端开发 JavaScript
JavaScript新纪元:ES6+特性深度解析与实战应用
【10月更文挑战第29天】本文深入解析ES6+的核心特性,包括箭头函数、模板字符串、解构赋值、Promise、模块化和类等,结合实战应用,展示如何利用这些新特性编写更加高效和优雅的代码。
40 0
下一篇
无影云桌面