Esp32 telegram bot реле

esp telegram. Управление реле. Простые скетчи.

Сегодня рассмотрим, как можно из Telegram управлять разными устройствами. На примере подключения модуля из двух реле. А как вы сами знаете, что если вы можете управлять реле, то можете управлять всем миром.
Чтобы не томить, давайте посмотрим кусочек видео, где показано как это работает, а дальше, вы сами решите, смотреть это видео или нет.
Я не стал подключать к реле нагрузку, поэтому будем ориентироваться на включение светодиодов на реле. Скетч легко изменить для подключения дополнительных реле.
Для этого примера был использован бот из прошлого урока. Если вы не знаете, что такое бот телеграм и как его создавать, то посмотрите вот это видео. Там всё подробно рассказано.
Если вы ещё не ушли, то сейчас самое время поставить лайк и подписаться на канал, если вы ещё этого не сделали раньше.

Теперь давайте рассмотрим как работает скетч.
Сначала о его возможностях.
В скетче я управляю модулем из двух реле, но немного дописав скетч, можно управлять и большим количеством. Всё зависит от количества ног платы ESP.
Я запрограммировал 6 действий.

  • Включение и отключения первого реле. Например для управления светом.
  • Включение и отключения второго реле. Например для насосом или вентилятором. Да чем угодно, что можно вставить в розетку.
  • Пятое действо – это выключить всё и сразу.
  • И шестое – это посмотреть, что сейчас включено и выключено.

Как я говорил, скетч легко масштабируется и можно добавить ещё что-нибудь.
Для тех кто смотрел предыдущее видео, то что я сейчас буду рассказывать и так известно, но лучше посмотреть ещё раз, вдруг узнаете, что нового.
Сначала надо установить эту библиотеку. Это можно сделать из Менеджера библиотек.
Сюда вводим свои данные о настройки сети. Название сети и пароль.
Вставляем свой токен и номер чата. Как их получить я показывал в прошлом видео.
Это среднее время сканирования между сообщениями. Я установил в 1 секунду. Если вам нужно чаще, то можете поиграть с этим значением. 1 секунда это значение из библиотеки по умолчанию.
Здесь устанавливаем к каким выводам подключены реле и создаём переменные для хранения статусов. Реле я подключил к выводам D5 и D6.
Это показано как к вам будет обращаться бот. По умолчанию это будет ваше имя, а если бот его не сможет определить, то будет обращаться как к Гостю.
Так выглядит код для управления реле. Здесь показано как включать или выключать реле, и что выводить на экране телефона.
А это код выключения всех реле.
Это вывод статусов состояния реле. Включено или выключено.

А это такое своеобразное меню на экране.
Здесь показаны все возможные команды.
Так как экран моего телефона не соответствует размеру моих пальцев, и я часто нажимал не то что хотел, то я сделал отступ между командами.

Ну а дальше обычный setup. Здесь ничего интересного. Объявляем выводы платы ESP к которым подключены реле как Выход. И выключаем реле.
Так как мои реле управляются низким уровнем, в прочем как процентов 80 всех реле купленных в Китае. Да и не только в Китае.
Это подключение к серверу точного времени. В следующем видео я покажу как это время выводить.
И получение сертификата. Для чего это нужно я не знаю. Но пусть будет.

Это стандартный вывод в монитор порта информации о WIFI соединении. И вывод туда же времени в формате UNIX. Определяется как количество секунд, прошедших с полуночи (00:00:00 UTC) 1 января 1970 года (четверг). Есть много функций которые переводят это в нормально читаемы вид.
Теперь давайте ещё раз посмотрим как это работает.
Вначале запускаем наш бот, Нажав на кнопку старт или написав старт.
Вам откроется меню с возможными вариантами.
Нажав на них вы сможете управлять нагрузками подключенными к реле. Включать и выключать можно по отдельности, а можно отключить всё сразу. Вы можете добавить так же возможность включить всё сразу скопировав код для выключения и немного подправив его.

Как видите вообще ничего сложного в управлении внешними нагрузками с помощью Телеграм нет. Это видео было сделано, так как вы изъявили желание, подкреплённое некоторым количеством лайков. Если вы хотите продолжения, то ставьте лайк этому видео и скоро появится продолжение.
Вы также можете написать в комментариях про что бы вы хотели увидеть дальнейшие видео. Конечно это касается Телеграм.
Спасибо, что остаётесь с нами и за то что досмотрели это видео до конца. Это очень помогает моему каналу.
До встречи в новых видео.
А здесь вы можете увидеть рекомендованные мной видео на интересный контент по теме и не только. Нажав на них вы также поможете этому каналу.
Надеюсь на вашу помощь.

