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

基于Netty的農業物聯網服務器系統設計

2019-07-03 02:13:26趙華飛徐踐張娜
現代農業科技 2019年9期
關鍵詞:數據庫

趙華飛 徐踐 張娜

摘要? ? 為了方便對溫室環境的監控和控制,使用Netty網絡框架設計了一個農業物聯網服務器系統,能夠簡化物聯網服務器端的開發,實現下位機與上位機的實時通信。本文闡述了該系統的工作原理和總體設計,以期為實現大棚農作物生長的智能化和信息化管理。

關鍵詞? ? 農業物聯網;系統設計;Netty;數據庫

中圖分類號? ? S126? ? ? ? 文獻標識碼? ? A? ? ? ? 文章編號? ?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

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

目前,我國農業大棚作物生長管理主要以人工為主,工作量大且生產管理不精細。本文結合物聯網技術[3],設計了溫室環境監控系統,可對大棚內農作物生長進行遠程終端無線監控,實現大棚農作物生長的智能化和信息化管理,以期提高設施農業大棚農作物生產效率和農產品品質。

1? ? 系統工作原理

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

由于下位機設備一般都是低功耗、低內存、芯片級的設備,支持的網絡協議較為底層,同時,由于地理位置的原因,設備所處的網絡環境一般較差,因而不適合使用HTTP等高級協議傳輸數據。TCP/IP協議是面向連接的協議,支持雙向通信,采用此協議可以實時采集下位機的在線狀態,在下位機上報數據給服務器的同時,服務器也可以對下位機下發數據,實現遠程控制[7]。本系統使用Java語言和Netty網絡框架實現了上、下位機之間的通信過程。

2? ? 系統設計

2.1? ? 總體設計

本系統使用到的開源技術主要有Java語言、MySQL數據庫、Redis數據庫和Python語言。本系統主要分為2個模塊:WEB服務器部分和TCP服務器部分,由于物聯網應用主要在TCP服務器部分,現對TCP服務器介紹如下。本系統的總體設計如圖1所示。

2.2? ? 數據傳輸與處理

由圖1的流程可知,下位機連接并將數據發送給TCP服務器,TCP服務器收到數據后解析并將數據存入MySQL數據庫中,同時將設備的在線狀態寫入Redis數據庫中。用戶通過瀏覽器網頁可以從MySQL數據庫中查詢到下位機上報的數據,也可通過網頁發送指令給下位機,為了將指令正確地傳送到相應的下位機中,使用了Redis隊列保存指令數據,TCP服務器會檢查Redis隊列的狀態,如果隊列中有數據,則會讀取出并下發給指定的下位機。

Netty搭建服務端,僅需要綁定端口號、配置服務參數、啟動服務即可。下面的代碼就實現了一個服務端主程序。

TCP/IP協議是流式的數據傳輸協議,數據間是連續的,因而需要上位機和下位機定義并同時使用一種格式的數據定義。本次數據定義為:一是采用換行符作為2次數據之間間隔;二是采用逗號作為一次數據內部之間的間隔。

對于以上的需求,Netty已經有了內置的支持,在pipeline中添加按行的分割器即可,如下:

