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/

相关实践学习
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
6月前
|
JavaScript 前端开发
如何减少Node.js应用中的全局变量?
如何减少Node.js应用中的全局变量?
410 133
|
6月前
|
监控 负载均衡 JavaScript
有哪些有效的方法可以优化Node.js应用的性能?
有哪些有效的方法可以优化Node.js应用的性能?
357 69
|
3月前
|
存储 监控 JavaScript
基于布隆过滤器的 Node.js 算法在局域网电脑桌面监控设备快速校验中的应用研究
本文探讨了布隆过滤器在局域网电脑桌面监控中的应用,分析其高效空间利用率、快速查询性能及动态扩容优势,并设计了基于MAC地址的校验模型,提供Node.js实现代码,适用于设备准入控制与重复数据过滤场景。
188 0
|
2月前
|
运维 监控 JavaScript
基于 Node.js 图结构的局域网设备拓扑分析算法在局域网内监控软件中的应用研究
本文探讨图结构在局域网监控系统中的应用,通过Node.js实现设备拓扑建模、路径分析与故障定位,提升网络可视化、可追溯性与运维效率,结合模拟实验验证其高效性与准确性。
231 3
|
3月前
|
资源调度 负载均衡 JavaScript
使用PM2工具部署Vue.js应用于服务器
以上步骤完成之后,你就成功利⽤ PM⼆工具将 Vuejs 应⽰程序部署至服 务 器,并且配合反向代理实现了高效稳定访问及负载均衡功能。
180 0
|
7月前
|
前端开发 搜索推荐 JavaScript
如何通过DIY.JS快速构建出一个DIY手机壳、T恤的应用?
DIY.JS 是一款基于原生 Canvas 的业务级图形库,专注于商品定制的图形交互功能,帮助开发者轻松实现个性化设计。适用于 T 恤、手机壳等多种商品场景。它自带丰富功能,无需从零构建,快速集成到项目中。通过创建舞台、添加模型、定义 DIY 区域和添加素材四个步骤即可完成基础用法。支持在线演示体验,文档详细,易上手。
318 57
|
6月前
|
监控 算法 JavaScript
公司局域网管理视域下 Node.js 图算法的深度应用研究:拓扑结构建模与流量优化策略探析
本文探讨了图论算法在公司局域网管理中的应用,针对设备互联复杂、流量调度低效及安全监控困难等问题,提出基于图论的解决方案。通过节点与边建模局域网拓扑结构,利用DFS/BFS实现设备快速发现,Dijkstra算法优化流量路径,社区检测算法识别安全风险。结合WorkWin软件实例,展示了算法在设备管理、流量调度与安全监控中的价值,为智能化局域网管理提供了理论与实践指导。
181 3
|
7月前
|
存储 JavaScript 前端开发
|
8月前
|
JavaScript 前端开发 算法
JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能,JS中排序算法的使用详解(附实际应用代码)
Array.sort() 是一个功能强大的方法,通过自定义的比较函数,可以处理各种复杂的排序逻辑。无论是简单的数字排序,还是多字段、嵌套对象、分组排序等高级应用,Array.sort() 都能胜任。同时,通过性能优化技巧(如映射排序)和结合其他数组方法(如 reduce),Array.sort() 可以用来实现高效的数据处理逻辑。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
8月前
|
JavaScript 前端开发 API
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~