Читайте также:  Щелкает реле в блоке комфорта

Источник

Сетевой интерфейс для программируемого реле с поддержкой Telegram Bot и HomeKit

Как я реализовал удаленное управление и мониторинг, для программируемого реле ПР200, используя разные сервисы (Telegram Bot, HomeKit) и протоколы (Modbus RTU, Modbus TCP, mqtt) и ESP32.

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

Долгое время я использовал сетевой интерфейс на основе модуля esp8266, на сегодня более перспективным вижу использование модуля esp32, долгое время я не рассматривал его из-за размеров, но впоследствии, проработав разные варианты, удалось не только вместить все на одной плате, но и сделать решение более универсальным и удобным.

Первая версия платы на основе ESP32

Во второй версии добавлен usb порт, что позволяет загрузить прошивку без использования дополнительных проводов и преобразователей. Базовая реализация изначально задумывалась с возможностью обновления прошивки по воздуху через ОТА, а для экспериментов проще использовать microUSB.

В обновленном варианте добавил ещё и кнопки сброса и загрузки при прошивке, а так же добавил поддержку модулей ESP32-WROVER с PSRAM, это позволит использовать больше памяти и расширит возможности.

В общем, структура взаимодействия сетевой платы с программируемым реле основана на протоколе modbus rtu, а с внешним миром варианты могут быть самые разнообразные от bluetooth до TelegramBot.

TelegramBot

Именно с поддержки бота я и начал опыты, на раннем этапе получилось вот такая реализация:

Для использования бота достаточно получить токен и ввести его в поле ввода и сохранить, значение сохраняется в энергонезависимой памяти, после перезагрузки бот запустится автоматически.

Для универсальности взаимодействие бота с алгоритмом в приборе, использован режим чтения/записи сетевых регистров Modbus а разных форматах представления:

/R- целое 16 битное значение

/I-целое число занимающее 2 регистра

/F- число в формате float тоже 2 регистра.

После символа адрес в диапазоне 512-576, эти регистры можно читать и записывать, формат для записи /Xzzz=nnnn, для чтения достаточно отправить номер регистра в требуемом формате.

Для представления состояний регистра в битовых полях, можно отправить адрес в формате /Bzzz, ответ будет в виде 16 значения в булевом формате.

Apple HomeKit

Следующим этапом был сервис Apple HomeKit и приложение дом, как раз для управления освещением и другими точечными нагрузками он подходит лучше всего, я начал с 16 каналов, по количеству бит в регистре модбас.

После выхода обзора по такому применению,

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

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

Для быстрого добавления платы в приложение Дом, на web страницу добавлен QR код, второй вариант ввести код настройки, индивидуальный для каждой платы. Постарался упростить и минимизировать все настройки для быстрого старта.

Так же протестировал mqtt, идея задания топиков взята из версии платы для esp8266. Проверил поддержку датчиков 1-wire ds18b20, для их подключения к плате предусмотрены посадочные места под разъем, и сигнальные линии с резисторами, такой-же использовался в плате prsd на esp8266.

4 пина, два из которых +3.3v и gnd, позволяют задействовать 2 порта в качестве интерфейса 1-wire или i2c. I2C позволяет подключать всякую «экзотику», которую практически невозможно состыковать в базовой поставке прибора. Например, датчик влажности/давления с I2C или RFID ридер.

Для быстрого просмотра значений регистров используется протокол Modbus TCP, запустив Modbus Poll на ПК или Virtuino/Kascada и другие приложения на Android, можно быстро организовать доступ и управление устройством с помощью телефона или планшета.

Остальные настройки WEB интерфейса представлены ниже:

Для смены прошивки платы, когда она уже установлена в устройство, предусмотрен режим обновления по воздуху (OTA), для этого достаточно выбрать bin файл, после загрузки прошивки устройство перезагрузится и запустится обновленная версия. Так же можно перезагрузить плату в ручном режиме через web кнопку.

Читайте также:  Можно ли подключить светодиодные фары без реле

При первом старте, когда устройство не имеет настроек точки доступа и пароля и не может подключиться к сети wi-fi, плата включает режим точки доступа для подключения и ввода ssid и pass, после сохранения значений и перезагрузки если подключение к сети успешно, точка доступа выключается. Если токен Telegram bot введен, то после подключения и выхода в интернет, узнать IP адрес платы можно введя команду. Через бот можно получить и другую информацию.

Основные моменты по работе представлены в видео.

На данный момент прошивка находится в режиме доработки, демонстрационные версии будут доступны позже.

Для экономии ресурсов ESP32 в перспективе думаю разделить на версии с поддержкой того или иного функционала, памяти в esp32 хоть и больше в сравнении с esp8266, но одновременная работа всех сервисов может снизить ресурсы до критического уровня.

