Записки Node-RED

Имеется система домашней автоматизации ЛеДжо (фр. ленивая джопа) на базе Node-RED и IR пульт Digma Smartcontrol IR

По случаю распродажи приобрел Digma Smartcontrol IR за 410р (1/3 от обычной цены). Digma Smartcontrol IR

Пульт исправный, через "родное" облачное приложение работает, но это облачное приложение весьма неудобно.
Вскрытие показало
Digma Smartcontrol IR. вскрытие
что в основе устройства распространенная nas-ir03w0 на базе SoC микропроцессора ESP8266. Это даёт нам надежду на перепрограммирование.

Часть 1. Настройка пульта.

Лучшая прошивка для ESP8266 это Tasmota.. Для ИК пультов, как самодельных так и вот таких фабричного производства есть готовая прошивка tasmota-ir, включающая в себя декодер-кодер большинства распространенных протоколов ИК управления. С такой прошивкой из ESP8266/ESP32 легко сделать самодельный ИК пульт, достаточно подключить к одной PIO ноге ИК светодиод, к другой, по желанию, ИК приемник, указать где что и пульт готов. Достоинство фабричного пульта только в эстетичном корпусе

На данной плате выведены контакты: 3.3V, RST, GND, IO0, IO2, TX, RX. для прошивки потребуется USB UART2TTL (FTDI) адаптер с логическим уровнем выхода 3.3v. Соединяю контакты соответственно


IR    |  UART2TTL
3.3v <-> 3.3v
GND  <-> GND
TXD  <-> RXD
RXD  <-> TXD
подключаю, запускаю программу tasmotizer, жму прошить и.. не происходит ничего.
А всё потому, что в отличии NodeMCU есть нюанс - для переключения esp8266 в режим программирования нужно "притянуть" IO0 к GND. Добавляю временно перемычку и всё проходит успешно. Далее отключаю UART2TTL от компа. отпускаю IO0 подключаю обратно к компу. В этой-же программе жму кнопку Send config и удобно настраиваю устройство - к какой WIFI сети оно должно подключаться, пароль сети, адрес MQTT брокера (кончно это можно сделать подключившись к создаваемой ESP временной wifi сети, но с компьютера удобнее).
Базовая настройка завершена. ESP перезапускается, через 5-7 секунд можно нажать кнопку Get IP и узнать какой IP получило устройство (если удобнее, можно заглянуть в админку роутера).

Дальнейшая настройка через web. По полученному IP адресу открываем страничку в браузере, Configuration -> Module - выбрать ТИП "Generic 18". нажаимаем "сохранить". Устройство перезагрузится за 3-4 секунды.
Снова открываем Configuration -> Module - указываем что куда подключено. Для пульта Digma Smartcontrol IR вот так -
TASMOTA-IR configuration module
для самодельного указать свою конфигурацию. Нажать "сохранить", устройство снова перезагрузится.
В приципе на этом настройка завершена.
Но у меня "всплыл" нюанс. По непонятной причине устройство создало и подписалось на некорректные топики MQTT, отличающиеся от.топиков создаваемых всеми остальными моими tasmota устройствами. Некрасивенько (с) Пришлось прописать вручную, привести к единообразному привычному виду.
TASMOTA-IR configuration mqtt
Судя по тому, что достаточным оказалось явно прописать макросы (выделить мышкой и скопипастить), дело в каком-то отличии этой платы от NodeMCU.
Для особой красоты рекомендую в консоли (главная страница -> Console) дать команду

Timezone +3:00

Вот теперь настройка устройства точно завершена.

Часть 2. Настройка NodeRed

Настройка NodeRED заключается в написании не сложного flow, выполняющего две функции - передачу команд и прием.
Начнем с приема. Когда в приемник прилетает любая послыка с любого пульта, приемник её дешифрирует в понятный вид, немедленно показывает результат в консоли и отправляет в MQTT топик ("tele/tasmota_74BF63/RESULT"), откуда мы можем прочитать в NodeRED и выполнить какое-то действие, сохранить в файл или запустить событие.
Добавляю узел "MQTT in"
NodeRED mqtt in configuration TASMOTA IR
Создаю простенький flow с выводом принятых команд в dbug консоль и записью в файл узлом write file.
NodeRED flow TASMOTA IR
Теперь можно взять пульт, понажимать кнопки, убедится что это работает и записывать в файл команды отправляемые пультом для последующего использования. Забавно, иногда прилетает что-то неопознанное, это тоже попадает к нам.


