当前位置:首页 > 物联网 > IoT设计分享
[导读]Telegram是自由和开源的,它在2015年宣布了新的Telegram bot API,允许第三方为ESP32创建利用消息应用程序作为主要通信接口的Telegram bot。这意味着我们可以用它控制我们的智能家居应用程序和其他智能设备。因此,在本文中,我们将讨论一种控制智能设备并了解其状态的新方法。你说得对,我们会用社交媒体应用“电报”控制他们。

Telegram是自由和开源的,它在2015年宣布了新的Telegram bot API,允许第三方为ESP32创建利用消息应用程序作为主要通信接口的Telegram bot。这意味着我们可以用它控制我们的智能家居应用程序和其他智能设备。因此,在本文中,我们将讨论一种控制智能设备并了解其状态的新方法。你说得对,我们会用社交媒体应用“电报”控制他们。

之前我们做过这样的项目,

•使用Telegram Bot与树莓派:共享文本和文件

•树莓派GPIO控制使用电报应用程序

所以,如果你感兴趣的话,一定要去看看。

什么是Telegram?

Telegram是一个跨平台的基于云的即时消息、视频电话和VoIP服务,端到端加密聊天仅用于秘密聊天,而服务器-客户端/客户端-服务器加密用于云聊天。

但它与其他此类消息平台的不同之处在于创建机器人的能力。

Telegram bots是基于人工智能的应用程序,可以配置为提供许多不同的功能,例如,发送有关天气或有用的新闻文章的相关信息,有些是预先配置为发送提醒,还有一些可以播放音乐或创建待办事项列表,等等。

今天我们还将创建一个这样的机器人,它将与我们的ESP32通信。

项目概述

在本教程中,我们将使用Telegram bot控制LED, LED连接到ESP32板。而不是LED,你可以控制任何引脚连接到任何其他设备或组件。

构建基于ESP32的电报机器人的要求

由于这个项目是一个软件繁重的项目,它不需要那么多的硬件,但是在软件方面有相当多的步骤需要遵循,我们将在本文中讨论这些步骤。

硬件需求:

ESP32开发板

软件要求:

Arduino IDE

特定的Arduino库

电报应用

制作一个电报机器人

正如我们前面所讨论的,Telegram允许我们创建几个具有不同功能的机器人。对于我们的项目,我们将使用Telegram创建一个简单的bot。其余的命令声明和回复将在ESP板本身编码,它将使用聊天ID与我们的bot通信。我们将在本文中进一步讨论这些问题。解决了这个问题后,我们可以将注意力转向在Telegram中构建bot。

•从Play Store安装Telegram。

•安装之后,如果你还没有一个帐户,请创建一个帐户,然后按照下面的步骤让你的TG机器人工作。

•首先,搜索“botfather”并单击botfather,如下所示。或者在你的智能手机上打开这个链接t.me/botfather。

•Botfather是一个预先构建的电报机器人,可以让您创建,管理和删除您的机器人。

•单击开始按钮并选择/newbot

•给你的机器人一个名字和用户名。

•如果成功创建了bot,您将收到一条消息,其中包含访问新创建的bot和bot令牌的链接。Bot令牌是一个唯一的id,稍后我们将使用它与Bot进行通信。

获取你的Telegram聊天id

telegram用户id是每个聊天、组和用户的唯一号码,可以帮助telegram识别用户和聊天。在我们的这个项目中,任何拥有bot链接的人都可以与bot进行交互。为了防止任何未经授权的访问,我们可以使用唯一的用户id对其进行加密。

通过这样做,每次ESP从bot接收消息时,它都会检查id是否与存储在其中的id相对应,然后只执行命令。

获取Telegram用户ID的步骤:

•在你的Telegram账户中,搜索“IDBot”或在你的智能手机上打开这个链接t.me/myidbot。

•与该机器人开始对话并输入/getid。您将得到一个带有您的用户ID的回复。

•注意用户id,因为我们稍后会用到它。

