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

結合Redis與WebSocket的智能空調移動環境實時控制技術

2020-07-14 00:36:53桂成杰曾獻輝
軟件導刊 2020年1期

桂成杰 曾獻輝

摘 要:為了解決目前空調遠程控制系統實時性不高、數據庫讀取效率低的問題,設計一種基于WebSocket與Redis技術并在Web端遠程控制的系統。通過WebSocket技術實現終端和Web應用程序之間的長連接,提升兩者之間信息傳輸過程的實時性,通過Redis技術提升數據庫讀取效率,以及Web應用程序和采集控制程序對存儲數據操作的實時性。實際操作發現,該方法可提升控制系統整體實時性,提升現場空調設備的控制效率,使用戶決策及時得到執行。

關鍵詞:智能空調;遠程控制;移動環境;實時控制;內存數據庫

DOI: 10. 11907/rjdk.191187

開放科學(資源服務)標識碼(OSID):

中圖分類號:TP319

文獻標識碼:A

文章編號:1672-7800(2020)001-0190-05

0 引言

21世紀是信息化時代,其最大特征是智能。智能化已成為多個行業發展趨勢,既提高了生產效率,也改善了用戶體驗。其中電器行業智能化尤為顯著,智能空調是其中代表性產品。

傳統空調控制依靠控制面板或者紅外遙控器對空調實施控制,但該方法局限于一個空間內,用戶無法遠程控制空調…。隨著物聯網等信息技術不斷發展,用戶對遠程控制的需求越發迫切。研究人員陸續設計出一些遠程控制系統,如王耀青等[2]針對移動端設計了基于ZigBee和安卓的控制系統;趙宏林等[3]設計了基于云平臺和IOS的系統;張娟榮[4]針對PC端研發了基于ARM嵌入式技術的系統;文獻[5]針對紡織行業空調系統存在的自動化程度不高、誤差大等問題,提出基于物聯網的空調控制系統[5];文獻[6]提出基于NB-IoT的空調遠程控制系統,利用窄帶物聯網技術實現遠程控制[6]。上述系統雖實現了遠程控制,但也存在實時性不高、移植性能差、開發成本高等缺點。

本文在已有研究的基礎上,提出一種基于WebSocket與Redis的遠程控制系統,該系統在Web環境運行,利用WebSocket長連接與Redis讀寫效率高的特點提升控制實時性,同時Web環境適用于多樣化終端,只要可連接網絡,便可完成控制任務,提升系統執行效率,減少開發成本。

1 Web環境下智能空調實時控制總體架構

現有智能空調遠程控制系統由現場設備、遠程控制服務器和智能終端3部分組成。現場設備由被控空調和通信控制模塊組成,該模塊可以通過WIFI、4G網絡直接與服務器通信,也可接RS-485總線,經工控機與服務器通信;服務器由采集控制程序與Web應用程序組成;智能終端包括一切可以瀏覽網頁的設備,例如手機、平板等。系統整體架構如圖1所示。

1.1 關鍵結構介紹

系統整體工作流程從客戶端開始,到客戶端結束。用戶通過終端打開瀏覽器,訪問服務器中的Web應用程序,Web程序將用戶的控制命令寫入數據庫中,采集控制程序并從數據庫中讀取命令,然后傳輸至空調控制模塊,模塊完成控制后將控制結果回送給采集控制程序,程序將結果寫入數據庫,Web程序讀取數據庫中的結果并顯示在頁面上,最終用戶可在終端看見結果。

1.1.1 Web應用程序

Web應用程序是通過Web訪問的一類程序,遵循瀏覽器/服務器(B/S)的架構模式,用戶通過瀏覽器即可訪問。應用程序由3部分組成,分別對應B/S模式表示層、邏輯層和存儲層的3層結構[7]。用戶通過終端訪問瀏覽器,瀏覽器向Web服務器發送HTTP請求,得到服務器響應后,兩者建立連接,Web服務器便可將應用程序處理后的數據傳送、解析并顯示在終端頁面上.整體結構如圖2所示。

1.1.2 采集控制程序

采集控制程序是實現控制需求的核心,有兩大功能:一是采集功能,利用現場采集設備采集空調運行時的數據;二是控制功能,控制命令由程序傳送至現場設備進行控制,控制結果也由程序傳送至Web程序供用戶查看。采集控制程序結構如圖3所示。

服務器控制采集程序與Web應用程序各有分工,兩者通過操作同一個數據庫進行數據傳送,從而實現系統整體功能。

1.2 系統存在的問題

現有控制系統能很好地實現智能空調遠程控制,但隨著技術不斷發展,用戶對控制系統的需求增多,現有控制系統暴露出諸多問題,其中最主要問題包括:

