Статья

Пособие по полноценному прокидыванию любого TV в Homekit через Node-Red

Установка нужной версии плагина:

Для полного прокидывания ТВ со всеми фишками и максимально полным управлением, нам понадобится плагин node-red-contrib-homekit-bridged dev ветки последней версии (на момент написания статьи у меня установлена версия 1.0.0-dev.9). 

Чтобы ее установить, необходимо подключиться по ssh и ввести следующие команды:

cd ~/.node-red/ npm install --save NRCHKB/node-red-contrib-homekit-bridged#dev

Как только установка закончится, необходимо перезагрузить node-red, всё в том же терминале вводим:

node-red-restart

Далее приступим к настраиванию так называемых выходов у нашего телевизора. Выходами или input's называются вот эти переключатели, расположенные под кнопкой включения/выключения тв, которые мы сможем настроить на исполнение любых Ваших заурядных и не очень фантазий. В Хомките они сортируются автоматически в алфавитном порядке, поэтому последовательность нас не волнует. Ниже покажу, как это сделать.

Ниже показан пример флоу на 16 таких Input's, и таких может быть столько, сколько Вам необходимо.

Далее разберем по порядку, что внутри каждой ноды.

1. Синяя нода - Inject, подает параметры при каждом старте Node-Red, Payload можно задать любой, главное поставить галочку в графе "Inject once after... seconds" время выбираем любое, но советую не менее 1,5 секунд.

2. Розовая нода - Function, Name - любое, нужно исключительно для удобства, а вот что внутри самой функции: msg.payload = { "IsConfigured" : 1, "Identifier": 1, "ConfiguredName": "HDMI", "InputSourceType": 3 }; return msg;

Как мы видим на скриншоте выше, их 16 штук, в каждой из них является неизменным -"IsConfigured" : 1 и "InputSourceType": 3. Остальные два параметра меняем: "Identifier" не должен повторяться и просто повышаться на единицу, то есть "Identifier" : 1, "Identifier" : 2, "Identifier" : 3, "Identifier" : 4, и.т.д. "ConfiguredName" - это и есть имя input'а, создаем любое и ровно так оно будет отображаться в хомките.

3. Оранжевая нода - Homekit-нода, внутри нее все просто, выставляем как на скриншоте, задав имя, такое же, как в "ConfiguredName" соответствующей ноде Function и выставив Parent Service - Ваш уже созданный в хомките TV.

Нам нужно к той же инжект ноде добавить еще одну цепочку из Function, Homekit-ноды, двух свитчей и двух исполнителей. В моем случае - это плагин для тв самсунг, который подаёт команду на повышение/понижения громкости.

Внутри Volume Selector:

msg.payload = {"VolumeSelector": true,    "VolumeControlType": 1,};return msg;

Внутри хомкит ноды.

Первый свитч.

Второй свитч.

= 0 соответсвует нажатию верхней боковой кнопки громкости на айфоне,

= 1 соответсвует нажатию нижней боковой кнопки громкости на айфоне и уже на выходы из этой ноды подаем нужное нам действие.

Выделенные свитчи отвечают за input'ы и их значение равно заданным Вами ранее в функциях "Identifier".
Выделенный свитч (цепляется к нижнему выходу!) отвечает за ивенты нажатия кнопок пульта из пунка управления: 4 - Стрелка вверх, 5 - стрелка вниз, 6 - влево, 7 - вправо, 8 - ok, 9 - назад, 11 - PlayPause, 15 - Info.

Выделенные ноды: 1 свитч - проверка от зацикливания, 2 свитч - полученные из хомкита вкл/выкл.

1 свитч.

2 свитч.

=1 - вкл,

=0 - выкл.

Выделенный свитч (цепляется к нижнему выходу!): отвечает за кнопку настройки телевизора внутри настроек тв в хомките.

Внутри свитча.

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

Внутри свитча 1 и 0, разница только Active:1 и Active:0

Внутри ноды rbe.

Также добавил готовое флоу во фрагменты кода.

На этом всё, надеюсь, было полезно и удачного пользования тебе, читатель)

