#include #include #include char TelegrammBOTtoken[50] = «165476586:AAH01HfdhytjhmDSHnpZuUoi6YwLzqaIpVPs»;// https://api.telegram.org/bot165476586:AAH01HfdhytjhmDSHnpZuUoi6YwLzqaIpVPs/getMe String Messange = «Сообщение !»; void setup() < Serial.begin(115200); WiFi.mode(WIFI_STA);// WiFi.begin(«ssid», «pass»); while (WiFi.status() != WL_CONNECTED) < delay(500); Serial.print(«.»); >Serial.println(); Serial.println(«UserName: » + UserName()); Serial.println(«chatid: » + String(chatid())); SendMessage(chatid(), UserName() + Messange); // Тут отправляем сообщение. chatid() необходимо запомнить и вставлять сюда uint32_t вместо chatid() что значительно ускорит работу. UserName() тоже нужно заранее запоминать если будем обращаться по имени. ESP.deepSleep(0, RF_NO_CAL); > void loop() <> String telegramPOST(String jsonarr) < std::unique_ptrclient(new BearSSL::WiFiClientSecure); client->setInsecure(); HTTPClient https; String token = TelegrammBOTtoken; if (https.begin(*client, «https://api.telegram.org/bot» + token + «/»)) < // HTTPS https.addHeader(«Content-Type», «application/json»); https.POST(jsonarr); String Answer = https.getString(); //Serial.println(Answer); https.end(); return Answer; >> uint32_t chatid() < StaticJsonDocumentdoc; // Создаем и наполняем json для последующей отправки на сервер doc[«method»] = «getUpdates»; doc[«offset»] = -1; //Для проверки последнего сообщения DynamicJsonDocument Answer(1532); deserializeJson(Answer, telegramPOST(doc.as())); // Парсим JSON-содержимое ответа сервера // serializeJsonPretty(Answer, Serial); Serial.println(); return Answer[«result»][0][«message»][«chat»][«id»];//id > String UserName() < StaticJsonDocumentdoc; // Создаем и наполняем json для последующей отправки на сервер doc[«method»] = «getUpdates»; doc[«offset»] = -1; //Для проверки последнего сообщения DynamicJsonDocument Answer(1532); deserializeJson(Answer, telegramPOST(doc.as())); // Парсим JSON-содержимое ответа сервера //const char* first_name = Answer[«result»][0][«message»][«from»][«first_name»]; return Answer[«result»][0][«message»][«from»][«first_name»];//id > void SendMessage(uint32_t chatid, String message) < StaticJsonDocumentdoc; // Создаем и наполняем json для последующей отправки на сервер doc[«method»] = «sendMessage»; doc[«chat_id»] = chatid; doc[«text»] = message; DynamicJsonDocument Answer(1532); deserializeJson(Answer, telegramPOST(doc.as())); // Парсим JSON-содержимое ответа сервера analogWrite(LED_BUILTIN, 0); >
Telegram Bot на Python | Часть 1. Наш первый телеграм-бот на библиотеке-обёртке python telegram bot
vrd
Member
А без бота можно использовать этот код как сериал, для отладки?
p-a-h-a
Member
А без бота можно использовать этот код как сериал, для отладки?
p-a-h-a
Member
А без бота можно использовать этот код как сериал, для отладки?
Хорошая идея. Реализовал ее по минимуму сейчас. Все что нужно — зарегистрировать бота и получить api ключ. Написать новоиспеченному боту /start и из прошлого кода узнать chat_id. Далее отправку debug сообщений можно делать из 8 строчек кода функцией TelegramPrint.
#include #include #include void setup() < WiFi.mode(WIFI_STA);// WiFi.begin(«ssid», «pass»); while (WiFi.status() != WL_CONNECTED) < delay(500); Serial.print(«.»); >TelegramPrint(«Отладочное сообщение»); ESP.deepSleep(0, RF_NO_CAL);//спим > void loop() <> void TelegramPrint(String message) < std::unique_ptrclient(new BearSSL::WiFiClientSecure); client->setInsecure(); HTTPClient https; if (https.begin(*client, «https://api.telegram.org/bot1663160000:AAH01GFDQguCVp-dnpZuUoi6YwLqwaIpVPs/»)) < // Тут свой ключ пишем https.addHeader(«Content-Type», «application/json»); https.POST(«»); // Тут свой чат id пишем https.end(); > >
Естественно chat_id, apiKEY должны быть свои. Тут нерабочие данные.
p-a-h-a
Member
chat_id можно узнать из браузера по ссылке https://api.telegram.org/bot /getUpdates
vrd
Member
Немного не понял — куда переменные прописывать? Или по умолчанию из сериала подхватывает?
p-a-h-a
Member
Переменные прописывать вместо текста «Отладочное сообщение» в виде
Int x = 5;
TelegramPrint(String(x));
А лучше в строку все сложить и за один раз отправить.
String debagStr;
debagStr = «Отладочное сообщение: n»;
Int x = 5;
debagStr += «X=»;
debagStr += String(x);
debagStr += «n Конец сообщения;
TelegramPrint(debagStr);
Каждая отправка занимает время. У меня от секунды до 4х секунд примерно.
vrd
Member
Отправка каждого сообщения или пакета из например 10 переменных выходит до 4-х секунд?
Если я возьму три основные переменные (x, y, z) и буду их одной строкой слать в бота каждый цикл (4,5 секунды), это выйдет почти 10-16 секунд на цикл?
p-a-h-a
Member
Отправка каждого сообщения или пакета из например 10 переменных выходит до 4-х секунд?
Если я возьму три основные переменные (x, y, z) и буду их одной строкой слать в бота каждый цикл (4,5 секунды), это выйдет почти 10-16 секунд на цикл?
Одно сообщение это и есть пакет из множества символов. Строку собрали за 1-4 секунды ее отправили. Серверы телеграмм долго ответ на запрос посылают. Наверное связано с нагрузкой на серверы. Ботов много развелось нынче.
vrd
Member
Спасибо за помощь. Смог оптимизировать отправку сообщений под изменение переменных.
Спойлер: Код
if ( sum != (x + y + z + (int(t / mi)) + (int(check / mi)))) <
mess = » Озонатор «;
mess += » n»;
mess += » X=»;
mess += String(x);
mess += » Y=»;
mess += String( y );
mess += » Z=»;
mess += String(z);
mess += » F=»;
mess += String(f);
mess += » n»;
mess += » Срабатывание таймера через-«;
mess += String(int((t — (millis() — ti)) / mi));
mess += » мин»;
mess += » n»;
mess += » Проверка времени через-«;
mess += String(int((check — (millis() — t1)) / mi));
mess += » мин»;
mess += » n»;
mess += » «;
mess += » n»;
delay(2);
TelegramPrint(mess);
delay(2);
sum = x + y + z + (int(t / mi)) + (int(check / mi));
delay(2);
mess = » «;
delay(2);
>
Появилась «хотелка» — считывать сообщения пользователя.
vrd
Member
Ботов много развелось нынче.
Спойлер: Код страницы
<«ok»:true,»result»:[<«update_id»:74664327,
«message»:,»chat»:,»date»:1625078161,»text»:»Ozon reb»>>]>
Подскажите как выдрать («text»:»Ozon reb») из этого набора символов.
andrik_zp
Member
Использовать библиотеку для парсинга json
Виктор
New member
А как прочитать сообщение? Чтоб не только уведомления Бот отсылал, но и читать мог для дальнейшего анализа.
ghost21
Member
Сергей_Ф
Moderator
Команда форума
А как прочитать сообщение? Чтоб не только уведомления Бот отсылал, но и читать мог для дальнейшего анализа.
Мне кажется, это только пример. Для нормального бота используйте одну из библиотек:
1.Universal Telegram Bot
2. Gyver FastBot
vrd
Member
Доработал таки этот код:
Спойлер: Тестовый код
#include
#include
#include
#include
#include
#include «secrets.h»
int f = 0;
uint32_t t1 = 0;
int check = 0;
String mess;
int sum = 1;
const int h = 3600000;//час
const int mi = 60000;//минута
const int sek = 1000;//секунда
String doc;
void setup() pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(115200);
mess = » Test «;
mess += » n»;
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) < //Соеденение с WIFI
delay(100);
digitalWrite(LED_BUILTIN, HIGH);
delay(200);
digitalWrite(LED_BUILTIN, LOW);
delay(100);
f++;
Serial.print(» f=»);
Serial.print(f);
if (f >= 999) < //Нет WIFI
Serial.flush();
delay(1000);
SPIFFS.end();
delay(1000);
ESP.restart();
>
Serial.println(» «);
>
mess += «Количество попыток подключения «;
mess += String(f);
mess += » n»;
f = 0;
// Port defaults to 8266
ArduinoOTA.setPort(8266);
// Hostname defaults to esp8266-[ChipID]
ArduinoOTA.setHostname(«Test»); //Для каждой платы своё имя
// No authentication by default
ArduinoOTA.setPassword(«z»); //Ставим свой пароль — можно закоментить
// Password can be set with it’s md5 value as well
// MD5(admin) = 21232f297a57a5a743894a0e4a801fc3
// ArduinoOTA.setPasswordHash(«21232f297a57a5a743894a0e4a801fc3»);
ArduinoOTA.onStart([]() String type;
if (ArduinoOTA.getCommand() == U_FLASH) type = «sketch»;
> else < // U_FS
type = «filesystem»;
>
// NOTE: if updating FS this would be the place to unmount FS using FS.end()
//Serial.println(«Start updating » + type);
>);
ArduinoOTA.onEnd([]() //Serial.println(«nEnd»);
>);
ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) //Serial.printf(«Progress: %u%%r», (progress / (total / 100)));
>);
ArduinoOTA.onError([](ota_error_t error) mess += «Ошибка «;
//Serial.printf(«Error[%u]: «, error);
if (error == OTA_AUTH_ERROR) //Serial.println(«Auth Failed»);
mess += «Auth Failed «;
> else if (error == OTA_BEGIN_ERROR) //Serial.println(«Begin Failed»);
mess += «Begin Failed «;
> else if (error == OTA_CONNECT_ERROR) //Serial.println(«Connect Failed»);
mess += «Connect Failed «;
> else if (error == OTA_RECEIVE_ERROR) //Serial.println(«Receive Failed»);
mess += «Receive Failed «;
> else if (error == OTA_END_ERROR) //Serial.println(«End Failed»);
mess += «End Failed «;
>
mess += » n»;
>);
ArduinoOTA.begin();
//Serial.println(«Ready»);
mess += «Ready «;
//Serial.print(«IP address: «);
//Serial.println(WiFi.localIP());
mess += » n»;
>
void loop() digitalWrite(LED_BUILTIN, HIGH);
ArduinoOTA.handle();
if ( sum != ( f + check )) mess += » F=»;
mess += String(f);
mess += » n»;
mess += » «;
mess += » n»;
doc = «»;
delay(0);
TelegramPrint(mess, doc);
delay(0);
sum = f + check;
delay(0);
delay(0);
mess = » Test «;
mess += » n»;
>
digitalWrite(LED_BUILTIN, LOW);
if (millis() — t1 >= check) //check = mi * 10;
check = h;
t1 = millis();
f++;
>
if (f >= 99) f = 0;
check = sek;
delay(1000);
>
doc = Text();
delay(0);
//Работайте со стрингом как хотите
//Вариант на ифах ниже
if (doc.length() >= 7) < //Test f88
if (doc.charAt(0) == ‘T’) if (doc.charAt(1) == ‘e’) if (doc.charAt(2) == ‘s’) if (doc.charAt(3) == ‘t’) //doc = doc.charAt(6);
doc = doc.substring(6);
f = doc.toInt();
//f = atoi( + 5);
>
>
>
>
>
String TelegramPrint(String mess, String doc) std::unique_ptrclient(new BearSSL::WiFiClientSecure);
client->setInsecure();
HTTPClient https;
https.begin(*client, «https://api.telegram.org/токен/» + doc); // Тут свой ключ пишем
https.addHeader(«Content-Type», «application/json»);
https.POST(«»); // Тут свой чат id пишем
delay(1);
String Answer = https.getString();
https.end();
delay(1);
//Serial.println(Answer);
return Answer;
>
String Text() delay(1);
doc = «getUpdates?offset=-1»;//Для проверки последнего сообщения
delay(1);
DynamicJsonDocument Answer(1532);
deserializeJson(Answer, TelegramPrint(mess, doc), DeserializationOption::NestingLimit(5));// Парсим JSON-содержимое ответа сервера
//serializeJsonPretty(Answer, Serial); //Serial.println();
doc = «»;
return Answer[«result»][0][«message»][«text»];//text
>
В secrets.h спрятал повторяющиеся постоянные и дефайны.
Лежит этот файлик в «C:UsersAdminDocumentsArduinolibrariesSecrets» на вин10.
Присоединяется к любому скетчу как библиотека
Источник: esp8266.ru
Взаимодействие с ботом Telegram с помощью Arduino
Мессенджер Telegram является крайне популярным в современном мире, с ним могут взаимодействовать множество сторонних приложений. В данной статье мы рассмотрим взаимодействие с ботом Telegram с помощью платы Arduino. Делать мы это будем с помощью библиотеки TelegramBot.h, позволяющей работать с ботами Telegram.
Также на нашем сайте вы можете посмотреть все проекты, в которых использовалось приложение Telegram. Посмотреть документацию (на английском языке) для работы с API Telegram можно по следующей ссылке.
Необходимые компоненты
Плата Arduino MKR1000 .
Вместо платы Arduino MKR1000 можно также использовать плату Arduino Zero с шилдом WiFi shield 101 или плату Arduino Uno (или Nano) с подключенным к ней WiFi модулем ESP8266, который будет управляться платой Arduino с помощью AT команд. Примеры подобного управления модулем ESP8266 можно посмотреть в следующих проектах:
- передача Email с использованием Arduino и WiFi модуля ESP8266;
- передача данных от Arduino Uno на веб-страницу с помощью WiFi;
- управление сервомотором по Wi-Fi с помощью Arduino и веб-браузера.
Лично на мой взгляд, данный проект дешевле и легче всего реализовать с помощью платы NodeMCU ESP8266, которую можно подключить к компьютеру по USB кабелю и запрограммировать с помощью Arduino IDE. Пример подобного проекта можно посмотреть по следующей ссылке. У него практически такой же код программы, как и код программы рассматриваемого в данной статье проекта.
Реализация проекта
Установка библиотеки для работы с ботом Telegram
Скачайте библиотеку TelegramBot Library по следующей ссылке.
Для ее установки в Arduino IDE откройте пункт меню Sketch / Include Library / Add .ZIP Library, после чего выберите скачанный вами .ZIP файл библиотеки.
Установка библиотек ArduinoJson и WiFi101
Библиотеки ArduinoJson и WiFi101 можно установить с помощью менеджера библиотек (Library Manager) Arduino IDE как показано на следующих рисунках.
Примечание : данный пункт необходим при использовании платы Arduino MKR1000 или платы Arduino Zero с шилдом WiFi shield 101. При использовании платы Arduino Uno (или Nano) с подключенным к ней WiFi модулем ESP8266 библиотеку WiFi101 можно не устанавливать.
Установка бота Botfather
Botfather – это бот, который позволяет вам создавать своих собственных ботов для приложения Telegram. Для создания нового бота с его помощью используйте команду /newbot.
После этого введите имя данного бота (name), затем имя пользователя (username).
Далее сгенерируйте токен авторизации (authorization token) для вашего нового бота. Также процесс создания нового бота в Telegram с помощью Botfather описан в этой статье.
После создания бота имя вашего бота будет показываться в контактах и некоторых других местах приложения Telegram.
Имя пользователя (Username) для созданного вами бота – это имя, которое будет использоваться в заметках и ссылках telegram.me. Имя пользователя вашего бота должно оканчиваться на ‘bot’, то есть, к примеру, допустимы имена ‘tetris_bot’ или ‘TetrisBot’.
Если ваш бот включен в какую либо группу, то он по умолчанию будет работать в приватном режиме (privacy mode). Это означает, что он будет принимать только команды, которые начинаются с «/». Чтобы отключить приватный режим вам в необходимо в чате с вашим ботом написать следующий набор команд:
Bot setting
Group privacy
Также вы можете создать свой собственный набор команд для бота используя команду /setcommands в чате с BotFather. Этот список появится только при работе с мобильного устройства при нажатии на иконку «/».
Исходный код программы (скетча)
С помощью представленной программы мы будем включать и выключать светодиод, передавая для этого из приложения Telegram сообщения “On” или “Off”.
// данные для подключения к сети Wifi
char ssid [ ] = «xxxx» ; // your network SSID (name)
char pass [ ] = «yyyy» ; // your network key
// Initialize Telegram BOT
const char * BotToken = «xxxx» ; // токен авторизации вашего бота
WiFiSSLClient client ;
TelegramBot bot ( BotToken , client ) ;
const int ledPin = 6 ; // контакт, к которому подключен светодиод
void setup ( )
Serial . begin ( 115200 ) ;
while ( ! Serial ) < >//Start running when the serial is open
delay ( 3000 ) ;
// делаем попытку соединения с сетью Wifi:
Serial . print ( «Connecting Wifi: » ) ;
Serial . println ( ssid ) ;
while ( WiFi . begin ( ssid , pass ) != WL_CONNECTED )
Serial . print ( «.» ) ;
delay ( 500 ) ;
Serial . println ( «» ) ;
Serial . println ( «WiFi connected» ) ;
bot . begin ( ) ;
pinMode ( ledPin , OUTPUT ) ;
message m = bot . getUpdates ( ) ; // считываем новые сообщения
if ( m . text . equals ( «On» ) )
digitalWrite ( ledPin , HIGH ) ;
Serial . println ( «message received» ) ;
bot . sendMessage ( m . chat_id , «The Led is now ON» ) ;
else if ( m . text . equals ( «Off» ) )
digitalWrite ( ledPin , LOW ) ;
Serial . println ( «message received» ) ;
bot . sendMessage ( m . chat_id , «The Led is now OFF» ) ;
Видео, демонстрирующее работу проекта
Похожие статьи
(Проголосуй первым!)
3 618 просмотров
Рубрика: Схемы на Arduino Метки: arduino, Telegram, мессенджер Постоянная ссылка
Комментарии
Взаимодействие с ботом Telegram с помощью Arduino — 12 комментариев
Михаил говорит 02.03.2023 в 11:44 :
NodeMCU ESP8266 по количеству контактов по сути Arduino UNO. Но есть ещё один ньюанс, у ESP8266 питание, а соответсвенно и входы-выходы работают не с 5В, а с 3,3В, что не позволяет испольовать со стандартными реле расчитанными на 5В. Ну и количество входов-выходов Aruino MEGA не сравнить ти с Arduino UNO, ни с NodeMCU ESP8266.
admin-new говорит 02.03.2023 в 16:53 :
Ну если у вас проект требует так много входов/выходов, то да, Aruino MEGA здесь по этому параметру почти вне конкуренции. Ну тут уж сами решайте что вам удобнее, либо управлять с ее помощью модулем ESP8266 с помощью AT команд, либо использовать какую-нибудь плату Aruino со встроенным WiFi если не хотите смотреть в сторону других плат (Raspberry Pi Pico W и т.д.)
Михаил говорит 26.02.2023 в 17:24 :
По сути та же Arduino UNO,только всего один аналоговый вход вместо 6. А мне приходится использовать Arduino MEGA.
admin-new говорит 26.02.2023 в 17:46 :
Ну количество доступных контактов можно увеличить с помощью регистров сдвига или другими способами. Какой то у вас больно сложный проект если вам такое большое количество контактов необходимо. Просто если модуль ESP8266 к плате Ардуино подключать чтобы его использовать только в качестве WiFi модуля, то управлять им придется с помощью АТ команд.
Может быть, вы тогда какую-нибудь современную плату Ардуино для своего проекта присмотрели бы, со встроенным WiFi. К примеру, у нас на сайте есть подробный обзор различных плат Ардуино.
Или вы можете посмотреть в сторону более производительных плат, Raspberry Pi Pico W (есть WiFi) или плат на основе STM32.
Михаил говорит 23.02.2023 в 10:52 :
С Днём защитника Отечества!
Вы пишете: «При использовании платы Arduino Uno (или Nano) с подключенным к ней WiFi модулем ESP8266 библиотеку WiFi101 можно не устанавливать.»
Подскажите, пожалуйста, я использую плату Arduino MEGA + ESP-01, какие дополнительные библиотеки нужно использовать или каким методом передать какой Serial порт используется (у Вас, кстати, этого в программе нет). Меня весьма заинтересовал Ваш вариант, хотелось бы доработать свой проект под возможность передачи данных в Телеграм, а посему с нетерпением буду ожидать Вашего ответа.
Заранее благодарен, Михаил
admin-new говорит 23.02.2023 в 11:35 :
Добрый день. И вас с Днем защитника отечества. Вам понадобится только библиотека TelegramBot.h, библиотека для соединения с сетью WiFi будет не нужна потому что с сетью WiFi вы будете соединяться с помощью модуля ESP-01, а управлять им вы будете с помощью AT команд. Примеры управления модулем ESP-01 с помощью AT команд можно посмотреть, к примеру, в следующих статьях:
https://microkontroller.ru/arduino-projects/upravlenie-servomotorom-po-wi-fi-s-pomoshhyu-arduino-i-veb-brauzera/
https://microkontroller.ru/arduino-projects/peredacha-email-s-ispolzovaniem-arduino-i-wifi-modulya/
Serial порт вы можете использовать стандартный для вашей платы, либо с помощью библиотеки SoftwareSerial (в этом случае ее также необходимо установить) сконфигурировать любые два цифровых контакта платы для работы в качестве последовательного порта — именно этот вариант и использован в двух приведенных примерах статей
Михаил говорит 23.02.2023 в 17:47 :
На TelegramBot.h матерится не по детски. “ПРЕДУПРЕЖДЕНИЕ: библиотека TelegramBot-Library-master должна запускаться на архитектурах samd, esp8266 и может быть несовместима с вашей платой на архитектуре avr.”
Посмотрел Ваши предложения по использованию АТ команд. Даже несколько странно: писать на языке высокого уровня и возвращаться к Assembler для передачи нескольких слов в мессенджер. По факту я использую библиотеку RemoteXY.h для двухсторонней связи со смартфоном и управления всем проектом. Попытка прикрутить телеграм вызвало вышеуказанное предупреждение и недоумение по поводу строки
WiFiSSLClient client;
Что естественно, так как я отказался от библиотеки WiFi101, но в следующей строке
TelegramBot bot(BotToken,client);
Я передаю библиотеке TelegramBot.h некоего клиента и чем его заменить — сугубо непонятно, честно говоря в библиотеке пока не разобрался, что за клиент и что он делает.
admin-new говорит 24.02.2023 в 12:48 :
По поводу использования АТ команд и возвращения, так сказать, к ассемблеру — это плата за то, что в обычных платах Arduino нет WiFi модуля. Мне тоже не очень нравятся АТ команды.
Поэтому подобный проект я бы делал на Arduino с поддержкой WiFi, или на модуле NodeMCU ESP8266 или ESP32 — эти модули имеют поддержку WiFi и программируются точно также как Arduino, а стоят дешевле
Михаил говорит 24.02.2023 в 18:35 :
Не хватает входов-выходов на ESP8266.
admin-new говорит 24.02.2023 в 21:15 :
У ESP-01 действительно очень мало контактов, но модули ESP8266 выпускаются в различных модификациях с различным числом входов/выходов. Неужели даже их количества в NodeMCU ESP8266 вам не хватает?
Источник: microkontroller.ru
NodeMCU и Telegram: управление с помощью чат-бота
Интернет вещей давно ворвался в повседневную жизнь – умный дом, умный телевизор и даже умный чайник. В этом курсе статей я помогу вам войти в мир интернета вещей и сэкономить при создании девайсов для дома. Встречайте первую статью из цикла уроков.
В данной статье мы подготовим Arduino IDE, бота в telegram и саму плату к работе. Для повторения урока вам понадобится плата Nodemcu, а также светодиод, пара соединительных проводов, breadboard на котором будет собрана схема. Для общения с компьютером воспользуемся micro usb проводом.
Схема подключения:
Схема абсолютно простая, главное не забыть про особенности распиновки nodemcu. Короткая нога светодиода в землю, длинная в пин D3.
Добавление nodemcu в Arduino IDE (подключение esp8266 пакета)
Esp8266 понадобится нам для работы с nodemcu в среде разработки Arduino IDE.
Перед установкой пакета убедитесь, что у вас не установлена другая версия. В противном случае обязательно удалите ее перед установкой. А далее следуйте простым шагам:
1. Запустите среду разработки — Arduino IDE
2. Откройте настройки
3. В поле «Дополнительные ссылки для Менеджера плат» вставьте ссылку на esp8266 пакет: http:/ /arduino.esp8266.com/versions/2.3.0/package_esp8266com_index.json
4. Перейдите в Инструменты – Плата – Менеджер плат
5. Прокрутите вниз. Найдите esp8266. Выберите версию 2.3.0. (или другую более новую). Установите.
6. В Инструменты – Плата выберите nodemcu. Остальные настройки платы выставятся автоматически.
Установка библиотеки Telegram
Для обработки полученных сообщений и отправки ответных реакций нам понадобится библиотека https://github.com/witnessmenow/Universal-Arduino-. . Советую установить ее вручную, так как могут возникнуть ошибки.
Создание бота telegram
Прошивка
В первом уроке рассмотрим все части прошивки детально.
Подключаем нужные библиотеки.
#include #include #include
Указываем пин светодиода, wifi сеть и токен бота.
#define LED 0 //D3 const char* ssid = «yura»; const char* password = «0987654321s»; const char BotToken[] = «xxx»;
WiFiClientSecure net_ssl; TelegramBot bot (BotToken, net_ssl);
В void setup устанавливаем скорость общения с компьютером, пытаемся подключиться к wifi, выводим ip адрес устройства в сети, запускаем бота и pinmode для светодиода .
void setup() < Serial.begin(9600); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) < delay(500); Serial.print(«.»); >Serial.println(«»); Serial.println(«WiFi connected»); Serial.println(WiFi.localIP()); bot.begin(); pinMode(LED, OUTPUT); >
Переходим в void loop. Здесь надо сначала проверить наличие новых сообщений.
message m = bot.getUpdates();
Теперь проверяем какое сообщение пришло, выполняем соответствующее действие, и отправляем ответную реакцию.
if (m.text.equals(«on»))< digitalWrite(LED, HIGH); bot.sendMessage(m.chat_id, «The Led 1 is now ON»); >else if (m.text.equals(«off»))
Настало время прошивать микроконтроллер. Сначала меняем в скетче название и пароль от вашей Wi-Fi сети, потом меняем токен бота и пин к которому подключен светодиод. Загружаем скетч на плату.
Тестируем
Теперь, когда все установлено и прошито, можно посмотреть на работу устройства. Для включения и выключения светодиода используются команды on и off соответственно. Их надо просто отправить боту в сообщении. При подключении nodemcu к компьютеру, можно увидеть некоторую отладочную информацию в мониторе порта.
Заключение
Поздравляем! Первый шаг к интернету вещей сделан! Но это всего лишь светодиод. А в следующих статьях будут рассмотрены датчики температуры, влажности, движения. Подписывайтесь!
Данная статья является собственностью Amperkot.ru. При перепечатке данного материала активная ссылка на первоисточник, не закрытая для индексации поисковыми системами, обязательна.
Источник: amperkot.ru