1、前言
除了基础的功能组件外,JavaScript轻应用还提供了阿里云智能物联网平台连接以及语音播报等能力,具体介绍如下。
2、iot - 阿里云IoT平台连接组件
示例代码
/* iot - 阿里云IoT连接平台连接组件示例,产品功能定义:
* [功能类型] ------ [功能名称] ------ [标志符] ------ [数据类型]
* 属性 主灯开关 LightSwitch bool (0-关闭 1-开启)
* 服务 开关翻转 ToggleLightSwitch -
* 事件 故障上报 Error 参数标志符:ErrorCode
* */
var iot = require('iot');
var productKey = '<product-key>';
var deviceName = '<device-name>';
var deviceSecret = '<device-secret>';
var lightSwitch = 0;
var device = iot.device({
productKey: productKey,
deviceName: deviceName,
deviceSecret: deviceSecret,
region: 'cn-shanghai',
success: function () {
console.log('connect success');
onConnect();
},
fail: function () {
console.log('connect failed');
}
});
function onConnect() {
setInterval(function () {
/** post properties */
lightSwitch = 1 - lightSwitch;
device.postProps({
payload: {
LightSwitch: lightSwitch
},
success: function () {
console.log('postProps success');
},
fail: function () {
console.log('postProps failed');
}
});
/** post events */
device.postEvent({
id: 'Error',
params: {
ErrorCode: 0
},
success: function () {
console.log('postEvent success');
},
fail: function () {
console.log('postEvent failed');
}
});
}, 3000);
}
device.on('connect', function () {
console.log('(re)connected');
});
/* 网络断开事件 */
device.on('disconnect', function () {
console.log('disconnect ');
});
/* 关闭连接事件 */
device.on('close', function () {
console.log('iot client just closed');
});
/* 发生错误事件 */
device.on('error', function (err) {
console.log('error ' + err);
});
/* 云端设置属性事件 */
device.on('props', function (payload) {
console.log('cloud req data is ', payload);
console.log('LightSwitch ', payload.LightSwitch ? 'ON' : 'OFF');
});
/* 云端下发服务事件 */
device.on('service', function (id, payload) {
console.log('received cloud serviceid is ' + id);
console.log('received cloud req_data is ' + payload);
});
var iot = require('iot');
var productKey = '<product-key>';
var deviceName = '<device-name>';
var deviceSecret = '<device-secret>';
/* 设备签名 */
iot.sign({
productKey: productKey,
deviceName: deviceName,
deviceSecret: deviceSecret,
region: 'cn-shanghai',
success: function (params) {
console.log('sign success');
console.log(params);
},
fail: function () {
console.log('sign failed');
}
});
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 - 音频播放组件
示例代码
var audioplayer = require('audioplayer');
var audioplayerState = ['stop', 'paused', 'playing', 'listplay_begin', 'listplay_end', 'error'];
audioplayer.on('stateChange', function(state) {
console.log('audioplayer state: ' + audioplayerState[state]);
});
audioplayer.setVolume(60);
audioplayer.play("/test.mp3");
setTimeout(function() {
console.log("playback pause");
audioplayer.pause();
var position = audioplayer.getPosition();
var duration = audioplayer.getDuration();
console.log('playback progress: ' + position + '/' + duration);
}, 5000)
setTimeout(function() {
console.log("playback resume");
audioplayer.resume();
}, 10000)
setTimeout(function() {
console.log("playback from 1s");
audioplayer.seekto(1);
}, 15000)
setTimeout(function() {
var position = audioplayer.getPosition();
var duration = audioplayer.getDuration();
console.log('playback progress: ' + position + '/' + duration);
}, 16000)
setTimeout(function() {
console.log("playback stop");
audioplayer.stop();
}, 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/