Добавить wifi устройство xiaomi в home assistant

Обновлено: 05.07.2024

← Установка home-assistant и подключение Xiaomi датчиков

13 февраля 2018 — homeassistant — xiaomi home-assistant iot smart home умный дом

Последние пару лет тема домашней автоматизации и internet of things (iot) стала очень популярной, из-за чего появилось куча как программных продуктов, таких как home-assistant, majordomo и т.п., так и аппаратных решений от различных производителей (xiaomi, apple с homekit, решения от мегафона, lg). Я для себя выбрал home-assistant + xiaomi для внутренних датчиков и самодельных в будущем. В этой статье установим home-assistant на linux машину, а также добавим в него отображение информации с xiaomi gateway + температурные датчики с настройкой внешнего вида дашборда

0. Подготовка

Для начала определим, что нам необходимо. Из аппаратного обеспечения:

  1. Компьютер на linux
  2. Подключенные датчики темепратуры к xiaomi gateway и MiHome, у меня такие

1. Установка home-assistant

Установить home-assistant можно разными способами:

  • системный пакет для вашего дистрибутива
  • установка через pip
  • установка через docker. Как установить docker на ваш linux читать тут

Я выбрал установку через docker, т.к. это самый простой и быстрый способ установки.

Первое, что необходимо сделать, это создать папку на локальном диске, которая будет бэкапиться или которую вы не удалите, для того, чтобы хранить конфиги home-assistant и не потерять их, при работе с контейнером docker.

Затем запускаем контейнер с последней версией home-assistant

2. Добавление xiaomi gateway в home-assistant

Добавление устройств (датчиков) в home-assistant проводится через редактирование конфигурационного файла. Если посмотреть в папку

то можно увидеть различные конфиги:

  1. automations.yaml - конфигурация для скриптов автоматизации
  2. configuration.yaml - главный файл, в котором подключаются все остальные
  3. customize_glob.yaml - настройка внешнего вида для категорий датчиков
  4. customize.yaml - настройка внешнего вида отдельных датчиков
  5. groups.yaml - настройка зон (комнат)
  6. scripts.yaml - скрипты
  7. secrets.yaml - файл для хранения секретных данных (паролей)

Для упрощения, добавим наш датчик в основной конфигурационный файл configuration.yaml, в конец файла

Затем, надо перезагрузить home-assistant, чтобы он прочитал новый конфиг, сделать это можно либо через docker (docker stop container_id && docker start container_id), либо через меню home-assistant Settings -> Common -> Restart

Сегодня мы разберемся как добавлять новые устройства в Home Asisstant (далее HA) на базе того, что есть у меня. Для добавления нового устройства определенной группы необходимо в нашем конфиге внести соответствующий раздел. При этом практически никогда вам не надо будет добавлять плагины для этого! В редких случаях, при использовании кастом компонентов необходимо скачать нужные файлы для их работы и поместить в соответствующие папки, но об этом чуть позже. Расскажу про добавление базовых вещей. По сути тут собраны все плагины устройств и сервисов, которые поддерживаются HA, можно поискать свой конкретный случай и посмотреть, есть ли поддержка девайса.

Xiaomi шлюз и Zigbee девайсы, подключенные к нему.

Если вы по моей предыдущей статье оставили раздел discovery: в конфиге, то все поддерживаемые устройства у вас автоматически появились и в HA:

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

Так как мы приступили к серьезной правке конфига, необходимо помнить, что HA очень чувствителен к лишним пробелам, следите за ними!

Что надо сделать для этого? Открываем наш конфиг на малинке:

cd /home/homeassistant/.homeassistant/
sudo nano configuration.yaml

После этого прописываем в конце нашего конфига следующее:

xiaomi_aqara:
discovery_retry: 5
gateways:
- key: your_key_gateway

Ключ (он же пароль, не токен, не перепутайте) для гейтвея получаем например как тут . После сохранения конфига, можно проверить его на правильность в веб интерфейсе и перезагрузить HA. При желании можно отредактировать названия датчиков или кнопок нажатием на них, а после в новом окошке на шестеренку:

Samsung smart TV (Tizen)

У меня телевизор самсунг 2017го года на тайзоне, для его добавления необходимо добавить в конфиг следующее:

