999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于HarmonyOS的智能家居App設(shè)計(jì)與實(shí)現(xiàn)

2023-05-08 17:48:00孫健
電腦知識(shí)與技術(shù) 2023年9期
關(guān)鍵詞:云平臺(tái)

孫健

關(guān)鍵詞:HarmonyOS;智能家居;云平臺(tái)

0 引言

HarmonyOS 是華為基于OpenHarmony 開源項(xiàng)目開發(fā)的面向多場(chǎng)景智能設(shè)備的商用版本,在遵循AOSP(Android Open Source Project) 的開源許可上實(shí)現(xiàn)的新一代智能終端操作系統(tǒng)[1]。在我國(guó)信創(chuàng)產(chǎn)業(yè)蓬勃發(fā)展的背景下,HarmonyOS比Android在物聯(lián)網(wǎng)領(lǐng)域具有先天優(yōu)勢(shì)[2]。在物聯(lián)網(wǎng)諸多應(yīng)用場(chǎng)景中,智能家居是物聯(lián)網(wǎng)技術(shù)融入生活的典型案例,開發(fā)一款基于HarmonyOS的智能家居App既能夠使人們享受到科技發(fā)展帶來(lái)的便捷,又能夠發(fā)展壯大國(guó)產(chǎn)自主可控的鴻蒙生態(tài)。

1 需求分析

本文采用移動(dòng)端App+云的技術(shù)方案[3],基于Har?monyOS的智能家居App以智能控制家居環(huán)境中的空調(diào)設(shè)備為例,通過(guò)溫度傳感器獲取室內(nèi)溫度信息,并將溫度的數(shù)據(jù)上報(bào)給物聯(lián)網(wǎng)云平臺(tái)[4]。智能家居App從物聯(lián)網(wǎng)云平臺(tái)獲取訪問(wèn)認(rèn)證后,可查看當(dāng)前各房間的溫度信息,當(dāng)需要時(shí)可以通過(guò)智能家居App遠(yuǎn)程控制家中的空調(diào)設(shè)備進(jìn)行溫度調(diào)節(jié),具體功能的需求描述如下:

1) 進(jìn)行頁(yè)面的設(shè)計(jì)與開發(fā);

2) 完成App與物聯(lián)網(wǎng)云平臺(tái)的交互認(rèn)證;

3) 在頁(yè)面上綁定設(shè)備;

4) 數(shù)據(jù)展示界面能展示臥室、客廳溫度傳感器的實(shí)時(shí)數(shù)據(jù);

5) 設(shè)備控制界面能實(shí)現(xiàn)自動(dòng)控制、手動(dòng)控制兩種模式對(duì)臥室空調(diào)和客廳空調(diào)控制工作;

6) 能實(shí)時(shí)監(jiān)測(cè)設(shè)備狀態(tài)(在線、離線、運(yùn)轉(zhuǎn)情況),有異常時(shí)能實(shí)現(xiàn)告警提示;

7) 能充分利用了組件的拉伸、占比、延伸和均分能力,配合媒體查詢以及多態(tài)組件Swiper,實(shí)現(xiàn)在不同的終端設(shè)備上有不同的顯示方式,適配不同的設(shè)備屏幕形態(tài),從而實(shí)現(xiàn)應(yīng)用的“一次開發(fā),多端部署”。

2 系統(tǒng)總體設(shè)計(jì)

基于HarmonyOS的智能家居App連接在華為云上用Docker容器技術(shù)部署的ThingsBoard物聯(lián)網(wǎng)云平臺(tái),通過(guò)MQTTBox軟件模擬物聯(lián)網(wǎng)設(shè)備的數(shù)據(jù)上報(bào)給ThingsBoard,智能家居App成功獲取到ThingsBoard云平臺(tái)的安全訪問(wèn)認(rèn)證后,從ThingsBoard云平臺(tái)獲取設(shè)備數(shù)據(jù)并展示數(shù)據(jù),當(dāng)需要時(shí)進(jìn)行設(shè)備監(jiān)控和遠(yuǎn)程控制設(shè)備。

