亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Netty的農(nóng)業(yè)物聯(lián)網(wǎng)服務(wù)器系統(tǒng)設(shè)計(jì)

        2019-07-03 02:13:26趙華飛徐踐張娜
        現(xiàn)代農(nóng)業(yè)科技 2019年9期
        關(guān)鍵詞:農(nóng)業(yè)物聯(lián)網(wǎng)系統(tǒng)設(shè)計(jì)數(shù)據(jù)庫(kù)

        趙華飛 徐踐 張娜

        摘要? ? 為了方便對(duì)溫室環(huán)境的監(jiān)控和控制,使用Netty網(wǎng)絡(luò)框架設(shè)計(jì)了一個(gè)農(nóng)業(yè)物聯(lián)網(wǎng)服務(wù)器系統(tǒng),能夠簡(jiǎn)化物聯(lián)網(wǎng)服務(wù)器端的開發(fā),實(shí)現(xiàn)下位機(jī)與上位機(jī)的實(shí)時(shí)通信。本文闡述了該系統(tǒng)的工作原理和總體設(shè)計(jì),以期為實(shí)現(xiàn)大棚農(nóng)作物生長(zhǎng)的智能化和信息化管理。

        關(guān)鍵詞? ? 農(nóng)業(yè)物聯(lián)網(wǎng);系統(tǒng)設(shè)計(jì);Netty;數(shù)據(jù)庫(kù)

        中圖分類號(hào)? ? S126? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼? ? A? ? ? ? 文章編號(hào)? ?1007-5739(2019)09-0254-02

        Abstract? ? In order to facilitate the monitoring and control of the greenhouse environment,an agricultural Internet of things server system was designed using Netty network framework,which could simplify the development of the Internet of things server side and realize real-time communication between the sensor devices and the servers.This paper described the working principle and overall design of the system,in order to realize the intelligent and information management of greenhouse crop growth.

        Key words? ? agricultural Internet of things;system design;Netty;database

        當(dāng)前,我國(guó)已是設(shè)施作物栽培第一大國(guó),溫室承擔(dān)著生產(chǎn)各類蔬菜、花卉等任務(wù)[1]。在糧食安全日益重要的今天,提高溫室普及率和管理水平有助于我國(guó)糧食安全自主可控。由于溫室大棚不受外界氣候以及地域等因素的制約,是未來(lái)農(nóng)作物種植的發(fā)展趨勢(shì)。大棚內(nèi)的溫濕度、CO2濃度以及光照度等環(huán)境參數(shù)是影響農(nóng)作物生長(zhǎng)的主要因素[2]。因此,通過(guò)對(duì)大棚內(nèi)環(huán)境參數(shù)和植物參數(shù)的采集,能夠做出有效決策,同時(shí)對(duì)溫室相關(guān)設(shè)備的控制能夠及時(shí)調(diào)節(jié)溫室環(huán)境參數(shù),為植物生長(zhǎng)提供適宜的環(huán)境條件。

        目前,我國(guó)農(nóng)業(yè)大棚作物生長(zhǎng)管理主要以人工為主,工作量大且生產(chǎn)管理不精細(xì)。本文結(jié)合物聯(lián)網(wǎng)技術(shù)[3],設(shè)計(jì)了溫室環(huán)境監(jiān)控系統(tǒng),可對(duì)大棚內(nèi)農(nóng)作物生長(zhǎng)進(jìn)行遠(yuǎn)程終端無(wú)線監(jiān)控,實(shí)現(xiàn)大棚農(nóng)作物生長(zhǎng)的智能化和信息化管理,以期提高設(shè)施農(nóng)業(yè)大棚農(nóng)作物生產(chǎn)效率和農(nóng)產(chǎn)品品質(zhì)。

        1? ? 系統(tǒng)工作原理

        溫室環(huán)境監(jiān)控系統(tǒng)采用Netty網(wǎng)絡(luò)框架作為底層框架。Netty是基于Java NIO的通信框架,具有高可用性、高擴(kuò)展性和高可制定性等特性,已經(jīng)在各大企業(yè)得到應(yīng)用[4]。基于系統(tǒng)對(duì)用戶量并發(fā)的需要,由于傳統(tǒng)阻塞IO(Blocking IO,BIO)無(wú)法承受大量客戶端的并發(fā)連接,系統(tǒng)采用非阻塞IO(Non-blocking IO,NIO)進(jìn)行高并發(fā)、高負(fù)載的開發(fā)[5]。NIO采用反應(yīng)器(Reactor)模式,1個(gè)Reactor線程可聚合1個(gè)多路復(fù)用器Selector,可注冊(cè)、監(jiān)聽和輪詢成千上萬(wàn)個(gè)客戶端的連接[6]。

        由于下位機(jī)設(shè)備一般都是低功耗、低內(nèi)存、芯片級(jí)的設(shè)備,支持的網(wǎng)絡(luò)協(xié)議較為底層,同時(shí),由于地理位置的原因,設(shè)備所處的網(wǎng)絡(luò)環(huán)境一般較差,因而不適合使用HTTP等高級(jí)協(xié)議傳輸數(shù)據(jù)。TCP/IP協(xié)議是面向連接的協(xié)議,支持雙向通信,采用此協(xié)議可以實(shí)時(shí)采集下位機(jī)的在線狀態(tài),在下位機(jī)上報(bào)數(shù)據(jù)給服務(wù)器的同時(shí),服務(wù)器也可以對(duì)下位機(jī)下發(fā)數(shù)據(jù),實(shí)現(xiàn)遠(yuǎn)程控制[7]。本系統(tǒng)使用Java語(yǔ)言和Netty網(wǎng)絡(luò)框架實(shí)現(xiàn)了上、下位機(jī)之間的通信過(guò)程。

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

        2.1? ? 總體設(shè)計(jì)

        本系統(tǒng)使用到的開源技術(shù)主要有Java語(yǔ)言、MySQL數(shù)據(jù)庫(kù)、Redis數(shù)據(jù)庫(kù)和Python語(yǔ)言。本系統(tǒng)主要分為2個(gè)模塊:WEB服務(wù)器部分和TCP服務(wù)器部分,由于物聯(lián)網(wǎng)應(yīng)用主要在TCP服務(wù)器部分,現(xiàn)對(duì)TCP服務(wù)器介紹如下。本系統(tǒng)的總體設(shè)計(jì)如圖1所示。

        2.2? ? 數(shù)據(jù)傳輸與處理

        由圖1的流程可知,下位機(jī)連接并將數(shù)據(jù)發(fā)送給TCP服務(wù)器,TCP服務(wù)器收到數(shù)據(jù)后解析并將數(shù)據(jù)存入MySQL數(shù)據(jù)庫(kù)中,同時(shí)將設(shè)備的在線狀態(tài)寫入Redis數(shù)據(jù)庫(kù)中。用戶通過(guò)瀏覽器網(wǎng)頁(yè)可以從MySQL數(shù)據(jù)庫(kù)中查詢到下位機(jī)上報(bào)的數(shù)據(jù),也可通過(guò)網(wǎng)頁(yè)發(fā)送指令給下位機(jī),為了將指令正確地傳送到相應(yīng)的下位機(jī)中,使用了Redis隊(duì)列保存指令數(shù)據(jù),TCP服務(wù)器會(huì)檢查Redis隊(duì)列的狀態(tài),如果隊(duì)列中有數(shù)據(jù),則會(huì)讀取出并下發(fā)給指定的下位機(jī)。

        Netty搭建服務(wù)端,僅需要綁定端口號(hào)、配置服務(wù)參數(shù)、啟動(dòng)服務(wù)即可。下面的代碼就實(shí)現(xiàn)了一個(gè)服務(wù)端主程序。

        TCP/IP協(xié)議是流式的數(shù)據(jù)傳輸協(xié)議,數(shù)據(jù)間是連續(xù)的,因而需要上位機(jī)和下位機(jī)定義并同時(shí)使用一種格式的數(shù)據(jù)定義。本次數(shù)據(jù)定義為:一是采用換行符作為2次數(shù)據(jù)之間間隔;二是采用逗號(hào)作為一次數(shù)據(jù)內(nèi)部之間的間隔。

        對(duì)于以上的需求,Netty已經(jīng)有了內(nèi)置的支持,在pipeline中添加按行的分割器即可,如下:

        pipeline.addLast("framer",new DelimiterBasedFrameDeco

        der(1024,Delimiters.lineDelimiter()));

        如果有其他的數(shù)據(jù)切割需求,也可以添加自定義的分隔符。需要注意的是,此處的分隔符不能和數(shù)據(jù)可能出現(xiàn)的字符相同,否則會(huì)導(dǎo)致數(shù)據(jù)的完整性被破壞。對(duì)于數(shù)據(jù)內(nèi)部的分隔,在獲取字符串?dāng)?shù)據(jù)之后對(duì)字符串自定義分隔即可。

        為了方便記錄下位機(jī)的在線狀態(tài)和向指定的下位機(jī)發(fā)送指令,需要下位機(jī)的id和連接socket對(duì)應(yīng),在此使用同步哈希表ConcurrentHashMap,防止多線程同時(shí)修改數(shù)據(jù)導(dǎo)致數(shù)據(jù)錯(cuò)誤。Netty的ChannelInboundHandler類提供了接入、離線、讀消息、寫消息的函數(shù),只需要繼承這個(gè)類并重寫這些函數(shù)即可實(shí)現(xiàn)這些功能。channelActive函數(shù)在下位機(jī)接入時(shí)被調(diào)用,當(dāng)下位機(jī)連接到服務(wù)器后就會(huì)觸發(fā)這個(gè)函數(shù)執(zhí)行,在這個(gè)函數(shù)內(nèi)部可以將連接的id和socket關(guān)系對(duì)應(yīng),方便后續(xù)對(duì)這個(gè)下位機(jī)連接的操作。channelInActive函數(shù)在下位機(jī)離線的時(shí)候被調(diào)用,在函數(shù)內(nèi)部可以將哈希表中的此下位機(jī)的id對(duì)應(yīng)關(guān)系刪除,以明確此下位機(jī)已經(jīng)下線。Chan-nelRead函數(shù)在下位機(jī)發(fā)送數(shù)據(jù)時(shí)會(huì)被調(diào)用,在函數(shù)內(nèi)部對(duì)數(shù)據(jù)進(jìn)行解析、處理,最后將數(shù)據(jù)寫入MySQL數(shù)據(jù)庫(kù)中。

        Redis(Remote Dictionary Server)基于遠(yuǎn)程字典服務(wù),是非關(guān)系型數(shù)據(jù)庫(kù)(Not Only SQL,NoSQL)產(chǎn)品之一,它支持網(wǎng)絡(luò)、key-value模型等存儲(chǔ)系統(tǒng),可用作數(shù)據(jù)庫(kù)、高速緩存和消息隊(duì)列代理。其支持的存儲(chǔ)value類型包括string(字符串)、list(鏈表)、set(無(wú)序集合)、zset(sorted set有序集合)和hash(哈希表),也可將Redis看成一個(gè)內(nèi)存數(shù)據(jù)結(jié)構(gòu)服務(wù)器[8]。

        為了方便數(shù)據(jù)在2個(gè)服務(wù)之間傳輸,使用了Redis數(shù)據(jù)庫(kù)作為消息系統(tǒng),WEB服務(wù)和TCP服務(wù)可不用部署在同一個(gè)服務(wù)器上,只需這2個(gè)服務(wù)都可以都訪問Redis數(shù)據(jù)庫(kù)即可,提高了系統(tǒng)的擴(kuò)展性、可用性和安全性。本系統(tǒng)使用了消息隊(duì)列l(wèi)ist儲(chǔ)存對(duì)下位機(jī)的指令,使用哈希表hash存儲(chǔ)設(shè)備的在線狀態(tài)。本系統(tǒng)的list設(shè)計(jì)為一個(gè)先進(jìn)先出的隊(duì)列,將按照寫入順序向下位機(jī)下發(fā)指令,Redis提供了一個(gè)阻塞讀取的功能(如brpop函數(shù)),使用此功能防止頻繁讀取隊(duì)列,當(dāng)隊(duì)列中有數(shù)據(jù)寫入時(shí),才會(huì)觸發(fā)。本系統(tǒng)需要記錄下位機(jī)的在線狀態(tài),在Redis中可以使用普通的key-value格式記錄每個(gè)下位機(jī)的狀態(tài),但若有大量的下位機(jī)需要管理時(shí),就不便于操作,因而選擇hash結(jié)構(gòu)來(lái)存儲(chǔ)這類數(shù)據(jù)。Hash 結(jié)構(gòu)類似于普通的字符串key-value格式,但是其value是作為對(duì)象可以被訪問的,因而適合于存儲(chǔ)對(duì)象,比如有一個(gè)名為h_devices的hash,對(duì)象內(nèi)部field為deivce_{id},value為在線狀態(tài),其初始化或賦值key,field的命令為:HS-ET key field value,獲取指定key的field的命令為:HGET key field。

        2.3? ? 數(shù)據(jù)展示

        下位機(jī)和TCP服務(wù)器采集到了大量的數(shù)據(jù),需要向用戶展示出來(lái),因而本系統(tǒng)的WEB部分負(fù)責(zé)對(duì)用戶展示數(shù)據(jù),提供控制下位機(jī)的按鈕,用戶不需要關(guān)注TCP服務(wù)器的存在,可以通過(guò)頁(yè)面的按鈕間接向下位機(jī)發(fā)送指令。現(xiàn)使用Python語(yǔ)言和Django框架開發(fā)了一個(gè)數(shù)據(jù)展示頁(yè)面,用戶可以查看各個(gè)下位機(jī)上報(bào)的數(shù)據(jù),也可對(duì)下位機(jī)進(jìn)行指令下發(fā)。數(shù)據(jù)展示頁(yè)面如圖2所示。

        3? ? 結(jié)語(yǔ)

        通過(guò)對(duì)農(nóng)業(yè)物聯(lián)網(wǎng)需求和技術(shù)的學(xué)習(xí)和梳理,設(shè)計(jì)和開發(fā)了一個(gè)輕量級(jí)的農(nóng)業(yè)物聯(lián)網(wǎng)服務(wù)器系統(tǒng),能夠?qū)崿F(xiàn)下位機(jī)的快速接入,由于采用支持長(zhǎng)連接和雙向通信的TCP/IP協(xié)議,本系統(tǒng)可以實(shí)時(shí)與下位機(jī)進(jìn)行通信,提高了對(duì)溫室的控制效率。本系統(tǒng)具有很強(qiáng)的可擴(kuò)展性,只要是使用相同的數(shù)據(jù)格式定義,就可以接入本系統(tǒng)。對(duì)于其他的數(shù)據(jù)格式定義,本系統(tǒng)也僅需簡(jiǎn)單修改數(shù)據(jù)解析的代碼就可以支持。

        4? ? 參考文獻(xiàn)

        [1] 何麗虹.我國(guó)設(shè)施園藝栽培面積已突破210萬(wàn)公頃[EB/OL].(2002-06-26)[2018-09-15].http://www.amic.agri.gov.cn/nxtwebfreamwork/html/0/1788.htm.

        [2] 熊松.基于物聯(lián)網(wǎng)技術(shù)的農(nóng)業(yè)大棚智能管理研究[J].天津科技,2017,44(6):78-80.

        [3] 劉海泉,楊盛泉,黃姝娟,等.基于物聯(lián)網(wǎng)技術(shù)的溫室大棚測(cè)量與控制系統(tǒng)的設(shè)計(jì)[J].價(jià)值工程,2017(6):108-110.

        [4] 魏瑩.基于Netty框架的智能終端與服務(wù)器通信的研究[D].西安:西安電子科技大學(xué),2017.

        [5] 李林峰.Netty權(quán)威指南[M].北京:電子工業(yè)出版社,2014:11-45.

        [6] 代超,鄧中亮.基于Netty的面向移動(dòng)終端的推送服務(wù)設(shè)計(jì)[J].軟件,2015(12):1-4.

        [7] W.RichardStevens.TCP/IP協(xié)議詳解[M].北京:機(jī)械工業(yè)出版社,2000.

        [8] 梅玉娜,馮東,李展,等.基于Redis的網(wǎng)絡(luò)大學(xué)平臺(tái)性能優(yōu)化研究[J].電力信息與通信技術(shù),2016,14(12):112-115.

        基金項(xiàng)目? ?糧經(jīng)作物產(chǎn)業(yè)技術(shù)體系北京市創(chuàng)新團(tuán)隊(duì)(BAIC09-2018)。

        作者簡(jiǎn)介? ?趙華飛(1990-),男,云南大理人,在讀碩士研究生。研究方向:農(nóng)業(yè)信息化。

        *通信作者

        收稿日期? ?2019-01-10

        猜你喜歡
        農(nóng)業(yè)物聯(lián)網(wǎng)系統(tǒng)設(shè)計(jì)數(shù)據(jù)庫(kù)
        數(shù)據(jù)庫(kù)
        NFC前景分析及其在農(nóng)業(yè)物聯(lián)網(wǎng)中的應(yīng)用實(shí)現(xiàn)
        東方教育(2016年8期)2017-01-17 21:00:32
        南通農(nóng)業(yè)物聯(lián)網(wǎng)發(fā)展現(xiàn)狀及其對(duì)策
        農(nóng)業(yè)物聯(lián)網(wǎng)技術(shù)的發(fā)展及應(yīng)用
        一種基于SATA硬盤陣列的數(shù)據(jù)存儲(chǔ)與控制系統(tǒng)設(shè)計(jì)研究
        工業(yè)熱電偶計(jì)量檢定系統(tǒng)設(shè)計(jì)
        基于物聯(lián)網(wǎng)的煤礦智能倉(cāng)儲(chǔ)與物流運(yùn)輸管理系統(tǒng)設(shè)計(jì)與應(yīng)用
        目標(biāo)特性測(cè)量雷達(dá)平臺(tái)建設(shè)構(gòu)想
        科技視界(2016年22期)2016-10-18 14:34:34
        數(shù)據(jù)庫(kù)
        數(shù)據(jù)庫(kù)
        精彩视频在线观看一区二区三区 | 亚洲av老熟女一区二区三区| 五月开心婷婷六月综合| 摸进她的内裤里疯狂揉她动图视频| 国产va在线观看免费| 午夜男女很黄的视频| av永久天堂一区二区三区| 午夜毛片不卡免费观看视频| 性久久久久久久| 丝袜美腿网站一区二区| 日韩精品成人一区二区三区久久久| 亚洲午夜经典一区二区日韩| 蜜桃视频插满18在线观看| 精品国产一二三产品区别在哪 | 91网红福利精品区一区二| 一区二区三区手机看片日本韩国| 国产三级黄色免费网站| 无码熟妇人妻av影音先锋| 国内精品伊人久久久久影院对白| 成人亚洲性情网站www在线观看| 亚洲中文字幕乱码免费| a级毛片毛片免费观看久潮喷| 少妇精品无码一区二区三区| 国产精品va无码一区二区| 亚洲国产一区二区三区最新| 国产精品丝袜美腿诱惑| 草逼短视频免费看m3u8| av 日韩 人妻 黑人 综合 无码 | 国产成人精品三级在线影院| 少妇的诱惑免费在线观看| 国产一级一厂片内射视频播放 | 男女啪啪无遮挡免费网站| 久久国产免费观看精品| 日韩精品一区二区三区免费观影| 日本午夜理论片在线观看| 欧美熟妇性xxx交潮喷| 亚洲综合色丁香婷婷六月图片 | 国产三级精品三级在专区中文| 大陆少妇一区二区三区 | 国产黄片一区视频在线观看 | 我要看免费久久99片黄色|