Stupid House

Шайбу! Шайбу! Подключение и использование Xiaomi Mijia Universal IR Remote control в Home Assistant


Xiaomi Mijia Universal IR Remote control - универсальный инфракрасный контроллер, позволяет управлять различной техникой посредствам ИК-сигнала. Скажу сразу, в качестве замены обычных пультов на один универсальный это устройства не годится и покупать для этих целей его не стоит, потому что:

  • Обычный пульт тактильно намного удобнее экрана телефона, многие кнопки нажимаются интуитивно, не смотря на сам пульт
  • Может возникнуть ситуация, что устройством не получится управлять с помощью этого контроллера. Такая ситуация возникла с моим ресивером Pioneer VSX-824k, но об этом будет рассказано ниже и описано решение проблемы
  • Скорость выполнение какой-либо функции, как например увеличить звук, с обычного пульта будет быстрее, т.к. надо включить телефон, выбрать приложение и только после этого можно управлять устройствами
  • Приложение Mi Home частенько не блещет своей скоростью работы, особенно на китайских серверах

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

Подключение и использование Xiaomi Mijia Universal IR Remote control в Home Assistant

 

Подготовительные работы

В локальной сети устройство работает по протоколу miio, поэтому необходимо разжиться токеном, как это сделать подробно описано в статье Xiaomi miio получение токена для доступа к устройству.

 

Подключение Xiaomi Mijia Universal IR Remote control в Home Assistant

Что бы IR remote появился в Home Assistant в файл configuration.yaml необходимо добавить следующие строки:

remote:
  - platform: xiaomi_miio
    name: xiaomi_ir_remote
    host: <strong>IR_remote_IP_address</strong>
    token: <strong>IR_remote_Token</strong>

name - имя устройства в Home Assistant, задается произвольно

host - IP адрес устройства. В домашней сети посмотреть можно на маршрутизаторе, для надежности в настройках DHCP сервера лучше задать для устройства постоянный IP адрес.

token - Токен устройства полученный на стадии "Предварительные работы".

Проверяем конфигурацию Home Assistant Configure -> Server Controls -> Check Configuration, если всё хорошо, то перегружаем систему автоматизации Configure -> Server Controls -> Check Configuration -> Restart.

После перезагрузки в разделе Configure -> Entities должно появиться устройство.

 

xiaomi ir remote home assistant integration

 

Получение кодов команд (режим обучения)

Перед использованием Xiaomi Mijia Universal IR Remote control в сценариях и автоматизациях в конфигурационный файл необходимо прописать команды, которые будут отсылаться устройством. Для получения информации с другого пульта переводим шайбу в режим обучения, переходим Developer Tools -> Services, заполняем поля:

  • Service: xiaomi_miio.remote_learn_command
  • Entity: remote.xiaomi_miio_IP_addess

xiaomi ir remote control home assistant lean command

xiaomi_miio_IP_addess - Entity ID IR Remote control обычно представляет из себя запись xiaomi_miio_ и IP адрес устройства, вместо разделительных точек указаны символы подчеркивания. Кнопка Call Service. Направляем пульт в сторону шайбы и нажимаем кнопку, которую необходимо запомнить.

После нажатия кнопки на пульте в меню Notification отобразится полученная команда в RAW формате, копируем ее и записываем в конфигурационный файл configuration.yaml. Повторяем операцию пока не получим данные всех необходимых кнопок.

home assistant ir received command

Конфигурация IR Remote control с записанными командами будет выглядеть следующим образом:

remote:
  - platform: xiaomi_miio
    name: xiaomi_ir_remote
    host: <strong>IR_remote_IP_address</strong>
    token: <strong>IR_remote_Token</strong>
    commands:
      command_name_01:
        command:
          - raw:<strong>absdefghijklmnopqrstuvwxyz123456789890ABSDEFGHIJKLMNOPQRSTUVWXYZ</strong>:<strong>frequency</strong>
      command_name_02:
        command:
          - raw:<strong>ABSDEFGHIJKLMNOPQRSTUVWXYZ123456789890absdefghijklmnopqrstuvwxyz</strong>:<strong>frequency</strong>

