您好,歡迎來(lái)到深圳市智慧安防行業(yè)協(xié)會(huì )——(原深圳市視頻報警安防行業(yè)協(xié)會(huì ))
當前位置:協(xié)會(huì )首頁(yè) > 解決方案 > 智能家居的軟硬件架構技術(shù)詳細分析

智能家居的軟硬件架構技術(shù)詳細分析

時(shí)間:2016-01-29 15:33:32 來(lái)源:深圳市智慧安防行業(yè)協(xié)會(huì ) 作者:安防知識網(wǎng)

  隨著(zhù)物聯(lián)網(wǎng)技術(shù)的發(fā)展,智能家居領(lǐng)域越來(lái)越火,成為互聯(lián)網(wǎng)巨頭及家電大佬們爭相深耕的“肥沃土壤”,本文主要是針對智能家居的軟硬件架構技術(shù)做詳細分析。

  HOW-想清楚要做哪些事情

  以一款智能插座為例,我講的主題就是這個(gè)插座該怎么樣來(lái)生產(chǎn)、怎么樣來(lái)研發(fā)。第一步,我們先要把它分解。插座有很多結構件,比如五金件這些東西,所以我們要搭建一個(gè)團隊,包括做工業(yè)設計、結構設計的人,硬件工程師、電子類(lèi)工程師、軟件的工程師,以及生活端的,甚至是運營(yíng)和銷(xiāo)售的。如下圖所示。

