碰一碰配网步骤与流程(以智能风扇为例):
一、整体流程图:
二、开发准备工作
-
华为手机,系统版本号为HarmonyOS2.0.0.168及以上(当前支持HarmonyOS系统的手机型号包括:Mate X2、P50Pro、P50、Mate40、Mate40E、Mate 40 Pro、Mate 40 Pro+、Mate 40 RS保时捷设计、P40、P40 Pro、P40 Pro+、Mate 30 4G、Mate 30 Pro 4G、Mate 30 5G、Mate30 Pro 5G、Mate 30 RS保时捷设计、Mate 30E Pro 5G等。)
-
小熊派bearpi_hm_nano开发底板+E53_IA1拓展板如下图:
-
请自行准备1个NFC标签,可以用手机触碰NFC标签,提前确保NFC功能可用。(说明: 请不要使用HiSpark
Wi-Fi IoT智能家居套件中自带的NFC板,可以使用小熊派开发板自带NFC标签。) -
在华为应用市场,下载并安装“应用调测助手”APP,用于写NFC标签。
-
打开手机设置 > 应用和服务 > 应用管理
(点击右上角图标,点击显示系统程序选项),搜索“智慧生活基础服务”,检测智慧生活基础服务的版本是否为12.0.2.306及以上。如果不是,请打开华为手机的“智慧生活”APP,点击“我的
> 设置 > 检查应用更新”,更新“智慧生活基础服务”。 -
确保HarmonyOS 手机中api version 在 API 6以上,查看HarmonyOS
手机API方法:在HarmonyOS
SDK存储目录下的Sdk\toolchains文件下打开命令行工具,执行如下命令进行查询真机设备的apiversion和releaseType取值。
hdc shell
getprop hw_sc.build.os.apiversion // 返回数值是6或者6以上
三、Linux环境配置(以wsl为例)及源码下载
使用 WSL(Windows Subsystem forLinux)来代替传统的虚拟机,可以避免虚拟机启动速度满,消耗资源多的问题,以下为WSL搭建Open
Harmony开发环境的的步骤(详细内容参考此博客,下文为简要步骤,快速上手WSL):
- 右键windows左下角->应用和功能->相关设置-程序和功能->启用或关闭windows功能勾选适用于Linux的windows子系统和虚拟机平台(WSL2需要)选项如下图。按要求重启使设置生效。
- 打开Microsoft Store,搜索wsl2,下载Ubuntu20.04。
-
在开始菜单中找到刚刚安装的ubuntu20.04,打开后会自动进行安装:
-
安装完成后,会提示创建用户。按照提示输入你的用户名和密码即可。
-
点击下方网址直接下载Linux内核包进行安装,安装完成后,重启电脑。
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
- 以管理员权限打开powershell,执行此命令
wsl -l --all -v
,显示下图信息代表安装wsl1成功
- 下面我们要将它升级成WSL2,执行此命令:
wsl --set-version Ubuntu-20.04 2
耐心等待即可
- 再次执行此命令
wsl -l --all -v
查询版本确定升级成功。
执行此命令 wsl --set-default-version 2
使WSL 2成为你的默认体系结构。
- 将wsl2的默认存储从C盘移到D盘,避免C盘空间不够。
第一步:先关闭Ubuntu:
wsl –shutdown
第二步:导出Ubuntu:
wsl --export Ubuntu-20.04 D:\\wsl-ubuntu20.04.tar
导出完成后,在相应磁盘下即可看到名为wsl-ubuntu20.04.tar的压缩包:
第三步:注销当前分发版:
wsl --unregister Ubuntu-20.04
第四步:重新导入并安装WSL2到指定目录:
wsl --import Ubuntu-20.04 D:\\wsl2-ubuntu20.04 D:\\wsl-ubuntu20.04.tar --version 2
导出完成后,在D磁盘路径下即可看到wsl2-ubuntu20.04文件夹
第五步:设置WSL2默认登录用户(xxx表示你的用户名):
ubuntu2004 config --default-user xxx
第六步:删除之前导出的压缩包(空间足够不删除,也OK) :
del D:\\wsl-ubuntu20.04.tar
- window访问wsl2的问题:
直接在资源管理器中输入\\wsl$
即可:
将此文件夹固定在快速访问中,方便以后的以后直接访问。
- 建议安装Windows terminal,并配置启动目录,将启动目录的内容替换为:
\\wsl\$\Ubuntu-20.04\home\xxx
(这里的xxx应填入自己设置的Ubuntu的用户名)
然后保存。这样每次都会直接进入主目录 ~
- 正式开始搭建OpenHarmony开发环境:
- 更换Ubuntu软件源,执行如下命令:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo vim /etc/apt/sources.list
- 将文件的内容替换成如下内容(阿里云国内源):
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
- 保存退出后执行此命令:
sudo apt-get update
- 创建python软连接:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
- 安装并升级Python包管理工具(pip3):
sudo apt-get install python3-setuptools python3-pip -y
sudo pip3 install --upgrade pip
- 安装码云repo工具:
###### 下载码云repo
curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > repo
###### 移动repo
sudo mv repo /usr/local/bin/repo
##### 赋予可执行权限
sudo chmod a+x /usr/local/bin/repo
- 添加ssh-key至gitee:
gitee添加SSH公钥_fangye945a的博客-CSDN博客_ssh生成
注意!博客中的第一步配置错误,正确指令如下:
git config --global user.name “xxx”
git config --global user.email “xxx@xx.com”
git config --global credential.helper store
- docker的安装和使用
下载网站:https://www.docker.com/products/docker-desktop
安装时会提示:
直接ok,开始安装即可。
安装完毕,点击close and log out,会自动注销电脑,重新登录后,点击Accept
然后在Settings->Resources->WSL Integration中进度设置,勾选Ubuntu-20.04,然后点击应用并重启。
再打开Windows terminal, 执行docker -v
,查看docker是否可用:
- 在powershell中执行如下命令,下载轻量系统docker和标准系统docker:
docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:0.0.4
docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker-standard:0.0.5
- 在Ubuntu中执行如下命令,给docker设置一个别名,方便调用docker:
vim ~/.bashrc
- 添加如下内容在文档末尾,保存退出:
#docker
alias ohos_small_docker='docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:0.0.4'
alias ohos_stand_docker='docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker-standard:0.0.5'
- 使配置生效:
source ~/.bashrc
如下图所示,直接输入别名,即可快速进入对应的docker镜像进行代码编译(别名可以自行定义):
- 数字管家代码下载:
cd ~
git clone git@gitee.com:openharmony-sig/knowledge_demo_smart_home.git
- OpenHarmony代码下载:
#特别注意:请下载OpenHarmony 1.0.1 版本
mkdir ~/OpenHarmony1.01
cd ~/OpenHarmony1.01
repo init -u git@gitee.com:openharmony/manifest.git -b
OpenHarmony_1.0.1_release --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
- 代码拷贝:
cp -rfa ~/knowledge_demo_smart_home/dev/device/bearpi ~/OpenHarmony1.01/device/
cp -rfa ~/knowledge_demo_smart_home/dev/team_x ~/OpenHarmony1.01/vendor/
cp -rfa ~/knowledge_demo_smart_home/dev/third_party/iot_link ~/OpenHarmony1.01/third_party/
整合并修改完成后的目录结构如下图:
- 设备端代码的编译和烧录:
通过WindowsTerminal打开wsl2,输入以下命令:
cd ~
cd OpenHarmony1.01
ohos_small_docker
hb set
当出现Input code path:后,输入.
(没错,就是输入一个点,.
表示当前路径。)
按键盘上下键选择smart_fan,按下回车进行确定。
输入hb build
进行编译,编译成功会提示build success。
编译生成的固件在OpenHarmony1.01下的out文件夹内。
固件烧录:
在Windows中打开Hiburn工具,并点击Refresh,选择相应com(在设备管理器中的端口中查看,上文有提到过)如下图示
点击左上角setting,设置波特率(baund)为921600,
点击Hiburn工具中的Select file按钮,在弹出的文件框中,选择代码编译所生成的固件(Hi3861_wifiiot_app_allinone.bin)然后确认;选中Auto burn按钮,然后点击connect按钮,等待下载,如下图:
按下设备上的复位按钮,开始烧录固件,当第二次出现successful后,手动点击disconnect(Refresh旁的那个按键),烧录完成!
四、Windows开发环境准备
-
安装DevEco studio :Windows系统下,下载DevEco Studio 3.0 Beta2版本,并配置好DevEco Studio开发环境。
-
USB转串口驱动安装:CH340驱动,安装完成后,可以通过Windows上的设备管理器查看串口号,例如目前开发板的串口号为COM6如下图:
设备管理器可用快捷键win+X后再按下M键打开,如下图:
- 数字管家应用的编译与安装
- 打开DevEco-studio
File -> Setting -> SDK Manager -> HarmonyOS Legacy SDK ->Platforms 页面中确保API6 相关sdk 已下载,如下图所示:
- 打开数字管家项目(我的数字管家文件打开路径:[\\wsl.localhost\Ubuntu-20.04\home\user\knowledge_demo_smart_home\FA\DistSchedule](file:///\wsl.localhost\Ubuntu-20.04\home\user\knowledge_demo_smart_home\FA\DistSchedule),根据自己的数字管家下载位置来确定)
- 在AGC((AppGallery Connect)中创建项目和应用:
打开DevEcoStudio,点击右上角圆形头像登录华为账号(如下图)后
再次点击右上角圆形头像,点击AppGallery Connect(如下图)。
-
登录AGC平台,创建你的项目:
填写自己的项目名称(可以自定义)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3me5SyON-1650637877127)(https://gitee.com/affluent/image/raw/master/202204211534990.png)]
-
添加应用,应用名称自定义,该名称后面会用到。
- 添加配置文件
将此文件复制放在entry目录下
将下列三个文件bundleName由com.example.distschedule修改为自己刚刚在AGC平台添加应用时设置的bundleName。
./entry/src/config.json
./netconfig/src/main/config.json
./netconfig/src/main/js/default/pages/index/index.js
:
- 手机端所需准备:
将手机用USB数据线连接电脑,将USB连接方式设置为传输文件:
打开手机设置,点击关于手机,多次点击版本号,接着屏幕下方会出现会出现您已处于开发者模式(如下左图),无需进行此操作。(前提要在手机上登录华为账号),处于开发者模式后,点击系统和更新,点击开发人员选项,点击USB调试(如下右图)
选择确定(如下图)
手机和电脑连接成功后,会在右上角显示手机型号如上图,之后的步骤要保持手机与电脑的连接。
-
点击左上角Files,选择settings,来到HarmonyOS SDK窗口,复制文件路径至文件夹中搜索框中,进入toolchains文件夹,全选文件路径并输入cmd,进入命令窗口。
在命令窗口输入
hdc shell bm get -u
,得到了手机的UDID,此UDID需要保存。然后来到AGC设备管理平台,进入用户与访问添加设备,将此UDID填入,设备名称自定义。
- 获取密钥.csr和签名.p12【参考官网文档】
在Generate CSR界面,选择密钥和设置CSR文件存储路径:
点击Finish按钮,创建CSR文件成功,可以在存储路径下获取生成的密钥库文件(.p12)和证书请求文件(.csr)
- 获取数字证书(.cer文件)和Profile文件(.p7b文件)【参考官网文档】
数字证书(.cer文件):
登录AppGallery Connect网站,在网站首页中点击“用户与访问”:
在左侧导航栏点击“证书管理”,进入“证书管理”页面。
点击“新增证书”,弹出“新增证书”窗口。
在“新增证书”窗口中填写要申请的证书信息(证书类型选择调试证书),点击“提交”。
证书申请成功后,“证书管理”页面展示“证书名称”、“证书类型”,“失效日期”和“操作”列信息。
在“操作”列点击“下载”,将证书(.cer文件)与.p12和.csr文件放在一起。
申请profile文件(.p7b文件):
回到首页,在网站首页中点击“我的项目”。
找到您的项目,点击您创建的HarmonyOS应用。
在左侧导航栏选择“HarmonyOS应用> HAP Provision Profile管理”,进入“管理HAP Provision Profile”页面。
点击右上角“添加”,弹出“HarmonyAppProvision信息”窗口。
在弹出的“HarmonyAppProvision信息”窗口中添加Profile(类型选择调试)。
选择设备:选择刚刚所添加的设备
下载Profile文件,将Profile文件(.p7b文件)与证书(.cer文件),.p12和.csr文件放在同一个文件夹中。
手动签名所需文件已全部下载完成,现在到IDE中进行配置
来到DevEco Studio(先登录),在 File (文件选项栏)> Project Structure > Project>Signing Configs
点击Run中的Edit Configurations,
在此窗口执行如图操作
点击右上角的三角符号,将数组管家应用安装到手机上!(需要个几分钟的等待)
安装完成后,输入手机号登录,数字管家应用安装成功!(图转自官网)
五、NFC和应用服务关联的相关配置
- NFC标签信息的申请和写入
- 下载应用调测助手(建议下载1.2.1.300的版本,应用市场下载的最新版本目前无法关联包名)
1.2.1.300版本下载 提取码:1234(记得关闭应用市场的自动升级)
- 申请productID:
其中自定义数据的生成规则和部分设备NFC配网信息可参照官网说明,例如智能风扇的自定义数据为:
1246150601d88056b027dd2ca47205Fan01308123456784011511teamX-Fan01
如下左图表示成功写入手机nfc缓存区,下右图表示写入设备的nfc标签成功。
- 配置应用服务关联
-
进入华为开发者联盟管理中心页面中依次点击智慧服务->HarmonyOS服务开放平台,最终进入到下图的智慧服务平台。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YMjhpg6v-1650637877140)(https://gitee.com/affluent/image/raw/master/202204211538363.jpeg)]
-
点击HarmonyOS测试服务填写服务相关信息,点击创建按钮完成智慧服务模型的创建。
- 完善智慧服务相关信息(带星号的为必填项)
填完要记得点击保存
此处官网教程有误,正确填法如下图(错误原因:网页标签错位,名称与内容不对应)
实现类型按照默认设置就行,支持设备选择手机,App名称填写建议与AGC平台应用名称,其他的按下图所示填写信息
- 点击测试栏,进入智慧服务测试页面,进行测试相关信息的填写:
第一步:点击创建进入创建真机测试名单窗口。
填写手机号码与描述后确认。
第二步:确认 该手机已经录入名单中;
第三步:点击准备测试按钮。到此,应用功能唤起信息申请和配置完成。
至此碰一碰配网步骤全部完成!
六、碰一碰配网可能遇见的问题及部分解决方法
(转载自侯鹏飞老师的相关文章)
1. 手机碰一碰NFC标签,弹框提示“系统错误”,如何处理?
问题现象:手机碰一碰待连接设备,弹框提示“系统错误”,更换Wi-Fi后报错仍无法清除。
可能原因:手机时间与网络时间不一致。设备发起请求时,会将手机时间与设备激活码等信息传到云端。云端会对手机时间与网络时间的一致性进行校验,以确保请求的合法性。如果两者的时间差大于一小时,则请求无效。
解决措施:将手机的时间设置为“自动设置”,使手机与当前网络上的时间同步。
以华为手机为例:
- 进入手机“设置”。
- 选择“ 系统和更新 > 日期和时间”。
- 开启“自动设置”开关。
2.手机碰一碰NFC标签,提示“未获取到应用信息”。
问题现象:手机碰一碰NFC标签,提示“未获取到应用信息”。
可能原因:
原因一:服务意图配置的HarmonyOS标签的产品型号不是当前的ProductID。
原因二:NFC标签写入的码流中的ProductID有误。
解决措施:
-
确认服务意图配置的HarmonyOS标签的产品型号是否为当前的ProductID。
- 登录华为快服务智慧平台。
- 在服务列表中找到对应的原子化服务,单击“编辑”。
- 选择“配置 > HarmonyOS标签”,确认设备标签中的“产品型号”是否正确。如果不正
确,需要重新配置。
-
确认NFC标签码流的ProductID字段是否正确。如果不正确,需要重新写入。
-
若之前已拉起成功,且上述检测均正确,可点击重新发布快服务至测试态。
- 登录华为快服务智慧平台。
- 在服务列表中找到对应的原子化服务,单击“编辑”。
- 点击“测试 > 重新准备测试”按钮。
- 等待几分钟重新尝试碰一碰
-
如果以上方法都使用过后,该问题依旧未解决,则可以查看此文章。
3.碰一碰拉不起应用
问题现象:碰一碰之后,拉不起应用,有显示碰一碰动画
可能原因:
-
检测网络能否上网
-
检测productId、包名、服务名、子型号:快服务助手中检测 productId和写入nfc的是否一致、包名为已安装数字管家包名,服务名是否为项目config.json 的 AddDeviceAbility的路径一致,(子型号填00)
-
快服务测试是否点击重新准备测试
-
刚配置完,可能需要等待一会
-
如果拉起成功,但是应用闪退,Nfc自定义数据写错了
4.碰一碰NFC标签无法拉起FA,NFC服务提示“发现NFC标签,点击启动应用”。
问题现象:手机碰一碰待连接设备,NFC服务弹出提示“发现NFC标签,点击启动
应用”,无法正常拉起原子化服务。
可能原因:NFC标签码流录入错误,导致手机系统无法正确解析NFC码流。
解决措施
-
在Device Partner平台上申请NFC标签码流,并根据实际设备信息生成可用的标签
码流。
-
将码流重新写入NFC标签,并重试碰一碰拉起原子化服务。
5.手机首次碰一碰NFC标签,拉起的是非配网FA页面。
问题现象:手机首次碰一碰NFC标签,拉起的是非配网FA页面(比如控制FA页面)。
可能原因:服务意图配置的Ability名称不是配网FA页面的Ability名称。
原子化服务包中其他模块的Ability与配网FA的Ability重名,导致拉起的FA页面有误。
解决措施:
-
确认服务意图配置的“服务名”是否为配网FA的Ability名称。
-
登录华为快服务智慧平台。
-
在服务列表中找到对应的原子化服务,单击“编辑”。
-
选择“配置 > FA信息”,确认配置方式中的“服务名”是否为配网FA的Ability名称。
如果不正确,需要重新配置。
-
-
确认其他模块Ability名称是否与配网FA的Ability重名。
在DevEco Studio项目下,逐个排查其他模块中的“src/main/config.json”文件。
在json文件中,找到“module/mainAbility”配置项,检查是否与配网FA的Ability同名。
找到并选中重名的Ability,单击右键,选择“Refactor > Rename”,重命名文件。
6.问题现象:
碰一碰拉起配网FA,无法进行NAN配网,FA日志中打印碰一碰Intent参数
nanSessionId字段的值为“NAN_DEVICE_NOT_FOUND”。
可能原因:
用于配网的模组不支持NAN配网。
手机与模组之间距离大于30cm。
上一次碰一碰拉起配网FA进行NAN配网未完成,模组的NAN通道将锁定一段时间。
解决措施:
-
咨询产品对应模组厂商,确认模组是否支持NAN配网。
-
将手机靠近至模组30cm半径以内后重新碰一碰配网。
-
等待模组日志打印以下信息时,即可进行NAN配网(x代表任意数字)。
Send: msgType[x] msgId[x] msgLen[x]
7.问题现象:
碰一碰拉起配网FA,进度100% 跳转不到控制页面
可能原因:
NAN发送包失败,断开连接了。
[NetCfgNAN]Send: msgType[9] msgId[2] msgLen[23]
send nan packet fail.
wait STA join AP
解决措施:
-
IoT 进行复位重新配网
-
手机重新配网
七、小记
Linux中vim工具的使用方法和技巧:
切换模式:
编辑模式Insert Mode:按i
键进入编辑模式;
命令模式Command Mode:按ESC键退出编辑进入命令模式
命令:
输入 :wq
保存并退出vim工具(注意所有的命令前面都有有一个冒号:)
输入 :q
退出vim工具
输入 :q!
强制退出vim工具
使用小技巧:
使用vim删除全部内容:先用G(一定得是大写的G) 转到文件尾,然后使用此命令:1,.d
(别忘了冒号,在vim中," . "表示当前 行,“1,.”表示从第一行到当前行,“d ”表示删除。)
如果只是想删除某一行:
那么把光标指到该行,然后输入d d 即可。
设置显示行号:
在 vim 里执行(在命令模式下直接按冒号,并输入此命令:set number
常见的配网方式: