• 
    

    
    

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

      基于百度云的物聯(lián)網(wǎng)應用搭建

      2023-06-17 08:39:34王葦棋陳文印吳同德陳亞平謝飛武吳科甲
      物聯(lián)網(wǎng)技術(shù) 2023年6期
      關(guān)鍵詞:服務端網(wǎng)關(guān)代碼

      王葦棋,陳文印,吳同德,陳亞平,謝飛武,吳科甲

      (福建信息職業(yè)技術(shù)學院,福建 福州 350000)

      0 引 言

      物聯(lián)網(wǎng)是計算機、電子、通信等應用技術(shù)的集中體現(xiàn),是近些年科技發(fā)展的幾種體現(xiàn),是人民生活的重要技術(shù)支撐。隨著物聯(lián)網(wǎng)應用技術(shù)涉足的產(chǎn)業(yè)越來越廣、實際應用越來越多、相關(guān)產(chǎn)品越來越豐富,物聯(lián)網(wǎng)已經(jīng)成為了一個千億級的行業(yè)市場[1-3]。

      隨著物聯(lián)網(wǎng)行業(yè)迅速發(fā)展,帶動了物聯(lián)網(wǎng)云服務應用的提升,國內(nèi)代表廠商有百度、阿里、騰訊、小米、海爾等。按照商業(yè)模式的不同,物聯(lián)網(wǎng)云平臺可以分為公有云和私有云。公有云物聯(lián)網(wǎng)平臺一般由相關(guān)企業(yè)提供,開放了大量物聯(lián)網(wǎng)服務和接口,方便設備接入和管理。物聯(lián)網(wǎng)公有云對設備的協(xié)議有更為嚴格規(guī)定,且大部分物聯(lián)網(wǎng)管理應用功能由廠家定義。而物聯(lián)網(wǎng)私有云平臺是用戶自己搭建底層運行框架,自定義業(yè)務邏輯功能,使用靈活但開發(fā)維護門檻高。近年來,部分公有云廠家也提供私有云部署業(yè)務,可以為客戶定制開發(fā)功能。對于個人用戶而言,想開發(fā)一套自己的物聯(lián)網(wǎng)私有云系統(tǒng),一般還需要租用一臺云服務器。

      利用百度物聯(lián)網(wǎng)云平臺提供的一種通用的MQTT 發(fā)布訂閱功能,可以將私有云物聯(lián)網(wǎng)平臺部署到自己的個人計算機上。將百度物聯(lián)網(wǎng)云平臺當作一個數(shù)據(jù)轉(zhuǎn)發(fā)中心,把設備上報的數(shù)據(jù)轉(zhuǎn)發(fā)給部署私有云的服務端。同理,私有云也可以利用百度云將控制指令下發(fā)到設備。這樣,就可以無需租用云服務器也能實現(xiàn)對設備進行數(shù)據(jù)采集和控制下發(fā),能夠降低私有云的開發(fā)門檻,縮短項目驗證周期。

      通過測試驗證表明,該方案實用性強、快速可靠,能有效提高私有云開發(fā)效率。若設計得當,還可以作為物聯(lián)網(wǎng)應用個人開發(fā)者的實際業(yè)務系統(tǒng)。

      1 總體設計

      基于百度云的物聯(lián)網(wǎng)應用系統(tǒng)的核心是具有MQTT 發(fā)布訂閱功能的百度云平臺,設備端包括采集設備和轉(zhuǎn)換協(xié)議的智能網(wǎng)關(guān),業(yè)務端是一個私有云服務端。

      系統(tǒng)的通信協(xié)議使用了百度提供的MQTT。MQTT 協(xié)議的角色可以分為服務代理端(Broker)和客戶端(Client),代理服務器可以支持多種服務質(zhì)量,客戶端根據(jù)功能劃分為發(fā)布者(Publish)和訂閱者(Subscribe),客戶端通過協(xié)議與代理服務器進行連接[4]??傮w架構(gòu)如圖1所示。

      圖1 總體架構(gòu)圖

      百度云平臺作為數(shù)據(jù)透傳的中轉(zhuǎn)站,不處理具體業(yè)務邏輯。設備和私有云都是MQTT 客戶端,利用發(fā)布訂閱功能實現(xiàn)數(shù)據(jù)交互,進而進行設備遠程監(jiān)控和運維升級。

      物聯(lián)網(wǎng)網(wǎng)關(guān)通過RS 485 等采集總線和ModBus 等采集協(xié)議獲取到采集設備的數(shù)據(jù)后,將數(shù)據(jù)按照百度云規(guī)定的格式打包后發(fā)給平臺。接收到平臺的控制指令后,將指令轉(zhuǎn)換成控制設備可識別的信號,實現(xiàn)設備間聯(lián)動控制。

      采集控制設備具有環(huán)境數(shù)據(jù)采集與控制功能,例如植物工廠中的溫濕度、CO2、LED 補光燈、光照傳感器、噴灌等。要具備現(xiàn)場通信能力和協(xié)議處理能力,接收處理網(wǎng)關(guān)下發(fā)的終端命令[5]。

      私有云服務端是運行物聯(lián)網(wǎng)業(yè)務邏輯功能的主體,由于百度云的存在,服務端只需要能夠連上網(wǎng)絡即可實現(xiàn)業(yè)務數(shù)據(jù)采集。因此,服務端的載體可以是個人計算機、手機APP,甚至是嵌入式設備,在開發(fā)上更為靈活方便。

      2 百度云配置

      2.1 百度物聯(lián)云平臺與MQTT

      百度物聯(lián)網(wǎng)云平臺是面向物聯(lián)網(wǎng)行業(yè)開發(fā)的云管理平臺,它提供設備接入與管理、規(guī)則引擎及物聯(lián)網(wǎng)邊緣等功能[6]。云端可接入、管理設備并建立安全可靠的連接;規(guī)則引擎提供物聯(lián)網(wǎng)設備與云平臺其他產(chǎn)品之間的數(shù)據(jù)互傳;物聯(lián)網(wǎng)邊緣可將云計算能力拓展至用戶現(xiàn)場,并且在工作條件差的區(qū)域也可以提供計算服務。

      MQTT(消息隊列遙測傳輸)是一種基于發(fā)布訂閱(Publish Subscribe)模式的“輕量級”通信協(xié)議,該協(xié)議構(gòu)建于TCPIP 協(xié)議簇上。為了適應硬件功能不穩(wěn)定或者網(wǎng)絡條件差等情況下而設計的一款發(fā)布訂閱型消息協(xié)議。它的最大優(yōu)勢在于可以提供實時可靠的消息傳遞服務,用很少的代碼和有限的帶寬連接遠程設備,低開銷、低帶寬,因此被廣泛應用于物聯(lián)網(wǎng)、小型設備、移動應用等領(lǐng)域[7]。云平臺配置流程包括創(chuàng)建IoTCore 實例、創(chuàng)建模板、創(chuàng)建設備、獲取連接信息、測試MQTT 通信。

      2.2 云平臺配置

      百度云平臺作為物聯(lián)網(wǎng)網(wǎng)關(guān)、私有云服務端的“中介”,提供了MQTT 服務,需要注冊賬號并生成通信密鑰,實現(xiàn)智能設備與云端之間建立安全的連接,防止設備被不法分子攻擊。

      (1)創(chuàng)建IoTCore 實例

      在使用物聯(lián)網(wǎng)核心套件前,需要創(chuàng)建一個百度智能云賬號,登錄后在云平臺開通IoTCore,點擊“創(chuàng)建IoTCore”,輸入名稱與描述,即可創(chuàng)建實例。

      (2)創(chuàng)建模板

      設備模板是提供當前設備的主題描述,默認的設備模板包含兩個主題。按照圖2和圖3步驟新創(chuàng)建SertoCli 和ClitoSer 兩個主題。

      圖2 創(chuàng)建一個模板

      圖3 創(chuàng)建主題

      (3)創(chuàng)建設備

      填寫設備名稱、認證方式、描述、設備模板,其中認證方式選密鑰認證,描述可以不寫。

      (4)獲取連接信息

      在云平臺配置好設備信息后,自動生成新的設備信息和連接密鑰。進入設備詳情頁,在連接信息欄目,點擊右側(cè)圖標,即可查看設備信息:IoTCoreId、DeviceKey 和DeviceSecret。

      針對不同項目需求創(chuàng)建相應IoT Core 實例庫,在庫中添加需要的物聯(lián)網(wǎng)傳感器,從而獲取傳感器采集傳輸?shù)南鄳膶崟r數(shù)據(jù),實現(xiàn)云端部署管理[8]。

      2.3 MQTT 數(shù)據(jù)收發(fā)

      2.3.1 生成用戶名和密碼

      MQTT 測試需要將獲取到的設備信息生成登錄用戶名和密碼,然后通過MQTT 測試工具或者軟件實現(xiàn)通信,具體流程可以分為以下幾個步驟:

      (1)生成用戶名

      創(chuàng)建設備時選的認證方式為密鑰認證后需通過拼接連接成用戶名,使用拿到的IoTCoreId、DeviceKey 和DeviceSecret,生成MQTT 連接所需的用戶名及密碼。用戶名具體拼接如下:

      {adp_type}@{IoTCoreId}|{DeviceKey}|{timestamp}|{algorithm_type}

      具體含義見表1所列。

      表1 用戶名字段定義

      例如:IoTCoreId 為"avmbgrk",DeviceKey 為"zwgcDevice",則用戶名可以為"thingidp@avmbgrk|zwgcDevice|0|MD5"。

      (2)生成密碼

      組合加密字符串具體拼接如下:

      {DeviceKey}&{timestamp}&{algorithm_type}{DeviceSecret}

      具體含義見表2所列。

      表2 用戶名字段定義

      例如:DeviceKey 為"zwgcDevice",DeviceSecret 為"oGciBvqglTuaVKlu",則加密字符串可以為"zwgcDevice&0&MD5oGciBvqglTuaVKlu"。

      使用MD5 對加密字符串的UTF-8 字符集比特數(shù)組進行加密,并將結(jié)果轉(zhuǎn)換為小寫形式,密碼為“53b1e44951df2329 70a624d8dc4945c8”。

      具體Python 參考代碼如下:

      2.3.2 MQTT 數(shù)據(jù)收發(fā)

      MQTT 數(shù)據(jù)收發(fā)功能測試可以使用mqtt.fx 等軟件進行測試,使用方法與網(wǎng)絡調(diào)試助手類似。本文提供一種基于Python 代碼的MQTT 數(shù)據(jù)收發(fā)測試方法。

      本文MQTT 代碼是基于Anaconda 環(huán)境,Python 版本為3.7.6,需要安裝paho-mqtt 模塊,可以通過指令安裝,也可以通過Anaconda 環(huán)境管理功能進行安裝。

      使用paho-mqtt 模塊前需要導入相關(guān)模塊,然后需要編寫連接回調(diào)函數(shù)和收到消息的回調(diào)函數(shù),緊接著連接到對應的服務端,最后啟動線程服務就完成了paho-mqtt 功能開發(fā)。具體Python 參考代碼如下:

      通過發(fā)布消息函數(shù),發(fā)布到對應主題就可以接受到對應的數(shù)據(jù):

      In [6]:mqttser.publish(topicSertoCli,'{data:"mqttser1"}',qos = 1)

      mqttser.publish(topicSertoCli,'{data:"mqttser2"}',qos = 1)

      Out[6]:

      dev_onmsg,$iot/zwgcDevice/user/SertoCli ,b’{data:"mqttser1"}’

      dev_onmsg,$iot/zwgcDevice/user/SertoCli ,b’{data:"mqttser2"}'

      3 服務端與設備端功能設計與實現(xiàn)

      3.1 服務端與設備端設計

      私有云服務端主要流程包括生成登錄賬號和密碼、登錄百度云平臺、通過MQTT 發(fā)送控制指令、通過MQTT 接收遙測數(shù)據(jù)等,具體流程如圖4所示。

      圖4 服務端流程

      接收到遙測數(shù)據(jù)后,根據(jù)需求進行處理,例如對數(shù)據(jù)進行解析、將報文存儲到數(shù)據(jù)庫中、將數(shù)據(jù)轉(zhuǎn)發(fā)至展示平臺、對數(shù)據(jù)進行告警判斷等[9]。

      當發(fā)生告警時或者人為下發(fā)控制指令等情況需要對設備進行遠程控制時,服務端將命令通過MQTT 服務端下發(fā)至網(wǎng)關(guān),網(wǎng)關(guān)解析命令后實現(xiàn)對遠程設備進行調(diào)控。

      設備端網(wǎng)關(guān)功能主要是硬件設備初始化、生成登錄賬號和密碼、登錄百度云平臺、接收服務端控制指令、采集傳感器數(shù)據(jù)并上報,具體流程如圖5所示。

      圖5 設備端流程

      硬件部分最重要的是智能網(wǎng)關(guān)模塊,網(wǎng)關(guān)一般包括采集電路、通信模塊、主控模塊。智能網(wǎng)關(guān)模塊主要負責將采集到的傳感器數(shù)據(jù)打包后上傳至云平臺,解析云平臺下發(fā)的指令并執(zhí)行,復雜的智能網(wǎng)關(guān)模塊還應具有邊緣計算能力。

      3.2 參考測試代碼

      為了更方便測試,首先將Token 生成相關(guān)代碼封裝成一個BaiduMqttTockenClass 類,將所有用到的參數(shù)存到類里,具體Python 參考代碼如下。同理,將MQTT 連接功能封裝成一個BaiduMqttConClass 類,將所有連接過程封裝到類里。

      服務端測試代碼首先要創(chuàng)建一個MQTT 連接,并訂閱設備上報主題用于接收設備上報的數(shù)據(jù),具體Python 參考代碼如下:

      測試代碼模擬一個服務端下發(fā)控制指令過程,每隔1 s,交替下發(fā)風扇開啟和關(guān)閉指令,具體Python 參考代碼如下:

      同理,設備端測試代碼首先要創(chuàng)建一個MQTT 連接,并訂閱服務端下發(fā)指令主題,用于接收服務端下發(fā)的指令,具體Python 參考代碼如下:

      測試代碼模擬一個設備端上報數(shù)據(jù)的過程,每隔2 s,隨機生成溫度和濕度值,并上報至服務端,具體Python 參考代碼如下:

      4 測 試

      測試運行結(jié)果具體Python 參考代碼如下,服務端每隔2 s 接收到設備端上報的數(shù)據(jù),設備端每隔1 s 接收到服務端下發(fā)的指令。

      5 結(jié) 語

      本文的研究充分證明了該物聯(lián)網(wǎng)模型的可行性和實用性,提供了一套搭建簡易物聯(lián)網(wǎng)模型的思路,實現(xiàn)了用戶快速搭建一套物聯(lián)網(wǎng)項目的需求。在此基礎(chǔ)上,開發(fā)者可以增加數(shù)據(jù)庫系統(tǒng)、可視化界面等其他模塊以便于構(gòu)建一套更完整的物聯(lián)網(wǎng)系統(tǒng)。

      注:本文通訊作者為陳文印。

      猜你喜歡
      服務端網(wǎng)關(guān)代碼
      基于改進RPS技術(shù)的IPSEC VPN網(wǎng)關(guān)設計
      創(chuàng)世代碼
      動漫星空(2018年11期)2018-10-26 02:24:02
      創(chuàng)世代碼
      動漫星空(2018年2期)2018-10-26 02:11:00
      創(chuàng)世代碼
      動漫星空(2018年9期)2018-10-26 01:16:48
      創(chuàng)世代碼
      動漫星空(2018年5期)2018-10-26 01:15:02
      云存儲中基于相似性的客戶-服務端雙端數(shù)據(jù)去重方法
      新時期《移動Web服務端開發(fā)》課程教學改革的研究
      消費導刊(2018年8期)2018-05-25 13:19:48
      在Windows Server 2008上創(chuàng)建應用
      LTE Small Cell網(wǎng)關(guān)及虛擬網(wǎng)關(guān)技術(shù)研究
      移動通信(2015年18期)2015-08-24 07:45:08
      應對氣候變化需要打通“網(wǎng)關(guān)”
      太陽能(2015年7期)2015-04-12 06:49:50
      十堰市| 江西省| 淮滨县| 日照市| 施甸县| 太仆寺旗| 云霄县| 靖西县| 温泉县| 德保县| 延寿县| 衡阳市| 中山市| 永年县| 汾阳市| 镇康县| 乌兰察布市| 南乐县| 凤山县| 丹阳市| 阳西县| 娄底市| 莲花县| 清丰县| 文水县| 静海县| 苗栗县| 黔南| 平陆县| 南丰县| 筠连县| 石家庄市| 郁南县| 墨脱县| 鄄城县| 故城县| 怀仁县| 横峰县| 犍为县| 满城县| 无为县|