Alexa通过使用NodeMCU模拟WeMo设备来控制物联网家庭自动化
扫描二维码
随时随地手机看文章
亚马逊发布亚马逊ECHO语音控制扬声器已经快三年了,由于Alexa语音服务的惊人表现,扬声器的受欢迎程度继续飙升,而且该平台向开发者开放的事实导致了顶级电子制造商开发与Alexa兼容的设备,以及几家基于Alexa/亚马逊ECHO的科技初创企业的诞生。
市场上有许多启用Alexa的智能照明,但它们有点昂贵,所以在本教程中,我们学习使用ESP12E NodeMCU构建我们自己的Alexa控制灯。在这个Alexa控制的家庭自动化项目中,我们将使用ESP模块来模拟WeMo开关。
WeMo是Belkin公司开发的一系列物联网产品的名称,主要包括可以通过互联网从任何地方控制的WeMo交换机。因此,将任何交流设备与WeMo开关连接使该设备启用物联网。基于物联网的家庭自动化现在非常流行,我们以前使用不同的控制器(如树莓派,ESP8266, Arduino等)完成了许多物联网家庭自动化项目。
所需的材料
•NodeMCU ESP-12E(也可以使用ESP8266)
•继电器模块
•AC灯泡
•跳线
线路图
亚马逊Echo控制的家庭自动化设备连接如下:
这里两个继电器模块连接到NodeMCU来控制两个家用电器。适配器或5v AC - DC转换器提供的5v电源可用于为电路供电。我使用HiLink 5v SMPS提供电源。
整个装置组装在一个3D打印的盒子里,给它一个智能电器板的外观。有一个灯泡座和一个插座,可以为电视等电器充电。组装好的盒子如下图所示。
用Amazon Echo Dot控制NodeMCU的方法
有几种方法可以用来控制我们的ESP。下面列出了它们的特点
使用亚马逊Alexa技能:此方法适用于知道如何创建技能且需要AWS服务知识的开发人员。这是一个复杂而耗时的方法。
使用第三方服务:这种方法非常流行,我们已经使用过很多次了。使用第三方服务,如IFTTT,我们可以触发任何行动,每当我们收到来自Alexa的命令。这种方法很简单,但需要像Amazon Alexa + Webhooks这样的两种服务的集成。
使用已经建立的技能:Alexa技能商店中已经提供了一些智能家居技能。Sinric就是其中之一,它可以使任何设备成为自定义的Alexa智能家居设备。ESP板的库可在github上获得,并在Sinric网站上进行一些配置,我们可以使用Alexa控制我们的设备。但是ESP板的代码对于初学者来说很难理解,但它很容易使用。
使用虚拟交换机仿真库:Alexa内置了对philips Hue和Belkin WeMo等家用电器的支持。因此,一些开发人员模仿这些平台,并通过欺骗响应来开发自己版本的Phillips hue或WeMo,使其表现得像受支持的设备(如WeMo)一样。
在本教程中,我们将使用这种虚拟交换机仿真技术,因此让我们详细了解这种方法。
WeMo开关仿真使用亚马逊Alexa Echo Dot
WeMo设备使用UPnP(通用即插即用协议)在网络上发送和接收数据。我们可以使用Wireshark网络工具轻松跟踪设备与Wi-Fi网络之间的通信。WeMo设备与Echo dot扬声器通信时,Wireshark用于收集报文。开发人员发现,设备检测功能从Echo开始使用UPnP搜索WeMo设备。然后,设备通过UDP使用HTTP响应设备的URL。Echo请求设备以HTTP格式发送对自身的描述。
现在,Echo检测到设备并建立连接。Echo和WeMo通过HTTP连接并发出“SetBinaryState”(On/OFF)命令。然后WeMo接受该命令并通过HTTP发送确认。下面给出了使用Alexa模拟WeMo开关的完整流程图
现在,这些信息可以用来建立我们自己的WeMo虚拟云。因此,开发人员以同样的方式编写了一个脚本来模拟Phillips或WeMo设备,并且可以与任何ESP设备一起使用。
FauxmoESP库是其中一个易于使用和仿真菲利普斯器件的库。使用这个库,我们可以制作许多虚拟设备,并使用Alexa控制我们的设备。
因此,我们在这里使用虚拟交换机仿真技术,因为它易于实现,需要较少的编码。
下载和安装WeMo仿真所需的库
由于我们将在ESP上创建多个虚拟连接环境,因此我们需要安装fauxmoESP以及异步TCP库。
1. 对于ESP8266,从这个链接下载异步TCP库,对于ESP32,从这个链接下载它。
2. 然后从这个链接下载fauxmoESP库。
3. 现在,在Arduino目录的libraries文件夹中解压缩这些文件,该目录可以在Documents文件夹中找到。另外,将这些文件夹重命名为oseperez-fauxmoesp-50cbcf3087f至xoseperez_fauxmoesp,将espasynccp -master重命名为ESPAsyncTCP。
4. 在fauxmoESP中有一个用于控制设备的示例代码,我们必须修改这个示例。打开Arduino IDE并进入Examples -> FauxmoESp -> fauxmoESP_Basic。
在开始编码部分之前,请确保已经安装了ESP板文件。如果你没有板文件,然后按照我们之前的教程开始使用Arduino IDE的ESP。
代码及工作说明
在本教程的末尾给出了这个Alexa控制的家用电器的完整代码和工作视频,在这里我们解释了完整的程序,以了解项目的工作原理。
首先,包括ESP板和fauxmoESP的重要头文件。ESP8266和ESP32有不同的头文件,但在这个示例代码中包括两个库,因此此代码将适用于两个板。另外,定义继电器的引脚编号。
定义波特率115200和wi - fi ssid和Password。另外,为fauxmoESP创建一个实例fauxmomo,以便我们可以在代码中使用它。
为Wi-Fi设置一个单独的函数,以便它可以在void setup函数中调用。将WiFi模式设置为站模式,并在WiFi.begin()函数中传递SSID和Password。等待连接建立,显示ESP的IP地址。
在void setup()函数中,将波特率传递给serial。Begin函数并调用wifissetup函数。
默认继电器引脚为高或低。
现在,fauxmoESP必须创建自己的web服务器,为此在createserver函数中传递true,启用函数并将端口号设置为80。如果你在启用功能中设置false,那么它将阻止设备被发现和切换。
使用fauxmo.addDevice()函数添加设备。参数将是您的设备名称,您将使用它来要求Alexa打开/关闭它。
现在,当从Alexa接收到命令时,创建一个函数。在这个函数中,我们将比较字符串与设备名称是否匹配,然后根据给定的命令改变AC设备的状态。
同样,对第二个AC设备执行此操作。
在void loop()函数中,只需使用fauxmo检查来自Alexa服务器的传入数据包。handle函数,它将使用onSetstate()函数执行操作。
就是这样。
最后,按照上面所示的电路图连接电路后,将完整的代码(最后给出)上传到NodeMCU中。另外,请注意,NodeMCU和Amazon echo dot的Wi-Fi网络应该保持一致。
从Tools菜单中选择正确的单板和端口号,点击上传按钮。你可以在Arduino IDE中打开串行监视器,看看代码里面发生了什么。串口显示器波特率设置为115200。
测试Alexa家庭自动化系统
现在,试着说Alexa,发现设备。Alexa会回复说开始发现,我找到了两个设备,试着说“Alexa,打开卧室灯”。
或者,你可以在Alexa应用程序中发现这些设备。点击+号,然后发现设备。你应该看到两个装置,即卧室灯和电视。
现在我们准备测试我们的物联网Alexa家庭自动化系统。所以只要试着说Alexa,打开卧室灯,继电器应该就会打开。
现在说Alexa,关掉卧室灯,继电器一个要关掉。试着命令开/关电视。
您可以在串行监视器中看到设备的响应和状态。
因此,这就是如何通过使用ESP12E NodeMCU模拟WeMo交换机来制作基于物联网的Alexa控制的家庭自动化系统。
本文编译自iotdesignpro