У себя в закрома нашел давно валяющиеся без дела умный пульт от Яндекса YNDX-0006, решил его задействовать в умном доме. Это устройство работает через WIFI и облако, я стараюсь не использовать устройства зависящие от облаков. Решил перепрошить его.
Первым делом подключил к компьютеру по USB, но устройство никак не определилось, тогда на тыльной стороне всячески понажимал на кнопку - безрезультатно. Решил разобрать.
Разбор
У YNDX-0006 несколько ревизий.
Пульт состоит из двух половинок на защелках, пластиковой лопаткой проходимся по периметру и располовиниваем.

Внутри нас встречает аккуратная плата с минимум элементов - основной чип это esp8266, флеш память 25q80csig, россыпь IR передатчиков, один IR приёмник и LED рядом с USB.
Детали ближе

Рядом с флеш памятью есть пятачки RX TX - можно было к ним подпаяться, но решил не мучаться с поиском и замыканием ножек (для перехода в режим прошивки), тем более, у меня в наличии есть народный программатор ch341a, им и решил шить "через прищепку".
Прошивка
Обесточиваем пульт, прищепкой цепляемся к флеш памяти (точка на микросхеме это первая нога - на прищепке это красный проводник)
Прищепка в деле

Первым делом сохраняем оригинальную прошивку, я пользовался программой NeoProgrammer - утилита определила чип (может не с первого раза, нужно осторожно переставить прищепку).

Считываем прошивку, потом нажимаем "Сравнить" и сохраняем в виде файла (если захотим вернуться на прошивку от яндекс).
Теперь необходимо сгенерить прошивку "пустышку" EspHome для нашего чипа ESP8266. Запускаем одноименной аддон в HomeAssistant и добавляем новое устройство.
Добавление нового устройства, генерация прошивки



Важно. Создать файл secrets.yaml c ssid и паролем к вашему 2.4 wifi - он будет зашит в прошивку.
Дожидаемся компиляция прошивки в формате bin
, выбираем Manual download
и скачиваем прошивку на диск. Заливаем новую прошивку программатором на пульт. Отключаем прищепку и подключаем питание через USB. Через сек 10 новое EspHome устройство должно отобразится в списке со статусом Online.

Все, устройство полностью в нашем распоряжении. Это полноценный ES8266 с одним мегабайтом флеш памяти и подпаянными IR приемником и передатчиком и светодиодом. Необходимо определить на каких пинах они сидят.
После прошивки через прищепку, остальные заливки происходят через ОТА по Wifi
Определение пинов
Выписал себе список всех GPIO esp8266, исключив оттуда UART и специфические ножки, написал мини прошивку, для считывания сигналов, отправки и миганием светодиодом. И волшебным методом перебора стал искать пины.
Тестовая прошивка для поиска GPIO
esphome:
name: yandex-ir
friendly_name: yandex IR
esp8266:
board: esp01_1m
# ИК-приёмник
remote_receiver:
pin: GPIO5 # <-сначала менял это знаение
dump: raw # Вывод всех ИК-сигналов в лог
# ИК-передатчик
remote_transmitter:
pin: GPIO14 # <-потом это знаение
carrier_duty_percent: 50% # Рабочий цикл
# Пример для отправки сигнала
button:
- platform: template
name: "Send IR Code"
on_press:
- remote_transmitter.transmit_raw:
code: [1000, -1000, 1000, -1000, 1000, -1000, 1000, -1000, 1000, -1000, 1000, -1000, 1000, -1000, 1000, -1000] # Длинный RAW-код
repeat:
times: 5 # Повторить 25 раз для заметности
wait_time: 100ms # Пауза между повторами
output:
- platform: gpio
pin: GPIO4 # <-потом это
id: led_output
interval:
- interval: 500ms
then:
- lambda: |-
static bool led_state = false;
led_state = !led_state;
if (led_state)
id(led_output).turn_on();
else
id(led_output).turn_off();
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "КОД_СГЕНЕРЕННЫЙ_ПРИ_ГЕНЕРАЦИИ_ПРОШИВКИ"
ota:
- platform: esphome
password: "КОД_СГЕНЕРЕННЫЙ_ПРИ_ГЕНЕРАЦИИ_ПРОШИВКИ"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Yandex-Ir Fallback Hotspot"
password: "КОД_СГЕНЕРЕННЫЙ_ПРИ_ГЕНЕРАЦИИ_ПРОШИВКИ"
captive_portal:
Приемник искал выводом дампа данных и направляя пульт от кондиционера и нажимая кнопки; прошивал новую версию меняя GPIO у remote_receiver - пока не поймал данные в логе, им оказался GPIO5
, для передатчика написал длинную последовательность сигналов и установил повтор и использовал камеру телефона чтобы увидеть свечение диодов, нашел передатчик это GPIO14

