Подключение AV Receiver Onkyo в Home Assistant и OpenHAB
Продолжаем интегрировать технику в систему умного дома. Я уже рассказывал про интеграцию AV ресивера Pioneer в Home Assistant, но на его место пришел ресивер Onkyo TX-NR6100 т.к. Pioneer VSX-824-k не смог раскрыть новые колонки в том объеме, который меня бы устроил. Поскольку TX-NR6100 имеет ethernet и Wi-Fi интерфейсы, то подключим его к сети и будем взаимодействовать с системами автоматизации через стандартные интеграции.
- Настройка AV Receiver Onkyo
- Подключение AV Receiver Onkyo в Home Assistant
- Панель Lovelace
- Подключение AV Receiver Onkyo в OpenHAB
- Подключение к AV Receiver Onkyo к Яндекс Алисе (Yandex Smart Home)
- Автоматизация OpenHAB
- Автоматизация Home Assistant
Настройка AV Receiver Onkyo
Подключаем ресивер к сети, проводом или по Wi-Fi, неважно (автор рекомендует подключение проводом :). В настройках ресивера в разделе Network
выбираем тип подключения Wi-Fi
:
- On - подключение по беспроводному интерфейсу
- Off (по умолчанию) - подключение проводом
При подключении к сети Wi-Fi необходимо пройти выполнить настройку в разделе Wi-Fi Setup
.
Для интеграции нам необходимо чтобы ресивер имел постоянный IP адрес. В разделе DHCP
выбираем:
- Enable (по умолчанию) - устройство получит сетевые настройки с DHCP сервера в сети
- Disable - сетевые настройки необходимо в устройстве установить самостоятельно
Если устройство получает настройки с DHCP сервера, то на сервере необходимо зарезервировать IP адрес за MAC адресом ресивера.
В настройках ресивера параметр Network Standby
необходимо установить значение On
, для того чтобы была возможность включения ресивера, когда тот находится в режиме Standby средствами автоматизации или голосом с помощью Алисы по фамилии Яндекс.
Подключение AV Receiver Onkyo в Home Assistant
Настройка подключения описана на официальном сайте Home Assistant и не должна вызывать проблем. Вносим следующие настройки в файл конфигурации Home Assistant configuration.yaml
:
media_player: - platform: onkyo host: 192.168.10.63 name: Onkyo TX-NR6100 receiver_max_volume: 200
где:
- name - произвольно понятное имя устройства в Home Assistant.
- host - IP адрес ресивера в домашней сети.
- receiver_max_volume - максимальный уровень громкости, выставляемый ресивером. Новые модели ресиверов регулируют уровень громкости от 0 до 100 с шагом 0.5, что в сумме дает 200 значений уровня, а поскольку системы автоматизации измеряют громкость в процентном соотношении, то необходимо указать какую величину уровня громкости необходимо брать за 100%.
- sources - источники входящего сигнала доступные ресиверу. Система интеграции успешно считывает их из устройства поэтому данный параметр можно опустить, если кому интересно то он может обратиться к официальной документации Home Assistant.
Сохраняем файл конфигурации и проверяем корректность внесенных изменений Developer Tools -> Check configuration, перезагружаем Home Assistant.
После перезагрузки в разделе Settings -> Devices & Services -> Entities
появится добавленное устройство.
Ресивер Onkyo TX-NR6100 умеет проигрывать в две зоны, поэтому в разделе Entities присутствует две записи ресивера отображающие каждую зону.
Принцип работы интеграции, как и с ресиверами Pioneer, для управления на порту 60128 работает telnet, через который и происходит обмен данными и управление устройством. Поэтому немного паранойи :)
ВНИМАНИЕ! Поскольку пароль на telnet не установлен, то необходимо позаботиться о том, чтобы доступ к устройству был ограничен не только из внешней сети, но и в локальной. Если есть возможность, то все устройства умного дома лучше всего вывести в отдельную подсеть с ограниченным доступом.
Панель Lovelace
Здесь всё стандартно. Виджет для панели Lovelace это стандартный Multimedia компонент и с главного экрана позволяет только включить/отключить ресивер, запустить воспроизведение/поставить на паузу контент в определенных режимах и узнать текущий источник сигнала. Список доступных режимов интеграция получает с ресивера, поэтому в конфигурационном файле их можно не перечислять.
В расширенном режиме можно выполнить:
- Включение/отключение ресивера
- Изменить или выключить (Mute) громкость устройства
- Воспроизвести/поставить на паузу контент, такой как, например интернет-радио
- Выбрать источник сигнала
В отличие от ресивера Pioneer VSX-824-k здесь уровень громкости нормально регулируется ползунком, а не только кнопками +
и -
.
Подключение AV Receiver Onkyo в OpenHAB
Настройка подключения, как и для Home Assistant, описана в документации на официальном сайте OpenHAB. Создаем Thing через файл конфигурации (папка things) и вносим в него строчку.
Thing onkyo:onkyoAVR:TXNR6100F7DA4D "Onkyo TX-NR6100" @ "Room" [ipAddress="192.168.10.63", port=60128, volumeScale=2]
здесь:
- ipAddress - IP адрес устройства
- port - telnet порт
- volumeScale - максимальный уровень громкости, выставляемый ресивером. Аналогичный параметру receiver_max_volume в Home Assistant, если кто пропустил что это такое, то читаем выше в разделе «Подключение AV Receiver Onkyo в Home Assistant»
После сохранения в разделе Settings -> Things
(для OH 3) мы должны увидеть наше устройство.
Настраиваем свойства ресивера, которыми можно управлять или получать информацию. Это четыре основных свойства:
- Включение/отключение ресивера
- Уровень громкости
- Отключение звука
- Выбор источника сигнала
Создаем конфигурационный файл Item (папка items) и описываем в нем свойства ресивера.
Group OnkyoTXNR6100 "Onkyo TX-NR6100" <receiver> (Room) ["Receiver"] Number OnkyoTXNR6100_Zone1_Input "Input Source" <text> (OnkyoTXNR6100) ["Status", "None"] { channel="onkyo:onkyoAVR:TXNR6100F7DA4D:zone1#input" } Switch OnkyoTXNR6100_Zone1_Mute "Mute" <soundvolume_mute> (OnkyoTXNR6100) ["Setpoint", "Noise"] { channel="onkyo:onkyoAVR:TXNR6100F7DA4D:zone1#mute" } Switch OnkyoTXNR6100_Zone1_Power "Power" <switch> (OnkyoTXNR6100) ["Switch", "Power"] { channel="onkyo:onkyoAVR:TXNR6100F7DA4D:zone1#power" } Dimmer OnkyoTXNR6100_Zone1_Volume "Volume" <soundvolume> (OnkyoTXNR6100) ["Setpoint", "Noise"] { channel="onkyo:onkyoAVR:TXNR6100F7DA4D:zone1#volume" }</soundvolume></switch></soundvolume_mute></text></receiver>
В свойствах устройства в разделе Channels
проверяем что свойства добавились.
Настройки Items выше описаны для зоны 1, а поскольку ресивер умеет играть на две отдельных зоны то настройки для второй зоны необходимо добавить отдельно.
Так же ресивер имеет расширенный набор свойств, подробнее посмотреть можно документации по интеграции на сайте OpenHAB.
Подключение к AV Receiver Onkyo к Яндекс Алисе (интеграция Yandex Smart Home)
Подключение ресивера можно выполнить с помощью интеграции Yandex Smart Home для Home Assistant, как настраивать описано в статье: Интеграция Home Assistant и Алисы по фамилии Яндекс.
В конфигурации интеграции Yandex Smart Home в разделе Объекты для передачи в УДЯ
добавляем Entity ресивера и сохраняем конфигурацию и перезагружаем Home Assistant.
Переходим в Умный дом Яндекс в телефоне и проверяем что ресивер появился.
Из доступных функций голосового управления: включение/отключение ресивера, регулировка громкости, переключение источников сигнала. Источники сигнала именуются по номерам (Один, два и т.д.) для смены источника сигнала надо сказать его порядковый номер.
Автоматизация OpenHAB
Схема задействования ресивера в системе умного дома следующая: при включении ресивера, автоматически включается розетка с активным сабвуфером, если выбран режим BD\DVD (на данный вход подключен медиапроигрыватель на Android) включается розетка телевизора. При отключении ресивера, розетка, к которой подключен сабвуфер отключается.
В папке Rules создаем файл с расширением .rules
и добавляем автоматизацию на включение/отключение ресивера.
rule "OnkyoTXNR6100_Zone1_Power - change" when Item OnkyoTXNR6100_Zone1_Power changed then // Включение ресивера if (OnkyoTXNR6100_Zone1_Power.state == ON) { if (xiaomi_socket_room_block_2_Power.state == OFF) { xiaomi_socket_room_block_2_Power.sendCommand(ON); } // Включение розетки сабуфера приставки if (OnkyoTXNR6100_Zone1_Input.state == 16) { // 16 - BD/DVD if (xiaomi_socket_room_tv_Power.state == OFF) { xiaomi_socket_room_tv_Power.sendCommand(ON); } // При указанном входе сигнала BD/DVD включение розетки TV } } // Отключение ресивера if (OnkyoTXNR6100_Zone1_Power.state == OFF) { if (xiaomi_socket_room_block_2_Power.state == ON) { xiaomi_socket_room_block_2_Power.sendCommand(OFF); } // Отключение сабуфера приставки } end
В автоматизации выше, розетка телевизора включается только если при включении ресивера выбран источник входного сигнала BD/DVD (код. 16). Чтобы розетка ТВ включилась при смене источника сигнала на ресивере добавим еще одну автоматизацию.
rule "OnkyoTXNR6100_Zone1_Input - change" when Item OnkyoTXNR6100_Zone1_Input changed then if (OnkyoTXNR6100_Zone1_Input.state == 16) { // 16 - BD/DVD if (OnkyoTXNR6100_Zone1_Power.state == ON) { if (xiaomi_socket_room_tv_Power.state == OFF) { xiaomi_socket_room_tv_Power.sendCommand(ON); } // При смене входа сигнала на BD/DVD включение розетки TV } } end
Читатель может спросить, включить розетку у телека это замечательно, но он будет находится в режиме Standby, как включить его?
Это отличный вопрос. Если телевизор не умеет интегрироваться в умный дом, то для его включения необходим универсальный инфракрасный пульт дистанционного управления. Такой как описан в этой статье: Шайбу! Шайбу! Подключение и использование Xiaomi Mijia Universal IR Remote control в Home Assistant.
Но у данного устройства есть одна маленькая проблема... Он не интегрируется в OpenHAB! Поэтому для включения телевизора с IR устройства придется использовать автоматизации Home Assistant. К сожалению, это так! И поэтому для автоматизации некоторых действий лучше задействовать полностью Home Assistant, либо... часть держать в одной системе автоматизации, а часть в другой. Да! Вот такая забавная вещь этот ваш умный дом :)
Автоматизация Home Assistant
Рассмотрим примеры автоматизаций для Home Assistant, те, что были рассмотрены для OpenHAB и те, которые не доступны в OH.
Автоматизация включения розетки сабвуфера для при включении ресивера.
- id: 'subwoofer_socket_turn_on' alias: Multimedia - Subwoofer turn on trigger: - platform: state entity_id: - media_player.onkyo_tx_nr6100 to: 'on' condition: [] action: - service: switch.turn_on data: {} target: entity_id: switch.xiaomi_socket_subwoofer_switch mode: single
Если при включении ресивера выбран источник сигнала BD/DVD, то включаем розетку телевизора.
- id: 'tv_socket_turn_on_1' alias: Multimedia - Turn on TV socket when Receiver on trigger: - platform: state entity_id: - media_player.onkyo_tx_nr6100 to: 'on' condition: - condition: state entity_id: media_player.onkyo_tx_nr6100 attribute: source state: Bluray action: - service: switch.turn_on data: {} target: entity_id: switch.xiaomi_socket_tv_switch mode: single
Включаем розетку телевизора при переключении источника сигнала в BD\DVD.
- id: 'receiver_bd_tv_socket_turn_on' alias: Multimedia - Receiver - Set mode BD - Turn on TV socket trigger: - platform: state entity_id: - media_player.onkyo_tx_nr6100 attribute: source to: Bluray condition: [] action: - service: switch.turn_on data: {} target: entity_id: switch.xiaomi_socket_room_tv_switch mode: single
Включаем телевизор с универсального IR пульта дистанционного управления (это та самая автоматизация, которая будет срабатывать при любом типе включения розетки: ручной, из автоматизации OH или HA).
- id: 'turn_on_tv_by_socket' alias: Multimedia - TV socket turned on - Turn on TV trigger: - platform: device device_id: 8b926f9738c608abe1fd9949e752db57 entity_id: switch.xiaomi_socket_tv_switch domain: switch type: turned_on for: hours: 0 minutes: 0 seconds: 1 condition: [] action: - service: remote.send_command command: plasma_on_off entity_id: remote.xiaomi_miio_192_168_10_51 data: {} mode: single
Следующая автоматизация отключает телевизор при выключении ресивера, срабатывание происходит, когда потребляемая мощность на розетке ресивера падает менее 15W, а состояние работы телевизора проверяем по потребляемой мощности розетки ТВ.
- id: 'tv_turn_off' alias: Multimedia - TV turn off trigger: - platform: numeric_state entity_id: sensor.xiaomi_socket_receiver_power below: '15' condition: - condition: numeric_state entity_id: sensor.xiaomi_socket_tv_power above: '10' action: - service: remote.send_command command: plasma_on_off entity_id: remote.xiaomi_miio_192_168_10_51 data: {} mode: single
Последней автоматизацией в управлении телевизором будет отключение розетки ТВ при падении потребляемой на ней мощности менее 10W.
- id: 'socket_tv_turn_off' alias: Multimedia - Socket TV turn off trigger: - platform: numeric_state entity_id: sensor.xiaomi_socket_tv_power below: '10' condition: - condition: state entity_id: switch.xiaomi_socket_room_tv_power state: 'on' action: - service: switch.turn_off entity_id: switch.xiaomi_socket_room_tv_power data: {} mode: single
В автоматизациях фигурирует устройство remote.xiaomi_miio_192_168_10_51
- это Xiaomi IR remote control, подробнее о его интеграции в Home Assistant читаем в статье: Шайбу! Шайбу! Подключение и использование Xiaomi Mijia Universal IR Remote control в Home Assistant.
Автоматизации, выполняемые при отключении ресивера, надеюсь, читатель осилит сам :)