Если возникнут вопросы, пишите в комментарии или в личку в телеграм @daddvok, поможем.


Для далекого от node-red, неясно, насколько «любой» телевизор можно прокинуть. Телевизор должен обладать смарт функционалом или достаточно наличия у него возможности подключения к интернету через Ethernet?

Для любого телека, который каким-либо способом можно управлять через нодред. При наличии, например, Broadlink RM можно управлять вообще любым телеком

Да ну? А вот Филипс 14 года говорит об обратном. 

в нем нет ик-приемника?

Вместо него ambilight 

Вместо него ambilight

отличная статья спасибо большое! единственный момент я так и не понял как подвязать сюда бродлинк, у вас случайно нету флоу с таким примером? куда прикручивать функции или параметрами с кодами ИК пульта?

К свитчам с выходами  просто цепляешь функцию с твоим кодом и бродлинк ноду. 

окей спасибо буду пробовать

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

Абсолютно всё то же самое будет, только управляющие ноды - ноды универсального ик-пульта

Все отлично, я делал аналогичное, но лично у меня есть офигенная проблема )

Нет ТВ с каналами как такового, это просто по факту очень большой монитор для плойки и яблотв (кинопаб в основном). Оба девайса прекрасно включают и выключают телевизор, звук регулируется на внешнем саундбаре через RF (отдельный пульт, его дублирует пульт яблотв). Соответственно ничего кроме мелкого пульта от яблотв я не использую, в родном пульте от телека давно села батарейка и он еще в заводской упаковке.

Ни одного сценария для включения ТВ в систему умного дома придумать не могу совершенно. Штор нет, автоматизаций с освещением не хочу ) Есть идеи?

Жить и радоваться без лишней иконки в хомките)

Тогда у вас по умолчанию Apple TV прокинут в дом. Зачем вам еще какие-то надстройки?

А как подцепить ТВ, который на Android TV 9 и пульт от него на блютуз? Хочу им управлять только вкл/выкл и кнопки навигации по меню Android TV. Телевидение на нем не смотрю вообще.

Искать как управлять вашим тв из нодреда и тогда уже получится прокинуть в хомкит

ок, спасибо, попробую. А мануал выше использовался с каким интерфейсом управления ТВ?

Мануал выше показывает как создать тв, выходы и пульт к нему в хомките, а цеплять к пульту и выходам уже можно что угодно, будь то посылание команд по ИК через бродлинк или плагины для lg webos, samsung итд. Я лично для управления тв использую плагин для самсунга и им управляется 3 тв разных годов. 

ADB можно использовать

Если ТВ добавлен в Home Assistant, то прямо через добавленную сущность можно к нему команды отправлять

Спасибо за описание, особенно за управление громкостью. Я «прикручивал» свой ТВ еще летом на предыдущей версии ноды homebridge и тогда вроде как громкость из родного пульта управлять не было возможности. 
подскажите, а у Вас работает двойное нажатие одной и той же кнопки на пульте? К примеру поднять громкость на несколько делений или навигационными кнопками несколько раз пройтись в одном направлении? У меня нода не пропускает одинаковые команды подряд. 

Рад стараться)

Да, работает, проверьте версию плагина, чтоб была 1.0.0-dev.9 и свитч от пульта был прицеплен к нижнему выходу хомкит ноды

Вчера первая версия вышла из беты. Так что теперь проблем быть не должно. 

Мы создавали homekit ноду, потом inject ноду упустил момент на каком месте и каким образом они связаны?

Вопросик появился, почему на пульте второй раз подряд одна и таже кнопка не нажимается?

Прицеплен свитч не к нижнему выходу хк ноды наверное

к нижнему. я имею ввиду если надо влево два раз нажать, то не получится. надо влево ,потом вниз, потом влево, потом вверх и попадешь в нужную точку

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

Да , не внимательно прочитал.

Возможно перезалить флоу, если данная инструкция актуальна для 2023)
Да
Все еще актуально и ничего не изменилось по своей сути
Только сейчас уже использую версию node-red-contrib-homekit-bridged 1.4.3

Вернуться назад
Вернуться назад