В процессе тестирования нескольких подключенных устройств одновременно, заметил особенность.

В меню бота есть возможность смотреть время бесперебойной работы в секундах, текущий и минимальный объем доступной Heap памяти, используя один и тот же токен для TelegramBot, можно читать параметры сразу с нескольких устройств, аналогично и на запись параметров. Т.е. любая команда, отправленная с телефона боту, отправляется всем устройствам с токеном, это происходит не всегда, иногда отвечает только часть устройств, и приходится делать запросы повторно. Сейчас все они не имеют привязки к имени, думаю сделать уникальные имена для отличия при запросах/ответах.

Используя несложный сетевой интерфейс с чипом ESP32, можно значительно расширить функционал программируемого реле ПР200 и в перспективе ПР103, куда можно установить сетевой интерфейс, другие модели ПР100/ПР102 потребуют внешний драйвер RS-485 для подключения снаружи, так как сетевые интерфейсы в них не съемные.

Наличие программатора на борту платы, позволяет создать собственные алгоритмы с быстрой загрузкой в устройство, необходимо лишь обеспечить обмен по протоколу Modbus на стандартных выводах UART esp32.

11.06.21 Устранил накопленные замечания по прошивке, сделал универсальную плату для поддержки модулей с памятью psram. Сделал видео по начальному запуску в работу интерфейса.

23.06.21 Добавил примеры работы с Apple Home Kit, HomeAssistant.

05.08.21 Подробности по настройке и работе с mqtt и датчиками температуры ds18b20.

19.08.21 версия внешнего интерфейса, демонстрация голосового управления.

09.09.21 Новый алгоритм работы с датчиками ds18b20.

Источник

Управляем домом через Telegram

В настоящее время системы управления умным домом становятся все популярнее. Централизованный интерфейс, который управляет устройствами по всему дому, помогает экономить время и позволяет гораздо эффективнее контролировать ваше жилище. Реализацией своего видения подобных систем занимаются как именитые бренды: Apple, Amazon и Google, встраивая их в свою инфраструктуру, так и умельцы, собирающие подобные системы на базе платформы Arduino.

Наша же цель была следующей: создать систему, которая будет доступна на большом количестве устройств и не будет привязана к какому-либо месту. Отличный вариантом для реализации управления оказался бот для мессенджера Telegram. Telegram имеет приложения на всех основных платформах, а так же web-версию. Доступ к нему можно получить из любого места, нужно лишь иметь аккаунт.

Из модулей мы выбрали следующие:

• Управляемая RGB светодиодная лента
• Управляемая розетка
• Датчик температуры
• Датчик освещенности (он используется для автоматического включения освещения)

Что нам понадобится

1. Raspberry Pi 3

Маленький, но удаленький компьютер, не нуждающийся в представлении, его мощности нам с головой хватит для этих задач. Третья версия хороша наличием встроенного Wi-Fi модуля, так что нам не придется думать о стороннем адаптере.

2. Модули ESP8266

Их нам понадобится 4 штуки. Мы использовали ESP-12F, но вообще разницы нет: ESP-1 будет вполне достаточно. Так же готовые платы NodeMCU помогут сэкономить вам время и силы.

3. Светодиодная лента

Мы взяли управляемую RGB-ленту на контроллерах WS2812b, хотя, впрочем, тут подойдет любая лента, работающая на 5В и поддерживаемая платформой Arduino.

4. Датчики температуры и освещения

Мы использовали модуль BH1750 для определения освещенности в комнате и DS18B20 для температуры. Основными критериями были доступность, поддержка платформой Arduino и возможность работы с 3.3В логикой ESP8266.

5. Реле

Субмодуль MOD-1CH для Arduino может пропускать до 10А тока и управляется 5В, аналогов для 3.3В мы не нашли, так что для управления использовали транзистор в ключевом режиме.

6. Telegram-бот

Непосредственное управление всей системой будет осуществляться при помощи бота Telegram, запущенного на Raspberry: это позволит системе быть легкодоступной на любой платформе из любой точки мира. Создавать бота для Telegram довольно просто, благодаря развитой платформе и поддержке большого количества языков.

Таким образом вся наша система будет выглядеть примерно так:

Реализация

Первым делом протестируем модули.

Готовые печатные платы адаптируют расстояние между пинами, что заметно облегчает пайку, а также содержат в себе необходимые резисторы, соединяющие пины CH_PD и GPIO2 с Vcc.

Читайте также:  Реле 96312545 схема подключения

К сожалению, модули ESP8266 питаются и работают на 3.3В, а не на 5, как Arduino. Преобразовать напряжение можно с помощью готового модуля-преобразователя, но можно и спаять схему на основе линейного стабилизатора AMS1117, как это сделали мы.