(1)實時性,主要指終端和Web程序之間傳輸的實時性,由于HTTP協議基于TCP協議,使用HTTP協議時需要連接瀏覽器和服務器[8],但兩者之間連接步驟繁瑣,且每次通信時都需重新連接,嚴重影響系統實時性。

(2)數據庫讀寫效率低。實時性另一方面體現在Web應用程序和采集控制程序之間傳輸上。兩者之間通過讀寫數據庫傳輸控制命令,由于傳統數據庫在讀寫效率上沒有優勢,且整個過程需完成讀寫操作各兩次,讀寫操作耗時巨大,同樣降低系統實時性。

因此,現有遠程控制系統需作出調整和改進才能滿足控制需求。

2 基于WebSocket技術的實時連接遠程控制

現有控制系統使用HTTP協議和Web應用程序連接,但HTTP連接步驟復雜且只提供短鏈接,因此在實際運行時會嚴重影響傳輸實時性。另外HTTP協議只能由客戶端發起連接請求,客戶端不斷輪詢確定傳輸時機,既降低效率也增加負擔[9]。若服務器可及時推送數據庫變更信息,讓客戶端減少請求次數,既可提高效率,又可提升實時性。

2.1 WebSocket技術

WebSocket協議是HTML5中提出的一種基于TCP的新通信協議[10],區別于傳統TCP連接“三次握手、四次揮手”的步驟,協議采用長連接方式,即瀏覽器向服務器發送連接請求且服務器同意之后,兩者之間便建立連接[11]。其后瀏覽器和服務器雙方不存在主從關系,均可主動向對方發送數據[10],從而避免客戶端輪詢操作,可直接等待服務器推送最新控制結果。WebSocket協議建立連接的過程如圖4所示。

WebSocket協議通常應用于B/S模式,在該模式下瀏覽器和服務器通過HTTP協議建立連接,由于WebSocket協議“一次握手”建立連接,因此連接建立后,后續數據交換無需傳輸HTTP報文頭,加之WebSocket協議具有更簡潔的數據幀格式,進而降低了數據傳輸量,減少了大量交互信息和網絡吞吐量,可節省帶寬,提高通信效率[10]。

2.2 WebSocket實現方法

WebSocket協議實現服務器和終端間的數據通信,在HTTP協議基礎上使用該協議進行通信,提升傳輸實時性。

瀏覽器向Web服務器發出HTTP請求時,在請求頭部加入以下代碼:

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Key: x3JJHMbDLIEzLkh9C BhXDw==

Sec-WebSocket-Protocol: chat, superchat

Sec-WebSocket-Version: 13

該段代碼是WebSocket通信的核心,旨在告訴服務器瀏覽器發起WebSocket協議,需按照WebSocket協議處理,連接之后可長時間通信,提升傳輸實時性。

相比HTTP協議,WebSocket長連接的特點是可降低傳輸時延,但數據庫讀寫操作效率低,系統整體實時性依舊不突出。內存作為計算機的組成部分,存儲著計算機運行程序和數據。為保證計算機處理速度,內存讀寫被設計成一項高效的操作,其速度是讀寫數據庫的數倍,因此選擇內存緩存代替數據庫存儲,提升系統實時性。

3 基于Redis內存數據庫技術的遠程實時控制技術改進

內存數據庫是一種建立在用戶共享內存或者反射內存之上的一種數據庫,所有進程均可訪問內存數據庫中的數據,使數據可以在不同進程間共享[12]。內存數據庫提供多種接口,同時還提供打包、解包、結構與變量映射轉換等功能,可以實現不同類型數據直接交互。在眾多內存數據庫中,最常用的是Redis。

3.1 Redis技術

Redis技術遵守BSD協議,是一個開源的、基于內存和Key-Value鍵值對、支持數據持久化的網絡化存儲系統。Redis采用Key-Value模型,用哈希表表示兩者間的映射關系,可用Key值迅速查詢對應的Value值[13]。同時Redis支持主從同步與讀寫分記,可以有效地提高系統性能和可靠性。

3.2 Redis特點

Redis是為了解決大量數據存儲需求而產生的,隨著用戶訪問量和需求不斷增加,傳統數據庫無法滿足存儲需求;Redis讀寫速度快,可分別達到110 000次/秒和81 000次/秒,遠優于數據庫讀寫速度[14],采集控制程序和Web程序讀寫時可進一步提升效率,提升實時性;此外Redis去除了數據庫中數據的關系型特征,可方便再進行擴展;Redis支持監聽功能,客戶端可以升級為監視器,監聽服務器操作信息,及時掌握Redis動態[15]。

綜上所述,與傳統數據庫相比,Redis具有明顯優勢,因此將存儲系統改成Redis,并將工控機和客戶端設置為監視器,監聽并接收服務器當前處理的指令信息。

4 智能空調實時控制系統實現