media_player:
- platform: samsungtv
host: 192.168.1.X
port: 8001
mac: mac_your_tv
name: SamsungTV

Причем не важно как подключен телевизор, по кабелю или wifi к роутеру - команды на вкл и выкл будут отрабатывать в любом случае. Если у вас телевизор 2015го года или ранее, параметры port и mac можно не указывать, должно работать и так.

Xiaomi Philips Light

Опять таки покажу на примере своих лампочек. Список поддерживаемых устройств можно найти на странице плагина. В процессе нам потребуется токен устройства, как его получить можно узнать тут . После его получения добавляем в конфиг следующее:

light:
- platform: xiaomi_miio
name: living_room
host: 192.168.1.x
token: your_token
model: philips.light.bulb

Если необходимо добавить несколько устройств, делаем так:

light:
- platform: xiaomi_miio
name: living_room
host: 192.168.1.x
token: your_token_1
model: philips.light.bulb
- platform: xiaomi_miio
name: bathroom
host: 192.168.1.y
token: your_token_2
model: philips.light.bulb

Broadlink on/off устройства

Если у нас есть устройства, которые можно включить или выключить через ИК пульт и Broadlink rm mini или pro, их так же можно добавить. Для начала запустим сам плагин, для этого нужно знать IP адрес броадлинка и его мак адрес. Добавляем в конфиг следующие строчки:

После этого проверяем конфиг на правильность и перезагружаем HA. Теперь можно добавлять наши устройства исправляемые по ИК. Коды сканированные ранее через плагин для Homebridge не подойдут, но их можно переделать в нужный формат используя конвертер HEX in base64 (говорим спасибо @samsonovs). Если же ИК кодов у вас нет, можно их получить используя HA. Как это сделать? Открываем веб морду HA и переходим по первой кнопке в разделе "Инструменты разработчика", в первом поле выбираем службу switch.broadlink_learn_command_*** и жмем кнопку "Call service":

После этого направляем пульт на broadlink и жмем на кнопку, код которой нам надо считать. Если затем перейти на главную страницу веб морды HA - там появится новое окошко со считанным кодом. Копируем его и сохраняем куда нибудь. Для считывания следующего кода процедуру необходимо повторить. Как только все необходимые коды будут прочитаны, возвращаемся к редактированию конфига и добавляем наш девайс. Должно получиться так:

Сохраняем конфиг, проверяем его в последний раз на правильность и перезапускаем. На всякий случай приведу полностью свой файл конфигурации, что бы вы могли оценить картину в целом:

group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml

media_player:
- platform: samsungtv
host: 192.168.1.x
port: 8001
mac: tv_mac
name: SamsungTV

xiaomi_aqara:
discovery_retry: 5
gateways:
- key: your_key

light:
- platform: xiaomi_miio
name: living_room
host: 192.168.1.x
token: your_token1
model: philips.light.bulb
- platform: xiaomi_miio
name: bathroom
host: 192.168.1.y
token: your_token2
model: philips.light.bulb

Переходим на главную страницу и видим наши устройства:

Вуаля! Вы молодцы и можете гордиться собой! В принципе для каждого плагина тут есть подробная инструкция с примерами, кое что я не показал, кое что можно найти там. К сожалению у меня не такой богатый зоопарк устройств. В следующей части рассмотрим пробросать наших девайсов в HomeKit, а так же их фильтрацию

Новый хаб от Xiaomi с поддержкой технологий Zigbee 3, Bluetooth Mesh, HomeKit и его подключение к достаточно популярной системе умного дома — Home Assistant, интересует?




Устройства умного дома можно встретить на разных беспроводных протоколах.

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

Здесь выходом будет хороший двухдиапазонный роутер. Весь умный дом можно повесить на диапазон 2.4 ГГц, а мультимедиа-устройства (смартфоны, ноутбуки, телевизоры, колонки) на 5 ГГц.

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

В таких случаях производители рекомендуют покупать BLE Gateway. Это устройство, которое будет посредником между Bluetooth и серверами производителя. Здесь уже далеко не все пользователи соглашаются на дополнительные траты и лишнюю железку в доме.

