Внимание !

Во многих проектах используются электронные устройства и модули, купленные на Aliexpress. Для уменьшение затрат на компоненты, можно воспользоваться кэешбек сервисами. Ссылки на 2 таких сервиса представлены ниже, Epn дает самый большой процент, но летишопс удобнее и работает с большим количеством магазинов, какой сервис лучше - решайте сами.

EPN 18-20%
Letyshops 5%

Раздел на стадии доработки и дополнении контентом

Esp8266 Telegram

Esp8266 Telegram bot

Программировать есп будем в Arduino ide, как настроить ее под ESP8266 можно посмотреть ТУТ После чего скачиваем Библиотеку . и устанавливаем ее в Arduino IDE

Выбираем такие настройки (ком порт у каждого будет свой)

Дальше можно пойти в папку сэмплов и попробовать прошить предложенные примеры, но они не работают, в данном обзоре мы напишем свой скетч, скачать сразу можно тут Ну что же теперь? Теперь логинимся в телеграм на телефоне, а лучше в веб версии После чего потребуется отписать батюшке =D. В поиске вбиваем @botfather и открываем с ним чат.

Напишем батюшке: /newbot Батюшка создал бота и запросил для него имя, я написал MyskuESPBot Батюшка принял и попросил юзернейм для бота, я написал MSEsp_bot (приставка _bot обязательна) Батюшка одобрил мой выбор и дал токены для работы. Вводим имя, юзернейм и токен в сэмпл скаченный ранее Не забываем ввести данные от WIFI сети

Прошиваем скетч и открываем монитор порта, если все сделано правильно, мы получим такую картину в сериал

При заходе в чат, автоматом отправляется /start, и бот ответит нам так

Так же можно помигать диодом через команды /ledon /ledoff

(диод висит на 13 порте, для d1 mini это пин D7)
Добавим пару плюшек нашему роботу!
Шаблон обработки команды
if (bot.message[i][5] == «Тут команда на которую будет реагировать бот») {
Тут выполняем все что душе угодно
Можно заставить бота что то отписать этой функцией
Для получения STRING из числа, можно использовать такую конструкцию String(тут любые числа)
bot.sendMessage(bot.message[i][4], текст в виде STRING, "");
}
Данный шаблон надо прописывать в функции Bot_ExecMessages()
Выдадим боту кубик с числами, и по команде /dice выдает случайно число от 1 до 6
if (bot.message[i][5] == «dice») { //Функция Dice без слеша
bot.sendMessage(bot.message[i][4], String(random(1, 6)), ""); //в ответ бот шлет число полученное через random в пределах от 1 до 6
}
А теперь поговорим о отправке сообщений по событию.
Бот штука разносторонняя, он может иметь сразу несколько чатов, поэтому банальной
BOTSENDMESSAGE(MSG), тут нет.
Дабы отправить сообщение в определенный чат, нам нужно получить его ID.
Грузим скетч, открываем чат с ботом, отправляем сообщение боту и видим в мониторе порта строку
{«update_id»:523513434, «message»:{«message_id»:41,«from»:{«id»:30012xxxx,«first_name»:«Tirarex»},«chat»:{«id»:30012xxxx,«first_name»:«Tirarex»,«type»:«private»},«date»:1482609396,«text»:«some text»}}]}
Где есть «chat»:{«id»:30012xxxx,
Собсно это и есть ID нашего чата
Теперь, когда мы знаем ID нашего с ботом чата, мы можем написать нам сообщение через
bot.sendMessage(«ID чата», «сообщение», "");

Добавим датчиков!
Цепляем PIR датчик движения на A0.
Для удобства дебага я добавил в обработчик команду adc, на нее бот ответит уровнем adc
if (bot.message[i][5] == «adc») {
bot.sendMessage(bot.message[i][4], String(analogRead(A0)), "");
}
В сетапе инициализируем аналоговый порт.
pinMode(A0, INPUT);
Далее в цикле добавим такой код
между bot.getUpdates(bot.message[0][1]); // launch API GetUpdates up to xxx message
if (analogRead(A0) >=50) Если A0 >50 то напишем в чат — ALARM
{
bot.sendMessage(ChatID, «ALARM», "");
}
и
Bot_ExecMessages(); // reply to message with Echo
При нахождении движения, наш бот отпишется в чат


Телеграм бот готов