Linux人工智能開發(fā)實例 課件 第5-7章 智能家居網(wǎng)關(guān)Linux開發(fā)案例-AI人臉智能識別Linux開發(fā)案例_第1頁
Linux人工智能開發(fā)實例 課件 第5-7章 智能家居網(wǎng)關(guān)Linux開發(fā)案例-AI人臉智能識別Linux開發(fā)案例_第2頁
Linux人工智能開發(fā)實例 課件 第5-7章 智能家居網(wǎng)關(guān)Linux開發(fā)案例-AI人臉智能識別Linux開發(fā)案例_第3頁
Linux人工智能開發(fā)實例 課件 第5-7章 智能家居網(wǎng)關(guān)Linux開發(fā)案例-AI人臉智能識別Linux開發(fā)案例_第4頁
Linux人工智能開發(fā)實例 課件 第5-7章 智能家居網(wǎng)關(guān)Linux開發(fā)案例-AI人臉智能識別Linux開發(fā)案例_第5頁
已閱讀5頁,還剩166頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章智能家居網(wǎng)關(guān)Linux開發(fā)案例

5.1Linux網(wǎng)關(guān)服務(wù)框架智能家居網(wǎng)關(guān)Linux開發(fā)案例網(wǎng)關(guān)(Gateway)又稱網(wǎng)間連接器、協(xié)議轉(zhuǎn)換器。網(wǎng)關(guān)在傳輸層上以實現(xiàn)網(wǎng)絡(luò)互連,是最復(fù)雜的網(wǎng)絡(luò)互連設(shè)備,僅用于兩個高層協(xié)議不同的網(wǎng)絡(luò)互連。網(wǎng)關(guān)的結(jié)構(gòu)也和路由器類似,不同的是互連層。網(wǎng)關(guān)既可以用于廣域網(wǎng)互連,也可以用于局域網(wǎng)互連。物聯(lián)網(wǎng)網(wǎng)關(guān),成為連接感知網(wǎng)絡(luò)與傳統(tǒng)通信網(wǎng)絡(luò)的紐帶。作為網(wǎng)關(guān)設(shè)備,物聯(lián)網(wǎng)網(wǎng)關(guān)可以實現(xiàn)感知網(wǎng)絡(luò)與通信網(wǎng)絡(luò),以及不同類型感知網(wǎng)絡(luò)之間的協(xié)議轉(zhuǎn)換.既可以實現(xiàn)廣域互聯(lián).也可以實現(xiàn)局域互聯(lián)。此外物聯(lián)網(wǎng)網(wǎng)關(guān)還需要具備設(shè)備管理功能,運營商通過物聯(lián)網(wǎng)網(wǎng)關(guān)設(shè)備可以管理底層的各感知節(jié)點,了解各節(jié)點的相關(guān)信息,并實現(xiàn)遠程控制。相關(guān)功能如下1)廣泛的接入能力短距離通信的技術(shù)標(biāo)準(zhǔn)很多,包括ZigBee、6LowPAN、BLE、Wi-Fi等。各類技術(shù)主要針對某一應(yīng)用展開,之間缺乏兼容性和體系規(guī)劃。國內(nèi)、外已經(jīng)在展開針對物聯(lián)網(wǎng)網(wǎng)關(guān)進行標(biāo)準(zhǔn)化工作,如3GPP、傳感器工作組,實現(xiàn)各種通信技術(shù)標(biāo)準(zhǔn)的互聯(lián)互通。5.1.1物聯(lián)網(wǎng)網(wǎng)關(guān)智能家居網(wǎng)關(guān)Linux開發(fā)案例2)可管理能力首先要對網(wǎng)關(guān)進行管理,如注冊管理、權(quán)限管理、狀態(tài)監(jiān)管等。網(wǎng)關(guān)實現(xiàn)子網(wǎng)內(nèi)的節(jié)點的管理,如獲取節(jié)點的標(biāo)識、狀態(tài)、屬性、能量等,以及遠程實現(xiàn)喚醒、控制、診斷、升級和維護等。由于子網(wǎng)的技術(shù)標(biāo)準(zhǔn)不同,協(xié)議的復(fù)雜性不同,所以網(wǎng)關(guān)具有的管理性能力不同。提出基于模塊化物聯(lián)網(wǎng)網(wǎng)關(guān)方式來管理不同的感知網(wǎng)絡(luò)、不同的應(yīng)用,保證能夠使用統(tǒng)一的管理接口技術(shù)對末梢網(wǎng)絡(luò)節(jié)點進行統(tǒng)一管理。5.1.1物聯(lián)網(wǎng)網(wǎng)關(guān)物聯(lián)網(wǎng)網(wǎng)關(guān)服務(wù)架構(gòu)智能家居網(wǎng)關(guān)Linux開發(fā)案例3)協(xié)議轉(zhuǎn)換能力從不同的感知網(wǎng)絡(luò)到接入網(wǎng)絡(luò)的協(xié)議轉(zhuǎn)換、將下層的標(biāo)準(zhǔn)格式的數(shù)據(jù)統(tǒng)一封裝、保證不同的感知網(wǎng)絡(luò)的協(xié)議能夠變成統(tǒng)一的數(shù)據(jù)和信令;將上層下發(fā)的數(shù)據(jù)包解析成感知層協(xié)議可以識別的信令和控制指令。物聯(lián)網(wǎng)智能網(wǎng)關(guān)是一個中央數(shù)據(jù)轉(zhuǎn)換單元,基于傳統(tǒng)嵌入式技術(shù),運行復(fù)雜的嵌入式操作系統(tǒng),實現(xiàn)傳感無線網(wǎng)數(shù)據(jù)與電信網(wǎng)/互聯(lián)網(wǎng)之間的數(shù)據(jù)交互。智能網(wǎng)關(guān)采用嵌入式高性能ARM處理器,運行Linux操作系統(tǒng),實現(xiàn)網(wǎng)絡(luò)的數(shù)據(jù)M2M交互。5.1.1物聯(lián)網(wǎng)網(wǎng)關(guān)物聯(lián)網(wǎng)網(wǎng)關(guān)服務(wù)架構(gòu)智能家居網(wǎng)關(guān)Linux開發(fā)案例一個基本的智云物聯(lián)項目系統(tǒng)模型如圖所示。(1)各種智能設(shè)備通過ZigBee(BLE、Wi-Fi、NB-IoT、LoRa和LTE)等無線傳感網(wǎng)絡(luò)聯(lián)系在一起,其中協(xié)調(diào)器/匯集器節(jié)點作為整個網(wǎng)絡(luò)的匯集中心;(2)協(xié)調(diào)器/匯集器與Linux網(wǎng)關(guān)進行交互,通過Linux網(wǎng)關(guān)上運行的服務(wù)程序,將傳感網(wǎng)與電信網(wǎng)和移動網(wǎng)進行連接,同時將數(shù)據(jù)推送給智云中心,也支持數(shù)據(jù)推送到本地局域網(wǎng)。(3)云平臺提供數(shù)據(jù)的存儲服務(wù)、數(shù)據(jù)推送服務(wù)、自動控制服務(wù)等深度的項目接口,本地服務(wù)僅支持數(shù)據(jù)的推送服務(wù)。(4)物聯(lián)網(wǎng)應(yīng)用項目通過智云API進行具體應(yīng)用的開發(fā),能夠?qū)崿F(xiàn)對傳感網(wǎng)內(nèi)節(jié)點進行采集、控制、決策等。5.1.2智云物聯(lián)平臺智能家居網(wǎng)關(guān)Linux開發(fā)案例為了方便物聯(lián)網(wǎng)項目的學(xué)習(xí)和開發(fā),本書根據(jù)物聯(lián)網(wǎng)網(wǎng)絡(luò)特性開發(fā)了一款專門用于數(shù)據(jù)收發(fā)調(diào)試的輔助開發(fā)和調(diào)試工具,工具可以通過無線節(jié)點的調(diào)試串口獲取節(jié)點當(dāng)前配置的網(wǎng)絡(luò)信息。當(dāng)協(xié)調(diào)器連接到xLabTools工具上時可以查看網(wǎng)絡(luò)信息和該協(xié)調(diào)器所組建的網(wǎng)絡(luò)下的節(jié)點反饋的信息,并能夠通過調(diào)試窗口向網(wǎng)絡(luò)內(nèi)各節(jié)點發(fā)送數(shù)據(jù);將終端節(jié)點或路由節(jié)點連接到xLabTools工具上時可以實現(xiàn)對終端節(jié)點數(shù)據(jù)的監(jiān)測,并能夠通過工具向協(xié)調(diào)器發(fā)送指令。5.1.3平臺開發(fā)調(diào)試工具xLabTools調(diào)試工具智能家居網(wǎng)關(guān)Linux開發(fā)案例ZCloudTools是一款無線傳感網(wǎng)綜合分析測試工具,提供網(wǎng)絡(luò)拓撲圖、數(shù)據(jù)包分析、傳感器信息采集和控制、傳感器歷史數(shù)據(jù)查詢等功能。ZCloudTools調(diào)試工具界面如左圖所示。除了Android端調(diào)試工具外,同時還開發(fā)了PC端調(diào)試工具,PC端調(diào)試工具為ZCloudWebTools,該工具可直接在PC的瀏覽器上運行,功能于ZCloudTools工具類似。ZCloudWebTools工具界面如右圖所示。5.1.3平臺開發(fā)調(diào)試工具ZCloudTools協(xié)議工具智能家居網(wǎng)關(guān)Linux開發(fā)案例5.1.4開發(fā)實踐:智能網(wǎng)關(guān)組網(wǎng)與測試ZigBee網(wǎng)絡(luò)1.ZigBee網(wǎng)絡(luò)參數(shù)ZigBee作為一種可中繼,覆蓋范圍廣泛,接入節(jié)點眾多的無線網(wǎng)絡(luò)技術(shù),其所構(gòu)建的網(wǎng)絡(luò)勢必會有眾多的節(jié)點,這些節(jié)點的識別與定位都是ZigBee網(wǎng)絡(luò)所要關(guān)注的技術(shù)重點。ZigBee采用的網(wǎng)絡(luò)區(qū)分與識別方法是設(shè)置ZigBee的網(wǎng)絡(luò)CHANNEL(網(wǎng)絡(luò)信道號),在相同CHANNEL下通過PANID(網(wǎng)絡(luò)ID)來區(qū)別網(wǎng)絡(luò)。當(dāng)一個ZigBee節(jié)點將CHANNEL和PANID信息與已有的ZigBee網(wǎng)絡(luò)信息設(shè)置相同時,這個ZigBee節(jié)點可以接入到已有的ZigBee網(wǎng)絡(luò)。在ZigBee網(wǎng)絡(luò)內(nèi)部Coordinator(協(xié)調(diào)器)和Router(路由)通過分配的ShortAddr(短地址)實現(xiàn)對節(jié)點的定位與識別。在ZigBee網(wǎng)絡(luò)外部,開發(fā)者可以通過每個ZigBee芯片所攜帶的全球唯一的MAC地址對Zigbee節(jié)點進行識別。下面對這四個參數(shù)進行說明:PANIDPANID是Zigbee的局域網(wǎng)ID,用于區(qū)分通信道下的其他網(wǎng)絡(luò),節(jié)點通過PANID判斷自身所屬的網(wǎng)絡(luò)標(biāo)識。PANID的參數(shù)可配置,其配置參數(shù)范圍從0x0000~0xFFFF??苫ハ嗤ㄐ诺墓?jié)點之間PANID必須相同,且必須保證同一工作區(qū)域內(nèi)的相鄰網(wǎng)絡(luò)PANID不同。MACMAC地址是一種是64位IEEE地址,這個64位的IEEE地址是一個全球唯一的地址,一經(jīng)分配就將跟隨設(shè)備一生。它通常由制造商或者被安裝時設(shè)置。這些地址由IEEE組織來維護和分配。智能家居網(wǎng)關(guān)Linux開發(fā)案例5.1.4開發(fā)實踐:智能網(wǎng)關(guān)組網(wǎng)與測試ZigBee網(wǎng)絡(luò)ShortAddrShortAddr是一種16位的ZigBee網(wǎng)絡(luò)內(nèi)部的網(wǎng)絡(luò)地址,這個16位網(wǎng)絡(luò)地址是當(dāng)設(shè)備加入網(wǎng)絡(luò)后分配的,它在ZigBee局域網(wǎng)中是唯一的,用來在網(wǎng)絡(luò)中鑒別設(shè)備和發(fā)送數(shù)據(jù)。ZigBee節(jié)點在RFD模式下時直接使用內(nèi)網(wǎng)點地址即可。CHANNELCHANNEL是ZigBee通信頻率設(shè)置的信道號,2.4G的ZigBee協(xié)議棧含有16個通信信道,中國地區(qū)分配的信道為:信道11(0x0b)~信道26(0x1a)。對于信道的設(shè)置通過一個4字節(jié)的32bit數(shù)據(jù)來標(biāo)示,如果需要使能某個信道,就將信道對應(yīng)bit的數(shù)據(jù)置為1即可。比如某個設(shè)備使用信道11,將其信道數(shù)據(jù)值設(shè)置為0x00000800,使用信道26則設(shè)置為0x04000000。同時ZigBee網(wǎng)絡(luò)允許設(shè)備使能多個信道。如果需要使能所有信道,設(shè)置CHANNEL為0x7fff800即可。ZigBee網(wǎng)絡(luò)只有在保證在相同的信道下才能考慮通信的可能性,如果信道不同則無法組網(wǎng)。信道號分配如圖所示。智能家居網(wǎng)關(guān)Linux開發(fā)案例5.1.4開發(fā)實踐:智能網(wǎng)關(guān)組網(wǎng)與測試ZigBee網(wǎng)絡(luò)2.ZigBee網(wǎng)絡(luò)節(jié)點類型ZigBee網(wǎng)絡(luò)的基礎(chǔ)主要包括設(shè)備類型,拓撲結(jié)構(gòu)和路由方式三個方面的內(nèi)容,ZigBee標(biāo)準(zhǔn)規(guī)定所有的ZigBee網(wǎng)絡(luò)節(jié)點分為Coordinator(協(xié)調(diào)器)、Router(路由)、EndDevice(終端)三種類型,節(jié)點類型只是網(wǎng)絡(luò)層的概念,反映了網(wǎng)絡(luò)的拓撲形式,而ZigBee網(wǎng)絡(luò)采用任何一種拓撲形式只是為了實現(xiàn)網(wǎng)絡(luò)中信息高效穩(wěn)定的傳輸,在實際的應(yīng)用中不必關(guān)心ZigBee網(wǎng)絡(luò)的組織形式的,節(jié)點類型的定義和節(jié)點在應(yīng)用中所起到的功能并不相關(guān)。三種網(wǎng)絡(luò)節(jié)點類型分析如下:Coordinator(協(xié)調(diào)器)不論ZigBee網(wǎng)絡(luò)采用何種拓撲方式,網(wǎng)絡(luò)中有一個并且只能有一個Coordinator節(jié)點,它在網(wǎng)絡(luò)層的任務(wù)是:選擇網(wǎng)絡(luò)所使用的頻率通道、建立網(wǎng)絡(luò)并將其它節(jié)點加入網(wǎng)絡(luò)、提供信息路由、安全管理和其它的服務(wù)。Coordinator在系統(tǒng)初始化時起重要作用,某些應(yīng)用中網(wǎng)絡(luò)初始化完成后,即使關(guān)閉了Coordinator節(jié)點,網(wǎng)絡(luò)仍然可正常工作,但若Coordinator在應(yīng)用層提供一些服務(wù),就必須持續(xù)的處于工作狀態(tài)。智能家居網(wǎng)關(guān)Linux開發(fā)案例5.1.4開發(fā)實踐:智能網(wǎng)關(guān)組網(wǎng)與測試ZigBee網(wǎng)絡(luò)Router(路由)如果ZigBee網(wǎng)絡(luò)采用了樹形和星形拓撲結(jié)構(gòu)就需要用到Router這種類型的節(jié)點,負責(zé)數(shù)據(jù)的路由,路由建立由ZigBee協(xié)議的算法決定,它入網(wǎng)后可以加入其它Router節(jié)點,也可以加入?yún)f(xié)調(diào)器,是網(wǎng)絡(luò)遠距離延伸的必要部件。此類節(jié)點的主要功能是:發(fā)送和接收節(jié)點自身信息;在節(jié)點之間轉(zhuǎn)發(fā)信息;容許子節(jié)點通過他加入網(wǎng)絡(luò)。EndDevice(終端)EndDevice節(jié)點的主要任務(wù)就是發(fā)送和接收信息,不能夠轉(zhuǎn)發(fā)信息也不能夠讓其他人加入網(wǎng)絡(luò)。通常一個EndDevice節(jié)點不處在數(shù)據(jù)收發(fā)狀態(tài)的時候可進入休眠狀態(tài)以節(jié)省耗電。智能家居網(wǎng)關(guān)Linux開發(fā)案例5.1.4開發(fā)實踐:智能網(wǎng)關(guān)組網(wǎng)與測試ZigBee網(wǎng)絡(luò)ZigBee網(wǎng)絡(luò)架構(gòu)ZigBee作為一種短距離、低功耗、低數(shù)據(jù)傳輸速率的無線網(wǎng)絡(luò)技術(shù),它是介于無線標(biāo)記技術(shù)和藍牙之間的技術(shù)方案,在傳感器網(wǎng)絡(luò)等領(lǐng)域應(yīng)用非常廣泛,這得益于它強大的組網(wǎng)能力,可以形成星型、樹型和網(wǎng)狀網(wǎng)三種ZigBee網(wǎng)絡(luò),可以根據(jù)實際項目需要來選擇合適的ZigBee網(wǎng)絡(luò)結(jié)構(gòu),三種ZigBee網(wǎng)絡(luò)結(jié)構(gòu)各有優(yōu)勢。星形拓撲星形拓撲是最簡單的拓撲形式如圖所示,包含一個Coordinator節(jié)點和一系列的EndDevice節(jié)點。每一個EndDevice節(jié)點只能和Coordinator節(jié)點進行通訊,在兩個EndDevice節(jié)點之間進行通訊必須通過Coordinator節(jié)點進行轉(zhuǎn)發(fā)。這種拓撲形式的缺點是節(jié)點之間的數(shù)據(jù)路由只有唯一的一個路徑。Coordinator(協(xié)調(diào)者)有可能成為整個網(wǎng)絡(luò)的瓶頸。實現(xiàn)星形網(wǎng)絡(luò)拓撲不需要使用ZigBee的網(wǎng)絡(luò)層協(xié)議,因為本身IEEE802.15.4的協(xié)議層就已經(jīng)實現(xiàn)了星形拓撲形式,但是這需要開發(fā)者在應(yīng)用層作更多的工作,包括自己處理信息的轉(zhuǎn)發(fā)。智能家居網(wǎng)關(guān)Linux開發(fā)案例5.1.4開發(fā)實踐:智能網(wǎng)關(guān)組網(wǎng)與測試ZigBee網(wǎng)絡(luò)樹形拓撲樹形拓撲結(jié)構(gòu)如圖所示,Coordinator可以連接Router和EndDevice,其子節(jié)點的Router也可以連接Router和EndDevice,多個層級的樹形拓撲中,信息具有唯一路由通道,直接通信只可以在父節(jié)點與子節(jié)點之間進行,非父子關(guān)系的節(jié)點需間接通信。智能家居網(wǎng)關(guān)Linux開發(fā)案例5.1.4開發(fā)實踐:智能網(wǎng)關(guān)組網(wǎng)與測試ZigBee網(wǎng)絡(luò)網(wǎng)狀拓撲網(wǎng)狀拓撲如圖所示,具有靈活路由選擇方式,當(dāng)某個路由路徑出現(xiàn)問題,信息可自動沿其它路由路徑進行傳輸。任兩個節(jié)點可相互傳輸數(shù)據(jù),數(shù)據(jù)可直接傳送或在傳輸過程中經(jīng)多級路由轉(zhuǎn)發(fā),網(wǎng)絡(luò)層提供路由探索功能,使得網(wǎng)絡(luò)層可以找到信息傳輸?shù)淖顑?yōu)化路徑,應(yīng)用層不需要任何參與,網(wǎng)絡(luò)會自動按照ZigBee協(xié)議算法選擇較好的路由路徑作為數(shù)據(jù)傳輸通道,以使得網(wǎng)絡(luò)更穩(wěn)定,通訊更有效率。智能家居網(wǎng)關(guān)Linux開發(fā)案例5.1.4開發(fā)實踐:智能網(wǎng)關(guān)組網(wǎng)與測試

智能網(wǎng)關(guān)技術(shù)架構(gòu)分析在整個物聯(lián)網(wǎng)技術(shù)架構(gòu)中,智能網(wǎng)關(guān)屬于網(wǎng)絡(luò)層與平臺層交互的紐帶。感知層的無線節(jié)點采集數(shù)據(jù)通過物聯(lián)網(wǎng)無線通信方式(ZigBee、藍牙、Wi-Fi、LoRa、NB-IoT、LTE)把數(shù)據(jù)傳送到智能網(wǎng)關(guān),網(wǎng)關(guān)匯集數(shù)據(jù)后上傳到云服務(wù)器,云服務(wù)器對數(shù)據(jù)進行存儲加工,最后用戶終端通過云端接口去訪問數(shù)據(jù),如圖所示。智能家居網(wǎng)關(guān)Linux開發(fā)案例5.1.4開發(fā)實踐:智能網(wǎng)關(guān)組網(wǎng)與測試

智云物聯(lián)項目組網(wǎng)與測試ZigBee網(wǎng)絡(luò)構(gòu)建過程:1)準(zhǔn)備一個智能網(wǎng)關(guān),若干ZigBee節(jié)點和傳感器。2)智能網(wǎng)關(guān)先上電啟動系統(tǒng),此時ZigBee協(xié)調(diào)器根據(jù)程序設(shè)定的網(wǎng)絡(luò)參數(shù)建立ZigBee網(wǎng)絡(luò)。3)ZigBee節(jié)點上電啟動,根據(jù)程序設(shè)定的網(wǎng)絡(luò)參數(shù)開始搜尋網(wǎng)絡(luò)并入網(wǎng)。4)配置智能網(wǎng)關(guān)的網(wǎng)關(guān)服務(wù)程序,設(shè)置ZigBee傳感網(wǎng)接入到物聯(lián)網(wǎng)云平臺。5)通過應(yīng)用軟件連接到設(shè)置的ZigBee項目,與ZigBee設(shè)備進行通信。智能家居網(wǎng)關(guān)Linux開發(fā)案例5.1.4開發(fā)實踐:智能網(wǎng)關(guān)組網(wǎng)與測試

智云物聯(lián)項目組網(wǎng)與測試Linux網(wǎng)關(guān)配置:1)系統(tǒng)開機后Linux網(wǎng)關(guān)程序會自動啟動,點擊遠程服務(wù)/本地服務(wù)的啟動按鈕打開服務(wù),成功后會顯示已連接,如左圖所示。2)若需要修改邊緣計算網(wǎng)關(guān)內(nèi)置的ZigBee協(xié)調(diào)器節(jié)點的網(wǎng)絡(luò)參數(shù),選擇“ZigBee”標(biāo)簽頁,對PANID/CHANNEL進行修改,修改完成后重新勾選啟動選項,如右圖所示。智能家居網(wǎng)關(guān)Linux開發(fā)案例5.1.4開發(fā)實踐:智能網(wǎng)關(guān)組網(wǎng)與測試

智云物聯(lián)項目組網(wǎng)與測試連接設(shè)備并組建ZigBee網(wǎng)絡(luò):準(zhǔn)備LiteB節(jié)點、傳感器,接上天線,再將連接有傳感器的LiteB節(jié)點上電(網(wǎng)絡(luò)紅燈閃爍后常亮表示加入網(wǎng)絡(luò)成功),如左圖所示。注意觀察每個節(jié)點上的節(jié)點網(wǎng)絡(luò)燈是否常亮,節(jié)點數(shù)據(jù)燈是藍色,有數(shù)據(jù)傳送時會閃爍,如右圖所示。智能家居網(wǎng)關(guān)Linux開發(fā)案例5.1.4開發(fā)實踐:智能網(wǎng)關(guān)組網(wǎng)與測試

智云物聯(lián)項目組網(wǎng)與測試智能網(wǎng)關(guān)數(shù)據(jù)測試:當(dāng)ZigBee設(shè)備組網(wǎng)成功,并且正確設(shè)置智能網(wǎng)關(guān)將數(shù)據(jù)連接到云端,此時可以通過ZCloudTools工具抓取和調(diào)試應(yīng)用層數(shù)據(jù)。打開應(yīng)用后,點擊右下角的功能菜單,通過掃描智能網(wǎng)關(guān)上云服務(wù)ID/KEY的二維碼輸入相同的帳號信息,連接到服務(wù)器,如左圖所示。ZCloudTools可查看網(wǎng)絡(luò)拓撲圖,了解設(shè)備組網(wǎng)狀態(tài)如右圖所示。智能家居網(wǎng)關(guān)Linux開發(fā)案例5.1.4開發(fā)實踐:智能網(wǎng)關(guān)組網(wǎng)與測試

智云物聯(lián)項目組網(wǎng)與測試點擊界面上標(biāo)注Sensor-B藍色的節(jié)點,可啟動Sensor-B的控制界面,操作不同的按鈕可對節(jié)點進行控制,如左圖所示。ZCloudTools可查看網(wǎng)絡(luò)數(shù)據(jù)包,并支持下行發(fā)送控制命令,如右圖所示。智能家居網(wǎng)關(guān)Linux開發(fā)案例5.1.4開發(fā)實踐:智能網(wǎng)關(guān)組網(wǎng)與測試

智云物聯(lián)項目組網(wǎng)與測試xLabDemo智能家居測試通過Android設(shè)備掃描下述兩維碼,打開應(yīng)用后選擇安裝里面的xLabDemo工具,如左圖所示。在ID/KEY設(shè)置界面,通過掃描智能網(wǎng)關(guān)ZXBeeGW軟件上分享的二維碼,連接到服務(wù)器,如右圖所示。智能家居網(wǎng)關(guān)Linux開發(fā)案例5.1.4開發(fā)實踐:智能網(wǎng)關(guān)組網(wǎng)與測試

智云物聯(lián)項目組網(wǎng)與測試如果應(yīng)用已經(jīng)連接到服務(wù)器,可以看到無線節(jié)點的MAC地址信息,如左圖所示。在“模式設(shè)置”界面可以切換自動與手動模式,在“自動”模式下用戶通過設(shè)置閾值,關(guān)聯(lián)的傳感器會根據(jù)閾值自動開關(guān)。“手動”模式時,用戶可以在“運營主頁”手動控制設(shè)備,如右圖所示。網(wǎng)絡(luò)視頻監(jiān)控Linux開發(fā)案例5.1.5小結(jié)了解了智能網(wǎng)關(guān)的概念、智云物聯(lián)平臺的框架,說明了物聯(lián)網(wǎng)數(shù)據(jù)通信協(xié)議,平臺開發(fā)調(diào)試工具的使用。通過智云物聯(lián)網(wǎng)項目組網(wǎng)與測試學(xué)習(xí),理解智能網(wǎng)關(guān)在整個物聯(lián)網(wǎng)項目中的功能作用,了解智云協(xié)議通信測試步驟。掌握智能網(wǎng)關(guān)功能需求設(shè)計,為后面的具體功能開發(fā)提供明確的設(shè)計目標(biāo)。網(wǎng)絡(luò)視頻監(jiān)控Linux開發(fā)案例

5.1.6思考與拓展1、什么是物聯(lián)網(wǎng)網(wǎng)關(guān),網(wǎng)關(guān)的功能與作用是什么?2、ZigBee網(wǎng)絡(luò)組網(wǎng)參數(shù)有哪些?第5章

智能家居網(wǎng)關(guān)Linux開發(fā)案例

5.2Linux智能網(wǎng)關(guān)設(shè)計智能家居網(wǎng)關(guān)Linux開發(fā)案例1)接入能力設(shè)計智能網(wǎng)關(guān)支持以下常見無線通信協(xié)議,如ZigBee、BLE、Wi-Fi、LoRa和LTE。2)管理能力設(shè)計網(wǎng)關(guān)實現(xiàn)子網(wǎng)內(nèi)的節(jié)點的管理,如獲取節(jié)點的標(biāo)識、狀態(tài)、屬性、類型等,以及遠程實現(xiàn)節(jié)點的采集、控制、診斷、升級和維護等,如圖所示。5.2.1Linux智能網(wǎng)關(guān)系統(tǒng)分析智能家居網(wǎng)關(guān)Linux開發(fā)案例3)協(xié)議轉(zhuǎn)換能力設(shè)計從不同的感知網(wǎng)絡(luò)到接入網(wǎng)絡(luò)的協(xié)議轉(zhuǎn)換、將下層的標(biāo)準(zhǔn)格式的數(shù)據(jù)統(tǒng)一封裝、保證不同的感知網(wǎng)絡(luò)的協(xié)議能夠變成統(tǒng)一的數(shù)據(jù)和信令;將上層下發(fā)的數(shù)據(jù)包解析成感知層協(xié)議可以識別的信令和控制指令。無線ZigBee、BLE、Wi-Fi、LoRa、LTE等節(jié)點的底層通信協(xié)議、數(shù)據(jù)包各不相同,在智能網(wǎng)關(guān)中最后都通過上層ZXBee數(shù)據(jù)通信協(xié)議進行處理。物聯(lián)網(wǎng)網(wǎng)關(guān)ZigBee通信原理如右圖所示。5.2.1Linux智能網(wǎng)關(guān)系統(tǒng)分析智能家居網(wǎng)關(guān)Linux開發(fā)案例1)串口通信程序設(shè)計串口的通信就是協(xié)調(diào)器與網(wǎng)關(guān)的通信過程,物聯(lián)網(wǎng)智能網(wǎng)關(guān)集成ZigBee協(xié)調(diào)器,通過串口進行通信,雙方約定的串口參數(shù)設(shè)置(波特率:38400,數(shù)據(jù)位:8bit,奇偶校驗:無,停止位:1),如圖所示。5.2.2本地服務(wù)設(shè)計智能家居網(wǎng)關(guān)Linux開發(fā)案例2)串口數(shù)據(jù)解析程序設(shè)計網(wǎng)關(guān)協(xié)議解析程序就是對串口收到的數(shù)據(jù)提取,提取出對于用戶而言必要的信息(短地址和傳感器數(shù)據(jù)),如圖所示。5.2.2本地服務(wù)設(shè)計智能家居網(wǎng)關(guān)Linux開發(fā)案例3)地址轉(zhuǎn)換程序設(shè)計ZigBee是通過動態(tài)短地址通信,每次重建網(wǎng)絡(luò)地址會變,一般可以通過設(shè)備唯一的長地址進行轉(zhuǎn)換通信,如圖所示。地址緩存就是將收到的數(shù)據(jù)提取出短地址,然后查詢出對應(yīng)的長地址,然后將長短地址的對應(yīng)關(guān)系緩存起來。5.2.2本地服務(wù)設(shè)計智能家居網(wǎng)關(guān)Linux開發(fā)案例4)ZigBee綜合應(yīng)用程序設(shè)計ZigBee綜合測試程序基于Linux串口可以完成對傳感器數(shù)據(jù)的采集和控制,如圖5.29所示。5.2.2本地服務(wù)設(shè)計智能家居網(wǎng)關(guān)Linux開發(fā)案例串口的通信就是協(xié)調(diào)器與網(wǎng)關(guān)的通信過程,物聯(lián)網(wǎng)智能網(wǎng)關(guān)集成ZigBee協(xié)調(diào)器,通過串口進行通信,雙方約定的串口參數(shù)設(shè)置(波特率:38400,數(shù)據(jù)位:8bit,奇偶校驗:無,停止位:1),如圖所示。5.2.3協(xié)議解析服務(wù)設(shè)計

