簡(jiǎn)介
本文檔為幫助開(kāi)發(fā)者快速將設(shè)備接入到數(shù)字管家,完成FA、服務(wù)端和設(shè)備的通信,實(shí)現(xiàn)數(shù)字管家對(duì)設(shè)備的命令控制、日程管理,以及設(shè)備對(duì)數(shù)字管家的主動(dòng)告警。
快速上手
1. 前提參考:
鴻蒙開(kāi)發(fā)文檔:[docs.qq.com/doc/DUmN4VVhBd3NxdExK
]
- IoT平臺(tái):完成IoT平臺(tái)新設(shè)備配置;
- 設(shè)備端:完成設(shè)備端的開(kāi)發(fā)并定義好profile設(shè)備模型;
- 服務(wù)端:搭建并配置好了服務(wù)端;
- 數(shù)據(jù)庫(kù):device_type表中添加好相關(guān)產(chǎn)品數(shù)據(jù);
2. 編寫(xiě)設(shè)備控制頁(yè)面
- 在slice目錄下新建 xxxxSlice.java文件,通過(guò) addActionRoute() 方法為此AbilitySlice配置一條路由規(guī)則,并且在在應(yīng)用配置文件(config.json)中注冊(cè),
- 在resources->base->layout下新建對(duì)應(yīng)xml布局文件,在上述兩個(gè)文件中編寫(xiě)相應(yīng)界面代碼。
3. 頁(yè)面邏輯與數(shù)據(jù)處理
- slice頁(yè)面獲取deviceId:在onStart中通過(guò)調(diào)用intent.getStringParam("deviceId") ,獲取設(shè)備標(biāo)識(shí)用于對(duì)設(shè)備進(jìn)行控制或者獲取設(shè)備信息。
- slice頁(yè)面獲取狀態(tài):對(duì)于可以主動(dòng)控制的設(shè)備,調(diào)用intent.getBooleanParam(KEY_IS_SET_COMMAND, false) ,用于判斷當(dāng)前狀態(tài)下是需要執(zhí)行命令,還是通過(guò) [EventBus]將命令數(shù)據(jù)傳出用于日程對(duì)設(shè)備的編排之中。
- 編寫(xiě)設(shè)備控制命令的獲取和解析方法:在CommandUtil中根據(jù)具體設(shè)備profile定義,來(lái)新增獲取命令和解析命令的方法,以供設(shè)備調(diào)用sendCommand來(lái)發(fā)送命令和在日程中來(lái)解析命令。
- 配置設(shè)備相關(guān)信息:在DeviceData類的initData方法中,根據(jù)設(shè)備productId添加設(shè)備圖片資源ID、跳轉(zhuǎn)的action參數(shù)和日程解析方法,配置完成后設(shè)備列表頁(yè)、日程頁(yè)面等都能通過(guò)該配置進(jìn)行圖片加載、路由跳轉(zhuǎn)和日程解析。
- 以上代碼邏輯處理和實(shí)現(xiàn)可參考LampAbilitySlice.java。
4. 接口對(duì)接
? 項(xiàng)目使用的網(wǎng)絡(luò)請(qǐng)求組件為RetrofitCache,項(xiàng)目中服務(wù)端api定義于ApiRx2,通過(guò)OKHttpUtilsRx2來(lái)實(shí)現(xiàn)異步調(diào)用。
- 若使用自己部署的服務(wù)端,須做如下修改: (1) 將OKHttpUtilsRx2類中SERVER_URL變量修改為自己的服務(wù)端api地址; (2) 將DeviceStateListener類中RABBITMQ_HOST變量修改為自己的服務(wù)端地址;
- 初始化設(shè)備狀態(tài):通過(guò)調(diào)用getDeviceInfo接口,傳入deviceId和userId來(lái)獲取,其中UserId在登錄時(shí)會(huì)儲(chǔ)存于Preferences輕量級(jí)數(shù)據(jù)存儲(chǔ)之中。
- 設(shè)備控制命令:通過(guò)調(diào)用sendCommand接口,傳入deviceId和命令json字符串來(lái)對(duì)指定設(shè)備進(jìn)行控制。
如何驗(yàn)證
1. 寫(xiě)入NFC數(shù)據(jù)
根據(jù)設(shè)備定義好的設(shè)備profile模型,使用應(yīng)用調(diào)測(cè)組助手將tlv格式數(shù)據(jù)寫(xiě)入NFC NFC數(shù)據(jù)寫(xiě)入章節(jié)。
2. 對(duì)設(shè)備進(jìn)行碰一碰配網(wǎng)
將手機(jī)靠近NFC標(biāo)簽,可正常拉起數(shù)字管家,并開(kāi)始無(wú)感配網(wǎng)。
3. 驗(yàn)證設(shè)備跳轉(zhuǎn)入口
- 在線設(shè)備貼近設(shè)備NFC標(biāo)簽碰一碰,可正常跳轉(zhuǎn)至應(yīng)用;
- 在首頁(yè)設(shè)備Tab和新增日程頁(yè)面的設(shè)備圖標(biāo)能正確顯示設(shè)備狀態(tài),在線設(shè)備點(diǎn)擊圖標(biāo)后可跳轉(zhuǎn)設(shè)備頁(yè);
4. 驗(yàn)證功能
- 新增日程:在輸入成員、設(shè)備執(zhí)行動(dòng)作、執(zhí)行時(shí)間等后,日程頁(yè)面可看見(jiàn)新增的日程以及需執(zhí)行的動(dòng)作,在到達(dá)指定時(shí)間后所有設(shè)備能夠執(zhí)行預(yù)設(shè)動(dòng)作,并且相關(guān)成員手機(jī)會(huì)收到系統(tǒng)通知。
- 設(shè)備單點(diǎn)控制:進(jìn)入設(shè)備控制頁(yè)面,執(zhí)行控制操作設(shè)備能有相應(yīng)動(dòng)作執(zhí)行。
- 主動(dòng)告警:驗(yàn)證設(shè)備端能否通過(guò)AMQP通知到數(shù)字管家,例如智能垃圾桶檢測(cè)到垃圾桶已滿會(huì)通過(guò)服務(wù)端通知到相關(guān)用戶,并且能觸發(fā)鈴聲提醒和系統(tǒng)通知彈框。
審核編輯 黃宇
-
鴻蒙
+關(guān)注
關(guān)注
57文章
2393瀏覽量
43079 -
HarmonyOS
+關(guān)注
關(guān)注
79文章
1983瀏覽量
30608
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
【HarmonyOS】開(kāi)發(fā)跨設(shè)備的鴻蒙(HarmonyOS) App
【HarmonyOS】開(kāi)發(fā)跨設(shè)備的鴻蒙(HarmonyOS)App
開(kāi)發(fā)跨設(shè)備的鴻蒙(HarmonyOS) App
如何優(yōu)雅地開(kāi)發(fā)HarmonyOS APP應(yīng)用
一文帶你讀懂OpenHarmony數(shù)字管家
【HarmonyOS微課堂】JS FA開(kāi)發(fā)基礎(chǔ)
基于OpenHarmony和數(shù)字管家設(shè)計(jì)的全屋智能門(mén)鎖(開(kāi)發(fā)流程+實(shí)操)
一文帶你讀懂數(shù)字管家
鴻蒙智聯(lián)生態(tài)產(chǎn)品《接入智慧生活App開(kāi)發(fā)指導(dǎo)》(官方更新版)
HarmonyOS APP打包運(yùn)行和調(diào)試應(yīng)用開(kāi)發(fā)步驟
基于OpenHarmony 的數(shù)字管家應(yīng)用開(kāi)發(fā)樣例
數(shù)字管家設(shè)備接入FA指南教程
在HarmonyOS版本下如何基于JS UI框架來(lái)開(kāi)發(fā)?
HarmonyOS開(kāi)發(fā)實(shí)例:【數(shù)字管家app】
![<b class='flag-5'>HarmonyOS</b><b class='flag-5'>開(kāi)發(fā)</b>實(shí)例:【<b class='flag-5'>數(shù)字</b><b class='flag-5'>管家</b><b class='flag-5'>app</b>】](https://file1.elecfans.com/web2/M00/C7/F8/wKgZomYXqtWABlN0AABanjonwS4491.png)
評(píng)論