Почему не работает телеграм бот даже из примера?
- Войдите на сайт для отправки комментариев
Сб, 09/11/2019 - 23:37
по готовому примеру из UniversalTelegramBot подставил токен бота и свою wifi сеть , к роутеру подключило но сообщение в телегу не пришло , токен не стал менять он настоящий , может у вас выйдет?
что я делаю не так(
/******************************************************************* * An example of bot that show bot action message. * * * * * * * * written by Vadim Sinitski * *******************************************************************/ #include <ESP8266WiFi.h> #include <WiFiClientSecure.h> #include <UniversalTelegramBot.h> // Initialize Wifi connection to the router char ssid[] = "aspire"; // your network SSID (name) char password[] = "123456789"; // your network key // Initialize Telegram BOT #define BOTtoken "1064128638:AAGNFhb53Y-giulXwgBb3PzH9ZxJf411W5E" // your Bot Token (Get from Botfather) WiFiClientSecure client; UniversalTelegramBot bot(BOTtoken, client); int Bot_mtbs = 1000; //mean time between scan messages long Bot_lasttime; //last time messages' scan has been done bool Start = false; void handleNewMessages(int numNewMessages) { Serial.println("handleNewMessages"); Serial.println(String(numNewMessages)); for (int i=0; i<numNewMessages; i++) { String chat_id = String(bot.messages[i].chat_id); String text = bot.messages[i].text; String from_name = bot.messages[i].from_name; if (from_name == "") from_name = "Guest"; if (text == "/send_test_action") { bot.sendChatAction(chat_id, "typing"); delay(4000); bot.sendMessage(chat_id, "Did you see the action message?"); // You can't use own message, just choose from one of bellow //typing for text messages //upload_photo for photos //record_video or upload_video for videos //record_audio or upload_audio for audio files //upload_document for general files //find_location for location data //more info here - https://core.telegram.org/bots/api#sendchataction } if (text == "/start") { String welcome = "Welcome to Universal Arduino Telegram Bot library, " + from_name + ".\n"; welcome += "This is Chat Action Bot example.\n\n"; welcome += "/send_test_action : to send test chat action message\n"; bot.sendMessage(chat_id, welcome); } } } void setup() { Serial.begin(115200); // Set WiFi to station mode and disconnect from an AP if it was Previously // connected WiFi.mode(WIFI_STA); WiFi.disconnect(); delay(100); // attempt to connect to Wifi network: Serial.print("Connecting Wifi: "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println(""); Serial.println("WiFi connected"); Serial.print("IP address: "); Serial.println(WiFi.localIP()); } void loop() { if (millis() > Bot_lasttime + Bot_mtbs) { int numNewMessages = bot.getUpdates(bot.last_message_received + 1); while(numNewMessages) { Serial.println("got response"); handleNewMessages(numNewMessages); numNewMessages = bot.getUpdates(bot.last_message_received + 1); } Bot_lasttime = millis(); } }
Да, BOTtoken рабочий.
Уж не знаю, зачем sendChatAction() понадобилась, я начинал в своё время с EchoBot.ino.
сообщение в телегу не пришло
Имеется в виду сообщение из строки 58 ?
Да, BOTtoken рабочий.
Уж не знаю, зачем sendChatAction() понадобилась, я начинал в своё время с EchoBot.ino.
сообщение в телегу не пришло
Имеется в виду сообщение из строки 58 ?
и 40 строка тоже , я пытаюсь хоть как то заставить работать код чтоб уже дальше от чего то отталкиватся
А с вашего компьютера, в той же сети, где ардуина с ботом, простым браузером открывается http://telegram.org или http://api.telegram.org ?
А с вашего компьютера, в той же сети, где ардуина с ботом, простым браузером открывается http://telegram.org или http://api.telegram.org ?
да , я с Украины , у нас нет блокировки
На роутере никакой фаервол не включен? Другие примеры работают, хотя бы один? На гитхабе последние изменения в этой библиотеке больше двух лет назад, есть вероятность, что api телеграма обновилось без обратной совместимости.
На роутере никакой фаервол не включен? Другие примеры работают, хотя бы один? На гитхабе последние изменения в этой библиотеке больше двух лет назад, есть вероятность, что api телеграма обновилось без обратной совместимости.
может есть пример какой то попроще? Просто чтоб сообщение пришло в телеграмм и все?
На гитхабе последние изменения в этой библиотеке больше двух лет назад, есть вероятность, что api телеграма обновилось без обратной совместимости.
Исключаем, у меня работают и версия 07.02.2017 на ESP8266, и версия 21.03.2018 на ESP32.
1. Запустите в браузере https://api.telegram.org/bot1064128638:AAGNFhb53Y-giulXwgBb3PzH9ZxJf411W5E/getMe , проверьте, есть ли ответ {"ok":true,"result":{"id":1064128638,"is_bot":true,"first_name":"adrduino1848","username":"adrduino1848_bot"}}
2. Найдите строку bool _debug = false; в UniversalTelegramBot.h и поменяйте false на true, будет больше информации.
может есть пример какой то попроще? Просто чтоб сообщение пришло в телеграмм и все?
Вставьте в setup() строку bot.sendMessage(chat_id, "Some text");
chat_id (адресата, то есть свой) можно узнать разными способами, например, https://nastroyvse.ru/programs/review/telegram-id-kak-uznat-zachem-nuzhno.html
Из браузера это же самое будет выглядеть как https://api.telegram.org/bot1064128638:AAGNFhb53Y-giulXwgBb3PzH9ZxJf411W5E/sendMessage?chat_id=0000000000&text=TEST , меняем 0000000000 на реальное значение chat_id
1. Запустите в браузере https://api.telegram.org/bot1064128638:AAGNFhb53Y-giulXwgBb3PzH9ZxJf411W5E/getMe , проверьте, есть ли ответ {"ok":true,"result":{"id":1064128638,"is_bot":true,"first_name":"adrduino1848","username":"adrduino1848_bot"}}
2. Найдите строку bool _debug = false; в UniversalTelegramBot.h и поменяйте false на true, будет больше информации.
может есть пример какой то попроще? Просто чтоб сообщение пришло в телеграмм и все?
Вставьте в setup() строку bot.sendMessage(chat_id, "Some text");
chat_id (адресата, то есть свой) можно узнать разными способами, например, https://nastroyvse.ru/programs/review/telegram-id-kak-uznat-zachem-nuzhno.html
Из браузера это же самое будет выглядеть как https://api.telegram.org/bot1064128638:AAGNFhb53Y-giulXwgBb3PzH9ZxJf411W5E/sendMessage?chat_id=0000000000&text=TEST , меняем 0000000000 на реальное значение chat_id
спасибо , нашел пример рабочий https://github.com/witnessmenow/Simple-Home-Automation-With-Telegram
спасибо за пример из браузера очень полезно
Такая же ситуация: работает только из https://github.com/witnessmenow/Simple-Home-Automation-With-Telegram
Спасибо за обратные связи!
ПОдскажите, почему всё таки первые примеры не работают? а конкретно почему не работает из примеров амперки?
Спасибо!
Может быть на амперке спросить?
а в чем проблема получить ответ здесь?
Хотя могу попробовать ответить самому... здесь вряд ли можно конкретно и четко решить вопрос: либо будет не по теме сообщение, либо "умные гуру" будут сводить к базарной коммерции...
Если не напишешь максимум информации, то ковыряют с разными корявыми сравнения; если даёшь максимум информации, то снова отправляют без конкретики по вопросу...
И так, между прочим, с данного ресурса идёт прямая отсылка на магазин амперки, так что можно предположить, что и здесь можно спросить про железки и уроки с Амперки. Хотя даже без этого нет смысла отсылать к ним, потому что для специалиста это будет просто как дополнительная информация...
Прошу без обид тех пользователей, которые искренне делятся своим опытом по задаваемым вопросам. Благодарю за понимание.
Наверно потому что бот телеграмм совершенно не подходит под тематику форума? Там писали, там и ответ дать могут. Как связаны ардуино и бот?
Связаны также как лампочка и ардуино, с помощью которой ей управляют.
Проблема именно в скетче, который связывается и управляет использую телеграмм. Знающие специалисты явно понимают о чем речь.
Лампочка, реле, ардуина - вижу связь между сайтом , скетчем, средой. Всё описано.
ESP8266, WiFi, телеграмм - вижу сайт esp8266, интернет технологии, скетча не вижу, потому что поддержка в среде сделана сторонними производителями и большинство строк Вашего скетча не имеют объяснения на уровне нелпа сайта.
Ну да. Знающие могут и сюда зайти и даже дать ответ.
Автор на гитхабе предупреждает.
Installing
....
You also have to install the ArduinoJson library written by Benoît Blanchon. Search for it on the Arduino Library manager or get it from here.
В коде рабочего примера подключена библиотека парсера
#include ArduinoJson.h
...
по готовому примеру из UniversalTelegramBot подставил токен бота и свою wifi сеть , к роутеру подключило но сообщение в телегу не пришло , токен не стал менять он настоящий , может у вас выйдет?
что я делаю не так(
Реанимирую старый пост, чтобы кому эта тема выдалась в поиске нашел решение.
Чтобы ответить на вопрос, почему во втором примере работает, а в первом нет, нужно обратиться к функции void setup()
Закомментим строку secured_client.setTrustAnchors(&cert); // Add root certificate for api.telegram.org, а в конце добавим secured_client.setInsecure();
В этом отличие, либо другой вариант - https://github.com/witnessmenow/Universal-Arduino-Telegram-Bot/issues/100
Закомментим строку secured_client.setTrustAnchors (& cert); // Добавляем корневой сертификат для api.telegram.org, в конце добавим secured_client.setInsecure ();
у меня строка "secured_client.setInsecure ();" не работает, но работает другая строка - "client.setInsecure();"
у меня строка "secured_client.setInsecure ();" не работает, но работает другая строка - "client.setInsecure();"
может потому что обьект по другому называется? :)
игрался весь вечер с ботом - просто пример - работает - переношу всё в свой проект - не работает - тишина.
В общем оказалось две причины - мало памяти и библиотека mDNS - её надо исключить.
А мало оперативки лечится фрагментацией - client.setBufferSizes(512, 512);
но тут надо проверять влезут ли ваши сообщения в этот буффер и может ли сайт это делать - на данный момент телеграм может обходиться такими буферами.
А если корневой сертификат закинуть в файловую систему?
не могу сказать - не в сертификате дело - у меня insecure - тоесть просто хоть както передать строку. всеравно не хватает оперативки.
не хватает оперативки.
Странно. Я довольно много засунул помимо бота и всё работает успешно, даже с сертификатом или с отпечатком.
С сертификатом только уж очень медленно, пришлось остаться на отпечатке.
Свободной оперативы ещё 30-32 кБ.
Почему-то никто не говорит о том, что ни сертификат, ни отпечаток не позволят установить защищенное соединение без актуального времени на esp. Это очень важно! После установки соединения с wifi выполните код:
откуда в esp8266 под ардуино 32 кила свободного? простое включение вайфая и поднятие ота сервера - уже 27 оставляет.вот на 27 килах свободного heap - работает. а у меня было 21 кил свободного heap - и всё - не взлетело. пока буферы не ограничил. Про время ничего не понял - специально отключил RTC и синхронизацию - время вышло 2165 год - прекрасно соединяется и отправляет - правда я не проверяю тупо ничего insecure=true - мне побоку что ктото увидит цыфарки с температурами и счетчики
откуда в esp8266 под ардуино 32 кила свободного? простое включение вайфая и поднятие ота сервера - уже 27 оставляет.вот на 27 килах свободного heap - работает. а у меня было 21 кил свободного heap - и всё - не взлетело. пока буферы не ограничил. Про время ничего не понял
места надо знать :) . Идём в настройки платы->MMU->16 кэш+48 iRam+2nd Heap. И будет счастье. ОТА у меня поднимается только по требованию и тогда Бот в Телегу не лезет.
У меня есть тестовый бот, открытый для всех @rtu5024_gate_bot - там можно запросить свободную память командой
Сами смотрите. Бот реально на wemos D1 mini и реально рабочий. Я тут тему создал по нему, пока модераторы решили не прикрывать. И бот при этом ещё файликами ворочает под 100кБ. И соединение у него секюрное, хоть и с отпечатком. Буферы не ограничивал, там для инлайн клавы 1500 байт обязательно нужно. Но саму библиотеку "причесал" немного.
Вот сразу после перезагрузки у Бота
Про время - это только для секюрного соединения SSL, если insecure - то пофиг. При секюрном соединение проверяется сертификат или его отпечаток, а сертификат имеет срок действия. Если время не выставить, то проверка не пройдёт и соединение не установится. Если отладку включить у библиотеки, то это прекрасно видно.
а можете поделиться технологией? вы с ардуины прошиваете через ота или надо перед этим чтото на девайсе сделать?
не обновлял давно SDK MMU у меня небыло - по идее вы 16 кил от кэша откусили - скорость не упала? флешка живет?
Портал с настройками и web-прошивкой поднимается либо после нажатия кнопки на gpio4, либо по двойному ресету, либо по команде самому боту.
ОТА - не нравится. Либо прошиваю по проводу.
Да. 16К от кэша отдал в iRAM. Скорость упала, конечно, но не катастрофично. Тут уж надо решать что важнее. Флешка - это что? Карточкой не пользуюсь, а LittleFs пашет за милую душу.
не обновлял давно SDK MMU у меня небыло - по идее вы 16 кил от кэша откусили - скорость не упала? флешка живет?
MMU доступен в настройках только для Generic ESP8266, если стоит что-либо другое, то его нет.
а ну так неинтересно я думал вы как-то по лайтовому детектите начало ота и потом запускаете штатный модуль...ну...мне ота тоже не всегда нравится но извините - 6 выключателей в дозах очень проблематично доставать для перерпошивки или например есть у меня пара модулей в цеху в станках и вот иногда я их во время работы прошиваю когда идлиоты механики не могут настроить станок - приходится делать всякие шаговые режимы и прочие тупости на один день-до конца смены дожить - а там пар вода холод с ноутом особо не побегаеш да и режимный обьект - с ноутом туда не пустять:) но то такое.
флешка имеется ввиду винбонд где код. она ж и кешируется.
Спасибо. было приятно пообщаться :)
Может кому поможет... Два дня бился, писал тут просьбу о помощи, но разобрался сам ))
У меня CH340 NodeMcu V3 Lua WIFI.
Никак не хотела в бот посылать сообщения. И в мониторе порта были "кракозяблы".
Чего я только не делал... Оказалось - надо обновить Arduino IDE - и все заработало )))))
Обычно не обновляю, т.к. зачем торогать то, что и так работает?..
К тому же был случай - скетч на старом компилировался, а на новом - нет...
Теперь у меня два ArduinoIDE )))