OpenHarmony鸿蒙( Beta5.0)智能窗户通风设备开发详解

 鸿蒙开发往期必看:

一分钟了解”纯血版!鸿蒙HarmonyOS Next应用开发!

“非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线!(从零基础入门到精通)

 “一杯冰美式的时间” 了解鸿蒙HarmonyOS Next应用开发路径!


样例简介

本文档介绍了安全厨房案例中的相关智能窗户通风设备,本安全厨房案例利用轻量级软总线能力,将两块欧智通V200Z-R/BES2600开发板模拟的智能窗户通风设备和燃气告警设备组合成。当燃气数值告警时,无需其它操作,直接通知软总线网络中的通风设备的电机工作,反之则关闭窗户通风设备中的电机。

运行效果

对于窗户通风系统的单独操作:

组成分布式网络后,检测到燃气超标,自动控制电机工作来通风换气:

样例原理

如上图所示,智能安全厨房整体方案可以分成如下:智能窗户通风设备、智能燃气告警设备、家庭路由器组成。首先窗户通风设备和燃气告警设备链接到同一个路由器下。

其中智能窗户通风设备和智能燃气告警设备不仅可以分别单独操控,还可以在完成相互的软总线设备发现、认证、pin码校验等步骤后组成一个最小的分布式软总线网络后, 利用RPC 能力来时实现设备的相互操作。

工程版本

  • 系统版本/API版本:OpenHarmony 3.1 release
  • hb版本:0.4.6
  • 工具链版本:gcc-arm-none-eabi-10.3-2021.10

快速上手

准备硬件环境

欧智通V200Z-R开发板 *1;

小熊派 hm_nano 开发套件中的E53_1A1 拓展板;

正常工作无线路由一台(请保证预设 热点名称:test_wifi 密码:12345678 ; 是否能连接互联网均可)

硬件连线图:

准备开发环境

开发基础环境由 windows 工作台和 Linux 编译服务器组成。windows 工作台可以通过 samba 服务或 ssh 方式访问 Linux编译服务器。其中 windows 工作台用来烧录和代码编辑,Linux 编译服务器用来编译 OpenHarmony 代码,为了简化步骤,Linux 编译服务器推荐安装 Ubuntu20.04。

安装必备软件
安装和配置Python3
  1. 打开Linux终端。

  2. 输入如下命令,查看python版本号,需要使用python3.7以上版本

    python3 --version
    
  3. 安装并升级Python包管理工具(pip3)。

    sudo apt-get install python3-setuptools python3-pip -y
    sudo pip3 install --upgrade pip
    
  4. 设置pip的国内镜像

    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
    
安装交叉编译环境

在Linux编译服务器上搭建好基础开发环境后,需要安装OpenHarmony 编译欧智通BES2600平台特有的开发环境。

安装必备库文件和工具
sudo apt-get install -y build-essential gcc g++ make zlib* libffi-dev git git-lfs python
安装编译工具链arm-none-eabi-gcc
  1. 打开Linux终端。

  2. 下载arm-none-eabi-gcc编译工具。

  3. 安装arm-none-eabi-gcc

    解压 gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 安装包至~/toolchain/路径下。

    mkdir -p ~/toolchain/
    tar -jxvf gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 -C ~/toolchain/
    

    设置环境变量。

    vim ~/.bashrc
    

    将以下命令拷贝到.bashrc文件的最后一行,保存并退出。

    export PATH=~/toolchain/gcc-arm-none-eabi-10.3-2021.10/bin:PATH
    

    生效环境变量。

    source ~/.bashrc
    
  4. 在命令行中输入如下命令,如果能正确显示编译器版本号,表明编译器安装成功。

    arm-none-eabi-gcc -v
    

准备工程

配置git
  • 提前注册准备码云gitee账号。
  • 生成/添加SSH密钥:生成密钥 使用gitee账号绑定的邮箱生成密钥对
ssh-keygen -t ed25519 -C "xxxxx@xxxxx.com"
  • 查看生成的密钥
cat ~/.ssh/id_ed25519.pub
  • 复制生成后的 ssh key,返回gitee个人主页,通过主页 「个人设置」->「安全设置」->「SSH 公钥」 ,将生成的“SSH密钥”添加到仓库中。
  • 配置git用户信息
