Linux人工智能開(kāi)發(fā)實(shí)例 課件 第5-7章 智能家居網(wǎng)關(guān)Linux開(kāi)發(fā)案例-AI人臉智能識(shí)別Linux開(kāi)發(fā)案例_第1頁(yè)
Linux人工智能開(kāi)發(fā)實(shí)例 課件 第5-7章 智能家居網(wǎng)關(guān)Linux開(kāi)發(fā)案例-AI人臉智能識(shí)別Linux開(kāi)發(fā)案例_第2頁(yè)
Linux人工智能開(kāi)發(fā)實(shí)例 課件 第5-7章 智能家居網(wǎng)關(guān)Linux開(kāi)發(fā)案例-AI人臉智能識(shí)別Linux開(kāi)發(fā)案例_第3頁(yè)
Linux人工智能開(kāi)發(fā)實(shí)例 課件 第5-7章 智能家居網(wǎng)關(guān)Linux開(kāi)發(fā)案例-AI人臉智能識(shí)別Linux開(kāi)發(fā)案例_第4頁(yè)
Linux人工智能開(kāi)發(fā)實(shí)例 課件 第5-7章 智能家居網(wǎng)關(guān)Linux開(kāi)發(fā)案例-AI人臉智能識(shí)別Linux開(kāi)發(fā)案例_第5頁(yè)
已閱讀5頁(yè),還剩166頁(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)介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

地址緩存服務(wù)程序設(shè)計(jì)1)地址緩存服務(wù)地址緩存就是將收到的數(shù)據(jù)提取出短地址,然后查詢(xún)出對(duì)應(yīng)的長(zhǎng)地址,然后將長(zhǎng)短地址的對(duì)應(yīng)關(guān)系緩存起來(lái),這樣以后收到包含短地址的數(shù)據(jù)后,就可以不通過(guò)串口查詢(xún)來(lái)轉(zhuǎn)換為長(zhǎng)地址,進(jìn)而將長(zhǎng)地址和對(duì)應(yīng)的傳感器數(shù)據(jù)傳輸?shù)椒?wù)器上,這是數(shù)據(jù)的上行過(guò)程。同樣當(dāng)服務(wù)器發(fā)送一個(gè)長(zhǎng)地址和命令給網(wǎng)關(guān),網(wǎng)關(guān)直接從緩存里找到長(zhǎng)地址對(duì)應(yīng)的短地址,也不需要通過(guò)串口查詢(xún)就可以找到短地址了,這樣就可以提高效率了。2)地址緩存關(guān)系程序設(shè)計(jì)定義地址結(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開(kāi)發(fā)案例ZigBee綜合測(cè)試程序基于Linux串口可以完成對(duì)傳感器數(shù)據(jù)的采集和控制,設(shè)計(jì)如圖所示。程序框架總共分為兩部分:一部分是數(shù)據(jù)的封包(打包),一部分是數(shù)據(jù)的解包。其中封包就是輸入MAC地址和對(duì)應(yīng)的命令,然后通過(guò)串口發(fā)送完整的命令給節(jié)點(diǎn)。解包就是將串口收到的傳感器信息以MAC地址和數(shù)據(jù)的形式解析出來(lái)。5.2.5數(shù)據(jù)處理服務(wù)設(shè)計(jì)

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

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

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

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

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

數(shù)據(jù)處理服務(wù)設(shè)計(jì)分析(僅展示部分代碼,詳細(xì)分析源碼請(qǐng)查看文檔)封包程序設(shè)計(jì):理解解包程序設(shè)計(jì)主要是理解以下幾個(gè)關(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("格式錯(cuò)誤\n");offset=0;return;}*pdat++='\0';intlen=strlen(buf);if(len!=23){offset=0;printf("地址格式錯(cuò)誤\n");return;}if(strlen(pdat)==0){offset=0;printf("發(fā)送數(shù)據(jù)長(zhǎng)度不能為0\n");return;}printf("%s<<<%s\n",buf,pdat);zigbee_send_data(buf,pdat,strlen(pdat));}offset=0;}}智能家居網(wǎng)關(guān)Linux開(kāi)發(fā)案例5.2.6開(kāi)發(fā)實(shí)踐:Linux網(wǎng)關(guān)本地服務(wù)設(shè)計(jì)