И самое простое было найти белый светодиод рядом с USB разъемом это GPIO4
Универсальная прошивка
Можно припаять, например, универсальный датчик влажности, температуры, давления BME280 к пинам I2C чипа, проделать отверстие и, кроме универсального пульта, получить погодную станцию для квартиры.
После этого написал универсальную прошивку для пульта (которая явно требует доработки). Я решил не использовать встроенную поддержку remote_receiver и remote_transmitter, а написал свою внешнюю компоненту для использования более универсальной библиотеки IRremoteESP8266 (в ней больше протоколов).
Получился универсальный пульт, который работает в двух режимах: по умолчанию режим отправки сырых данных через сервис HA с указанием протокола - теперь можно эмулировать (наверно) все пульты.

При переключении Learning Mode включается Led светодиод на пульте и начинает работать IR приёмник и декодированные сигналы писать в текстовый сенсор IR Decoded.

Код универсальной прошивки тут.
Нужно скопировать папку ir_controller
в /homeassistant/esphome/components
, а содержимое yandex-ir.yaml внутрь своей прошивки (yaml) с сохранением своих password
Я задействовал YNDX-0006 в этом проекте.
Комментарии (12)
otchgol
16.06.2025 10:34А оригинальная прошивка нигде не выложена?
almirus Автор
16.06.2025 10:34Нет, так как прошивка содержит ключ для подключения к API сервиса и логин пароль к wifi (открытым текстом) ¯\_(ツ)_/¯
NutsUnderline
16.06.2025 10:34яндекситы любителей прошивок называют нехорошими словами и защищаются от этого как могут
Tomasina
16.06.2025 10:34Судя по легкости манипуляций автора по перепрошивке - не очень-то они и заморачиваются.
NutsUnderline
16.06.2025 10:34есть свежее видео с php они там доклад делают про это. в более сложных устройствах защита сильнее. и главное - файлик с прошивкой вроде как не лежит на сайте разработчика в отрытом доступе, тем более - в исходниках.
автор прошил совсем другую с 0 и при помощи "лома". Ключи бы он вероятно так просто не выдернул.
ave-1310
16.06.2025 10:34Уважаемый автор, ЧЯДНТ...
Лёрнинг мод включается, команды с пульта распознаются...
А где send_ir_signal?
Нет возможности отправить командуalmirus Автор
16.06.2025 10:34HA нельзя просто так вывести сенсор для ввода данных, поэтому отправка через сервис: Панель разработчика - Действия - yandex_ir_send_ir_signal, ну и соответственно также в автоматизациях.
ave-1310
16.06.2025 10:34Огромное, человеческое спасибо!
А я пытался найти send_ir_signal через: Панель разработчика -> Состояния... ))
Я пробовал использовать встроенную поддержку remote_receiver и remote_transmitter, но там совсем скудно с поддержкой оборудования. А эта компонента на IRremoteESP8266 с ходу увидела ВСЕ пульты, которые есть у меня дома. Уверен, что теперь моим кондиционерам, телевизорам, обогревателям и пр. придется подчиняться HA.
Отличная работа, еще раз спасибо!
empenoso
16.06.2025 10:34Немного не по теме вопрос.
Одно время пытался найти устройство которое будет принимать и отправлять команды по 433 МГц для пульта шлагбаума. Такие sonoff выпускают, но там множество ревизий и с последними какая то проблема была купил, но прошить esp так и не смог, уже больше года назад пробовала потом к теме не возвращался.
Может быть кто-то знает какие устройства как базу для работы с 433 МГц?
almirus Автор
16.06.2025 10:34esp8266 + типа такого https://aliexpress.ru/item/1005007322631857.html
и все тот же EspHome где в тех же remote_receiver и remote_transmitter есть поддержка 433
sintech
А при подключении прищепки и подаче питания программатором, устройство не оживает и не пытается общаться с флеш памятью?
almirus Автор
В данном конкретном случае не оживает, но бывает, например, пытался оживить экран Lytko 103, пока не отпаял, не давал снять\залить прошивку.