Предлагаю почитать и посмотреть картинки в обзоре универсального ИК пульта дистанционного управления (далее — шлюз).
Это обзор-приквел, написан по следам другого
обзора аналогичного аппарата Gocomma R9 от
valendar.
Куплено за свои кровные $7,5 для интеграции в Homeassistant, аппарат после распаковки был незамедлительно вскрыт, обруган (см в тексте) и перепрошит на Tasmota версии ircustom-8.1.0.
В обзоре не рассматривается родное ПО.
ТТХ
Жирным выделил отличия от Gocomma R9.
Инфракрасный пульт дистанционного управления с функцией обучения.
Расстояние: до 10 метров, зона срабатывания — верхняя полусфера.
Частота модуляции ИК: 38КГц.
WiFi: 2,4 ГГц 802.11b/g/n.
Название приложения: Tuya Smart Life, есть для iOS 8 и выше, есть для Android 4.0 и выше.
Поддерживается голосовое управление через Siri, Alexa и Google Home.
Габариты: диаметр 67мм, высота
19 мм (на 10мм тоньше)
Вес продукта: примерно
50-60 грамм,
утяжелители в днище отсутствуют.
Упаковка
Помятая коробка, в ней шлюз в тонком пакете, чуть ниже 2х проводной метровый шнур microUSB для питания и инструкция.
Корпус шлюза напоминает глянцевый приплюснутый пончик.
Верхняя часть пластик прозрачный в ИК диапазоне, нижняя — матовый пластик с противоскользящей вставкой из резины.
В этой модели шнур подключается с торца корпуса, напротив гнезда резиновая вставка отформована в толкатель кнопки сброса/сопряжения.
Корпус на защелках, внутри на плате «ромашка» из 7 инфракрасных светодиодов и модуль ИК-приемника.
На нижней стороне платы распаяны: модуль TYWE3S на базе ESP8266 с 2Мб SPI flash, импульсный DC/DC преобразователь 5->3.3 вольт (U1), по входу установлен «многоразовый» предохранитель (PTC) и супрессор (TVS), N-канальный MOSFET управления диодами (N1). Ну и обвязка по мелочи.
В целом схемотехника мне понравилась, в предыдущей модели все было проще.
Ну и как все заметили — нигде нет никаких пятачков и гребенок с надписями 3.3-TX-RX-GND — за это и «спасибо».
Гуглим даташит на TYWE3S и смотрим нужную распиновку.
Попутно нужно вызвонить на какие GPIO заведены: кнопка, светодиод статуса, затвор полевика (IR-OUT) и вход приемника (IR-IN).
Оказалось тут все стандартно, никаких изменений.
Если кому интересно, светодиоды собраны в 3 группы: две по три штуки последовательно E1+E5+E6 и Е2+Е3+Е4 с токоограничивающими резисторами R5=R7=10Ом, и один диод Е7 включен через резистор R10=47Ом.
Любители повозиться могут перепрошить шлюз вообще не вскрывая,
через Tuya-convert. Но мне нравится запах канифоли, да и по шнуру проще, кошернее и быстрее.
Паяем хвост 3.3-TX-RX-GND не забывая про GPIO0 (который при прошивке нужно кратковременно притянуть к GND).
На конец хвоста паяем гребенку под косичку USB-TTL конвертера и укладываем все обратно в корпус.
Шился через Flash Download Tool v3.6.7, предварительно сняв дамп утилиткой
ReadFlash_ESP82XX
И вот здесь пришлось доставать бубен.
Ибо blank и сама прошивка заливалась без проблем, стартовала в режиме точки доступа и давала внести базовые настройки моей Wifi сети, после перезагрузки подключалась к точке доступа получала IP но не пинговалась по нему и не показывала свою вебморду. Все заработало только после ручной установки параметров и повторной прошивки.
После успешной загрузки устанавливаем тип модуля YTF IR Bridge
В разделе template аналогично (проверяем привязки GPIO)
И последним аккордом в console даем команду включения MQTT Discovery (иначе устройство не подхватит Homeassistant).
SetOption19 1
Дополнение
В последние сборки Tasmota включили по умолчанию функцию сброса на заводские настройки (навесили ее на один из GPIO, не суть важно какой).
Возникает такой эффект: если этот GPIO висит в воздухе (как например у ESP-01), то после первичной настройки и подключения к вашей вайфай сети через 1 мунуту произойдет сброс модуля на заводские настройки. ESP поднимет свою точку доступа, как после первичной прошивки Tasmota.
Для отключения этой фичи надо при первом подключении через роутер как можно быстрее зайти на модуль и в консоли выполнить две команды:
Setoption1 1
Setoption13 1
Интеграция шлюза в систему Homeassistant, чтение пультов
Итак, шлюз прошит и при «обстреливании» пультиком в web интерфейсе (раздел Console) видны какие-то длинные строки. То есть шлюз ловит команды и пытается их раскодировать.
Для интеграции в Homeassistant (НА) необходимо предварительно настроить подключение шлюза к MQTT брокеру, это делается на вкладке Configure MQTT:
Здесь нужно вбить ip адрес MQTT брокера, номер порта и логин+пароль. Как правило брокер ставят на тот же хост где работает НА, в виде дополнения — docker контейнера Mosquitto broker. Настройки ИК шлюза должны совпадать с его конфигом.
По желанию можно изменить имя топика для ИК шлюза. После сохранения конфигурации и перезапуска в консоли ИК шлюза появится запись о подключении к брокеру:
...
09:18:13.002 MQT: Attempting connection...
09:18:13.028 MQT: Connected
09:18:13.031 MQT: tele/tasmota_2AD214/LWT = Online (retained)
...
Берем пульты от ваших устройств, открываем блокнот (например Notepad++, Excel и тп), заходим на консоль ИК шлюза, жмем кнопку и копируем в блокнот декодированную команду: ту часть JSON-строки которая начинается с
{«Protocol.
Например пульт робота-пылесоса iLife50, кнопка „Старт/Стоп“ пульта в JSON выглядит так:
{"Protocol":"NEC","Bits":32,"Data":"0x2AA22DD","DataLSB":"0x405544BB","Repeat":0}
Соответственно в блокноте(Excel) пишем:
iLife 50
Старт/Стоп
{"Protocol":"NEC","Bits":32,"Data":"0x2AA22DD","DataLSB":"0x405544BB","Repeat":0}
На базу
{"Protocol":"NEC","Bits":32,"Data":"0x2AA8877","DataLSB":"0x405511EE","Repeat":0}
Локальная уборка
{"Protocol":"NEC","Bits":32,"Data":"0x2AA7788","DataLSB":"0x4055EE11","Repeat":0}
Полная уборка
{"Protocol":"NEC","Bits":32,"Data":"0x2AA9966","DataLSB":"0x40559966","Repeat":0}
Не нужно полностью копировать все кнопки, для управления хватит „базовых“.
Берем пульт от кондишена, так же жмем базовые кнопки:
Например Старт/Стоп какого-то нонейма выдает две разные команды на запуск и остановку:
Старт
{"Protocol":"COOLIX","Bits":24,"Data":"0xB29F70","DataLSB":"0x4DF90E","Repeat":0,"IRHVAC":{"Vendor":"COOLIX","Model":-1,"Mode":"Cool","Power":"On","Celsius":"On","Temp":22,"FanSpeed":"Min","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"Off","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}}
Стоп
{"Protocol":"COOLIX","Bits":24,"Data":"0xB27BE0","DataLSB":"0x4DDE07","Repeat":0,"IRHVAC":{"Vendor":"COOLIX","Model":-1,"Mode":"Cool","Power":"Off","Celsius":"On","Temp":22,"FanSpeed":"Min","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"Off","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}}
Предлагаю вам самостоятельно понять какой параметр за что здесь отвечает ;)
Пишем в блокнот эти две строки в блок „Кондиционер“.
И так далее…
Создаем виртуальные пульты в Homeassistant
В веб интерфейсе Homeassistant открываем для редактирования или (по желанию) создаем отдельную панель для пультов, на которой будем размещать кнопки. Для примера сделал два пульта: пылесос (4 кнопки) и кондиционер (2 кнопки):
Добавляем карточку пульта, класс горизонтальный или вертикальный стек (для автоматической группировки кнопок):
Настраиваем кнопку под номером 1
Жмем „+“ и настраиваем кнопку 2 (и так далее если у вас много кнопок).
Подобрать иконки на все устройства
можно из этого источника.
Перейти из визуального режима в текстовый можно нажатием на „Текстовый редактор“. При настройке многокнопочного пульта в нем намного удобнее работать.
Код пульта кондиционера в виде текста выглядит так:
type: horizontal-stack
cards:
- type: button
tap_action:
action: call-service
service: mqtt.publish
service_data:
topic: cmnd/tasmota_7F4377/IRsend
payload: >-
{"Protocol":"COOLIX","Bits":24,"Data":"0xB29F70","DataLSB":"0x4DF90E","Repeat":0,"IRHVAC":{"Vendor":"COOLIX","Model":-1,"Mode":"Cool","Power":"On","Celsius":"On","Temp":22,"FanSpeed":"Min","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"Off","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}}
target: {}
icon: mdi:air-conditioner
icon_height: 48px
show_name: true
name: Старт
- type: button
tap_action:
action: call-service
service: mqtt.publish
service_data:
topic: cmnd/tasmota_7F4377/IRsend
payload: >-
{"Protocol":"COOLIX","Bits":24,"Data":"0xB27BE0","DataLSB":"0x4DDE07","Repeat":0,"IRHVAC":{"Vendor":"COOLIX","Model":-1,"Mode":"Cool","Power":"Off","Celsius":"On","Temp":22,"FanSpeed":"Min","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"Off","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}}
target: {}
icon: mdi:hvac-off
icon_height: 48px
show_name: true
name: Стоп
Код пульта робота-пылесоса выглядит вот так:
type: horizontal-stack
cards:
- type: button
tap_action:
action: call-service
service: mqtt.publish
service_data:
payload: >-
{"Protocol":"NEC","Bits":32,"Data":"0x2AA22DD","DataLSB":"0x405544BB","Repeat":0}
topic: cmnd/tasmota_7F4377/IRsend
target: {}
icon: mdi:robot-vacuum
icon_height: 48px
show_name: false
name: Старт-стоп
- type: button
tap_action:
action: call-service
service: mqtt.publish
service_data:
payload: >-
{"Protocol":"NEC","Bits":32,"Data":"0x2AA8877","DataLSB":"0x405511EE","Repeat":0}
topic: cmnd/tasmota_7F4377/IRsend
target: {}
icon: mdi:home-circle-outline
icon_height: 48px
name: На базу
show_name: false
- type: button
tap_action:
action: call-service
service: mqtt.publish
service_data:
payload: >-
{"Protocol":"NEC","Bits":32,"Data":"0x2AA7788","DataLSB":"0x4055EE11","Repeat":0}
topic: cmnd/tasmota_7F4377/IRsend
target: {}
icon: mdi:record-circle-outline
icon_height: 48px
name: Локально
show_name: false
- type: button
tap_action:
action: call-service
service: mqtt.publish
service_data:
payload: >-
{"Protocol":"NEC","Bits":32,"Data":"0x2AA9966","DataLSB":"0x40559966","Repeat":0}
topic: cmnd/tasmota_7F4377/IRsend
target: {}
icon: mdi:aspect-ratio
icon_height: 48px
name: Контур
show_name: false
При копировании не забывайте менять имя топика tasmota_ХХХХХХ на ваш уникальный!
При написании автоматизаций, выполняющих управление какими-либо устройствами по ИК в пункт „Действие“ вписывается аналогичная пара Topic + Payload.
Например: автоматизация отслеживает уход из дома (BLE сканер фиксирует недоступность смартфона или браслета Miband) и через 5 мин отключает все освещение и кондиционер:
На этом все, спасибо за внимание.
С кондишенами и другими аппаратами шлюз дружит. Есть режим обучения: сканирование и распознавание родных пультов, для этого там установлен модуль ИК приемника.
Тут главное чтобы совпадали тип модуляции в посылках 38КГц.
То есть прям табличку: кнопка(действие) — код кнопки.
Очень много устройств имеют идентичные системы команд.
Посылка кода из консоли из MQTT брокера mosquito (json формат):
И там и там — подгружаемые базы пультов.
Пульт от xiaomi точно не работает с алисой, с гуглом не знаю.
Тут был обзор на самоделку с esp, nrf и zigbee модулем, с заказом несущей платы у китайцев.
Но мне проще купить за 500р и перешить.
Кстати в магазине такой пульт от Xiaomi или яндекса стоит в районе 1400руб.
Завтра могу выложить если надо.
При считывании я тупанул и не поправил в скрипте размер: после ESP8285 остался параметр -s0x100000, то бишь 1Мб.
Глянул winhex — вроде размер оригинальной прошивки меньше 512КБ, пробуй.
Там циклический ребут?
Gpio13 на 5-7 сек на землю сажал?
А текстом выделить?
DIO режим прошивки не пробовал?
Люди добрые, подскажите, существует ли прибор — «репитер IR»?Что должен делать — что по IR пришло, то продублировать на выходе также по IR. Смысл — околотелевизионная техника в закрытом шкафу, наружу торчит только хвостик-приёмник сигнала, передач ИК внутри дублирует все принимаемые сигналы на всю технику, которая там.
Я даун. Всё нашёл именно по словам IR repeater, хотя пробовал раньше искать по разным словам, не выходило :)
Есть проект wifi-iot, там есть поддержка пультов с самообучением. Но насколько помню этот модуль активируется платной pro лицензией (100р).
Если со стороны облачного сервиса Tuya нет привязки по уникальным id самого чипа — то все сработает. Но один раз ;)
По информации в сети уникальный id вшит в самой прошивке.
В случае с одновременным включением/выключением аппаратуры запускаются серии команд: для каждого устройства.
Пример показать не могу тк есть только телек.
В официальных приложениях тоже есть такая фишка, называется 'сценарии'.
По идее да, так и должно быть — esp выступает декодером ИК посылок выдавая hex коды нажатой кнопки.
Потом эти коды используются для автоматизации в Homeassistant, пересылаясь обратно на шлюз.
Да. Сразу после прошивки на Tasmota коробочка поднимает свою точку доступа 'tasmota-хххх' с веб страницей по адресу 192.168.4.1
Там настраиваются 1 или 2 подключения к домашним wifi сетям, после перезагрузки надо зайти на ip который выдал шлюзу домашний роутер, и там уже будут доступны все разделы настроек (их больше десятка).
Питание 3,3в он выдает.
Подпаял UART-USB от FTDI — программы не видят подключение, Но! при подключении этого адаптера и ресета — стартует родная прошивка, шайба в строю. Замкнул RX модуля на питание через 5КОм, работает.
Ладно, отпаял экран модуля, достал программатор (RT809F) и не выпаивая флеш-чип (25Q16, 2Mb) прищепкой считываю родную прошивку и заливаю тасмота-ir. Работает.
Спасибо за статью и комменты.
https://aliexpress.ru/item/item/4000303107953.html
из обзора 650, хяоми 850, и что сильно важнее — без «признака ширпотреба» — глянца. Или это тот самый «новый», который не умеет в кондеи? Как искать тогда которые умеют?
ещё есть https://aliexpress.ru/item/item/4000348313259.html, тут вообще 400р, но чуть отличается.
и даже такое https://aliexpress.ru/item/item/4000089221603.html, тут вообще 260, и кондеи заявлены в описании… В картинках — рулится через tuya app
Доставка и рейтинг продавцов все убивает.
Два последних лота цена для Рф, но нет доставки из Рф в Рф
о_О
Доставка: 5 836,87 руб.
В Russian Federation через Seller's Shipping Method — RU
Поржал.
Насчёт кнопки точно не уверен, наверное долгое нажатие вызывает сброс. Не пользовался ей.
Или сразу tasmota-ircustom?
Перепрошить можно, с полным стиранием флешки, хуже не будет.
А можно чуть подробнее про прошивку.
Начал что попроще — Тасмотизер — получил тоже поведение, что у вас в статье.
Скачал flash_download_tool_v3.8.5, и вот с ней не совсем понял, удалась прошивка или нет.
Зеленая полоска доходит до конца — и тишина.
Если можно — то по шагам, как и что…
И где кстати blank брать?
И еще на попытку эрейза — ругалось
DIO выбран?
Бланк сейчас не нужен вообщем то, кнопка стирания добавлена.
И еще у тасмоты в релизах от 8.3 кажется добавлена автоматическая перезагрузка и сброс через минуту если gpio 1 висит в воздухе, там надо успеть ввести две команды в консоли.
По итогу получается, что заходит в цикл неполного получения адреса по дхцп. Но перезагрузка роутера помогла, точнее помогает на один раз, следующий — надо снова.
Перевёл на статику, и все ок. Спасибо за статью
После прошивки модуль esp запускается в режиме точки доступа, ты к ней подключаешься, конфигуришь настройки своей вайфай точки доступа, сохраняешь настройки.
ESP уходит в перезагрузку получает от роутера IP адрес и становится доступна для дальнейшей настройки.
Но в последние сборки включили по умолчанию функцию сброса на заводские настройки и навесили ее на GPIO1 емнип.
Получается следующее: через минуту после подключения к роутеру таймаут истекает и происходит сброс, модуль опять поднимает в эфире свою точку доступа.
Для отключения этой фичи надо при первом подключении через роутер быстро зайти на модуль и в консоли выполнить две команды:
Setoption1 1
Setoption13 1
DHCPDISCOVER,
DHCPOFFER,
Перегрузка роутера дала возможность его завершить, и дальше все было ок
С родной прошивкой и родным приложением всё понятно — добавляешь новое устройство (телевизор, медиаплеер и т.д.), выбираешь марку и модель, пробуешь, чтобы заработало. Если не работает, то вручную запоминаешь коды родного пульта и назначаешь их на экранные кнопки, изображающие пульт в приложении. Правда, жалко, что нельзя посмотреть и скопировать куда-нибудь эти самые коды.
А с Тасмотой как? Где интерфейс, который «изобразит» пульт с кнопками? Как обучить кнопку, отсутствующую в преднастройках? Неужели всё только через скрипты или REST-запросы? Ведь только у одного «среднестатистического» пульта порядка четырёх десятков кнопок. А если надо настроить два-три устройства (например, телевизор, абонентскую приставку и усилитель)? Не запутаемся во всех этих скриптах, не погрязнем в этой путанице?
В сети есть готовые базы кодов к пультам устройств, можно использовать их. Но мне проще было считать коды на вкладке Console: направил пульт на шлюз и нажимаю те кнопки которые в последствии будут нужны. Тасмота расшифрует и покажет код кнопки в json. И прямо эту же строку можно использовать как payload для управления.
Ко всему прочему, при интеграции в Home Assistant (хоть нативной, хоть через MQTT — зависит от параметра SetOption19) никакого «объекта», с которым можно было бы работать, не появится. Весь прием и отправка кодов — только через написанный ручками код в configuration.yaml.
Получается, действительно, что перешитый под Тасмоту пульт можно будет использовать чисто технически, в какой-либо автоматизации, для отработкии двух-трех команд. А про интерактивное управление через пульт можно забыть, ибо практически невозможно создать в Home Assistant'е интерфейс, через который было бы удобно «нажимать кнопки».
Ко всему прочему сюда добавится еще и проблема с задержкой выполнения, ибо сначала вы отправите команду на MQTT-брокер, а потом пульт будет ее оттуда читать и интерпретировать, а на это уходит время.
В-общем, какая-то мутная затея с неясными целями под лозунгом «перешьем в Тасмоту всё, что
шевелитсяимеет ESP-чип».Не надо создавать виртуальные дубликаты всех пультов в НА, это не наш метод :)
К примеру для управления ТВ (ресивером, медиаплеером) удобнее использовать голосовое управление или контроллеры типа кубика с базовыми командами (On+Off, Next+Prev, Mute-Pause, Vol+Vol-).
Для управления кондиционером например используется виртуальный переключатель сценариев On-Off-Auto где в автоматизации учитывается ряд условий: открыты ли окна, есть ли кто дома, температура и влажность в помещении, время суток.
Сработка кнопок практически мгновенная, брокер как правило докер-контейнер на том же хосте что и HA. Отправка на ИК шлюз идет сразу пакетом команд:
tap_action:
action: call-service
service: mqtt.publish
service_data:
topic: cmnd/tasmota_7F4377/IRsend
payload: >-
{«Protocol»:«COOLIX»,«Bits»:24,«Data»:«0xB29F70»,«DataLSB»:«0x4DF90E»,«Repeat»:0,«IRHVAC»:{«Vendor»:«COOLIX»,«Model»:-1,«Mode»:«Cool»,«Power»:«On»,«Celsius»:«On»,«Temp»:22,«FanSpeed»:«Min»,«SwingV»:«Off»,«SwingH»:«Off»,«Quiet»:«Off»,«Turbo»:«Off»,«Econo»:«Off»,«Light»:«Off»,«Filter»:«Off»,«Clean»:«Off»,«Beep»:«Off»,«Sleep»:-1}}
target: {}
icon: mdi:hvac
icon_height: 48px
show_name: true
name: Старт
Писать ручками код в configuration.yaml не требуется, payload скопирован в конструктор для «кнопок».
В-общем, это тот случай, когда мы достаточно мощное и универсальное устройство используем на ноль целых, фиг десятых заложенного в него функционала. Вы же не станете покупать самосвал КамАЗ ради того, чтобы отвезти на дачу кошку, а обратно прихватить пару трехлитровых банок с вареньем.
Согласитесь — зачем покупать относительно дорогой универсальный пульт для реализации двух-трех команд? Не проще ли (и не дешевле ли) купить какой-нибудь ESP01 рублей за 80 и припаять к нему копеечный ИК-передатчик? Засунуть все это в миниатюрную коробочку и повесить рядом с кондиционером. И… вперёд и с песнями.
Ой, не смешите. Голосовое управление — это только в фильмах про Железного человека. На практике же хоть Алиса, хоть Гугл в 60% процентах тебя не понимают. К тому же я не представляю, с какой громкостью нужно орать команду, чтобы перекричать работающий телевизор или медиаплеер.
А для ресивера, пылесоса, вентилятора — отдельные ESP01?
Две такие шайбы в 2х комнатах, благодаря круговой диаграмме «простреливают» всю площадь, можно перекрывать прямую видимость своей тушкой — пробьет через потолок.
Голосовое управление у меня активировано но выключено — кубиками управлять намного проще и интуитивнее, не требуется онлайн.
Например, сейчас у меня на столе лежит NodeMCU с воткнутым ИК-приемником VS1838B — причём, без всяких дополнительных резисторов, конденсаторов и прочего — просто масса на массу, VCC на 3.3 вольта, сигнал на GPIO0. И прошивка стоит «Tasmota-IR». И я точно так же могу считывать и видеть в консоли принятые коды пультов. Стоп-стоп-стоп! Вы же не далее, как вчера говорили, что пульт, перешитый «Тасмотой», не надо использовать для универсального управления. Что, типа, «Тасмота» нужна лишь для отработки буквально нескольких команд типа «включить-выключить». А теперь получается, что у вас там «зашиты» пульты и от ресивера, и от пылесоса, и от вентилятора. И уж точно вы по отношению к ресиверу не ораничиваетесь командами «вкл-выкл» — наверняка и громкость регулируете, и звуковые сцены меняете, и еще что-нибудь. И если прикинуть, то список команд, которые нужно хранить в Хоум-Ассистенте для того, чтобы в нужный момент отправить их на MQTT, набирается весьма приличный. :-)
P.S. На самом деле проблема решалась бы, если бы существовала полноценная интеграция Tuya для Home Assistant'а. Тогда не пришлось бы перепрошивать пульт на «Тасмоту» и рукоблудничать со скриптами и копипастами. Но к великому сожалению, на текущий момент интеграция Tuya поддерживает практически все виды устройств, кроме… ИК-пультов. Облом-с!
По поводу пультов читаем внимательно: я писал не надо создавать дашборды с полными клонами реальных пультов. Выбрал самые ходовые и забиндил на кнопки и контроллер. И да — у меня пульт пылесоса имеет 5 кнопок, кондишен две, всего пультов пять (пока), портировано команд с них от 2 до 9.
Возможно интеграция туи не поддерживает пульты так как надо где-то локально держать туеву хучу кодов на тысячи вендоров и десятки протоколов обмена. Да еще и обновлять эту базу.
Но теперь ничего не понимаю, что дальше-то делать.
Ну, тыкаю кнопки на «родном» пульте, в консоли вижу считанные коды. А как эти коды в ХА увидеть? Перелопатил кучу источников — там толком никто ничего не объясняет, примеров применения не дает.
Насколько мне позволяет судить мой слабый разум, чтобы увидеть значение принятого кода в ХА, нужно (ручками) создать сенсор, где будет указано, из какого топика читать.
Но что именно должно быть прописано в YAML-файле?
Не можете дать примерчик, как это реализовано у вас?
Ну и соответственно, второй вопрос — обратная задача. Как публиковать на MQTT коды сигналов, которые будет «испускать» этот девайс? Тоже желательно на примере.
Благодарность моя не будет иметь границ (в разумных пределах).
Дополнил обзор блоком интеграции с Homeassistant и примерами как собирать коды с пультов и как их применять «в обратную сторону».
Смысл такой: нажимаем кнопку на пульте. Наш универсальный перепрошитый пульт сохраняет считанный код в MQTT-брокере. Мы его получаем в ХА как значение сенсора, ну а дальше уже запускаем через автоматизацию какое-то действие, основанное на значении этого сенсора — например, включить свет в комнате (при условии, что свет включается через какое-нибудь умное реле типа Sonoff, прошитое всё той же Тасмотой). В итоге мы сможем с ИК-пульта управлять теми устройствами, которые в оригинале вообще не имеют ИК-управления.
P.S. Я вчера ковырялся с этим делом, но у меня никак не получается создать правильный сенсор.
Мой перешитый пульт при получении сигнала создает в топике tele/tasmota_036B3D/RESULT вот такой payload (к примеру):
Я создаю в configuration.yaml вот такой сенсор:
Иду в «Панель разработчика», выбираю там свой сенсор и получаю:
И всё! Куда дальше копать, я не знаю. Может, подскажете?
В планах дополнительно прилепить на стены zigbee-контроллеры сцен на 12 действий, вот такие
Твой пример с sensor.irreceived смогу «раскурить» не раньше понедельника, т.к. шлюзы дома, а на работе спаять аналог уже не успею.
Но с моей точки зрения есть подводные камни:
1. Придется держать дополнительный пульт (-ы) и запоминать на каких кнопках что забиндено. Стикер на них не наклеить, лепить полоски с текстом над кнопками тоже не очень.
2. Нужно четко ориентировать шлюз глазком к пульту (-ам).
3. Если шлюз не один (2-3-4...), то надо под каждый создавать отдельный сенсор со своими топиками, и проверять их все, плюс следить чтобы зоны приема ИК-шлюзов не перекрывались — иначе будут двойные (тройные) сработки: одно нажатие кнопки пульта вызовет запись нескольких топиков от разных шлюзов.
Я, кстати, и сам продвинулся в этом направлении. Оказывается, ХА читает из MQTT только пэйлоуды с атрибутом «retain». Пришлось в Тасмоту послать команду «ButtonRetain 1» — и всё заработало! У меня прекрасно «на отражёнке» срабатывает. Ну, то есть, пульт надо, конечно, направлять на приемник, но так, приблизительно. Ну, вот у меня есть пульт, с которого я медиаплеером управляю (Kodi). Там есть кнопка «Запись», которой я совсем не пользуюсь, ибо ничего записывать не надо. В настройках самого Kodi на эту кнопку повешена «пустышка» — чтобы запись не включалась. Ну а в ХА прописано, что по нажатию этой кнопки выключается свет в комнате. Типа, вечером лёг в кроватку, чтобы кино посмотреть — и прямо с пульта выключил свет и перешёл к просмотру фильма. Пульт всегда под рукой, никуда вставать и тянуться не надо. Опять же, и среди ночи, если, пардон, приспичило по нужде, можно включить свет и т.д.
Теперь ХА забирает все топики с префиксами /tele /stat и тд?
Я пару дней назад впаял ESP12 в свой увлажнитель воздуха Deerma F600 (тут есть обзор на него). И у меня баг с первым опросом датчика наличия воды после включения в сеть: mqtt событие формируется в момент изменения состояния этого датчика. Вот думаю решилось бы разбором /stat
Хотелось бы отлавливать пульт от кондея, иначе его статус в HA может не соответствовать действительности…
Да и управление автоматизациями с пульта тоже хорошая тема.
Кстати я кондей через SmartIR подключил, удобнее чем отдельные кнопки создавать.
Пульт от кондея в консоли выглядит так:
06:21:48.930 MQT: tele/IR1/RESULT = {«IrReceived»:{«Protocol»:«GREE»,«Bits»:64,«Data»:«0x39097050022000E0»,«Repeat»:0,«IRHVAC»:{«Vendor»:«GREE»,«Model»:1,«Mode»:«Cool»,«Power»:«On»,«Celsius»:«On»,«Temp»:25,«FanSpeed»:«Max»,«SwingV»:«Highest»,«SwingH»:«Off»,«Quiet»:«Off»,«Turbo»:«On»,«Econo»:«Off»,«Light»:«On»,«Filter»:«Off»,«Clean»:«Off»,«Beep»:«Off»,«Sleep»:-1}}}
В текущей версии Home Assistant сменился немного формат конфига, мой сенсор выглядит так:
Т.е. имеем 2 сенсора, IrReceived и IrReceived_ac1_power
Пульт от ТВ самсунг например выдает такой набор:
10:38:20.016 MQT: tele/IR1/RESULT = {«IrReceived»:{«Protocol»:«SAMSUNG»,«Bits»:32,«Data»:«0xE0E0807F»,«DataLSB»:«0x70701FE»,«Repeat»:0}}
Полагаю {{ value_json.IrReceived.Data }} выдаст 0xE0E0807F, т.е. у каждой кнопки будет свой набор в Data и на основании этих кодов можно запускать различные сценарии.
Столкнулся с проблемой — команды не отправляются на кондиционер. IRrecv работает как положено — приёмник читает сигнал с пульта, но IRsend с тем же payload'ом не отправляются:
Я с электроникой на «Вы», поэтому пошёл топорным путём и попробовал проследить за IR через камеру и при передаче ничего не зажигается даже, то есть я могу сделать вывод, что IO неправильно выбраны в Tasmota. В то же время я пробовал устанавливать IRsend по очереди в разные GPIO, но результат тот же. До прошивки всё работало.
Любой совет, куда смотреть, будет бесценным.
// АП
Ясно… Как всегда — спросил и сразу нашёл ответ. В итоге проблема оказалась в отправке не тех данных. Для кондиционера, оказалось, что нужно отправлять не через IRsend, а через IRhvac:
Я кстати обновил через ОТА на прошивку tasmota-ir 9.5, все работает нормально.
У меня чуть другой модуль с фишками:
Ик приемник
Ик излучатель
Rc433
Rc315
Ну и сама есп
И Гребёнка в моей выведена
А также же переключатель непонятный, скорее всего режим usb -uart
Данного вида пульт можно много где купить в РФ, в частности в том же dns есть hiper iot ir2. На данный момент ценник 899 рублей. ТОт же Яндекс YNDX-0006 стоит там же 999 рублей. Это считай тоже устройство с небольшими аппаратными изменениями ни на что не влияющие кроме скорее всего даты выпуска.
Распиновка TYWE3S (если вдруг кто решит проверить) тут на картинке изображена зеркально (т.е. модуль перевернут).
Прошивать устройство надо в итоге последним tasmota-ir. Если прошить базовой версией, то коды почти ни от чего не расшифровываются, прилетает только хэш.
Если кто будет прошивать uart модулем, то питания с него естественно не хватит. Надо подать внешнее питание с USB перед этим замкнув gpio0 на землю. Т.е. подключаем uart к модулю и ПК, жмем старт, замыкаем gpio0 на землю и подаем питание на устройство. Почти сразу начнется прошивка и gpio0 можно разомкнуть.
По поводу HA. Сплиты и кондеры через IRSend не отправляет. Ругается сама tasmota. А через IRhvac все прекрасно работает. Единственное надо прошивать именно что последнюю tasmota-ir, тогда с великой веростностью без проблем пакетик с родного пульта будет расшифрован.
Вот бы кто собрал вместе tasmota-ir и tasmota-sensors. А то выходит что надо держать 2 устройства только для сплита.
У меня увлажнитель воздуха так собран, метеостанция с сигналкой на дачу.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.