串口通信服務(wù)設(shè)計分析智能家居網(wǎng)關(guān)Linux開發(fā)案例5.2.3協(xié)議解析服務(wù)設(shè)計

串口通信服務(wù)設(shè)計分析串口數(shù)據(jù)測試程序流程圖串口讀寫智能家居網(wǎng)關(guān)Linux開發(fā)案例5.2.3協(xié)議解析服務(wù)設(shè)計

串口通信服務(wù)設(shè)計分析程序文件與函數(shù)功能列表如表所示。智能家居網(wǎng)關(guān)Linux開發(fā)案例5.2.3協(xié)議解析服務(wù)設(shè)計

串口通信服務(wù)設(shè)計分析程序文件與函數(shù)功能列表如表所示。智能家居網(wǎng)關(guān)Linux開發(fā)案例5.2.3協(xié)議解析服務(wù)設(shè)計

串口通信服務(wù)程序分析

協(xié)調(diào)器與網(wǎng)關(guān)通信協(xié)議(詳細串口通信源碼請查看文檔)協(xié)調(diào)器作為網(wǎng)關(guān)與ZigBee節(jié)點通信的中介,所以必須深刻理解協(xié)調(diào)器與網(wǎng)關(guān)的通信協(xié)議ZigBee設(shè)備組網(wǎng)后,通過協(xié)調(diào)器匯集數(shù)據(jù),協(xié)調(diào)器通過串口與上位機通信。Zstack協(xié)議棧定義了協(xié)調(diào)器與上位機(網(wǎng)關(guān))的數(shù)據(jù)通信協(xié)議。1)串口設(shè)置波特率(38400bps),數(shù)據(jù)位(8bit),奇偶校驗(無),停止位(1)2)通信數(shù)據(jù)包格式通信數(shù)據(jù)包格式如表所示。標(biāo)示幀頭長度命令數(shù)據(jù)校驗SOPLENCMDDATAFCS長度(B)112N1智能家居網(wǎng)關(guān)Linux開發(fā)案例5.2.3協(xié)議解析服務(wù)設(shè)計

串口通信服務(wù)程序分析

協(xié)調(diào)器與網(wǎng)關(guān)通信協(xié)議(詳細串口通信源碼請查看文檔)3)幀格式說明#數(shù)據(jù)幀說明:SOP:固定為0xFELEN:DATA的長度CMD:2900//上位機發(fā)送數(shù)據(jù)到協(xié)調(diào)器6900//協(xié)調(diào)器接收到正確指令后的響應(yīng)幀6980//協(xié)調(diào)器發(fā)送數(shù)據(jù)到上位機4)協(xié)調(diào)器與網(wǎng)關(guān)的數(shù)據(jù)交互分析實例:

上位機向協(xié)調(diào)器發(fā)送查詢數(shù)據(jù)的指令:智能家居網(wǎng)關(guān)Linux開發(fā)案例5.2.3協(xié)議解析服務(wù)設(shè)計

協(xié)議解析服務(wù)設(shè)計分析

網(wǎng)關(guān)協(xié)議解析程序就是對串口收到的數(shù)據(jù)提取,提取出對于用戶而言必要的信息(短地址和傳感器數(shù)據(jù)),如圖所示。智能家居網(wǎng)關(guān)Linux開發(fā)案例5.2.3協(xié)議解析服務(wù)設(shè)計

協(xié)議解析服務(wù)設(shè)計分析本項目程序文件和函數(shù)說明如表所示。智能家居網(wǎng)關(guān)Linux開發(fā)案例5.2.3協(xié)議解析服務(wù)設(shè)計

協(xié)議解析服務(wù)設(shè)計分析智能家居網(wǎng)關(guān)Linux開發(fā)案例5.2.3協(xié)議解析服務(wù)設(shè)計

協(xié)議解析服務(wù)程序分析網(wǎng)關(guān)協(xié)議解析程序就是對串口收到的數(shù)據(jù)提取,提取出對于用戶而言必要的信息(短地址和傳感器數(shù)據(jù))。通信數(shù)據(jù)實例(詳細協(xié)議分析源碼請查看文檔)智能家居網(wǎng)關(guān)Linux開發(fā)案例5.2.4地址緩存服務(wù)設(shè)計

長短地址轉(zhuǎn)換概述1)長地址與短地址的概念長地址(MAC地址)MAC地址是一種是64位IEEE地址,這個64位的IEEE地址是一個全球唯一的地址,一經(jīng)分配就將跟隨設(shè)備一生。它通常由制造商或者被安裝時設(shè)置。這些地址由IEEE組織來維護和分配。短地址(ShortAddr)ShortAddr是一種16位的ZigBee網(wǎng)絡(luò)內(nèi)部的網(wǎng)絡(luò)地址,這個16位網(wǎng)絡(luò)地址是當(dāng)設(shè)備加入網(wǎng)絡(luò)后分配的,它在ZigBee局域網(wǎng)中是唯一的,用來在網(wǎng)絡(luò)中鑒別設(shè)備和發(fā)送數(shù)據(jù)。ZigBee節(jié)點在RFD模式下時直接使用內(nèi)網(wǎng)點地址即可。2)長短地址轉(zhuǎn)換原因局域網(wǎng)內(nèi),協(xié)調(diào)器與終端和路由節(jié)點交互數(shù)據(jù)采用隨機分配的短地址,網(wǎng)關(guān)將各種節(jié)點的數(shù)據(jù)上傳到服務(wù)器時必須使用長地址,以保證地址的唯一性。服務(wù)器里只有長地址的信息,服務(wù)器控制或者查詢節(jié)點,網(wǎng)關(guān)必須將服務(wù)器發(fā)送的長地址轉(zhuǎn)換為短地址,然后去控制節(jié)點。其中長地址轉(zhuǎn)化為短地址是靠發(fā)送短地址查詢命令來完成,短地址轉(zhuǎn)換為長地址亦是如此。智能家居網(wǎng)關(guān)Linux開發(fā)案例5.2.4地址緩存服務(wù)設(shè)計

長短地址轉(zhuǎn)換概述3)長短地址查詢指令特殊數(shù)據(jù)幀說明:1)協(xié)調(diào)器給定的MAC地址,查詢網(wǎng)絡(luò)地址上位機向協(xié)調(diào)器發(fā)送查詢指令。DATA數(shù)據(jù)格式:02+NA(協(xié)調(diào)器網(wǎng)絡(luò)地址0000)+APP_CMD(0101)+APP_DATA(要查詢節(jié)點的MAC地址,8個字節(jié))協(xié)調(diào)器返回數(shù)據(jù),DATA數(shù)據(jù)格式:NA(協(xié)調(diào)器網(wǎng)絡(luò)地址0000)+APP_CMD(0101)+APP_DATA(要查詢節(jié)點的MAC地址,8個字節(jié))+NA1(返回查詢到的節(jié)點網(wǎng)絡(luò)地址,2個字節(jié))2)協(xié)調(diào)器根據(jù)給定的網(wǎng)絡(luò)地址,查詢MAC地址上位機向協(xié)調(diào)器發(fā)送查詢指令,DATA數(shù)據(jù)格式:02+NA(協(xié)調(diào)器網(wǎng)絡(luò)地址0000)+APP_CMD(0102)+APP_DATA(要查詢節(jié)點的網(wǎng)絡(luò)地址,2個字節(jié))協(xié)調(diào)器返回數(shù)據(jù),DATA數(shù)據(jù)格式:NA(協(xié)調(diào)器網(wǎng)絡(luò)地址0000)+APP_CMD(0102)+APP_DATA(要查詢節(jié)點的網(wǎng)絡(luò)地址,2個字節(jié))+NA1(返回查詢到的節(jié)點MAC地址,8個字節(jié))智能家居網(wǎng)關(guān)Linux開發(fā)案例5.2.4地址緩存服務(wù)設(shè)計

長短地址轉(zhuǎn)換概述4)地址查詢指令舉例:上位機向協(xié)調(diào)器發(fā)送查詢網(wǎng)絡(luò)地址的指令上位機收到協(xié)調(diào)器發(fā)送過來網(wǎng)絡(luò)地址的數(shù)據(jù)(更多指令舉例請查看文檔)智能家居網(wǎng)關(guān)Linux開發(fā)案例5.2.4地址緩存服務(wù)設(shè)計

地址緩存服務(wù)設(shè)計分析ZigBee是通過動態(tài)短地址通信,每次重建網(wǎng)絡(luò)地址會變,一般可以通過設(shè)備唯一的長地址進行轉(zhuǎn)換通信。局域網(wǎng)內(nèi),協(xié)調(diào)器與終端和路由節(jié)點交互數(shù)據(jù)采用隨機分配的短地址,網(wǎng)關(guān)將各種節(jié)點的數(shù)據(jù)上傳到服務(wù)器時必須使用長地址,以保證地址的唯一性。服務(wù)器里只有長地址的信息,服務(wù)器控制或者查詢節(jié)點,網(wǎng)關(guān)必須將服務(wù)器發(fā)送的長地址轉(zhuǎn)換為短地址,然后去控制節(jié)點。其中長地址轉(zhuǎn)化為短地址是靠發(fā)送短地址查詢命令來完成,短地址轉(zhuǎn)換為長地址亦是如此。地址緩存就是將收到的數(shù)據(jù)提取出短地址,然后查詢出對應(yīng)的長地址,然后將長短地址的對應(yīng)關(guān)系緩存起來,網(wǎng)關(guān)直接從緩存里找到長地址對應(yīng)的短地址,也不需要通過串口查詢就可以找到短地址了,大大提高效率。智能家居網(wǎng)關(guān)Linux開發(fā)案例5.2.4地址緩存服務(wù)設(shè)計