3 系統(tǒng)詳細(xì)設(shè)計(jì)

3.1 云平臺(tái)搭建

ThingsBoard是一種開源物聯(lián)網(wǎng)云平臺(tái)[5],智能家居設(shè)備數(shù)據(jù)要上報(bào)到ThingsBoard 平臺(tái),需要在ThingsBoard 平臺(tái)上有對(duì)應(yīng)的設(shè)備信息,因此需要在ThingsBoard平臺(tái)上添加并配置設(shè)備相關(guān)的設(shè)備配置、設(shè)備之間的關(guān)聯(lián)關(guān)系等信息。

1) 添加設(shè)備配置

設(shè)備配置主要用于確定設(shè)備類型,可通過(guò)設(shè)備配置信息對(duì)設(shè)備進(jìn)行分類過(guò)濾,查找到合適的設(shè)備進(jìn)行頁(yè)面渲染。智能家居App需要添加2個(gè)設(shè)備配置,如表1所示。

2) 添加設(shè)備

在設(shè)備配置添加完成后,需要添加設(shè)備。Things?Board平臺(tái)中的設(shè)備主要作為真實(shí)設(shè)備的映射,所有真實(shí)設(shè)備需要在ThingsBoard平臺(tái)中創(chuàng)建對(duì)應(yīng)的設(shè)備。通過(guò)側(cè)邊欄單擊設(shè)備切換主頁(yè),找到主頁(yè)右上角“+”號(hào),選擇添加新設(shè)備,輸入設(shè)備名稱、設(shè)備標(biāo)簽、選擇添加的設(shè)備配置、輸入設(shè)備說(shuō)明、單擊添加,添加后可在設(shè)備列表查看到添加的設(shè)備信息。智能家居App需要添加4個(gè)設(shè)備,如表2所示。

3) 添加關(guān)聯(lián)關(guān)系

創(chuàng)建好設(shè)備后,傳感器設(shè)備和空調(diào)設(shè)備需相互關(guān)聯(lián)產(chǎn)生聯(lián)系,根據(jù)溫度傳感器獲得的溫度控制空調(diào)設(shè)備。在ThingsBoard平臺(tái)中,單擊側(cè)邊欄設(shè)備,選擇并單擊空調(diào)設(shè)備,選擇關(guān)聯(lián),方向選擇“從”,單擊彈框的右上角“+”號(hào),類型選擇設(shè)備。找到相關(guān)傳感器設(shè)備,單擊添加,即可在關(guān)聯(lián)列表查看到關(guān)聯(lián)設(shè)備信息,如表3所示。

4) 使用MQTTBox發(fā)送遙測(cè)數(shù)據(jù)

MQTT是一種輕量級(jí)的基于客戶端-服務(wù)器的消息發(fā)布/訂閱傳輸協(xié)議,實(shí)現(xiàn)MQTT協(xié)議的通信需要有客戶端和服務(wù)器。MQTT協(xié)議的通信過(guò)程中有三種身份:發(fā)布者(Publish) 、消息代理(MQTT Broker) 、訂閱者(Subscribe) 。其中,消息的發(fā)布者和訂閱者都是客戶端,消息代理是服務(wù)器。消息發(fā)布者可以同時(shí)是消息的訂閱者。MQTT會(huì)自動(dòng)構(gòu)建底層網(wǎng)絡(luò)傳輸,建立客戶端到服務(wù)器的連接,提供兩者之間的一個(gè)有序的、無(wú)損的、基于字節(jié)流的雙向傳輸。ThingsBoard物聯(lián)網(wǎng)平臺(tái)當(dāng)接入MQTT協(xié)議的設(shè)備時(shí),此時(shí)的ThingsBoard充當(dāng)MQTT 服務(wù)器(MQTT Broker) ,再使用MQTTBox軟件充當(dāng)客戶端,客戶端模擬真實(shí)設(shè)備通過(guò)MQTT協(xié)議連接到ThingsBoard。

在搭建好ThingsBoard后,通過(guò)MQTTBox測(cè)試連接到該平臺(tái)實(shí)現(xiàn)設(shè)備遙測(cè)的測(cè)試,按照如下步驟實(shí)現(xiàn)。

