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 開(kāi)源項(xiàng)目開(kāi)發(fā)的面向多場(chǎng)景智能設(shè)備的商用版本,在遵循AOSP(Android Open Source Project) 的開(kāi)源許可上實(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ù)融入生活的典型案例,開(kāi)發(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ì)與開(kāi)發(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)用的“一次開(kāi)發(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是一種開(kāi)源物聯(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è)備類(lèi)型,可通過(guò)設(shè)備配置信息對(duì)設(shè)備進(jìn)行分類(lèi)過(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è)備名稱(chēng)、設(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),類(lèi)型選擇設(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)。

第一步:雙擊打開(kāi)MQTTBox 軟件,單擊CreateMQTT Client(創(chuàng)建MQTT客戶端),輸入MQTT ClientName(客戶端名稱(chēng)),選擇傳輸協(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。

第三步:打開(kāi)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í)體類(lèi)

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

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

頁(yè)面設(shè)計(jì)好后,智能家居App需要從ThingsBoard平臺(tái)獲取溫度傳感器設(shè)備和空調(diào)設(shè)備的信息。在Tb?Cloud類(lèi)中添加獲取溫度傳感器數(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編寫(xiě)好相應(yīng)的方法后,則需在Device頁(yè)面初始化的時(shí)候去獲取設(shè)備的各種信息,所以需要在Device.ets文件中的aboutToAppear()方法中編寫(xiě)代碼。首先需要判斷是否登錄過(guò),接下來(lái)創(chuàng)建線程每7秒獲取一次設(shè)備信息以及設(shè)備遙測(cè)信息。

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

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

3.3 設(shè)備控制

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

通過(guò)單擊空調(diào)設(shè)備的開(kāi)關(guān)圖標(biāo),達(dá)到控制空調(diào)設(shè)備的開(kāi)關(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í)判斷是否需要開(kāi)啟空調(diào)設(shè)備,以達(dá)到真實(shí)的自動(dòng)化效果。在Device.ets的初始化線程中,添加一個(gè)業(yè)務(wù),判斷當(dāng)前溫度是否超過(guò)自動(dòng)化數(shù)據(jù)中設(shè)定的閾值,如果溫度超過(guò)閾值,空調(diào)設(shè)備未打開(kāi)并且已經(jīng)開(kāi)啟自動(dòng)化,則打開(kāi)空調(diào)設(shè)備

3.4 智能告警

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

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

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ǔ)句、表名稱(chēng)以及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)一次開(kāi)發(fā),多端部署。智能家居App在開(kāi)發(fā)過(guò)程中使用拉伸、占比、延伸、均分、多態(tài)等組件能力,實(shí)現(xiàn)一次開(kāi)發(fā),多端部署。

4.1 組件的拉伸能力

組件的拉伸能力無(wú)論在平板或手機(jī)屏幕中,當(dāng)前UI組件都能夠以相同的寬度或高度展示在屏幕中,也就是在設(shè)置width、height、margin和padding等屬性的過(guò)程中,通過(guò)設(shè)置百分比,讓該組件可以在不同的屏幕上都保持該寬高和間距,在智能家居App的開(kāi)發(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)一次開(kāi)發(fā)多端部署的能力,如圖5所示。

5 結(jié)論

本文主要完成了基于HarmonyOS 的智能家居App的設(shè)計(jì)與實(shí)現(xiàn),結(jié)合ThingsBoard云平臺(tái)實(shí)現(xiàn)了智能家居數(shù)據(jù)展示、設(shè)備控制、智能告警等工作,并通過(guò)多種部署能力達(dá)到一次開(kāi)發(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
高職院校開(kāi)展基于云平臺(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在线观看国产| 精品视频福利| 欧美日韩专区| 女同久久精品国产99国| 欧美激情视频在线观看一区| 国产成人永久免费视频| 69视频国产| 九九视频在线免费观看| 色综合热无码热国产| 丁香六月综合网| 人妻中文字幕无码久久一区| 亚洲欧洲日产国产无码AV| 久久无码av一区二区三区| 精品国产三级在线观看| 国产 在线视频无码| 18禁黄无遮挡免费动漫网站| 国产91视频免费| 国产麻豆另类AV| 无码免费的亚洲视频| 国产流白浆视频| 天天干天天色综合网| 亚洲精品人成网线在线 | 真人高潮娇喘嗯啊在线观看 | 国产又爽又黄无遮挡免费观看 | 国内精品免费| 少妇高潮惨叫久久久久久| 国产亚洲精品自在线| 99视频国产精品| 国产一级毛片高清完整视频版| 91原创视频在线| 免费va国产在线观看| 色婷婷电影网| 亚洲精品免费网站| 亚洲另类第一页| 国产成人AV大片大片在线播放 | 青青国产视频| 成人a免费α片在线视频网站| 欧美日韩中文字幕在线| 亚洲成a人片7777| 麻豆精品在线视频| 婷婷色丁香综合激情| 久久综合九九亚洲一区| www欧美在线观看| 狠狠做深爱婷婷综合一区| 国产va免费精品| 97在线观看视频免费| 欧类av怡春院| 久久黄色视频影| 青青久久91| 色久综合在线| 毛片免费网址| 老汉色老汉首页a亚洲| 国产极品美女在线播放| 精品91视频| 欧美在线视频a| 亚洲中文精品人人永久免费| 一本视频精品中文字幕| 精品午夜国产福利观看| 中文无码精品A∨在线观看不卡| 99re经典视频在线| 亚国产欧美在线人成| 国产自在自线午夜精品视频| 亚洲熟女偷拍| 国产欧美日韩专区发布| 日韩乱码免费一区二区三区| 久久综合伊人77777| 91精品人妻互换| 国产国拍精品视频免费看| 欧美色图久久| 婷五月综合| 国产成人高清在线精品| 成人在线观看不卡| 亚洲无码精品在线播放| 国产午夜精品一区二区三区软件| 亚洲国产成人精品无码区性色| 国产理论精品| 亚洲美女一区| 伊人久久大香线蕉影院| 91国内视频在线观看| a级毛片免费网站| 国产凹凸一区在线观看视频| 伊人福利视频|