百度云
一、百度云概述
百度智能云物联网核心套件(IoT Core)是面向物联网领域开发者的全托管云服务,通过主流的物联网协议(如 MQTT)通讯,可以在智能设备与云端之间建立安全的双向连接,快速实现物联网项目。
官网地址:百度智能云物联网平台控制台
官方文档地址:物联网核心套件文档
注:新用户首次使用 IoT Core 时,需要完成实名认证并开通 IoT Core 服务。 IoT Core 属于后付费业务,未使用 IoT Core 前,不会进行任何计费。
二、演示功能概述
接下来为大家介绍 Air780EP 如何接入百度云,并且在平台端通过模拟设备在线工具下发消息,控制模块端灯的亮灭。
三、准备硬件环境
参考:硬件环境清单第二章节内容,准备以及组装好硬件环境。
四、软件环境
“凡事预则立,不预则废。”在详细阐述本功能示例之前,我们需先精心筹备好以下软件环境。
1. Luatools工具;
2. 内核固件文件(底层core固件文件):LuatOS-SoC_V2002_Air780EP;参考项目使用的内核固件;
3. luatos需要的脚本和资源文件
脚本和资源文件右键点我,另存为,下载完整压缩文件包
lib脚本文件:使用Luatools烧录时,勾选 添加默认lib 选项,使用默认lib脚本文件;
准备好软件环境之后,接下来查看如何烧录项目文件到Air780EP核心板,将本篇文章中演示使用的项目文件烧录到Air780EP核心板中。
五、百度云软硬件资料
5.1 iotcloud 库介绍
众所周知,市面上有很多云平台,阿里云、腾讯云、中移 onenet、华为云、百度云、Tlink 云等等......并且每家都有自己的协议,工程师要移植不同的 sdk 代码或基于各家的手册文档对接不同的协议,看着都头大!!!
所以 iotcloud 应运而生!iotcloud 是合宙专门为了合并 iot 平台而制作的库,意在使用统一且极简的代码接入各个云平台,轻松实现云功能。用户无需为那么多云平台的接入而头疼,只需要极简的通用 API 即可轻松上云!并且因为通用,所以云平台之间的迁移也十分方便。
iotcloud 库本质就是上层设计一套通用的 API 库来进行每个平台功能的对接。目前已经实现了各个平台的所有注册方式,其中自动注册会将相关验证信息保存 kv,随后使用此验证信息进行连接,通知针对每个平台添加了特有系统实现,比如设备上线通知,设备版本号上传,ota 功能等,用户无需管理这些只需要注意相关下发消息做应用逻辑即可。
5.2 API 接口介绍
本教程使用 api 接口为:iotcloud - iotcloud 云平台库 (已支持: 腾讯云 阿里云 onenet 华为云 涂鸦云 百度云 Tlink 云 其他也会支持,有用到的提 issue 会加速支持) - LuatOS 文档
六、云平台配置与效果展示
6.1 云平台配置
6.1.1 注册百度云账号并开通 IoTCore
在使用物联网核心套件服务前,您需要创建一个百度智能云账号,请按照下述步骤进行注册和登录。
1. 在百度智能云登录页面,选择百度账号,点击“立即注册”,进入百度账号注册界面 2. 如果未进行实名认证,请先进行实名认证 3. 开通 IoTCore:开通服务并同意按需计费,可进入“实例列表”
6.1.2 创建 IoT Core 实例
1、登录 IoT Core 控制台页面
2、点击“创建 IoT Core 实例”
3、填写需要创建 IoT Core 的名称,付费方式选择按需付费,确认购买即可
创建完成后,即可在列表页看到刚才创建的 IoT Core 实例。其中第一列展示了其名称及 ID
6.1.3 创建设备模板
创建设备前需要先创建设备模板,默认的设备模板包含两个主题,也可自定义主题,
模板---> 添加模板---> 点击添加的模板名称--> 添加主题。
6.1.4 创建设备
1、点击 IoT Core 实例名称
2、点击左侧导航栏中的”设备列表“,选择“新增设备”
3、填写设备名称(此名称在当前 IoT Core 下唯一)、认证方式、描述(可选),并选择所需要使用的设备模板,点击提交即可完成设备创建
6.1.5 记录连接信息
看到这里说明你已经根据前面的教程完成了设备的创建,接下来需要点击设备名称,记录下连接信息中的 IoTCoreld,DeviceKey,DeviceSecret 三个信息,以供后续设备连接云平台使用。
到此为止,创建产品设备工作已经完成,后续会根据不同注册方式来进行实例讲解。
6.2 设备注册
百度智能云平台支持两种注册方式,分别为密钥认证(手动注册)和证书认证,目前合宙 iotcloud 库对于两个注册方式均支持,但是不推荐使用证书认证方式进行注册,因为证书存在过期的情况,需要定期升级维护。
6.2.1 密钥认证(手动注册)
在 6.1.4 创建设备教程中的第 3 步选择密钥验证即可,如下图所示:
将 6.1.5 记录连接信息教程中记录的 IoTCoreld 填入 demo 中的 produt_id 中,DeviceKey 填入 device_name 中,DeviceSecret 填入 device_secret 中。
配置代码如下:
-- 百度云
iotcloudc = iotcloud.new(iotcloud.BAIDU,{produt_id = "aakyhyw",device_name = "869329069169988",device_secret = "XXX"})
第一个参数 iotcloud.BAIDU 表示我们使用的是百度云,
第二个参数{produt_id = "aakyhyw",device_name = "869329069169988",device_secret = "XXX"} ,我们将上面得到的三个参数填写到 table 中即可,so easy~
6.2.2 证书认证
在 6.1.4 创建设备教程中的第 3 步选择证书认证即可,如下图所示:
创建好设备后,点击设备名称,查看设备连接信息如下:
记录下参数,证书部分参考官方文档进行处理 使用证书鉴权建立 MQTT 连接 - 物联网核心套件 IoTCore | 百度智能云文档 (baidu.com)
把设备证书部分保存到新建的 client_cert.txt 中,把设备私钥部分保存到新建的 client_private_key.txt 文件中,并下载根证文件,然后将 3 个证书文件作为脚本文件一起烧录到模块内,就可以用/luadb/路径直接读取烧录的文件,如下所示:
配置代码如下:
-- 证书认证(自动注册)
iotcloudc = iotcloud.new(iotcloud.BAIDU,{produt_id = "aakyhyw",device_name = "869329069169988"},{tls={server_cert=io.readFile("/luadb/GlobalSign.cer"),client_cert=io.readFile("/luadb/client_cert"),client_key=io.readFile("/luadb/client_private_key")}})
第一个参数 iotcloud.BAIDU 表示我们使用的是百度云,第二个和第三个参数我们将上面得到数据写入即可!
6.3 效果展示
本例采用密钥认证(手动注册)的方式进行注册并连接云平台。
1、设备日志
可以看到我们的设备打印了连接成功,证明手动注册 + 连接流程已经完成。
2、云平台效果 点击运维管理的用量统计,可显示当前在线连接数量。
设备已经自动注册并且在线,至此,云平台已经连接成功。
七、代码示例说明及功能验证
本例我们通过密钥认证(手动注册)方式连接百度云平台,实现在平台端通过模拟设备在线工具下发消息,控制 Air780EP 的 NET_STATUS 网络灯亮和灭。
注意:百度云的物解析型实例已于 2019 年公告不再提供服务,故不能方便的通过云平台管理连接的物联网设备,包括设备的注册、状态监控和数据查看等。因此本例通过百度云平台的模拟设备工具,通过 topic 控制实际设备。
7.1 硬件连接
演示使用的是 Air780EP 核心板的网络灯,也可以自己外接 led 灯进行控制,根据下图可知控制 NET_STATUS 网络灯的是 gpio27。
7.2 代码使用说明
1、设备注册并连接云平台
记得修改 produt_id ,device_name 和 device_secret 三个参数为自己平台上的。
sys.taskInit(function()
-- 等待联网
local ret, device_id = sys.waitUntil("net_ready")
-- 百度云
iotcloudc = iotcloud.new(iotcloud.BAIDU,{produt_id = "aakyhyw",device_name = "869329069169988",device_secret = "XXX"})
log.info("main", "iotcloudc", iotcloudc)
if iotcloudc then
iotcloudc:connect()
end
end)
2、模块端订阅主题,用于百度云平台模拟设备在线工具通过该主题向模块端下发消息
此行代码放置位置,只要在云平台连接成功之后即可, 本文
iotcloudc:subscribe()
中的第一个参数订阅的仍然是一个自定义topic。
iotcloudc:subscribe("$iot/869329069169988/user/fortest") -- 可以自由订阅主题等
云平台自定义的 topic 如下所示:详见 4.2.3 创建设备模板中的添加主题教程,本例定义的 topic 兼发布和订阅权限。
3、模块端接收数据并解析
接收统一使用了
"iotcloud"
消息进行通知,所以我们只需要订阅此系统消息即可,收到的消息 open 表示开灯,close 表示关灯
代码如下所示:
-- 初始化gpio27
LED = gpio.setup(27, 0, gpio.PULLUP)
sys.subscribe("iotcloud", function(cloudc,event,data,payload)
-- 注意,此处不是协程内,复杂操作发消息给协程内进行处理
if event == iotcloud.CONNECT then -- 云平台联上了
print("iotcloud","CONNECT", "云平台连接成功")
iotcloudc:subscribe("$iot/869329069169988/user/fortest") -- 可以自由订阅主题等
elseif event == iotcloud.RECEIVE then
print("iotcloud","topic", data, "payload", payload)
if payload == 1 then
LED(1)
elseif payload == 0 then
LED(0)
end
-- 用户处理代码
elseif event == iotcloud.OTA then
if data then
rtos.reboot()
end
elseif event == iotcloud.DISCONNECT then -- 云平台断开了
-- 用户处理代码
print("iotcloud","DISCONNECT", "云平台连接断开")
end
end)
此时将代码烧录进开发板,即可在百度云平台的在线模拟设备工具控制开发板网络灯的亮灭,如何配置百度云平台下发指令,请看下面介绍:
IoT Core 实例名称"test"---> 设备列表---> 点击设备名称
点击模拟设备,再点击开始模拟,填入自定义的 topic,输入 open 开灯或者 close 关灯。
7.3 运行结果展示
八、总结
本教程简单演示了设备上云,以及设备和云平台在线模拟设备工具的简单通信,看到这里相信你已经完成了设备和百度云平台之间的连接,接下来你可以在此基础上,使用百度云的规则引擎,与 TSDB、物可视等产品进行无缝衔接,在云端轻松构建基于设备的物联网应用!
扩展
常见问题
1、百度云接入失败,怎么排查?
先检查设备配置,确保设备的 ID,名称,密钥等配置信息正确无误;同时也要检查下网络连接,确保 SIM 卡是正常入网状态,若还是不行,请再仔细看下教程,看是否有哪个步骤有疏漏。
2、百度云旧版和新版区别
百度云旧版的天工物接入 IoT Hub,支持物解析型实例;目前新版为物联网核心套件 IoT Core,不再支持物解析型实例,核心套件的具体使用方法请查阅百度云官网的文档使用介绍。https://cloud.baidu.com/doc/IoTCore/s/ek7o8ydue
给读者的话
本篇文章由
王世豪
开发;本篇文章描述的内容,如果有错误、细节缺失、细节不清晰或者其他任何问题,总之就是无法解决您遇到的问题;
请登录合宙技术交流论坛,点击文档找错赢奖金-Air780EP-LuatOS-软件指南-网络应用-百度云 用截图标注+文字描述的方式跟帖回复,记录清楚您发现的问题;
我们会迅速核实并且修改文档;
同时也会为您累计找错积分,您还可能赢取月度找错奖金!