• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

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

      孫健

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

      0 引言

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

      1 需求分析

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

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

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

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

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

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

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

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

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

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

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

      3.1 云平臺搭建

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

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

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

      2) 添加設(shè)備

      在設(shè)備配置添加完成后,需要添加設(shè)備。Things?Board平臺中的設(shè)備主要作為真實設(shè)備的映射,所有真實設(shè)備需要在ThingsBoard平臺中創(chuàng)建對應(yīng)的設(shè)備。通過側(cè)邊欄單擊設(shè)備切換主頁,找到主頁右上角“+”號,選擇添加新設(shè)備,輸入設(shè)備名稱、設(shè)備標(biāo)簽、選擇添加的設(shè)備配置、輸入設(shè)備說明、單擊添加,添加后可在設(shè)備列表查看到添加的設(shè)備信息。智能家居App需要添加4個設(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平臺中,單擊側(cè)邊欄設(shè)備,選擇并單擊空調(diào)設(shè)備,選擇關(guān)聯(lián),方向選擇“從”,單擊彈框的右上角“+”號,類型選擇設(shè)備。找到相關(guān)傳感器設(shè)備,單擊添加,即可在關(guān)聯(lián)列表查看到關(guān)聯(lián)設(shè)備信息,如表3所示。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      3.3 設(shè)備控制

      1) 手動控制設(shè)備

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

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

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

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

      3.4 智能告警

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

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

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

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

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

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

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

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

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

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

      4 系統(tǒng)部署

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

      4.1 組件的拉伸能力

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

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

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

      4.3 組件的延伸能力

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

      4.4 組件的均分能力

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

      4.5 多態(tài)組件

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

      5 結(jié)論

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

      猜你喜歡
      云平臺智能家居
      基于PLC的智能家居控制系統(tǒng)研究
      電子制作(2019年20期)2019-12-04 03:51:14
      智能家居發(fā)展或?qū)崿F(xiàn)彎道超車
      基于云平臺的輸電桿塔滑坡監(jiān)控系統(tǒng)設(shè)計
      Docker技術(shù)在Web服務(wù)系統(tǒng)中的應(yīng)用研究
      高職院校開展基于云平臺網(wǎng)絡(luò)教學(xué)的探索與思考
      中國市場(2016年36期)2016-10-19 04:43:09
      企業(yè)云平臺建設(shè)研究
      基于云平臺的微信互聯(lián)式教學(xué)法的探索與實踐
      關(guān)于智能家居真正需求的探討
      基于云平臺的高職院校開放性職業(yè)培訓(xùn)工作體系建設(shè)研究
      智能家居的發(fā)展趨勢分析
      移動通信(2015年17期)2015-08-24 08:13:20
      荣成市| 阿拉善右旗| 蒲江县| 闻喜县| 孝感市| 中超| 宝清县| 梅河口市| 大名县| 永定县| 安西县| 措美县| 滕州市| 武冈市| 鸡西市| 辛集市| 定安县| 淮北市| 合江县| 麻阳| 黄石市| 日喀则市| 宁强县| 新民市| 南皮县| 温州市| 玉林市| 河南省| 桐乡市| 友谊县| 乐东| 萝北县| 江陵县| 革吉县| 会宁县| 泸州市| 莒南县| 敦煌市| 大田县| 湘潭县| 安远县|