Шайбу! Шайбу! Подключение и использование Xiaomi Mijia Universal IR Remote control в Home Assistant
Xiaomi Mijia Universal IR Remote control - универсальный инфракрасный контроллер, позволяет управлять различной техникой посредствам ИК-сигнала. Скажу сразу, в качестве замены обычных пультов на один универсальный это устройства не годится и покупать для этих целей его не стоит, потому что:
- Обычный пульт тактильно намного удобнее экрана телефона, многие кнопки нажимаются интуитивно, не смотря на сам пульт
- Может возникнуть ситуация, что устройством не получится управлять с помощью этого контроллера. Такая ситуация возникла с моим ресивером Pioneer VSX-824k, но об этом будет рассказано ниже и описано решение проблемы
- Скорость выполнение какой-либо функции, как например увеличить звук, с обычного пульта будет быстрее, т.к. надо включить телефон, выбрать приложение и только после этого можно управлять устройствами
- Приложение Mi Home частенько не блещет своей скоростью работы, особенно на китайских серверах
Данный контроллер подойдет только для использования в сценариях, когда необходимо автоматическое управление устройством через инфракрасный порт. Описанный ниже материал написан по мотивам документации 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 Mijia Universal IR Remote control в сценариях и автоматизациях в конфигурационный файл необходимо прописать команды, которые будут отсылаться устройством. Для получения информации с другого пульта переводим шайбу в режим обучения, переходим Developer Tools -> Services
, заполняем поля:
- Service: xiaomi_miio.remote_learn_command
- Entity: remote.xiaomi_miio_IP_addess
xiaomi_miio_IP_addess - Entity ID IR Remote control обычно представляет из себя запись xiaomi_miio_
и IP адрес
устройства, вместо разделительных точек указаны символы подчеркивания. Кнопка Call Service
. Направляем пульт в сторону шайбы и нажимаем кнопку, которую необходимо запомнить.
После нажатия кнопки на пульте в меню Notification отобразится полученная команда в RAW формате, копируем ее и записываем в конфигурационный файл configuration.yaml
. Повторяем операцию пока не получим данные всех необходимых кнопок.
Конфигурация 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. Опять паяльник, где то я уже такое видел.
ВНИМАНИЕ! Автор статьи не несет никакой ответственности за последствия, которые могут произойти при выполнении действий, описанных в данной статье! Всё что вы делаете, вы делаете только на свой страх и риск!
Отклеиваем нижнюю резиновую противоскользящую вставку, под ней будет четыре болта, откручиваем их. Припаиваем провода к техническим контактам (GND0, TX0, RX0), подключаем шайбу к USB2TTL по схеме:
USB-to-TTL | Mi IR Remote Control |
---|---|
GND | GND0 |
RX | TX0 |
TX | RX0 |
Подключаем USB2TTL к компьютеру, открываем программу PuTTY, выбираем тип подключения Serial
, выставляем COM
порт на котором подключен адаптер UART, скорость подключения 115200
.
В меню Session -> Logging
выставляем вести лог всего что выводится и указываем путь для файла лога. Нажимаем кнопку Open
.
Подаем штатное питание на устройство, через несколько секунд в PuTTy начнет отображаться информация. Token
в открытом виде:
На телефоне открываем Mi Home, открываем плагин пульта устройства, в моем случае это ресивер, и нажимаем необходимые нам кнопки. После нажатия управляемое устройство среагирует на отправленный сигнал и в терминале отобразится код отправленной команды. В поле Code
мы видим IR код в RAW формате, в поле Freq
необходимую частоту.
Т.к. информации отображается достаточно много, то лучше воспользоваться поиском в логе и из него копировать всю необходимую информацию.
Получив необходимые коды добавляем их в конфигурационный файл 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
будет отослана прописанная в конфигурации команда и управляемое устройство должно ее выполнить.
Добавление кнопок управления на панель 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
При огромном желании можно сделать отдельную вкладку с кнопками управления, которая будет заменять обычный пульт. Может этот пульт будет не таким красивым как в приложении 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