ABSDEFGHIJKLMNOPQRSTUVWXYZ123456789890absdefghijklmnopqrstuvwxyz - отсылаемая команда в RAW формате.

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

Проверяем конфигурацию Home Assistant Configure -> Server Controls -> Check Configuration, если всё хорошо, то перегружаем систему автоматизации Configure -> Server Controls -> Check Configuration -> Restart.

 

Получение кодов команд из базы Xiaomi

Как оказалось, в устройстве второго поколения (Model: MJYKQ01CM), заблокировали возможность обучения от пультов кондиционеров, мотивируя это тем, что IR код сложный, но как утверждают пользователи на просторах Internet, модель первого поколения умела считывать коды пультов от кондиционера.

Похоже, что в этом есть какая-то правда, т.к. я сам столкнулся с подобным. У меня есть усилитель Pioneer A-20 и AV Receiver Pioneer VSX-824k. Пульты у обоих устройств взаимозаменяемые, но считанные коды, отправленные с Xiaomi IR Remote control на VSX-824k не принимаются, ресивер их игнорирует, возможно из-за того, что команды используют какой-то расширенный формат с контролем четности. При этом, команды одного из вариантов пультов, из базы Xiaomi, прекрасно принимаются ресивером. Что бы добраться до этих кодов придется разобрать устройство и воспользоваться устройством USB2TTL. Опять паяльник, где то я уже такое видел.

mi ir remote control home assistant интеграция

ВНИМАНИЕ! Автор статьи не несет никакой ответственности за последствия, которые могут произойти при выполнении действий, описанных в данной статье! Всё что вы делаете, вы делаете только на свой страх и риск!

Отклеиваем нижнюю резиновую противоскользящую вставку, под ней будет четыре болта, откручиваем их. Припаиваем провода к техническим контактам (GND0, TX0, RX0), подключаем шайбу к USB2TTL по схеме:

 

USB-to-TTL Mi IR Remote Control
GND GND0
RX TX0
TX RX0

 

mi ir remote get token

Подключаем USB2TTL к компьютеру, открываем программу PuTTY, выбираем тип подключения Serial, выставляем COM порт на котором подключен адаптер UART, скорость подключения 115200.

xiaomi ir remote control putty seral port connect

В меню Session -> Logging выставляем вести лог всего что выводится и указываем путь для файла лога. Нажимаем кнопку Open.

putty logging xiaomi ir universal remote control

Подаем штатное питание на устройство, через несколько секунд в PuTTy начнет отображаться информация. Token в открытом виде:

xiaomi ir remote home assistant token

На телефоне открываем Mi Home, открываем плагин пульта устройства, в моем случае это ресивер, и нажимаем необходимые нам кнопки. После нажатия управляемое устройство среагирует на отправленный сигнал и в терминале отобразится код отправленной команды. В поле Code мы видим IR код в RAW формате, в поле Freq необходимую частоту.

mi remote home assistant получение ir кода

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

Получив необходимые коды добавляем их в конфигурационный файл configuration.yaml. Конфигурация IR Remote control с добавленными командами будет выглядеть следующим образом:

remote:
  - platform: xiaomi_miio
    name: xiaomi_ir_remote
    host: 192.168.100.55
    token: <strong>IR_remote_Token</strong>
    commands:
      command_name_01:
        command:
          - raw:<strong>absdefghijklmnopqrstuvwxyz123456789890ABSDEFGHIJKLMNOPQRSTUVWXYZ</strong>
      command_name_02:
        command:
          - raw:<strong>ABSDEFGHIJKLMNOPQRSTUVWXYZ123456789890absdefghijklmnopqrstuvwxyz</strong>
      receiver_on_off:
       command:
         - raw:<strong>mk1mM1lgAhTGWTWazaWTGbTibgEeAQ01mwAZAD+APgE5zUDnwQvAH8AfwB7A48AfwB/AHYINJwCT4SngEeAR4BBTQEYgBSmsxmgkPgEeEL4QqAD+E7U5Cm0ELgKnAP8Afw6PA48A/wOPEy8ItwCPCm8BGRISnMxEcMkOJuBK4BEAbwAGU2mgOjBEkAPgUrgHqCF4BFARKAP4A/gDyBx4A/gD+BxYShgk+E6oDKgEWFNADXTSbAEk</strong>:<strong>37940</strong>