安装Telegram Bot库

我们将使用Arduino IDE对ESP32板进行编程。因此,请确保您的PC上安装了IDE和电路板包。我们需要在Arduino IDE中安装两个库,使用这些库将使编码过程更加简单和方便。

为了与Telegram bot建立通信,我们将使用Brian Lough创建的通用Telegram bot库,该库为Telegram bot API提供了一个简单的接口。

按照下面的步骤安装库的最新版本。

1. 点击此链接下载通用Arduino Telegram Bot库。

2. 去素描>包括库> Add.ZIP库…

3. 添加刚刚下载的库。就是这样。完成库的安装。

有关库的详细信息,您可以查看Universal Arduino Telegram Bot library GitHub页面。

ArduinoJson库:

你还必须安装ArduinoJson库。按照下面的步骤安装库。

1. 进入草图>包括库>管理库。

2. 搜索“ArduinoJson”。

3. 选择可用的最新版本。

4. 安装库。

我们已经安装了所有必需的库。

基于ESP32的电报机器人编程

我们必须以这样一种方式闪烁ESP32,即它接收从bot发送的任何消息,比较用户id,并根据收到的消息打开或关闭LED。

在代码的第一部分,我们从导入所需的库开始。

之后,我们初始化变量来存储您的Wi-Fi的SSID和密码。

类似地,我们定义了保存bot令牌和聊天id的变量。您需要将您的凭据放入这些变量中。

之后,我们用wiificlientsecure创建一个新的WiFi客户端。

使用令牌和客户端创建bot,我们在前面已经保存了这些内容。

两个变量botRequestDelay和lastTimeBotRan用于每隔x秒检查新的电报消息。在我们的示例中,我们将每隔1000毫秒检查一次新消息。我们可以通过更改botRequestDelay变量将延迟时间更改为我们的特定需求。

handleNewMessages()函数保存新消息到达时发生的情况的选项卡。

我们需要获取该消息的聊天ID并将其存储在chat_id变量中。这个ID允许我们识别是谁发送了这条消息。

如果chat_id与您的聊天ID (chat_id)不同,则意味着其他人已向您的bot发送了消息。如果是这种情况,我们需要忽略所有消息并等待新的消息。

否则,这意味着消息是从一个有效的用户发送的,因此我们将把它保存在text变量中并检查其内容。

from_name变量保存发送者的名称。

如果我们收到/start消息,我们将向ESP32发送一个有效的命令。如果您忘记了控制电路板的特定命令,则此功能非常有用。

我们可以非常简单地通过在聊天机器人对象上使用sendMessage()方法并将接收方的聊天ID、消息和解析模式作为参数传递给聊天机器人,从而向聊天机器人发送消息。

在我们的特定示例中,我们将把消息发送到存储在chat_id上的ID,并发送保存在welcome变量上的消息。

如果它收到/led_on消息,打开LED并发送消息确认我们已经收到消息。另外,用新状态更新ledState变量。

对/led_off消息执行类似的操作。

最后,使用/状态检查接收到的消息,检查当前GPIO状态,并相应地发送消息。

初始化Wi-Fi,并将ESP连接到我们之前定义的网络SSID和密码。

在loop()中,我们每1000毫秒检查一次新消息,即1秒。

当新消息到达时,调用handleNewMessages()函数。

这就结束了我们代码的工作。现在,您只需要通过从Arduino IDE中选择适当的板和端口来上传它,然后就可以了。

基于ESP32的电报机器人测试

现在我们已经完成了所有的设置。通过Arduino IDE将上述代码上传到ESP32板上。上传草图时不要忘记选择正确的板和端口。

上传草图后,按下单板上的EN/Reset按钮,单板开始执行代码。打开串行监视器,等待电路板与Wi-Fi路由器连接。现在,打开Telegram,进入Botfather提供的链接,输入/start,开始与bot对话。

现在您可以通过输入相应的命令来控制LED或了解状态。

本文编译自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 隧道灯 驱动电源
关闭