第一步:雙擊打開MQTTBox 軟件,單擊CreateMQTT Client(創(chuàng)建MQTT客戶端),輸入MQTT ClientName(客戶端名稱),選擇傳輸協(xié)議:mqtt/tcp,輸入用戶名:設(shè)備的訪問(wèn)令牌值,輸入遠(yuǎn)程服務(wù)器的IP 和PORT(Host) ,選擇服務(wù)質(zhì)量(QoS) 選擇1-Atleast Once,單擊Save,頁(yè)面跳轉(zhuǎn)后,出現(xiàn)Connected則證明MQTT?Box客戶端已經(jīng)連接ThingsBoard平臺(tái)。

第二步:MQTTBox連接成功后,輸入遙測(cè)主題,選擇服務(wù)質(zhì)量(QoS) 為1-Atleast Once,輸入載荷(Pay?load) :“{"temp":25}”,單擊publish。

第三步:打開ThingsBoard平臺(tái),通過(guò)側(cè)邊欄單擊設(shè)備,找到并單擊連接MQTTBox復(fù)制Token的設(shè)備,選擇最新遙測(cè)值,可查看到MQTTBox 提交的遙測(cè)信息。

通過(guò)以上方式,按下列參數(shù),將4個(gè)設(shè)備的模擬遙測(cè)數(shù)據(jù)發(fā)送到ThingsBoard對(duì)應(yīng)的設(shè)備中,智能家居App設(shè)備的主題和負(fù)載測(cè)試數(shù)據(jù)如表4所示。

3.2 數(shù)據(jù)展示

1) 設(shè)備數(shù)據(jù)展示頁(yè)面的UI設(shè)計(jì)

設(shè)備數(shù)據(jù)展示頁(yè)面主要用來(lái)展示傳感器的狀態(tài)信息和設(shè)備數(shù)據(jù),根據(jù)智能家居App的功能需求,需要展示溫度傳感器數(shù)據(jù)以及空調(diào)設(shè)備的狀態(tài)信息。在view目錄下創(chuàng)建Device.ets文件。

2) 創(chuàng)建數(shù)據(jù)實(shí)體類

根據(jù)智能家居App的設(shè)備情況,需創(chuàng)建出溫度傳感器和空調(diào)兩類設(shè)備對(duì)應(yīng)的數(shù)據(jù)實(shí)體類,用來(lái)保存從云平臺(tái)獲取到的設(shè)備信息。

3) 封裝從云平臺(tái)獲取數(shù)據(jù)的方法

頁(yè)面設(shè)計(jì)好后,智能家居App需要從ThingsBoard平臺(tái)獲取溫度傳感器設(shè)備和空調(diào)設(shè)備的信息。在Tb?Cloud類中添加獲取溫度傳感器數(shù)據(jù)的方法、獲取空調(diào)設(shè)備的方法、獲取空調(diào)設(shè)備訪問(wèn)令牌TOKEN的方法、獲取遙測(cè)數(shù)據(jù)的方法以及獲取空調(diào)設(shè)備關(guān)聯(lián)的溫度傳感器設(shè)備ID的方法。

4) 從云平臺(tái)獲取數(shù)據(jù)并展示在設(shè)備頁(yè)上

在TbCloud編寫好相應(yīng)的方法后,則需在Device頁(yè)面初始化的時(shí)候去獲取設(shè)備的各種信息,所以需要在Device.ets文件中的aboutToAppear()方法中編寫代碼。首先需要判斷是否登錄過(guò),接下來(lái)創(chuàng)建線程每7秒獲取一次設(shè)備信息以及設(shè)備遙測(cè)信息。

5) 將設(shè)備頁(yè)放到Tabs中

打開Index.ets頁(yè)面,導(dǎo)入設(shè)備頁(yè),并修改TabCon?tent中的設(shè)備頁(yè)為Device。

3.3 設(shè)備控制

1) 手動(dòng)控制設(shè)備