為了驗證改進系統可行性,完成服務器設計,并利用Web實現空調遠程控制,改進的系統架構與圖1類似,終端使用WebSocket協議訪問Web程序,同時將控制命令存入Redis中。

4.1 控制命令結構設計

Redis提供5種數據存儲類型:String、Hash、Set、List和2set[6]。Hash類型可以看成具有String Key和String Value的map容器,將多個鍵值對存儲在一個鍵值對中,適合打包存儲一些屬性信息。

一條控制命令包括控制設備編號、控制參數、控制量、控制前后的參數值和控制結果。利用Redis存儲一條控制指令時可以將Instruction作為key,并用Hash結構存儲指令的具體信息[17],詳見表1。

4.2 Web應用程序

Web應用程序一般使用Java完成后臺程序編寫,后臺程序的功能包括允許建立WebSocket連接、通信及讀寫Redis。Web程序將控制命令寫入Redis,并將結果傳送至終端。Web應用程序流程如圖5所示。

后臺使用WebSocket協議建立連接的流程[18]為:

步驟1瀏覽器發出連接請求。

步驟2創建WebSocket實例。

步驟3 websocket.onopen= function()//建立連接

websocket.send( message) ll發送消息。

步驟4 websocket.onmessage= function( event)//接受信息。

步驟5 websocket.onclose= function()//關閉連接。

步驟6 websocket.close()//斷開連接。

后臺服務器使用Redis操作流程[19]為:

步驟1采用后端模式啟動Redis,默認端口號6379。

步驟2通過創建Jedis類的對象連接Redis服務器,代碼如下:

private Jedis jedis;

private JedisPool jedisPool;//創建Jedis連接池對象

JedisPoolConfig config;//創建配置對象

jedisPool= new JedisPool(config, IP, 6379);//配置Je-dis連接池

步驟3使用Jedis類中hset方法操作Redis中hash結構數據,具體如下:

jedis.hset( key,field,value);//將表一中hash結構的控制命令key值對應的每一對field-value值寫入Redis中。

步驟4讀取控制結果,操作代碼如下:

Jedis.hmget(“Instruction”,“Result”);

4.3 采集控制程序

采集控制程序一般由C++編寫,采集控制程序的作用包括數據采集、控制命令和結果傳輸。從Redis讀取命令送至現場控制模塊,再將結果寫入Redis中供Web程序讀取。采集控制程序的流程如圖6所示。

采集控制程序使用Redis操作,步驟如下:

(1) redisContext* redisConnect (const char* ip, intport);//連接Redis。

(2) void* redisCommand( redisContext*c, const char*format--);//執行Redis命令,第一個參數是連接Redis時的返回值,后一個是需要的Redis語句,代碼如下:

HCETALL“key”;//獲取Redis中的命令

