面向初学者的物联网全栈开发指南 - 5 - uniCloud对接

在上一章中,我们从IOT云平台向下发展,完成了硬件侧到IOT平台的对接,从这一章开始我们从IOT云平台向自己的服务侧发展。我们采用基于Javascript的uniCloud作为服务侧。

1. 准备工具

2. IOT平台API

我们的云空间与IOT云平台通过云端API建立连接。

先以QueryDevice为例,该接口可查询指定产品下的所有设备列表。

在这里插入图片描述

进入网页后,我们进入调试平台,也可以进入推荐的API开发者门户调试。在SDK示例中,选择使用原版SDK,选择与云空间相同语言的Node.js。页面左侧可以填写请求参数,参数的介绍都在API文档里有介绍,

  • endpoint(服务地址):对于公共实例一定是华东2(上海);
  • ProductKey:在左侧栏中,我们填写此项必填项,可以看到右侧的params对象中多了一条属性,也就是说调用一条API所需要传的参数都为params的属性,传递给client.request();
  • 分页参数:PageSize 指定返回结果中每页显示的记录数量,最大值是50,默认值是10;CurrentPage指定显示返回结果中的第几页的内容,默认值是 1。
  • IotInstanceId:公共实例无需填写。
    在这里插入图片描述

在页面右侧代码中可以看到,还有两项需要我们填写,accessKeyId和accessKeySecret,可以单机链接“获取AK”。对于阿里云,还可以悬停在右上角的用户图标,进入AccessKey管理页面,新建一个即可。AccessKey对应着用户的管理权限,要妥善保管,对于不同的项目成员,可以创建子用户,分配较低的权限共同管理项目。
在这里插入图片描述

在我们现在所处的API调试平台无需填入AK,可以直接调用,填完参数之后直接运行示例,下方的shell就绪后输入回车,就可以看到我们的产品下属的设备了。

在这里插入图片描述

在调用API后,IOT云平台会返回数据,我们重点关注Data这个数组,里面包含了我们需要请求的具体数据,如果数据较多,要考虑分页(Page)问题,具体的返回结构同样可以通过API文档查阅。

常用的API有:

​ QueryDevice:首先获取指定产品中的所有设备,接着使用以下的API遍历设备

  • GetDeviceStatus:查看指定设备是否上线
  • QueryDeviceProp:获取指定设备上报的属性

3. 配置uniCloud

现在我们知道可以通过IOT平台提供的API获取相应的数据,现在使用云空间调用API,并将数据记录在数据库,并向客户端提供查询能力。云空间可通过官方文档快速建立,注意使用阿里云服务器即可,创建一个云空间,并与该项目相关联,我们直接跳到编写云函数这一步。

我们在./uniCloud/cloudfunctions目录下右击,新建云函数,我们来看云函数结构,console.log()可以向页面控制台发送调试信息,函数通过return返回值,我们将使用uniapp调用云函数,获取这个event返回值。也就是说,我们通过云函数调用IOT云平台API获取数据,再返回这些数据至客户端。

exports.main = async (event, context) => {
	//event为客户端上传的参数
	console.log('event : ', event)
	
	//返回数据给客户端
	return event
};

回到API开发者门户,选择一个API,在这里仍以QueryDevice为例,复制原版SDK,Node.js代码,代码的此部分返回调用API后的返回对象的Data部分,同时打印整个API调用的返回结果,如shell中所示。

client.request('QueryDevice', params, requestOption).then((result) => {
		console.log(JSON.stringify(result));
		return result.Data
	}, (ex) => {
		console.log(ex);
		return "Err!"
	})

应用到云函数就是,云函数返回引用库返回的调用API返回的结果。

'use strict';

// 配置库
const Core = require('@alicloud/pop-core');  

var client = new Core({
  accessKeyId: 'LTAI4G7tduj5XzDK-----',
  accessKeySecret: '2WtE7kvP53CNmvLM4xU5yV-------',
  endpoint: 'https://iot.cn-shanghai.aliyuncs.com',
  apiVersion: '2018-01-20'
});	

// 配置API参数
var params = {
  "ProductKey": "----"
}

// API请求方法(POST或GET)
var requestOption = {
  method: 'POST'
};

exports.main = async (event, context) => {
	return client.request('QueryDevice', params, requestOption).then((result) => {
		console.log(JSON.stringify(result));
		return result.Data
	}, (ex) => {
		console.log(ex);
		return "Err!"
	})
};

在运行云函数之前,记得在manifest.json-基础配置-uni-app应用标识中重新获取AppID。在云函数上右击“上传并运行”,可以看到控制台的日志,日志返回的是result,即API返回的整个结果,可以直接打印result.Data,也即云函数实际返回的结果。

在这里插入图片描述
通过uniCloud还可以快速建立云函数库,在云函数中将调用IOT平台API返回的数据直接存储到数据库,云函数具备定时器触发的功能,可以定时抓取来自IOT平台的数据,并建立自己的物联网设备信息数据库。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嘤熊豪杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值