一、 简介智能保险柜实时监测保险柜中振动传感器,当有振动产生时及时向用户发出警报。在连接网络后,配合数字管家应用,用户可以远程接收智能保险柜的报警信息。后续可扩展摄像头等设备,实现对危险及时报警,及时处理,守护家中财产安全。
1.交互流程
如上图所示,智能保险柜整体方案框架可以分为:智能保险柜设备、数字管家应用、云平台三部分。智能保险柜设备端按照MQTT协议与华为IOT物联网平台进行
通信。当智能保险柜检测到振动时,设备端上报数据至云平台最终同步到数字管家进行报警,并将报警信息也上报至云平台最终同步到数字管家;当用户发现为误报时关闭报警,命令数据先发送至云平台,再由云平台下发至设备侧。关于智能设备接入华为云IoT平台的详细细节可以参考 连接IOT云平台指南 。智能设备同数字管家应用之间的设备模型定义可以参考profile 。
2.实物简介
我们使用润和Pegasus智能家居开发底板+SW-18010P振动模块来模拟感智能保险柜设备。 通过检测GPIO输入获取振动感应;
SW-18010P振动模块润和Pegasus智能家居开发板底板
连接图将SW-18010P的GND连接开发板的GND,VCC连接开发板的V3.3,DO连接开发板的A9。
3.实物操作体验OLED屏负责显示当前网络状况,有三种状况:- WIFI_CONNECT_ING(等待配网,未连入WIFI);
- WIFI_CONNECT_OK(已经连入WIFI,等待自动连入华为云端);
- IOT_CONNECT_OK(已经连入华为云端)。
重新配网操作:按键2组合reset按键执行配网操作,具体操作如下:
- 按下按键2,保持按键2被按下,执行以下第2步;
- 按下reset按键,保持1秒;
- 先松开reset按键后等待设备重启,待OLEN显示WIFI_CONNECT_ING后再松开按键2;
- 等待手机数字管家保险柜设备为离线状态;
- 通过NFC模块实现设备碰一碰快速配网。
二、快速上手
1、硬件准备SW-18010P振动模块
润和Pegasus智能家居套件
预装HarmonyOS手机一台。
2、获取源码及Ubuntu编译环境准备开发基础环境由windows 工作台和Linux 编译服务器组成。windows 工作台可以通过samba 服务或ssh 方式访问Linux编译服务器。其中windows 工作台用来烧录和代码编辑,Linux编译服务器用来编译OpenHarmony代码,为了简化步骤,Linux编译服务器推荐安装Ubuntu20.04。
3、Hi3861开发环境准备在Linux编译服务器上搭建好基础开发环境后,需要安装OpenHarmony 编译Hi3861 平台特有的开发环境。
操作文档
4、源码下载&编译准备
1.码云工具下载- <font size="4">cd ~/
- curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > ./repo
- sudo cp repo /usr/local/bin/repo
- chmod a+x /usr/local/bin/repo
- pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple requests</font>
2.代码下载本智能保险柜demo适配OpenHarmony-3.0-LTS与OpenHarmony-3.1-Beta。
1) OpenHarmony代码下载- <font size="4">mkdir ~/OpenHarmony
- cd ~/OpenHarmony</font>
OpenHarmony-3.0-LTS下载:
- <font size="4">repo init -u git@gitee.com:openharmony/manifest.git -b OpenHarmony-3.0-LTS --no-repo-verify
- repo sync -c
- repo forall -c 'git lfs pull'</font>
OpenHarmony-3.1-Beta下载:
- <font size="4">repo init -u git@gitee.com:openharmony/manifest.git -b OpenHarmony-3.1-Beta --no-repo-verify
- repo sync -c
- repo forall -c 'git lfs pull'</font>
2) 设备侧代码下载直接下载仓库对应zip 包文件并放到 ~/目录
3) 编译前准备拷贝teamX
- <font size="4">cd ~/
- unzip knowledge_demo_smart_home-master.zip
- cp -raf knowledge_demo_smart_home-master/dev/team_x ~/OpenHarmony/vendor</font>
拷贝智能保险柜相应代码,iot云连接三方库代码、无感配网相关库文件(libHwKeystoreSDK.a),libHwKeystoreSDK.a文件与无感配网相关,缺少无法编译通过。
- <font size="4">cd ~/
- cp -raf knowledge_demo_smart_home-master/dev/team_x/smart_safe/libs/libHwKeystoreSDK.a OpenHarmony/vendor/team_x/common/iot_wifi/libs/
- cp -raf knowledge_demo_smart_home-master/dev/third_party/iot_link OpenHarmony/third_party/</font>
适配平台系统的config.json。
- <font size="4">cd ~/OpenHarmony/vendor/team_x/smart_safe
- 如果使用的是OpenHarmony-3.0-LTS版本
- cp config.json_3_0_LTS config.json
- 如果使用的是OpenHarmony-3.1-Beta版本
- cp config.json_3.1-Beta config.json
- cd ~/OpenHarmony</font>
后续修改操作在OpenHarmony-3.0-LTS版本源码下,OpenHarmony-3.1-Beta版本类似只是行号不同。
地址vendor/team_x/common/iot_wifi/BUILD.gn。将libs/libHwKeystoreSDK.a加入到编译中。
添加17行- <font size="4">14 config_file = [
- 15 "libs/libnetcfgdevicesdk.a",
- 16 "libs/libhilinkadapter_3861.a",
- 17 "libs/libHwKeystoreSDK.a"
- 18 ]</font>
地址:device/hisilicon/hispark_pegasus/sdk_liteos/build/config/usr_config.mk。打开I2C与PWM开关。
- <font size="4">33 CONFIG_I2C_SUPPORT=y
- 40 CONFIG_PWM_SUPPORT=y</font>
地址:device/hisilicon/hispark_pegasus/hi3861_adapter/hals/communication/wifi_lite/wifiservice/source/wifi_hotspot.c。与无感配网功能相冲突,须屏蔽。 - <font size="4">EnableHotspot函数中屏蔽如下字段
- 139 //if (SetHotspotIpConfig() != WIFI_SUCCESS) {
- 140 // return ERROR_WIFI_UNKNOWN;
- 141 //}</font>
地址:device/hisilicon/hispark_pegasus/hi3861_adapter/hals/communication/wifi_lite/wifiservice/source/wifi_device.c。与无感配网功能相冲突,须屏蔽。
- <font size="4">DispatchConnectEvent函数下 屏蔽StaSetWifiNetConfig相关代码行
- 239 //StaSetWifiNetConfig(HI_WIFI_EVT_CONNECTED);
- 260 //StaSetWifiNetConfig(HI_WIFI_EVT_DISCONNECTED);</font>
地址:device/hisilicon/hispark_pegasus/sdk_liteos/BUILD.gn。将smart_safe中的demo加入编译配置
- <font size="4">在deps中添下如下27行
- 23 deps = [
- 24 ":sdk",
- 25 "//base/security/deviceauth/frameworks/deviceauth_lite:hichainsdk",
- 26 "//build/lite:ohos",
- 27 "//build/lite:product",
- 28 ]</font>
地址:base/security/huks/interfaces/innerkits/huks_lite/BUILD.gn
- <font size="4">屏蔽164行
- 161 sources = huks_sources
- 162 sources += huks_storage_source
- 163 sources += huks_access_sources
- 164 #sources += [ "hks_tmp_client.c" ]</font>
如果使用
整合并修改完成后的目录结构如下图:
5、编译&烧录编译命令:
- <font size="4">hb set // 如果是第一次编译,Input code path 命令行中键入"./" 指定OpenHarmony工程编译根目录后 回车。</font>
如下图所示,选择智能保险柜
- <font size="4">hb build // 如果需要全量编译,可以添加-f 选项</font>
详细的代码编译及固件烧录步骤,请参考 编译和烧录指南
6、设备配网- 在设备上电前需准备好安装了数字管家应用的HarmonyOS手机,详情见数字管家应用开发, 并在设置中开启手机的NFC功能;
- 写设备NFC标签,详细操作见设备NFC标签指导文档,其中设备模型定义为profile 。
- 烧录完成后,上电。开发者在观察开发板上状态LED灯以8Hz的频率闪烁时,将手机上半部靠近开发板NFC标签处;
- 无需任何操作手机将自动拉起数字管家应用并进入配网状态,配网过程中无需输入热点账号密码。 具体无感配网相关流程参考 无感配网指南
7、操作体验
1.设备控制配网完成后,数字管家应用会自动进入智能保险柜控制页面,通过控制页面可以关闭告警。
2.告警提示当检测到保险柜有振动时,会通知数字管家应用告警,并且告警消息还会推送同一家庭账号的所有成员