地址緩存服務(wù)設(shè)計分析本項目文件和函數(shù)接口說明如表所示。智能家居網(wǎng)關(guān)Linux開發(fā)案例5.2.4地址緩存服務(wù)設(shè)計

地址緩存服務(wù)設(shè)計分析智能家居網(wǎng)關(guān)Linux開發(fā)案例5.2.4地址緩存服務(wù)設(shè)計

地址緩存服務(wù)設(shè)計分析智能家居網(wǎng)關(guān)Linux開發(fā)案例5.2.4地址緩存服務(wù)設(shè)計

長短地址轉(zhuǎn)換程序設(shè)計(詳細分析源碼請查看文檔)

地址緩存服務(wù)程序設(shè)計1)地址緩存服務(wù)地址緩存就是將收到的數(shù)據(jù)提取出短地址,然后查詢出對應(yīng)的長地址,然后將長短地址的對應(yīng)關(guān)系緩存起來,這樣以后收到包含短地址的數(shù)據(jù)后,就可以不通過串口查詢來轉(zhuǎn)換為長地址,進而將長地址和對應(yīng)的傳感器數(shù)據(jù)傳輸?shù)椒?wù)器上,這是數(shù)據(jù)的上行過程。同樣當(dāng)服務(wù)器發(fā)送一個長地址和命令給網(wǎng)關(guān),網(wǎng)關(guān)直接從緩存里找到長地址對應(yīng)的短地址,也不需要通過串口查詢就可以找到短地址了,這樣就可以提高效率了。2)地址緩存關(guān)系程序設(shè)計定義地址結(jié)構(gòu)體typedefstruct_a{struct_a*next;unsignedshortnet_addr;charmac[8];}addr_t;

addr_t*pAddress=NULL;//結(jié)構(gòu)體變量初始化智能家居網(wǎng)關(guān)Linux開發(fā)案例ZigBee綜合測試程序基于Linux串口可以完成對傳感器數(shù)據(jù)的采集和控制,設(shè)計如圖所示。程序框架總共分為兩部分:一部分是數(shù)據(jù)的封包(打包),一部分是數(shù)據(jù)的解包。其中封包就是輸入MAC地址和對應(yīng)的命令,然后通過串口發(fā)送完整的命令給節(jié)點。解包就是將串口收到的傳感器信息以MAC地址和數(shù)據(jù)的形式解析出來。5.2.5數(shù)據(jù)處理服務(wù)設(shè)計

數(shù)據(jù)處理服務(wù)設(shè)計分析智能家居網(wǎng)關(guān)Linux開發(fā)案例本項目函數(shù)接口和說明如表所示。5.2.5數(shù)據(jù)處理服務(wù)設(shè)計

數(shù)據(jù)處理服務(wù)設(shè)計分析智能家居網(wǎng)關(guān)Linux開發(fā)案例5.2.5數(shù)據(jù)處理服務(wù)設(shè)計

數(shù)據(jù)處理服務(wù)設(shè)計分析智能家居網(wǎng)關(guān)Linux開發(fā)案例5.2.5數(shù)據(jù)處理服務(wù)設(shè)計

數(shù)據(jù)處理服務(wù)設(shè)計分析智能家居網(wǎng)關(guān)Linux開發(fā)案例5.2.5數(shù)據(jù)處理服務(wù)設(shè)計

數(shù)據(jù)處理服務(wù)程序設(shè)計

數(shù)據(jù)處理服務(wù)設(shè)計分析(僅展示部分代碼,詳細分析源碼請查看文檔)封包程序設(shè)計:理解解包程序設(shè)計主要是理解以下幾個關(guān)鍵函數(shù)voidproc_user(intfd){staticintoffset=0;staticcharbuf[BUFSIZE];inti,ret;

ret=read(fd,&buf[offset],BUFSIZE-offset);if(ret<0){perror("readuart");exit(1);}offset+=ret;if(buf[offset-1]=='\n'){buf[offset-1]='\0';if(strcmp(buf,"quit")==0){gQuit=1;//退出程序return;}else{

char*pdat=strstr(buf,",");if(pdat==NULL){printf("格式錯誤\n");offset=0;return;}*pdat++='\0';intlen=strlen(buf);if(len!=23){offset=0;printf("地址格式錯誤\n");return;}if(strlen(pdat)==0){offset=0;printf("發(fā)送數(shù)據(jù)長度不能為0\n");return;}printf("%s<<<%s\n",buf,pdat);zigbee_send_data(buf,pdat,strlen(pdat));}offset=0;}}智能家居網(wǎng)關(guān)Linux開發(fā)案例5.2.6開發(fā)實踐:Linux網(wǎng)關(guān)本地服務(wù)設(shè)計

串口通信服務(wù)設(shè)計1)把實驗?zāi)夸浵旅娴膗art-test文件夾通過MobaXterm軟件拷貝到開發(fā)板的/home/zonesion目錄下。2)輸入如下命令進入本節(jié)實驗?zāi)夸洠琹s命令查看當(dāng)前文件夾內(nèi)容test@rk3399:~$cduart-test/test@rk3399:~/uart-test$lsMakefileuart.cuart.huart-testuart-test.cutil.cutil.h3)輸入make,進行編譯,查看uart-test文件是否生成test@rk3399:~/uart-test$makegcc-static-pthreaduart.cutil.cuart-test.c-ouart-testtest@rk3399:~/uart-test$lsMakefileuart.cuart.huart-testuart-test.cutil.cutil.h4)輸入命令“./uart-test”,運行該程序test@rk3399:~/uart-test$./uart-test智能家居網(wǎng)關(guān)Linux開發(fā)案例5.2.6開發(fā)實踐:Linux網(wǎng)關(guān)本地服務(wù)設(shè)計

串口通信服務(wù)設(shè)計5)會出現(xiàn)如下信息,說明連接串口通信成功。test@rk3399:~/uart-test$./uart-testzigbeeuarttestprogramv0.1uart>>>FE0A698032FE00007B44313D307D516)數(shù)據(jù)分析:1)FE:幀頭(SOP)2)OA:數(shù)據(jù)長度(LEN)3)6980:協(xié)調(diào)器發(fā)送給上位機4)32FE:短地址(網(wǎng)絡(luò)地址)5)0000:正常數(shù)據(jù)命令6)7B44313D307D:傳感器數(shù)據(jù)7)51:校驗和智能家居網(wǎng)關(guān)Linux開發(fā)案例5.2.6開發(fā)實踐:Linux網(wǎng)關(guān)本地服務(wù)設(shè)計

協(xié)議解析服務(wù)設(shè)計1)將實驗?zāi)夸浵碌膒rotol-test文件通過MobaXterm軟件拷貝到開發(fā)板的/home/zonesion目錄下面。2)然后輸入如下命令進入該目錄test@rk3399:~$cdprotol-test/test@rk3399:~/protol-test$lsMakefileprotol.hprotol-test.cuart.hutil.hprotol.cprotol-testuart.cutil.c3)輸入make指令,進行編譯test@rk3399:~/protol-test$makegcc-static-pthreaduart.cutil.cprotol.cprotol-test.c-oprotol-testprotol.c:Infunction‘mk_net_data’:protol.c:70:15:warning:implicitdeclarationoffunction‘calc_fcs’[-Wimplicit-function-declaration]pkg[9+len]=calc_fcs(&pkg[1],pkg_len-2);^智能家居網(wǎng)關(guān)Linux開發(fā)案例5.2.6開發(fā)實踐:Linux網(wǎng)關(guān)本地服務(wù)設(shè)計

協(xié)議解析服務(wù)設(shè)計4)查看是否生成protol-test文件test@rk3399:~/protol-test$lsMakefileprotol.cprotol.hprotol-testprotol-test.cuart.cuart.hutil.cutil.h5)輸入如下命令,運行程序test@rk3399:~/protol-test$./protol-test6)等待20秒左右,會出現(xiàn)如圖所示信息。智能家居網(wǎng)關(guān)Linux開發(fā)案例5.2.6開發(fā)實踐:Linux網(wǎng)關(guān)本地服務(wù)設(shè)計

協(xié)議解析服務(wù)設(shè)計7)本節(jié)測試還提供了交互功能,即不單單能夠解析出數(shù)據(jù),還可以通過串口發(fā)送數(shù)據(jù)給節(jié)點,來查詢節(jié)點上對應(yīng)傳感器的狀態(tài)。在開發(fā)板終端界面按下回車鍵,輸入如下信息,“9027,0000,7B4F44313D36347D”,其中“9027”要根據(jù)自己節(jié)點的短地址來填寫,然后繼續(xù)回車,會出現(xiàn)如圖所示信息:功能協(xié)議指令指令Hex數(shù)據(jù)打開繼電器{OD1=64}7B4F44313D36347D關(guān)閉繼電器{CD1=64}7B4344313D36347D繼電器通信協(xié)議表智能家居網(wǎng)關(guān)Linux開發(fā)案例5.2.6開發(fā)實踐:Linux網(wǎng)關(guān)本地服務(wù)設(shè)計

地址緩存服務(wù)設(shè)計1)將實驗?zāi)夸浵旅娴腸ache-test文件通過MobaXterm軟件或者U盤拷貝到開發(fā)板的/home/zonesion目錄下面,進入本節(jié)實驗?zāi)夸洝est@rk3399:~/$cdcache-test/test@rk3399:~/cache-test$lscache-addr.cMakefileprotol.huart.hutil.hzigbee.hcache-addr.hprotol.cuart.cutil.czigbee.czigbee-test.c2)輸入make指令進行編譯test@rk3399:~/cache-test$makegcc-static-pthreaduart.cutil.cprotol.czigbee.ccache-addr.czigbee-test.c-ozigbee-test3)查看是否生成cache-test文件test@rk3399:~/work/cache-test$lscache-addr.cMakefileprotol.huart.hutil.hzigbee.hzigbee-test.ccache-addr.hprotol.cuart.cutil.czigbee.czigbee-test智能家居網(wǎng)關(guān)Linux開發(fā)案例5.2.6開發(fā)實踐:Linux網(wǎng)關(guān)本地服務(wù)設(shè)計