git config --global user.name "yourname"
git config --global user.email "your-email-address"
git config --global credential.helper store
准备repo
1)下载repo工具
mkdir ~/bin
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > ~/bin/repo
chmod a+x ~/bin/repo2)设置环境变量并生效
vim ~/.bashrc
export PATH=~/bin:PATH

生效环境变量。

source ~/.bashrc
  1. 在命令行中输入如下命令,如果能正确显示编译器版本号,表明编译器安装成功。

    arm-none-eabi-gcc -v
    

准备工程

配置git
  • 提前注册准备码云gitee账号。
  • 生成/添加SSH密钥:生成密钥 使用gitee账号绑定的邮箱生成密钥对
ssh-keygen -t ed25519 -C "xxxxx@xxxxx.com"
  • 查看生成的密钥
cat ~/.ssh/id_ed25519.pub
  • 复制生成后的 ssh key,返回gitee个人主页,通过主页 「个人设置」->「安全设置」->「SSH 公钥」 ,将生成的“SSH密钥”添加到仓库中。
  • 配置git用户信息
git config --global user.name "yourname"
git config --global user.email "your-email-address"
git config --global credential.helper store
准备repo
1)下载repo工具
mkdir ~/bin
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > ~/bin/repo
chmod a+x ~/bin/repo2)设置环境变量并生效
vim ~/.bashrc
export PATH=~/bin:PATH
source ~/.bashrc 
准备系统源码
#特别注意:请下载OpenHarmony 3.1 Release 版本代码
mkdir ~/OpenHarmony-3.1-Release
cd ~/OpenHarmony-3.1-Release
repo init -u git@gitee.com:openharmony/manifest.git -b refs/tags/OpenHarmony-v3.1-Release --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'

注意:

1.权限问题请参考生成/添加SSH公钥。

2.若在已安装python3.8后,执行repo init 时,仍显示如下错误:

/usr/bin/env: ‘python’: No such file or directory

执行如下命令后,进行重试:

sudo ln -s /usr/bin/python3.8 /usr/bin/python
安装hb
  1. 输入如下命令确认hb是否为version 0.4.4 版本以上

    hb -v
    

    a. 若提示如下内容,则表示未安装可以从第2步开始操作。

    bash: /home/***/.local/bin/hb: No such file or directory
    

    b.若提示如下内容,需要先卸载该版本,然后再执行第2步操作步骤。

    [OHOS INFO] hb version 0.4.3
    

    卸载命令:

    pip3 uninstall ohos-build
    
  2. 运行如下命令安装hb

    pip3 install build/lite   // 该命令需在OpenHarmony源码根目录下执行
    
  3. 设置环境变量

    vim ~/.bashrc
    

    将以下命令拷贝到.bashrc文件的最后一行,保存并退出。

    export PATH=~/.local/bin:$PATH
    

    执行如下命令更新环境变量。

    source ~/.bashrc
    
  4. 再次执行”hb -v“,有以下版本显示则表示安装的hb 0.4.4 以上版本正确。

    [OHOS INFO] hb version 0.4.6
    
准备设备侧应用代码
  1. 代码拷贝

    smart_safe_kitchen-smart_window源码拷贝

    cd ~
    git clone git@gitee.com:openharmony-sig/knowledge_demo_smart_home.git 
    mkdir ~/OpenHarmony-3.1-Release/vendor/team_x
    cp -rfa ~/knowledge_demo_smart_home/dev/team_x/smart_safe_kitchen-smart_window ~/OpenHarmony-3.1-Release/vendor/team_x
    

    common库拷贝

    cp -rfa ~/knowledge_demo_smart_home/dev/team_x/common ~/OpenHarmony-3.1-Release/vendor/team_x
    
  2. communicationkit相关修改

参考下方代码修改foundation/ace/ace_engine_lite/frameworks/module_manager/ohos_module_config.h

