При создании собственного ИК-хаба для Home Assistant первым этапом является считывание команд штатного ИК-пульта. Без этого невозможно воспроизвести их с помощью ESP32. Хотя ESPHome умеет работать с ИК-приемниками, на практике некоторые пульты определяются не полностью или декодируются некорректно. Во время разработки собственного ИК-хаба я столкнулся именно со вторым вариантом.
В этой статье покажу надежный способ чтения ИК-команд с помощью ESP32-C3 Super Mini и Arduino IDE. Полученные коды мы используем во второй части для создания универсального ИК-хаба на ESPHome.
Что получится
- считать команды практически любого ИК-пульта;
- определить используемый протокол;
- сохранить команды в удобную таблицу;
- подготовить данные для ESPHome;
- использовать их в Home Assistant.
Компоненты
- ESP32-C3 Super Mini
- VS1838B
- несколько проводов DuPont
Почему Arduino IDE, а не ESPHome
В ходе тестирования выяснилось, что для некоторых пультов ESPHome определяет команды не полностью. Arduino IDE с библиотекой IRremote показала более стабильный результат, поэтому именно её используем для чтения кодов. В следующей статье снова вернемся к ESPHome, следите за анонсами.
Схема подключения
Скоро будет фото
| VS1838B | ESP32-C3 |
|---|---|
| VCC | 3.3V |
| GND | GND |
| OUT | GPIO3 |
В статье предполагается, что Arduino IDE уже установлена, а читатель знаком с установкой библиотек через Library Manager. Использовалась библиотека IRremote версии 4.7.1.
Для каких устройств подойдет этот способ
- телевизоров;
- кондиционеров;
- люстр с ИК-пультом;
- ТВ-приставок;
- медиаплееров;
- вентиляторов;
- другой бытовой техники с инфракрасным управлением.
После прошивки ESP32 скетчем (в конце статьи) вы можете нажимать кнопки на Вашем пульте и с помощью ИК приёмника VS1838B микроконтроллер будет выводить в монитор порта: протокол / адрес / команду что позволит создать таблицу команд для последующего их воспроизведения, нечто вида:
Читаем команды
Пример вывода.
Protocol: NEC
Address: 0x00
Command: 0x46
Создаем таблицу
| Кнопка | Протокол | Адрес | Команда |
|---|---|---|---|
| Power | NEC | 0x00 | 0x46 |
Возможные проблемы
Вместо протокола отображается только RAW
- Некоторые современные или малораспространенные пульты используют нестандартные протоколы, которые библиотека не может автоматически распознать.
- В этом случае в Serial Monitor появятся только необработанные (RAW) данные.
- Это не означает, что такой пульт нельзя использовать. В большинстве случаев RAW-команды также можно передавать обратно, однако объем данных значительно больше, чем у стандартных протоколов NEC, Samsung, Sony или RC5.
Одна и та же кнопка каждый раз выдает разные значения
- Некоторые устройства используют защиту от повторного воспроизведения команд (rolling code) или передают дополнительные служебные данные.
- Однако большинство бытовых устройств (телевизоры, кондиционеры, люстры, ТВ-приставки) используют постоянные коды, поэтому при повторном нажатии одной кнопки адрес и команда должны совпадать.
- Если значения отличаются незначительно, попробуйте нажимать кнопку коротко и не удерживать её.
Команды повторяются несколько раз
- Это нормальное поведение.
- Практически все ИК-пульты несколько раз отправляют одну и ту же команду, чтобы устройство гарантированно её приняло.
- При составлении таблицы достаточно записать команду один раз.
После того как все команды считаны, можно переходить к созданию собственного ИК-хаба на ESPHome. Во второй статье серии мы загрузим эти команды в ESP32-C3 Super Mini и подключим устройство к Home Assistant.
Несмотря на то, что ESPHome поддерживает работу с ИК-приемниками, для считывания команд Arduino IDE с библиотекой IRremote в ходе тестирования показала более стабильный результат. Поэтому мы используем каждый инструмент по его сильной стороне: Arduino IDE для получения кодов, а ESPHome для управления техникой и интеграции с Home Assistant.



Комментарии к статье
Пока нет комментариев. Будьте первым!
Добавить комментарий