智能家居

  我們從傳統的一個(gè)設備到智能設備轉變的過(guò)程中,這一個(gè)東西非常重要,即WiFi模塊。這個(gè)地方?jīng)Q定了這個(gè)設備到底能不能跟我們的App進(jìn)行交互以及交互的效率如何。

  大家可以看一下我們大概要做的事情,包括元器件選型、原理圖、結構、工業(yè)設計、PCBA、打手板、開(kāi)模,這些東西完成的話(huà)代表著(zhù)傳統的部分完成了,這里不再贅述。比較重要的是智能設備要怎樣實(shí)現通訊?,F在ZigBee、WiFi、Z-Wave、BLE,這四種用得比較普遍,還有433、315等設備。谷歌也有一套協(xié)議,但是應用得稍微少一點(diǎn)。我今天主要是從WiFi設備方面來(lái)講,看到底一個(gè)WiFi設備到底要怎么樣來(lái)做。

  WiFi聯(lián)網(wǎng)的難題

  WiFi設備面臨一個(gè)很大的難題,比如說(shuō)我做一個(gè)智能的水杯、一個(gè)智能的插座,這個(gè)水杯和插座是沒(méi)有交互界面的。但是我們必須解決一個(gè)問(wèn)題,即這個(gè)設備一定要聯(lián)網(wǎng),要連路由器。大家想到最直接的辦法是手機連路由器,打開(kāi)手機的設置,進(jìn)入WiFi列表,然后再輸入密碼。但是智能硬件里面沒(méi)有辦法進(jìn)行操作,這就是要面臨的第一個(gè)難題了,所以很多人內心是非常憂(yōu)傷的。

  這里介紹幾種給WiFi設備配置的方法。第一種是AP,AP是最傳統的方式,在A(yíng)P里面主要是讓智能設備首先進(jìn)入AP模式里面,這樣能夠共享一個(gè)熱點(diǎn)出來(lái)。我們的手機直接連到這個(gè)設備里面,然后再把路由器的SSID推送給那個(gè)設備,那個(gè)設備可以在線(xiàn)連路由器。這里面AP有一個(gè)很麻煩的事情,就是它的交互特別復雜,特別是在iOS手機里面不允許手機的App直接調用WiFi的設置或是直接切換過(guò)去,我們可能要先退出后臺,然后切換到蘋(píng)果的那一套設置里面,設置好了之后又要切換回來(lái),這樣特別麻煩。所以在演進(jìn)過(guò)程中就進(jìn)入了WPS。

  WPS解決了第一步的問(wèn)題,可以在路由器里面有一個(gè)按鍵,智能設備里面也有一個(gè)按鍵,可以根據WPS的協(xié)議交換它的密鑰。但是這里面有一個(gè)很大的問(wèn)題,WPS需要進(jìn)行專(zhuān)門(mén)的認證,而且現在支持的路由器非常少,所以用WPS技術(shù)來(lái)做的話(huà)可能會(huì )比較差一點(diǎn)。

  再接下來(lái)又出了一個(gè)SmartConfig,這一款應用非常多,因為它非常簡(jiǎn)單,直接在手機上面向路由器發(fā)送SSID和密鑰,這個(gè)芯片再去抓路由器的包,抓到這個(gè)包之后再解密,解密出來(lái)之后就知道了路由器的SSID和密鑰,然后就可以去連。在這個(gè)基礎上微信也出了airkiss和另外的Smartlink,也這個(gè)原理。

  接下來(lái)又出現了光配置,屏幕按照一定的亮變把信息傳輸過(guò)去,但是這個(gè)應用比較少一點(diǎn),問(wèn)題也比較多。

  再接下來(lái)是聲波配置,AA付款和面對面收款里面就用到這個(gè)技術(shù)。

  總體來(lái)說(shuō),AP和第三個(gè)稍微比較好一點(diǎn),但是我們在實(shí)際產(chǎn)品應用里面也會(huì )發(fā)現,這一類(lèi)技術(shù)面臨很多問(wèn)題,就是對路由器的一些芯片、兼容性都會(huì )有比較高得要求。我們以前出現很多這樣的例子,測試的時(shí)候拿了幾十款、上百種路由器測得沒(méi)有問(wèn)題,到了用戶(hù)家里,那一款路由器我們沒(méi)有測試過(guò),結果發(fā)現不行,這是一方面的限制。為了解決這種限制,后面又改成了不抓路由器的包,就抓手機發(fā)出來(lái)的包。抓手機發(fā)出來(lái)的包之后又帶來(lái)更大的問(wèn)題,正常手機的包是OK的,沒(méi)有那么多兼容性的問(wèn)題。去年iOS包出來(lái)的之后,蘋(píng)果的iPhone6會(huì )有一個(gè)問(wèn)題,連上WiFi離開(kāi)一段時(shí)間再回來(lái)WiFi就會(huì )丟失了,這時(shí)候不重啟手機就永遠連不上WiFi了。蘋(píng)果為了解決這個(gè)問(wèn)題又更新部件,然后對這個(gè)又沒(méi)有用了,又抓不了包了,所以對傳統應有還是有限制。還有一些跟技術(shù)沒(méi)有關(guān)系的限制,比如說(shuō)現在比較好一點(diǎn)的路由器是支持2.5G和4G的?,F在我們使用的模塊都是只有2.4G的,如果手機是雙頻、路由器是雙頻的默認是是5G。所以我們又回到最原始的AP模式來(lái),因為我們不用跟用戶(hù)解釋那么多東西,也沒(méi)有很多兼容性的問(wèn)題。

  軟件架構的選擇

  這是一個(gè)軟件架構要怎么樣選擇的問(wèn)題,就是我們現在智能設備聯(lián)網(wǎng)最基本的需求是什么。我們來(lái)看一下這個(gè)圖,智能設備聯(lián)網(wǎng)之后要實(shí)現跟手機APP的交互,一方面APP如果要去控制它,它必須能夠接收到APP發(fā)過(guò)來(lái)的控制信號。另一方面,如果直接在上面按,按完了之后這里面的狀態(tài)要能夠反饋到APP里面來(lái)。所以,我們在做技術(shù)選型的時(shí)候,最基本要實(shí)現這兩個(gè)需求。

  控制命令的上傳和下發(fā)的問(wèn)題,這里面決定了到底我們怎么來(lái)架構的問(wèn)題。這是我昨天提出的問(wèn)題,就是為了解釋剛剛提出的需求。比如說(shuō)我在QQ上發(fā)布信息說(shuō)插座開(kāi)一下燈,然后它說(shuō)已經(jīng)開(kāi)了。我問(wèn)它是什么狀態(tài),然后它告訴我它已經(jīng)關(guān)了。我們要對智能設備進(jìn)行控制,這里面基本的需求一個(gè)是數據,我要把想要的數據控制命令發(fā)給它,控制了之后又發(fā)回給我,這個(gè)做的事情其實(shí)就是IM的事情。我們做服務(wù)器端的架構的時(shí)候,最初考慮的方案就是選擇了IM的方案。

  物聯(lián)網(wǎng)跟互聯(lián)網(wǎng)實(shí)際上看起來(lái)有很大的差異,真正我們在做的時(shí)候還是殊途同歸,我們還是都選擇了IM的方案。

  看一下最簡(jiǎn)單的IM架構,這里面要保持長(cháng)連接,接下來(lái)做一些業(yè)務(wù)處理,下面是存儲,如果App要去控制Device的時(shí)候,發(fā)到業(yè)務(wù)層處理完了之后,這里面有一個(gè)推送的,可以找到Device到底連了哪一臺機,然后再把數據推送過(guò)來(lái)。如果Device自己的狀態(tài)發(fā)生變化,它的數據要推送給APP,基本上是這樣的工作流。如果App是黑莓等設備的,我們可能要專(zhuān)門(mén)推送到APNS里面來(lái)。

 軟件架構的選擇
       通信協(xié)議的選擇

  接下來(lái)我們還需要一個(gè)好的通信協(xié)議,現在很多通信協(xié)議是XMPP,很多社交軟件都個(gè)在用,因為它開(kāi)源做得比較好。MQTT是專(zhuān)門(mén)用來(lái)做物聯(lián)網(wǎng)的協(xié)議。另外,PROTOBUF是谷歌的,這三個(gè)比較的話(huà),MQTT和PROTOBUF是最適合做物聯(lián)網(wǎng)通信協(xié)議的,因為這兩個(gè)協(xié)議對數據量利用率非常高,不會(huì )帶來(lái)額外的開(kāi)銷(xiāo)的。

  快速構建云服務(wù)

  再回到上圖,如果我們要做這樣一個(gè)系統,為了要簡(jiǎn)單快速的出這樣一個(gè)產(chǎn)品,要利用很多開(kāi)源的組件,比如說(shuō)負載均衡這里,傳統的里面是比較難做的,我們用的比較多硬件負載均衡是F5或者是淘寶的LVS,我認為L(cháng)VS對于目前做硬件的來(lái)說(shuō)肯定是夠的。再下面ConnectServer現在也有很現成的開(kāi)源技術(shù),如果采用XMPP協(xié)議的話(huà)可能要用F5,像很多也完完全全做好了,如果在TTP這一層優(yōu)化比較好,做到八十到一百萬(wàn)長(cháng)連接也沒(méi)有問(wèn)題,而且會(huì )特別簡(jiǎn)單。像很多軌道函數都寫(xiě)的非常好,我們都不用關(guān)心怎么管理這些線(xiàn)程質(zhì)量、怎么管理連接,只要在上面寫(xiě)我們的業(yè)務(wù)代碼就行了。另外,我們這里面要做集群,我們有很多服務(wù)的時(shí)候直接在上面注冊,后面調用的時(shí)候不用關(guān)心今天多了一臺機器、明天少了一臺機器以及這個(gè)機器的ID是什么。另外,服務(wù)要遠程交易,我們要考慮IPC框架,像淘寶和Facebook的一些,都是開(kāi)源領(lǐng)域利用的非常好的。

  我們肯定還要用到很多緩存,緩存方面我們用的比較多的。如果我們對開(kāi)源的框架用得比較好,簡(jiǎn)單的這個(gè)系統很快就可以完成了,不需要我們寫(xiě)很多東西,只需要在上面寫(xiě)業(yè)務(wù)代碼就能夠直接做好了。

  這里面就是剛剛說(shuō)到的,如果你用Netty,只要在這里面寫(xiě)業(yè)務(wù)代碼,當你接收到數據的時(shí)候這里面應該怎么做,包括這里面出了異常的時(shí)候要怎么做。如果選用Netty還要考慮到一個(gè)情況,高并發(fā)的時(shí)候需要對數據包做拆包的事情。我們經(jīng)常發(fā)現這里接收到的數據并不是一個(gè)完整的數據,比如說(shuō)我們發(fā)了大概2K左右的數據,它給到你的可能只有很少。如果這里面不完整,把組包放進(jìn)來(lái)就可以了。具體的拆包、組包也提供了編碼性和解碼性,最重要的是在這個(gè)函數里面寫(xiě)你的業(yè)務(wù)代碼。

  嵌入式開(kāi)發(fā)

  我們要在設備端也實(shí)現接入,還要考慮嵌入式的開(kāi)發(fā)。嵌入式也有一個(gè)問(wèn)題,我們的設備都是需要成本的,不像寫(xiě)服務(wù)代碼一樣,服務(wù)器資源非常多,給到你很好的服務(wù)器可以用。在嵌入式方面,我們必須用最低的成本、最少的資源做最多的事情。每一個(gè)產(chǎn)品研發(fā)出來(lái),第一代選用的芯片可能比較好一點(diǎn),第二代為了這個(gè)產(chǎn)品能夠賣(mài)得更好,可能會(huì )做更改,對我們來(lái)說(shuō)可用的資源更多。通常我們用單片機,我們比較常用FreeRTOS,它沒(méi)有TCPP協(xié)議的。做嵌入式開(kāi)發(fā)的時(shí)候我們還會(huì )遇到更多的問(wèn)題,像LWIP之類(lèi)的,寫(xiě)這個(gè)協(xié)議站的人可能并沒(méi)有用到很多產(chǎn)品,所以里面還是殘留了很多BUG。這里面舉了兩個(gè)非常明顯而且一定會(huì )遇到的問(wèn)題,一個(gè)是TIME_WAIT,還有一個(gè)是CLOSE_WAIT,如果對方?jīng)]有按照正常流程關(guān)閉,假如說(shuō)我們的APP直接刷了,可能就會(huì )產(chǎn)生這個(gè)CLOSE_WAIT,它一直在那里等,我們可能只開(kāi)放十多個(gè)端口接入,如果一直在等待,可能它就認為這個(gè)請求還是正常的,就不會(huì )把它釋放出來(lái)。等我們給它分配的端口滿(mǎn)了之后,下一個(gè)請求就再也接不進(jìn)來(lái)了。一般有三次握手,如果斷開(kāi)了標志著(zhù)有四次握手,我們發(fā)現它沒(méi)有按照正常的四次握手,導致斷開(kāi)的時(shí)候少發(fā)了一些命令,所以就一直在等待,等待的時(shí)候數據怎么發(fā)也發(fā)不出來(lái)了。

  還有我們經(jīng)??赡軙?huì )遇到一些問(wèn)題,比如說(shuō)這里面可用的只有10幾K、64K,我們要在上面寫(xiě)代碼,如果寫(xiě)了多線(xiàn)程,又是單核的CPU,這里面用的時(shí)間長(cháng)了會(huì )產(chǎn)生很多的內存碎片。當內存碎片產(chǎn)生了之后,多線(xiàn)程再申請內存做其他事情的時(shí)候,比如說(shuō)有一個(gè)線(xiàn)程需要申請的資源比較大的時(shí)候會(huì )申請不到,就會(huì )一直在那里等,就會(huì )發(fā)現是怎么回事,這個(gè)地方本來(lái)十幾毫秒就可以處理完的,可能等了一秒鐘或者兩秒鐘甚至時(shí)間更長(cháng)時(shí)間才能處理,這就是時(shí)間用了長(cháng)了之后產(chǎn)生了內存碎片。我們回收內存也做不了,所以經(jīng)常要做被動(dòng)的事情,要軟重啟一下,所有的線(xiàn)程再重新跑起來(lái)。

  事情是否已經(jīng)結束

  回到接下來(lái)的一個(gè)問(wèn)題,我們按照剛才的思路,我們把樣品做好了,模塊也開(kāi)發(fā)好了,APP也做好了,是不是所有事情都完成了呢?舉個(gè)例子,某手機廠(chǎng)商說(shuō)要做“東半球最好的手機”,這等于是他的情懷,為什么呢?做硬件和軟件非常大的區別是,純互聯(lián)網(wǎng)的硬件把程序代碼寫(xiě)好就可以使用了,但是硬件來(lái)說(shuō)的話(huà)還會(huì )涉及到很多生產(chǎn)工藝,還要做一些認證。比如說(shuō)像我們的插座,我們要經(jīng)過(guò)3C認證等等,如果過(guò)不了這個(gè)東西就不能賣(mài)。像這個(gè)手機當時(shí)出了一個(gè)問(wèn)題,它那個(gè)表面的玻璃像普通的安卓手機一樣,下面開(kāi)了幾個(gè)孔,蘋(píng)果只開(kāi)了五個(gè)孔,它開(kāi)了三個(gè)孔,在生產(chǎn)里面要求的工藝非常高,開(kāi)三個(gè)孔的情況下可能真正的良品率只能達到30%、40%,大部分開(kāi)孔的時(shí)候會(huì )導致這個(gè)玻璃碎了。像這種情況下,我們會(huì )把一個(gè)產(chǎn)品設計的非常好,認為這個(gè)東西非常漂亮、工藝非常好,但實(shí)際上也要考慮我們的生產(chǎn)能不能做。

  我們現在做出來(lái)一個(gè)整體的架構,上面是一些產(chǎn)品,下面是模塊這里面是為了解決家里面的很多設備,所以有一個(gè)ZigBee的網(wǎng)關(guān),通過(guò)網(wǎng)關(guān)再來(lái)連接。

  這是我們的一個(gè)系統構架,比較復雜一點(diǎn),因為這里面整個(gè)系統涉及到的業(yè)務(wù)特別多,它的產(chǎn)品也特別多。這里面接入的時(shí)候,其實(shí)整體上來(lái)說(shuō)也都差不多,一個(gè)是設備層的接入,還有一些業(yè)務(wù)層,里面做了一些報表、數據分析,還有一些OTA,可能還有一塊沒(méi)有畫(huà)出來(lái),就是我們在做商業(yè)智能的時(shí)候實(shí)際上是剛剛那位朋友問(wèn)了一個(gè)問(wèn)題,就是我們有沒(méi)有嘗試做一些更加智能的分析之類(lèi)的,實(shí)際上我們在根據用戶(hù)的需求在梳理一些模型,我們希望這些數據能夠幫我們分析用戶(hù)現在是在做什么。一個(gè)最簡(jiǎn)單的例子,當某一個(gè)開(kāi)關(guān),可能是它每天晚上一點(diǎn)鐘都會(huì )亮一下,亮一兩分鐘又滅了,這可能意味著(zhù)那個(gè)用戶(hù)有一個(gè)生物鐘,因為生物鐘時(shí)間非常準,他每天都是這個(gè)時(shí)間點(diǎn)做這個(gè)動(dòng)作,比如說(shuō)上廁所之類(lèi)的,這個(gè)時(shí)候非常需要把房間的燈打開(kāi),包括走廊的燈、洗手間的燈都要打開(kāi)。我們把這個(gè)事件分析出來(lái),到了這個(gè)時(shí)間點(diǎn)之后就不用摸黑按這個(gè)開(kāi)關(guān)了,我們會(huì )把這個(gè)幾個(gè)開(kāi)關(guān)打開(kāi),這就是他的路線(xiàn)。如果要能夠做的更細致化一點(diǎn)的化,我們還會(huì )發(fā)現,如果我們在睡覺(jué)的時(shí)候突然之間醒過(guò)來(lái),然后燈亮了,實(shí)際上是非常刺眼、非常難受的事情,我們在打開(kāi)燈的時(shí)候,是不是把燈的亮度只調出一點(diǎn)點(diǎn),有一點(diǎn)微弱的光,不會(huì )刺眼,又有足夠的亮度可以照明,讓他走過(guò)去。這是我們做的更深層次的分析。