通過(guò)單擊空調(diào)設(shè)備的開關(guān)圖標(biāo),達(dá)到控制空調(diào)設(shè)備的開關(guān)效果,所以需在TbCloud中創(chuàng)建修改設(shè)備遙測(cè)信息的方法。

2) 聯(lián)動(dòng)控制設(shè)備

在手動(dòng)控制完成后,須實(shí)現(xiàn)聯(lián)動(dòng)控制設(shè)備,也就是設(shè)置相應(yīng)溫度傳感器一個(gè)閾值,當(dāng)前溫度超過(guò)閾值時(shí),啟動(dòng)空調(diào)設(shè)備,實(shí)現(xiàn)手動(dòng)和自動(dòng)的聯(lián)動(dòng)控制。因此需先創(chuàng)建彈框,通過(guò)單擊設(shè)備的編輯按鈕,彈出彈框?qū)ψ詣?dòng)控制的溫度閾值與自動(dòng)化/手動(dòng)化進(jìn)行切換。故在view 文件夾下創(chuàng)建AirDeviceEditDialog.ets文件。彈框頁(yè)面最外層是通過(guò)Column組合而成,里面自上而下分別由文本框、橫線、輸入框、選擇器以及確定和取消按鈕組合而成,其中選擇器以及確定和取消按鈕分別用彈性布局進(jìn)行包裹渲染。

至此,單擊彈框后可將數(shù)據(jù)進(jìn)行保存,并再次展示,但若是退出App至后臺(tái),則無(wú)法進(jìn)行聯(lián)動(dòng)控制,故需要在Device.ets的初始化線程中添加一個(gè)業(yè)務(wù),將持久化的數(shù)據(jù)讀取并保存到空調(diào)設(shè)備集合的全局狀態(tài)變量中,而當(dāng)自動(dòng)化數(shù)據(jù)可保存后,該數(shù)據(jù)需在獲取到溫度數(shù)據(jù)時(shí)判斷是否需要開啟空調(diào)設(shè)備,以達(dá)到真實(shí)的自動(dòng)化效果。在Device.ets的初始化線程中,添加一個(gè)業(yè)務(wù),判斷當(dāng)前溫度是否超過(guò)自動(dòng)化數(shù)據(jù)中設(shè)定的閾值,如果溫度超過(guò)閾值,空調(diào)設(shè)備未打開并且已經(jīng)開啟自動(dòng)化,則打開空調(diào)設(shè)備

3.4 智能告警

1) 創(chuàng)建告警實(shí)體類

告警頁(yè)的開發(fā)首先需通過(guò)面向?qū)ο筮M(jìn)行考慮,所以需在model文件夾中創(chuàng)建AlarmInfo.ets文件,創(chuàng)建出告警實(shí)體類,代碼如下。

2) 持久化告警數(shù)據(jù)

在common>database文件夾創(chuàng)建AlarmInfoDao.ets用于持久化存儲(chǔ)告警內(nèi)容。所謂數(shù)據(jù)管理的存儲(chǔ)方式,底層主要采用SQLite來(lái)實(shí)現(xiàn),故首先需初始化數(shù)據(jù)庫(kù)文件名、建表語(yǔ)句、表名稱以及RDB數(shù)據(jù)庫(kù)訪問(wèn)對(duì)象作為全局變量;在構(gòu)造函數(shù)中通過(guò)傳入上下文環(huán)境對(duì)象,獲取RDB數(shù)據(jù)庫(kù)訪問(wèn)對(duì)象,并將該對(duì)象設(shè)置到全局變量中并執(zhí)行建表語(yǔ)句;通過(guò)RDB數(shù)據(jù)庫(kù)訪問(wèn)對(duì)象即可執(zhí)行SQL實(shí)現(xiàn)數(shù)據(jù)的增刪改查。

3) 將告警對(duì)象設(shè)置成全局變量

在設(shè)備初始化時(shí),須先初始化告警對(duì)象并保存至全局變量中。在EntryAbility 的onCreate()方法中,初始化告警對(duì)象,并設(shè)置成全局變量。

4) 查詢告警的數(shù)據(jù)