地址緩存服務(wù)設(shè)計4)運行cache-testtest@rk3399:~/work/cache-test$./zigbee-test5)等待20秒,可以看到串口終端打印出如下信息uart>>>FE0A6980128500007B44313D307D0Aprotol>>>1258,0000,7B44313D307Dprotol<<<0000,0102,1258uart<<<FE07290002000001021285B8uart>>>FE0169000068uart>>>FE0E698000000102128500124B0015D14907A0protol>>>0000,0102,128500124B0015D14907zigbee:1285--->00:12:4B:00:15:D1:49:07智能家居網(wǎng)關(guān)Linux開發(fā)案例5.2.6開發(fā)實踐:Linux網(wǎng)關(guān)本地服務(wù)設(shè)計

地址緩存服務(wù)設(shè)計6)繼續(xù)等待20秒,等待接收下一次數(shù)據(jù),會出現(xiàn)如下信息uart>>>FE0A6980128500007B44313D307D0Aprotol>>>1285,0000,7B44313D307Dzigbee:1285--->00:12:4B:00:15:D1:49:077)接下來手動在終端輸入一個長地址,來查看對應(yīng)的短地址是否被緩存。在終端輸入MAC地址,然后回車(說明:MAC地址一定要對應(yīng)自己終端節(jié)點的,不要和實驗步驟的一樣。)00:12:4B:00:15:D1:49:078)可以看到串口會立即打印如下信息00:12:4B:00:15:D1:49:07correctmacaddrees:00:12:4B:00:15:D1:49:07zigbee_test:00:12:4B:00:15:D1:49:07--->1285智能家居網(wǎng)關(guān)Linux開發(fā)案例5.2.7小結(jié)學(xué)習(xí)了智能網(wǎng)關(guān)實現(xiàn)的接入能力、管理能力、協(xié)議轉(zhuǎn)換的設(shè)計,本地服務(wù)總體設(shè)計架構(gòu)。通過協(xié)議解析服務(wù)分析與設(shè)計、地址緩存服務(wù)分析與設(shè)計、數(shù)據(jù)處理服務(wù)分析與設(shè)計三個部分的程序分析與實現(xiàn),學(xué)習(xí)網(wǎng)關(guān)的本地服務(wù)編程實現(xiàn)。智能家居網(wǎng)關(guān)Linux開發(fā)案例

