想一库打通所有云平台?我们尝试这样做。。。
小伙伴们一定对市面上众多的云平台很熟悉:阿里云、腾讯云、中移OneNET、华为云、百度云、TLink云等等,一直以来,工程师要移植不同的SDK代码或基于各家的手册文档对接不同的协议,这是一件非常繁琐的事情!
为解决繁琐的云平台开发困扰,我们试试合宙IoT_CLOUD!
本文将以Air780E+LuatOS作为示例,教你使用IoT_CLOUD连接腾讯云平台。
注意:此库为网络通用库不限制型号,即【所有LuatOS支持的蜂窝模组都可使用】。
本文同样适用于:
Air780EX/Air780EG/Air780EP/Air780EPS…
一、合宙IoT_CLOUD简介
1.1 IoT_CLOUD特色简介
IoT_CLOUD——是合宙专门为了合并IoT平台而制作的LuatOS通用库,意在使用统一且极简的代码接入各个云平台,轻松实现云功能。
用户无需为那么多云平台的接入而头疼,只需要极简的通用API即可轻松上云!并且因为通用,所以云平台之间的迁移也十分方便。
1.2 IoT_CLOUD功能实现
IoT_CLOUD库本质就是上层设计一套通用的API,用库来实现每个平台功能的对接。
目前已经实现了各个平台的所有注册方式,其中自动注册会将相关验证信息保存KV,随后使用此验证信息进行连接,通知针对每个平台添加了特有系统实现,比如:设备上线通知、设备版本号上传、OTA功能等。
用户无需管理这些信息,只需要注意相关下发消息做应用逻辑即可。
二、腾讯云简介
腾讯云物联网开发平台(IoT Explorer)——是面向智慧生活与产业互联应用的物联网PaaS平台,为基于物联网的各行业设备制造商、方案商及应用开发商提供一站式设备智能化服务。
平台提供海量设备连接与管理能力及基于腾讯连连的小程序应用开发能力,并打通腾讯云基础产品及AI能力,聚合腾讯生态内容能力。从而提升传统行业设备智能化的效率,降低用户的开发运维成本。
三、前期准备工作
3.1 云平台准备
注册/登录腾讯云账号,新建公共实例并且新建一个项目,后面我们会在此项目中进行演示。
注意:腾讯新出了个V2版本开发平台,本库也支持但是不推荐使用。
至笔者编写此文章为止,V2较V1版本去掉了证书校验,去掉了自动注册中自动创建设备功能,并且已经和腾讯云确认此改动。是的,自动注册的自动创建设备改没了,自动注册要手动一个一个创建设备,呵呵。。。
3.2 硬件准备
-
合宙Air780E开发板
-
USB数据线
-
Win10以上PC电脑
四、实战教学
接下来,我们就不按部就班的介绍每个API,这样很枯燥。我们直接实战,跟着文档从0一步一步进行下去,每一步介绍涉及到的API,流程结束也就学会IoT_CLOUD库的使用。
4.1 设备注册
1)设备注册API
注册的API只有一个,但是支持了所有的注册方式,使用也很简单。
创建云平台对象
iotcloud.new(cloud,iot_config,connect_config)
参数:
返回值:
2)设备注册分类
腾讯云支持密钥校验、证书校验、动态注册三种注册方式(实际是四种,其中动态注册里分两种,但是对用户无感所以这里不进行拆分)。
▼ 密钥校验(手动注册) ▼
密钥校验即使用密钥作为校验凭据,首先新建产品:
按照要求填写,认证方式选择密钥认证,之后我们点进去新建个设备,设备名称我们可以直接填写模组的imei。
这样我们就创建好了设备,我们点进去看下设备信息。
可以看到我们需要的数据已经被贴心的加了一键复制,我们要记录下【设备名称、产品ID、设备密钥】这三个数据,使用这三个数据我们就可以上云了。
接下来,我们看下代码具体怎么用:
第一个参数表示我们使用的是腾讯云,第二个参数我们将上面得到的三个参数填写到table中即可,so easy~
▼ 证书校验(手动注册) ▼
证书校验即使用证书作为校验凭据,注意选择证书认证。
注意:V2版本腾讯云不支持新建此校验方式。
之后和上面密钥校验一样的创建设备流程,创建之后我们再来看看设备信息。
大家应该猜到了,还是三个参数:
产品名称、产品ID,最后一个变成了设备证书。
接下来,我们再来看下代码具体怎么用:
第一个参数表示我们使用的是腾讯云,第二个参数我们将上面得到的产品名称 产品ID,第三个参数写上我们的证书,同样很简单~
▼ 动态注册(推荐) ▼
上面两种方式都需要我们手动在云平台上创建设备,但是我们的产品会有很多设备,手动创建太麻烦。
动态注册就解决了这些问题:
——可以实现统一代码使用时动态进行设备注册,无需手动创建。
注意:V2版本腾讯云不支持自动创建设备
这样我们就简单了很多,上面两种方式创建的产品详情中都有动态注册开关,我们只需要打开动态注册开关和自动创建设备开关即可支持两种方式的动态注册。
随后会生成动态注册上方的产品密钥,我们复制产品ID和产品密钥即可。
接下来,我们再来看下代码具体怎么用:
第一个参数表示我们使用的是腾讯云,第二个参数我们将上面得到的产品ID和产品密钥,非常的简单!
4.2 连接/断开云平台
注册完成了,我们开始上云了~ 非常简单,iotcloud库的api基本和mqtt库一样,所以连接只需要一个API。
1)云平台连接
cloudc:connect()
参数:无
返回值:无
例子:
iotcloudc:connect()
连接说了,我们也说一下断开连接,也只需要一个API。
2)云平台断开
cloudc:disconnect()
参数:无
返回值:无
例子:
iotcloudc:disconnect()
4.3 订阅/取消订阅主题
同上,订阅和取消订阅也很简单。
1)云平台订阅
cloudc:subscribe(topic, qos)
参数:
传入值类型 | 解释 |
---|---|
string/table | 主题 |
number | topic为string时生效 0/1/2 默认0 |
返回值:无
2)云平台取消订阅
cloudc:unsubscribe(topic)
参数:
传入值类型 | 解释 |
---|---|
string/table | 主题 |
返回值:无
4.4 发布数据
数据的发布也同MQTT一样。
云平台发布
cloudc:publish(topic,data,qos,retain)
参数:
传入值类型 | 解释 |
---|---|
string/table | 主题 |
string | 消息,必填,但长度可以是0 |
number | 消息级别,0/1,默认0 |
number | 是否存档,0/1,默认0 |
返回值:无
4.5 接收数据
接收统一使用了"iotcloud"消息进行通知,所以我们只需要订阅此系统消息即可。
4.6 云平台关闭
云平台关闭会释放掉内存,之后不能再进行重接,只能重新新建再连接。
云平台关闭
cloudc:close()
参数:无
返回值:无
例子:
iotcloudc:close()
4.7 云平台OTA
仅仅如此了么?当然不只!
IoT_CLOUD还支持了腾讯云平台的OTA功能,可以直接进行OTA,且所有流程iotcloud库都进行了支持,做到了用户无感。
用户在订阅"iotcloud"消息中会有iotcloud.OTA事件,此事件即为OTA完成的通知,我们选择时间进行设备重启即可。
五、效果演示
5.1 代码演示
好了,接下来我们看下完整代码和效果,这里以动态注册为例。
5.2 设备日志
可以看到我们的设备打印了连接成功,证明自动注册+连接流程已经完成。
5.3 云平台效果
可以看到,设备已经自动注册并且在线。
至此,云平台已经连接成功。剩下的就是要根据自己的产品需求,使用自己的模型上报/下发数据就可以了。