從數(shù)據(jù)庫(kù)中查詢出來(lái)的數(shù)據(jù),放在對(duì)應(yīng)的集合中。在viewmodel 文件夾中創(chuàng)建AlarmViewModel.ets文件,用來(lái)保存告警信息的數(shù)組。

5) 告警信息頁(yè)面設(shè)計(jì)

在view目錄下創(chuàng)建告警展示頁(yè)面Alarm.ets,用來(lái)展示告警信息列表。其中對(duì)告警項(xiàng)的布局進(jìn)行封裝,在view目錄下創(chuàng)建AlarmItem.ets文件,通過(guò)Flex自左向右設(shè)置告警圖標(biāo)、室內(nèi)溫度和空調(diào)設(shè)備啟動(dòng)提示以及創(chuàng)建時(shí)間,其中室內(nèi)溫度和空調(diào)設(shè)備啟動(dòng)提醒通過(guò)Flex布局再次包裹,并在告警頁(yè)的ListItem中進(jìn)行引入,以便降低代碼冗余,如圖1所示。

4 系統(tǒng)部署

HarmonyOS的組件提供了不同的能力,用來(lái)實(shí)現(xiàn)一次開發(fā),多端部署。智能家居App在開發(fā)過(guò)程中使用拉伸、占比、延伸、均分、多態(tài)等組件能力,實(shí)現(xiàn)一次開發(fā),多端部署。

4.1 組件的拉伸能力

組件的拉伸能力無(wú)論在平板或手機(jī)屏幕中,當(dāng)前UI組件都能夠以相同的寬度或高度展示在屏幕中,也就是在設(shè)置width、height、margin和padding等屬性的過(guò)程中,通過(guò)設(shè)置百分比,讓該組件可以在不同的屏幕上都保持該寬高和間距,在智能家居App的開發(fā)過(guò)程中,以告警頁(yè)面為例應(yīng)用組件的拉伸能力,如圖2所示。

4.2 設(shè)置組件占比能力

組件的占比能力即通過(guò)設(shè)置組件的權(quán)重屬性lay?outWeight,將頁(yè)面中留白的位置在高度或?qū)挾壬先空紳M,通過(guò)此方式的配置不論在任意分辨率的顯示屏上,都是占滿的效果,以告警頁(yè)為例應(yīng)用組件的占比能力。

4.3 組件的延伸能力

組件延伸能力即當(dāng)頁(yè)面高度不足以支持頁(yè)面數(shù)據(jù)時(shí),能夠自動(dòng)添加滾動(dòng)條功能以達(dá)到在不同分辨率的顯示屏上進(jìn)行滑動(dòng)來(lái)展示數(shù)據(jù)效果,通過(guò)List控件自帶的效果即可展示出效果無(wú)須添加屬性,此功能以告警頁(yè)為例應(yīng)用組件的延伸能力,如圖3所示。

4.4 組件的均分能力

組件均分能力即通過(guò)Flex布局將組件水平或垂直方向地形成合適的擺放效果,以達(dá)到在不同的屏幕分辨率下都能夠達(dá)到組件均分的效果。在智能家居App中的告警項(xiàng)就是通過(guò)Flex的水平均分達(dá)到效果,如圖4所示。

4.5 多態(tài)組件

多態(tài)組件指的是Swiper組件即輪播圖組件,通過(guò)該組件的displayCount函數(shù),傳入屏幕中需展示的頁(yè)數(shù)數(shù)量,達(dá)到不同的展示效果。在該功能下,只需計(jì)算出當(dāng)前屏幕的分辨率即可根據(jù)不同分辨率展示頁(yè)數(shù)數(shù)量,而此功能即媒體查詢功能,即通過(guò)媒體查詢出當(dāng)前的屏幕分辨率,根據(jù)分辨率設(shè)置Swiper組件的displayCount參數(shù),即可實(shí)現(xiàn)一次開發(fā)多端部署的能力,如圖5所示。

5 結(jié)論

