Найти в Дзене
DGO шпаргалка

ВК бот IoT. Переезжаем на Long Poll при помощи библиотеки DGO_VKbot.

Всем привет! Наконец-то доделал бота из предыдущей статьи до функциональной версии и сделал для этого дела библиотеку для ардуино. И даже хотел выложить на отечественный Гитфлик, но он не в белых списках! Так что решил, не мудрствуя лукаво закинуть всё на гитхаб, если не видно разницы. Старый бот работал только на ESP8266 и только с методом Short Poll. Да и вообще умел говорить "You said: Привет" на наш "Привет" и больше ничего. Такой себе функционал. Но это поменялось! Теперь не нужно самостоятельно формировать запросы в JSON формате. Много механизмов убрано за абстракцию библиотеки, а самое важное - переход на Long Poll формат. Например для отправки сообщения вместо магических сочетаний конкатененированных строк для отправляемого запроса можно просто сделать так: bot.sendMessage("Привет!", update.message.peer_id); Всего и делов. На гитхабе есть примеры и документация по использованию библиотеки. Ссылка в самом начале статьи. Всё можно посмотреть там. Например новый ЭХО-бот из прим
Оглавление

Всем привет! Наконец-то доделал бота из предыдущей статьи до функциональной версии и сделал для этого дела библиотеку для ардуино. И даже хотел выложить на отечественный Гитфлик, но он не в белых списках!

Так что решил, не мудрствуя лукаво закинуть всё на гитхаб, если не видно разницы.

Что было сделано?

Старый бот работал только на ESP8266 и только с методом Short Poll. Да и вообще умел говорить "You said: Привет" на наш "Привет" и больше ничего. Такой себе функционал. Но это поменялось! Теперь не нужно самостоятельно формировать запросы в JSON формате. Много механизмов убрано за абстракцию библиотеки, а самое важное - переход на Long Poll формат.

Например для отправки сообщения вместо магических сочетаний конкатененированных строк для отправляемого запроса можно просто сделать так:

bot.sendMessage("Привет!", update.message.peer_id);

Всего и делов.

На гитхабе есть примеры и документация по использованию библиотеки. Ссылка в самом начале статьи. Всё можно посмотреть там.

Например новый ЭХО-бот из примера уместился в 71 строку - 36 из которых перенос строки, выводы в порт и комментарии. При этом выглядит значительно более понятным и работает лучше за счет использования другой технологии запросов.

Немного про Long Poll

Чтобы начать с важного, отмечу - для использования библиотеки необходимо включить режим Long Poll в настройках группы. Там же, где мы получали токен в предыдущей статье.

вот тут.
вот тут.

И так же нужен ID группы со знаком минус. Его можно посмотреть в настройках группы во вкладке "Основная информация" под адресом. Выглядит примерно так:

Номер сообщества — club12345678

В настройках:

#define GROUP_ID "-12345678" // ID группы с минусом!

Без этого работать не будет.

А теперь немного лирики про технологию.

Выбранная нами технология переводится как "длинный опрос". Мы как бы просим иногда сервер маякнуть ответить, если чё вдруг что-то изменится. И делаем мы это не каждые две секунды, как в методе из прошлой статьи, а гораздо реже и не разрываем при этом соединение. Так значительно экономится трафик, а изменения сервер присылает не после запроса, а после появления события во время ожидания. Звучит отлично!

Вообще есть множество методов обмена данными между устройствами. Клиент-Серверные(Pull) - как у нас. Сервер-Клиентные(Push) - всевозможные вебсокеты и вебхуки и гибридные - например MQTT.

Если бы у нас был свой собственный сервер из "белых списков" - отлично было бы использовать что-то вроде MQTT - разработанного специально для устройств. Такая возможность, кстати, есть в специальном сервисе Яндекса. Или вебсокет - немного сложнее, но дает мгновенный отклик при расходе значительно меньшего трафика. Но имеем, что имеем.

Куда же девать такую красоту?

Да на самом деле куда угодно! Например ввести в поиске "ESP32 RELAY MODULE" и выбрать из кучи вариантов. На любое количество выходов и входов с корпусом и без. У меня есть такое. Отлично и дешево. Всё включено, как говорится.

Картинка с AliExpress
Картинка с AliExpress

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

Сделаю свою плату в отличном корпусе 161 от меандра. Корпус устанавливается на DIN-рейку, стоит относительно не дорого и внутри полно места. Так же для разработки на странице в их магазине можно скачать 3д модель корпуса. Что я и сделал.

Узнал все необходимые размеры и быстренько накидал плату. Вернее только ее часть, чтобы всё примерить. Экспортировал в STL.

Рендер платы. Уже с RJ11 разъемом.
Рендер платы. Уже с RJ11 разъемом.

Пока печаталось подумал, что не плохо было бы добавить MODBUS на разъеме RJ11. Для подключения внешних устройств. Сразу с питанием и сигналом по дешевой витой паре.

3д-печатанная плата =) только без разъема для витой пары.
3д-печатанная плата =) только без разъема для витой пары.

Разъемы из библиотеки стандартной KiCAD - подходят отлично.

TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_Horizontal

Ну и корпус так же распечатал, чтобы всё примерить.

Получилось кривовато и не особенно собирается, но это и не важно. Главное - всё подходит, а промышленного изготовления корпус ко мне уже едет.

Ещё в подобном корпусе можно расположить блок питания, купленный как просто плата или купить готовый блок на DIN-рейку. И всё будет выглядеть красиво и аккуратно.

На этом пока всё. Пойду доделывать плату, ждать детали на оСЦИЛЛОГРАФ да и не плохо было бы поработать работу. Каникулы закончились.

Всем спасибо за просмотр! Как всегда буду рад комментариям - в этот раз особенно по работе библиотеки, если вдруг кто ее попробует. Более подробно всё можно обсудить в телеграм-чате канала. Там пока тихо, но я читаю все сообщения и отвечаю на них. До свидания!