5.2.8思考與拓展1、Linux網(wǎng)關(guān)本地服務(wù)具有哪些功能?2、描述協(xié)調(diào)器與網(wǎng)關(guān)通信協(xié)議數(shù)據(jù)包格式?第5章智能家居網(wǎng)關(guān)Linux開發(fā)案例5.3Linux網(wǎng)關(guān)遠程服務(wù)設(shè)計智能家居網(wǎng)關(guān)Linux開發(fā)案例Linux網(wǎng)關(guān)的遠程服務(wù)設(shè)計,通過TCP網(wǎng)絡(luò)服務(wù)設(shè)計、MQTT數(shù)據(jù)服務(wù)設(shè)計、Linux網(wǎng)關(guān)協(xié)議設(shè)計3個功能步驟進行設(shè)計。1)TCP網(wǎng)絡(luò)服務(wù)設(shè)計網(wǎng)關(guān)收到串口的數(shù)據(jù)后可以通過UDP或者TCP服務(wù)將傳感器的MAC地址和傳感器數(shù)據(jù)傳輸?shù)椒?wù)器上面,實現(xiàn)Zigbee數(shù)據(jù)通信的上行。這里選擇傳輸比較穩(wěn)定的TCP服務(wù)來實現(xiàn)這種上行方式,如圖所示。5.3.1遠程服務(wù)設(shè)計分析智能家居網(wǎng)關(guān)Linux開發(fā)案例2)MQTT數(shù)據(jù)服務(wù)設(shè)計MQTT數(shù)據(jù)服務(wù)設(shè)計,通過Linuxc編程mosquitto庫的調(diào)用,實現(xiàn)一個mqtt客戶端,向服務(wù)推送消息與接收處理用戶控制指令,如圖所示。5.3.1遠程服務(wù)設(shè)計分析智能家居網(wǎng)關(guān)Linux開發(fā)案例3)Linux網(wǎng)關(guān)協(xié)議設(shè)計Linux網(wǎng)關(guān)協(xié)議設(shè)計,是在TCP網(wǎng)絡(luò)服務(wù)設(shè)計的基礎(chǔ)上,通過TCP網(wǎng)絡(luò)編程通信,與服務(wù)器進行通信數(shù)據(jù)交互。Linux網(wǎng)關(guān)協(xié)議設(shè)計將在網(wǎng)關(guān)上建立一個TCP客戶端,連接時需要發(fā)送網(wǎng)關(guān)認證數(shù)據(jù)包,進行認證。認證通過后,數(shù)據(jù)按照ZXBee協(xié)議進行封包與解包處理。Linux網(wǎng)關(guān)協(xié)議設(shè)計框架如圖所示。5.3.1遠程服務(wù)設(shè)計分析智能家居網(wǎng)關(guān)Linux開發(fā)案例網(wǎng)關(guān)收到串口的數(shù)據(jù)后可以通過UDP或者TCP服務(wù)將傳感器的MAC地址和傳感器數(shù)據(jù)傳輸?shù)椒?wù)器上面,實現(xiàn)Zigbee數(shù)據(jù)通信的上行。這里選擇傳輸比較穩(wěn)定的TCP服務(wù)來實現(xiàn)這種上行方式。數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)設(shè)計將在網(wǎng)關(guān)上建立一個TCP服務(wù)端,然后將傳感器數(shù)據(jù)轉(zhuǎn)發(fā)到連接的客戶端,客戶端由TCP&UDP測試工具來模擬。網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)設(shè)計框架如圖所示。數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)設(shè)計主要由兩大部分組成,一部分是網(wǎng)關(guān)(服務(wù)器)發(fā)數(shù)據(jù)給客戶端,把這個過程叫做ZigBee上行數(shù)據(jù)通信,另外一部分是發(fā)送數(shù)據(jù)給網(wǎng)關(guān)(服務(wù)器),網(wǎng)關(guān)對數(shù)據(jù)進行處理,最后發(fā)送命令給ZigBee節(jié)點,把這個過程客戶端叫做ZigBee下行數(shù)據(jù)通信。5.3.2TCP網(wǎng)絡(luò)服務(wù)設(shè)計TCP網(wǎng)絡(luò)服務(wù)設(shè)計分析智能家居網(wǎng)關(guān)Linux開發(fā)案例5.3.2TCP網(wǎng)絡(luò)服務(wù)設(shè)計TCP網(wǎng)絡(luò)服務(wù)設(shè)計分析本項目函數(shù)接口與說明如表所示(詳細函數(shù)解析請查看文檔)智能家居網(wǎng)關(guān)Linux開發(fā)案例5.3.2TCP網(wǎng)絡(luò)服務(wù)設(shè)計TCP網(wǎng)絡(luò)服務(wù)設(shè)計分析(詳細函數(shù)解析請查看文檔)智能家居網(wǎng)關(guān)Linux開發(fā)案例5.3.2TCP網(wǎng)絡(luò)服務(wù)設(shè)計TCP網(wǎng)絡(luò)服務(wù)設(shè)計分析(詳細函數(shù)解析請查看文檔)智能家居網(wǎng)關(guān)Linux開發(fā)案例5.3.3MQTT數(shù)據(jù)服務(wù)設(shè)計MQTT協(xié)議概述MQTT(消息隊列遙測傳輸)是ISO標(biāo)準(zhǔn)(ISO/IECPRF20922)下基于發(fā)布/訂閱范式的消息協(xié)議。它工作在TCP/IP協(xié)議族上,是為硬件性能低下的遠程設(shè)備以及網(wǎng)絡(luò)狀況糟糕的情況下而設(shè)計的發(fā)布/訂閱型消息協(xié)議,為此,它需要一個消息中間件。MQTT是一個基于客戶端-服務(wù)器的消息發(fā)布/訂閱傳輸協(xié)議,是一種輕量信息傳輸協(xié)議,專門為受限設(shè)備,低帶寬,高延遲或不可靠的網(wǎng)絡(luò)而設(shè)的?MQTT的設(shè)計原理是最小化網(wǎng)絡(luò)帶寬和設(shè)備資源要求。MQTT協(xié)議的底層是基于TCP/IP,它工作在TCP和IP協(xié)議層上,屬于應(yīng)用層協(xié)議,在支持TCP/IP協(xié)議的機器上運行。MQTT協(xié)議為計算能力有限,且工作在低帶寬、不可靠的網(wǎng)絡(luò)的遠程傳感器和控制設(shè)備通訊而設(shè)計的協(xié)議,具有以下主要的幾項特性:1、使用發(fā)布/訂閱消息模式,提供一對多的消息發(fā)布,解除應(yīng)用程序耦合;2、對負載內(nèi)容屏蔽的消息傳輸;3、使用TCP/IP提供網(wǎng)絡(luò)連接;4、小型傳輸,開銷很小,協(xié)議交換最小化,以降低網(wǎng)絡(luò)流量;5、使用LastWill和Testament特性通知有關(guān)各方客戶端異常中斷的機制。LastWill:即遺言機制,用于通知同一主題下的其他設(shè)備發(fā)送遺言的設(shè)備已經(jīng)斷開了連接。Testament:遺囑機制。智能家居網(wǎng)關(guān)Linux開發(fā)案例5.3.3MQTT數(shù)據(jù)服務(wù)設(shè)計MQTT協(xié)議概述MQTT協(xié)議中的訂閱、主題、會話訂閱(Subscription):訂閱包含主題篩選器(TopicFilter)和最大服務(wù)質(zhì)量(QoS)。訂閱會與一個會話(Session)關(guān)聯(lián)。一個會話可以包含多個訂閱。每一個會話中的每個訂閱都有一個不同的主題篩選器。會話(Session):每個客戶端與服務(wù)器建立連接后就是一個會話,客戶端和服務(wù)器之間有狀態(tài)交互。會話存在于一個網(wǎng)絡(luò)之間,也可能在客戶端和服務(wù)器之間跨越多個連續(xù)的網(wǎng)絡(luò)連接。主題名(TopicName):連接到一個應(yīng)用程序消息的標(biāo)簽,該標(biāo)簽與服務(wù)器的訂閱相匹配。服務(wù)器會將消息發(fā)送給訂閱所匹配標(biāo)簽的每個客戶端。主題篩選器(TopicFilter):一個對主題名通配符篩選器,在訂閱表達式中使用,表示訂閱所匹配到的多個主題。負載(Payload):消息訂閱者所具體接收的內(nèi)容。智能家居網(wǎng)關(guān)Linux開發(fā)案例5.3.3MQTT數(shù)據(jù)服務(wù)設(shè)計MQTT協(xié)議概述網(wǎng)絡(luò)傳輸與應(yīng)用消息MQTT會構(gòu)建底層網(wǎng)絡(luò)傳輸:它將建立客戶端到服務(wù)器的連接,提供兩者之間的一個有序的、無損的、基于字節(jié)流的雙向傳輸。當(dāng)應(yīng)用數(shù)據(jù)通過MQTT網(wǎng)絡(luò)發(fā)送時,MQTT會把與之相關(guān)的服務(wù)質(zhì)量和主題名相關(guān)連。MQTT客戶端一個使用MQTT協(xié)議的應(yīng)用程序或者設(shè)備,它總是建立到服務(wù)器的網(wǎng)絡(luò)連接??蛻舳俗饔茫海?)發(fā)布其他客戶端可能會訂閱的信息;(2)訂閱其它客戶端發(fā)布的消息;(3)退訂或刪除應(yīng)用程序的消息;(4)斷開與服務(wù)器連接。MQTT服務(wù)器MQTT服務(wù)器以稱為"消息代理"(Broker),可以是一個應(yīng)用程序或一臺設(shè)備。它是位于消息發(fā)布者和訂閱者之間,它作用:(1)接受來自客戶的網(wǎng)絡(luò)連接;(2)接受客戶發(fā)布的應(yīng)用信息;(3)處理來自客戶端的訂閱和退訂請求;(4)向訂閱的客戶轉(zhuǎn)發(fā)應(yīng)用程序消息。智能家居網(wǎng)關(guān)Linux開發(fā)案例5.3.3MQTT數(shù)據(jù)服務(wù)設(shè)計MQTT協(xié)議概述網(wǎng)絡(luò)傳輸與應(yīng)用消息MQTT協(xié)議中的方法MQTT協(xié)議中定義了一些方法,來于表示對確定資源所進行操作。這個資源可以代表預(yù)先存在的數(shù)據(jù)或動態(tài)生成數(shù)據(jù),這取決于服務(wù)器的實現(xiàn)。通常來說,資源指服務(wù)器上的文件或輸出。主要方法有:(1)Connect。等待與服務(wù)器建立連接。(2)Disconnect。等待MQTT客戶端完成所做的工作,并與服務(wù)器斷開TCP/IP會話。(3)Subscribe。等待完成訂閱。(4)UnSubscribe。等待服務(wù)器取消客戶端的一個或多個topics訂閱。(5)Publish。MQTT客戶端發(fā)送消息請求,發(fā)送完成后返回應(yīng)用程序線程。智能家居網(wǎng)關(guān)Linux開發(fā)案例5.3.3MQTT數(shù)據(jù)服務(wù)設(shè)計MQTT協(xié)議概述網(wǎng)絡(luò)傳輸與應(yīng)用消息MQTT協(xié)議數(shù)據(jù)包結(jié)構(gòu)在MQTT協(xié)議中,一個MQTT數(shù)據(jù)包由:固定頭(Fixedheader)、可變頭(Variableheader)、消息體(payload)三部分構(gòu)成。MQTT數(shù)據(jù)包結(jié)構(gòu)如下:(1)固定頭(Fixedheader)。存在于所有MQTT數(shù)據(jù)包中,表示數(shù)據(jù)包類型及數(shù)據(jù)包的分組類標(biāo)識。(2)可變頭(Variableheader)。存在于部分MQTT數(shù)據(jù)包中,數(shù)據(jù)包類型決定了可變頭是否存在及其具體內(nèi)容。(3)消息體(Payload)。存在于部分MQTT數(shù)據(jù)包中,表示客戶端收到的具體內(nèi)容。(MQTT通信架構(gòu)圖)智能家居網(wǎng)關(guān)Linux開發(fā)案例5.3.3MQTT數(shù)據(jù)服務(wù)設(shè)計MQTT協(xié)議概述網(wǎng)絡(luò)傳輸與應(yīng)用消息MQTT協(xié)議實現(xiàn)方式實現(xiàn)MQTT協(xié)議需要客戶端和服務(wù)器端通訊完成,在通訊過程中,MQTT協(xié)議中有三種身份:發(fā)布者(Publish)、代理(Broker)(服務(wù)器)、訂閱者(Subscribe)。其中,消息的發(fā)布者和訂閱者都是客戶端,消息代理是服務(wù)器,消息發(fā)布者可以同時是訂閱者。(1)發(fā)布者將消息發(fā)布至代理服務(wù)器中,消息在代理服務(wù)器中以樹的方式存儲。(2)訂閱者通過訂閱消息接受訂閱的消息,代理服務(wù)器接收到訂閱消息后將訂閱者放置在對應(yīng)末端節(jié)點的下方。(3)代理根據(jù)消息的設(shè)置決定是否發(fā)送一些以前的信息,或者當(dāng)發(fā)布者發(fā)布信息時,代理將信息推送到訂閱服務(wù)器。智能家居網(wǎng)關(guān)Linux開發(fā)案例5.3.3MQTT數(shù)據(jù)服務(wù)設(shè)計Mosquitto安裝與調(diào)試Mosquitto是一個開源(BSD許可證)的消息代理,是一款實現(xiàn)了消息推送協(xié)議MQTT的開源消息代理軟件,提供輕量級的,支持可發(fā)布/可訂閱的的消息推送模式,使設(shè)備對設(shè)備之間的短消息通信變得簡單,比如現(xiàn)在應(yīng)用廣泛的低功耗傳感器,手機、嵌入式計算機、微型控制器等移動設(shè)備,安裝步驟如下:1、Mosquitto安裝在下述網(wǎng)址下載MQTT/files/source/#解壓tarzxfvmosquitto-x.x.x.tar.gz#進入目錄cdmosquitto-1.4.9#編譯make#安裝sudomakeinstallMosquitto功能命令如下:mosquitto–代理器主程序mosquitto.conf–配置文件mosquitto_passwd–用戶密碼管理工具mosquitto_tls–veryroughcheatsheetforhelpingwithSSL/TLSmosquitto_pub–用于發(fā)布消息的命令行客戶端mosquitto_sub–用于訂閱消息的命令行客戶端mqtt–MQTT的后臺進程libmosquitto–客戶端編譯的庫文件智能家居網(wǎng)關(guān)Linux開發(fā)案例5.3.3MQTT數(shù)據(jù)服務(wù)設(shè)計Mosquitto安裝與調(diào)試2、Mosquitto測試Mosquitto服務(wù)器安裝完成后,通過以下3個命令對服務(wù)進行測試。這3個命令需要在3個Linux命令行終端中運行。mosquitto–代理器主程序mosquitto_pub–用于發(fā)布消息的命令行客戶端mosquitto_sub–用于訂閱消息的命令行客戶端首先,在命令行終端啟動mosquiltto服務(wù)。root@zonesion:/home/mysdk/gw3399-linux/mosquitto-1.6.8#mosquitto-v1600304111:mosquittoversion1.6.8starting1600304111:Usingdefaultconfig.1600304111:Openingipv4listensocketonport1883.1600304111:Openingipv6listensocketonport1883.智能家居網(wǎng)關(guān)Linux開發(fā)案例5.3.3MQTT數(shù)據(jù)服務(wù)設(shè)計Mosquitto安裝與調(diào)試2、Mosquitto測試發(fā)布使用mosquitto_pub命令,訂閱使用mosquitto_sub命令。常用參數(shù)介紹如表所示。新建一個命令行終端,輸入命令“mosquitto_sub-h-p1883-v-ttesttopic”訂閱主題,如右圖所示。參數(shù)描述-h服務(wù)器主機,默認localhost-t指定主題-u用戶名-P密碼-i客戶端id,唯一-m發(fā)布的消息內(nèi)容智能家居網(wǎng)關(guān)Linux開發(fā)案例5.3.3MQTT數(shù)據(jù)服務(wù)設(shè)計MQTT數(shù)據(jù)服務(wù)設(shè)計分析MQTT數(shù)據(jù)服務(wù)設(shè)計,通過Linuxc編程mosquitto庫的調(diào)用,實現(xiàn)一個mqtt客戶端,向服務(wù)推送消息與接收處理用戶控制指令,如圖所示。智能家居網(wǎng)關(guān)Linux開發(fā)案例5.3.3MQTT數(shù)據(jù)服務(wù)設(shè)計MQTT數(shù)據(jù)服務(wù)設(shè)計分析本項目函數(shù)接口與說明如表所示。智能家居網(wǎng)關(guān)Linux開發(fā)案例5.3.3MQTT數(shù)據(jù)服務(wù)設(shè)計MQTT數(shù)據(jù)服務(wù)設(shè)計分析本項目函數(shù)接口與說明如表所示。智能家居網(wǎng)關(guān)Linux開發(fā)案例5.3.3MQTT數(shù)據(jù)服務(wù)設(shè)計MQTT數(shù)據(jù)服務(wù)設(shè)計分析本項目函數(shù)接口與說明如表所示。智能家居網(wǎng)關(guān)Linux開發(fā)案例1)通過MobaXterm軟件將zigbee-tcp-test文件拷貝到開發(fā)板的/home/zonesion目錄下面,輸入如下命令進入實驗?zāi)夸洠?.3.5開發(fā)實踐:Linux網(wǎng)關(guān)遠程服務(wù)設(shè)計TCP網(wǎng)絡(luò)服務(wù)設(shè)計test@rk3399:~/work$cdzigbee-tcp-test/test@rk3399:~/work/zigbee-tcp-test$lscache-addr.cMakefileprotol.huart.hutil.hzigbee.hcache-addr.hprotol.cuart.cutil.czigbee.czigbee-tcp-test.c2)輸入make命令進行編譯,查看是否生成目標(biāo)文件test@rk3399:~/work/zigbee-tcp-test$makegcc-static-pthreaduart.cutil.cprotol.czigbee.ccache-addr.czigbee-tcp-test.c-ozigbee-tcp-testprotol.c:Infunction‘mk_net_data’:protol.c:70:15:warning:implicitdeclarationoffunction‘calc_fcs’[-Wimplicit-function-declaration]pkg[9+len]=calc_fcs(&pkg[1],pkg_len-2);^test@rk3399:~/work/zigbee-tcp-test$lscache-addr.cprotol.cuart.hzigbee.czigbee-tcp-test.ccache-addr.hprotol.hutil.czigbee.hMakefileuart.cutil.hzigbee-tcp-test智能家居網(wǎng)關(guān)Linux開發(fā)案例5.3.5開發(fā)實踐:Linux網(wǎng)關(guān)遠程服務(wù)設(shè)計TCP網(wǎng)絡(luò)服務(wù)設(shè)計3)查看網(wǎng)關(guān)以太網(wǎng)地址test@rk3399:~/work/zigbee-tcp-test$ifconfigwlan0Linkencap:以太網(wǎng)

