С появлением телевизора и желания попробовать Node-RED автоматизацию в своём доме. Написал простую обертку для Samsung TV API. Приложение получилось в двух частях. Первая это библиотека для общения с телевизором. На данный момент работает со всеми моделями старше 2016 года:

Toxblh/samsung-tv-control
📺 Remote control your TV via JS! Contribute to Toxblh/samsung-tv-control development by creating an account on GitHub.

Скачать можно в библиотеке плагинов Node-RED:

node-red-contrib-samsung-tv-control
Node-Red plugin for samsung tv control

Исходный код:

Toxblh/node-red-contrib-samsung-tv-control
node-red plugin for samsung tv control. Contribute to Toxblh/node-red-contrib-samsung-tv-control development by creating an account on GitHub.

О плагине

Позволяет управлять телевизорами Samsung 2016 года и новее.

Для 2016 нужно выбрать модель в настройках!

Основные действия:
- Получение токена;
- Проверка на активность*;
- Включение из сна;
- Нажатие кнопок;
- Открытие приложений, и так же получения списка приложений

*Проверка на активность позволяет понять, что телевизор готов принимать команды, а не его состояние. Будьте внимательны isAlive может вернуть положительный статус, но телевизор при этом будет с выключенным экраном.

Установка

Найти в Manage palette:
1. Меню;
2. Manage Palette;
3. Вкладка Install;
4. Найти node-red-contrib-samsung-tv-control


Или запустить в директории Node-RED

npm install node-red-contrib-samsung-tv-control

Настройка

Для того чтобы плагин заработал, нужно получить токен.
Для этого можете скопировать цепочку ниже:
Меню -> Import -> Кнопка Import

[{"id":"da13d74f.5e6588","type":"samsung-tv-token","z":"7f3d456d.ed17fc","device":"92aa1c11.d2cd4","name":"","x":370,"y":160,"wires":[["d2c59f8e.db88"]]},{"id":"d2c59f8e.db88","type":"debug","z":"7f3d456d.ed17fc","name":"Токен","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":570,"y":160,"wires":[]},{"id":"5f87e2b3.41a46c","type":"inject","z":"7f3d456d.ed17fc","name":"","topic":"","payload":"Получить токен","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":160,"y":160,"wires":[["da13d74f.5e6588"]]},{"id":"92aa1c11.d2cd4","type":"samsung-tv","z":"","name":"Любое имя","ip":"IP телевизора","mac":"MAC адрес телевизора","token":""}]

Далее перейти в настройки зеленой ноды "Samsung TV Get Token", рядом с Device справа, нажать на кнопку с карандашом

В форме введите:
Name: Название телевизора, какое хотите, например "Телевизор в гостиной"
IP: IP адрес телевизора, можете посмотреть в роутере
MAC address: MAC адрес телевизора, можете так посмотреть в роутере, он нужен для только команды turnOn. Так как работает через Wake-on-Lan (по wifi тоже работает)
Token: оставляем пустым пока что.

После редактирования, сделайте Deploy изменений, и включите телевизор с пульта.

Дальше откройте debug панель и выполните один раз цепочку, для этого левее "Получить Токен" нажмите на маленькую кнопку.

На телевизоре будет уведомления о запросе доступа, его нужно принять и в debug вы увидите число из 8 знаков, его нужно скопировать и вставить в настройки телевизора из предыдущего пункта.

Всё настроено. Можно пользоваться.

Docker, особенности

Если вы используете docker для node-red, то контейнеру надо разрешить использовать host сеть, для работы turnon функции

Один из вариантов добавить ключ `--net=host`

Пример моих настроек:

docker run \ 
  --name=nodered \ 
  --net=host \ 
  -v /home/pi/smart-home/nodered:/data \
  --log-opt max-size=10m \
  nodered/node-red