如何让两个ESP8266监听同一个Telegram机器人

时间:2019-04-07 17:40:54

标签: telegram telegram-bot

如何让我的家庭网络中的两个ESP8266同时收听同一个Telegram bot(同一个chat_id)?我现在在两个ESP上都使用bot.getUpdates来检查是否有新消息,但是只有碰巧在另一个ESP之前执行getUpdates的ESP才收到新消息。第二个ESP不接收任何消息。因此,我认为我需要使用getUpdates之外的其他方法来代替它,但我不知道该使用什么。

我要实现的是,一个ESP(设备1)必须仅接收并响应发给他的消息,基于消息文本:消息文本第一位置的“ 1”表示它的意思是对于设备1。不是以“ 1”开头(它们将以“ 2”开头)的消息并不意味着对他来说,必须在另一个ESP(设备2)的Telegram服务器上保持可用状态。

有关该项目的更多详细信息:

我有一个运行良好的简单ESP8266项目。当我家的前门打开时,一个簧片触点打开,并且一条消息从我的家庭网络中的ESP发送到我的Telegram机器人,然后我在手机上的Telegram应用程序中收到一条通知,说1号门已经打开。反之,当我在应用程序中键入“ 1”时,机器人将返回门的当前状态。但是,当我添加第二个ESP8266来控制后门(第2个门)时,问题开始了:有一个随机ESP接收消息。可能不是我要的ESP /门。

我正在使用: Arduino IDE 克隆nodemcu ESP8266(ESP-12E) 克隆wemos d1 r1

1 个答案:

答案 0 :(得分:0)

使用getUpdates方法的offset参数。如文档所述:

  

默认情况下,将返回从最早的未确认更新开始的更新。一旦调用getUpdates且偏移量高于其update_id,就认为更新已确认。可以指定负偏移量以从更新队列末尾检索从-offset update开始的更新。以前的所有更新都会被遗忘。

您需要通过ESP8266传递最后一个update_id,但这有点棘手。 我建议您构建一个中央系统(或主从系统),该系统读取并处理来自Telegram的更新,并将相关命令(例如“开门1”等)发送到两个ESP8266s。我认为这是做自己想做的最简单的方法。