Некоторые производители встраивают возможности BLE Gateway в камеры и лампы, закрывая проблему лишних затрат и лишнего устройства в доме.

От этой технологии новички отказываются чаще всего из-за необходимости приобретать дополнительное устройство-посредник, ведь ничего работающего с Zigbee в их доме скорее всего нет. Некоторые производители встраивают поддержку этой технологии в умные колонки и, на мой взгляд, это очень интересный ход.

Дополнительную проблему составляет, что каждый такой Gateway поддерживает только дочерние устройства своего производителя. Купив устройства Philips Hue, IKEA, Sonoff, Xiaomi и Tuya, вы, скорее всего, должны будете докупить пять Gateway соответственно.

Эта технология заслуживает внимания по следующим причинам:

  • Беспроводные датчики довольно маленькие и в последнее время не такие и дорогие: 500 рублей за простейший датчик или кнопку — это реальность, Xiaomi и AliExpress сделали своё дело.
  • Беспроводные датчики могут продержаться на одной батарее несколько лет, без шуток — лет!
  • В количестве Zigbee устройств их сила: технология поддерживает Mesh, проводные устройства, скорее всего, будут ретрансляторами сигнала между Gateway и удалёнными датчиками, заодно снимая нагрузку с самого Gateway.
  • Технология поддерживает прямое управление в обход Gateway, можно связать кнопку и лампочку. В случае выхода Gateway из строя управление светом продолжит работать. Правда далеко не все кнопки это умеют.

Фирма Xiaomi сделала многое для продвижения технологии Zigbee в альтернативных системах умного дома. Их старенький Xiaomi Gateway 2 (DGNWG02LM, lumi.gateway.v3) имел на борту "режим разработчика", который открывал локальный протокол доступа к управлению Zigbee устройствами этого шлюза. Интеграции этого протокола есть в множестве open source систем.

В евро-версии этого шлюза Xiaomi Gateway EU (DGNWG05LM, lumi.gateway.mieu01), а также в обновлённой версии Xiaomi Gateway 3 (ZNDMWG03LM, lumi.gateway.mgl03) этого протокола нет.

Обновлённая версия шлюза получила новый чип на Zigbee 3 (EFR32MG1B), а также поддержку технологии Bluetooth Mesh и HomeKit. В HomeKit поддерживаются не все устройства, будьте внимательны.

В отличие от всех остальных шлюзов, обновлённая версия имеет уникальную особенность: на ней программно можно открыть Telnet-доступ. Доступ открывается только при наличии Mi Home токена, так что всё вполне секьюрно.

В этом шлюзе стоит чип серии EFR32 от фирмы Silicon Labs. Те в свою очередь поставляют вместе с чипом набор SDK. В составе SDK есть MQTT-транспорт, обеспечивающий доступ к Zigbee проколу из любого ПО, установленного как на шлюзе, так и за его пределами.

По умолчанию MQTT-брокер не доступен извне, но у нас ведь теперь есть Telnet!

В брокере есть два корневых топика: это "сырые" данные Zigbee и обработанные данные от Xiaomi. Я решил взять за основу обработанные данные. Там атрибуты устройств хоть и описаны псевдокодами, но в них всё же проще разобраться человеку, ничего не понимающему в Zigbee.

В итоге получился такой вот компонент для Home Assistant — XiaomiGateway3.

Он автоматически включает Telnet и публичный MQTT, используя токен Mi Home.

Сейчас токен нужно получать нехитрым образом (инструкция в readme). Но в будущем я планирую добавить получение токена с серверов Xiaomi, используя аккаунт Mi Home. Ведь недавно в сети появилась рабочая реализация авторизации в их облаке.

Сейчас компонент получает список устройств и последние значения их атрибутов с Хаба. Но в дальнейшем я планирую добавить получение списка устройств из облака. Там есть пользовательские названия всех устройств.

С этим пришлось повозиться. Работа с Bluetooth-устройствами не отражается в MQTT. Зато все данные отражаются в консоли. Поэтому компонент подключается к хабу через Telnet отдельным потоком, перезапускает утилиту работы с Bluetooth и читает её вывод в реальном времени. Это самый стабильный способ, что я нашёл. В syslog данные от этой утилиты попадают с перебоями. Моих знаний Linux не хватает, чтоб понять, почему так происходит.