串口通信服務(wù)設(shè)計(jì)1)把實(shí)驗(yàn)?zāi)夸浵旅娴膗art-test文件夾通過(guò)MobaXterm軟件拷貝到開(kāi)發(fā)板的/home/zonesion目錄下。2)輸入如下命令進(jìn)入本節(jié)實(shí)驗(yàn)?zāi)夸?,ls命令查看當(dāng)前文件夾內(nèi)容test@rk3399:~$cduart-test/test@rk3399:~/uart-test$lsMakefileuart.cuart.huart-testuart-test.cutil.cutil.h3)輸入make,進(jìn)行編譯,查看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”,運(yùn)行該程序test@rk3399:~/uart-test$./uart-test智能家居網(wǎng)關(guān)Linux開(kāi)發(fā)案例5.2.6開(kāi)發(fā)實(shí)踐:Linux網(wǎng)關(guān)本地服務(wù)設(shè)計(jì)

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

協(xié)議解析服務(wù)設(shè)計(jì)1)將實(shí)驗(yàn)?zāi)夸浵碌膒rotol-test文件通過(guò)MobaXterm軟件拷貝到開(kāi)發(fā)板的/home/zonesion目錄下面。2)然后輸入如下命令進(jìn)入該目錄test@rk3399:~$cdprotol-test/test@rk3399:~/protol-test$lsMakefileprotol.hprotol-test.cuart.hutil.hprotol.cprotol-testuart.cutil.c3)輸入make指令,進(jìn)行編譯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開(kāi)發(fā)案例5.2.6開(kāi)發(fā)實(shí)踐:Linux網(wǎng)關(guān)本地服務(wù)設(shè)計(jì)

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

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

地址緩存服務(wù)設(shè)計(jì)1)將實(shí)驗(yàn)?zāi)夸浵旅娴腸ache-test文件通過(guò)MobaXterm軟件或者U盤(pán)拷貝到開(kāi)發(fā)板的/home/zonesion目錄下面,進(jìn)入本節(jié)實(shí)驗(yàn)?zāi)夸?。test@rk3399:~/$cdcache-test/test@rk3399:~/cache-test$lscache-addr.cMakefileprotol.huart.hutil.hzigbee.hcache-addr.hprotol.cuart.cutil.czigbee.czigbee-test.c2)輸入make指令進(jìn)行編譯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開(kāi)發(fā)案例5.2.6開(kāi)發(fā)實(shí)踐:Linux網(wǎng)關(guān)本地服務(wù)設(shè)計(jì)

地址緩存服務(wù)設(shè)計(jì)4)運(yùn)行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開(kāi)發(fā)案例5.2.6開(kāi)發(fā)實(shí)踐:Linux網(wǎng)關(guān)本地服務(wù)設(shè)計(jì)