HMSET“key" -‘field" -‘value”[“field" -‘value”…]/,將命令和結果存入Redis

4.4 界面介紹

整體系統包括服務監控程序與Web頁面。服務監控程序用來監控程序運行狀況,Web頁面實現空調數據查看以及空調運行控制,具體運行界面如圖7所示。

5 結語

本文主要介紹了智能空調遠程控制系統設計和實現,針對現有系統實時性不佳的問題,從通信傳輸和數據庫讀寫兩方面人手,提出一種結合WebSocket與Redis技術的控制系統,WebSocket解決終端傳輸實時性的問題,減少通信連接開銷,使控制命令可以同步傳輸;Redis令讀取存儲系統更高效,采集控制程序和Web程序能更快讀取存儲的控制命令。用戶可在多種瀏覽器設備上利用該系統進行遠程控制,大幅提升了系統智能性和便捷性,也降低了系統開發和移植成本。本文系統還有待進一步改進空間,下一步可從數據傳輸安全性進行深入研究,提高數據網絡傳輸可靠性,也可從控制智能化人手,探究如何更加智能地控制空調,使空調運行參數符合用戶邏輯。

參考文獻:

[1]郝寶智,廉小親,王曉冰,等.基于無線通信組件的空調遠程控制系統[J].測控技術,2017,36(9):100-104+118.

[2] 王耀青,解聰.基于Android的空調遠程控制系統[J].現代電子技術,2018,41( 22):30-33.

[3]趙宏林,廉小親,郝寶智,等.基于物聯網云平臺的空調遠程控制系統[J].計算機工程與設計,2017,38(1):265-270。

[4] 張娟榮,屈昕鵬,基于ARM的空調遠程控制系統設計[J].自動化與儀器儀表,2017( 10):99-100+103.

[5] 陳懷忠,何仁初.基于物聯網的紡織空調智能化監控系統設計[J]上海紡織科技2018,46( 7):59-62.

[6] 廉小親,周棟,成開元,等.基于NB-IoT的空調遠程控制系統設計及實現[J].測控技術,2018,37(5):51-55.

[7] 張凡.Web應用程序漏洞檢測與防護技術研究[D].南京:南京郵電大學,2017.

[8] 翁壯.基于HTTP/2協議的Web應用優化及性能測試[D].北京:北京工業大學,2017.

[9]張珊.基于HTTP的可靠性測試腳本生成的研究與實現[D].北京:北京郵電大學,2017.

[10]萬可迭.基于WebSocket的水泥廠動設備的全平臺狀態監測系統的研究[D].杭州:浙江大學,2018.

[11] 潘峰,王笑天,宋鈺濤,等.基于Redis與WebSocket的戰場態勢

實時推送方案設計及實現[J].軟件導刊,2018,17( 7):143-146.

[12] 馬斌.Redis在手機銀行系統中的應用研究[D].蘭州:蘭州理工大學,2018.

[13]楊旸.基于Redis的Thrift緩存機制設計[J].軟件導刊,2016,15( 03):29-32.

[14] 李棟.Redis內存數據庫在電力交易中的研究與應用[D].大連:大連理工大學,2018.

[15] 曾泉勻,基于Redis的分布式消息服務的設計與實現[D].北京:北京郵電大學,2014.

[16] 曾超宇,李金香.Redis在高速緩存系統中的應用[J].微型機與應用,2013,32( 12):11-13.

[17] 孫超.Redis內存數據庫在智慧消防系統設計中的應用[J].網絡安全技術與應用,2018(8):103-105.

[18] 歐陽文臣.基于Redis技術的分布式緩存電商平臺設計與實現[D].南昌:南昌大學,2018.

[19]單振華,王舒憬,強杰.基于WehSocket的智能家居遠程控制系統的實現[J].電子技術應用,2017,43( 10):124-127.

(責任編輯:江艷)

作者簡介:桂成杰(1994-),男,東華大學信息科學與技術學院碩士研究生,研究方向為智能控制與優化;曾獻輝(1974-),男,博士,東華大學信息科學與技術學院副教授、碩士生導師,研究方向為智能控制與優化。本文通訊作者:曾獻輝。

主站蜘蛛池模板: 美女内射视频WWW网站午夜| 色悠久久久| 特级做a爰片毛片免费69| 久久亚洲精少妇毛片午夜无码| 精品无码视频在线观看| 国产成人一区免费观看| 狠狠v日韩v欧美v| 日本三区视频| 天天综合天天综合| 亚洲高清在线天堂精品| 99视频国产精品| 国产小视频a在线观看| 不卡午夜视频| 久久综合丝袜日本网| 中文字幕亚洲乱码熟女1区2区| 麻豆国产精品视频| 一级片一区| 福利视频一区| 99无码中文字幕视频| 日韩大片免费观看视频播放| 国产不卡国语在线| 国产亚洲欧美在线视频| 国产一级毛片网站| 亚洲综合久久成人AV| 国产日本视频91| 亚洲欧州色色免费AV| 福利在线不卡一区| 国产成人无码Av在线播放无广告| 黄色免费在线网址| 成人无码区免费视频网站蜜臀| 亚洲国产黄色| 五月天在线网站| 日韩高清成人| 成人国产一区二区三区| 精品撒尿视频一区二区三区| 亚洲第一天堂无码专区| 国产AV无码专区亚洲A∨毛片| 欧美日韩另类国产| 一本无码在线观看| 不卡国产视频第一页| 日韩欧美国产中文| 动漫精品啪啪一区二区三区| 日日拍夜夜操| 精品夜恋影院亚洲欧洲| 精品国产中文一级毛片在线看| 一级在线毛片| 欧美日韩中文国产| 美女国内精品自产拍在线播放| 亚洲视频二| 亚州AV秘 一区二区三区| 国产亚洲精品91| 亚洲中字无码AV电影在线观看| 国产乱人乱偷精品视频a人人澡| 婷婷中文在线| 亚洲欧美另类日本| 99在线免费播放| 91激情视频| 国产大全韩国亚洲一区二区三区| 亚洲精品在线影院| 又爽又大又黄a级毛片在线视频| 国产在线观看精品| 欧美全免费aaaaaa特黄在线| 尤物亚洲最大AV无码网站| 国产导航在线| 日韩不卡免费视频| 欧美一级黄片一区2区| 亚洲成人一区二区三区| 97在线观看视频免费| 日韩国产一区二区三区无码| 国产精品区网红主播在线观看| www亚洲天堂| 国产青青操| 国产成人区在线观看视频| 一区二区三区成人| 亚洲不卡网| 国产成a人片在线播放| 91无码人妻精品一区二区蜜桃| 91色爱欧美精品www| 亚洲国内精品自在自线官| 国产中文一区二区苍井空| 欧美色综合网站| 98精品全国免费观看视频|