AlexxIT Smart Home
8.31K subscribers
327 photos
28 videos
291 links
Заметки про развитие моего умного дома
Все полезные ссылки тут:
https://github.com/AlexxIT
Download Telegram
Немного подлатал работу Motion Sensor и Button в Xiaomi Gateway 3.

А так же добавил поддержку BLE! Нужно перезагрузить Gateway, чтоб заработало.

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

Спасибо команде ESPHome, благодаря им понятно как расшифровываются данные всяких формальдегидов и москитолов.

Кто хотел поддержку BLE замков - в компоненте появился Debug режим. Нужно включить в конфиге debug: bluetooth и прислать мне для анализа.
Беру опять раздаёт Станции. 2 рубля за умную колонку с розеткой, вроде неплохо. Хоть где-то принимают эти СПАСИБО.
Приехал великий и ужасный новый датчик освещённости на Zigbee 3. К старым шлюзам не подключится. Вечером можно будет добавить поддержку в Xiaomi Gateway 3.

И приехала 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 Gateway 3, вероятно решит, что я выжил из ума. Я и сам бы так подумал, увидев подобное в чужом коде.

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

Интересно решён ли вопрос в библиотеках на других языках программирования...
Забавно. Пишут, прошивка 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. Купил в Связном.
Интересные времена наступают для нас всех. Кто-то таки не поленился и разобрал протокол авторизации Mi Home Cloud.

В openHAB уже есть рабочая реализация. Для python на днях оформили библиотеку.

Это значит, что в перспективе не нужно будет мучаться с получением токенов Xiaomi устройств. Ввёл логин/пароль от Mi Home и все устройства заработали автоматически.

Опционально конечно можно оставить и токен. Так работает компонент SonoffLAN.

Добавлю как-нибудь код в компонент Xiaomi Gateway 3. Плюс дополнительно можно куда-то выводить токены не только Хабов, но и других устройств. Чтоб упростить пользователям других компонентов жизнь.
GitHub разрешает закреплять на главной странице только 6 репозиториев. Такой сложный выбор, ведь достойных проектов у меня несколько больше.

Тем временем SonoffLAN перевалил за 500 звёзд, у YandexStation - 200, у XiaomiGateway3 - 50, Telegram - 900+, а YouTube - 380+.
Свежие новости о 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. Пока непонятно, что можно с этим сделать. Самокат ничего не шлёт. Но пища для размышлений есть.
Ну что, владельцы Яндекс колонок. Думали, с этими всякими шлюзами про вас забыли? А вот нет! Ловите перформанс. Повеселите близких.

Работает только с колонками Яндекса потому как нужен локальный режим. Зато RGB лампочки подойдут любые. Правда у Yeelight есть параметр transition. Другие лампы могут его не поддерживать. И у Yeelight есть параметр music_mode. Он полезен, когда вы планируете бомбардировать лампу командами. Иначе она захлебнётся и перестанет отвечать.

Пишите свои варианты автоматизации, если у вас получилось лучше. У меня не так много времени на эксперименты. Мой вариант в описании к видео.

Кстати таким же образом можно приглушать звук ТВ, когда Станция вас услышала. И возвращать звук назад после выполения команды. Кто пришлёт автоматизацию для добавления в readme? 🙂

https://youtu.be/XLoGvy4RLrg
Многие, вероятно, столкнулись с багом актуального уровня громкости в прошивке Яндекс.Станции Мини
https://t.me/AlexxIT_SmartHome/164

Я даже знаю, что многие писали по этому поводу в техподдержку Яндекса. Где им отвечали, что компонент неофициальный, идите лесом...

Ну чтож. Возрадуйтесь. В Яндексе вас услышали и поломали громкость на Большой Станции. Теперь уровень громкости не работает одинаково у всех 😁

Но зато мой фикс для Мини подхватился и на Большой станции. Вы ведь не заметили, что с громкостью теперь что-то не так?
Есть в альтернативных системах умного дома на сегодняшний день одна нерешённая задачка. Это поддержка Bluetooth замков Xiaomi/Aqara. История с HomeKit не считается 🙊

В случае с BLE датчиками температуры - я смог подсмотреть расшифровку протокола в проекте ESPHome. В случае с замком подсматривать протокол было негде.

Мне уже скинули немного логов на Xiaomi Loock и Aqara N100. И с первого взгляда там внутри ничего не понятно.

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

Так что теперь не прийдётся искать open source с поддержкой разных устройств и угадывать значения атрибутов. Замки шлют успешные и неуспешные попытки открытия двери во всех подробностях. Это уже понятно по логам.
Движуха на github 😁
Похоже, найдено самое умное из умных устройств - это Bluetooth замки от Xiaomi.

Они знают, кто открыл, когда открыл, чем открыл, чем не открыл, сколько задвижек на замке выдвинуто, есть ли инородные предметы в замочной скважине и много чего ещё.

А 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 возможность превратить switch в light или fan. Ведь многие вешают эти реле на свет или вытяжку.

В Яндексе эту фишку давно просекли и позволяют указывать, чем является реле - розеткой или освещением.

В Google сперва пытались угадать тип устройства по его названию, но недавно также добавили настройку. Тут в отличии от Яндекса розетку можно сделать лампочкой, кофеваркой, вентилятором и много чем ещё...

А тем временем на канале уже 1000 подписчиков!
Да чтож такое. Не успел купить комплект за 2 тысячи, а его уже за 1 продают. Под шумок заказал 3 штуки.

В уютном чатике про Zigbee рассказывают как добиться акции невиданной щедрости
https://t.me/zigbeer