22:31:15.861 MQT: tele/tasmota_74BF63/RESULT = {"IrReceived":{"Protocol":"UNKNOWN","Bits":35,"Hash":"0x4EFB70A3","Repeat":0}}
(вывод console, онлайн лог самой Tasmota)

{"IrReceived":{"Protocol":"UNKNOWN","Bits":35,"Hash":"0x4EFB70A3","Repeat":0}}
{"IrReceived":{"Protocol":"NEC","Bits":32,"Data":"0x2FD48B7","DataLSB":"0x40BF12ED","Repeat":0}}
Debug console NodeRED.
Прием команд работает.

Отправка команд. Управление бытовой техникой.
Таким образом можно управлять любой техникой у которой есть ИК пульт: телевизор, сплит кондиционер, робот пылесос, RGB подсветка и прочее. Для начала скопируем пульт от ТВ, последовательно нажимая на нем все кнопки запишем их в файл.
Пример: Вкл, Откл (еще раз Вкл), mute, 1, 2, 3, 4, 5, 6...


{"IrReceived":{"Protocol":"NEC","Bits":32,"Data":"0x2FD48B7","DataLSB":"0x40BF12ED","Repeat":0}}
{"IrReceived":{"Protocol":"NEC","Bits":32,"Data":"0x2FD48B7","DataLSB":"0x40BF12ED","Repeat":0}}
{"IrReceived":{"Protocol":"NEC","Bits":32,"Data":"0x2FD08F7","DataLSB":"0x40BF10EF","Repeat":0}}
{"IrReceived":{"Protocol":"NEC","Bits":32,"Data":"0x2FD807F","DataLSB":"0x40BF01FE","Repeat":0}}
{"IrReceived":{"Protocol":"NEC","Bits":32,"Data":"0x2FD40BF","DataLSB":"0x40BF02FD","Repeat":0}}
{"IrReceived":{"Protocol":"NEC","Bits":32,"Data":"0x2FDC03F","DataLSB":"0x40BF03FC","Repeat":0}}
{"IrReceived":{"Protocol":"NEC","Bits":32,"Data":"0x2FD20DF","DataLSB":"0x40BF04FB","Repeat":0}}
{"IrReceived":{"Protocol":"NEC","Bits":32,"Data":"0x2FDA05F","DataLSB":"0x40BF05FA","Repeat":0}}
{"IrReceived":{"Protocol":"NEC","Bits":32,"Data":"0x2FD609F","DataLSB":"0x40BF06F9","Repeat":0}}
Для отправки используем узел "MQTT out", настраиваем И тут были еще нюансы. В документации не совсем прозрачно прописано, как отправлять команды. В отличии от автоматически создаваемых топиков discover и tele, которые после этого видны в mqtt explorer, про топик и формат команд управления написано малопонятно. Правильно топик выглядит так: "cmnd/tasmota_74BF63/IrSend".
NodeRED mqtt in configuration TASMOTA IR
А команда берется из принятой с пульта. Например кнопка "Вкл" пульта телевизора. Получили это:

{"IrReceived":{"Protocol":"NEC","Bits":32,"Data":"0x2FD48B7","DataLSB":"0x40BF12ED","Repeat":0}}
отправить в MQTT топик нужно это:

{"Protocol":"NEC","Bits":32,"Data":"0x2FD48B7","DataLSB":"0x40BF12ED","Repeat":0}
получив такую команду кодер в прошивке Tasmota-ir сам преобразует в необходимую последовательность и отправит через ИК светодиод.
Добавляем узел "Button" (node-red-dashboard) с такой конфигурацией
NodeRED send button
и пульт на одну команду готов. :)
Но, конечно, одной команды для управления телевизором маловато. Накидываем все кнопки, (можно только те которыми пользуемся).
NodeRED IR tv control dashboard
NodeRED IR tv control flow

Файл с кодом потока nodered-tasmota-ir-flows.json Скачать без регистрации, бесплатно без СМС.

(c) 2025