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