当前位置:首页 > 物联网 > IoT设计分享
[导读]Facebook是使用最广泛的社交媒体应用程序之一,它不仅用于社交网络,还用于消息传递,视频通话,语音通话,市场等。Facebook的这些功能在构建任何基于物联网的项目时都非常有用。就像在这里,我们将使用Facebook来远程控制家里的设备。你只需要给聊天机器人发一条短信,它就可以从世界任何地方控制你家里的灯。我们将使用ESP8266 NodeMCU硬件和一些在线应用程序来构建这个项目。

Facebook是使用最广泛的社交媒体应用程序之一,它不仅用于社交网络,还用于消息传递,视频通话,语音通话,市场等。Facebook的这些功能在构建任何基于物联网的项目时都非常有用。就像在这里,我们将使用Facebook来远程控制家里的设备。你只需要给聊天机器人发一条短信,它就可以从世界任何地方控制你家里的灯。我们将使用ESP8266 NodeMCU硬件和一些在线应用程序来构建这个项目。

我们之前使用不同的微控制器构建了一些基于物联网的家庭自动化项目:

•物联网家庭自动化使用Blynk应用程序使用ESP32

•家庭自动化与麻省理工学院应用发明人和ESP8266

•基于物联网的家用电器控制与Adafruit IO和树莓派

•用ARTIK云和树莓派控制家用电器

•基于ESP32和Adafruit IO的谷歌助手家电控制

在进入细节之前,我们先了解一下这个项目所涉及的事情。

ESP8266 NodeMCU

ESP8266 NodeMCU是一个开源的物联网平台。它包括运行在expressif Systems低成本支持Wi-Fi的ESP8266 Wi-Fi SoC上的固件,以及基于ESP-12模块的硬件。它具有GPIO, SPI, I2C, ADC, PWM和UART引脚,用于通信和控制附加到它的其他外设。板载NodeMCU具有提供USB到TTL功能的CP2102 IC。

MQTT

MQTT表示消息查询遥测传输。MQTT是一种基于TCP/IP的发布和订阅协议,专为轻量级机器对机器与物联网设备的交互而设计。这些设备充当客户机,与称为代理的服务器通信。代理是一个服务器,它允许客户端向代理发送短消息,并在客户端订阅特定主题时接收消息。它充当服务器,处理连接到该服务器的设备的所有信息。客户机可以同时是信息的发布者(从设备向服务器发送数据)或订阅者(从服务器向设备获取数据)。

Facebook Messenger

Facebook Messenger是一款由Facebook开发的即时通讯应用和平台。人们通常用它来发短信,分享照片/视频,甚至进行语音或视频通话。可以在个人之间或群组中进行常规聊天和语音/视频聊天。

Chatfuel

Chatfuel是为Facebook创建AI聊天机器人的领先机器人平台。人们可以创建人工智能聊天机器人,用于远程触发任何事件。你在messenger上的简单文本可以为你的项目添加AI功能。

IFTTT

IFTTT代表如果这个比那个。这是一个免费的基于web的服务,允许连接到web服务,应用程序和设备,如b谷歌,Facebook, Adafruit, Webhooks, Telegram等来自动执行任务。applet使用触发器和操作帮助组合两个服务。它只是意味着,如果在一个web服务中触发了某些操作,那么将在其他web服务中发生操作。

Adafruit IO

Adafruit IO是Adafruit Industries的服务器。它是一个使用HTTP和MQTT协议与物联网设备交互的平台,有助于存储和查看数据,也有助于控制设备。

Facebook控制家用电器的工作

在这个项目中,我们将控制一个家电,如使用Facebook messenger的灯。在信使上输入某些关键字,你就可以控制你家里的设备。消息将被发送到一个聊天机器人,它将触发Chatfuel中各自的AI块。该块链接到一些JSON API,该API将向IFTTT发送POST请求。IFTTT将帮助连接Webhooks和Adafruit,在Webhooks的帮助下将数据发送和存储到Adafruit。Webhooks将创建一个事件,该事件将具有唯一的触发键来触发事件。发送到Adafruit的数据将触发仪表板中的切换按钮。Adafruit作为NodeMCU的服务器,并将数据发送给它,从而在MQTT的帮助下激活或停用灯。

线路图

组件的要求

•ESP8266 NodeMCU

•USB数据线

•跳线

•LED

•继电器

•带灯座的灯或灯泡

•交流电源

Adafruit IO控制家用电器的设置

打开,点击免费开始。输入详细信息并创建一个新帐户。在此之后,您将被重定向到Adafruit IO主页。点击左上角的Feeds。现在在Feeds页面中,单击Action按钮,然后单击Create a New Feed,并为提要命名。这里我们将它命名为“OnOff”名称到我的Feed。

创建Feed之后,单击左侧的Dashboards。现在在仪表板中单击Actions,然后选择Create a New Dashboard。现在给你的仪表盘命名,点击创建,这里我给我的仪表盘命名为“家庭自动化”。

然后单击新创建的仪表板。在你的仪表板页面,你必须创建一个新的块开/关切换按钮。点击仪表板页面中的加号按钮创建一个新块,然后选择第一个“切换按钮”。

接下来,您将被要求为这个按钮选择提要,因为这个按钮将帮助我们提供数据。勾选Feed的复选框(这里我的Feed是OnOff),然后点击Next Step。

现在给切换按钮ON和OFF的名称,然后点击Create Block。现在,一个切换按钮将在你的仪表板上创建,这将帮助我们发送数据到我们的饲料。

设置IFTTT触发水果切换按钮

步骤1:-进入并登录Facebook或谷歌。登录后,点击顶部的“我的小程序”,然后点击“新小程序”。

步骤2::-然后点击“+ this”,在“选择服务”部分搜索Webhooks。

