名词解释
AliOS Things: 阿里云智能IoT团队自研的物联网操作系统
HaaS:全称是Hardware as a Service,阿里云智能IoT团队基于AliOS Things系统推出的硬件即服务
HaaS UI:全称是Hardware as a Service User Interface,是源自AliOS Things操作系统上的一套应用&图形解决方案,支持C/C++和 JS两种开发语言
1、阿里云智能物联网平台简介
阿里云智能物联网平台为设备提供安全可靠的连接通信能力,向下连接海量设备,支撑设备数据采集上云;向上提供云端API,服务端通过调用云端API将指令下发至设备端,实现远程控制。
2、HaaS UI IoT平台接口简介
阿里云智能物联网平台支持海量设备连接上云,设备与云端可以通过js形式的IoT接口进行稳定可靠的双向通信,这些接口简称jsapi_iot。
jsapi_iot提供了设备上报属性、设备上报事件、云端设置属性、云端下发服务、mqtt连接状态监听等接口,可方便开发者使用阿里云物联网平台的相关功能。
示例代码
/* iot - 阿里云IoT连接平台连接组件示例,产品功能定义:
* [功能类型] ------ [功能名称] ------ [标志符] ------ [数据类型]
* 属性 主灯开关 LightSwitch bool (0-关闭 1-开启)
* 服务 开关翻转 ToggleLightSwitch -
* 事件 故障上报 Error 参数标志符:ErrorCode
* */
import * as iot from 'iot';
this.device = iot.device();
/* 网络连接事件 */
device.on('connect', function () {
console.log('(re)connected');
});
/* 网络断开事件 */
device.on('disconnect', function () {
console.log('disconnect ');
});
/* 云端设置属性事件 */
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);
});
2.1、device(Object option)
创建 iot 实例,同时会开始尝试连接阿里云IoT平台。iot实例默认开启TLS加密。
入参
属性 | 类型 | 必填 | 描述 |
region | String | 否 | 阿里云region,默认值:cn-shanghai。阿里云region详细说明见阿里云物联网平台 - 地域和可用区 |
返回
- iot 实例。
2.2、iot 实例
事件
- 事件:'connect'
当iot client 连接到iot平台时,触发connect事件。断开重连时也会触发该事件。
- 事件:'disconnect'
当连接断开时,触发'disconnect'事件。
- 事件:'props'
当iot云端下发属性设置时,触发props事件。
- 事件:'service'
当iot云端调用设备service时,触发service事件。
方法
- iot.postProps(Object option)
上报属性。
- iot.postEvent(Object option)
上报事件。
- iot.on(String event, Function callback)
注册iot事件回调函数。
事件:'connect'
当iot client 连接到iot平台时,触发'connect'事件。断开重连时也会触发该事件。
事件:'disconnect'
当连接断开时,触发'disconnect'事件。三元组错误、三元组重复上线、服务端断开连接、主动断开连接、网络发生异常等都会触发该事件。该事件触发时,会自动尝试重连。
事件:'props'
当iot云端下发属性设置时,触发'props'事件。
回调函数参数有:
属性 | 类型 | 描述 |
payload | Object | 服务端设置设备属性的内容 |
事件:'service'
当iot云端调用设备service时,触发'service'事件。
回调函数参数有:
属性 | 类型 | 描述 |
id | String | 服务标志符,详细请参考什么是物的模型 |
payload | Object | 服务端设置设备属性的内容 |
方法: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.on(String event, Function callback)
监听事件。
入参
属性 | 类型 | 必填 | 描述 |
event | String | 是 | 注册的事件名称 |
callback | Function | 是 | 监听事件的回调函数 |
3、设备创建与三元组获取
登录阿里云IoT官网,iot.aliyun.com,点击企业物联网平台:
进入控制台:
点击公共实例:
点击创建产品:
根据需要配置产品相关属性并点击确认:
然后添加设备:
点击前往添加:
选择产品为上一步添加的产品,DeviceName自己命名:
设备添加完成后,点击“查看”即可查看设备三元组信息:
设备三元组信息如下所示:
拿到设备三元组之后,就可以注册设备到阿里云物联网平台了:
this.iot_device = iot.device({
productKey: "xxx",
deviceName: "xxx",
deviceSecret: "xxx",
region: "" // 默认是cn-shanghai
});
4、设备上报属性示例
首先需要在产品中创建相应属性,在产品页面点击查看:
选择功能定义:
点击编辑草稿:
点击添加自定义功能:
配置属性相关信息,点击确认:
属性配置完成后,点击发布上线,至此,属性就配置完成了:
属性创建完成后,设备就可以将对应的属性上报到物联网平台了,设备属性上报示例代码如下:
// 先注册设备到阿里云物联网平台
this.iot_device = iot.device({
productKey: "xxx",
deviceName: "xxx",
deviceSecret: "xxx",
region: "" // 默认是cn-shanghai
});
// 设备属性上报
postProps() {
this.LightSwitch = this.LightSwitch == 0 ? 1 : 0;
this.iot_device.postProps({
payload: {
LightSwitch: this.LightSwitch
},
success: function () {
console.log('postProps success');
},
fail: function () {
console.log('postProps failed');
}
});
},
下面将模拟开关灯,以示例阿里云物联网平台收到的设备属性上报数据。当灯打开时,向平台上报“开”,当灯关闭时,向平台上报“关”,物联网平台将实时显示设备上报的数据: