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