Первым делом компонент научился поддерживать стандартный набор Bluetooth-устройств Xiaomi: датчики температуры, анализаторы почвы и освещенности, фумигатор.

А пару дней назад в нём появилась поддержка умных Bluetooth-замков. На сегодняшний день это единственный из известных мне способов подключить BLE-умный замок Xiaomi в альтернативную систему умного дома.

Чайника у меня нет, но присылайте логи — добавлю и его. Правда чайники Xiaomi не поддерживают функцию удалённого включения, это большой минус.

BLE-устройства и их атрибуты отображаются по мере поступления данных. Когда появится поддержка облака — полный список BLE устройств с их моделями, именами и последними посланными данными можно будет получить оттуда. Такая информация на хабе не хранится.

Поддержка Bluetooth Mesh ламп пока в разработке. Работа с ними сильно отличается от BLE-устройств.

Нужно отладить работу хаба со всем списком официально поддерживаемых Zigbee-устройств. Добавить возможность настройки "тонких" параметров:

  • настройки хаба: например, мощность (и её можно сильно увеличить!),
  • изменение настроек дочерних устройств: режим логических кнопок на выключателях, чувствительность датчика вибрации и многое другое.

Нужно добавить поддержку облака для получения токена хаба и полного списка Zigbee и Bluetooth-устройств.

Нужно добавить поддержку Bluetooth Mesh ламп.

И самое главное — добавить поддержку устройств других производителей. Да, это возможно. Мне удалось подключить все сторонние устройства, что у меня были, и управлять ими. Такие устройства не отображаются в Mi Home и HomeKit. Но управлять ими можно с помощью "сырых" Zigbee-команд.

Для понимания полного масштаба проблемы такой поддержки загляните в исходники замечательного проекта zigbee2mqtt: devices, fromZigbee, toZigbee.

Почти каждое устройство требует свой собственный обработчик. В случае с Xiaomi Gateway 3 и официально поддерживаемыми устройствами — роль такого обработчика выполняет софт хаба.

Другие мои разработки можно найти на GitHub. Среди русскоговорящей аудитории наиболее популярный проект — YandexStation. Глобально очень хорошо себя зарекомендовал SonoffLAN. Но, думаю, XiaomiGateway3 его легко обгонит. За развитием этого и других моих проектов можно следить на моём канале Telegram.

Например, устройства, работающие в экосистеме Tuya стали очень популярны у энтузиастов и большую их часть можно перепрошить без ущерба в функциональности, а то и вовсе добавить новые фичи. А вот устройства Xiaomi менее любимы у народных diy умельцев, но некоторые из них можно добавить в Home Assistant с родной прошивкой и управлять локально. Та же родная интеграция Yeelight, например.


Его размеры 82x35x22мм. Модуль небольшой, по типу тех, что встраивают в люстры. Приобретался тут:

На упаковке все расписано на китайском, но основная информация по модулю читается и без переводчика.

Модуль позволяет управлять нагрузкой до 10А в сетях переменного тока 100-240В, допустимый диапазон температур для работы модуля -5℃

55℃. Отдельно отмечено, что максимальная мощность LED нагрузки не должна превышать 350Вт. Внутри установлено реле FANHAR W14-1AST на 10А.

Кстати, Алиса сама обнаружила новое устройство от Xiaomi в сети и что-то там сказала про наши с ней отношения. Через Яндекс управляется, статус отображается.


Как видно на скриншоте, устройства удобно разбиты на блоки, в которых есть токен и даже ip адрес в локальной сети. Очень удобно. Теперь переходим в Home Assistant и устанавливаем Xiaomi Miot Auto из HACS или вручную, если вы этого еще не сделали.


Далее переходим в Настройки > Интеграции и жмем кнопку Добавить интеграцию. Выбираем из списка Xiaomi Miot Auto



Теперь вводим данные нужного нам устройства для добавления.


Всё, модуль реле добавлен. Можно выбрать помещение, переименовать и добавить в карточку lovelace.



На странице интеграции на Github расписаны очень интересные устройства, включая устройства климата, умные шторы, камеры и прочее. Было бы очень занимательно проверить некоторые из них в ближайшем будущем.

Читайте также: