【当OpenHarmony遇见华为云IoT】L0设备对接华为云实验复现与心路历程【华为云IoT+鸿蒙】
在上篇博文【当OpenHarmony遇见华为云IoT】726直播有感而发【华为云IoT+鸿蒙】中,我记录了观看《如何为物联网设备注入“华为云+鸿蒙DNA”》直播时的脑洞。这篇博文不再停留在想法阶段,而是真刀真枪的实干了,复现OpenHarmony L0设备对接华为云的实验。这也是我第一次接触使用小熊派OpenHarmony开发板,参考的主要资料是华为云提供的文档基于OpenHarmony3.0对接IoTDA_最佳实践,同时重点参考了华为终端的OpenHarmony设备开发文档-OpenHarmony设备开发-HarmonyOS设备开发和OpenHarmony在Gitee文档docs: OpenHarmony documentation | OpenHarmony开发者文档 。这篇博文记录了我的动手实践复现踩坑和心得体会。
首先是准备搭建OpenHarmony设备开发环境,由于要搭一套Windows+Ubuntu混合开发环境,依据文档系统要求Windows是win10 64位系统,Ubuntu是推荐20.4版本,内存16G以上。这是我面对复现实验的第一个技术选型难题。我是商科生,是名技术爱好者,不是职业工程师,我的主力机是华为matebook X(8G内存和256G固态),在这台主机上搭建虚拟机实现Windows+Ubuntu的混合开发环境,8G内存直觉吃不消。但我有台T490(8G+256固态)备用机,且听说联想thinkpad机型对Ubuntu一直都很友好。所以我果断从四次元口袋翻出了T490,依据网上教程,制作启动Ubuntu U盘,给T490顺利装上了Ubuntu 20.04。依据技术文档,在Win和Ubuntu机上下载了DevEco Device Tool 3.1 Release版。在Win机上打开VsCode远程连接ubuntu,说实话,有被DevEco Device Tool 简洁又大气的UI界面惊艳到。
接下来我就遇到了本次复现实验的大坑:下载OpenHarmony源码。文档提供了4种获取方式,并推荐从码云仓库获取。好,我注册了码云Gitee账号,注册码云SSH公钥,安装了git客户端和git-lfs并配置了用户信息。安装好repo工具后,开始尝试下载OpenHarmony源码。由于是复现实验,实验文档写的是“基于OpenHarmony3.0对接BearPi-HM_Nano”,而OpenHarmony版本众多,我想当然的以为这和Ubuntu类似,"OpenHarmony3.0"特指的是“OpenHarmony v3.0 LTS(2021-09-30)”版本,即OpenHarmony 3.0LTS版本,故我的repo代码就演变成:
repo init -u git@gitee.com:openharmony/manifest.git -b refs/tags/OpenHarmony-v3.0-LTS --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
然后花了整整2个多小时,你没有看错,是2个多小时,等着上面这三行代码跑完。我那256G固态硬盘很快就用掉了30G。在这2个多小时漫长等待时间里,由于等待无聊,我竟然把HUAWEI DevEco Device Tool使用指南文档从头到尾翻了一遍。源码下载完后,我开始移植文档里的Huaweicloud_iotlink SDK,把源码直接拷贝到OpenHarmony源码的third-party文件目录下。就是在这里,我遇到诡异的事情,我发现OpenHarmony3.0LTS源码里,其device文件目录下根本就没有所谓的"bearpi",也就是说,小熊派bearpi的代码根本就“不在”OpenHarmony源码里。“小熊派到哪里去了?难道是我下的源码版本有问题?”我又仔细看了华为云提供的基于OpenHarmony3.0对接IotTDA的技术文档更新时间是2022-11-22日,但我下的3.0LTS版本是2021-09-30日,或许是版本问题,于是我又下载了最新的OpenHarmoy3.0.7版本,又是2个多小时过去了,但和3.0一样,我依然没有在OpenHarmony3.0.7版本中找到小熊派源码。当我在琢磨是不是要自己移植小熊派代码时,我注意到华为云除了基础版体验实验外,还有进阶版体验,是以OpenHarmony3.1.1和rk3588为例。我心一横,反正3.0中找不到小熊派,要不我下载3.1.1版试试运气。
repo init -u git@gitee.com:openharmony/manifest.git -b refs/tags/OpenHarmony-v3.1.1-Release --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
这次是3个多小时过去了,皇天不负有心人,我终于在3.1.1版中找到了小熊派,并通过DevEco Device Tool 3.1版中进行了相关配置。
DevEco Device Tool 3.1配置很醒目,可以很直观告诉你环境中还缺少了什么。对于图片中有叉的地方,点击旁边的Download就好。
正确下载安装后,DevEco Device Tool会如下显示:
如图所示,缺少的gcc-riscv和hiburn都正确安装了。然后我遇到了第二个坑,Scons安装。Scons安装多次失败,我感觉应该与网络联接不稳定有关。我尝试修改了pip.conf配置,同时也更新了sources.list文件,让两者都指向华为云。
[global]
index-url = https://repo.huaweicloud.cn/repository/pypi/simple
trusted-host = repo.huaweicloud.cn
timeout = 120
sudo sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.cn@g" /etc/apt/sources.list
sudo sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.cn@g" /etc/apt/sources.list
SCons顺利安装,开发环境配置完毕。
接下来是移植Huaweicloud_iotlink SDK,这里我遇到了第三个坑:mqtt_tiny_v5_agriculture_demo中的device路径修改。华为云官方文档中给出的小熊派源码是在device/bearpi/bearpi_hm_nano路径下,但在我下载的OpenHarmony3.1.1版中,小熊派Bearpi的实际路径是在device/board/bearpi,这里调整修改一下。否则后续后续编译环节会报错,找不到某些重要的头文件。
小熊派代码设置好后,我们转到华为云Iot上进行相关设置。上传模型文件BearPi_Agriculture.zip,注册并创建设备。
华为云会提供一个DEVICES-KEY文件,上面有保存设备ID和设备密钥,用于设备接入平台认证。
回到小熊派相关代码中设置参数,主要是Wifi信息,设置成自己手机热点的账号和密码,设备ID和密码,使用之前的DEVICES-KEY的信息。
上述工作完备后,就可以使用DevEco Device Tool编译OpenHarmony源码了。
Build编译完成后,就可以Upload烧录了。记得要在Project Setting中正确设置Upload的COM端口号。
烧录完成后,可以使用Monitor监控程序运行效果:
而华为云IoT平台上则能成功收集到小熊派开发板的相关基础数据,例如温度等。
云端还可以发布命令,控制小熊派开发板上的灯泡和电机。
通过云端同步命令,控制小熊派扩展板上灯泡亮,运行效果如画面所示:
实验复现成功,博文记录完毕。
最后分享一张华为设备全家福,图片里是本次实验用到的小熊派BearPi,用于wifi热点的华为手机和我的华为matebook x主力机。
OpenHarmony L0设备对接华为云实验博文记录完结,散花纪念~
P.S. 我正在参加【有奖征文 第25期】深度体验OpenHarmony对接华为云IoT,输出优质体验文章,赢开发者定制大礼包!https://bbs.huaweicloud.cn/blogs/406570
- 点赞
- 收藏
- 关注作者
评论(0)