Немного подлатал работу Motion Sensor и Button в Xiaomi Gateway 3.
А так же добавил поддержку BLE! Нужно перезагрузить Gateway, чтоб заработало.
Работает весьма посредственно. Датчики шлют обновления очень редко. Они не привязаны к шлюзу и их состояния после перезагрузки Home Assistant неоткуда достать. Модель устройства тоже непонятно откуда брать.
Спасибо команде ESPHome, благодаря им понятно как расшифровываются данные всяких формальдегидов и москитолов.
Кто хотел поддержку BLE замков - в компоненте появился Debug режим. Нужно включить в конфиге
А так же добавил поддержку BLE! Нужно перезагрузить Gateway, чтоб заработало.
Работает весьма посредственно. Датчики шлют обновления очень редко. Они не привязаны к шлюзу и их состояния после перезагрузки Home Assistant неоткуда достать. Модель устройства тоже непонятно откуда брать.
Спасибо команде ESPHome, благодаря им понятно как расшифровываются данные всяких формальдегидов и москитолов.
Кто хотел поддержку BLE замков - в компоненте появился Debug режим. Нужно включить в конфиге
debug: bluetooth
и прислать мне для анализа.Приехал великий и ужасный новый датчик освещённости на Zigbee 3. К старым шлюзам не подключится. Вечером можно будет добавить поддержку в Xiaomi Gateway 3.
И приехала RBG лента от Sonoff на 5 метров. Она была одной из причин добавления в компонент SonoffLAN поддержки облачного управления устройствами. Ведь лента не получила обновление прошивки 3й версии. Поэтому управляется только через сервера eWeLink. Неприятно, но не критично, за такую-то цену.
И приехала RBG лента от Sonoff на 5 метров. Она была одной из причин добавления в компонент SonoffLAN поддержки облачного управления устройствами. Ведь лента не получила обновление прошивки 3й версии. Поэтому управляется только через сервера eWeLink. Неприятно, но не критично, за такую-то цену.
AlexxIT Smart Home
Приехал великий и ужасный новый датчик освещённости на Zigbee 3. К старым шлюзам не подключится. Вечером можно будет добавить поддержку в Xiaomi Gateway 3. И приехала RBG лента от Sonoff на 5 метров. Она была одной из причин добавления в компонент SonoffLAN…
Похоже слова про "великий и ужасный" были пророчеством.
Датчик освещённости интегрируется в систему Xiaomi по совершенно другим правилам. Отличается абсолютно всё: идентификатор устройства, название и способ получения параметров, значения этих параметров (например, уровень заряда). Пока есть сложности с приведением всего этого к единому виду.
Но есть и хорошая новость. Похоже я нашёл основную причину плохой работы протокола miio. И если её пофиксить - протокол просто летает без всяких затыков.
Особенности реализации библиотеки miio на python ломают даже работу мобильного приложения Mi Home. Оно начинает страшно тупить при взаимодействии с устройствами, для которых настроена такая интеграция. Включая шлюзы. Выход - или отключить такие интеграции или отключить wifi на телефоне, тогда взаимодействие с устройствами будет через сервера Xiaomi.
Датчик освещённости интегрируется в систему Xiaomi по совершенно другим правилам. Отличается абсолютно всё: идентификатор устройства, название и способ получения параметров, значения этих параметров (например, уровень заряда). Пока есть сложности с приведением всего этого к единому виду.
Но есть и хорошая новость. Похоже я нашёл основную причину плохой работы протокола miio. И если её пофиксить - протокол просто летает без всяких затыков.
Особенности реализации библиотеки miio на python ломают даже работу мобильного приложения Mi Home. Оно начинает страшно тупить при взаимодействии с устройствами, для которых настроена такая интеграция. Включая шлюзы. Выход - или отключить такие интеграции или отключить wifi на телефоне, тогда взаимодействие с устройствами будет через сервера Xiaomi.
Если кто заглянет в исходники последней версии Xiaomi Gateway 3, вероятно решит, что я выжил из ума. Я и сам бы так подумал, увидев подобное в чужом коде.
Miio API не давало нужных мне данных по датчику освещённости. Но я нашёл всю необходимую информацию по всем устройствам в файловой базе данных на самом Хабе. Сама БД очень редкого формата - документно-ориентированный аналог SQLite. В Python к такой просто так не подключиться. Библиотека для работы с ней написана на C++ и не смогла собраться в hassio. Поэтому мне пришлось изучить формат этой БД и написать свой аналог без лишних зависимостей.
Чтение списка устройств с статусами всех датчиков из файловой БД странного формата через Telnet из Python - занятие весьма авантюрное, но всё получилось.
Правда это оказалось зря. В новой версии прошивки разработчики шлюза тупо отказались от хранения данных в этом формате. У меня есть дампы 3х прошлый версий и везде эта БД была. А в новой версии её уже нет. Но проблема в том, что и у меня нет этой новой версии. Mi Home показывает последнюю версию прошивки шлюза как 1.4.6_0012. А на github ругаются на 1.4.6_0030.
Такие вот дела.
Miio API не давало нужных мне данных по датчику освещённости. Но я нашёл всю необходимую информацию по всем устройствам в файловой базе данных на самом Хабе. Сама БД очень редкого формата - документно-ориентированный аналог SQLite. В Python к такой просто так не подключиться. Библиотека для работы с ней написана на C++ и не смогла собраться в hassio. Поэтому мне пришлось изучить формат этой БД и написать свой аналог без лишних зависимостей.
Чтение списка устройств с статусами всех датчиков из файловой БД странного формата через Telnet из Python - занятие весьма авантюрное, но всё получилось.
Правда это оказалось зря. В новой версии прошивки разработчики шлюза тупо отказались от хранения данных в этом формате. У меня есть дампы 3х прошлый версий и везде эта БД была. А в новой версии её уже нет. Но проблема в том, что и у меня нет этой новой версии. Mi Home показывает последнюю версию прошивки шлюза как 1.4.6_0012. А на github ругаются на 1.4.6_0030.
Такие вот дела.
Issue с номером 813. Вот какой человек испытывает настоящую боль 🙈
Описал разработчику библиотеки miio основную причину тормозов протокола. Из-за неё глючат не только интеграции Wi-Fi устройств Xiaomi, но и приложение Mi Home и, вероятно, локальные автоматизации!
Вы ведь в курсе, что простые автоматизации вроде "датчик движения Zigbee - лампочка Wi-Fi" вполне могут работать без Интернета? Шлюз сделает всё сам.
Теперь всё в руках разработчика python-miio. Может он придумает более лучшее решение, чем я предложил. Потому как и моё не совершенно.
https://github.com/rytilahti/python-miio/issues/813
Интересно решён ли вопрос в библиотеках на других языках программирования...
Описал разработчику библиотеки miio основную причину тормозов протокола. Из-за неё глючат не только интеграции Wi-Fi устройств Xiaomi, но и приложение Mi Home и, вероятно, локальные автоматизации!
Вы ведь в курсе, что простые автоматизации вроде "датчик движения Zigbee - лампочка Wi-Fi" вполне могут работать без Интернета? Шлюз сделает всё сам.
Теперь всё в руках разработчика python-miio. Может он придумает более лучшее решение, чем я предложил. Потому как и моё не совершенно.
https://github.com/rytilahti/python-miio/issues/813
Интересно решён ли вопрос в библиотеках на других языках программирования...
GitHub
Fix protocol freezes due to sequence id · Issue #813 · rytilahti/python-miio
I am developing a component for integrating Xiaomi Gateway 3 and understood how sequence id (start_id and _id) works. I think the problem does not concern only Gateway, but applies to all devices w...
Забавно. Пишут, прошивка 1.4.6_0030 для Xiaomi Gateway 3 была доступна в июле. Но в августе её убрали из списка обновлений. Получается кто успел на неё обновится - так на ней и сидят. Все остальные могут обновится только до 1.4.6_0012.
Приехала куча плюшек с последней распродажи.
Купил второй шлюз Gateway 3, чтоб один сделать боевым, а на втором можно было бы продолжить разрабатывать. Плюс проверить работу компонента с двумя шлюзами одновременно. И интересно как ведут себя BLE устройства с несколькими шлюзами.
Zigbee удлинитель с 4 управляемыми розетками! на универсальную вилку (евро, америка, китай) и двумя неуправляемыми USB.
Zigbee 3 диммер на 2 канала с поддержкой кнопок.
Две лампы Bluetooth Mesh для изучения этой технологии и тестов с Gateway 3.
Sonoff SV с сухим контактом для управления дверью в офисе. Умеет питаться от 12V, заберу их с контроллера двери. Для получения сухого контакта нужно отпаять резистр!
NodeMCU ESP32 для тестирования технологии трекинга людей по BLE на прошивке ESPHome.
Прошитый cc1251 от Sonoff. Наконец-то посмотрю как работает Zigbee Home Automation. Вроде как готов к бою "из коробки".
Розетка ZNCZ04LM. Говорят она на Zigbee 3. Плюс возможно сможет помочь понять тайны протокола Xiaomi. Купил в Связном.
Купил второй шлюз Gateway 3, чтоб один сделать боевым, а на втором можно было бы продолжить разрабатывать. Плюс проверить работу компонента с двумя шлюзами одновременно. И интересно как ведут себя BLE устройства с несколькими шлюзами.
Zigbee удлинитель с 4 управляемыми розетками! на универсальную вилку (евро, америка, китай) и двумя неуправляемыми USB.
Zigbee 3 диммер на 2 канала с поддержкой кнопок.
Две лампы Bluetooth Mesh для изучения этой технологии и тестов с Gateway 3.
Sonoff SV с сухим контактом для управления дверью в офисе. Умеет питаться от 12V, заберу их с контроллера двери. Для получения сухого контакта нужно отпаять резистр!
NodeMCU ESP32 для тестирования технологии трекинга людей по BLE на прошивке ESPHome.
Прошитый cc1251 от Sonoff. Наконец-то посмотрю как работает Zigbee Home Automation. Вроде как готов к бою "из коробки".
Розетка ZNCZ04LM. Говорят она на Zigbee 3. Плюс возможно сможет помочь понять тайны протокола Xiaomi. Купил в Связном.
Интересные времена наступают для нас всех. Кто-то таки не поленился и разобрал протокол авторизации Mi Home Cloud.
В openHAB уже есть рабочая реализация. Для python на днях оформили библиотеку.
Это значит, что в перспективе не нужно будет мучаться с получением токенов Xiaomi устройств. Ввёл логин/пароль от Mi Home и все устройства заработали автоматически.
Опционально конечно можно оставить и токен. Так работает компонент SonoffLAN.
Добавлю как-нибудь код в компонент Xiaomi Gateway 3. Плюс дополнительно можно куда-то выводить токены не только Хабов, но и других устройств. Чтоб упростить пользователям других компонентов жизнь.
В openHAB уже есть рабочая реализация. Для python на днях оформили библиотеку.
Это значит, что в перспективе не нужно будет мучаться с получением токенов Xiaomi устройств. Ввёл логин/пароль от Mi Home и все устройства заработали автоматически.
Опционально конечно можно оставить и токен. Так работает компонент SonoffLAN.
Добавлю как-нибудь код в компонент Xiaomi Gateway 3. Плюс дополнительно можно куда-то выводить токены не только Хабов, но и других устройств. Чтоб упростить пользователям других компонентов жизнь.
Свежие новости о Xiaomi Gateway 3
1. Облачные Mi Home API работают и это 🔥. В списке устройств есть всё:
- нормальные имена из Mi Home
- последние значения сенсоров как Zigbee, так и BLE датчиков
- и даже последняя дата срабатывания событий датчиков движения
- токены и локальные IP-адреса хабов
Встраивать ещё даже не пытался, работы много.
2. Я обновил логику работы с BLE и теперь данные подтягиваются максимально быстро. Над стабильностью конечно ещё нужно работать.
3. Кубик Рубика огорчил, информацию о грани не шлёт. Только направление вращения...
https://youtu.be/4D_vqvUre_0
4. BLE лампы работают. Ими может управлять любой из хабов в вашем доме. Та самая децентрализация, которой так не хватает технологии Zigbee.
Ещё технология Bluetooth Mesh позволяет собирать лампы в группы и отдавать команды разом всей группе.
Скорее всего поддержка появятся не раньше работы с облаком.
5. В логах Хаба вижу самокат Xiaomi. Пока непонятно, что можно с этим сделать. Самокат ничего не шлёт. Но пища для размышлений есть.
1. Облачные Mi Home API работают и это 🔥. В списке устройств есть всё:
- нормальные имена из Mi Home
- последние значения сенсоров как Zigbee, так и BLE датчиков
- и даже последняя дата срабатывания событий датчиков движения
- токены и локальные IP-адреса хабов
Встраивать ещё даже не пытался, работы много.
2. Я обновил логику работы с BLE и теперь данные подтягиваются максимально быстро. Над стабильностью конечно ещё нужно работать.
3. Кубик Рубика огорчил, информацию о грани не шлёт. Только направление вращения...
https://youtu.be/4D_vqvUre_0
4. BLE лампы работают. Ими может управлять любой из хабов в вашем доме. Та самая децентрализация, которой так не хватает технологии Zigbee.
Ещё технология Bluetooth Mesh позволяет собирать лампы в группы и отдавать команды разом всей группе.
Скорее всего поддержка появятся не раньше работы с облаком.
5. В логах Хаба вижу самокат Xiaomi. Пока непонятно, что можно с этим сделать. Самокат ничего не шлёт. Но пища для размышлений есть.
YouTube
Xiaomi Rubik Cube BLE and Gateway 3 integration in Home Assistant
https://github.com/AlexxIT/XiaomiGateway3
Cube support only 2 events! Clockwise and counterclockwise. No side (color) information :(
Cube support only 2 events! Clockwise and counterclockwise. No side (color) information :(
Ну что, владельцы Яндекс колонок. Думали, с этими всякими шлюзами про вас забыли? А вот нет! Ловите перформанс. Повеселите близких.
Работает только с колонками Яндекса потому как нужен локальный режим. Зато RGB лампочки подойдут любые. Правда у Yeelight есть параметр
Пишите свои варианты автоматизации, если у вас получилось лучше. У меня не так много времени на эксперименты. Мой вариант в описании к видео.
Кстати таким же образом можно приглушать звук ТВ, когда Станция вас услышала. И возвращать звук назад после выполения команды. Кто пришлёт автоматизацию для добавления в readme? 🙂
https://youtu.be/XLoGvy4RLrg
Работает только с колонками Яндекса потому как нужен локальный режим. Зато RGB лампочки подойдут любые. Правда у Yeelight есть параметр
transition
. Другие лампы могут его не поддерживать. И у Yeelight есть параметр music_mode
. Он полезен, когда вы планируете бомбардировать лампу командами. Иначе она захлебнётся и перестанет отвечать.Пишите свои варианты автоматизации, если у вас получилось лучше. У меня не так много времени на эксперименты. Мой вариант в описании к видео.
Кстати таким же образом можно приглушать звук ТВ, когда Станция вас услышала. И возвращать звук назад после выполения команды. Кто пришлёт автоматизацию для добавления в readme? 🙂
https://youtu.be/XLoGvy4RLrg
Многие, вероятно, столкнулись с багом актуального уровня громкости в прошивке Яндекс.Станции Мини
https://t.me/AlexxIT_SmartHome/164
Я даже знаю, что многие писали по этому поводу в техподдержку Яндекса. Где им отвечали, что компонент неофициальный, идите лесом...
Ну чтож. Возрадуйтесь. В Яндексе вас услышали и поломали громкость на Большой Станции. Теперь уровень громкости не работает одинаково у всех 😁
Но зато мой фикс для Мини подхватился и на Большой станции. Вы ведь не заметили, что с громкостью теперь что-то не так?
https://t.me/AlexxIT_SmartHome/164
Я даже знаю, что многие писали по этому поводу в техподдержку Яндекса. Где им отвечали, что компонент неофициальный, идите лесом...
Ну чтож. Возрадуйтесь. В Яндексе вас услышали и поломали громкость на Большой Станции. Теперь уровень громкости не работает одинаково у всех 😁
Но зато мой фикс для Мини подхватился и на Большой станции. Вы ведь не заметили, что с громкостью теперь что-то не так?
Telegram
AlexxIT Smart Home
Итак новая версия YandexStation 2.1 и новые плюшки.
1. Как вы уже знаете, Яндекс.Станция Мини стала поддерживать локальный протокол в день выхода статьи на Хабре. Но там есть ошибка. Станция постоянно шлёт нулевой уровень громкости.
Теперь компонент будет…
1. Как вы уже знаете, Яндекс.Станция Мини стала поддерживать локальный протокол в день выхода статьи на Хабре. Но там есть ошибка. Станция постоянно шлёт нулевой уровень громкости.
Теперь компонент будет…
Есть в альтернативных системах умного дома на сегодняшний день одна нерешённая задачка. Это поддержка Bluetooth замков Xiaomi/Aqara. История с HomeKit не считается 🙊
В случае с BLE датчиками температуры - я смог подсмотреть расшифровку протокола в проекте ESPHome. В случае с замком подсматривать протокол было негде.
Мне уже скинули немного логов на Xiaomi Loock и Aqara N100. И с первого взгляда там внутри ничего не понятно.
Но пару часов назад добрый человек прислал ссылку на документацию, где на довольно понятном китайском языке описана работа всех устройств, поддерживаемых BLE шлюзом. А по чтению китайских документаций у меня уже много опыта на проекте SonoffLAN.
Так что теперь не прийдётся искать open source с поддержкой разных устройств и угадывать значения атрибутов. Замки шлют успешные и неуспешные попытки открытия двери во всех подробностях. Это уже понятно по логам.
В случае с BLE датчиками температуры - я смог подсмотреть расшифровку протокола в проекте ESPHome. В случае с замком подсматривать протокол было негде.
Мне уже скинули немного логов на Xiaomi Loock и Aqara N100. И с первого взгляда там внутри ничего не понятно.
Но пару часов назад добрый человек прислал ссылку на документацию, где на довольно понятном китайском языке описана работа всех устройств, поддерживаемых BLE шлюзом. А по чтению китайских документаций у меня уже много опыта на проекте SonoffLAN.
Так что теперь не прийдётся искать open source с поддержкой разных устройств и угадывать значения атрибутов. Замки шлют успешные и неуспешные попытки открытия двери во всех подробностях. Это уже понятно по логам.
Похоже, найдено самое умное из умных устройств - это Bluetooth замки от Xiaomi.
Они знают, кто открыл, когда открыл, чем открыл, чем не открыл, сколько задвижек на замке выдвинуто, есть ли инородные предметы в замочной скважине и много чего ещё.
А Xiaomi Gateway 3 первым из open source проектов научился их поддерживать. Думаю и ребята из ESPHome смогут укротить этого зверя. Ведь теперь есть куда подсмотреть.
Дольше всего заняла не сама реализация, а выбор подхода, как это всё выводить в интерфейс. Замки шлют много разных событий. А по моему опыту - у части пользователей работа с событиями вызывает затруднения. Поэтому все данные от замка я завернул в сенсор с атрибутами, аналогично беспроводным кнопкам. И привёл несколько примеров как этим всем пользоваться.
https://github.com/AlexxIT/XiaomiGateway3/releases/tag/v0.3.0
Они знают, кто открыл, когда открыл, чем открыл, чем не открыл, сколько задвижек на замке выдвинуто, есть ли инородные предметы в замочной скважине и много чего ещё.
А Xiaomi Gateway 3 первым из open source проектов научился их поддерживать. Думаю и ребята из ESPHome смогут укротить этого зверя. Ведь теперь есть куда подсмотреть.
Дольше всего заняла не сама реализация, а выбор подхода, как это всё выводить в интерфейс. Замки шлют много разных событий. А по моему опыту - у части пользователей работа с событиями вызывает затруднения. Поэтому все данные от замка я завернул в сенсор с атрибутами, аналогично беспроводным кнопкам. И привёл несколько примеров как этим всем пользоваться.
https://github.com/AlexxIT/XiaomiGateway3/releases/tag/v0.3.0
Кстати о умных замках.
Многие недавно подписавшиеся на канал, вероятно, не в курсе о моих старых разработках.
А у меня больше года назад была статья, как с помощью датчика двери стоимостью 500 рублей сделать из старого глупого замка умный:
https://t.me/AlexxIT_SmartHome/10
Такую штуку можно провернуть независимо от того, какой системой умного дома вы пользуетесь.
На замке у меня висит автоматизация - выключать свет по закрытию. Вы ведь знали, что:
service: light.turn_off
entity_id: all
выключит весь свет в доме без необходимости перечислять все лампочки? Но только те устройства, которые являются светом.
Именно поэтому я сделал в компоненте SonoffLAN возможность превратить
В Яндексе эту фишку давно просекли и позволяют указывать, чем является реле - розеткой или освещением.
В Google сперва пытались угадать тип устройства по его названию, но недавно также добавили настройку. Тут в отличии от Яндекса розетку можно сделать лампочкой, кофеваркой, вентилятором и много чем ещё...
А тем временем на канале уже 1000 подписчиков!
Многие недавно подписавшиеся на канал, вероятно, не в курсе о моих старых разработках.
А у меня больше года назад была статья, как с помощью датчика двери стоимостью 500 рублей сделать из старого глупого замка умный:
https://t.me/AlexxIT_SmartHome/10
Такую штуку можно провернуть независимо от того, какой системой умного дома вы пользуетесь.
На замке у меня висит автоматизация - выключать свет по закрытию. Вы ведь знали, что:
service: light.turn_off
entity_id: all
выключит весь свет в доме без необходимости перечислять все лампочки? Но только те устройства, которые являются светом.
Именно поэтому я сделал в компоненте SonoffLAN возможность превратить
switch
в light
или fan
. Ведь многие вешают эти реле на свет или вытяжку.В Яндексе эту фишку давно просекли и позволяют указывать, чем является реле - розеткой или освещением.
В Google сперва пытались угадать тип устройства по его названию, но недавно также добавили настройку. Тут в отличии от Яндекса розетку можно сделать лампочкой, кофеваркой, вентилятором и много чем ещё...
А тем временем на канале уже 1000 подписчиков!
Telegram
AlexxIT Smart Home
Да чтож такое. Не успел купить комплект за 2 тысячи, а его уже за 1 продают. Под шумок заказал 3 штуки.
В уютном чатике про Zigbee рассказывают как добиться акции невиданной щедрости
https://t.me/zigbeer
В уютном чатике про Zigbee рассказывают как добиться акции невиданной щедрости
https://t.me/zigbeer
Написал свою вторую статью на Хабр. В этот раз про Xiaomi Gateway 3.
Огромное спасибо двум замечательным людям за доведения теста до литературного вида.
https://habr.com/ru/post/519644/
Огромное спасибо двум замечательным людям за доведения теста до литературного вида.
https://habr.com/ru/post/519644/
Хабр
Подключаем новый Xiaomi Gateway 3 к Home Assistant без паяльника и смс
Новый хаб от Xiaomi с поддержкой технологий Zigbee 3, Bluetooth Mesh, HomeKit и его подключение к достаточно популярной системе умного дома — Home Assistant , интересует? Введение Устройства умного...