Stupid House

Подключение 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

Подключаем ресивер к сети, проводом или по 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 появится добавленное устройство.

av receiver onkyo home assistant entities

Ресивер Onkyo TX-NR6100 умеет проигрывать в две зоны, поэтому в разделе Entities присутствует две записи ресивера отображающие каждую зону.

Принцип работы интеграции, как и с ресиверами Pioneer, для управления на порту 60128 работает telnet, через который и происходит обмен данными и управление устройством. Поэтому немного паранойи :)

ВНИМАНИЕ! Поскольку пароль на telnet не установлен, то необходимо позаботиться о том, чтобы доступ к устройству был ограничен не только из внешней сети, но и в локальной. Если есть возможность, то все устройства умного дома лучше всего вывести в отдельную подсеть с ограниченным доступом.

 

Панель Lovelace

Здесь всё стандартно. Виджет для панели Lovelace это стандартный Multimedia компонент и с главного экрана позволяет только включить/отключить ресивер, запустить воспроизведение/поставить на паузу контент в определенных режимах и узнать текущий источник сигнала. Список доступных режимов интеграция получает с ресивера, поэтому в конфигурационном файле их можно не перечислять.

av receiver onkyo home assistant lovelave

В расширенном режиме можно выполнить:

  • Включение/отключение ресивера
  • Изменить или выключить (Mute) громкость устройства
  • Воспроизвести/поставить на паузу контент, такой как, например интернет-радио
  • Выбрать источник сигнала

av receiver onkyo home assistant lovelave detail

В отличие от ресивера 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) мы должны увидеть наше устройство.

av receiver onkyo openhab things

Настраиваем свойства ресивера, которыми можно управлять или получать информацию. Это четыре основных свойства:

  • Включение/отключение ресивера
  • Уровень громкости
  • Отключение звука
  • Выбор источника сигнала

Создаем конфигурационный файл 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 проверяем что свойства добавились.

av receiver onkyo openhab items

Настройки Items выше описаны для зоны 1, а поскольку ресивер умеет играть на две отдельных зоны то настройки для второй зоны необходимо добавить отдельно.

Так же ресивер имеет расширенный набор свойств, подробнее посмотреть можно документации по интеграции на сайте OpenHAB.

 

Подключение к AV Receiver Onkyo к Яндекс Алисе (интеграция Yandex Smart Home)

Подключение ресивера можно выполнить с помощью интеграции Yandex Smart Home для Home Assistant, как настраивать описано в статье: Интеграция Home Assistant и Алисы по фамилии Яндекс.

В конфигурации интеграции Yandex Smart Home в разделе Объекты для передачи в УДЯ добавляем Entity ресивера и сохраняем конфигурацию и перезагружаем Home Assistant.

av receiver onkyo home assistant yandex smart home entity

Переходим в Умный дом Яндекс в телефоне и проверяем что ресивер появился.

av receiver onkyo yandex smart home

Из доступных функций голосового управления: включение/отключение ресивера, регулировка громкости, переключение источников сигнала. Источники сигнала именуются по номерам (Один, два и т.д.) для смены источника сигнала надо сказать его порядковый номер.

 

Автоматизация 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.

Автоматизации, выполняемые при отключении ресивера, надеюсь, читатель осилит сам :)

 

Автор: muxa, 05.07.2023
Войдите или зарегистрируйтесь, чтобы иметь возможность оставлять комментарии