Следующий этап – программирование.

К счастью, платформа ESP8266 поддерживается Arduino IDE, что открывает нам множество возможностей. Для непосредственной загрузки прошивки на модуль мы будем использовать Arduino Nano, однако то же самое можно сделать и через обычный USB-UART преобразователь. Не следует забывать про разницу напряжений у Arduino и ESP.

Кнопка нужна для того, чтобы замкнуть пин GPIO1 на GND при подаче питания на модуль и, тем самым, перевести его в режим программирования.

Далее настраиваем Arduino IDE, чтобы она понимала ESP (подробная инструкция со всеми ссылками) и пробуем записать тестовый скетч на моргание светодиодом.

После удачного мигания мы приступили к пайке всех модулей. С датчиком температуры и освещения все довольно стандартно.

А вот лента и умная розетка вызвали некоторые трудности.

Простое подключение управляющего входа ленты к ESP результата не дало. Оно и не удивительно, ведь WS2812b требует на управляющий вход минимум 70% от входа VCC (5×0.7=3.5), и 3.3В платы явно недостаточно. Однако мы нашли костыль интересный способ запустить их без использования повышающего преобразователя. Если диоду требуется минимум 0.7xVcc для реакции на сигнал и мы не можем увеличить уровень этого сигнала, то надо уменьшить Vcc! Да, светодиоды будут гореть не так ярко, однако нам не надо запитывать таким образом всю ленту; хватит и одного диода. Передавая сигнал далее по цепочке, светодиод использует уже уровень Vcc для формирования сигнала, чего вполне хватает для «нормального» светодиода. Таким образом, подключив первый диод в ленте к питанию через диод, который «съедает» около 0.6В, мы получаем отлично работающую ленту, напрямую управляемую из нашего модуля ESP8266. А чуть более тусклый первый светодиод мы оставили для отладочных нужд: отображать состояние подключения к сети.

Нашу умную розетку мы хотели разместить полностью в корпусе от старой розетки с таймером. Туда должны были влезть: сам ESP-12F, блок питания для него и реле, управляющее розеткой. Однако, разместив там реле и блок питания, мы так и не смогли вместить там еще и модуль ESP. Поэтому пришлось приделать снизу еще маленькую коробочку.

Итог получился не таким элегантным как мы хотели изначально, зато это было цельное устройство, которое надо было просто воткнуть в розетку.

Следующим шагом была настройка Raspberry. План был такой: наши модули подключаться к точке доступа Wi-Fi, которой является Raspberry, а, точнее, к её встроенному Wi-Fi модуль. На Raspberry запущен Telegram-bot, который находится со всеми модулями в локальной сети и может без проблем обмениваться с ними http-запросами. К интернету это все подключено через Ethernet.

Для осуществления этого плана мы использовали два пакета:

  • hostapd – позволяет использовать встроенный wi-fi модуль как точку доступа
  • dnsmasq – объединяет в себе DHCP и DNS сервера.

Мы пытались добиться относительной независимости кода и устройств, поэтому все запросы выполнялись не на ip-адреса, а на имена из придуманной зоны .sh (light.sh, socket.sh и т.д.). Для этого мы для каждого модуля настроили статические ip-адреса и добавили на эти адреса DNS записи, соответствующие модулям. Благо dnsmasq очень легко конфигурируется (подробная инструкция по настройке этой системы).

И, наконец, непосредственно бот.

Мы писали бота на Python, используя библиотеку python-telegram-bot. Нами был разработан кнопочный интерфейс, что упрощает управление, превращая устройство в своеобразный пульт ДУ:

Исходный бота код можно изучить здесь.

И, чтобы им не пользовался кто попало, мы поставили защиту паролем.

Вывод

Конечно, мы не создали какой-либо революционной системы, существует огромное количество более целостных и продуманных реализаций. Модули температуры и освещения можно было бы сделать автономными, благо у ESP8266 есть специальный режим ожидания, в котором она потребляет очень мало энергии. Можно было бы добавить легкую пользовательскую расширяемость, не требующую изменения исходного кода и перенастройки сетевых подключений и еще много чего. Однако цель всего этого проекта была совсем не в этом. В первую очередь мы хотели создать простую систему, которая могла вполне быть создана кем угодно у себя в доме и не требовала бы серьезной подготовки и затрат. А самое главное: мы хотели научиться многим вещам, пока мы делали этот проект. И если практичность и функциональность нашего решения можно еще долго дорабатывать, то знания, полученные нами в процессе планирования и воплощения в жизнь этой системы, определенно стоили потраченных усилий.

Источник

Оцените статью
Adblock
detector