• 
    

    
    

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

      數(shù)據(jù)推送技術(shù)在溫室灌溉控制管理中的應(yīng)用

      2014-11-20 18:29:01蔚繼承李書琴楊麗麗
      湖北農(nóng)業(yè)科學(xué) 2014年18期

      蔚繼承+李書琴+楊麗麗

      摘要:基于Android移動(dòng)操作系統(tǒng)開發(fā)了具有實(shí)時(shí)數(shù)據(jù)顯示、報(bào)警數(shù)據(jù)推送、灌溉交互控制功能的溫室灌溉控制管理系統(tǒng)。該系統(tǒng)可以監(jiān)測(cè)溫室的土壤含水量和溫室溫度、濕度,當(dāng)溫室溫度數(shù)據(jù)超過(guò)所設(shè)定的溫濕度界限,以數(shù)據(jù)推送的方式將警報(bào)信息推送到移動(dòng)終端,在檢測(cè)到需要灌溉時(shí),也會(huì)以推送的形式向用戶發(fā)送灌溉確認(rèn)信息,形成交互性良好實(shí)時(shí)監(jiān)控平臺(tái)。經(jīng)實(shí)驗(yàn)證,在服務(wù)器端產(chǎn)生異常數(shù)據(jù)的情況下,客戶端能及時(shí)收到服務(wù)器發(fā)送的推送通知。相對(duì)于傳統(tǒng)的監(jiān)控系統(tǒng)軟件更符合計(jì)算移動(dòng)化的趨勢(shì),同時(shí)也為開發(fā)基于移動(dòng)設(shè)備的推送應(yīng)用提供了參考。

      關(guān)鍵詞:數(shù)據(jù)推送;溫室灌溉;Android;JPush

      中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):0439-8114(2014)18-4441-04

      溫室作為設(shè)施農(nóng)業(yè)的重要組成部分,為作物生長(zhǎng)提供了人造的、可精確控制的環(huán)境[1],在我國(guó)農(nóng)業(yè)生產(chǎn)上發(fā)揮著重要的作用。灌溉為作物生長(zhǎng)提供了所需的水分,所以如何提高灌溉質(zhì)量及灌溉過(guò)程管理的科學(xué)化水平一直是研究的熱點(diǎn)問(wèn)題。目前無(wú)線傳感器技術(shù)和通信技術(shù)的發(fā)展,為溫室環(huán)境監(jiān)測(cè)的自動(dòng)化與智能化提供了重要的技術(shù)支持,但傳統(tǒng)監(jiān)控系統(tǒng)需要在固定的監(jiān)控中心才能對(duì)系統(tǒng)進(jìn)行操作,使用便捷性差,并且溫室的最新數(shù)據(jù)也不能及時(shí)地反饋給管理人員?;诖?,移動(dòng)化溫室監(jiān)控軟件逐漸成為溫室監(jiān)控系統(tǒng)的發(fā)展方向,以Android系統(tǒng)為主的智能操作系統(tǒng)快速發(fā)展為溫室監(jiān)控軟件的移動(dòng)化提供了技術(shù)保障。在農(nóng)業(yè)生產(chǎn)上,利用移動(dòng)端進(jìn)行溫室環(huán)境數(shù)據(jù)的獲取和對(duì)灌溉設(shè)備進(jìn)行控制,可以很好地解決數(shù)據(jù)獲取實(shí)時(shí)性問(wèn)題,用戶隨時(shí)對(duì)溫室進(jìn)行監(jiān)控,了解溫室環(huán)境狀況和對(duì)溫室灌溉進(jìn)行管理。

      1 數(shù)據(jù)推送

      數(shù)據(jù)推送是服務(wù)器端主動(dòng)將信息發(fā)送到客戶端的技術(shù),基本思想是將客戶端主動(dòng)查詢改為服務(wù)器主動(dòng)發(fā)送消息,以將最新數(shù)據(jù)及時(shí)發(fā)送給客戶端為目標(biāo)[2]。在傳統(tǒng)基于互聯(lián)網(wǎng)的B/S應(yīng)用中,一般采用Ajax技術(shù)由客戶端定時(shí)去向服務(wù)器端發(fā)出請(qǐng)求,服務(wù)器端則響應(yīng)數(shù)據(jù),從而達(dá)到獲取服務(wù)器數(shù)據(jù)的目的。但客戶端無(wú)法得知服務(wù)器何時(shí)更新數(shù)據(jù),因此只能設(shè)置固定的時(shí)間間隔,不斷地發(fā)送請(qǐng)求,就會(huì)發(fā)送很多不必要的請(qǐng)求[3]。與傳統(tǒng)PC訪問(wèn)互聯(lián)網(wǎng)方式相比,移動(dòng)終端在操作便利性、流量與電量消耗等方面有更高的要求,所以對(duì)推送方式有更高的需求,要求實(shí)現(xiàn)真正服務(wù)器主動(dòng)推送。目前,移動(dòng)數(shù)據(jù)推送主要包括短信推送與IP推送兩種方式[4]。

      1.1 基于短信的推送

      在移動(dòng)網(wǎng)絡(luò)中,語(yǔ)音、短信、數(shù)據(jù)等工作在不同的信道中,而短信推送服務(wù)依賴短信通道進(jìn)行,其架構(gòu)如圖1所示?;诙滔⒌耐扑头绞?,其優(yōu)點(diǎn)在于速度快、不占用帶寬、實(shí)時(shí)性強(qiáng);缺點(diǎn)在于只有運(yùn)營(yíng)商才能提供短信推送服務(wù),且受短信息長(zhǎng)度限制,推送的信息量大小有限,在推送量大的情況下成本較高。同時(shí),用戶只能被動(dòng)的接收數(shù)據(jù),無(wú)法真正與服務(wù)器交互[4]。

      1.2 基于IP的推送

      基于IP的推送服務(wù)是應(yīng)用服務(wù)器通過(guò)網(wǎng)絡(luò)和終端用戶建立一個(gè)連接,服務(wù)器將一直保持這個(gè)連接狀態(tài),當(dāng)服務(wù)器有數(shù)據(jù)產(chǎn)生時(shí),可以及時(shí)將數(shù)據(jù)推送給客戶端。由于服務(wù)器與客戶端將一直保持連接,服務(wù)器推送數(shù)據(jù)相對(duì)比較容易控制,能夠完全控制推送數(shù)據(jù)的時(shí)間和頻率。在基于IP的傳統(tǒng)推送技術(shù)中,各應(yīng)用程序都與其服務(wù)服務(wù)器建立連接通信。當(dāng)有多個(gè)需要推送服務(wù)的應(yīng)用程序運(yùn)行時(shí),將會(huì)占用大量的系統(tǒng)資源,為解決這個(gè)問(wèn)題各系統(tǒng)開發(fā)商已推出相應(yīng)的推送解決方案,如Apple的APNS、微軟的WPPN、Google的C2DM服務(wù)等[5]。而這些將與服務(wù)器保持網(wǎng)絡(luò)連接,系統(tǒng)中多個(gè)應(yīng)用程序可以通過(guò)該服務(wù)收到其應(yīng)用服務(wù)器發(fā)送的數(shù)據(jù),減少了系統(tǒng)資源的消耗。基于IP的兩種推送方式如圖2所示。

      目前,Android系統(tǒng)中的C2DM服務(wù)器在國(guó)外,國(guó)內(nèi)使用不穩(wěn)定并且需要應(yīng)用程序綁定Google賬號(hào),造成了使用上的不方便。因此,國(guó)內(nèi)出現(xiàn)了不少第三方的推送服務(wù),本研究將采用其中比較優(yōu)秀的JPush(極光推送)來(lái)實(shí)現(xiàn)溫室中異常數(shù)據(jù)報(bào)警和灌溉交互操作中的數(shù)據(jù)推送。

      2 系統(tǒng)總體結(jié)構(gòu)

      采用基于無(wú)線通信網(wǎng)絡(luò)與嵌入式開發(fā)技術(shù),設(shè)計(jì)了一種針對(duì)溫室群的監(jiān)控系統(tǒng),移動(dòng)用戶可以通過(guò)3G網(wǎng)絡(luò)及時(shí)獲取溫室現(xiàn)場(chǎng)狀態(tài)及下達(dá)控制指令。同時(shí)采用數(shù)據(jù)推送技術(shù),在監(jiān)控客戶端程序不啟動(dòng)的情況下,通過(guò)系統(tǒng)的推送服務(wù)也能及時(shí)收到現(xiàn)場(chǎng)的異常數(shù)據(jù)。系統(tǒng)總體結(jié)構(gòu)如圖3所示。在傳統(tǒng)上下位機(jī)監(jiān)控的兩層結(jié)構(gòu)基礎(chǔ)上,擴(kuò)展多個(gè)溫室組成溫室群,增加了遠(yuǎn)程服務(wù)中心,形成一個(gè)由采集層、匯聚層、服務(wù)層和應(yīng)用層組成的四層結(jié)構(gòu)形式。

      從圖3所示的系統(tǒng)整體結(jié)構(gòu)圖可以看出,系統(tǒng)主要分4個(gè)部分:溫室現(xiàn)場(chǎng)的采集層,將溫室組成溫室群的匯聚層,提供數(shù)據(jù)存儲(chǔ)與管理控制的服務(wù)層,提供數(shù)據(jù)訪問(wèn)與控制操作的應(yīng)用層。

      1)采集層。溫室中參數(shù)采集節(jié)點(diǎn)的各種傳感器采集數(shù)據(jù)發(fā)送給匯聚層的溫室群控制中心,同時(shí)也根據(jù)溫室群控制中心的指令驅(qū)動(dòng)并控制溫室中的執(zhí)行機(jī)構(gòu)進(jìn)行灌溉。采集層基于ZigBee無(wú)線傳感器網(wǎng)絡(luò)技術(shù),組成整個(gè)灌溉控制的數(shù)據(jù)采集與傳輸網(wǎng)絡(luò),是整個(gè)系統(tǒng)的基礎(chǔ)和主體。

      2)匯聚層。匯聚層將多個(gè)溫室進(jìn)行集中,組成溫室群進(jìn)行統(tǒng)一控制。群控制中心的現(xiàn)場(chǎng)控制機(jī)負(fù)責(zé)向溫室現(xiàn)場(chǎng)的各種采集節(jié)點(diǎn)、閥門控制節(jié)點(diǎn)發(fā)送指令及接收節(jié)點(diǎn)返回的數(shù)據(jù),并向遠(yuǎn)程服務(wù)器發(fā)送溫室中采集節(jié)點(diǎn)采集的數(shù)據(jù),同時(shí)接收遠(yuǎn)程服務(wù)器的灌溉控制的各種指令,在整個(gè)系統(tǒng)中起到承上啟下的作用。

      3)服務(wù)層。服務(wù)層的遠(yuǎn)程服務(wù)器接收溫室現(xiàn)場(chǎng)的數(shù)據(jù),并存儲(chǔ)在數(shù)據(jù)庫(kù)中,計(jì)算模塊則根據(jù)用戶所選計(jì)算模型,調(diào)取溫室環(huán)境參數(shù)進(jìn)行運(yùn)算,然后將根據(jù)計(jì)算結(jié)果進(jìn)行灌溉控制操作。遠(yuǎn)程服務(wù)器通過(guò)群控制中心的現(xiàn)場(chǎng)控制機(jī)通過(guò)發(fā)送相關(guān)指令來(lái)打開溫室的灌溉控制閥門,實(shí)現(xiàn)灌溉控制。

      4)應(yīng)用層。對(duì)系統(tǒng)的操作與控制通過(guò)表現(xiàn)層完成,在本系統(tǒng)架構(gòu)中,表現(xiàn)層有兩種方式:基于Web和基于移動(dòng)應(yīng)用程序。溫室管理人員可通過(guò)智能設(shè)備對(duì)溫室狀態(tài)進(jìn)行及時(shí)了解,并能通過(guò)這些設(shè)備進(jìn)行灌溉控制,當(dāng)溫室中一些參數(shù)超過(guò)了所設(shè)定的范圍,也可以接收到相應(yīng)報(bào)警信息,以便及時(shí)處理。endprint

      3 溫室灌溉管理的數(shù)據(jù)推送

      3.1 數(shù)據(jù)推送流程

      作為溫室灌溉管理系統(tǒng)的組成重要部分,數(shù)據(jù)推送功能將遠(yuǎn)程服務(wù)器上中的數(shù)據(jù)通過(guò)推送服務(wù)器發(fā)送到Android監(jiān)控端,實(shí)現(xiàn)異常數(shù)據(jù)推送和灌溉推送,其主要流程如圖4所示。

      一旦有最新異常數(shù)據(jù)或灌溉通知,服務(wù)器端基于JPush的推送將會(huì)通過(guò)JPush的服務(wù)器及時(shí)地發(fā)送到Android端。利用Android系統(tǒng)自有的Intent機(jī)制,數(shù)據(jù)接收服務(wù)不再需要應(yīng)用程序持續(xù)運(yùn)行,系統(tǒng)在收到推送消息后,可以再啟動(dòng)應(yīng)用程序,降低了資源的消耗,用戶使用也更加方便??蛻舳私邮胀扑蛿?shù)據(jù)的主要流程如圖5所示。

      3.2 數(shù)據(jù)推送實(shí)現(xiàn)

      3.2.1 數(shù)據(jù)通信格式 在服務(wù)器與移動(dòng)終端采用建立在TCP/IP之上的HTTP協(xié)議進(jìn)行數(shù)據(jù)傳輸,由于其具有無(wú)連接狀態(tài)、簡(jiǎn)單快速,容易穿越防火墻等優(yōu)點(diǎn)。在客戶端與服務(wù)器交互過(guò)程中,采用HTTP協(xié)議既減小了資源的浪費(fèi),也節(jié)省了終端的網(wǎng)絡(luò)流量。JSON(Java script object notation,JSON)是一種輕量級(jí)的數(shù)據(jù)交換格式,具有易于閱讀和編寫,同時(shí)也易于機(jī)器解析和生成的特點(diǎn)。因此,系統(tǒng)選用JSON作為數(shù)據(jù)通信格式[6]。

      3.2.2 灌溉及異常推送功能 在遠(yuǎn)程服務(wù)器上,計(jì)算模塊根據(jù)計(jì)算模型計(jì)算出溫室所需灌溉水量,在數(shù)據(jù)庫(kù)中添加灌溉信息,推送服務(wù)程序?qū)?shù)據(jù)庫(kù)進(jìn)行輪詢,發(fā)現(xiàn)新的灌溉信息,則通過(guò)推送服務(wù)器發(fā)送通知給用戶。當(dāng)服務(wù)器收到超過(guò)預(yù)警值的溫室參數(shù)信息異常數(shù)據(jù)時(shí),啟動(dòng)推送功能,則通知推送服務(wù)器向用戶發(fā)出警告。JPush提供了相關(guān)推送API,調(diào)用此API即可以將數(shù)據(jù)從遠(yuǎn)程服務(wù)器發(fā)送到JPush服務(wù)器,JPush服務(wù)器收到請(qǐng)求后通過(guò)JPush的Socket將數(shù)據(jù)發(fā)送到Android設(shè)備上的應(yīng)用程序。推送過(guò)程偽代碼如下:

      #define BasicNameValuePair NVP

      PUSH_URL←"http://api.jpush.cn:8800/sendmsg/sendmsg"

      while(HAVE(data)){

      appkeys ←NVP("appkeys", "your appkeys")

      msg_type ←NVP("msg_type", "1")

      msg_cnt ←NVP("msg_content",data)

      platform ←NVP("platform","android")

      datas ←ArrayList()

      datas.add(appkeys)

      datas.add(msg_type)

      datas.add(msg_cnt)

      datas.add(platform)

      entity←UrlEncodedFormEntity(datas,"utf-8")

      post←HttpPost(PUSH_URL);

      post.setEntity(entity)

      client←ClientUtil.getNewHttpClient()

      client.execute(post)

      resEntity←reponse.getEntity()

      }

      JPush SDK提供了客戶端jpushService后臺(tái)服務(wù),收到推送數(shù)據(jù)后將由自定義Receiver處理。根據(jù)推送內(nèi)容的不同,在打開的不同的Activity中進(jìn)行相應(yīng)處理,將收到的異常數(shù)據(jù)以文件形式進(jìn)行保存,相應(yīng)灌溉通知?jiǎng)t為彈出確認(rèn)灌溉對(duì)話框。其偽代碼如下:

      void onReceive(Context context, Intent it){

      if(ACTION_NOTIFICATION_OPENED=it.getAction()) {

      bundle ← intent.getExtras();

      i ←new Intent(context,AlertActivity.class);

      i.setFlags(FLAG_ACTIVITY_NEW_TASK);

      context.startActivity(i);

      }

      elseif

      (ACTION_MESSAGE_RECEIVED=it.getAction()) {

      bundle←intent.getExtras();

      i ←new Intent(context,IrriActivity.class);

      i.setFlags(FLAG_ACTIVITY_NEW_TASK);

      context.startActivity(i);

      }

      }

      4 應(yīng)用效果

      監(jiān)控程序使用TabActivityGroup作為整體框架,并使用了Scrollable Tabs+Swipe實(shí)現(xiàn)了絢麗的滑動(dòng)效果,系統(tǒng)的用戶界面美觀,操作友好。當(dāng)服務(wù)器發(fā)現(xiàn)異常數(shù)據(jù),就將異常數(shù)據(jù)推送到手機(jī)。手機(jī)上JPush SDK的Jpush Service一直監(jiān)聽是否有新的推送,一旦接收到新的推送消息,自定義的Receiver將判斷推送數(shù)據(jù)的類型,從而會(huì)顯示報(bào)警信息或者灌溉確認(rèn)界面。異常數(shù)據(jù)的詳細(xì)信息,在推送到手機(jī)上時(shí)將寫入手機(jī)中的Sqlite數(shù)據(jù)庫(kù)中。當(dāng)通過(guò)系統(tǒng)打開通知中心時(shí),跳轉(zhuǎn)至異常數(shù)據(jù)警告頁(yè)面,可以查看所有的警告時(shí)間和詳情,如圖6所示。另一方面,服務(wù)器發(fā)現(xiàn)有新的灌溉通知,就將通知推送到手機(jī),推送到手機(jī)上的灌溉通知會(huì)觸發(fā)新的Activity,彈出一個(gè)選擇框,顯示灌溉時(shí)間,灌溉溫室,詢問(wèn)用戶是否確認(rèn)灌溉,具體如圖7所示。

      5 小結(jié)

      本研究介紹了在溫室灌溉控制管理中使用基于數(shù)據(jù)推送平臺(tái)的異常數(shù)據(jù)提示及灌溉交互控制方案,用以代替?zhèn)鹘y(tǒng)的基于短信方式的數(shù)據(jù)推送方式。經(jīng)實(shí)驗(yàn)證,在服務(wù)器端產(chǎn)生異常數(shù)據(jù)的情況下,客戶端能及時(shí)收到服務(wù)器發(fā)送的推送通知。相對(duì)于傳統(tǒng)的監(jiān)控系統(tǒng)軟件,符合計(jì)算移動(dòng)化的趨勢(shì),同時(shí)也為開發(fā)基于移動(dòng)設(shè)備的推送應(yīng)用提供了參考。

      參考文獻(xiàn):

      [1] 杜尚豐,李迎霞,馬承偉,等.中國(guó)溫室環(huán)境控制硬件系統(tǒng)研究進(jìn)展[J].農(nóng)業(yè)工程學(xué)報(bào),2004,20(1):7-12.

      [2] 陳 益,梁 軍,王 煒.服務(wù)器推送技術(shù)在氣象數(shù)據(jù)布中研究與應(yīng)用[J].廣西師范學(xué)院學(xué)院(自然科學(xué)版),2012,29(1):92-97.

      [3] 鄭 玲,鄭曉天.基于WebSocket的電力系統(tǒng)實(shí)時(shí)數(shù)據(jù)更新研究[J].計(jì)算機(jī)與現(xiàn)代化,2013(1):85-87.

      [4] 何少岳,徐曉東,馬祖苑.主動(dòng)推送技術(shù)在移動(dòng)協(xié)同教育中的應(yīng)用[J].現(xiàn)代教育技術(shù),2012,22(4):100-103.

      [5] 鄒 海,李 強(qiáng),邱慧麗.基于C2DM服務(wù)的云端推送研究與實(shí)現(xiàn)[J].計(jì) 算 機(jī) 技 術(shù) 與 發(fā) 展,2012,26(7):29-32.

      [6] 高 靜,段會(huì)川.JSON數(shù)據(jù)傳輸效率研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2011,32(7):2267-2270.

      3 溫室灌溉管理的數(shù)據(jù)推送

      3.1 數(shù)據(jù)推送流程

      作為溫室灌溉管理系統(tǒng)的組成重要部分,數(shù)據(jù)推送功能將遠(yuǎn)程服務(wù)器上中的數(shù)據(jù)通過(guò)推送服務(wù)器發(fā)送到Android監(jiān)控端,實(shí)現(xiàn)異常數(shù)據(jù)推送和灌溉推送,其主要流程如圖4所示。

      一旦有最新異常數(shù)據(jù)或灌溉通知,服務(wù)器端基于JPush的推送將會(huì)通過(guò)JPush的服務(wù)器及時(shí)地發(fā)送到Android端。利用Android系統(tǒng)自有的Intent機(jī)制,數(shù)據(jù)接收服務(wù)不再需要應(yīng)用程序持續(xù)運(yùn)行,系統(tǒng)在收到推送消息后,可以再啟動(dòng)應(yīng)用程序,降低了資源的消耗,用戶使用也更加方便??蛻舳私邮胀扑蛿?shù)據(jù)的主要流程如圖5所示。

      3.2 數(shù)據(jù)推送實(shí)現(xiàn)

      3.2.1 數(shù)據(jù)通信格式 在服務(wù)器與移動(dòng)終端采用建立在TCP/IP之上的HTTP協(xié)議進(jìn)行數(shù)據(jù)傳輸,由于其具有無(wú)連接狀態(tài)、簡(jiǎn)單快速,容易穿越防火墻等優(yōu)點(diǎn)。在客戶端與服務(wù)器交互過(guò)程中,采用HTTP協(xié)議既減小了資源的浪費(fèi),也節(jié)省了終端的網(wǎng)絡(luò)流量。JSON(Java script object notation,JSON)是一種輕量級(jí)的數(shù)據(jù)交換格式,具有易于閱讀和編寫,同時(shí)也易于機(jī)器解析和生成的特點(diǎn)。因此,系統(tǒng)選用JSON作為數(shù)據(jù)通信格式[6]。

      3.2.2 灌溉及異常推送功能 在遠(yuǎn)程服務(wù)器上,計(jì)算模塊根據(jù)計(jì)算模型計(jì)算出溫室所需灌溉水量,在數(shù)據(jù)庫(kù)中添加灌溉信息,推送服務(wù)程序?qū)?shù)據(jù)庫(kù)進(jìn)行輪詢,發(fā)現(xiàn)新的灌溉信息,則通過(guò)推送服務(wù)器發(fā)送通知給用戶。當(dāng)服務(wù)器收到超過(guò)預(yù)警值的溫室參數(shù)信息異常數(shù)據(jù)時(shí),啟動(dòng)推送功能,則通知推送服務(wù)器向用戶發(fā)出警告。JPush提供了相關(guān)推送API,調(diào)用此API即可以將數(shù)據(jù)從遠(yuǎn)程服務(wù)器發(fā)送到JPush服務(wù)器,JPush服務(wù)器收到請(qǐng)求后通過(guò)JPush的Socket將數(shù)據(jù)發(fā)送到Android設(shè)備上的應(yīng)用程序。推送過(guò)程偽代碼如下:

      #define BasicNameValuePair NVP

      PUSH_URL←"http://api.jpush.cn:8800/sendmsg/sendmsg"

      while(HAVE(data)){

      appkeys ←NVP("appkeys", "your appkeys")

      msg_type ←NVP("msg_type", "1")

      msg_cnt ←NVP("msg_content",data)

      platform ←NVP("platform","android")

      datas ←ArrayList()

      datas.add(appkeys)

      datas.add(msg_type)

      datas.add(msg_cnt)

      datas.add(platform)

      entity←UrlEncodedFormEntity(datas,"utf-8")

      post←HttpPost(PUSH_URL);

      post.setEntity(entity)

      client←ClientUtil.getNewHttpClient()

      client.execute(post)

      resEntity←reponse.getEntity()

      }

      JPush SDK提供了客戶端jpushService后臺(tái)服務(wù),收到推送數(shù)據(jù)后將由自定義Receiver處理。根據(jù)推送內(nèi)容的不同,在打開的不同的Activity中進(jìn)行相應(yīng)處理,將收到的異常數(shù)據(jù)以文件形式進(jìn)行保存,相應(yīng)灌溉通知?jiǎng)t為彈出確認(rèn)灌溉對(duì)話框。其偽代碼如下:

      void onReceive(Context context, Intent it){

      if(ACTION_NOTIFICATION_OPENED=it.getAction()) {

      bundle ← intent.getExtras();

      i ←new Intent(context,AlertActivity.class);

      i.setFlags(FLAG_ACTIVITY_NEW_TASK);

      context.startActivity(i);

      }

      elseif

      (ACTION_MESSAGE_RECEIVED=it.getAction()) {

      bundle←intent.getExtras();

      i ←new Intent(context,IrriActivity.class);

      i.setFlags(FLAG_ACTIVITY_NEW_TASK);

      context.startActivity(i);

      }

      }

      4 應(yīng)用效果

      監(jiān)控程序使用TabActivityGroup作為整體框架,并使用了Scrollable Tabs+Swipe實(shí)現(xiàn)了絢麗的滑動(dòng)效果,系統(tǒng)的用戶界面美觀,操作友好。當(dāng)服務(wù)器發(fā)現(xiàn)異常數(shù)據(jù),就將異常數(shù)據(jù)推送到手機(jī)。手機(jī)上JPush SDK的Jpush Service一直監(jiān)聽是否有新的推送,一旦接收到新的推送消息,自定義的Receiver將判斷推送數(shù)據(jù)的類型,從而會(huì)顯示報(bào)警信息或者灌溉確認(rèn)界面。異常數(shù)據(jù)的詳細(xì)信息,在推送到手機(jī)上時(shí)將寫入手機(jī)中的Sqlite數(shù)據(jù)庫(kù)中。當(dāng)通過(guò)系統(tǒng)打開通知中心時(shí),跳轉(zhuǎn)至異常數(shù)據(jù)警告頁(yè)面,可以查看所有的警告時(shí)間和詳情,如圖6所示。另一方面,服務(wù)器發(fā)現(xiàn)有新的灌溉通知,就將通知推送到手機(jī),推送到手機(jī)上的灌溉通知會(huì)觸發(fā)新的Activity,彈出一個(gè)選擇框,顯示灌溉時(shí)間,灌溉溫室,詢問(wèn)用戶是否確認(rèn)灌溉,具體如圖7所示。

      5 小結(jié)

      本研究介紹了在溫室灌溉控制管理中使用基于數(shù)據(jù)推送平臺(tái)的異常數(shù)據(jù)提示及灌溉交互控制方案,用以代替?zhèn)鹘y(tǒng)的基于短信方式的數(shù)據(jù)推送方式。經(jīng)實(shí)驗(yàn)證,在服務(wù)器端產(chǎn)生異常數(shù)據(jù)的情況下,客戶端能及時(shí)收到服務(wù)器發(fā)送的推送通知。相對(duì)于傳統(tǒng)的監(jiān)控系統(tǒng)軟件,符合計(jì)算移動(dòng)化的趨勢(shì),同時(shí)也為開發(fā)基于移動(dòng)設(shè)備的推送應(yīng)用提供了參考。

      參考文獻(xiàn):

      [1] 杜尚豐,李迎霞,馬承偉,等.中國(guó)溫室環(huán)境控制硬件系統(tǒng)研究進(jìn)展[J].農(nóng)業(yè)工程學(xué)報(bào),2004,20(1):7-12.

      [2] 陳 益,梁 軍,王 煒.服務(wù)器推送技術(shù)在氣象數(shù)據(jù)布中研究與應(yīng)用[J].廣西師范學(xué)院學(xué)院(自然科學(xué)版),2012,29(1):92-97.

      [3] 鄭 玲,鄭曉天.基于WebSocket的電力系統(tǒng)實(shí)時(shí)數(shù)據(jù)更新研究[J].計(jì)算機(jī)與現(xiàn)代化,2013(1):85-87.

      [4] 何少岳,徐曉東,馬祖苑.主動(dòng)推送技術(shù)在移動(dòng)協(xié)同教育中的應(yīng)用[J].現(xiàn)代教育技術(shù),2012,22(4):100-103.

      [5] 鄒 海,李 強(qiáng),邱慧麗.基于C2DM服務(wù)的云端推送研究與實(shí)現(xiàn)[J].計(jì) 算 機(jī) 技 術(shù) 與 發(fā) 展,2012,26(7):29-32.

      [6] 高 靜,段會(huì)川.JSON數(shù)據(jù)傳輸效率研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2011,32(7):2267-2270.

      3 溫室灌溉管理的數(shù)據(jù)推送

      3.1 數(shù)據(jù)推送流程

      作為溫室灌溉管理系統(tǒng)的組成重要部分,數(shù)據(jù)推送功能將遠(yuǎn)程服務(wù)器上中的數(shù)據(jù)通過(guò)推送服務(wù)器發(fā)送到Android監(jiān)控端,實(shí)現(xiàn)異常數(shù)據(jù)推送和灌溉推送,其主要流程如圖4所示。

      一旦有最新異常數(shù)據(jù)或灌溉通知,服務(wù)器端基于JPush的推送將會(huì)通過(guò)JPush的服務(wù)器及時(shí)地發(fā)送到Android端。利用Android系統(tǒng)自有的Intent機(jī)制,數(shù)據(jù)接收服務(wù)不再需要應(yīng)用程序持續(xù)運(yùn)行,系統(tǒng)在收到推送消息后,可以再啟動(dòng)應(yīng)用程序,降低了資源的消耗,用戶使用也更加方便??蛻舳私邮胀扑蛿?shù)據(jù)的主要流程如圖5所示。

      3.2 數(shù)據(jù)推送實(shí)現(xiàn)

      3.2.1 數(shù)據(jù)通信格式 在服務(wù)器與移動(dòng)終端采用建立在TCP/IP之上的HTTP協(xié)議進(jìn)行數(shù)據(jù)傳輸,由于其具有無(wú)連接狀態(tài)、簡(jiǎn)單快速,容易穿越防火墻等優(yōu)點(diǎn)。在客戶端與服務(wù)器交互過(guò)程中,采用HTTP協(xié)議既減小了資源的浪費(fèi),也節(jié)省了終端的網(wǎng)絡(luò)流量。JSON(Java script object notation,JSON)是一種輕量級(jí)的數(shù)據(jù)交換格式,具有易于閱讀和編寫,同時(shí)也易于機(jī)器解析和生成的特點(diǎn)。因此,系統(tǒng)選用JSON作為數(shù)據(jù)通信格式[6]。

      3.2.2 灌溉及異常推送功能 在遠(yuǎn)程服務(wù)器上,計(jì)算模塊根據(jù)計(jì)算模型計(jì)算出溫室所需灌溉水量,在數(shù)據(jù)庫(kù)中添加灌溉信息,推送服務(wù)程序?qū)?shù)據(jù)庫(kù)進(jìn)行輪詢,發(fā)現(xiàn)新的灌溉信息,則通過(guò)推送服務(wù)器發(fā)送通知給用戶。當(dāng)服務(wù)器收到超過(guò)預(yù)警值的溫室參數(shù)信息異常數(shù)據(jù)時(shí),啟動(dòng)推送功能,則通知推送服務(wù)器向用戶發(fā)出警告。JPush提供了相關(guān)推送API,調(diào)用此API即可以將數(shù)據(jù)從遠(yuǎn)程服務(wù)器發(fā)送到JPush服務(wù)器,JPush服務(wù)器收到請(qǐng)求后通過(guò)JPush的Socket將數(shù)據(jù)發(fā)送到Android設(shè)備上的應(yīng)用程序。推送過(guò)程偽代碼如下:

      #define BasicNameValuePair NVP

      PUSH_URL←"http://api.jpush.cn:8800/sendmsg/sendmsg"

      while(HAVE(data)){

      appkeys ←NVP("appkeys", "your appkeys")

      msg_type ←NVP("msg_type", "1")

      msg_cnt ←NVP("msg_content",data)

      platform ←NVP("platform","android")

      datas ←ArrayList()

      datas.add(appkeys)

      datas.add(msg_type)

      datas.add(msg_cnt)

      datas.add(platform)

      entity←UrlEncodedFormEntity(datas,"utf-8")

      post←HttpPost(PUSH_URL);

      post.setEntity(entity)

      client←ClientUtil.getNewHttpClient()

      client.execute(post)

      resEntity←reponse.getEntity()

      }

      JPush SDK提供了客戶端jpushService后臺(tái)服務(wù),收到推送數(shù)據(jù)后將由自定義Receiver處理。根據(jù)推送內(nèi)容的不同,在打開的不同的Activity中進(jìn)行相應(yīng)處理,將收到的異常數(shù)據(jù)以文件形式進(jìn)行保存,相應(yīng)灌溉通知?jiǎng)t為彈出確認(rèn)灌溉對(duì)話框。其偽代碼如下:

      void onReceive(Context context, Intent it){

      if(ACTION_NOTIFICATION_OPENED=it.getAction()) {

      bundle ← intent.getExtras();

      i ←new Intent(context,AlertActivity.class);

      i.setFlags(FLAG_ACTIVITY_NEW_TASK);

      context.startActivity(i);

      }

      elseif

      (ACTION_MESSAGE_RECEIVED=it.getAction()) {

      bundle←intent.getExtras();

      i ←new Intent(context,IrriActivity.class);

      i.setFlags(FLAG_ACTIVITY_NEW_TASK);

      context.startActivity(i);

      }

      }

      4 應(yīng)用效果

      監(jiān)控程序使用TabActivityGroup作為整體框架,并使用了Scrollable Tabs+Swipe實(shí)現(xiàn)了絢麗的滑動(dòng)效果,系統(tǒng)的用戶界面美觀,操作友好。當(dāng)服務(wù)器發(fā)現(xiàn)異常數(shù)據(jù),就將異常數(shù)據(jù)推送到手機(jī)。手機(jī)上JPush SDK的Jpush Service一直監(jiān)聽是否有新的推送,一旦接收到新的推送消息,自定義的Receiver將判斷推送數(shù)據(jù)的類型,從而會(huì)顯示報(bào)警信息或者灌溉確認(rèn)界面。異常數(shù)據(jù)的詳細(xì)信息,在推送到手機(jī)上時(shí)將寫入手機(jī)中的Sqlite數(shù)據(jù)庫(kù)中。當(dāng)通過(guò)系統(tǒng)打開通知中心時(shí),跳轉(zhuǎn)至異常數(shù)據(jù)警告頁(yè)面,可以查看所有的警告時(shí)間和詳情,如圖6所示。另一方面,服務(wù)器發(fā)現(xiàn)有新的灌溉通知,就將通知推送到手機(jī),推送到手機(jī)上的灌溉通知會(huì)觸發(fā)新的Activity,彈出一個(gè)選擇框,顯示灌溉時(shí)間,灌溉溫室,詢問(wèn)用戶是否確認(rèn)灌溉,具體如圖7所示。

      5 小結(jié)

      本研究介紹了在溫室灌溉控制管理中使用基于數(shù)據(jù)推送平臺(tái)的異常數(shù)據(jù)提示及灌溉交互控制方案,用以代替?zhèn)鹘y(tǒng)的基于短信方式的數(shù)據(jù)推送方式。經(jīng)實(shí)驗(yàn)證,在服務(wù)器端產(chǎn)生異常數(shù)據(jù)的情況下,客戶端能及時(shí)收到服務(wù)器發(fā)送的推送通知。相對(duì)于傳統(tǒng)的監(jiān)控系統(tǒng)軟件,符合計(jì)算移動(dòng)化的趨勢(shì),同時(shí)也為開發(fā)基于移動(dòng)設(shè)備的推送應(yīng)用提供了參考。

      參考文獻(xiàn):

      [1] 杜尚豐,李迎霞,馬承偉,等.中國(guó)溫室環(huán)境控制硬件系統(tǒng)研究進(jìn)展[J].農(nóng)業(yè)工程學(xué)報(bào),2004,20(1):7-12.

      [2] 陳 益,梁 軍,王 煒.服務(wù)器推送技術(shù)在氣象數(shù)據(jù)布中研究與應(yīng)用[J].廣西師范學(xué)院學(xué)院(自然科學(xué)版),2012,29(1):92-97.

      [3] 鄭 玲,鄭曉天.基于WebSocket的電力系統(tǒng)實(shí)時(shí)數(shù)據(jù)更新研究[J].計(jì)算機(jī)與現(xiàn)代化,2013(1):85-87.

      [4] 何少岳,徐曉東,馬祖苑.主動(dòng)推送技術(shù)在移動(dòng)協(xié)同教育中的應(yīng)用[J].現(xiàn)代教育技術(shù),2012,22(4):100-103.

      [5] 鄒 海,李 強(qiáng),邱慧麗.基于C2DM服務(wù)的云端推送研究與實(shí)現(xiàn)[J].計(jì) 算 機(jī) 技 術(shù) 與 發(fā) 展,2012,26(7):29-32.

      [6] 高 靜,段會(huì)川.JSON數(shù)據(jù)傳輸效率研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2011,32(7):2267-2270.

      法库县| 合水县| 崇仁县| 潮州市| 西峡县| 乐业县| 景泰县| 阿拉尔市| 齐齐哈尔市| 隆安县| 六枝特区| 榆中县| 航空| 叶城县| 紫云| 旬阳县| 文山县| 丰都县| 马山县| 珲春市| 温州市| 鞍山市| 容城县| 合水县| 高唐县| 东阳市| 西城区| 静海县| 通渭县| 吉林省| 日土县| 枣庄市| 镇沅| 始兴县| 宣武区| 祁门县| 安康市| 教育| 阳东县| 泊头市| 南乐县|