地址緩存服務(wù)設(shè)計(jì)6)繼續(xù)等待20秒,等待接收下一次數(shù)據(jù),會(huì)出現(xiàn)如下信息uart>>>FE0A6980128500007B44313D307D0Aprotol>>>1285,0000,7B44313D307Dzigbee:1285--->00:12:4B:00:15:D1:49:077)接下來(lái)手動(dòng)在終端輸入一個(gè)長(zhǎng)地址,來(lái)查看對(duì)應(yīng)的短地址是否被緩存。在終端輸入MAC地址,然后回車(chē)(說(shuō)明:MAC地址一定要對(duì)應(yīng)自己終端節(jié)點(diǎn)的,不要和實(shí)驗(yàn)步驟的一樣。)00:12:4B:00:15:D1:49:078)可以看到串口會(huì)立即打印如下信息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開(kāi)發(fā)案例5.2.7小結(jié)學(xué)習(xí)了智能網(wǎng)關(guān)實(shí)現(xiàn)的接入能力、管理能力、協(xié)議轉(zhuǎn)換的設(shè)計(jì),本地服務(wù)總體設(shè)計(jì)架構(gòu)。通過(guò)協(xié)議解析服務(wù)分析與設(shè)計(jì)、地址緩存服務(wù)分析與設(shè)計(jì)、數(shù)據(jù)處理服務(wù)分析與設(shè)計(jì)三個(gè)部分的程序分析與實(shí)現(xiàn),學(xué)習(xí)網(wǎng)關(guān)的本地服務(wù)編程實(shí)現(xiàn)。智能家居網(wǎng)關(guān)Linux開(kāi)發(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開(kāi)發(fā)案例5.3Linux網(wǎng)關(guān)遠(yuǎn)程服務(wù)設(shè)計(jì)智能家居網(wǎng)關(guān)Linux開(kāi)發(fā)案例Linux網(wǎng)關(guān)的遠(yuǎn)程服務(wù)設(shè)計(jì),通過(guò)TCP網(wǎng)絡(luò)服務(wù)設(shè)計(jì)、MQTT數(shù)據(jù)服務(wù)設(shè)計(jì)、Linux網(wǎng)關(guān)協(xié)議設(shè)計(jì)3個(gè)功能步驟進(jìn)行設(shè)計(jì)。1)TCP網(wǎng)絡(luò)服務(wù)設(shè)計(jì)網(wǎng)關(guān)收到串口的數(shù)據(jù)后可以通過(guò)UDP或者TCP服務(wù)將傳感器的MAC地址和傳感器數(shù)據(jù)傳輸?shù)椒?wù)器上面,實(shí)現(xiàn)Zigbee數(shù)據(jù)通信的上行。這里選擇傳輸比較穩(wěn)定的TCP服務(wù)來(lái)實(shí)現(xiàn)這種上行方式,如圖所示。5.3.1遠(yuǎn)程服務(wù)設(shè)計(jì)分析智能家居網(wǎng)關(guān)Linux開(kāi)發(fā)案例2)MQTT數(shù)據(jù)服務(wù)設(shè)計(jì)MQTT數(shù)據(jù)服務(wù)設(shè)計(jì),通過(guò)Linuxc編程mosquitto庫(kù)的調(diào)用,實(shí)現(xiàn)一個(gè)mqtt客戶(hù)端,向服務(wù)推送消息與接收處理用戶(hù)控制指令,如圖所示。5.3.1遠(yuǎn)程服務(wù)設(shè)計(jì)分析智能家居網(wǎng)關(guān)Linux開(kāi)發(fā)案例3)Linux網(wǎng)關(guān)協(xié)議設(shè)計(jì)Linux網(wǎng)關(guān)協(xié)議設(shè)計(jì),是在TCP網(wǎng)絡(luò)服務(wù)設(shè)計(jì)的基礎(chǔ)上,通過(guò)TCP網(wǎng)絡(luò)編程通信,與服務(wù)器進(jìn)行通信數(shù)據(jù)交互。Linux網(wǎng)關(guān)協(xié)議設(shè)計(jì)將在網(wǎng)關(guān)上建立一個(gè)TCP客戶(hù)端,連接時(shí)需要發(fā)送網(wǎng)關(guān)認(rèn)證數(shù)據(jù)包,進(jìn)行認(rèn)證。認(rèn)證通過(guò)后,數(shù)據(jù)按照Z(yǔ)XBee協(xié)議進(jìn)行封包與解包處理。Linux網(wǎng)關(guān)協(xié)議設(shè)計(jì)框架如圖所示。5.3.1遠(yuǎn)程服務(wù)設(shè)計(jì)分析智能家居網(wǎng)關(guān)Linux開(kāi)發(fā)案例網(wǎng)關(guān)收到串口的數(shù)據(jù)后可以通過(guò)UDP或者TCP服務(wù)將傳感器的MAC地址和傳感器數(shù)據(jù)傳輸?shù)椒?wù)器上面,實(shí)現(xiàn)Zigbee數(shù)據(jù)通信的上行。這里選擇傳輸比較穩(wěn)定的TCP服務(wù)來(lái)實(shí)現(xiàn)這種上行方式。數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)設(shè)計(jì)將在網(wǎng)關(guān)上建立一個(gè)TCP服務(wù)端,然后將傳感器數(shù)據(jù)轉(zhuǎn)發(fā)到連接的客戶(hù)端,客戶(hù)端由TCP&UDP測(cè)試工具來(lái)模擬。網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)設(shè)計(jì)框架如圖所示。數(shù)據(jù)轉(zhuǎn)發(fā)服務(wù)設(shè)計(jì)主要由兩大部分組成,一部分是網(wǎng)關(guān)(服務(wù)器)發(fā)數(shù)據(jù)給客戶(hù)端,把這個(gè)過(guò)程叫做ZigBee上行數(shù)據(jù)通信,另外一部分是發(fā)送數(shù)據(jù)給網(wǎng)關(guān)(服務(wù)器),網(wǎng)關(guān)對(duì)數(shù)據(jù)進(jìn)行處理,最后發(fā)送命令給ZigBee節(jié)點(diǎn),把這個(gè)過(guò)程客戶(hù)端叫做ZigBee下行數(shù)據(jù)通信。5.3.2TCP網(wǎng)絡(luò)服務(wù)設(shè)計(jì)TCP網(wǎng)絡(luò)服務(wù)設(shè)計(jì)分析智能家居網(wǎng)關(guān)Linux開(kāi)發(fā)案例5.3.2TCP網(wǎng)絡(luò)服務(wù)設(shè)計(jì)TCP網(wǎng)絡(luò)服務(wù)設(shè)計(jì)分析本項(xiàng)目函數(shù)接口與說(shuō)明如表所示(詳細(xì)函數(shù)解析請(qǐng)查看文檔)智能家居網(wǎng)關(guān)Linux開(kāi)發(fā)案例5.3.2TCP網(wǎng)絡(luò)服務(wù)設(shè)計(jì)TCP網(wǎng)絡(luò)服務(wù)設(shè)計(jì)分析(詳細(xì)函數(shù)解析請(qǐng)查看文檔)智能家居網(wǎng)關(guān)Linux開(kāi)發(fā)案例5.3.2TCP網(wǎng)絡(luò)服務(wù)設(shè)計(jì)TCP網(wǎng)絡(luò)服務(wù)設(shè)計(jì)分析(詳細(xì)函數(shù)解析請(qǐng)查看文檔)智能家居網(wǎng)關(guān)Linux開(kāi)發(fā)案例5.3.3MQTT數(shù)據(jù)服務(wù)設(shè)計(jì)MQTT協(xié)議概述MQTT(消息隊(duì)列遙測(cè)傳輸)是ISO標(biāo)準(zhǔn)(ISO/IECPRF20922)下基于發(fā)布/訂閱范式的消息協(xié)議。它工作在TCP/IP協(xié)議族上,是為硬件性能低下的遠(yuǎn)程設(shè)備以及網(wǎng)絡(luò)狀況糟糕的情況下而設(shè)計(jì)的發(fā)布/訂閱型消息協(xié)議,為此,它需要一個(gè)消息中間件。MQTT是一個(gè)基于客戶(hù)端-服務(wù)器的消息發(fā)布/訂閱傳輸協(xié)議,是一種輕量信息傳輸協(xié)議,專(zhuān)門(mén)為受限設(shè)備,低帶寬,高延遲或不可靠的網(wǎng)絡(luò)而設(shè)的?MQTT的設(shè)計(jì)原理是最小化網(wǎng)絡(luò)帶寬和設(shè)備資源要求。MQTT協(xié)議的底層是基于TCP/IP,它工作在TCP和IP協(xié)議層上,屬于應(yīng)用層協(xié)議,在支持TCP/IP協(xié)議的機(jī)器上運(yùn)行。MQTT協(xié)議為計(jì)算能力有限,且工作在低帶寬、不可靠的網(wǎng)絡(luò)的遠(yuǎn)程傳感器和控制設(shè)備通訊而設(shè)計(jì)的協(xié)議,具有以下主要的幾項(xiàng)特性:1、使用發(fā)布/訂閱消息模式,提供一對(duì)多的消息發(fā)布,解除應(yīng)用程序耦合;2、對(duì)負(fù)載內(nèi)容屏蔽的消息傳輸;3、使用TCP/IP提供網(wǎng)絡(luò)連接;4、小型傳輸,開(kāi)銷(xiāo)很小,協(xié)議交換最小化,以降低網(wǎng)絡(luò)流量;5、使用LastWill和Testament特性通知有關(guān)各方客戶(hù)端異常中斷的機(jī)制。LastWill:即遺言機(jī)制,用于通知同一主題下的其他設(shè)備發(fā)送遺言的設(shè)備已經(jīng)斷開(kāi)了連接。Testament:遺囑機(jī)制。智能家居網(wǎng)關(guān)Linux開(kāi)發(fā)案例5.3.3MQTT數(shù)據(jù)服務(wù)設(shè)計(jì)MQTT協(xié)議概述MQTT協(xié)議中的訂閱、主題、會(huì)話訂閱(Subscription):訂閱包含主題篩選器(TopicFilter)和最大服務(wù)質(zhì)量(QoS)。訂閱會(huì)與一個(gè)會(huì)話(Session)關(guān)聯(lián)。一個(gè)會(huì)話可以包含多個(gè)訂閱。每一個(gè)會(huì)話中的每個(gè)訂閱都有一個(gè)不同的主題篩選器。會(huì)話(Session):每個(gè)客戶(hù)端與服務(wù)器建立連接后就是一個(gè)會(huì)話,客戶(hù)端和服務(wù)器之間有狀態(tài)交互。會(huì)話存在于一個(gè)網(wǎng)絡(luò)之間,也可能在客戶(hù)端和服務(wù)器之間跨越多個(gè)連續(xù)的網(wǎng)絡(luò)連接。主題名(TopicName):連接到一個(gè)應(yīng)用程序消息的標(biāo)簽,該標(biāo)簽與服務(wù)器的訂閱相匹配。服務(wù)器會(huì)將消息發(fā)送給訂閱所匹配標(biāo)簽的每個(gè)客戶(hù)端。主題篩選器(TopicFilter):一個(gè)對(duì)主題名通配符篩選器,在訂閱表達(dá)式中使用,表示訂閱所匹配到的多個(gè)主題。負(fù)載(Payload):消息訂閱者所具體接收的內(nèi)容。智能家居網(wǎng)關(guān)Linux開(kāi)發(fā)案例5.3.3MQTT數(shù)據(jù)服務(wù)設(shè)計(jì)MQTT協(xié)議概述網(wǎng)絡(luò)傳輸與應(yīng)用消息MQTT會(huì)構(gòu)建底層網(wǎng)絡(luò)傳輸:它將建立客戶(hù)端到服務(wù)器的連接,提供兩者之間的一個(gè)有序的、無(wú)損的、基于字節(jié)流的雙向傳輸。當(dāng)應(yīng)用數(shù)據(jù)通過(guò)MQTT網(wǎng)絡(luò)發(fā)送時(shí),MQTT會(huì)把與之相關(guān)的服務(wù)質(zhì)量和主題名相關(guān)連。MQTT客戶(hù)端一個(gè)使用MQTT協(xié)議的應(yīng)用程序或者設(shè)備,它總是建立到服務(wù)器的網(wǎng)絡(luò)連接??蛻?hù)端作用:(1)發(fā)布其他客戶(hù)端可能會(huì)訂閱的信息;(2)訂閱其它客戶(hù)端發(fā)布的消息;(3)退訂或刪除應(yīng)用程序的消息;(4)斷開(kāi)與服務(wù)器連接。MQTT服務(wù)器MQTT服務(wù)器以稱(chēng)為"消息代理"(Broker),可以是一個(gè)應(yīng)用程序或一臺(tái)設(shè)備。它是位于消息發(fā)布者和訂閱者之間,它作用:(1)接受來(lái)自客戶(hù)的網(wǎng)絡(luò)連接;(2)接受客戶(hù)發(fā)布的應(yīng)用信息;(3)處理來(lái)自客戶(hù)端的訂閱和退訂請(qǐng)求;(4)向訂閱的客戶(hù)轉(zhuǎn)發(fā)應(yīng)用程序消息。智能家居網(wǎng)關(guān)Linux開(kāi)發(fā)案例5.3.3MQTT數(shù)據(jù)服務(wù)設(shè)計(jì)MQTT協(xié)議概述網(wǎng)絡(luò)傳輸與應(yīng)用消息MQTT協(xié)議中的方法MQTT協(xié)議中定義了一些方法,來(lái)于表示對(duì)確定資源所進(jìn)行操作。這個(gè)資源可以代表預(yù)先存在的數(shù)據(jù)或動(dòng)態(tài)生成數(shù)據(jù),這取決于服務(wù)器的實(shí)現(xiàn)。通常來(lái)說(shuō),資源指服務(wù)器上的文件或輸出。主要方法有:(1)Connect。等待與服務(wù)器建立連接。(2)Disconnect。等待MQTT客戶(hù)端完成所做的工作,并與服務(wù)器斷開(kāi)TCP/IP會(huì)話。(3)Subscribe。等待完成訂閱。(4)UnSubscribe。等待服務(wù)器取消客戶(hù)端的一個(gè)或多個(gè)topics訂閱。(5)Publish。MQTT客戶(hù)端發(fā)送消息請(qǐng)求,發(fā)送完成后返回應(yīng)用程序線程。智能家居網(wǎng)關(guān)Linux開(kāi)發(fā)案例5.3.3MQTT數(shù)據(jù)服務(wù)設(shè)計(jì)MQTT協(xié)議概述網(wǎng)絡(luò)傳輸與應(yīng)用消息MQTT協(xié)議數(shù)據(jù)包結(jié)構(gòu)在MQTT協(xié)議中,一個(gè)MQTT數(shù)據(jù)包由:固定頭(Fixedheader)、可變頭(Variableheader)、消息體(payload)三部分構(gòu)成。MQTT數(shù)據(jù)包結(jié)構(gòu)如下:(1)固定頭(Fixedheader)。存在于所有MQTT數(shù)據(jù)包中,表示數(shù)據(jù)包類(lèi)型及數(shù)據(jù)包的分組類(lèi)標(biāo)識(shí)。(2)可變頭(Variableheader)。存在于部分MQTT數(shù)據(jù)包中,數(shù)據(jù)包類(lèi)型決定了可變頭是否存在及其具體內(nèi)容。(3)消息體(Payload)。存在于部分MQTT數(shù)據(jù)包中,表示客戶(hù)端收到的具體內(nèi)容。(MQTT通信架構(gòu)圖)智能家居網(wǎng)關(guān)Linux開(kāi)發(fā)案例5.3.3MQTT數(shù)據(jù)服務(wù)設(shè)計(jì)MQTT協(xié)議概述網(wǎng)絡(luò)傳輸與應(yīng)用消息MQTT協(xié)議實(shí)現(xiàn)方式實(shí)現(xiàn)MQTT協(xié)議需要客戶(hù)端和服務(wù)器端通訊完成,在通訊過(guò)程中,MQTT協(xié)議中有三種身份:發(fā)布者(Publish)、代理(Broker)(服務(wù)器)、訂閱者(Subscribe)。其中,消息的發(fā)布者和訂閱者都是客戶(hù)端,消息代理是服務(wù)器,消息發(fā)布者可以同時(shí)是訂閱者。(1)發(fā)布者將消息發(fā)布至代理服務(wù)器中,消息在代理服務(wù)器中以樹(shù)的方式存儲(chǔ)。(2)訂閱者通過(guò)訂閱消息接受訂閱的消息,代理服務(wù)器接收到訂閱消息后將訂閱者放置在對(duì)應(yīng)末端節(jié)點(diǎn)的下方。(3)代理根據(jù)消息的設(shè)置決定是否發(fā)送一些以前的信息,或者當(dāng)發(fā)布者發(fā)布信息時(shí),代理將信息推送到訂閱服務(wù)器。智能家居網(wǎng)關(guān)Linux開(kāi)發(fā)案例5.3.3MQTT數(shù)據(jù)服務(wù)設(shè)計(jì)Mosquitto安裝與調(diào)試Mosquitto是一個(gè)開(kāi)源(BSD許可證)的消息代理,是一款實(shí)現(xiàn)了消息推送協(xié)議MQTT的開(kāi)源消息代理軟件,提供輕量級(jí)的,支持可發(fā)布/可訂閱的的消息推送模式,使設(shè)備對(duì)設(shè)備之間的短消息通信變得簡(jiǎn)單,比如現(xiàn)在應(yīng)用廣泛的低功耗傳感器,手機(jī)、嵌入式計(jì)算機(jī)、微型控制器等移動(dòng)設(shè)備,安裝步驟如下:1、Mosquitto安裝在下述網(wǎng)址下載MQTT/files/source/#解壓tarzxfvmosquitto-x.x.x.tar.gz#進(jìn)入目錄cdmosquitto-1.4.9#編譯make#安裝sudomakeinstallMosquitto功能命令如下:mosquitto–代理器主程序mosquitto.conf–配置文件mosquitto_passwd–用戶(hù)密碼管理工具mosquitto_tls–veryroughcheatsheetforhelpingwithSSL/TLSmosquitto_pub–用于發(fā)布消息的命令行客戶(hù)端mosquitto_sub–用于訂閱消息的命令行客戶(hù)端mqtt–MQTT的后臺(tái)進(jìn)程libmosquitto–客戶(hù)端編譯的庫(kù)文件智能家居網(wǎng)關(guān)Linux開(kāi)發(fā)案例5.3.3MQTT數(shù)據(jù)服務(wù)設(shè)計(jì)Mosquitto安裝與調(diào)試2、Mosquitto測(cè)試Mosquitto服務(wù)器安裝完成后,通過(guò)以下3個(gè)命令對(duì)服務(wù)進(jìn)行測(cè)試。這3個(gè)命令需要在3個(gè)Linux命令行終端中運(yùn)行。mosquitto–代理器主程序mosquitto_pub–用于發(fā)布消息的命令行客戶(hù)端mosquitto_sub–用于訂閱消息的命令行客戶(hù)端首先,在命令行終端啟動(dòng)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開(kāi)發(fā)案例5.3.3MQTT數(shù)據(jù)服務(wù)設(shè)計(jì)Mosquitto安裝與調(diào)試2、Mosquitto測(cè)試發(fā)布使用mosquitto_pub命令,訂閱使用mosquitto_sub命令。常用參數(shù)介紹如表所示。新建一個(gè)命令行終端,輸入命令“mosquitto_sub-h-p1883-v-ttesttopic”訂閱主題,如右圖所示。參數(shù)描述-h服務(wù)器主機(jī),默認(rèn)localhost-t指定主題-u用戶(hù)名-P密碼-i客戶(hù)端id,唯一-m發(fā)布的消息內(nèi)容智能家居網(wǎng)關(guān)Linux開(kāi)發(fā)案例5.3.3MQTT數(shù)據(jù)服務(wù)設(shè)計(jì)MQTT數(shù)據(jù)服務(wù)設(shè)計(jì)分析MQTT數(shù)據(jù)服務(wù)設(shè)計(jì),通過(guò)Linuxc編程mosquitto庫(kù)的調(diào)用,實(shí)現(xiàn)一個(gè)mqtt客戶(hù)端,向服務(wù)推送消息與接收處理用戶(hù)控制指令,如圖所示。智能家居網(wǎng)關(guān)Linux開(kāi)發(fā)案例5.3.3MQTT數(shù)據(jù)服務(wù)設(shè)計(jì)MQTT數(shù)據(jù)服務(wù)設(shè)計(jì)分析本項(xiàng)目函數(shù)接口與說(shuō)明如表所示。智能家居網(wǎng)關(guān)Linux開(kāi)發(fā)案例5.3.3MQTT數(shù)據(jù)服務(wù)設(shè)計(jì)MQTT數(shù)據(jù)服務(wù)設(shè)計(jì)分析本項(xiàng)目函數(shù)接口與說(shuō)明如表所示。智能家居網(wǎng)關(guān)Linux開(kāi)發(fā)案例5.3.3MQTT數(shù)據(jù)服務(wù)設(shè)計(jì)MQTT數(shù)據(jù)服務(wù)設(shè)計(jì)分析本項(xiàng)目函數(shù)接口與說(shuō)明如表所示。智能家居網(wǎng)關(guān)Linux開(kāi)發(fā)案例1)通過(guò)MobaXterm軟件將zigbee-tcp-test文件拷貝到開(kāi)發(fā)板的/home/zonesion目錄下面,輸入如下命令進(jìn)入實(shí)驗(yàn)?zāi)夸洠?.3.5開(kāi)發(fā)實(shí)踐:Linux網(wǎng)關(guān)遠(yuǎn)程服務(wù)設(shè)計(jì)TCP網(wǎng)絡(luò)服務(wù)設(shè)計(jì)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命令進(jìn)行編譯,查看是否生成目標(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開(kāi)發(fā)案例5.3.5開(kāi)發(fā)實(shí)踐:Linux網(wǎng)關(guān)遠(yuǎn)程服務(wù)設(shè)計(jì)TCP網(wǎng)絡(luò)服務(wù)設(shè)計(jì)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躍點(diǎn)數(shù):1

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

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

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

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

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

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

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

溫馨提示

  • 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)論