碰一碰簡單來說就是,使用 NFC 拉起配網(wǎng) FA,入網(wǎng)之后,使用控制 FA 進(jìn)行設(shè)備控制。
總結(jié)下來開發(fā)碰一碰能力需要 3 部分:
設(shè)備端:安裝碰一碰固件程序。
手機(jī)端:可以使用原子化服務(wù)配網(wǎng)模板、控制模板。
NFC 標(biāo)簽:存放設(shè)備端信息。用原子化服務(wù)的包名→生成 Product ID,用于拉起 FA。
接下來參考官方 demo 和 OneHop 模板來體驗(yàn)下碰一碰的流程。
設(shè)備端
①源碼下載
硬件需要 Hi3861,OpenHarmony 版本需要 1.1.0,可以 repo 拉取。
repoinit-uhttps://gitee.com/openharmony/manifest.git-brefs/tags/OpenHarmony_release_v1.1.0--no-repo-verify reposync-c
關(guān)于 Ubuntu 編譯環(huán)境搭建可以參考軟通動(dòng)力大佬的帖子,寫的特別詳細(xì):
https://harmonyos.51cto.com/posts/9453
首先要完成官方鏡像的拉取和編譯,成功之后在嘗試安裝 OneHop 設(shè)備端代碼,設(shè)備端代碼獲取鏈接:
https://gitee.com/openharmony-sig/knowledge_demo_smart_home/tree/master/dev/team_x/demo_winder
OneHop 設(shè)備端固件代碼,只需要 hals 和 winder 兩個(gè)文件夾,為了方便大家下載,我在文末上傳了這兩個(gè)文件夾。這兩個(gè)文件夾需要拷貝到 applications/sample/wifi-iot/app/ 目錄下。
②源碼修改
修改文件:
device/hisilicon/hispark_pegasus/hi3861_adapter/hals/communication/wifi_lite/wifiservice/source/wifi_device.c
代碼如下:
staticvoidHiWifiWpaEventCb(consthi_wifi_event*hisiEvent) { if(hisiEvent==NULL){ return; } /*注釋此處 if(LockWifiEventLock()!=WIFI_SUCCESS){ return; } */ for(inti=0;i
設(shè)備端使用到了 I2C 的屏幕,所以需要在 make 的 config 文件中開啟 I2C 的支持。 具體操作如下:
打開下面文件,注意取消前面的#號(hào):
device/hisilicon/hispark_pegasus/sdk_liteos/build/config/usr_config.mk
-#CONFIG_I2C_SUPPORTisnotset +CONFIG_I2C_SUPPORT=y
為了方便調(diào)試需要關(guān)閉 test 子系統(tǒng),在 vendorhisiliconhispark_pegasusconfig.json 文件中,刪除下面代碼,注意逗號(hào)。
, { "subsystem":"test", "components":[ {"component":"xts_acts","features":[]}, {"component":"xts_tools","features":[]} ] }
最后將 app 添加到編譯框架,在 applications/sample/wifi-iot/app/BUILD.gn 文件,將 features 字段中的 startup 修改為 winder,并添加 winder 模塊的索引 deps。
import("http://build/lite/config/component/lite_component.gni") lite_component("app"){ #將startup修改為winder features=[ "winder", ] #添加winder模塊的索引deps deps=["http://applications/sample/wifi-iot/app/hals:hi3861_hals"] }
③構(gòu)建編譯
1.1.0 的構(gòu)建使用的是 hb 命令,方式如下:
hbset#設(shè)置編譯路徑 .#選擇當(dāng)前路徑 #hisilicon#選擇編譯的目標(biāo)類型 >wifiiot_hispark_pegasus ipcamera_hispark_aries ipcamera_hispark_taurus hbbuild-bdebug#執(zhí)行編譯
燒錄推薦使用 HiBurn,簡單高效,一張圖就明白了。
最后燒錄完成提示:
ExecutionSuccessful
手機(jī)端
①編輯模板
手機(jī)端就簡單了,安裝DevEco Studio 3.0 Beta1及以上版本,然后 IDE 自帶 OneHop 的模板。
https://developer.harmonyos.com/cn/develop/deveco-studio#download_beta
②獲取證書
源碼不怎么需要修改,但是在真機(jī)上運(yùn)行程序,需要在線獲取簽名證書?;玖鞒叹褪窃贏ppGallery Connect注冊項(xiàng)目和應(yīng)用,然后用 IDE 軟件自動(dòng)獲取。
https://developer.huawei.com/consumer/cn/service/josp/agc/index.html#/myProject
需要注意的是網(wǎng)站注冊時(shí)的包名要和 src/main/config.json 中"bundleName"保持一致不然是獲取不到的。
這部分出問題參考官方文檔吧,文檔很詳細(xì):
https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ide_debug_device-0000001053822404#section837891802519
再就是為了方便調(diào)試可以先關(guān)閉免安裝功能(在 src/main/config.json 中,將"installationFree"設(shè)置為 false)這樣桌面會(huì)生成應(yīng)用圖標(biāo),無需 NFC 貼紙,打開圖標(biāo)一樣可以實(shí)現(xiàn)設(shè)備配網(wǎng)、控制。
"installationFree":false
③測試 APP
到這里可以先打開桌面的 app 測試下配網(wǎng)功能,這里有坑,目前示例的穩(wěn)定性很差,配網(wǎng)大概率會(huì)失敗。
先關(guān)閉手機(jī) wifi 再打開,然后 Hi3861 上電,再然后開啟配網(wǎng) app 可以提高成功率。
正常情況下配網(wǎng)成功就會(huì)自動(dòng)拉起控制 FA,控制 FA 需要在 DevEco Studio 菜單欄 Run→Edit Configurations。
勾選 entry 模塊下的“Deploy Multi Hap Packages”選項(xiàng),這樣項(xiàng)目中的多個(gè)模塊都能添加到手機(jī)端。
如果這樣配網(wǎng)完成還是不能自動(dòng)拉起控制 FA,那么檢查下 default/pages/netconfig/netconfig.js,檢查下這個(gè)函數(shù)參數(shù)是否正確。
lettarget={ bundleName:'com.liangzili.myonehop.hmservice', abilityName:'com.liangzili.myonehop.ControlMainAbility', deviceType:1, data:{ session_id:getApp(this).ConfigParams.deviceInfo.sessionId, product_id:getApp(this).Product.productId, product_name:getApp(this).Product.productName } } FeatureAbility.startAbility(target);
NFC 標(biāo)簽
標(biāo)簽的作用類似新建一個(gè)快捷方式,然后把快捷方式貼到設(shè)備上,手機(jī)碰一下打開這個(gè)快捷方式就可以自動(dòng)下載配網(wǎng) FA 和控制 FA,只要 app 體積在 10M 以內(nèi),這些操作用戶是感受不到的。接下來就說說這個(gè)標(biāo)簽的制作方法。
①制作貼紙
首先當(dāng)然是需要購買一些 NFC 貼紙,我使用的是下圖這一種。
給 NFC 貼紙寫內(nèi)容需要一個(gè) APP,在華為應(yīng)用市場,搜索“應(yīng)用調(diào)測助手”安裝即可。
寫入貼紙的信息一共 2 條 Product ID 和設(shè)備 SN,或者一些自定義信息。只有 Product ID 是必填的,這個(gè)在 APP 拿包名申請即可。
②設(shè)置意圖
當(dāng)手機(jī)碰觸 NFC 貼紙的時(shí)候,手機(jī)需要通過 Product ID 去云端獲取用戶意圖。
所以需要登錄華為開發(fā)者門戶設(shè)置下,當(dāng)檢測到設(shè)置的 Product ID 是要執(zhí)行的操作。
主要的設(shè)置就在這里,可以看到配網(wǎng) FA 是通過 NFC 貼紙拉起的,而控制 FA 是配網(wǎng) FA 拉起的:
“App 包名”填寫為 config.json 文件中的 bundleName 字段取值。
“模塊名”填寫為入口原子化服務(wù)(即設(shè)備配網(wǎng)模塊)config.json 文件中的 moduleName 字段取值。
“服務(wù)名”填寫為入口原子化服務(wù)(即設(shè)備配網(wǎng)模塊)config.json 文件中的 mainAbility 字段取值。
這樣碰一碰的功能基本就實(shí)現(xiàn)了。
總結(jié)
大部分的內(nèi)容官方文檔都有詳細(xì)說明,我只寫了不一樣的地方,和我踩過的雷,希望能給大家避避坑。詳細(xì)流程還是要結(jié)合官方文檔看。
原文標(biāo)題:鴻蒙“碰一碰”功能實(shí)現(xiàn)!
文章出處:【微信公眾號(hào):HarmonyOS技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
審核編輯:彭菁
-
華為
+關(guān)注
關(guān)注
216文章
34909瀏覽量
254645 -
nfc
+關(guān)注
關(guān)注
59文章
1645瀏覽量
181901 -
開發(fā)者
+關(guān)注
關(guān)注
1文章
611瀏覽量
17320
原文標(biāo)題:鴻蒙“碰一碰”功能實(shí)現(xiàn)!
文章出處:【微信號(hào):gh_834c4b3d87fe,微信公眾號(hào):OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
小熊派&鴻蒙實(shí)現(xiàn)碰一碰聯(lián)網(wǎng)+遠(yuǎn)程控制的智能臺(tái)燈
“碰一碰”版本的藍(lán)牙鍵盤,來啦
首款鴻蒙系統(tǒng)打印機(jī)亮相 WPS“一碰打印”功能吸睛
HarmonyOS原子化服務(wù)掃一掃碰一碰完整體驗(yàn)
【視頻】解決方案第5期:碰一碰(NFC)介紹
玩轉(zhuǎn)OpenHarmony智能家居:如何實(shí)現(xiàn)樹莓派“碰一碰”設(shè)備控制
hispark 3861智能家居套件可以實(shí)現(xiàn)碰一碰拉起原子化服務(wù)嗎
“碰一碰”就能支付!華為聯(lián)合銀聯(lián)推出黑科技
機(jī)智云NFC“碰一碰”配網(wǎng)解決方案
智慧家電不會(huì)用?Leader“碰一碰”即刻開啟智慧生活
不會(huì)用智慧功能?Leader洗衣機(jī)只需“碰一碰”“拍一拍”!

評論