pipeline.addLast("framer",new DelimiterBasedFrameDeco

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

如果有其他的數據切割需求,也可以添加自定義的分隔符。需要注意的是,此處的分隔符不能和數據可能出現的字符相同,否則會導致數據的完整性被破壞。對于數據內部的分隔,在獲取字符串數據之后對字符串自定義分隔即可。

為了方便記錄下位機的在線狀態和向指定的下位機發送指令,需要下位機的id和連接socket對應,在此使用同步哈希表ConcurrentHashMap,防止多線程同時修改數據導致數據錯誤。Netty的ChannelInboundHandler類提供了接入、離線、讀消息、寫消息的函數,只需要繼承這個類并重寫這些函數即可實現這些功能。channelActive函數在下位機接入時被調用,當下位機連接到服務器后就會觸發這個函數執行,在這個函數內部可以將連接的id和socket關系對應,方便后續對這個下位機連接的操作。channelInActive函數在下位機離線的時候被調用,在函數內部可以將哈希表中的此下位機的id對應關系刪除,以明確此下位機已經下線。Chan-nelRead函數在下位機發送數據時會被調用,在函數內部對數據進行解析、處理,最后將數據寫入MySQL數據庫中。

Redis(Remote Dictionary Server)基于遠程字典服務,是非關系型數據庫(Not Only SQL,NoSQL)產品之一,它支持網絡、key-value模型等存儲系統,可用作數據庫、高速緩存和消息隊列代理。其支持的存儲value類型包括string(字符串)、list(鏈表)、set(無序集合)、zset(sorted set有序集合)和hash(哈希表),也可將Redis看成一個內存數據結構服務器[8]。

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

2.3? ? 數據展示

下位機和TCP服務器采集到了大量的數據,需要向用戶展示出來,因而本系統的WEB部分負責對用戶展示數據,提供控制下位機的按鈕,用戶不需要關注TCP服務器的存在,可以通過頁面的按鈕間接向下位機發送指令。現使用Python語言和Django框架開發了一個數據展示頁面,用戶可以查看各個下位機上報的數據,也可對下位機進行指令下發。數據展示頁面如圖2所示。

3? ? 結語

通過對農業物聯網需求和技術的學習和梳理,設計和開發了一個輕量級的農業物聯網服務器系統,能夠實現下位機的快速接入,由于采用支持長連接和雙向通信的TCP/IP協議,本系統可以實時與下位機進行通信,提高了對溫室的控制效率。本系統具有很強的可擴展性,只要是使用相同的數據格式定義,就可以接入本系統。對于其他的數據格式定義,本系統也僅需簡單修改數據解析的代碼就可以支持。

4? ? 參考文獻

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

[2] 熊松.基于物聯網技術的農業大棚智能管理研究[J].天津科技,2017,44(6):78-80.

[3] 劉海泉,楊盛泉,黃姝娟,等.基于物聯網技術的溫室大棚測量與控制系統的設計[J].價值工程,2017(6):108-110.

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

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

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

[7] W.RichardStevens.TCP/IP協議詳解[M].北京:機械工業出版社,2000.

[8] 梅玉娜,馮東,李展,等.基于Redis的網絡大學平臺性能優化研究[J].電力信息與通信技術,2016,14(12):112-115.

基金項目? ?糧經作物產業技術體系北京市創新團隊(BAIC09-2018)。

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

*通信作者

收稿日期? ?2019-01-10

猜你喜歡
數據庫
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
兩種新的非確定數據庫上的Top-K查詢
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
數據庫
財經(2015年3期)2015-06-09 17:41:31
數據庫
財經(2014年21期)2014-08-18 01:50:18
數據庫
財經(2014年6期)2014-03-12 08:28:19
數據庫
財經(2013年6期)2013-04-29 17:59:30
主站蜘蛛池模板: 亚洲人在线| 97成人在线视频| 精品亚洲国产成人AV| 亚洲无限乱码一二三四区| 免费一级全黄少妇性色生活片| 亚洲第一成年网| 欧美日在线观看| 无码精品一区二区久久久| 老司国产精品视频| 国产精品久久久精品三级| 日韩精品无码不卡无码| 日本午夜在线视频| 不卡午夜视频| 国产精品毛片一区视频播| 欧美区国产区| 六月婷婷激情综合| 欧美性精品| 一级毛片在线播放| 日韩成人在线一区二区| 丁香六月综合网| 成人久久18免费网站| 毛片大全免费观看| 国产噜噜噜视频在线观看 | 992tv国产人成在线观看| 国产亚洲精品97AA片在线播放| 国产精品hd在线播放| 日本一本在线视频| 欧美三级不卡在线观看视频| 欧美午夜在线观看| 国产福利小视频在线播放观看| 成人va亚洲va欧美天堂| 日韩欧美91| 国内精品免费| 亚洲一区二区三区国产精品 | 国产性猛交XXXX免费看| 麻豆AV网站免费进入| 国产三区二区| 成人午夜视频网站| 爆操波多野结衣| 丁香五月婷婷激情基地| 欧洲成人免费视频| 婷婷五月在线| 精品国产香蕉在线播出| 亚洲AⅤ综合在线欧美一区| 一区二区三区四区精品视频| 国产成人三级| 色婷婷狠狠干| 亚亚洲乱码一二三四区| 日韩国产综合精选| 国产肉感大码AV无码| 国产日韩欧美成人| 99精品伊人久久久大香线蕉| 成人亚洲天堂| 国产91小视频在线观看| 久久久精品国产SM调教网站| 亚洲婷婷丁香| av大片在线无码免费| 亚洲无限乱码| 久久婷婷五月综合色一区二区| 国产一区二区三区视频| 99尹人香蕉国产免费天天拍| 国产资源免费观看| 色婷婷电影网| 婷五月综合| 91精品国产麻豆国产自产在线| 国产微拍精品| 国产无码精品在线| 91久久大香线蕉| 亚洲Va中文字幕久久一区 | 亚洲一区波多野结衣二区三区| 亚洲天堂免费观看| 亚洲VA中文字幕| 91久久国产热精品免费| 国产一区免费在线观看| 男女男精品视频| 手机在线看片不卡中文字幕| 2020国产免费久久精品99| 国产三级精品三级在线观看| 亚洲另类国产欧美一区二区| 国产成人1024精品| 免费一级α片在线观看| 午夜国产小视频|