Alexa通過使用NodeMCU模擬WeMo設(shè)備來控制物聯(lián)網(wǎng)家庭自動化
掃描二維碼
隨時隨地手機(jī)看文章
亞馬遜發(fā)布亞馬遜ECHO語音控制揚聲器已經(jīng)快三年了,由于Alexa語音服務(wù)的驚人表現(xiàn),揚聲器的受歡迎程度繼續(xù)飆升,而且該平臺向開發(fā)者開放的事實導(dǎo)致了頂級電子制造商開發(fā)與Alexa兼容的設(shè)備,以及幾家基于Alexa/亞馬遜ECHO的科技初創(chuàng)企業(yè)的誕生。
市場上有許多啟用Alexa的智能照明,但它們有點昂貴,所以在本教程中,我們學(xué)習(xí)使用ESP12E NodeMCU構(gòu)建我們自己的Alexa控制燈。在這個Alexa控制的家庭自動化項目中,我們將使用ESP模塊來模擬WeMo開關(guān)。
WeMo是Belkin公司開發(fā)的一系列物聯(lián)網(wǎng)產(chǎn)品的名稱,主要包括可以通過互聯(lián)網(wǎng)從任何地方控制的WeMo交換機(jī)。因此,將任何交流設(shè)備與WeMo開關(guān)連接使該設(shè)備啟用物聯(lián)網(wǎng)?;谖锫?lián)網(wǎng)的家庭自動化現(xiàn)在非常流行,我們以前使用不同的控制器(如樹莓派,ESP8266, Arduino等)完成了許多物聯(lián)網(wǎng)家庭自動化項目。
所需的材料
?NodeMCU ESP-12E(也可以使用ESP8266)
?繼電器模塊
?AC燈泡
?跳線
線路圖
亞馬遜Echo控制的家庭自動化設(shè)備連接如下:
這里兩個繼電器模塊連接到NodeMCU來控制兩個家用電器。適配器或5v AC - DC轉(zhuǎn)換器提供的5v電源可用于為電路供電。我使用HiLink 5v SMPS提供電源。
整個裝置組裝在一個3D打印的盒子里,給它一個智能電器板的外觀。有一個燈泡座和一個插座,可以為電視等電器充電。組裝好的盒子如下圖所示。
用Amazon Echo Dot控制NodeMCU的方法
有幾種方法可以用來控制我們的ESP。下面列出了它們的特點
使用亞馬遜Alexa技能:此方法適用于知道如何創(chuàng)建技能且需要AWS服務(wù)知識的開發(fā)人員。這是一個復(fù)雜而耗時的方法。
使用第三方服務(wù):這種方法非常流行,我們已經(jīng)使用過很多次了。使用第三方服務(wù),如IFTTT,我們可以觸發(fā)任何行動,每當(dāng)我們收到來自Alexa的命令。這種方法很簡單,但需要像Amazon Alexa + Webhooks這樣的兩種服務(wù)的集成。
使用已經(jīng)建立的技能:Alexa技能商店中已經(jīng)提供了一些智能家居技能。Sinric就是其中之一,它可以使任何設(shè)備成為自定義的Alexa智能家居設(shè)備。ESP板的庫可在github上獲得,并在Sinric網(wǎng)站上進(jìn)行一些配置,我們可以使用Alexa控制我們的設(shè)備。但是ESP板的代碼對于初學(xué)者來說很難理解,但它很容易使用。
使用虛擬交換機(jī)仿真庫:Alexa內(nèi)置了對philips Hue和Belkin WeMo等家用電器的支持。因此,一些開發(fā)人員模仿這些平臺,并通過欺騙響應(yīng)來開發(fā)自己版本的Phillips hue或WeMo,使其表現(xiàn)得像受支持的設(shè)備(如WeMo)一樣。
在本教程中,我們將使用這種虛擬交換機(jī)仿真技術(shù),因此讓我們詳細(xì)了解這種方法。
WeMo開關(guān)仿真使用亞馬遜Alexa Echo Dot
WeMo設(shè)備使用UPnP(通用即插即用協(xié)議)在網(wǎng)絡(luò)上發(fā)送和接收數(shù)據(jù)。我們可以使用Wireshark網(wǎng)絡(luò)工具輕松跟蹤設(shè)備與Wi-Fi網(wǎng)絡(luò)之間的通信。WeMo設(shè)備與Echo dot揚聲器通信時,Wireshark用于收集報文。開發(fā)人員發(fā)現(xiàn),設(shè)備檢測功能從Echo開始使用UPnP搜索WeMo設(shè)備。然后,設(shè)備通過UDP使用HTTP響應(yīng)設(shè)備的URL。Echo請求設(shè)備以HTTP格式發(fā)送對自身的描述。
現(xiàn)在,Echo檢測到設(shè)備并建立連接。Echo和WeMo通過HTTP連接并發(fā)出“SetBinaryState”(On/OFF)命令。然后WeMo接受該命令并通過HTTP發(fā)送確認(rèn)。下面給出了使用Alexa模擬WeMo開關(guān)的完整流程圖
現(xiàn)在,這些信息可以用來建立我們自己的WeMo虛擬云。因此,開發(fā)人員以同樣的方式編寫了一個腳本來模擬Phillips或WeMo設(shè)備,并且可以與任何ESP設(shè)備一起使用。
FauxmoESP庫是其中一個易于使用和仿真菲利普斯器件的庫。使用這個庫,我們可以制作許多虛擬設(shè)備,并使用Alexa控制我們的設(shè)備。
因此,我們在這里使用虛擬交換機(jī)仿真技術(shù),因為它易于實現(xiàn),需要較少的編碼。
下載和安裝WeMo仿真所需的庫
由于我們將在ESP上創(chuàng)建多個虛擬連接環(huán)境,因此我們需要安裝fauxmoESP以及異步TCP庫。
1. 對于ESP8266,從這個鏈接下載異步TCP庫,對于ESP32,從這個鏈接下載它。
2. 然后從這個鏈接下載fauxmoESP庫。
3. 現(xiàn)在,在Arduino目錄的libraries文件夾中解壓縮這些文件,該目錄可以在Documents文件夾中找到。另外,將這些文件夾重命名為oseperez-fauxmoesp-50cbcf3087f至xoseperez_fauxmoesp,將espasynccp -master重命名為ESPAsyncTCP。
4. 在fauxmoESP中有一個用于控制設(shè)備的示例代碼,我們必須修改這個示例。打開Arduino IDE并進(jìn)入Examples -> FauxmoESp -> fauxmoESP_Basic。
在開始編碼部分之前,請確保已經(jīng)安裝了ESP板文件。如果你沒有板文件,然后按照我們之前的教程開始使用Arduino IDE的ESP。
代碼及工作說明
在本教程的末尾給出了這個Alexa控制的家用電器的完整代碼和工作視頻,在這里我們解釋了完整的程序,以了解項目的工作原理。
首先,包括ESP板和fauxmoESP的重要頭文件。ESP8266和ESP32有不同的頭文件,但在這個示例代碼中包括兩個庫,因此此代碼將適用于兩個板。另外,定義繼電器的引腳編號。
定義波特率115200和wi - fi ssid和Password。另外,為fauxmoESP創(chuàng)建一個實例fauxmomo,以便我們可以在代碼中使用它。
為Wi-Fi設(shè)置一個單獨的函數(shù),以便它可以在void setup函數(shù)中調(diào)用。將WiFi模式設(shè)置為站模式,并在WiFi.begin()函數(shù)中傳遞SSID和Password。等待連接建立,顯示ESP的IP地址。
在void setup()函數(shù)中,將波特率傳遞給serial。Begin函數(shù)并調(diào)用wifissetup函數(shù)。
默認(rèn)繼電器引腳為高或低。
現(xiàn)在,fauxmoESP必須創(chuàng)建自己的web服務(wù)器,為此在createserver函數(shù)中傳遞true,啟用函數(shù)并將端口號設(shè)置為80。如果你在啟用功能中設(shè)置false,那么它將阻止設(shè)備被發(fā)現(xiàn)和切換。
使用fauxmo.addDevice()函數(shù)添加設(shè)備。參數(shù)將是您的設(shè)備名稱,您將使用它來要求Alexa打開/關(guān)閉它。
現(xiàn)在,當(dāng)從Alexa接收到命令時,創(chuàng)建一個函數(shù)。在這個函數(shù)中,我們將比較字符串與設(shè)備名稱是否匹配,然后根據(jù)給定的命令改變AC設(shè)備的狀態(tài)。
同樣,對第二個AC設(shè)備執(zhí)行此操作。
在void loop()函數(shù)中,只需使用fauxmo檢查來自Alexa服務(wù)器的傳入數(shù)據(jù)包。handle函數(shù),它將使用onSetstate()函數(shù)執(zhí)行操作。
就是這樣。
最后,按照上面所示的電路圖連接電路后,將完整的代碼(最后給出)上傳到NodeMCU中。另外,請注意,NodeMCU和Amazon echo dot的Wi-Fi網(wǎng)絡(luò)應(yīng)該保持一致。
從Tools菜單中選擇正確的單板和端口號,點擊上傳按鈕。你可以在Arduino IDE中打開串行監(jiān)視器,看看代碼里面發(fā)生了什么。串口顯示器波特率設(shè)置為115200。
測試Alexa家庭自動化系統(tǒng)
現(xiàn)在,試著說Alexa,發(fā)現(xiàn)設(shè)備。Alexa會回復(fù)說開始發(fā)現(xiàn),我找到了兩個設(shè)備,試著說“Alexa,打開臥室燈”。
或者,你可以在Alexa應(yīng)用程序中發(fā)現(xiàn)這些設(shè)備。點擊+號,然后發(fā)現(xiàn)設(shè)備。你應(yīng)該看到兩個裝置,即臥室燈和電視。
現(xiàn)在我們準(zhǔn)備測試我們的物聯(lián)網(wǎng)Alexa家庭自動化系統(tǒng)。所以只要試著說Alexa,打開臥室燈,繼電器應(yīng)該就會打開。
現(xiàn)在說Alexa,關(guān)掉臥室燈,繼電器一個要關(guān)掉。試著命令開/關(guān)電視。
您可以在串行監(jiān)視器中看到設(shè)備的響應(yīng)和狀態(tài)。
因此,這就是如何通過使用ESP12E NodeMCU模擬WeMo交換機(jī)來制作基于物聯(lián)網(wǎng)的Alexa控制的家庭自動化系統(tǒng)。
本文編譯自iotdesignpro