硬件地址6c:21:a2:ec:55:ebinet地址:1廣播:55掩碼:inet6地址:fe80::38c6:ca99:8363:32b5/64Scope:LinkUPBROADCASTRUNNINGMULTICASTMTU:1500躍點數(shù):1

接收數(shù)據(jù)包:791錯誤:0丟棄:2過載:0幀數(shù):0

發(fā)送數(shù)據(jù)包:677錯誤:0丟棄:0過載:0載波:0

碰撞:0發(fā)送隊列長度:1000

接收字節(jié):118235(118.2KB)發(fā)送字節(jié):132562(132.5KB)test@rk3399:~/work/zigbee-tcp-test$./zigbee-tcp-testzigbeezigbeetestprogramv0.1

發(fā)送數(shù)據(jù)格式MAC地址,數(shù)據(jù)

例如:00:12:4B:00:06:1B:5F:BB,{A0=?}

tcpserverlistenport600004)輸入如下命令運行測試程序,終端打印出如下信息:智能家居網(wǎng)關(guān)Linux開發(fā)案例5.3.5開發(fā)實踐:Linux網(wǎng)關(guān)遠程服務(wù)設(shè)計TCP網(wǎng)絡(luò)服務(wù)設(shè)計5)打開TCP測試工具,會出現(xiàn)如左圖所示界面6)然后在發(fā)送區(qū)輸入如下信息“00:12:4B:00:15:D1:49:7A,{OD1=64,D1=?}”,并點擊發(fā)送按鈕,注意MAC地址必須是對應(yīng)自己控制類節(jié)點的。(注意,如果節(jié)點原來狀態(tài)是D1=64,需要先發(fā)送命令00:12:4B:00:15:D1:49:7A,{CD1=64,D1=?},關(guān)閉繼電器1會看到接收區(qū)立即出現(xiàn)一行新的應(yīng)答信息“00:12:4B:00:15:D1:49:7A,{D1=64}”,說明數(shù)據(jù)的下行和上行都成功了。(如右圖)智能家居網(wǎng)關(guān)Linux開發(fā)案例5.3.5開發(fā)實踐:Linux網(wǎng)關(guān)遠程服務(wù)設(shè)計 Linux網(wǎng)關(guān)協(xié)議設(shè)計1)啟動mqtt服務(wù)器中的mosquitto服務(wù)2)啟動網(wǎng)關(guān)消息發(fā)布程序3)服務(wù)器端訂閱主題4)Android端mqtt服務(wù)測試測試1測試3測試2測試4智能家居網(wǎng)關(guān)Linux開發(fā)案例5.3.5開發(fā)實踐:Linux網(wǎng)關(guān)遠程服務(wù)設(shè)計Linux網(wǎng)關(guān)協(xié)議設(shè)計1)將zigbee-tcp_send文件夾通過MobaXtrem軟件拷貝到開發(fā)板的/home/zonesion/zcloud目錄下面,進入目錄zigbee-zhiyun,并查看當(dāng)前目錄文件2)測試程序編譯運行3)協(xié)議測試打開調(diào)試工具ZCloudTools,選擇實時數(shù)據(jù)測試工具,輸入程序中設(shè)置的ID\KEY,點擊連接按鈕,等待30s左右會顯示接收到的節(jié)點數(shù)據(jù),協(xié)議測試如表所示。(詳細命令步驟解析請查看文檔)采集類節(jié)點數(shù)據(jù)00:12:4B:00:15:D3:57:B4{A0=26.5,A1=33.3,A2=292.5,A3=112,A4=1011.9,A5=0,A6=0.0,D1=O}控制類節(jié)點數(shù)據(jù)00:12:4B:00:15:D1:49:7A{D1=0}安防類節(jié)點數(shù)據(jù)00:12:4B:00:15:D1:35:C1{A0=0,A4=0,A5=0,D1=0}智能家居網(wǎng)關(guān)Linux開發(fā)案例5.3.5開發(fā)實踐:Linux網(wǎng)關(guān)遠程服務(wù)設(shè)計Linux網(wǎng)關(guān)協(xié)議設(shè)計實時數(shù)據(jù)測試如左圖所示。在地址信息輸入框分別輸入3個節(jié)點MAC地址,數(shù)據(jù)輸入框輸入?yún)f(xié)議命令{TYPE=?},可以查詢節(jié)點的類型,如右圖所示。(詳細命令步驟解析請查看文檔)智能家居網(wǎng)關(guān)Linux開發(fā)案例5.3.6小結(jié)學(xué)習(xí)了智能網(wǎng)關(guān)實現(xiàn)的遠程服務(wù)設(shè)計架構(gòu),MQTT協(xié)議的基本概念,Mosquitto安裝與測試。通過TCP網(wǎng)絡(luò)服務(wù)分析與設(shè)計、MQTT數(shù)據(jù)服務(wù)分析與設(shè)計、Linux網(wǎng)關(guān)協(xié)議分析與設(shè)計三個部分的程序分析與實現(xiàn),完成網(wǎng)關(guān)的遠程服務(wù)編程實現(xiàn)。智能家居網(wǎng)關(guān)Linux開發(fā)案例

5.3.7思考與拓展1、什么是MQTT協(xié)議,本協(xié)議有什么特性?2、描述MQTT協(xié)議實現(xiàn)方式?3、TCP網(wǎng)絡(luò)服務(wù)設(shè)計、MQTT數(shù)據(jù)服務(wù)設(shè)計與Linux網(wǎng)關(guān)協(xié)議設(shè)計這3個功能設(shè)計有什么區(qū)別與聯(lián)系??第6章智能車牌識別Linux開發(fā)案例智能車牌識別Linux開發(fā)案例本章分析Linux技術(shù)在智能家居網(wǎng)關(guān)中的應(yīng)用,共分3個模塊:1.系統(tǒng)總體設(shè)計與OpenCV開發(fā)框架:先進行系統(tǒng)總體設(shè)計分析,簡述OpenCV技術(shù),分析OpenCV開發(fā)環(huán)境和OpenCV常用接口,實現(xiàn)OpenCV視頻流采集。2.車牌識別功能開發(fā):學(xué)習(xí)車牌識別原理,分析卷積神經(jīng)網(wǎng)絡(luò)技術(shù)、車牌識別開源庫,進行車牌識別功能開發(fā),實現(xiàn)視頻車牌識別。3.車牌識別管理功能開發(fā):學(xué)習(xí)Flask應(yīng)用框架,進行Flask安裝測試和Flask應(yīng)用分析,實現(xiàn)Flask視頻車牌識別。第6章智能車牌識別Linux開發(fā)案例

6.1系統(tǒng)總體設(shè)計與OpenCV開發(fā)框架智能車牌識別Linux開發(fā)案例智能車牌識別系統(tǒng)是結(jié)合數(shù)字圖像處理技術(shù),計算機視覺和模式識別為一體的綜合系統(tǒng),包含對車牌圖像進行預(yù)處理,車牌區(qū)域定位,字符分割以及字符識別等功能。本項目通過運用基于OpenCV計算機視覺庫,采用HyperLPR基于深度學(xué)習(xí)的高性能中文車牌庫,大大降低了系統(tǒng)實現(xiàn)復(fù)雜度,實現(xiàn)了快速準(zhǔn)確識別中文車牌號碼。功能需求如表所示。6.1.1系統(tǒng)總體設(shè)計分析

系統(tǒng)需求分析功能功能說明視頻流采集功能基于OpenCV采集視頻流中文車牌識別功能基于HyperLPR高性能中文車牌庫對圖片、視頻中車牌進行識別WEB用戶界面功能基于Flask應(yīng)用框架顯示視頻流與識別結(jié)果智能車牌識別Linux開發(fā)案例本項目的硬件主要邊緣計算網(wǎng)關(guān)與高清攝像頭構(gòu)成。邊緣計算網(wǎng)關(guān)連接高清攝像頭通過OpenCV采集視頻數(shù)據(jù),實時采視頻數(shù)據(jù)再通過HyperLPR庫對視頻流中的中文車牌進行識別,PC端的WEB管理界面可實時顯示OpenCV采集的視頻流與識別結(jié)果,硬件結(jié)構(gòu)框如左圖所示。中文車牌識別系統(tǒng),其軟件模塊主要由OpenCV庫,HyperLPR庫、Flask服務(wù)軟件、PC端Web管理軟件構(gòu)成,項目主要開發(fā)語言為Python語言,軟件總體結(jié)構(gòu)框如右圖所示。6.1.1系統(tǒng)總體設(shè)計分析

系統(tǒng)總體設(shè)計智能車牌識別Linux開發(fā)案例6.1.2OpenCV簡介OpenCV(OpenSourceComputerVisionLibrary)開源計算機視覺庫。OpenCV是一個基于BSD許可(開源)發(fā)行的跨平臺計算機視覺和機器學(xué)習(xí)軟件庫,可以運行在Linux、Windows、Android和MacOS操作系統(tǒng)上。它輕量級而且高效,同時提供了有C++,Python,Java和MATLAB等語言的接口,實現(xiàn)了圖像處理和計算機視覺方面的很多通用算法。OpenCV的結(jié)構(gòu)共分為五個部分,分別是圖像處理和視覺算法(CV)、機器學(xué)習(xí)庫(ML)、圖像和視頻輸入/輸出庫(HighGUI)、基本結(jié)構(gòu)和算法,XML支持,繪圖函數(shù)(CXCORE)以及CVAUx模塊,其中前4個模塊結(jié)構(gòu)如圖所示。CV圖像與視覺算法ML統(tǒng)計分析器HighGUI圖像與視頻輸入輸出CXCORE基本結(jié)構(gòu)和算法、XML支持、繪圖函數(shù)智能車牌識別Linux開發(fā)案例6.1.3OpenCV開發(fā)環(huán)境(環(huán)境配置詳細請查看文檔)6.1.4

溫馨提示

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

最新文檔

評論

0/150

提交評論