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