HarmonyOS Connect設(shè)備開發(fā)之碰一碰系列分享總貼
??想了解更多關(guān)于開源的內(nèi)容,請訪問:??
一、 說明
在宿舍全屋智能開發(fā)過程中淺嘗數(shù)字管家,意猶未盡。一方面是沒寫過APP,連門鎖的UI都是套用臺燈的;另外,如果想添加自己的設(shè)備還需要遵循profile,然后在服務(wù)器配置,重點是不知道服務(wù)器啥時候罷工;最后,宿舍不全是運行HarmonyOS的設(shè)備,門鎖等設(shè)備不能實現(xiàn)服務(wù)全宿舍,這不夠!
經(jīng)過反復(fù)研讀官方給出的??碰一碰個人體驗版??之后,找出了一條可行技術(shù)路線——開發(fā)自己的HarmonyOS Connect設(shè)備。
【HarmonyOS Connect設(shè)備開發(fā)-個人】 將系列解讀碰一碰個人體驗版,介紹如何實現(xiàn)自定義設(shè)備UI、碰一碰拉起服務(wù)卡片、設(shè)備配網(wǎng)、消息下發(fā)及設(shè)備控制。
圖1 開發(fā)流程總結(jié)
話不多說,先上demo:
圖2-MRobot
圖3-SmartFan
圖2是不久前折騰好幾宿做出來的機器人。當然,為了突出教程核心,我將介紹如何開發(fā)自己的智能風(fēng)扇圖3所示。一通百通,大家完全可以設(shè)計更多有趣的作品。
涉及軟硬件如下:
接下來默認已準備好上述軟硬件;設(shè)備開發(fā)實測OpenHarmony 1.1.0 源碼支持在Windows一站式開發(fā),按照官方教程配置好工具鏈即可。
二、 運行個人體驗版
第一天,我將按照官方教程,新建OneHop模板工程,源碼燒錄設(shè)備,運行測試,了解工作流程。
1、 新建模板工程-拉起服務(wù)
基于OneHop Template新建工程,按照官方教程??原子化服務(wù)??即可完成。
接下來就是AGC平臺簽名、真機運行,需要注意的是在真機運行時需要選擇多個hap包安裝。
真機上運行APP后,如何使用NFC拉起服務(wù)呢? 需要在平臺華為開發(fā)門戶配置關(guān)聯(lián)意圖。細分兩步:申請ProductID【順便把它寫入nfc標簽中去】、配置服務(wù)。如下圖:
接下來測試碰一碰拉起:
一
有沒有發(fā)現(xiàn),目前為止我們并沒有開發(fā)設(shè)備,就能實現(xiàn)碰一碰拉起了。這里應(yīng)該更能體會到碰一碰實質(zhì)上依靠后臺的服務(wù),綁定服務(wù)意圖后,nfc只是一個觸發(fā)。
2、 設(shè)備側(cè)開發(fā)
細分以下幾點:
- 獲取??openharmony1.1.0源碼??。
- 獲取??包含smart fan的Demo代碼??。
- 修改工程。
打開源碼后,需要修改幾個地方:
①將Hi3861開發(fā)板Demo代碼中的“hals”和“winder”目錄拷貝至源碼工程中的applications/sample/wifi-iot/app/目錄下:
②修改device/hisilicon/hispark_pegasus/hi3861_adapter/hals/communication/wifi_lite/wifiservice/source/wifi_device.c文件,將HiWifiWpaEventCb函數(shù)中如下兩處代碼進行注釋。
③打開device/hisilicon/hispark_pegasus/sdk_liteos/build/config/usr_config.mk文件,找到CONFIG_I2C_SUPPORT is not set,取消注釋,并將其修改為CONFIG_I2C_SUPPORT=y。
④修改applications/sample/wifi-iot/app/BUILD.gn文件,將features字段中的startup修改為winder,并添加winder模塊的索引deps,配置示例如下所示。
⑤修改vendor/hisilicon/hispark_pegasus/config.json文件,將test子系統(tǒng)內(nèi)容及其上方逗號刪除。
⑥【可選】修改oled、溫濕度初始化,讓其默認成功【以下操作是針對只有一個hi3861模組也想體驗碰一碰, 因為源碼要求連接oled、溫濕度傳感器,不接會導(dǎo)致初始化時不通過,就不會執(zhí)行配網(wǎng)?!?/p>
編譯燒錄 基礎(chǔ)操做,視頻有展示,不多介紹。
燒錄成功復(fù)位后,hi3861串口0會輸出如下提示信息,說明一切正常:
3、 體驗案例-控制風(fēng)扇
拿起手機碰一碰寫入ProductID的NFC標簽,正常會拉起設(shè)備界面,然后配網(wǎng),順利進入控制界面。點擊相應(yīng)的按鈕,在設(shè)備端會接收到相應(yīng)數(shù)據(jù)。
4、開發(fā)解讀
可以看出,HarmonyOS Connect設(shè)備開發(fā)主要分南北兩大塊。
- 先看北向的代碼框架。
APP分為兩個模塊,一是配網(wǎng)原子化服務(wù),模板基于JS編寫;二是控制原子化服務(wù),依賴java實現(xiàn)。每個模塊官方給出了詳細的參考??設(shè)備配網(wǎng)原子化服務(wù)開發(fā)指導(dǎo)書、設(shè)備控制原子化服務(wù)開發(fā)指導(dǎo)書??。
這里梳理出南北向開發(fā)流程,如下:
原子化app源碼框架:
設(shè)備源碼框架:
查看template模板工程可知,設(shè)備控制UI交互邏輯依賴于JAVA,同時模板是基于預(yù)先設(shè)置的UI控件開發(fā)的頁面,配好相應(yīng)的json文件即可使用。但是這對自由開發(fā)UI來說局限性太大,由此下一步將拋除該束縛,去JAVA化,使用JS接口發(fā)送數(shù)據(jù)。
三、 幾點說明
在此之前我并沒有太多app開發(fā)經(jīng)驗,尤其是前端開發(fā)從未涉及,所以分享將以實現(xiàn)功能為主,不注重優(yōu)化;
如果你和我一樣第一次寫鴻蒙APP,那么恭喜你選擇了一個門檻極低的開發(fā)平臺,原因有三:
①鴻蒙app提供豐富API,基于ArkUI框架開發(fā)和畫畫類似。
②JS入門并不難,花幾個小時看看基礎(chǔ)即可。
③再不濟還有可視化UI開發(fā)(北向淺嘗,極力推薦)。