企業(yè)資訊
門(mén)禁“隱形冠軍”?是時(shí)候重新認識熵基科技了
在智慧出入口與身份識別、辦公等領(lǐng)域深耕多年的熵基科技,早已不局限于傳統的門(mén)禁與考勤系統,而是悄然邁入了智能物聯(lián)(AIoT)的廣闊
愛(ài)鑫微針對LED會(huì )議一體機推出intel 12-14代CPU+16G獨顯高性能5G+8K方案的電腦模塊
6月9日-12日,第29屆廣州國際照明展覽會(huì )(以下簡(jiǎn)稱(chēng)“光亞展”)于6月9-12日在廣州中國進(jìn)出口商品交易會(huì )展館盛大舉辦,匯聚了
2024城軌展暨高峰論壇 愛(ài)鑫微攜軌道交通PIS系統OPS播控器亮相
6月13日,2024北京-南京國際城市軌道交通展覽會(huì )暨高峰論壇在南京國際博覽中心開(kāi)幕。展會(huì )以“多元融合??高質(zhì)量可持續發(fā)展”為主
項目活動(dòng)
熱門(mén)專(zhuān)題
  • 熵基科技出席數字經(jīng)濟及智慧城市空間未來(lái)應用創(chuàng )新峰會(huì )
  • 2021年智能安防機器人市場(chǎng)或將進(jìn)入井噴期
  • 2021年的智慧城市建設該怎么發(fā)展?聽(tīng)聽(tīng)行業(yè)大咖的觀(guān)點(diǎn)
  • 達實(shí)信息:顛覆傳統經(jīng)營(yíng)模式 構建互聯(lián)網(wǎng)+門(mén)禁新時(shí)代
日韩精品欧美激情|亚洲国产AV无码综合|亚洲av日韩综合一区|久久久久波多野结衣高潮|亚洲自偷自偷在线制服