Как позволить двум ESP8266 слушать одного и того же бота Telegram - PullRequest
0 голосов
/ 07 апреля 2019

Как мне позволить двум ESP8266 в моей домашней сети одновременно слушать одного и того же бота Telegram (тот же chat_id)?Я использую bot.getUpdates на обоих ESP для проверки новых сообщений сейчас, но тогда только ESP, который выполняет getUpdates до того, как это делает другой ESP, получает новые сообщения.Второй ESP не получает ни одного.Поэтому я думаю, что мне нужно использовать что-то помимо или вместо getUpdates, но я не знаю, что.

Чего я хотел бы добиться, так это чтобы один ESP (устройство 1) должен был только получать и отвечать насообщения, которые адресованы ему, на основе текста сообщения: «1» в первой позиции текста сообщения означает, что оно предназначено для устройства 1. Сообщения, которые не начинаются с «1» (они будут начинаться с «2»)) не предназначены для него, должны оставаться доступными на сервере Telegram для другого ESP (устройство 2).

Подробнее о проекте:

У меня простой проект ESP8266 работает нормально.Когда открывается входная дверь моего дома, открывается повторный контакт, и из ESP в моей домашней сети отправляется сообщение моему боту Telegram, а затем я получаю уведомление в приложении Telegram на своем телефоне, в котором говорится, что дверь 1 открылась.И наоборот, когда я набираю «1» в приложении, бот возвращает текущее состояние двери.Но когда я добавляю второй ESP8266 для управления бэкдором (дверь 2), возникает проблема: есть один случайный ESP, который получает сообщения.который может не быть ESP / дверью, о которой я прошу.

Я использую: Arduino IDE clone nodemcu ESP8266 (ESP-12E) клон wemos d1 r1

1 Ответ

0 голосов
/ 11 апреля 2019

Используйте параметр offset метода getUpdates .Как указано в документации:

По умолчанию обновления, начиная с самого раннего неподтвержденного обновления, возвращаются .Обновление считается подтвержденным, как только getUpdates вызывается со смещением, превышающим его update_id.Отрицательное смещение может быть указано для получения обновлений, начиная с -offset update с конца очереди обновлений.Все предыдущие обновления будут забыты.

Вам нужно передать последнее update_id через ESP8266, но это довольно сложно.Я советую вам создать центральную систему (или систему «главный-подчиненный»), которая считывает и обрабатывает обновления из Telegram и отправляет двум ESP8266 соответствующие команды (например, «открыть дверь 1» и т. Д.).На мой взгляд, это самый простой способ сделать то, что вы хотите.

...