本文主要完成了基于HarmonyOS 的智能家居App的設(shè)計(jì)與實(shí)現(xiàn),結(jié)合ThingsBoard云平臺(tái)實(shí)現(xiàn)了智能家居數(shù)據(jù)展示、設(shè)備控制、智能告警等工作,并通過(guò)多種部署能力達(dá)到一次開發(fā),多端部署的效果。

猜你喜歡
云平臺(tái)
“云平臺(tái)+大數(shù)據(jù)”在高校檔案管理中的應(yīng)用研究
東方教育(2016年13期)2017-01-12 23:14:14
云計(jì)算環(huán)境下的微課移動(dòng)云平臺(tái)設(shè)計(jì)
智慧城市電子政務(wù)云平臺(tái)構(gòu)建
基于云平臺(tái)MapReduce的Apriori算法研究
Docker技術(shù)在Web服務(wù)系統(tǒng)中的應(yīng)用研究
云環(huán)境下混合式協(xié)作學(xué)習(xí)教學(xué)模式研究
科技視界(2016年23期)2016-11-04 23:13:16
高職院校開展基于云平臺(tái)網(wǎng)絡(luò)教學(xué)的探索與思考
企業(yè)云平臺(tái)建設(shè)研究
基于體域網(wǎng)的移動(dòng)醫(yī)療系統(tǒng)的設(shè)計(jì)
科技視界(2016年17期)2016-07-15 10:15:56
基于云平臺(tái)的微信互聯(lián)式教學(xué)法的探索與實(shí)踐
主站蜘蛛池模板: 四虎成人免费毛片| 欧洲熟妇精品视频| 国产精品污视频| 99久视频| 日韩 欧美 小说 综合网 另类| 91综合色区亚洲熟妇p| 免费无码AV片在线观看中文| 青草国产在线视频| 亚洲无码37.| 国国产a国产片免费麻豆| 91精品久久久久久无码人妻| 久久香蕉国产线看观| 免费看一级毛片波多结衣| 国产一级妓女av网站| 毛片网站在线看| 国产波多野结衣中文在线播放| 日韩二区三区| 午夜日本永久乱码免费播放片| 国产欧美日韩专区发布| 欧美日韩成人| 亚洲成a人片| 找国产毛片看| 波多野结衣亚洲一区| 深夜福利视频一区二区| av性天堂网| 色香蕉网站| 国产欧美日韩综合一区在线播放| 国产不卡网| 园内精品自拍视频在线播放| 另类欧美日韩| 国产成人福利在线| 国产白浆在线| 亚洲天天更新| 国产精品久久久久久影院| 亚洲人成成无码网WWW| 亚洲欧美日韩精品专区| 91 九色视频丝袜| 国产在线高清一级毛片| 国产不卡一级毛片视频| 乱人伦视频中文字幕在线| 亚洲欧美在线综合图区| 久久婷婷六月| 中文字幕在线不卡视频| 亚洲欧美日韩高清综合678| 国产成熟女人性满足视频| 午夜福利在线观看成人| 一本综合久久| 国产成人无码久久久久毛片| 日韩毛片免费| 国产手机在线ΑⅤ片无码观看| 日本AⅤ精品一区二区三区日| 亚洲国产成人精品无码区性色| 国产人人射| 日韩人妻精品一区| 国产激爽大片在线播放| 日韩国产另类| 亚洲全网成人资源在线观看| 热久久综合这里只有精品电影| 亚洲av片在线免费观看| 欧美精品啪啪一区二区三区| 亚洲系列无码专区偷窥无码| 亚洲中文字幕国产av| av午夜福利一片免费看| 日本一区高清| 青青热久免费精品视频6| 日本一区二区不卡视频| 天天躁狠狠躁| 亚洲精品第一页不卡| 国产精品流白浆在线观看| 欧美一级在线播放| 国产熟女一级毛片| 亚洲AV永久无码精品古装片| 视频在线观看一区二区| 国产91特黄特色A级毛片| 午夜视频在线观看区二区| 亚洲无码高清免费视频亚洲| 亚洲综合一区国产精品| 一级在线毛片| 国产91视频观看| 亚洲精品va| 国内精自线i品一区202| 黄色三级毛片网站|