diff --git a/frameworks/module_manager/ohos_module_config.h b/frameworks/module_manager/ohos_module_config.h
index f8eb744..d0cc5d2 100644
--- a/frameworks/module_manager/ohos_module_config.h
+++ b/frameworks/module_manager/ohos_module_config.h
@@ -45,6 +45,7 @@ extern void InitDialogModule(JSIValue exports);#if (FEATURE_MODULE_STORAGE == 1)extern void InitNativeApiFs(JSIValue exports);extern void InitNativeApiKv(JSIValue exports);
+extern void InitNativeApiCommunicationKit(JSIValue exports);#endif#if (FEATURE_MODULE_DEVICE == 1)
@@ -102,6 +103,7 @@ const Module OHOS_MODULES[] = {#if (FEATURE_MODULE_STORAGE == 1){"file", InitNativeApiFs},{"storage", InitNativeApiKv},
+    {"CommunicationKit", InitNativeApiCommunicationKit},#endif#if (FEATURE_MODULE_DEVICE == 1){"device", InitDeviceModule},
  1. hdf配置文件修改

参考下方代码修改device/board/fnlink/shields/v200zr-evb-t1/v200zr-evb-t1.hcs

diff --git a/shields/v200zr-evb-t1/v200zr-evb-t1.hcs b/shields/v200zr-evb-t1/v200zr-evb-t1.hcs
index 44212eb..4fc99da 100644
--- a/shields/v200zr-evb-t1/v200zr-evb-t1.hcs
+++ b/shields/v200zr-evb-t1/v200zr-evb-t1.hcs
@@ -17,12 +17,17 @@ root {platform {gpio_config {match_attr = "gpio_config";
-            pin = [0, 1];
+            pin = [0, 1, 2];// touch_ztw523: TSP_RST - GPIO12, TSP_INT-GPIO27// touch_fts: TSP_RST - GPIO05, TSP_INT-GPIO27
-            realPin = [5, 27];
-            config = [5, 2];
-            pinNum = 2;
+            realPin = [5, 27, 11];
+            config = [5, 2, 5];
+            pinNum = 3;}i2c_config {i2c0 {
  1. flash_size 配置项确认

    如果V200Z-R 开发板上相关 版本编号丝印为"V200Z-R EVB V1.0", 则在如下代码中配置flash_size选项为16,如果相关丝印编号为"V200Z-R EVB V2.0" , 则保持默认的flash_size = 32不变。

    device/board/fnlink/v200zr/liteos_m/config.gni
    flash_size = 16 
    
  2. JS应用代码更新(可选)

本步骤为可选章节,忽略本节内容不影响智能通风设备的的展示和运行,如果需要对相关JS 应用做修改,请参考智能窗户JS应用开发文档,应用修改完成后,再次编译此应用。如下图所示:

hap包目录为:FA\entry\build\outputs\hap\debug\entry-debug-lite-unsigned.hap。

将entry-debug-lite-unsigned.hap修改后缀为zip并解压。在解压后的目录:entry-debug-lite-unsigned/assets/js/default目录中除app.js.map外的的数据全部拷贝到OpenHarmonySDK中的vendor/team_x/smart_safe_kitchen-smart_window/fs/data/data/js目录下

工程效果

整合并修改完成后的代码目录结构如下图:

image-20211228205514766

编译

进入到OpenHarmony系统源码根目录下,输入hb set命令即可看到我们的应用,选择并确认即可。

cd ~/OpenHarmony-3.1-Release
hb set  // 如果是第一次编译,Input code path 命令行中键入"./" 指定OpenHarmony工程编译根目录后回车。

如下图所示,使用键盘上下键选中智能窗户通风系统 “smart_safe_kitchen-smart_window”(注:工程名字根据实际要编译的工程来):

hb build // 如果需要全量编译,可以添加-f 选项

出现"build success"字样,则表示编译生成固件成功,如下图所示:

image-20211228205659402

安装

因为欧智通BES2600/V200Z-R 开发板的烧录程序是包含在对应out文件夹对应product目录下的,无需使用额外的烧录工具,在安装了相应驱动文件后,执行烧录可执行文件即可,下面是具体的操作步骤:

1.安装CP2102驱动,解压后双击与自己window 版本相匹配的可执行文件,并按相关提示安装驱动文件即可;

2.固件编译完成以后拷贝~/OpenHarmony-3.1-Release/out/v200zr/smart_safe_kitchen-smart_window/write_flash_gui文件夹到windows下(或者利用samba服务直接访问该目录),并双击可执行文件Wifi_download_main.exe

3.点击工具上的文件夹图标

4.选择List按钮

5.在显示出来的串口列表中选择需要烧录的串口,并点击开始按钮。

6.在开发板上点击reset按键,或者重新上电。

7.进入烧录状态

8.烧录成功

​ 注意:固件烧录完成后需将烧录窗口关闭,再按下设备Reset键设备才能启动。如果未将烧录窗口关闭,设备会再次进行烧写状态。

操作体验

  1. 提前准备好安全厨房场景中的智能燃气检测设备 ,并完成相关的编译和应用安装动作;

  2. 提前准备好正常工作的无线路由设备(请保证预设 热点名称:test_wifi 密码:12345678 ; 是否能连接互联网均可)

  3. 将窗户通风设备和燃气检测设备上电,确认两个设备应用启动正常和操作正常;

  4. 按如下步骤将通风设备、燃气检测设备组成一个软总线网络

    1)分别点击两个设备应用界面右上角的软总线配置图标,进入软总线配置界面;

    2)点击智能燃气检测设备应用发现图标 ,间隔3S后点击发起认证图标;

    3)点击智能通风设备软总线配置界面下的 允许认证图标,正常情况下会显示一个6位数的PIN 码;

    4)点击智能燃气检测设备应用输入PIN 码按钮,进入数字键盘输入PIN 码;

    5)分别点击两个应用软总线配置图标左上角的返回按键,进入设备控制界面。

  5. 设置燃气检测设备的阈值低于实际读取的燃气数值,燃气检测应用进入警报界面的同时会调用相关接口控制智能通风系统的电机工作,自动通风换气,保证家居的安全。待到实际燃气数值低于设置的阈值时,则关闭智能通风系统的电机。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/53611.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何逆转Instagram账号流量减少?实用技巧分享

Instagram作为全球十大社媒之一,不仅是个人分享生活的平台,还是跨境卖家进行宣传推广和客户开发的关键工具。在运营Instagram的过程中,稍有不慎就容易出现账号被限流的情况,对于账号状态和运营工作的进行都十分不利。 一、如何判断…

isis与ospf高级属性

文章目录 前言一、基础配置(配置各设备的IP地址)二、配置各设备的ospf与isis三、检查ospf与isis邻居是否建立成功1.实现快速重路由2.流量过滤方法3.引入默认路由4.配置等价路由 前言 在下面实验中,蓝色区域运行ospf,为了控制ospf的lsdb数量,…

vue页面使用自定义字体

一、准备好字体文件 一般字体问价格式为 .tff,可以去包图网等等网站去下载,好看的太多了!!! 下载下来就是单个的 .tff文件,下载下来后可以进行重命名,但是不要改变他的后缀名,我把他…

【c++】类和对象详解

✅博客主页:爆打维c-CSDN博客​​​​​​ 🐾 🔹分享c语言知识及代码 来都来了! 点个赞给博主个支持再走吧~! 一.类的定义 (1)类定义格式 class为类定义的关键字,定义一个类格式如下: class 类名{//代码…

turtle.circle() 函数绘制弧形规律助记图 ← Python

【Python 之 turtle.circle() 函数定义】 定义:turtle.circle(radius, extent)作用:根据半径 radius 绘制 extent 角度的弧形参数:radius :弧形半径当 radius 值为正数时,圆心在当前位置/小海龟左侧。当 radius 值为负…

9月美联储决策前哨战——美国CPI数据来袭

随着本周关键CPI数据的即将发布,市场正翘首以待,这将是美联储在9月17日至18日议息会议前获取的最后一块重要经济拼图。鉴于美联储官员已进入传统的政策静默期,8月份的CPI报告无疑将成为交易员们评估未来货币政策走向的重要标尺。 欧洲央行降…

[000-01-002].第03节:Git基础命令

我的博客大纲 我的GIT学习大纲 1、Git的常用命令 2、Git操作步骤: 2.1.操作Git第一步:设置全局的用户签名 1.设置用户名: 格式:git config --global user.name 用户名命令:git config --global user.name root 2.设置…

Taro + Vue 的 CSS Module 解决方案

一、开启模块化配置 Taro 中内置了 CSS Modules 的支持,但默认是关闭的。如果需要开启使用,请先在编译配置中添加如下配置: weapp: {module: {postcss: {// css modules 功能开关与相关配置cssModules: {enable: true, // 默认为 false&…

如何解决户用光伏项目管理难题?

户用光伏作为分布式能源的重要组成部分,正迎来前所未有的发展机遇。户用光伏项目的复杂性和多样性也给项目管理带来了诸多挑战,包括客户分散、安装周期长、运维难度大、数据监控不及时等问题。为解决这些难题,构建一套高效、智能的户用光伏业…

SpringMVC基于注解使用:国际化

01-国际化介绍 首先在bootstrap下载个页面 下载后把登录页面的代码粘上去 然后再登录页面代码上有些超链接需要再spring-mvc.xml里面配置下,登录页面才能正常显示 配置静态资源 国际化-根据浏览器语言国际化 现在是中文的情况,要改为英文 1.配置下属…

OFDM信号PARP的CCDF图

文章目录 引言代码代码疑难解答参考文献 引言 本书主要参考了文献1,但实际上该书中符号和表述的错误非常多(只能说棒子是这样的);同时因为发表时间的关系,很多MATLAB代码进行了更新,原书提供的代码已经无法…

Flutter中自定义气泡框效果的实现

在用户界面的设计中,气泡框(Bubble)是一种非常有效的视觉工具,它可以用来突出显示信息或提示用户。气泡框广泛应用于聊天应用、通知提示等场景。在 Flutter 中,虽然有很多现成的气泡框组件,但如果你想要更多…

使用豆包MarsCode 编写 Node.js 全栈应用开发实践

以下是「豆包MarsCode 体验官」优秀文章,作者狼叔。 欢迎更多用户使用豆包MarsCode 并分享您的产品使用心得及反馈、创意项目开发等,【有奖征集|人人都是豆包MarsCode 测评官!】活动正在火热进行中,欢迎大家投稿参加&a…

跨部门SOP与统一知识库:打破信息孤岛,促进团队协作

引言: 在当今这个快速变化且高度竞争的商业环境中,企业面临着前所未有的挑战,其中之一便是如何高效地跨越部门界限,实现无缝协作。传统的组织结构往往导致信息孤岛的出现,不同部门间流程不一致、信息不共享&#xff0…

【车载开发系列】ParaSoft单元测试环境配置(一)

【车载开发系列】ParaSoft单元测试环境配置(一) ParaSoft单元测试环境配置 【车载开发系列】ParaSoft单元测试环境配置(一)一. 什么是bdf文件二. bdf文件构成三. 新规做成bdf文件四. 导入bdf文件创建测试工程五. 获取编译器信息六. 新增自定义编译器Step1:打开向导Step2:…

JAVA一键下单新鲜到家同城生鲜物流系统小程序源码

一键下单,新鲜到家 —— 探索同城生鲜物流系统的魅力 🚚 一键下单,轻松享受便捷生活 在这个快节奏的时代,谁不想在忙碌之余还能轻松享受美食呢?😋 "一键下单新鲜到家"的同城生鲜物流系统&#…

HTML5中IndexedDB前端本地数据库

一、indexedDB为何替代了Web SQL Database? 跟小朋友的教育从来没有什么“赢在起跑线”这种说法一样,在前端领域,也不是哪来先出来哪个就在日后引领风骚的。 HTML5 indexedDB和Web SQL Database都是本地数据库数据存储,Web SQL Da…

关于axios同步获取数据的问题

axios同步获取数据 Axios介绍问题代码修改 总结 Axios介绍 Axios 是一个基于 promise 网络请求库,作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 X…

Spring Boot 集成 Redisson 实现消息队列

包含组件内容 RedisQueue:消息队列监听标识RedisQueueInit:Redis队列监听器RedisQueueListener:Redis消息队列监听实现RedisQueueService:Redis消息队列服务工具 代码实现 RedisQueue import java.lang.annotation.ElementTyp…

第2章 方法

本书作者起初以为仅靠研究命令行工具和指标就能提高性能。他认为这样不对。他从头到尾读了一遍手册,看懂了缺页故障、上下文切换和其他各种系统指标的定义,但不知道如何处理它们:如何从发现信号到找到解决方案。 他注意到,每当出…