Мы добавили новую команду receiver_on_off со считанной командой в RAW формате, и в конце после двоеточия указали частоту frequency = 37940.

Проверяем конфигурацию Home Assistant Configure -> Server Controls -> Check Configuration, если всё хорошо то перегружаем систему автоматизации Configure -> Server Controls -> Check Configuration -> Restart.

 

Тестирование отправки команд Xiaomi IR Remote control

После сохранения файла configuration.yaml и перезагрузки Home Assistant переходим Developer Tools -> Services и заполняем поля:

  • Service: remote.send_command
  • Entity: remote.xiaomi_miio_IP_addess
  • command: command_name

xiaomi_miio_IP_addess - Entity ID IR Remote control обычно представляет из себя запись xiaomi_miio_ и IP адрес устройства, вместо разделительных точек указаны символы подчеркивания.

command_name - имя команды присвоенная в файле configuration.yaml.

После нажатия кнопки Call Service будет отослана прописанная в конфигурации команда и управляемое устройство должно ее выполнить.

home assistant xiaomi ir remote control send command

 

Добавление кнопок управления на панель Lovelace

По желанию на панель Lovelace можно добавить кнопки нажатием на которые шайбой будут отсылаться IR команды устройствам.

Добавляем новую карточку типа Button. В окне конфигурации карточки нажимаем Show code editor. Для примера карточка кнопки включения/отключения ящика:

type: entity-button
tap_action:
  action: call-service
  service: remote.send_command
  service_data:
    command: plasma_on_off
    entity_id: remote.xiaomi_miio_192_168_100_55
hold_action:
  action: more-info
show_icon: true
show_name: true
entity: remote.xiaomi_miio_192_168_100_55
icon: 'mdi:television-classic'
name: TV Power

home assistant button card for ir remote

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

 

Автоматизация

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

Самый простой пример использования это кубик, он же Magic cube от xiaomi/aqara. Пусть из конфигурации, описанной выше команда command_name_01 отвечает за увеличение громкости на телевизоре, а команда command_name_02 отвечает за уменьшение. Тогда поворотом кубика влево будет отсылаться команда command_name_01, а поворотом вправо команда command_name_02. Кубик у меня подключен через ZigBee2MQTT.

- id: 'mi_cube_rotate_left'
  alias: Mi Cube - Volume Down
  trigger:
  - platform: device
    domain: mqtt
    device_id: 800b2fa38e21601fccdc4f289bd49a2b
    type: action
    subtype: rotate_left
    discovery_id: 0x00158d0001148321 action_rotate_left
  condition: []
  action:
  - service: remote.send_command
    entity_id: remote.xiaomi_miio_192_168_100_55
    data:
      command: receiver_vol_minus
  mode: single
- id: 'mi_cube_rotate_right'
  alias: Mi Cube - Volume Up
  trigger:
  - platform: device
    domain: mqtt
    device_id: 800b2fa38e21601fccdc4f289bd49a2b
    type: action
    subtype: rotate_right
    discovery_id: 0x00158d0001148321 action_rotate_right
  condition: []
  action:
  - service: remote.send_command
    entity_id: remote.xiaomi_miio_192_168_100_55
    data:
      command: receiver_vol_plus
  mode: single
Автор: muxa, 21.12.2020
Войдите или зарегистрируйтесь, чтобы иметь возможность оставлять комментарии