芯片开放社区
直播中

1653339509.516700

11年用户 479经验值
私信 关注
[技术讨论]

【RISC-V 生态软件系列】 HaaS UI基础教学十:JSAPI之IoT平台连接

名词解释

AliOS Things: 阿里云智能IoT团队自研的物联网操作系统
HaaS:全称是Hardware as a Service,阿里云智能IoT团队基于AliOS Things系统推出的硬件即服务
HaaS UI:全称是Hardware as a Service User Interface,是源自AliOS Things操作系统上的一套应用&图形解决方案,支持C/C++和 JS两种开发语言
阿里云物联网平台简介

阿里云物联网平台为设备提供安全可靠的连接通信能力,向下连接海量设备,支撑设备数据采集上云;向上提供云端API,服务端通过调用云端API将指令下发至设备端,实现远程控制。
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);
});
device(Object option)

创建 iot实例,同时会开始尝试连接阿里云IoT平台。iot实例默认开启TLS加密。
入参
属性

类型

必填

描述

region

String


阿里云region,默认值:cn-shanghai。阿里云region详细说明见阿里云物联网平台 - 地域和可用区

返回

实例。

iot 实例

事件
当iot client 连接到iot平台时,触发connect事件。断开重连时也会触发该事件。
当连接断开时,触发'disconnect'事件。
当iot云端下发属性设置时,触发props事件。
当iot云端调用设备service时,触发service事件。
方法
上报属性。
上报事件。
注册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


监听事件的回调函数


设备创建与三元组获取

登录阿里云IoT官网,iot.aliyun.com,点击企业物联网平台:

进入控制台:

点击公共实例:

点击创建产品:

根据需要配置产品相关属性并点击确认:

然后添加设备:

点击前往添加:

选择产品为上一步添加的产品,DeviceName自己命名:

设备添加完成后,点击“查看”即可查看设备三元组信息:

设备三元组信息如下所示:

拿到设备三元组之后,就可以注册设备到阿里云物联网平台了:
this.iot_device = iot.device({
  productKey: "xxx",
  deviceName: "xxx",
  deviceSecret: "xxx",
  region: "" // 默认是cn-shanghai
});
设备上报属性示例

首先需要在产品中创建相应属性,在产品页面点击查看:

选择功能定义:

点击编辑草稿:

点击添加自定义功能:

配置属性相关信息,点击确认:

属性配置完成后,点击发布上线,至此,属性就配置完成了:

属性创建完成后,设备就可以将对应的属性上报到物联网平台了,设备属性上报示例代码如下:
// 先注册设备到阿里云物联网平台
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');
    }
  });      
},
下面将模拟开关灯,以示例阿里云物联网平台收到的设备属性上报数据。当灯打开时,向平台上报“开”,当灯关闭时,向平台上报“关”,物联网平台将实时显示设备上报的数据:

文章转载自:平头哥芯片开放社区 作者:sucool

更多回帖

发帖
×
20
完善资料,
赚取积分