2023圖解物聯(lián)網(wǎng)解釋_第1頁(yè)
2023圖解物聯(lián)網(wǎng)解釋_第2頁(yè)
2023圖解物聯(lián)網(wǎng)解釋_第3頁(yè)
2023圖解物聯(lián)網(wǎng)解釋_第4頁(yè)
2023圖解物聯(lián)網(wǎng)解釋_第5頁(yè)
已閱讀5頁(yè),還剩356頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

圖解物聯(lián)?解釋第1章 物聯(lián)?的基礎(chǔ)知識(shí)物聯(lián)??門(mén)物聯(lián)?物聯(lián)?的相關(guān)動(dòng)向物聯(lián)?所實(shí)現(xiàn)的世界“泛在?絡(luò)”社會(huì)“物”的互聯(lián)?連接機(jī)器對(duì)機(jī)器通信所實(shí)現(xiàn)的事物聯(lián)?實(shí)現(xiàn)的世界實(shí)現(xiàn)物聯(lián)?的技術(shù)要素設(shè)備傳感器?絡(luò)物聯(lián)?服務(wù)數(shù)據(jù)分第2章 物聯(lián)?的架構(gòu)物聯(lián)?的整體結(jié)構(gòu)整體結(jié)構(gòu)?關(guān)服務(wù)器的結(jié)構(gòu)采集數(shù)據(jù)?關(guān)的作?接收數(shù)據(jù)數(shù)據(jù)接收服務(wù)器的作?2.3.1 HTTP協(xié)議MQTT數(shù)據(jù)格式處理數(shù)據(jù)處理服務(wù)器的作?批處理流處理存儲(chǔ)數(shù)據(jù)數(shù)據(jù)庫(kù)的作?數(shù)據(jù)庫(kù)的種類(lèi)和特征控制設(shè)備發(fā)送服務(wù)器的作?使?HTTP發(fā)送數(shù)據(jù)使?發(fā)送數(shù)據(jù)使?MQTT發(fā)送數(shù)第3章 物聯(lián)?設(shè)備設(shè)備——通向現(xiàn)實(shí)世界的接?為什么要學(xué)習(xí)設(shè)備的相關(guān)知識(shí)連通性帶來(lái)的變化物聯(lián)?設(shè)備的結(jié)構(gòu)基本結(jié)構(gòu)微控制器主板的類(lèi)型和選擇?法連接“云”與現(xiàn)實(shí)世界與全球?絡(luò)相連接與?關(guān)設(shè)備的通信?式有線(xiàn)連接?線(xiàn)連接獲得電波認(rèn)證采集現(xiàn)實(shí)世界的信息傳感器是什么傳感器的機(jī)制傳感器的利?過(guò)程放?傳感器的信號(hào)把模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)傳感器的校準(zhǔn)如何選擇傳感器反饋給現(xiàn)實(shí)世界使?輸出設(shè)備時(shí)的重要事項(xiàng)驅(qū)動(dòng)的作?制作正確的電源把數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào)硬件原型設(shè)計(jì)原型設(shè)計(jì)的重要性硬件原型設(shè)計(jì)的注意事項(xiàng)硬件原型設(shè)計(jì)的?具原型制作結(jié)束之第4章 先進(jìn)的感測(cè)技術(shù)逐步擴(kuò)張的傳感器世界先進(jìn)的感測(cè)設(shè)備RGB-D傳感器?然?戶(hù)界?先進(jìn)的感測(cè)系統(tǒng)衛(wèi)星定位系統(tǒng)準(zhǔn)天頂衛(wèi)星IMES使?了的定位技術(shù)Beacon位置信息和物聯(lián)?的關(guān)第5章 物聯(lián)?服務(wù)的系統(tǒng)開(kāi)發(fā)物聯(lián)?和系統(tǒng)開(kāi)發(fā)物聯(lián)?系統(tǒng)開(kāi)發(fā)的問(wèn)題物聯(lián)?系統(tǒng)開(kāi)發(fā)的特征物聯(lián)?系統(tǒng)開(kāi)發(fā)的流程驗(yàn)證假設(shè)階段系統(tǒng)開(kāi)發(fā)階段維護(hù)應(yīng)?階段物聯(lián)?服務(wù)的系統(tǒng)開(kāi)發(fā)案例樓層環(huán)境監(jiān)控系統(tǒng)節(jié)能監(jiān)控系統(tǒng)物聯(lián)?服務(wù)開(kāi)發(fā)的重點(diǎn)設(shè)備處理?式設(shè)計(jì)?絡(luò)安全性應(yīng)?與維護(hù)?向物聯(lián)?服務(wù)的系統(tǒng)開(kāi)第6章 物聯(lián)?與數(shù)據(jù)分析 傳感器數(shù)據(jù)分析的種類(lèi)可視化采集分析?級(jí)分析?級(jí)分析的基礎(chǔ)?分析算法來(lái)發(fā)現(xiàn)和預(yù)測(cè)預(yù)測(cè)分析所需要的要素?cái)?shù)據(jù)分析的基礎(chǔ)架構(gòu)CEPJubatus第7章 物聯(lián)?與可穿戴設(shè)備可穿戴設(shè)備的基礎(chǔ)物聯(lián)?和可穿戴設(shè)備的關(guān)系可穿戴設(shè)備市場(chǎng)可穿戴設(shè)備的特征可穿戴設(shè)備的種類(lèi)可穿戴設(shè)備的分類(lèi)眼鏡型?表型飾品型按照?的來(lái)選擇可穿戴設(shè)備的應(yīng)?可穿戴設(shè)備的?便之處消費(fèi)者應(yīng)?情景?于企業(yè)領(lǐng)第8章 物聯(lián)?與機(jī)器?由設(shè)備到機(jī)器?機(jī)器?——設(shè)備的延續(xù)機(jī)器?的實(shí)?范圍正在擴(kuò)?構(gòu)建機(jī)器?系統(tǒng)的關(guān)鍵利?機(jī)器?專(zhuān)?中間件機(jī)器?專(zhuān)?中間件的作?中間件ROS連接到云端的機(jī)器?云機(jī)器?UNR-PFRoboEarth物聯(lián)?和機(jī)器?的未來(lái)后記參考?作者版權(quán)聲明版權(quán)聲明絵で?てわかるIoT/センサの仕組みと活?(EdeMiteIoT/sensornoShikumitoKatsuyou:4062-9)Copyright?2015NTTDATACorporation/KawamuraMasato,OtsukaHiroshi,KobayashiYusuke,KoyamaTakeshi,MiyazakiTomoya,IshiguroYuki,KojimaKohei.OriginalJapaneseeditionpublishedbySHOEISHACo.,Ltd.SimplifiedChineseCharactertranslationrightsarrangedwithSHOEISHACo.,Ltd.throughCREEK&RIVERCo.,Ltd.andCREEK&RIVERSHANGHAICo.,Ltd.SimplifiedChineseCharactertranslationcopyright?2017byPosts&TelecomPress.本書(shū)中?簡(jiǎn)體字版由SHOEISHACo.,Ltd.授權(quán)??郵電出版社獨(dú)家出版。未經(jīng)出版者書(shū)?許可,不得以任何?式復(fù)制或抄襲本書(shū)內(nèi)容。版權(quán)所有,侵權(quán)必究。本書(shū)內(nèi)容本書(shū)內(nèi)容近年來(lái),機(jī)器對(duì)機(jī)器通信(MachinetoMachine,M2M)和物聯(lián)?(InternetofThings,IoT)這兩個(gè)關(guān)鍵詞備受矚?。不僅是計(jì)算機(jī),聯(lián)?還涉及智能?機(jī)和家?電器這些跟我們?活息息相關(guān)的物品和設(shè)備。物聯(lián)?的原理是從安裝在這些物品和設(shè)備上的傳感器處收集信息,并通過(guò)互聯(lián)?對(duì)其加以靈活運(yùn)?。本書(shū)?向那些想在系統(tǒng)開(kāi)發(fā)中應(yīng)?物聯(lián)?的?程師,從設(shè)備、傳感器以及傳輸協(xié)議(MQTT)等構(gòu)成物聯(lián)?的技術(shù)要素的基礎(chǔ)知識(shí)講起步深?到如何靈活運(yùn)?物聯(lián)?。要想應(yīng)?傳感器,除了傳感器的知識(shí)以外,我們還需要掌握硬件和軟件的知識(shí)、?于分析傳感器數(shù)據(jù)的知識(shí)等。本書(shū)內(nèi)容包括?于實(shí)現(xiàn)物聯(lián)?的架構(gòu)、傳感器的種類(lèi)以及能從傳感器獲取的信息等基礎(chǔ)知識(shí),并進(jìn)?步介紹了感測(cè)設(shè)備原型設(shè)計(jì)所必需的Arduino等主板及這的選擇?法,連接傳感器的電路,傳感器的數(shù)據(jù)分析,乃?物聯(lián)?跟智能?機(jī)/可穿戴設(shè)備的聯(lián)動(dòng)等。這些都是?程師在運(yùn)?物聯(lián)?之前需要事先了解的知識(shí)。此外,本書(shū)以作者們開(kāi)發(fā)的物聯(lián)?系統(tǒng)為例,講述了與硬件和?線(xiàn)通信相關(guān)的?些特有問(wèn)題,設(shè)置設(shè)備的竅門(mén)以及?絡(luò)安全等,除此之外,書(shū)中還提到了?些運(yùn)?物聯(lián)?系統(tǒng)時(shí)會(huì)出現(xiàn)的問(wèn)題和必備的訣竅。本書(shū)適合想要了解物聯(lián)?的基礎(chǔ)知識(shí)和整體情況,或是今后要從事物聯(lián)?和機(jī)器對(duì)機(jī)器通信系統(tǒng)規(guī)劃或開(kāi)發(fā)的??,以及所有對(duì)物聯(lián)?系統(tǒng)開(kāi)發(fā)抱有興趣的?程師閱讀?!緯?shū)中的URL等可能會(huì)在未予通知的情況下發(fā)?變更?!緯?shū)在出版時(shí)盡量確保了內(nèi)容的準(zhǔn)確性,但作譯者、出版社對(duì)本書(shū)內(nèi)容不做任何保證,對(duì)于由本書(shū)內(nèi)容和?例程序造成的?切結(jié)果,概不負(fù)責(zé)。※本書(shū)中的?例程序、腳本和執(zhí)?結(jié)果??等,是在特定環(huán)境中重現(xiàn)的?個(gè)例??!緯?shū)中使?的公司名、產(chǎn)品名是各公司的商標(biāo)和注冊(cè)商標(biāo)。前前?這是?本解說(shuō)物聯(lián)?的書(shū)。物聯(lián)?整體服務(wù)的開(kāi)發(fā)需要靈活應(yīng)?傳感器和各類(lèi)設(shè)備,本書(shū)就是為那些準(zhǔn)備從事這種開(kāi)發(fā)的硬件和軟件?程師編寫(xiě)的。相信?家近來(lái)也經(jīng)常聽(tīng)到物聯(lián)?這個(gè)詞吧。物聯(lián)?是通過(guò)互聯(lián)?把我們?邊的各種物品連在?起,并提供服務(wù)的?種機(jī)制。它可以給?家的?活帶來(lái)如同科幻電影?般的體驗(yàn)。???,物聯(lián)?利?的技術(shù)是以現(xiàn)有服務(wù)中使?的技術(shù)和為基礎(chǔ)的。另???,為了了解傳感器和各類(lèi)設(shè)備的?途,我們需要掌握?些相關(guān)的硬件及嵌?式軟件知識(shí)。服務(wù)和互聯(lián)?的知識(shí)是IT?程師的專(zhuān)?,?傳感器和設(shè)備的知就是嵌?式?程師和硬件?程師的拿?好戲了。我們必須靈活應(yīng)?這兩類(lèi)?程師各?擅?的領(lǐng)域才能實(shí)現(xiàn)物聯(lián)?。此外,物聯(lián)?還會(huì)?到數(shù)據(jù)科學(xué)家擅?的技術(shù)領(lǐng)域,即對(duì)設(shè)備所傳輸?shù)男畔⑦M(jìn)?分析的技術(shù)以及機(jī)器學(xué)習(xí)的相關(guān)內(nèi)容。當(dāng)然,如果這些?程師能把彼此擅?的技術(shù)聚合到?起,就能實(shí)現(xiàn)聯(lián)?了。然?要是不理解對(duì)?領(lǐng)域的基礎(chǔ)知識(shí),他們就難以相互理解,實(shí)現(xiàn)物聯(lián)?也就?常困難。因此本書(shū)的寫(xiě)作?的就在于幫助?家,即使在開(kāi)始物聯(lián)?項(xiàng)?時(shí)碰到了??不懂的領(lǐng)域也不?于???措。?先,我們將在第1章中總覽物聯(lián)?,然后在第2章中圍繞Web服務(wù)使?的技術(shù),就物聯(lián)?服務(wù)的實(shí)現(xiàn)?法予以說(shuō)明。第3章會(huì)詳細(xì)解說(shuō)設(shè)備開(kāi)發(fā)中需要把握的重點(diǎn),?第4章則以先進(jìn)的傳感器為題,為?家介紹近年來(lái)取得驚?進(jìn)步的?然?戶(hù)界?(NaturalUserInterface,NUI)GPS等感測(cè)系統(tǒng)。第5章會(huì)為?家介紹?些運(yùn)時(shí)的訣竅和需要注意的地?。第6章到第8章則涵蓋數(shù)據(jù)分析、可穿戴設(shè)備以及機(jī)器?等跟物聯(lián)?緊密相連的領(lǐng)域。本書(shū)旨在幫助?家邁出全?了解?闊的物聯(lián)?技術(shù)領(lǐng)域的第?步,可以說(shuō)相當(dāng)于物聯(lián)?開(kāi)發(fā)的路標(biāo)。書(shū)中涉及的各領(lǐng)域知識(shí),既有?家已經(jīng)知道的,也有?家完全不了解的。若本書(shū)能夠作為路標(biāo),在?家開(kāi)發(fā)服務(wù)時(shí)起到?點(diǎn)指明?向的作?,那我們將感到萬(wàn)分榮幸。作者代表 河村雅?第1章 物聯(lián)?的基礎(chǔ)知識(shí)第物聯(lián)??門(mén)1.1物聯(lián)??門(mén)?先我們來(lái)了解?下學(xué)習(xí)物聯(lián)?所需的基礎(chǔ)知識(shí)。物聯(lián)1.1.1物聯(lián)?家在聽(tīng)到物聯(lián)?時(shí),腦海中會(huì)出現(xiàn)?個(gè)什么樣的印象呢?物聯(lián)?的英語(yǔ)是InternetofThings,縮寫(xiě)為IoT,這?的“物”指的是我們?邊?切能與?絡(luò)相連的物品。例如您?上穿著的?服、戴著的?表、家?的家?電器和汽?,或者是房屋本?,甚?正在讀的這本書(shū),只要能與?絡(luò)相連,就都是物聯(lián)?說(shuō)的“物”。就像我們?互聯(lián)?在彼此之間傳遞信息?樣,物聯(lián)?就是“物”之間通過(guò)連接互聯(lián)?來(lái)共享信息并產(chǎn)?有?的信息,?且?需?為管理就能運(yùn)?的機(jī)制。這樣?來(lái),就創(chuàng)造出了?直未能實(shí)現(xiàn)的魔法般的世界。物聯(lián)?的相關(guān)動(dòng)向1.1.2物聯(lián)?的相關(guān)動(dòng)向ICT1市場(chǎng)調(diào)查公司的IDC(InternetDataCenter,互聯(lián)?數(shù)據(jù)中?)調(diào)查結(jié)果顯?,2013年?本國(guó)內(nèi)物聯(lián)?市場(chǎng)的市場(chǎng)份額約有萬(wàn)億?元,預(yù)測(cè)這個(gè)數(shù)字在2018年?約會(huì)增?2013年的兩倍,即21元左右。1信息、通信和技術(shù)三個(gè)英?單詞的?字?組合(InformationCommunicationTechnology,簡(jiǎn)稱(chēng)ICT)?!g者注(本書(shū)腳注均為譯者注)物聯(lián)?市場(chǎng)是由若?個(gè)市場(chǎng)形成的,包括作為“物”的設(shè)備市場(chǎng),掌管物與物之間聯(lián)系的?絡(luò)市場(chǎng),還有運(yùn)營(yíng)管理類(lèi)的平臺(tái)市場(chǎng),分析采集到的數(shù)據(jù)的分析處理市場(chǎng)等(圖1.1)。圖1.1 物聯(lián)?的相關(guān)市場(chǎng)說(shuō)起創(chuàng)建物聯(lián)?市場(chǎng)的要素,那就要提到通信模塊價(jià)格趨向低廉以及云服務(wù)的普及。英特爾公司在2014年10?將?款名為英特爾Edison的單板計(jì)算機(jī)投?了市場(chǎng)。這款單板機(jī)在?個(gè)只有郵票??的模塊上搭載了雙核雙線(xiàn)程的CPU1GB內(nèi)存、4GB的存儲(chǔ)空間、雙頻的以及藍(lán)?4.0。除此之外,微軟還公布了名為MicrosoftAzureIntelligentSystemsService(Azure智能系統(tǒng)服務(wù))的解決?案,?云技術(shù)實(shí)現(xiàn)數(shù)據(jù)管理和處理,以及通信管理等功能。此外,在平臺(tái)、分析處理和?絡(luò)安全等??,針對(duì)物聯(lián)?的產(chǎn)品和服務(wù)也已經(jīng)開(kāi)始投?市場(chǎng)。物聯(lián)?市場(chǎng)今后的重點(diǎn)在于跟熟悉各垂直市場(chǎng)的從業(yè)者加強(qiáng)合作,積極提供試驗(yàn)環(huán)境以及開(kāi)發(fā)貼近?戶(hù)?活的服務(wù)項(xiàng)?。物聯(lián)?所實(shí)現(xiàn)的世界1.2物聯(lián)?所實(shí)現(xiàn)的世界“泛在?絡(luò)”社會(huì)在講物聯(lián)?所實(shí)現(xiàn)的世界之前,我們先從“連接?絡(luò)”的觀點(diǎn)來(lái)回顧?下歷史。世90年代初,過(guò)去以?型機(jī)為中?的集中式處理逐漸向以客戶(hù)端服務(wù)器為中?的分布式處理轉(zhuǎn)移。20世90年代后期起,新型集中式處理圍繞著以互聯(lián)?為代表的?絡(luò)形成了?股發(fā)展趨勢(shì)。這計(jì)算的概念。以互聯(lián)?為媒介,?們可以輕松實(shí)PC、務(wù)器、移動(dòng)設(shè)備之間的信息交換。世紀(jì)初,?個(gè)名為“泛在?絡(luò)”的概念開(kāi)始受到?們的關(guān)注。泛在?絡(luò)的理念在于使?們能夠通過(guò)“隨時(shí)隨地”連接互聯(lián)?等?絡(luò)來(lái)利?多種多樣的服務(wù)(圖1.2)。近年來(lái),通過(guò)智能?機(jī)和平板電腦,甚?戲機(jī)、電視機(jī)等?些過(guò)去?法連接到?絡(luò)的“物”,就可以隨時(shí)隨地訪(fǎng)問(wèn)互聯(lián)?。圖1.2 泛在?絡(luò)可以讓?們隨時(shí)隨地訪(fǎng)問(wèn)?絡(luò)“物”的互聯(lián)?連接隨著寬帶的普及,泛在?絡(luò)社會(huì)?益得到實(shí)現(xiàn)。此外,能搭載在機(jī)器上的超低功耗傳感器投?市場(chǎng)、?線(xiàn)通信技術(shù)進(jìn)步等,都促使除了電腦、服務(wù)器和智能?機(jī)等傳統(tǒng)連接互聯(lián)?的IT相關(guān)設(shè)備以外,各種樣的“物”也可以連接互聯(lián)?(圖1.3)。以汽?、家?電器以及房屋為開(kāi)端,近來(lái),眼鏡和?表、飾品這些戴在?上的“物”也連接上了互聯(lián)?并開(kāi)始得到應(yīng)?,如GoogleGlass和AppleWatch。圖1.3連接互聯(lián)?的各種各樣的“物”形形??的“物”都能與互聯(lián)?相連,這?點(diǎn)?家都已經(jīng)了解了。那么這種“相連”會(huì)產(chǎn)?什么呢?它?是如何給?們的?活帶來(lái)?便的呢?下?,就來(lái)看看物聯(lián)?帶給我們的世界吧。機(jī)器對(duì)機(jī)器通信所實(shí)現(xiàn)的事機(jī)器對(duì)機(jī)器通信所實(shí)現(xiàn)的事在物聯(lián)?的實(shí)現(xiàn)??,近年來(lái)機(jī)器對(duì)機(jī)器通信等關(guān)鍵技術(shù)備受?們關(guān)注(圖1.4)。物聯(lián)?和機(jī)器對(duì)機(jī)器通信在很多??可以視作同?個(gè)思,但從嚴(yán)格意義上來(lái)說(shuō)?者是不同的。機(jī)器對(duì)機(jī)器通信是不經(jīng)?為控制的、機(jī)器和機(jī)器之間的通信;也就是說(shuō),多數(shù)情況下它表?的是機(jī)器和機(jī)器?動(dòng)交換信息的整體系統(tǒng)。另???,物聯(lián)?則?多含有給信息接收者提供服務(wù)的含義,它?機(jī)器對(duì)機(jī)器通信的概念范圍更?。圖1.4機(jī)器對(duì)機(jī)器通信所實(shí)現(xiàn)的社會(huì)泛在計(jì)算的世界是?個(gè)所有的“物”都內(nèi)置計(jì)算機(jī)中,隨時(shí)隨地可以得到計(jì)算機(jī)幫助的世界。?機(jī)器對(duì)機(jī)器通信?撐著泛在計(jì)算的世界,并通過(guò)?撐社會(huì)的基礎(chǔ)設(shè)施——智能社區(qū)和智能電?等形式逐步得到實(shí)現(xiàn)。此外,機(jī)器對(duì)機(jī)器通信不僅可以3G電路的信息系統(tǒng)現(xiàn),還可以通過(guò)本地?絡(luò)中的?線(xiàn)通信和有線(xiàn)通信來(lái)實(shí)現(xiàn)。除了企業(yè)內(nèi)的信息和互聯(lián)?的信息以外,我們還能夠靈活應(yīng)?來(lái)?機(jī)器的信息。這樣?來(lái)也就掌握了現(xiàn)實(shí)世界中的情況變動(dòng),尤其是提?了企業(yè)中的信息應(yīng)?度。物聯(lián)?實(shí)現(xiàn)的世界物聯(lián)?實(shí)現(xiàn)的世界?家已經(jīng)知道,我們可以借助機(jī)器對(duì)機(jī)器通信采集和積累信息,并靈活運(yùn)?從信息中分析出的數(shù)據(jù)來(lái)?便我們的?活。那么,如果在此基礎(chǔ)上把數(shù)百億臺(tái)設(shè)備都連接上物聯(lián)?,?會(huì)如何呢?以前,?們通過(guò)讓少數(shù)昂貴的?業(yè)機(jī)械通信,來(lái)實(shí)現(xiàn)對(duì)“物”的遠(yuǎn)程控制。今后,?們將更多地以低廉的價(jià)格?量?產(chǎn)?向?戶(hù)的機(jī)器,并讓這些機(jī)器通信。也正因應(yīng)?了從這些“物”中獲取的數(shù)據(jù),各種各樣的服務(wù)才如?后春筍般涌現(xiàn)出來(lái)。此外,先進(jìn)感測(cè)技術(shù)的普及實(shí)現(xiàn)了?類(lèi)對(duì)現(xiàn)實(shí)世界的掌握和預(yù)測(cè),通過(guò)實(shí)時(shí)且海量地搜集?、物、和環(huán)境的數(shù)據(jù),也有望進(jìn)?新型社會(huì)基礎(chǔ)設(shè)施的構(gòu)建,例如強(qiáng)競(jìng)爭(zhēng)?、建設(shè)都市和社會(huì)制度、監(jiān)測(cè)災(zāi)害等異常情況。除了那些?眼就能看明?的設(shè)備,具有連通性(機(jī)器和系統(tǒng)間的互聯(lián)性和關(guān)聯(lián)性)的設(shè)備也在不斷地隨處增加。物聯(lián)?的趨勢(shì)指的就是這?現(xiàn)象。通過(guò)本章,我們?cè)偕?地看?下物聯(lián)?所實(shí)現(xiàn)的是?個(gè)怎樣的世界。智能設(shè)備具備連通性的“物”?絡(luò)系統(tǒng)數(shù)據(jù)分析技術(shù)?家認(rèn)為把這些因素組合到?起,將會(huì)產(chǎn)?出?個(gè)怎樣的充滿(mǎn)?新性的服務(wù)呢?舉個(gè)例?,市?上已經(jīng)出現(xiàn)了很多叫作智能家居的設(shè)備,其?途是控制智能住宅。?利Hue是?款I(lǐng)P?絡(luò)來(lái)控制??亮度和的燈泡。Nest是?種機(jī)器控制器,它能學(xué)習(xí)如何控制空調(diào)等機(jī)器以及如何設(shè)定這些機(jī)器的?標(biāo)值。如果把它們與系統(tǒng)和可穿戴設(shè)備等智能設(shè)備組合在?起,還能實(shí)現(xiàn)由住宅主動(dòng)根據(jù)?的動(dòng)作和?體狀況來(lái)調(diào)整環(huán)境(圖1.5)。圖1.5 根據(jù)?體狀況?動(dòng)控制環(huán)境——以智能家居為例可以說(shuō),當(dāng)下的趨勢(shì)之?就是不停留在單純的控制層?,?是像“憑借短距離通信實(shí)現(xiàn)?主控制和?動(dòng)化”及“通過(guò)機(jī)器學(xué)習(xí)實(shí)現(xiàn)?動(dòng)判斷”這樣,給事物增添附加價(jià)值。蓬勃發(fā)展的蓬勃發(fā)展的標(biāo)準(zhǔn)化活動(dòng)IETE2、3GPP3、ITU4等標(biāo)準(zhǔn)化團(tuán)體以外,?間企業(yè)也圍聯(lián)?積極地開(kāi)展了活動(dòng)。2013年12?,在美國(guó)?通公司的?持下,家電?商的橫向性物聯(lián)?推進(jìn)聯(lián)盟AllSeenAlliance成?了。該聯(lián)盟的意圖在于越過(guò)?這道?墻,規(guī)劃?種統(tǒng)?規(guī)格,讓冰箱、烤箱及電燈等所有電器都能通過(guò)互聯(lián)?實(shí)現(xiàn)協(xié)作。2014年7?,在英特爾和三星的推動(dòng)下,物聯(lián)?聯(lián)盟OIC5成?了。該聯(lián)盟旨在為物聯(lián)?相關(guān)機(jī)器的規(guī)格和認(rèn)證設(shè)?標(biāo)準(zhǔn)??上?知,今后物聯(lián)?普及的關(guān)鍵在于各?商是否采?這種開(kāi)放性規(guī)格。作為從事物聯(lián)?的?程師,在選定產(chǎn)品時(shí)還得把這種標(biāo)準(zhǔn)化動(dòng)向考慮進(jìn)去,這?點(diǎn)是重中之重。TheInstitutionofElectronicsandTelecommunicationEngineers:電?與電信?程師協(xié)會(huì)。ThirdGenerationPartnershipProject:第三代合作伙伴計(jì)劃。InternationalTelecommunicationUnion:國(guó)際電信聯(lián)盟。OpenInterconnectConsortium:開(kāi)放互聯(lián)聯(lián)盟。實(shí)現(xiàn)物聯(lián)?的技術(shù)要素1.3實(shí)現(xiàn)物聯(lián)?的技術(shù)要素要實(shí)現(xiàn)物聯(lián)?,需要很多技術(shù)要素。除了傳感器等電?零件和電?電路以外,還包括應(yīng)?中經(jīng)常?到的技術(shù),以及數(shù)據(jù)分析等。將會(huì)為?家整體解說(shuō)這些技術(shù)。個(gè)別詳細(xì)內(nèi)容在第2章及以后的章節(jié)中會(huì)提到,這?我們先來(lái)總覽?下本書(shū)將會(huì)講解的全部?jī)?nèi)容。設(shè)備1.3.1設(shè)備物聯(lián)?與以往的服務(wù)不同,設(shè)備在其中擔(dān)任著重要的作?。設(shè)指的是?種“物”,它上?裝有?種名為傳感器的電?零件,并與?絡(luò)相連接。?如?家拿著的智能?機(jī)和平板電腦就是設(shè)備的?種。家電產(chǎn)品、我們時(shí)刻戴著的?表以及傘等,只要能滿(mǎn)?上述條件,就是設(shè)備(圖1.6)。圖1.6與?絡(luò)連接的設(shè)備這些設(shè)備起著兩個(gè)作?:感測(cè)和反饋。下?我作?。感測(cè)的作?感測(cè)指的是搜集設(shè)備本?的狀態(tài)和周邊環(huán)境的狀態(tài)并通知系統(tǒng)(圖1.7)。這?說(shuō)的狀態(tài)包括房門(mén)的開(kāi)閉狀態(tài)、房間的溫度和濕度、房間??有沒(méi)有?,等等。設(shè)備是利?傳感器這種電?零件來(lái)實(shí)現(xiàn)感測(cè)的。圖1.7感測(cè)的作?打個(gè)??,如果傘上有?于檢測(cè)其開(kāi)合的傳感器并具備連接?絡(luò)的功能,那么多把傘的開(kāi)合狀態(tài)就可以被檢測(cè)到。利?這?點(diǎn)就能調(diào)查出是否在下?。在這種情況下,如果?個(gè)地區(qū)有多把傘打開(kāi),就可以推測(cè)出該地區(qū)正在下?。反過(guò)來(lái),就能推斷出?多數(shù)傘都合著的地區(qū)沒(méi)有在下?。此外,通過(guò)感測(cè)設(shè)備周邊的環(huán)境還能搜集溫度和濕度等信息。反饋的作?設(shè)備的另外?個(gè)作?是接收從系統(tǒng)發(fā)來(lái)的通知,顯?信息或執(zhí)?指定操作(圖1.8)。系統(tǒng)會(huì)基于從傳感器處搜集到的信息進(jìn)??些反饋并針對(duì)現(xiàn)實(shí)世界采取?動(dòng)。圖1.8 反饋的作?反饋有多種?法。?體分成如圖1.9所?的3種?法,分別是可視化、通知,以及控制。圖1.9 反饋的3種?法??說(shuō),?戶(hù)通過(guò)“可視化”就能使?電腦和智能?機(jī)上的瀏覽瀏覽物聯(lián)?服務(wù)搜集到的信息。雖然最終采取?動(dòng)的是?戶(hù),不過(guò)這是最簡(jiǎn)單的?個(gè)反饋的例?。只要把房間的當(dāng)前溫度和濕度可視化,?就能將環(huán)境控制在最適宜的條件下。利?“推送通知”,系統(tǒng)就能檢測(cè)到“物”的狀態(tài)和某些活動(dòng),并將其通知給設(shè)備。例如從服務(wù)器給?戶(hù)的智能?機(jī)推送通知,使其顯?消息。近年來(lái),F(xiàn)acebookSNS社交應(yīng)?就在貼?地向我們的?機(jī)頻繁推送朋友們吃飯和旅?的消息。如果你去逛超市時(shí),推送通知能告訴你冰箱的?奶過(guò)了保質(zhì)期,洗滌?品賣(mài)完了,這個(gè)世界豈不就更?便了嗎?利?“控制”,系統(tǒng)就可以直接控制設(shè)備的運(yùn)轉(zhuǎn),??需借助??。假設(shè)在某個(gè)夏天的傍晚,你正在從離家最近的?站往家?,你的智能?機(jī)會(huì)?GPS確定你現(xiàn)在的位置和前進(jìn)的?向,?加速度傳感器把你步速通知給物聯(lián)?服務(wù)。這樣?來(lái),服務(wù)就能分析出你正在回家的路上,進(jìn)?從你的移動(dòng)速度預(yù)測(cè)你到家的時(shí)間,然后發(fā)出指?調(diào)節(jié)家?空調(diào)的溫度并令其開(kāi)始運(yùn)轉(zhuǎn)。這樣當(dāng)你回到家的時(shí)候,家?就已經(jīng)很舒服了。傳感器1.3.2傳感器要想像前?說(shuō)的那樣搜集設(shè)備和環(huán)境的狀態(tài),就需要利??個(gè)叫作傳感器的電?零件。傳感器負(fù)責(zé)把物理現(xiàn)象?電?信號(hào)的形式輸出。例如有的傳感器可以把溫度和濕度作為電?信號(hào)輸出,還有的傳感器能把超聲波和紅外線(xiàn)等?類(lèi)難以感知的現(xiàn)象轉(zhuǎn)換成電?信號(hào)輸出。數(shù)碼相機(jī)上使?的圖像傳感器也能把進(jìn)?鏡頭的光線(xiàn)捕捉成3種顏?的光源,并將其轉(zhuǎn)換成電?信號(hào)。因此它也可以歸在傳感器的分類(lèi)?。傳感器的種類(lèi)如圖1.10所?。關(guān)于這些傳感器的種類(lèi)和它們各?的結(jié)構(gòu),我們會(huì)在第3章詳細(xì)介紹。圖1.10 具有代表性的傳感器的種類(lèi)通過(guò)傳感器輸出的電?信號(hào),系統(tǒng)就能夠獲取現(xiàn)實(shí)世界的“物”的狀態(tài)和環(huán)境的狀態(tài)。?們很少單獨(dú)利?這些傳感器,通常都是將它們置?各種各樣的“物”?來(lái)加以利?。最近的智能?機(jī)和平板電腦就內(nèi)置了很多傳感器,例如?于檢測(cè)畫(huà)?傾斜度的陀螺儀傳感器和加速度傳感器,采集語(yǔ)?的?克?,?于拍攝照?的相機(jī),具備指南針功能的磁場(chǎng)傳感器。還有?種東?叫作傳感器節(jié)點(diǎn),它把傳感器本?置?環(huán)境中搜集信息。傳感器節(jié)點(diǎn)是集藍(lán)?和等?線(xiàn)通信裝置與電池為?體的傳器。我們把這些傳感器連接到?種叫作?關(guān)的專(zhuān)??線(xiàn)路由器來(lái)進(jìn)?傳感器數(shù)據(jù)的搜集(圖。圖傳感器節(jié)點(diǎn)和?關(guān)?如,在農(nóng)場(chǎng)測(cè)量栽培植物的環(huán)境時(shí),或是檢測(cè)家?房間的溫度和濕度時(shí),就可以利?這些傳感器節(jié)點(diǎn)。除此之外,市?上還有各種各樣?于醫(yī)療保健的可穿戴設(shè)備,這些設(shè)備上裝有加速度傳計(jì),?們可以利?這些設(shè)備管理??的?活節(jié)奏和健康狀況。這樣?來(lái),物聯(lián)?服務(wù)就能利?傳感器獲取設(shè)備、環(huán)境、?這些“物”的狀態(tài)。??想實(shí)現(xiàn)的服務(wù)都需要哪些信息,為此應(yīng)該利?哪種傳感器和設(shè)備,這些都需要我們仔細(xì)分析。1.3.3 ?絡(luò)在把設(shè)備連接到物聯(lián)?服務(wù)時(shí),?絡(luò)是不可或缺的。不僅要把設(shè)備連接到物聯(lián)?服務(wù),還得把設(shè)備連接到其他設(shè)備。物聯(lián)?使?的?絡(luò)?體上分為兩種:?種是把設(shè)備連接到其他設(shè)備的?絡(luò),另?種是把設(shè)備連接到物聯(lián)?服務(wù)的?絡(luò)(圖1.12)。圖1.12?于物聯(lián)?的兩種?絡(luò)把設(shè)備連接到其他設(shè)備的?絡(luò)?法直接連接到互聯(lián)?的設(shè)備也是存在的。我們通過(guò)把設(shè)備連接他設(shè)備,就能通過(guò)其他設(shè)備把這些不能連接到互聯(lián)?的設(shè)備連接聯(lián)?。前?我們介紹的傳感器節(jié)點(diǎn)和?關(guān)正是兩個(gè)典型的例?。此外,還有通過(guò)智能?機(jī)把可穿戴設(shè)備采集到的數(shù)據(jù)發(fā)送給這?辦法。藍(lán)?和ZigBee是兩種具有代表性的?絡(luò)標(biāo)準(zhǔn)。它們是??線(xiàn)連接的利?的通信協(xié)議也是固定的。這些協(xié)議的特征有采?擅?近距離通信的?線(xiàn)連接、低功耗、易于嵌?嵌?式設(shè)備等。要把設(shè)備連接到其他設(shè)備,除了1對(duì)1之外,還可以采?1對(duì)N、N對(duì)N的?式連接。特別是N對(duì)N連接的情況,我們稱(chēng)這種情況為?狀?絡(luò)(圖1.13)。圖1.13 設(shè)備之間的?絡(luò)連接有?種與?狀?絡(luò)對(duì)應(yīng)的通信標(biāo)準(zhǔn),名為ZigBee。通過(guò)采?N對(duì)N通信?式,設(shè)備可以?邊接管其他的設(shè)備,?邊進(jìn)?遠(yuǎn)程通信。除此之外它還有?個(gè)優(yōu)點(diǎn),那就是即使有?臺(tái)設(shè)備發(fā)?故障?法通信,其他設(shè)備也會(huì)代替它來(lái)執(zhí)?通信。關(guān)于上述設(shè)備的通信規(guī)格我們會(huì)在第3章講解。?把設(shè)備連接到服務(wù)器的?絡(luò)把設(shè)備連接到物聯(lián)?服務(wù)的?絡(luò)時(shí),會(huì)?到互聯(lián)?線(xiàn)路。3G和LTE等移動(dòng)線(xiàn)路最為常?。除了現(xiàn)在Web服務(wù)中?泛使?的HTTP和WebSocket協(xié)議以外,還有?些專(zhuān)為機(jī)器對(duì)機(jī)器通信和物聯(lián)??產(chǎn)?的輕量級(jí)協(xié)議,如MQTT等。關(guān)于該協(xié)議,我們會(huì)在第2章進(jìn)?詳細(xì)說(shuō)明。物聯(lián)?服務(wù)1.3.4物聯(lián)?服務(wù)物聯(lián)?服務(wù)有兩個(gè)作?:?是從設(shè)備接收數(shù)據(jù)以及發(fā)送數(shù)據(jù)給設(shè)備;?是處理和保存數(shù)據(jù)(圖1.14)。圖1.14 系統(tǒng)的作?我們來(lái)具體看?下這兩個(gè)作?。?數(shù)據(jù)交換通常的服務(wù)會(huì)瀏覽器發(fā)送的HTTP請(qǐng)求發(fā)HTML后?瀏覽器顯?。物聯(lián)?服務(wù)則不采?瀏覽器,?是接收從設(shè)備直接發(fā)來(lái)的數(shù)據(jù)。設(shè)備發(fā)來(lái)的數(shù)據(jù)內(nèi)容包括設(shè)備搭載的傳感器所采集到的信息,以及?戶(hù)對(duì)設(shè)備進(jìn)?的操作。設(shè)備和物聯(lián)?服務(wù)的通信?法?致分為兩種:同步傳輸和異步傳輸(圖1.15)。圖1.15 系統(tǒng)和設(shè)備的通信在同步傳輸?shù)那闆r下,設(shè)備發(fā)送數(shù)據(jù)時(shí)會(huì)把數(shù)據(jù)發(fā)送給物聯(lián)?服務(wù)。接下來(lái)直到物聯(lián)?服務(wù)接收完數(shù)據(jù)之前,不管設(shè)備向物聯(lián)?服務(wù)發(fā)送多少次數(shù)據(jù),都算作?次傳輸。反過(guò)來(lái),物聯(lián)?服務(wù)在執(zhí)?對(duì)設(shè)備的反饋時(shí),則是先由設(shè)備向物聯(lián)?服務(wù)發(fā)送請(qǐng)求消息,然后物聯(lián)?服務(wù)會(huì)響應(yīng)請(qǐng)求并將消息發(fā)送給設(shè)備。就這種?法??,直到設(shè)備發(fā)送請(qǐng)求之前,物聯(lián)?服務(wù)都不能把消息發(fā)送給設(shè)備。但是這種?法只適?于不知道設(shè)備IP地址的情況,因?yàn)榫退悴恢涝O(shè)備的IP地址,只要設(shè)備發(fā)送了請(qǐng)求,物聯(lián)?服務(wù)就能把消息發(fā)送給設(shè)備。在異步傳輸中,設(shè)備會(huì)把數(shù)據(jù)發(fā)送給物聯(lián)?服務(wù),每發(fā)送?次,就作?次傳輸。此外,從物聯(lián)?服務(wù)向設(shè)備進(jìn)?傳輸時(shí),?需等待設(shè)發(fā)來(lái)的請(qǐng)求,可以在任意時(shí)間點(diǎn)執(zhí)?發(fā)送。采?這個(gè)?法能服務(wù)規(guī)定的任意?個(gè)時(shí)刻發(fā)送消息。但是,物聯(lián)?服務(wù)需要預(yù)先知發(fā)送消息的設(shè)IP地址。第2章會(huì)??些實(shí)際使?的協(xié)議來(lái)講解這種通信。?處理和保存數(shù)據(jù)就如?家在圖1.14看到的那樣,處理和保存數(shù)據(jù)的操作包括把從設(shè)備接收到的數(shù)據(jù)保存到數(shù)據(jù)庫(kù),以及從接收到的數(shù)據(jù)來(lái)判斷如何控制設(shè)備。從設(shè)備接收到的數(shù)據(jù)不只有能?計(jì)算機(jī)簡(jiǎn)單處理的數(shù)值型數(shù)要實(shí)現(xiàn)的內(nèi)容,還包含圖像、語(yǔ)?、?然語(yǔ)?這些很難直接?計(jì)算處理、沒(méi)有被結(jié)構(gòu)化的數(shù)據(jù)。我們把這種數(shù)據(jù)叫作?結(jié)構(gòu)化數(shù)據(jù)。理時(shí),有時(shí)也會(huì)把那些易于?計(jì)算機(jī)處理的數(shù)據(jù)從?結(jié)構(gòu)化數(shù)據(jù)中取出來(lái),例如把表?圖像和語(yǔ)?特征的值提取出來(lái)。這些信息會(huì)被存到數(shù)據(jù)庫(kù)中。設(shè)備按照所提取數(shù)據(jù)的判斷邏輯來(lái)決定反饋的內(nèi)容,例如基于某個(gè)房間的溫度數(shù)據(jù)來(lái)決定空調(diào)的開(kāi)關(guān)狀態(tài)和?標(biāo)溫度。這些處理和保存的?法?體上分為兩種:?種是對(duì)保存的數(shù)據(jù)定期進(jìn)?采集和處理的批處理,另?種是將收到的數(shù)據(jù)逐次進(jìn)?處理的流處理(圖1.16)。圖1.16 保存和處理數(shù)據(jù)的時(shí)機(jī)根據(jù)房間的溫度變化來(lái)調(diào)整空調(diào)的運(yùn)轉(zhuǎn)時(shí),從向空調(diào)發(fā)出指?到溫發(fā)?變化,這中間會(huì)需要?段時(shí)間。這種情況下就適合采?批處理持續(xù)記錄每隔?定時(shí)間的溫度值,并定期執(zhí)?處理。此外,如果回到房間之后再打開(kāi)空調(diào),那么就適合采?能?即執(zhí)?操作的流處理。數(shù)據(jù)分析1.3.5數(shù)據(jù)分析前?節(jié)我們以“溫度傳感器和空調(diào)運(yùn)轉(zhuǎn)的關(guān)系”為例進(jìn)?了說(shuō)明。那我們能像這個(gè)例?那樣,輕松實(shí)現(xiàn)“根據(jù)房間溫度控制空調(diào)”這嗎?要實(shí)現(xiàn)這??的,需要決定控制空調(diào)開(kāi)/關(guān)的房間溫度值,也就是決定溫度的閾值。這種情況下,閾值會(huì)根據(jù)使?者?的?有所不同。舉個(gè)例?,把空調(diào)的功耗降到最?所需要的閾值和保持令?體感舒適的溫度所需要的閾值就是兩個(gè)不同的值。此外,為了能準(zhǔn)確判斷房間?有沒(méi)有?,需要從多個(gè)傳感器的值所包含的關(guān)聯(lián)性來(lái)判斷?在或不在房間?。?類(lèi)很難光憑經(jīng)驗(yàn)去摸索和決定這種值。這就凸顯出了數(shù)據(jù)分析的重要性。數(shù)據(jù)分析的代表性?法有兩種,分別是統(tǒng)計(jì)分析和機(jī)器學(xué)習(xí)。這?就來(lái)看看我們?這兩種?法能辦到什么(圖1.17)。圖1.17數(shù)據(jù)分析的兩種?法統(tǒng)計(jì)分析統(tǒng)計(jì)分析是?數(shù)學(xué)?法通過(guò)搜集到的?量數(shù)據(jù)來(lái)明確事物的聯(lián)系性的?法。?如為了實(shí)現(xiàn)給空調(diào)節(jié)能的?的,我們調(diào)查了空調(diào)在某個(gè)固定的溫度下運(yùn)轉(zhuǎn)時(shí),房間的溫度和空調(diào)的耗電量,并將這些數(shù)據(jù)制成了表格(圖1.18)。圖1.18 空調(diào)的電?和室溫的關(guān)系?例從這個(gè)關(guān)系中可以推導(dǎo)出在室溫下把空調(diào)溫度設(shè)定在多少才能最省電,由此就能決定閾值了。上述?例采?的是先填表再分析的?法,除此之外還有?種叫作回歸分析的統(tǒng)計(jì)?法,此?法我們會(huì)在第6章詳細(xì)說(shuō)明。機(jī)器學(xué)習(xí)統(tǒng)計(jì)分析基于?量數(shù)據(jù)之間的聯(lián)系性,明確當(dāng)前數(shù)據(jù)間形成的關(guān)聯(lián)。機(jī)器學(xué)習(xí)則不僅僅能進(jìn)?分析,還能預(yù)測(cè)今后的發(fā)展?fàn)顩r。機(jī)器學(xué)習(xí)就如它的字?意思?樣,計(jì)算機(jī)會(huì)按照程序決定的算法,機(jī)械性地學(xué)習(xí)所給數(shù)據(jù)之間的聯(lián)系性。當(dāng)給出未知數(shù)據(jù)時(shí),也會(huì)輸出與其對(duì)應(yīng)的值。機(jī)器學(xué)習(xí)分為兩個(gè)階段:學(xué)習(xí)階段和識(shí)別階段(圖1.19)。在學(xué)習(xí)階段,?個(gè)名為學(xué)習(xí)器的程序會(huì)基于?些訓(xùn)練數(shù)據(jù),機(jī)械性地掌握這些數(shù)據(jù)之間的聯(lián)系。作為學(xué)習(xí)階段的結(jié)果,計(jì)算機(jī)會(huì)根據(jù)機(jī)器學(xué)習(xí)的算法輸出參數(shù),然后以這個(gè)參數(shù)為基礎(chǔ)創(chuàng)建叫作鑒別器的程序。只要把未知的數(shù)據(jù)給這個(gè)鑒別器,就能輸出最適合這個(gè)值的結(jié)果。圖1.19機(jī)器學(xué)習(xí)?例舉個(gè)例?,假設(shè)我們想使?若?種傳感器來(lái)識(shí)別房間?有沒(méi)有?。這種情況下需要準(zhǔn)備兩種數(shù)據(jù),即房間?有?時(shí)的傳感器數(shù)據(jù)(正?例?)和房間?沒(méi)?時(shí)的傳感器數(shù)據(jù)(反?例?)。計(jì)算機(jī)通過(guò)把這兩種數(shù)據(jù)分別交給學(xué)習(xí)器,可以獲取制作鑒別器?的參數(shù)。對(duì)于以參數(shù)為基準(zhǔn)制作的鑒別器??,只要輸?從各個(gè)感測(cè)設(shè)備接收到的數(shù)據(jù),鑒別器就能輸出結(jié)果,告訴我們現(xiàn)在房間?是否有?。上述內(nèi)容屬于機(jī)器學(xué)習(xí)的?例之?,被稱(chēng)作分類(lèi)問(wèn)題。在?于執(zhí)?數(shù)據(jù)分類(lèi)的機(jī)器學(xué)習(xí)算法中有很多途徑,如?于垃圾郵件過(guò)濾器的?葉斯過(guò)濾器和?于分類(lèi)?檔及圖像的?持向量機(jī)(SupportMachine,SVM)等。此外,除了分類(lèi)問(wèn)題以外,機(jī)器學(xué)習(xí)還能很多領(lǐng)域的問(wèn)題。第2章 物聯(lián)?的架構(gòu)第物聯(lián)?的整體結(jié)構(gòu)2.1物聯(lián)?的整體結(jié)構(gòu)實(shí)現(xiàn)物聯(lián)?時(shí),物聯(lián)?服務(wù)?體上發(fā)揮著兩個(gè)作?。第?是把從設(shè)備收到的數(shù)據(jù)保存到數(shù)據(jù)庫(kù),并對(duì)采集的數(shù)據(jù)進(jìn)?分析。第?是向設(shè)備發(fā)送指令和信息。本章將會(huì)為?家介紹如何構(gòu)建物聯(lián)?服務(wù),以及?于實(shí)現(xiàn)物聯(lián)?的重要要素。整2.1.1整物聯(lián)??體上有3個(gè)構(gòu)成要素,如圖2.1所?。?個(gè)是設(shè)備,另?個(gè)是?關(guān),再來(lái)就是服務(wù)器。關(guān)于設(shè)備的基本結(jié)構(gòu)和使?的技術(shù),我3章詳細(xì)說(shuō)明。因此本章并不涉及設(shè)備。我們來(lái)詳細(xì)看?下?樣的機(jī)制才能實(shí)現(xiàn)?關(guān)和服務(wù)器。圖2.1 物聯(lián)?的整體結(jié)構(gòu)2.1.2 ?關(guān)如圖2.1左下所?,物聯(lián)?使?的設(shè)備中,有3臺(tái)設(shè)備不能直接連接到互聯(lián)?。?關(guān)就負(fù)責(zé)把這些設(shè)備轉(zhuǎn)發(fā)到互聯(lián)?。?關(guān)指的是能連接多臺(tái)設(shè)備,并具備直接連接到互聯(lián)?的功能的機(jī)器和軟件(圖2.2)。如今,市?上有很多種?關(guān)。在多數(shù)情況下,憑Linux操作系統(tǒng)來(lái)運(yùn)?。圖2.2 選擇?關(guān)的標(biāo)準(zhǔn)選擇?關(guān)時(shí)有?項(xiàng)重要的標(biāo)準(zhǔn),我們來(lái)?起看?下。接?第?重要的是?于連接?關(guān)和設(shè)備的接?。?關(guān)的接?決定了能連接的設(shè)備,因此重點(diǎn)在于選擇?個(gè)適配設(shè)備的接?。有線(xiàn)連接?式包括串?通信和USB連接。串?通信中經(jīng)常?的是?種叫作D-SUB9針(pin)的連接器,?USB連接中?到的USB連接器則種類(lèi)繁多。?線(xiàn)連接中?的接?是藍(lán)?和Wi-Fi(IEEE802.11)。此外,還920MHz頻段的Zigbee標(biāo)準(zhǔn),以及各制造商們的專(zhuān)屬協(xié)議。第3章會(huì)詳細(xì)講解這些規(guī)格各?的特征,重點(diǎn)在于根據(jù)設(shè)備對(duì)應(yīng)的標(biāo)準(zhǔn)來(lái)選擇接?。?絡(luò)接?我們?以太?或、來(lái)連接外部?絡(luò)。?絡(luò)接?會(huì)影響到?關(guān)的設(shè)置場(chǎng)所。以太?采?有線(xiàn)連接,通信環(huán)境穩(wěn)定。然?正因?yàn)椴?的是有線(xiàn)連接,所以必須把LAN電纜布線(xiàn)到?關(guān)的設(shè)置場(chǎng)所因此,在設(shè)置場(chǎng)所??就會(huì)在某種程度上受到限制。對(duì)連接??,設(shè)置場(chǎng)所就?較?由了,但通信的質(zhì)量會(huì)受信強(qiáng)弱影響,所以通信不如有線(xiàn)連接穩(wěn)定。因此,有時(shí)很難在信號(hào)不良的?樓和??等封閉環(huán)境中設(shè)置。不連接有個(gè)好處,即只使??關(guān)就能完成和外部的通信,因此操作起來(lái)很簡(jiǎn)單。此外,想使?時(shí),需要和電信運(yùn)營(yíng)商簽訂協(xié)議并獲取SIM卡,這點(diǎn)使??機(jī)?樣。硬件相對(duì)于?般計(jì)算機(jī)??,?關(guān)在CPU和內(nèi)存這些硬件的性能受限。我們需要確定讓?關(guān)做哪些事情,也需要考慮到它的硬件性能。軟件?們主要使?Linux操作系統(tǒng)來(lái)運(yùn)??關(guān)。雖然有很多種?于服務(wù)器的Linux,不過(guò),?關(guān)上搭載的Linux是?向嵌?式的。此外,還有?個(gè)叫作BusyBox的軟件,它運(yùn)?起來(lái)占?內(nèi)存少,集成了標(biāo)準(zhǔn)的Linux命令?具。它?于在硬件資源匱乏的時(shí)候運(yùn)??關(guān)。除此之外,還要考慮是否有?于控制?關(guān)功能的程序庫(kù),以及與這種程序庫(kù)對(duì)應(yīng)的語(yǔ)?等。電源說(shuō)起來(lái),電源很容易被?們遺忘。?關(guān)基本上都是使?AC適配器當(dāng)電源的,因此需要事先在設(shè)置?關(guān)的場(chǎng)所準(zhǔn)備好電源。如果?關(guān)本?搭載有電池,那么就不需要準(zhǔn)備電源了,不過(guò)需要進(jìn)?充電等維護(hù)?作。2.1.3在功能??,物聯(lián)?服務(wù)?體上可分為3個(gè)部分,本書(shū)分別稱(chēng)它們?yōu)榍岸瞬糠?、處理部分,以及?shù)據(jù)庫(kù)部分(圖2.3)。圖2.3 物聯(lián)?服務(wù)的3個(gè)功能?先,前端部分包括數(shù)據(jù)接收服務(wù)器和數(shù)據(jù)發(fā)送服務(wù)器。數(shù)據(jù)接務(wù)器接收設(shè)備和?關(guān)發(fā)來(lái)的數(shù)據(jù),轉(zhuǎn)交給后續(xù)的處理部分。數(shù)據(jù)發(fā)服務(wù)器則剛好相反,它負(fù)責(zé)把從處理服務(wù)器接收到的內(nèi)容發(fā)送給設(shè)備。通常情況下,Web服務(wù)的前端部分只接受HTTP協(xié)議。?物聯(lián)?服務(wù)的前端部分則需要根據(jù)連接設(shè)備的不同來(lái)匹配HTTP以外的協(xié)議。使?者需要考慮到協(xié)議的實(shí)時(shí)性和通信的輕量化,以及能否以服務(wù)器為起點(diǎn)發(fā)送數(shù)據(jù)。我們會(huì)在2.2節(jié)重新講解這些協(xié)議。處理部分負(fù)責(zé)處理從前端部分接收到的數(shù)據(jù)。這?的“處理”指的是分解數(shù)據(jù)、存儲(chǔ)數(shù)據(jù)、分析數(shù)據(jù)、?成發(fā)給設(shè)備的通知內(nèi)容,等等。據(jù)處理包括批處理和流處理等,批處理即把數(shù)據(jù)存?數(shù)據(jù)進(jìn)?處理,?流處理是逐次處理從前端部分收到的數(shù)據(jù)。使根據(jù)處理內(nèi)容和數(shù)據(jù)特性來(lái)靈活使?這些“處理”。最后是數(shù)據(jù)庫(kù)。這?的數(shù)據(jù)庫(kù)不只會(huì)?到關(guān)系數(shù)據(jù)庫(kù),還會(huì)?到NoSQL數(shù)據(jù)庫(kù)。當(dāng)然,使?者需要根據(jù)想存儲(chǔ)的數(shù)據(jù)和想使?的?來(lái)選擇數(shù)據(jù)庫(kù)。采集數(shù)據(jù)2.2采集數(shù)據(jù)??關(guān)的作?就如我們前?說(shuō)的那樣,?關(guān)是?臺(tái)?于把不能直接連接到互聯(lián)?的設(shè)備轉(zhuǎn)發(fā)連接到互聯(lián)?的設(shè)備。再往細(xì)了說(shuō),?關(guān)是由3種功能構(gòu)成的(圖2.4)。圖2.4?關(guān)的功能這3種功能分別是連接設(shè)備功能、數(shù)據(jù)處理功能和向服務(wù)器發(fā)送數(shù)的功能。此外,實(shí)際使??關(guān)執(zhí)?應(yīng)?時(shí),還需要其他的管理能。管理應(yīng)?功能5章單獨(dú)介紹。接下來(lái)就來(lái)詳細(xì)看看?關(guān)的3種功能。連接設(shè)備設(shè)備和?關(guān)是通過(guò)各種各樣的接?連接的。當(dāng)通過(guò)傳感器終端連接時(shí),多數(shù)情況下是傳感器單??持續(xù)向服務(wù)器發(fā)送數(shù)據(jù)。根據(jù)設(shè)同,也存在設(shè)備申請(qǐng)從外部獲取數(shù)據(jù)時(shí),服務(wù)器向設(shè)備發(fā)送數(shù)據(jù)的況,這時(shí)就需要通過(guò)?關(guān)申請(qǐng)數(shù)據(jù)。?成要發(fā)送的數(shù)據(jù)接下來(lái)把從設(shè)備接收到的數(shù)據(jù)轉(zhuǎn)化成能發(fā)送給服務(wù)器的格式。在表?從設(shè)備發(fā)送到?關(guān)的數(shù)據(jù)時(shí),也有把4位?進(jìn)制數(shù)(如?進(jìn)制數(shù)據(jù)和BCD碼)替換成?位?進(jìn)制數(shù)數(shù)據(jù)來(lái)表?的(圖2.5)。這樣的數(shù)據(jù)會(huì)被直接發(fā)給服務(wù)器,?是在?關(guān)處被轉(zhuǎn)化成數(shù)值數(shù)據(jù)和字符串的格式。圖2.5 BCD碼還存在下?這種情況:不把每臺(tái)設(shè)備發(fā)來(lái)的數(shù)據(jù)直接發(fā)送給服務(wù)器,?是將?量數(shù)據(jù)整合在?起再發(fā)送給服務(wù)器。這么做有以下兩個(gè)原因。第?,通過(guò)整合數(shù)據(jù)能減少數(shù)據(jù)的附加信息,減少數(shù)據(jù)量。第?,通過(guò)?并發(fā)送數(shù)據(jù)能減輕訪(fǎng)問(wèn)物聯(lián)?服務(wù)時(shí)對(duì)服務(wù)器造成的負(fù)擔(dān)。發(fā)送數(shù)據(jù)給服務(wù)器向物聯(lián)?服務(wù)發(fā)送數(shù)據(jù)。此時(shí),需要根據(jù)服務(wù)器來(lái)決定發(fā)送數(shù)據(jù)間間隔和發(fā)送數(shù)據(jù)的協(xié)議。另外,為了能從物聯(lián)?的服務(wù)器接收消息,還得事先準(zhǔn)備好這種功能。接收數(shù)據(jù)2.3接收數(shù)據(jù)2.3.1 數(shù)據(jù)接收服務(wù)器的作?數(shù)據(jù)接收服務(wù)器就跟它的字?意思?樣,負(fù)責(zé)接收從設(shè)備發(fā)送來(lái)的數(shù)據(jù)。它在設(shè)備和系統(tǒng)之間起著橋梁作?。有很多種?法可以從設(shè)備把數(shù)據(jù)發(fā)送給服務(wù)器,其中具有代表性的包括以下兩種?法。準(zhǔn)備?個(gè)使?了HTTP協(xié)議的API 訪(fǎng)問(wèn)設(shè)備(如通常的Web系統(tǒng))執(zhí)?語(yǔ)?和視頻的實(shí)時(shí)通信(如WebSocket和WebRTC)除此之外,還出現(xiàn)了?種名為MQTT的、專(zhuān)門(mén)針對(duì)物聯(lián)?的新協(xié)議。本章將為?家介HTTP協(xié)議、、MQTT這?個(gè)典型協(xié)議。協(xié)議2.3.1 HTTP協(xié)議HTTP協(xié)議提供的是最?眾化且最簡(jiǎn)易的?法。使??般的框架就可以制作數(shù)據(jù)接收服務(wù)器。設(shè)備?HTTP的GET?POST?訪(fǎng)問(wèn)服務(wù)器,把數(shù)據(jù)存?請(qǐng)求參數(shù)BODY并發(fā)送(圖2.6)。圖2.6通過(guò)HTTP協(xié)議發(fā)送和接收數(shù)據(jù)HTTP協(xié)議是的標(biāo)準(zhǔn)協(xié)議,這?點(diǎn)?不?說(shuō)。因此HTTP協(xié)議和的兼容性?常強(qiáng)。此外,因?yàn)镠TTP協(xié)議有?常多的技術(shù)訣竅,所以我們必須在制作實(shí)際系統(tǒng)時(shí)審視服務(wù)器的結(jié)構(gòu),應(yīng)?程序的架構(gòu)以及安全性等。關(guān)于這點(diǎn),有很多事例值得參考。另外,HTTP協(xié)準(zhǔn)備了OSS的框架,?便?們使?。COLUMN RESTAPI設(shè)備應(yīng)該如何訪(fǎng)問(wèn)物聯(lián)?服務(wù)呢??HTTP協(xié)議訪(fǎng)問(wèn)的時(shí)候,也得從GETPOST中選擇?種合適的?法來(lái)訪(fǎng)問(wèn)。除務(wù),?般服務(wù)中公開(kāi)的API也應(yīng)格外重視這個(gè)問(wèn)題。在Web服務(wù)的世界?,有?種思路叫作RESTful。REST是?種接?,它為特定的URL指定參數(shù)并執(zhí)?訪(fǎng)問(wèn),作為其響應(yīng)來(lái)獲取結(jié)果。它通過(guò)?多個(gè)HTTP?法訪(fǎng)問(wèn)?個(gè)URL,來(lái)對(duì)?個(gè)URL獲取和注冊(cè)數(shù)據(jù)。這樣?來(lái),URL的作?就易于理解了。例如,使?GET?法訪(fǎng)問(wèn)/sensor/temperature就能獲取溫度傳感器的值。使?POST?法?并訪(fǎng)問(wèn)傳感器數(shù)據(jù),就會(huì)追加新的傳感器數(shù)據(jù)。如果想?除了RESTful以外的?法實(shí)現(xiàn)同樣的功能,就需要?成?于獲取以往數(shù)據(jù)的URL和追加數(shù)據(jù)的URL,并決定其分別?GET?法訪(fǎng)問(wèn)還是?POST?法訪(fǎng)問(wèn)。RESTful的思路保證了URL設(shè)計(jì)的簡(jiǎn)單性,請(qǐng)?家務(wù)必審視?下RESTful的思路。是?種通信協(xié)議,?于在互聯(lián)?上實(shí)現(xiàn)套接字通信。它實(shí)了瀏覽服務(wù)器間的數(shù)據(jù)雙向連續(xù)傳輸。就HTTP協(xié)議??,每次發(fā)送數(shù)據(jù)都必須?成發(fā)送數(shù)據(jù)?的通信路徑及連接。此外,?般情況下,客戶(hù)端沒(méi)有發(fā)出申請(qǐng)就不能進(jìn)?通信。相對(duì)??就不同了。只要?開(kāi)始根據(jù)客戶(hù)端發(fā)出的連接請(qǐng)確?了連接,就能持續(xù)?同?個(gè)連接傳輸數(shù)據(jù)。另外,只要確?了連接,就算客戶(hù)端沒(méi)有發(fā)出申請(qǐng),服務(wù)器也能給客戶(hù)端發(fā)送數(shù)據(jù)(圖2.7)。圖2.7 通過(guò)WebSocket協(xié)議傳輸數(shù)據(jù)這樣?來(lái),在發(fā)送語(yǔ)?數(shù)據(jù)等連續(xù)的數(shù)據(jù),以及發(fā)?與服務(wù)器的相互交換時(shí),就能使?了。??只提供服務(wù)器與客端的數(shù)據(jù)交換,因此需要使?者另外決定在應(yīng)?層上使?的協(xié)議。MQTTMQTT(MQTelemetryTransport,消息隊(duì)列遙測(cè)傳輸)是近年來(lái)出現(xiàn)的?種新型協(xié)議,物聯(lián)?領(lǐng)域會(huì)將其作為標(biāo)準(zhǔn)協(xié)議。MQTT原本是IBM公司開(kāi)發(fā)的協(xié)議,現(xiàn)在則開(kāi)源了,被?們不斷開(kāi)發(fā)著。MQTT是?種能實(shí)現(xiàn)?對(duì)多通信(?們稱(chēng)之為發(fā)布或訂閱型)的協(xié)議。它由3種功能構(gòu)成,分別是中介(broker)、發(fā)布者(publisher)和訂閱者(subscriber)(圖2.8)。圖2.8 通過(guò)MQTT傳輸消息中介承擔(dān)著轉(zhuǎn)發(fā)MQTT通信的服務(wù)器的作?。相對(duì)??,發(fā)布者閱者則起著客戶(hù)端的作?。發(fā)布者是負(fù)責(zé)發(fā)送消息的客戶(hù)端,?訂閱者是負(fù)責(zé)接收消息的客戶(hù)端。MQTT交換的消息都附帶“主題”地址,各個(gè)客戶(hù)端把這個(gè)“主題”視為收信地址,對(duì)其執(zhí)?傳輸消息的操作。形象地?喻?下,中介就是接收郵件的郵箱。再來(lái)詳細(xì)看?下MQTT通信的機(jī)制(圖2.9)。?先,中介在等待各個(gè)客戶(hù)端對(duì)其進(jìn)?連接。訂閱者連接中介,把??想訂閱的主題名稱(chēng)告訴中介。這就叫作訂閱。圖2.9 MQTT通信的機(jī)制然后發(fā)布者連接中介,以主題為收信地址發(fā)送消息。這就是發(fā)布。發(fā)布者?發(fā)布主題,中介就會(huì)把消息傳遞給訂閱了該主題的訂閱者。2.9所?,如果訂閱者訂A,那A的情況下,中介才會(huì)把消息傳遞給訂閱者。訂閱者和中介總是處于連接狀態(tài),?發(fā)布者則只需在發(fā)布時(shí)建?連接,不過(guò)要在短期內(nèi)數(shù)次發(fā)布時(shí),就需要保持連接狀態(tài)了。因?yàn)橹薪槠鹬D(zhuǎn)發(fā)消息的作?,所以各個(gè)客戶(hù)端彼此之間沒(méi)有必要知道對(duì)?的IP地址等?絡(luò)上的收信地址。?因?yàn)槎鄠€(gè)客戶(hù)端可以訂閱同?個(gè)主題,所以發(fā)布者和訂閱者是?對(duì)多的關(guān)系。在設(shè)備和服務(wù)器的通信中,設(shè)備相當(dāng)于發(fā)布者,服務(wù)器則相當(dāng)于訂閱者。主題采?的是分層結(jié)構(gòu)。?“#”和“+”這樣的符號(hào)能指定多個(gè)主題。如圖所?,/Sensor/temperature/#中使?了“#”符號(hào),這樣就能指定所有開(kāi)頭為/Sensor/temperature/的主題。此外,/Sensor/+/room1中使號(hào)“+”,這樣?來(lái)就能指定所有開(kāi)頭是/Sensor/、結(jié)尾是/room1的主題。圖2.10 MQTT的主題?例像這樣借助于中介的發(fā)布/訂閱型通信,MQTT就能實(shí)現(xiàn)多臺(tái)設(shè)備之間的通信。另外,MQTT還實(shí)現(xiàn)了輕量型協(xié)議。因此它還能在?絡(luò)帶寬低、可靠性低的環(huán)境下運(yùn)?;?因?yàn)橄?、協(xié)議機(jī)制簡(jiǎn)單,所以在硬件資源(設(shè)備、CPU和內(nèi)存等)受限的條件下也能運(yùn)?,可以說(shuō)是為物聯(lián)?量?定做的協(xié)議。MQTT本?還制,下?我們會(huì)對(duì)其逐?說(shuō)明。?QoSQoS1是QualityofService(服務(wù)質(zhì)量)的簡(jiǎn)稱(chēng)。這個(gè)詞在?絡(luò)領(lǐng)域表?的是通信線(xiàn)路的品質(zhì)保證。MQTT?存在3個(gè)等級(jí)的QoS?!鞍l(fā)布者和中介之間”以及“中介和訂閱者之間”都分別定義了不同的QoS等級(jí),以異步的?式運(yùn)?。此外,當(dāng)“中介與訂閱者之間”指定的QoS?于“發(fā)布者和中介之間”交換的QoS時(shí),“中介與訂閱者之間”的QoS會(huì)被降級(jí)到指定的QoS。QoS0指的是最多發(fā)送?次消息(atmostonce)(2.11),發(fā)送要遵循TCP/IP通信的“盡?服務(wù)”2。消息分兩種情況,即到達(dá)了?次中介處,或沒(méi)有到達(dá)中介處。QualityofService:服務(wù)質(zhì)量,指?個(gè)?絡(luò)能夠使?各種基礎(chǔ)技術(shù),為指定的?更好的服務(wù)能?,是?絡(luò)的?種安全機(jī)制,也是?來(lái)解決?絡(luò)延遲和阻塞等問(wèn)題的?種技術(shù)。BestEffort:盡?服務(wù),標(biāo)準(zhǔn)的因特?服務(wù)模式。在?絡(luò)接?發(fā)?擁塞時(shí),不顧及?戶(hù)或應(yīng)?,?上丟棄數(shù)據(jù)包,直到業(yè)務(wù)量有所減少為?。圖QoS0(最多只能發(fā)送?次)接下來(lái)的QoS1是?少發(fā)送?次消息(atleastonce)(圖2.12)。圖2.12 QoS1(?少發(fā)送?次消息)中介?接收到消息就會(huì)向發(fā)布者發(fā)送?個(gè)叫作“PUBACK消息”的響應(yīng),除此之外還會(huì)根據(jù)訂閱者指定的QoS發(fā)送消息。當(dāng)發(fā)?故障,或經(jīng)過(guò)?定時(shí)間后仍沒(méi)PUBACK消息時(shí),發(fā)布者會(huì)重新發(fā)送消息。如果中介接收了發(fā)布者發(fā)來(lái)的消息卻沒(méi)有返回PUBACK,那QoS2,它指的是準(zhǔn)確發(fā)送?次消息(exactlyonce)。把它跟QoS1合在?起使?,就能避免接收到重復(fù)的消息(2.13)。2發(fā)送的消息??含有ID。中介收到消息后會(huì)將消息保存,然后給發(fā)布者發(fā)PUBREC消息。發(fā)布者再給中介發(fā)PUBREL消息,然后中介會(huì)給發(fā)布者發(fā)PUBCOMP消息。接下來(lái)中介才會(huì)依據(jù)訂閱者指QoS,向訂閱者傳遞接收到的消息。圖2.13 QoS2(只發(fā)送?次消息)此外,就QoS2??,有時(shí)使?的中介會(huì)影響消息的傳遞時(shí)間。?們通常使?的是QoS0,只有要確保信息發(fā)送成功時(shí)才使?QoS1QoS2,這樣?來(lái)可以減少?絡(luò)的負(fù)擔(dān)。后?將會(huì)講到Cleansession,其中QoS的設(shè)定也是?常重要的。?Retain訂閱者只能接收在訂閱之后發(fā)布的消息,但如果發(fā)布者事先發(fā)布了帶有Retain標(biāo)志的消息,那么訂閱者就能在訂閱后?上收到消息。當(dāng)發(fā)布者發(fā)布了帶有Retain標(biāo)志的消息時(shí),中介會(huì)把消息傳遞給訂了主題的訂閱者,同時(shí)保存帶有Retain標(biāo)志的最新的消息。此時(shí)別的訂閱者訂閱了主題,就能?上收到帶有Retain標(biāo)志的新消息(2.14)。圖2.14 Retain?Will有“遺?”的意思。由于中介的I/O錯(cuò)誤或?絡(luò)故障等情況,可能會(huì)突然從中介斷就是專(zhuān)門(mén)針對(duì)于這種情況的?個(gè)機(jī)構(gòu),它?于定義中介向訂閱者發(fā)送的消息(圖2.15)。圖2.15 Will發(fā)布者在連接中介時(shí)會(huì)?到CONNECT(連接)消息,連接時(shí)對(duì)其定標(biāo)志、要發(fā)送的消息以及QoS。這樣?來(lái),如果連接意外斷開(kāi)消息就會(huì)被傳遞給訂閱者。另外,還有?個(gè)標(biāo)志叫Retain。通過(guò)指定這個(gè)標(biāo)志,就能跟前?說(shuō)的Retain達(dá)到同樣的效果,即在中介處保存消息。當(dāng)發(fā)布者使?DISCONNECT(斷開(kāi)連接)消息明確表明連接已斷開(kāi)時(shí),Will消息就不會(huì)被發(fā)送給訂閱者。?CleansessionCleansession?于指定中介是否保留了訂閱者的已訂閱狀態(tài)。?CONNECT消息連接時(shí),訂Cleansession標(biāo)志設(shè)01。是保session,1是不保session。若指定Cleansession為0且中介已經(jīng)連接上了訂閱者,則中介需要在訂閱者斷開(kāi)連接后保留訂閱的消息。另外,如果訂閱者的連接已經(jīng)斷開(kāi),且發(fā)布者已經(jīng)發(fā)布了QoS1、QoS2的消息給已訂閱的主題時(shí),介則會(huì)把消息保存,等訂閱者再次連接時(shí)發(fā)送給訂閱者(圖2.16)。圖2.16Cleansession若指定Cleansession為1并連接,中介就會(huì)廢棄以往保留的客戶(hù)端息,將其當(dāng)成?次“?凈”的連接來(lái)看待。此外,訂閱者斷開(kāi)連接時(shí),中介也會(huì)廢棄所有的信息。我們可以?表2.1所?的?種產(chǎn)品來(lái)實(shí)現(xiàn)MQTT。是否?持前?介紹功能則取決于中介的種類(lèi)。表MQTT的實(shí)現(xiàn)表實(shí)現(xiàn)QoSRetainWillCleansession其他ActiveMQ5.10.0(?持插件)0、1、2?持不?持不?持有獨(dú)?的指定主題的?法Apolo1.70、1、2?持?持?持-mosquitto1.3.50、1、2?持?持?持-RabitoMQ3.4.3(?持插件)只有0和1不?持?持?持-除此之外,?個(gè)叫Paho的庫(kù)還公開(kāi)了發(fā)布者和訂閱者等客戶(hù)端功能。Java、JavaScript、Python配PahoC語(yǔ)?C++配Paho。因此,我們能夠?qū)⑵渑c設(shè)備結(jié)合起來(lái)并加以使?。數(shù)據(jù)格式數(shù)據(jù)格式前?我們圍繞?于接收數(shù)據(jù)的通信過(guò)程,即協(xié)議進(jìn)?了講解。事實(shí)上,數(shù)據(jù)就是通過(guò)協(xié)議來(lái)進(jìn)?交換的。當(dāng)然,就如我們前?所說(shuō)條規(guī)則在物聯(lián)?的世界?也是不變的。數(shù)據(jù)要經(jīng)過(guò)協(xié)議進(jìn)?交換,數(shù)據(jù)的格式也很重要。通過(guò)協(xié)議來(lái)使?的數(shù)據(jù)格式中,性的包括XMLJSON(圖2.17)。圖2.17具有代表性的格式從物聯(lián)?的?度來(lái)說(shuō),使?者也能很?便地使?XML和JSON。例?,假設(shè)設(shè)備要發(fā)送傳感器的值,此時(shí)除了發(fā)送傳感器的值以外,還要?并發(fā)送數(shù)據(jù)接收時(shí)間、設(shè)備的機(jī)器信息以及?戶(hù)信息等數(shù)據(jù)。?然,設(shè)備還會(huì)通知多個(gè)傳感器的值和機(jī)器的狀態(tài)。這樣?來(lái),使?者就需要好好地把從設(shè)備發(fā)送來(lái)的數(shù)據(jù)結(jié)構(gòu)化。2.18XMLJSON分別表?了兩臺(tái)傳感器的信息、設(shè)備的狀態(tài)獲取數(shù)據(jù)的時(shí)間,以及發(fā)送數(shù)據(jù)的設(shè)備名稱(chēng)等。圖2.18 傳感器信息的?例(XML和JSON)?較?者可知,XML的格式?JSON更容易理解。然?XML的字符數(shù)較多,數(shù)據(jù)量較?。相對(duì)??,JSON?XML字符數(shù)少,數(shù)據(jù)量也?。XMLJSON這兩種數(shù)據(jù)格式都在每種語(yǔ)?中實(shí)現(xiàn)了各?的庫(kù),使者通過(guò)程序就能很輕松地使?這些庫(kù)。那么到底使?哪種才好呢?關(guān)于這點(diǎn)我們不能?概?論,不JSON數(shù)據(jù)量?,更適合使?移動(dòng)線(xiàn)路等低速線(xiàn)路通信的情況。設(shè)備傳來(lái)的數(shù)不?樣,?多是傳感器、圖像、語(yǔ)?等數(shù)值據(jù)。相較于?本??,這樣的數(shù)據(jù)更適合??進(jìn)制來(lái)處理。不過(guò),我們前?介紹XMLJSON都是??本格式來(lái)處理數(shù)據(jù)的?;谖锫?lián)?服務(wù)處理這些格式時(shí),要把?本數(shù)據(jù)轉(zhuǎn)換成數(shù)值數(shù)據(jù)和?進(jìn)制數(shù)據(jù)。因此需要進(jìn)?兩項(xiàng)?作,即解析XMLJSON格式,把解析結(jié)果從?本格式轉(zhuǎn)換到?進(jìn)制形式。這樣?來(lái),來(lái)處理。如果能直接以?進(jìn)制形式接收數(shù)據(jù),是不是就能更迅速地處理數(shù)據(jù)了呢?由此,?種數(shù)據(jù)格式應(yīng)運(yùn)??,它就是MessagePack(圖2.19)圖2.19 使?MessagePack格式的傳感器數(shù)據(jù)?例以及與JSON的對(duì)?MessagePack的數(shù)據(jù)格式雖然跟JSON相似,其數(shù)據(jù)卻保留了?進(jìn)形式。因此,雖然這種數(shù)據(jù)格式不?便?們直接閱讀,但計(jì)算機(jī)卻能很容易地處理。?因?yàn)镸essagePack發(fā)送的是?進(jìn)制數(shù)據(jù),所以?起以?本形式發(fā)數(shù)據(jù)的JSON,數(shù)據(jù)更加緊湊。MessagePack跟XMLJSON?都提供了?向多種編程語(yǔ)?的庫(kù),另外,近年來(lái)多個(gè)OSS(開(kāi)源軟件)也都采?了MessagePack。我們不能??咬定哪種格式好,哪種格式不好,請(qǐng)各位根據(jù)要發(fā)送的數(shù)據(jù)的特性,來(lái)選擇符合?的的數(shù)據(jù)格式。COLUMN 圖像、語(yǔ)?、視頻數(shù)據(jù)的處理“傳感器數(shù)據(jù)、?本數(shù)據(jù)”和“圖像、語(yǔ)?、視頻”的數(shù)據(jù)格式差別很?。拿圖像、語(yǔ)?、視頻來(lái)說(shuō),?條數(shù)據(jù)之巨?遠(yuǎn)遠(yuǎn)超過(guò)傳數(shù)據(jù),?且這些數(shù)據(jù)是?進(jìn)制數(shù)據(jù),很難轉(zhuǎn)換成字符串,所很難?前?介紹的XMLJSON格式對(duì)它們進(jìn)?處理。?HTTP發(fā)送圖像數(shù)據(jù)時(shí),可以?XML或JSON格式記錄拍攝時(shí)間和設(shè)備的信息,?multi-part/form-data格式來(lái)發(fā)送圖像數(shù)據(jù)。然?,換成語(yǔ)?和視頻時(shí),就是?種時(shí)間上連續(xù)的數(shù)據(jù)。因此,我們?cè)诎l(fā)送語(yǔ)?和視頻數(shù)據(jù)時(shí)需要下?番?夫。例如,需要把語(yǔ)?和視頻分割成?個(gè)個(gè)??件來(lái)發(fā)送。在?協(xié)議進(jìn)?這項(xiàng)操作時(shí),每次發(fā)送?個(gè)?數(shù)據(jù)都會(huì)?成?個(gè)會(huì)話(huà)。這樣?來(lái)就能通過(guò)有效應(yīng)?等協(xié)議來(lái)減輕給物聯(lián)?服務(wù)造成的負(fù)擔(dān)了。這種情況下,使?者或許需要使?MessagePack,或是定義?個(gè)專(zhuān)門(mén)?于處理?進(jìn)制的格式。再或者,還能以?物聯(lián)?服務(wù)進(jìn)?語(yǔ)?和數(shù)據(jù)分析為前提,只在設(shè)備處提取?于分析的特征并發(fā)送,?不是把所有數(shù)據(jù)?并進(jìn)?發(fā)送。?家在試圖實(shí)現(xiàn)包含語(yǔ)?和視頻數(shù)據(jù)的服務(wù)時(shí),不妨考慮?下本專(zhuān)欄的思路。處理數(shù)據(jù)2.4處理數(shù)據(jù)2.4.1 處理服務(wù)器的作?很顯然,處理服務(wù)器就是處理接收到的數(shù)據(jù)的地?。“處理”是?個(gè)抽象的詞語(yǔ),例如保存數(shù)據(jù),以及轉(zhuǎn)換數(shù)據(jù)以使其看上去更易懂,還有從多臺(tái)傳感器的數(shù)據(jù)中發(fā)現(xiàn)新的數(shù)據(jù),這些都是處理。使?者的?的不同,處理服務(wù)器的內(nèi)容也各異。不過(guò)說(shuō)到數(shù)據(jù)的處理?法,它可以歸納成以下4種:數(shù)據(jù)分析、數(shù)據(jù)加?、數(shù)據(jù)保存以及向設(shè)備發(fā)出指令(圖2.20)。圖2.20 數(shù)據(jù)的處理關(guān)于數(shù)據(jù)的分析和加?,有兩種典型的處理?式,分別叫作“批處理”和“流處理”。?先就來(lái)說(shuō)說(shuō)這個(gè)“批處理”和“流處理”。批處理2.4.2批處理批處理的?法是隔?段時(shí)間就分批處理?次積攢的數(shù)據(jù)。?般情況下是先把數(shù)據(jù)存?數(shù)據(jù)庫(kù)?,隔?段時(shí)間就從數(shù)據(jù)庫(kù)獲取數(shù)據(jù),執(zhí)?處理。批處理的重點(diǎn)在于要在規(guī)定時(shí)間內(nèi)處理所有數(shù)據(jù)。因此,數(shù)據(jù)的數(shù)量越多,執(zhí)?處理的機(jī)器性能就得越好。今后設(shè)備的數(shù)量將會(huì)增加,這?點(diǎn)在第?章已經(jīng)解釋過(guò)了。處理從數(shù)量龐?的設(shè)備發(fā)來(lái)的傳感器數(shù)據(jù)和圖像等?型數(shù)據(jù),這被為“?數(shù)據(jù)”。不過(guò),通過(guò)使??種叫作分布式處理平臺(tái)的平臺(tái)軟件,就能?效地處理數(shù)兆、數(shù)千兆這種?型數(shù)據(jù)了。具有代表性的分布處理平臺(tái)包括HadoopSpark。?ApacheHadoopApacheHadoop是?個(gè)對(duì)?規(guī)模數(shù)據(jù)進(jìn)?分布式處理的開(kāi)源框架。Hadoop有?種叫作MapReduce的機(jī)制,?來(lái)?效處理數(shù)據(jù)。MapReduce是?種專(zhuān)門(mén)?于在分布式環(huán)境下?效處理數(shù)據(jù)的機(jī)制,它基本由Map、Shuffle、Reduce這3種處理構(gòu)成(圖2.21)。圖2.21 通過(guò)HadoopMapReduce執(zhí)?批處理Hadoop對(duì)于每個(gè)被稱(chēng)為節(jié)點(diǎn)的服務(wù)器執(zhí)?MapReduce,并統(tǒng)計(jì)結(jié)果。?先是分割數(shù)據(jù),這?的數(shù)據(jù)指的是各個(gè)服務(wù)器的處理對(duì)象。最初負(fù)責(zé)分割數(shù)據(jù)的是Map。Map對(duì)于每條數(shù)據(jù)反復(fù)執(zhí)?同?項(xiàng)處理,通過(guò)Map?發(fā)?變更的數(shù)據(jù)會(huì)被移送到下?項(xiàng)處理,即Shuffle。Shuffle跨Hadoop的節(jié)點(diǎn)來(lái)把同種類(lèi)的數(shù)據(jù)進(jìn)?分類(lèi)。最后,Reduce把分類(lèi)好的數(shù)據(jù)匯總。也就是說(shuō),MapReduce是?種類(lèi)似于收集硬幣,按種類(lèi)給硬再點(diǎn)數(shù)的?法。?Hadoop執(zhí)?處理的時(shí)候,為了能?MapReduce實(shí)現(xiàn)處理內(nèi)容,使?者需要下?番?夫。另外,Hadoop還有?種叫分布式?件系統(tǒng)(HDFS)的機(jī)制,?于在分布式環(huán)境下運(yùn)?Hadoop。HDFS把數(shù)據(jù)分割并存?多個(gè)磁盤(pán)?,取數(shù)據(jù)時(shí),就從多個(gè)磁盤(pán)?同時(shí)讀取分割好的數(shù)據(jù)。這樣?來(lái),跟從?臺(tái)磁盤(pán)?讀出巨?的?件相?,這種?法更能?速地進(jìn)?讀取。如上所述,如果使?MapReduceHDFS這兩種機(jī)制,Hadoop就能?處理巨型數(shù)據(jù)。?ApacheSparkApacheSpark也Hadoop?樣,是?個(gè)分布式處理?規(guī)模數(shù)據(jù)的框架。Spark??種叫RDD(ResilientDistributedDataset,彈性分布數(shù)據(jù)集)的數(shù)據(jù)結(jié)構(gòu)來(lái)處理數(shù)據(jù)(圖2.22)。圖2.22通過(guò)Spark執(zhí)?批處理RDD能夠把數(shù)據(jù)放在內(nèi)存上,不經(jīng)過(guò)磁盤(pán)訪(fǎng)問(wèn)也能處理數(shù)據(jù)。?且RDD使?的內(nèi)存不能被寫(xiě)?,所以要在新的內(nèi)存上展開(kāi)處理結(jié)果。通過(guò)保持內(nèi)存之間的關(guān)系,就能從必要的時(shí)間點(diǎn)開(kāi)始計(jì)算,即使再次計(jì)算也不?從頭算起。根據(jù)這些條件,Spark在反復(fù)處理同?數(shù)據(jù)時(shí)(如機(jī)器學(xué)習(xí)等),就能?常?速地運(yùn)?了。對(duì)物聯(lián)???,傳輸?shù)臄?shù)據(jù)都是?些像傳感器數(shù)據(jù)、語(yǔ)?、圖像這種?較?的數(shù)據(jù)。批處理能夠存儲(chǔ)這些數(shù)據(jù),然后導(dǎo)出當(dāng)天的設(shè)備使?情況,以及通過(guò)圖像處理從拍攝的圖像來(lái)調(diào)查環(huán)境的變化。隨著設(shè)備的增加,想必今后這樣的?型數(shù)據(jù)會(huì)越來(lái)越多。因此,重要的是學(xué)會(huì)在批處理中使?我們介紹的分布式處理平臺(tái)。流處理2.4.3流處理批處理是把數(shù)據(jù)攢起來(lái),?次性進(jìn)?處理的?法。相對(duì)??,流處理是不保存數(shù)據(jù),按照到達(dá)處理服務(wù)器的順序?qū)?shù)據(jù)依次進(jìn)?處理。想實(shí)時(shí)對(duì)數(shù)據(jù)做出反應(yīng)時(shí),流處理是?個(gè)很有效的處理?法。因?yàn)榕幚硎前褦?shù)據(jù)積攢之后隔?段時(shí)間進(jìn)?處理,所以從數(shù)據(jù)到達(dá)之后到處理完畢為?,會(huì)出現(xiàn)時(shí)間延遲。因此,流處理這種把到達(dá)的數(shù)據(jù)逐次進(jìn)?處理的思路就變得很重要了。此外,流處理基本上是不會(huì)保存數(shù)據(jù)的。只要是被使?過(guò)的數(shù)據(jù),如果沒(méi)必要保存,就會(huì)直接丟棄。舉個(gè)例?,假設(shè)有個(gè)系統(tǒng),這個(gè)系統(tǒng)會(huì)對(duì)道路上?駛的?輛的當(dāng)前位置和?輛?刷的運(yùn)轉(zhuǎn)情況進(jìn)?搜集。僅憑搜集那些?刷正在運(yùn)轉(zhuǎn)的?輛的當(dāng)前位置,就能夠?qū)崟r(shí)確定哪?地區(qū)正在下?。此時(shí),使?者可能想保存下過(guò)?的地區(qū)的數(shù)據(jù),這時(shí)候只要保存處理結(jié)果就好,所以原來(lái)的傳感器數(shù)據(jù)可以丟掉不要,流處理正適?于這種情況。?流處理平臺(tái)就能實(shí)現(xiàn)流處理。流處理和批處理?樣,也準(zhǔn)備了框架。在這?就給?家介紹?下ApacheSpark和ApacheStorm這兩個(gè)框架。?SparkStreamingSparkStreaming是作為ApacheSpark(在“批處理”部分介紹過(guò))的庫(kù)被公開(kāi)的。通過(guò)SparkStreaming,就能夠把ApacheSpark拿到流處理中來(lái)使?(圖2.23)。圖2.23 通過(guò)SparkStreaming執(zhí)?流處理SparkStreaming是?RDD分割數(shù)據(jù)?的,它通過(guò)對(duì)分割的數(shù)據(jù)執(zhí)??批量的批處理來(lái)實(shí)現(xiàn)流處理。輸?的數(shù)據(jù)會(huì)被轉(zhuǎn)換成?種叫作的細(xì)且連續(xù)的RDD。先對(duì)?個(gè)RDD執(zhí)?Spark的批處理,將其轉(zhuǎn)別的RDD,然后按順序?qū)λ蠷DD反復(fù)執(zhí)?上述處理來(lái)實(shí)現(xiàn)流處理。?ApacheStormApacheStorm是?于實(shí)現(xiàn)流處理的框架,結(jié)構(gòu)如圖2.24所?。圖2.24 ApacheStorm的結(jié)構(gòu)?Storm處理的數(shù)據(jù)叫作Tuple,這個(gè)Tuple的流程叫作Streams。Storm的處理過(guò)程由Spout和Bolts兩項(xiàng)處理構(gòu)成,這種結(jié)構(gòu)叫作Topology。Spout從其他處理接收到數(shù)據(jù)的時(shí)候,Storm處理就開(kāi)始了。Spout把接收到的數(shù)據(jù)分割Tuple,然后將其流?來(lái)?Streams,這就形成了流處理的??。接下來(lái),Bolts接收Spout以及從其他Bolts輸出的Streams,并以為單位處理收到的Streams,然后將其作為新的Streams輸出??梢?由組合Bolts之間的連接,也可以根據(jù)想執(zhí)?的處理?由組合可以隨意決定使的數(shù)據(jù)類(lèi)型,以及使?JSON等數(shù)據(jù)格式。存儲(chǔ)數(shù)據(jù)2.5存儲(chǔ)數(shù)據(jù)2.5.1 數(shù)據(jù)庫(kù)的作?數(shù)據(jù)庫(kù)的作?是保存并靈活運(yùn)?數(shù)據(jù)(圖2.25)。除此之外,其作?還包括從保存的數(shù)據(jù)中找出與所指定條件相符的數(shù)據(jù)。另外,數(shù)據(jù)庫(kù)還能把多條數(shù)據(jù)連在?起,把它們作為?個(gè)數(shù)據(jù)取出。圖2.25 數(shù)據(jù)庫(kù)的作?打個(gè)??,已知與特定傳感器相關(guān)的ID,測(cè)量時(shí)間,以及溫度傳感器的值。光憑這些數(shù)據(jù),是?法理解數(shù)據(jù)指的是哪個(gè)房間的溫度的。因此就需要傳感器的ID以及跟房間名字有關(guān)的數(shù)據(jù)。把這兩條數(shù)據(jù)?起,才能知道某房間的溫度。圖2.25展?的是?個(gè)叫作RDB(關(guān)系數(shù)據(jù)庫(kù))的數(shù)據(jù)庫(kù)。最近,除了RDB以外還出現(xiàn)了?種叫作NoSQL的數(shù)據(jù)庫(kù)。RDB??種叫作SQL的專(zhuān)門(mén)?來(lái)操作數(shù)據(jù)庫(kù)的語(yǔ)?來(lái)保存和提取數(shù)據(jù)。另???,NoSQL則是?SQL以外的各種?法來(lái)操作數(shù)據(jù)庫(kù)。本書(shū)還會(huì)介紹鍵值存儲(chǔ)(Key-ValueStore,簡(jiǎn)稱(chēng)KVS)和?檔型數(shù)據(jù)庫(kù)等種類(lèi)的數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)的種類(lèi)和特征2.5.2數(shù)據(jù)庫(kù)的種類(lèi)和特征這?我們?并為?家說(shuō)明數(shù)據(jù)庫(kù)的種類(lèi)和特征,以及為了實(shí)現(xiàn)物聯(lián)?服務(wù)?處理設(shè)備數(shù)據(jù)時(shí)的要點(diǎn)。?關(guān)系數(shù)據(jù)庫(kù)關(guān)系數(shù)據(jù)庫(kù)是?們?得最普遍的數(shù)據(jù)庫(kù)。如圖2.25所?,關(guān)系數(shù)據(jù)具備?種叫作表格的表格型數(shù)據(jù)結(jié)構(gòu),其?途在于存儲(chǔ)數(shù)據(jù)庫(kù),使?SQL語(yǔ)?來(lái)對(duì)其執(zhí)?數(shù)據(jù)的提取、插?以及刪除。SQL是?種?常強(qiáng)?的語(yǔ)?,它能??常簡(jiǎn)潔的表述寫(xiě)出命令,多個(gè)表格聯(lián)系到?起,搜索符合?標(biāo)條件的數(shù)據(jù)。此外,使?者還能通過(guò)多種多樣的編程語(yǔ)?來(lái)使?SQL。不過(guò)?旦確定了表格,就很更改其結(jié)構(gòu)了。因此,需要仔細(xì)考慮設(shè)備傳來(lái)的數(shù)據(jù)性質(zhì)再?zèng)Q定結(jié)構(gòu)。舉個(gè)例?,假設(shè)由于傳感器和設(shè)備的增加?導(dǎo)致?些必須保存的數(shù)據(jù)增多,此時(shí),如果表格結(jié)構(gòu)如圖2.26所?,那么就很難再追加新的數(shù)據(jù)了。圖2.26以RDB的表格結(jié)構(gòu)?例A表這種情況下,我們就必須變更表格的條?。?B要更改表格本?。不過(guò),這樣?來(lái)就需要?成?個(gè)新的表格。因此,如圖2.27所?,要?成?個(gè)結(jié)構(gòu)來(lái)把所有傳感器數(shù)據(jù)插個(gè)字段?。采?這個(gè)結(jié)構(gòu)時(shí),即使來(lái)了新的傳感器數(shù)據(jù),也沒(méi)有必要更改表格結(jié)構(gòu)或是追加新的表格。不過(guò)傳感器數(shù)據(jù)的類(lèi)型必須是統(tǒng)?的,?且,這樣?來(lái)就會(huì)在同?個(gè)表格?注冊(cè)?量的數(shù)據(jù)。這種情況下,有時(shí)就得花?段時(shí)間才能從表格?檢索到我們需要的數(shù)據(jù)。為了解決這個(gè)?煩,數(shù)據(jù)庫(kù)提供了?個(gè)叫作索引的機(jī)制。圖2.27 ?于保存?zhèn)鞲衅餍畔⒌谋砀窠Y(jié)構(gòu)?例以上列舉的表格就是?個(gè)例?。關(guān)于?哪種?法構(gòu)成表格更好,我們不能?概?論,?是需要先考慮注冊(cè)的是怎樣的數(shù)據(jù),以后?會(huì)積累多少數(shù)據(jù),然后再下決定。關(guān)系數(shù)據(jù)庫(kù)也不擅?保存圖像和語(yǔ)?等?進(jìn)制形式的數(shù)據(jù)。雖然能夠??種叫BLOB(BinaryLargeObject,?進(jìn)制?對(duì)象)的數(shù)來(lái)達(dá)到保存的?的,不過(guò),這也需要另費(fèi)?番?夫,因?yàn)楦鶕?jù)?途,有時(shí)需要把圖像直接保存為?件,把圖像的路徑單獨(dú)保存在RDB?(圖2.28)。圖2.28?RDB處理圖像和語(yǔ)?數(shù)據(jù)庫(kù)把數(shù)據(jù)保存到硬盤(pán),因此經(jīng)常會(huì)發(fā)?對(duì)硬盤(pán)的訪(fǎng)問(wèn)(磁盤(pán)I/O)。這樣?來(lái),這步處理就?其他處理要慢。就系統(tǒng)中??,這處理速度??容易產(chǎn)?瓶頸的?個(gè)地?。除了介紹的內(nèi)容之外,還有?些需要?家注意的地?,希望?家加深對(duì)這部分內(nèi)容的理靈活運(yùn)?。鍵值存儲(chǔ)鍵值存儲(chǔ)屬于NoSQL數(shù)據(jù)庫(kù)的?種。NoSQL是?種不使?SQL據(jù)庫(kù)的統(tǒng)稱(chēng)。鍵值存儲(chǔ),就是把?種叫作“值”(value)的數(shù)據(jù)值,和能夠?對(duì)?特定“值”的“鍵”(key)的集合保存在?起。此外,還有把數(shù)據(jù)保存在內(nèi)存?的鍵值存儲(chǔ),以及把數(shù)據(jù)保存在硬盤(pán)?的鍵值存儲(chǔ)。前者???能夠?速保存數(shù)據(jù),?另???,因?yàn)閿?shù)據(jù)是放在內(nèi)存上的,所以軟件停?運(yùn)?的時(shí)候,原先保存的內(nèi)容就會(huì)丟失。因此前者適合作為緩存來(lái)使?。?后者保存數(shù)據(jù)的速度雖然不及前者,但即使軟件停?運(yùn)?,數(shù)據(jù)也不會(huì)丟失。有?種叫作Redis的鍵值存儲(chǔ),它具備前后兩者的性質(zhì),在通常情況下它是把數(shù)據(jù)存儲(chǔ)在內(nèi)存上的,但在任何時(shí)間都能夠把數(shù)據(jù)保存到硬盤(pán)。因此,它既能夠?速執(zhí)?存儲(chǔ),也能永久保存數(shù)據(jù)。??檔型數(shù)據(jù)庫(kù)?檔型數(shù)據(jù)庫(kù)和鍵值存儲(chǔ)?樣,都屬于NoSQL數(shù)據(jù)庫(kù)的?種。?檔型數(shù)據(jù)庫(kù)能以XMLJSON這種結(jié)構(gòu)化?檔的格式保存數(shù)據(jù)。特別是近年來(lái),有?種叫MongoDB的?檔型數(shù)據(jù)庫(kù)很受歡迎,它以JSON格式保存數(shù)據(jù)(圖2.29)。圖2.29 ?檔型數(shù)據(jù)庫(kù)MongoDBMongoDB能夠直接保存JSON格式的數(shù)據(jù),還能?JSON的值進(jìn)?索。這樣?來(lái),在?JSON交換傳感器的信息時(shí),就能直接對(duì)數(shù)據(jù)進(jìn)?保存和使?。即使增加了新的數(shù)據(jù)條?或是新增了設(shè)備,也能直接以JSON格式保存數(shù)據(jù),因此,不需要RDB那樣考慮表格的結(jié)構(gòu)?常適合?于?法讀出設(shè)備的數(shù)量和數(shù)據(jù)的種類(lèi)等情況,以及保存?zhèn)鞲衅鞯仍O(shè)備的數(shù)據(jù)。控制設(shè)備2.6控制設(shè)備發(fā)送服務(wù)器的作?發(fā)送服務(wù)器的?的在于向設(shè)備發(fā)送數(shù)據(jù)并控制設(shè)備。發(fā)送服務(wù)器使2.3節(jié)介紹過(guò)HTTP、、MQTT協(xié)議和數(shù)據(jù)格式。發(fā)送服務(wù)器靠在1.3.4節(jié)提到過(guò)的兩種?法來(lái)運(yùn)?,?種是通過(guò)設(shè)請(qǐng)來(lái)發(fā)送數(shù)據(jù)的同步傳輸;另?種是由發(fā)送服務(wù)器在任意時(shí)間發(fā)送數(shù)據(jù)的異步傳輸。那么,就?HTTP、、MQTT協(xié)議來(lái)看看如何實(shí)現(xiàn)同步和異步傳輸。發(fā)送數(shù)據(jù)使?HTTP發(fā)送數(shù)據(jù)要實(shí)現(xiàn)數(shù)據(jù)發(fā)送,HTTP是最簡(jiǎn)單的?法。在這個(gè)?法?,發(fā)送服務(wù)是等待接收HTTP請(qǐng)求的服務(wù)器。設(shè)備向這臺(tái)服務(wù)器申請(qǐng)發(fā)送數(shù)據(jù),作為響應(yīng),服務(wù)器把數(shù)據(jù)發(fā)給設(shè)備(圖2.30)。圖2.30通過(guò)HTTP發(fā)送數(shù)據(jù)使?者需要定期從設(shè)備執(zhí)?輪詢(xún)連接。采?此?法兩個(gè)。原因?:?法確定唯?地址,例如?法給設(shè)備設(shè)定全局IP地址等。種情況下,發(fā)送服務(wù)器就不知道應(yīng)該把數(shù)據(jù)發(fā)送給哪臺(tái)設(shè)備了。原因?:考慮到設(shè)備頻繁斷電和移動(dòng)線(xiàn)路的傳輸費(fèi)?。此時(shí),設(shè)備沒(méi)有持續(xù)連接?絡(luò)。即使設(shè)備已經(jīng)連接過(guò)?絡(luò),但只要沒(méi)有持續(xù)連接,那么,即使發(fā)送服務(wù)器執(zhí)?了發(fā)送數(shù)據(jù)的操作,也發(fā)不到設(shè)備那?去(圖2.31)。圖2.31 服務(wù)器端發(fā)送數(shù)據(jù)困難發(fā)送數(shù)據(jù)使?發(fā)送數(shù)據(jù)使?時(shí),需要?設(shè)備連接發(fā)送服務(wù)器,并確?連接。只要建?了?次連接,就能實(shí)現(xiàn)從發(fā)送服務(wù)器和戶(hù)端發(fā)送數(shù)據(jù)。發(fā)送數(shù)據(jù)使?MQTT發(fā)送數(shù)據(jù)前?介紹了HTTP它們采?的?法都是由設(shè)備訪(fǎng)問(wèn)發(fā)服務(wù)器。就這些?法??,只要客戶(hù)端沒(méi)有發(fā)出申請(qǐng),數(shù)據(jù)就不會(huì)被發(fā)送。當(dāng)然使?者也可以在設(shè)備上建?HTTP協(xié)議,由服務(wù)器來(lái)連接設(shè)備。不過(guò),?旦增加了設(shè)備,服務(wù)器想管理所有設(shè)備就相當(dāng)困難了。針對(duì)這點(diǎn),我們來(lái)試著看?下這種服務(wù)器:它靈活運(yùn)?MQTT,并且發(fā)揮了發(fā)布/訂閱模型的優(yōu)點(diǎn)。使?MQTT時(shí)的發(fā)送服務(wù)器如圖2.32所?。圖2.32通過(guò)MQTT發(fā)送數(shù)據(jù)?先設(shè)備作為訂閱者,向MQTT中介進(jìn)?訂閱。然后,發(fā)送服務(wù)器是發(fā)布者,同樣向中介進(jìn)?發(fā)布。這樣?來(lái),發(fā)送服務(wù)器只需要把確定的數(shù)據(jù)加在主題上發(fā)送就?了,發(fā)送服務(wù)器和設(shè)備都不需要知道彼此的地址。只要知道中介的地址,就能夠?qū)崿F(xiàn)通信。?旦訂閱者斷開(kāi),中介就會(huì)負(fù)責(zé)在斷開(kāi)時(shí)發(fā)送通知,并在重新連接時(shí)再次發(fā)送數(shù)據(jù)。通過(guò)靈活運(yùn)?MQTT的功能,構(gòu)建發(fā)送服務(wù)器就變得簡(jiǎn)單多了。COLUMN 事例:?向植物??的環(huán)境控制系統(tǒng)這?為?家介紹?個(gè)事例。近年來(lái)盛?向農(nóng)業(yè)領(lǐng)域?qū)?ICT技術(shù)特別是在?產(chǎn)過(guò)程中,在?齡化背景下,為了確保新的農(nóng)業(yè)勞動(dòng)?和提??產(chǎn)?,ICT技術(shù)的?泛運(yùn)?備受期待。以往,環(huán)境控都是由農(nóng)戶(hù)??測(cè)量塑料?棚內(nèi)的溫濕度,以及控制植物的??狀況,現(xiàn)在則把重點(diǎn)放在實(shí)現(xiàn)完全?動(dòng)化,以提??產(chǎn)?上。采?各種傳感器來(lái)測(cè)量和記錄(相當(dāng)于接收數(shù)據(jù))溫度、濕度、?氧化碳及光照等數(shù)據(jù)。這樣就能把環(huán)境條件數(shù)值化,再記錄?下在已測(cè)量的環(huán)境條件下作物實(shí)際的??質(zhì)量。通過(guò)這樣循環(huán),就能提取某個(gè)作物的??模式(相當(dāng)于數(shù)據(jù)分析)。這樣?來(lái),只要明確了應(yīng)該調(diào)整哪些環(huán)境條件,就能在培育過(guò)程中,把從環(huán)境中感測(cè)到的數(shù)據(jù)和設(shè)定的閾值進(jìn)??較(相當(dāng)于數(shù)據(jù)處理),從?實(shí)現(xiàn)?動(dòng)控制空調(diào),?動(dòng)注??氧化碳(相當(dāng)于發(fā)送數(shù)據(jù))。?們正在試圖通過(guò)搭建這樣的架構(gòu),以實(shí)現(xiàn)ICT技術(shù)的?規(guī)?;?,使法?加?農(nóng)業(yè)模式變得更加簡(jiǎn)單。如果繼續(xù)推進(jìn)這樣的措施,那么,或許在未來(lái)的某?天,當(dāng)農(nóng)業(yè)勞動(dòng)者想培育這種品質(zhì)的蔬菜時(shí),只要按下?個(gè)按鈕就能實(shí)現(xiàn)?動(dòng)栽培,接下來(lái)等?個(gè)?后收獲就可以了。第章 物聯(lián)?設(shè)備第3.1 設(shè)備——通向現(xiàn)實(shí)世界的接?為什么要學(xué)習(xí)設(shè)備的相關(guān)知識(shí)3.1.1為什么要學(xué)習(xí)設(shè)備的相關(guān)知識(shí)經(jīng)過(guò)前兩章的學(xué)習(xí),想必各位讀者已經(jīng)掌握物聯(lián)?這個(gè)詞描繪出的世界和?于實(shí)現(xiàn)物聯(lián)?的系統(tǒng)架構(gòu)了?;谶@點(diǎn),這?章將會(huì)為?家介紹在物聯(lián)?世界中起著核?作?的因素,即設(shè)備的相關(guān)知識(shí)??赡苡?會(huì)覺(jué)得??沒(méi)有必要學(xué)習(xí)設(shè)備的機(jī)制,但是,請(qǐng)這樣認(rèn)為并想趕快讀完本章的讀者稍稍放慢速度,因?yàn)楸菊抡菫榱四切┮酝鶝](méi)有從事過(guò)設(shè)備開(kāi)發(fā)的讀者們編寫(xiě)的。?且,所有的?程師都有必要加深對(duì)設(shè)備的理解,因?yàn)檫@關(guān)系到“連通性”給設(shè)備開(kāi)發(fā)帶來(lái)的變化。這?我們就先來(lái)看看這些變化。連通性帶來(lái)的變化3.1.2連通性帶來(lái)的變化很顯然,智能?機(jī)和隨?聽(tīng)等伴隨?家?常?活的設(shè)備都是由硬件和軟件組成的。硬件經(jīng)過(guò)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論