步骤3:-现在点击接收web请求

步骤4:-键入任何事件名称(在我的情况下为“自动化”),然后单击触发器(在我的情况下为“自动化”)。

步骤5:-在下一页点击“+ that”,在红色框中提到。搜索Adafruit并提供登录凭据。

步骤6:-点击发送数据到Adafruit IO。选择之前在Adafruit IO设置部分创建的Feed名称。通过单击Data中的add ingredient来选择value1,然后单击Create Action,然后单击Finish。

步骤7:-现在转到Webhooks设置并在记事本中复制URL。这个URL包含混合字符的Webhooks键,这将有助于将Chatfuel连接到IFTTT。

安装Chatfuel与Facebook

步骤1::-去并点击登录与您的Facebook Id。成功登录后,它将引导您到仪表板页面。点击从模板创建,然后点击我的第一个机器人。然后将My First Bot连接到一个可以创建的facebook页面。

步骤2:-创建一个任意名称的页面(在我的情况下是“家庭自动化”),并将其连接到您的新机器人。连接后,您将被引导到您的机器人页面与欢迎信息。您可以根据自己的意愿编辑此欢迎辞。

步骤3:-现在创建两个新块(这里是Relay ON和Relay OFF)。然后单击Relay on,从Add Element中选择Text。编写要在用户调用继电器on块时显示的文本。对Relay OFF块做同样的操作。

步骤4:-单击左侧的设置AI,单击添加AI规则,单击默认组。在bot replies with部分中选择RELAY ON。现在添加文本,如果用户说类似的部分。这些文本将有助于触发积木。对继电器关闭按钮做同样的操作。

步骤5:-现在我们必须为RELAY ON和RELAY OFF块添加JSON API,以将chatfuel与IFTTT链接起来。您可以通过点击test your BOT来测试您的聊天框,欢迎文本将发送到您的信使帐户。

与IFTTT聊天

步骤1:-现在我们必须为RELAY ON和RELAY OFF按钮制作两个url。转到Chatfuel,选择Relay ON,然后在添加元素中单击+号,然后从Chatfuel插件中选择JSON API。

步骤2:-设置类型为POST,从下面复制URL1,并根据您的IFTTT帐户更改事件名称和密钥,或者您可以直接从您的IFTTT帐户获取URL。对RELAY OFF块做同样的操作。

继电器ON块:

继电器关闭块:

步骤3:这是在RELAY ON和RELAY OFF的JSON API部分复制的两个url。此URL包含事件名称和Webhooks触发键。“Automation”是我们在Webhooks中创建的事件名称,“jE8LXKI6XocT7u8gX7qwKocf3DAN57MZIXtLmfVbBiG”是触发键。Value1=1表示继电器ON, Value1=0表示继电器OFF块。

步骤4:-现在Chatfuel已经准备好并连接到IFTTT。

步骤5:-按照电路图进行连接,并将代码上传到NodeMCU。等待一段时间,直到它连接到Wi-Fi和MQTT代理。在Chatfuel中点击“测试你的机器人”,这将引导你进入你的信使网站,在那里你可以通过输入“打开中继”或“关闭中继”来测试你的机器人。你会得到一个回复在信使与值的切换按钮在实时更改在您的Adafruit仪表板。您还可以看到led以及灯或灯泡的状态变化与继电器的发痒声。

代码的解释

这个基于ESP8266的Facebook家庭自动化的完整代码在最后给出了一个演示视频。但在开始编写代码之前,首先我们需要Adafruit的“Adafruit_MQTT.h”库,用于将NodeMCU与Adafruit IO服务器进行MQTT连接。我们可以直接从Arduino IDE下载这个库。打开Adruino IDE,进入Sketch -> Include Library -> Manage Libraries。在库管理器中搜索adafruit_mqtt。安装红色框中选择的最新版本。

安装此库附带了许多内置示例。对于这个家庭自动化项目,我们将使用mqtt_esp8266示例。进入文件->示例-> Adrafruit MQTT库-> mqtt_esp8266。现在我们将编辑mqtt_esp8266中给出的代码。

现在首先包含所有必需的库。

将代码中给出的SSID和密码替换为Wi-Fi SSID和密码。

为了将我们的客户端ESP8266连接到Adafruit服务器,我们需要Adafruit服务器链接,Adafruit服务器端口,Adafruit用户名和Adafruit密钥。AIO SERVER为“io.adafruit.com”,SSL使用的端口为8883。在Adafruit的安装部分,我已经提到了获取Adafruit用户名和密钥的过程。所有这些变量都传递给Adafruit_MQTT_Client mqtt函数,该函数有助于建立mqtt连接。将Adafruit_MQTT_Subscribe函数中给出的提要名称更改为Adafruit中的提要名称。

在void setup()函数中,将NodeMCU的D1引脚设置为继电器的输出数据引脚。串口显示器显示数据的波特率设置为115200。通过在WiFi.begin()函数中传递Wi-Fi凭据建立Wi-Fi连接,连接成功后在串口监视器上打印IP地址。MQTT订阅设置为开关提要。

在void loop()中,MQTT_connect()确保MQTT连接保持活动状态,并在断开连接时自动连接。while等待传入的订阅包,当它接收到任何数据字符串响应时,它将响应转换为1或0,并检查if-else语句。如果接收到的数据是1,那么我们将D1引脚设置为高,否则将其设置为低。

下面是MQTT连接的功能:

最后,将任何家用电器与D1端口的继电器模块连接起来,并在NodeMCU中上传下面给出的代码。NodeMCU与Wi-Fi连接后,您可以通过在Arduino IO中切换仪表板上的按钮来打开和关闭家用电器。

本文编译自iotdesignpro

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