AlexxIT Smart Home
7.97K subscribers
321 photos
28 videos
289 links
Заметки про развитие моего умного дома
Все полезные ссылки тут:
https://github.com/AlexxIT
Download Telegram
Так выглядит телевизор, добавленный через ИК-пульт Яндекса (Tuya) в Home Assistant
У меня для вас ещё один лайфхак.

Самым частым вопросом по колонкам Алисы звучит: как спросить температуру в комнате?

Для этого в компоненте YandexStation есть интенты. Правда, для их работы нужна интеграция с умным домом Яндекса, а это значит белый IP и HTTPS. И заводятся они довольно запутанно, не все справляются.

Ещё есть YandexDialogs. Но там тоже нужен белый IP и HTTPS. И постоянно нужно произносить название навыка в каждой фразе.

И вот для владельцев локальных колонок я предлагаю ещё один способ реакции на три любые фразы. Работает полностью локально. К сожалению, фраз может быть только три и работает только с локальными колонками.

Но. Интеграция с умным домом не нужна и можно узнать, с какой именно локальной колонки пришёл запрос!

https://gist.github.com/AlexxIT/d4995839aedde2bbcf822831a71a52c5
Вот и у Xiaomi Gateway 3 пополнение. Спасибо @great_kvazis, добавлена поддержка нового реле Aqara Relay T1 на один канал без нуля.

Пока только в мастер-версии. Надо привести в порядок код. У нового реле API сильно отличаются от всех остальных устройств Xiaomi.

На данный момент на новом API протокола Zigbee 3 работают всего два устройства - новый датчик освещённости и это вот реле.

И тут очень непонятная история. Реле добавляется в Mi Home, но для него нет плагина. Поэтому пользоваться им в приложении нельзя, делать на него автоматизации тоже. Но в Home Assistant реле работает исправно.

Подробнее про реле можно посмотреть в последнем видео Алекса. Лайки, колокольчики, всё как вы умеете:

https://youtu.be/_78BnS8fWTM
#wifi #gateway3
Есть в настройках Wi-Fi одна важная опция, про которую не все знают:

Интервал обновление групповых ключей Wi-Fi

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

Дело в том, что маленький интервал обновления ключей Wi-Fi повышает вашу безопасность, но приводит к частым обрывам связи в устройствах умного дома. И Xiaomi Gateway 3 не исключение.

У Кинетиков этот интервал ранее был 1 час. Но в новых прошивках его повысили до 24 часов. В моём MikroTik этот интервал вообще равен 5 минутам. Из-за чего третий гейт часто терял Wi-Fi. Сейчас я повысил интервал до 1 часа, и всё стало хорошо. Возможно, ранее проблемы были и у других девайсов, просто я их не замечал.

https://help.keenetic.com/hc/ru/articles/115003690689
Играюсь с картой сети на Xiaomi Gateway 3. Теперь понятно, почему движение на кухне в редких случаях может не отработать. Надо бы его переспарить напрямую на гейт. И видно пару устройств, которые гарантированно в офлайне.

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

Но особо пытливые пользователи с базовым знанием python всё же смогут найти эту пасхалочку 😉
Самая страшная из свобод - свобода выбора.

Пока Яндекс выпускает релиз за релизом - Станция Макс, мультирум, датчики в умном доме (наконец-то)! У меня тут свои эксперименты.

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

Даже когда я встроил в Xiaomi Gateway 3 возможность добавлять некоторые Zigbee-устройства напрямую в Mi Home, а затем вообще добавил поддержу Zigbee Home Automation (ZHA), пользователям всё равно было мало. Хаб так и оставался в тени сотен поддерживаемых устройств из проекта zigbee2mqtt.

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

При этом устройства Xiaomi продолжают работать в Mi Home и в Home Assistant в обычном режиме. А так же видны данные от датчика движения и кнопки Sonoff. Она всё ещё управляет розеткой Xiaomi в режиме прямого биндинга.
SonoffLAN внезапно набрал 700 звёзд. У YandexStation 277 звёзд. А у XiaomiGateway3 не хватает 7 звёзд до 300. Вообще я не из тех, кто считает цифру 7 счастливой, просто забавный факт.

А ещё yandex_smart_home_fix уже успел набрать 40 звёзд. Даже больше, чем HassWP, MorphNumbers или YandexDialogs за всё время.

Интересно, сколько сможет набрать проект gateway2mqtt, если таки выйдет в свет. По задумке, на нём можно будет собрать звёзды не только от пользователей Home Assistant, но и других z2m-совместимых платформ умного дома.
Ранее я уже писал, что мне самостоятельно пришлось реализовать чтение весьма странной базы данных в компоненте Xiaomi Gateway 3.

https://t.me/AlexxIT_SmartHome/252

На этом абсурд не закончился. И с появлением поддержки Mesh-ламп мне пришлось реализовать и чтение вполне нормальной и самой популярной базы данных - SQLite.

Хотя Python умеет SQLite "из коробки", его реализация не подошла. Ведь он умеет читать только локальный файл с базой данных, а в моём случае файл лежал где-то далеко на шлюзе. Конечно, при каждом старте Home Assistant можно скачивать эту БД и временно сохранять куда-то на сервер ХА. Такой себе "костыль". И выбирая между двух костылей, я остановился именно на варианте с собственной реализацией алгоритма чтения без всяких временных файлов.

Конечно, я не стал полностью повторять спецификацию, и сделал минимально рабочий код, чтоб типичная база именно с этого шлюза могла прочитаться.

Всё работало хорошо до тех пор, пока не появился человек с 30 Mesh-лампами. Дело в том, что большие таблицы с данными сохраняются немного в другом формате, на чтение которого я изначально подзабил.

Но в последней мастер-версии компонента всё поправлено. На случай, если и кто-то из вас решился сделать такую же основательную ставку на Bluetooth Mesh технологию.
Хоть многие WiFi-ненавистники боготворят Zigbee за функцию "роутинга" - именно она является, возможно, основной причиной отказа при использовании этой технологии.

Когда вы пользуетесь WiFi - все устройства подключаются напрямую к роутеру и общаются друг с другом только через него. Исключениями вроде Apple с их функцией AirDrop можно пренебречь.

Когда вы пользуетесь Wi-Fi Mesh технологией, устройства всё ещё подключаются напрямую к вашим роутерам. Если вы выбрали оборудование достойной фирмы - в надёжности связи между самими роутерами не стоит сомневаться.

Когда вы пользуетесь Zigbee с надеждой на функцию роутинга - вам нужно быть очень уверенным, что:

1. Все ваши датчики поддерживают быструю смену роутера. А в случае с некоторыми Xiaomi/Aqara это далеко не так. Легко можно лишиться какого-нибудь датчика на сутки.

2. ПО вашего стика совместимо со всеми роутерами в вашей сети. И опять в случае с устройствами Xiaomi/Aqara это не всегда так.

Использование хабов может улучшить ситуацию не по причине, что это "родное" устройство от того же производителя. А из-за того, что легко можно поставить несколько хабов в географических центрах ваших помещений. И тут речь не именно о Xiaomi-хабе. Это может быть любой хаб или даже несколько стиков, каждый со своей малиной.

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

Напоминаю, что Xiaomi Gateway 3 умеет поддерживать 32 прямых подключения к датчикам и дополнительно к 26 роутерам. Максимальное количество устройств неизвестно, но злоупотреблять в любом случае не стоит.
Сегодня Яндекс выпустил кучу обновлений по Алисе.

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

2. Развитие NLP грамматики. Обязательно ознакомьтесь, если пользуетесь моим компонентом YandexDialogs

https://yandex.ru/blog/dialogs/parad-poleznykh-anonsov-novye-vozmozhnosti-dlya-razrabotchikov-navykov

3. API уведомлений для умного дома. Пока доступны только датчики. Но! Данные теперь обновляются не по запросу от Яндекса, а посылаются в Яндекс из вашего умного дома. Конечно, это ещё надо реализовать в компоненте Дмитрия. И самая заветная фраза:

"теперь можно подключить датчики, а в недалёком будущем — даже настроить автоматизированные сценарии с их использованием"

https://yandex.ru/blog/dialogs/datchiki-v-umnom-dome-s-alisoy-novyy-api

4. В отелях можно использовать преднастроенные колонки с Алисой. Они будут рассказывать всякую полезную информацию о отеле.

"гости смогут использовать свой аккаунт на Яндексе или получить гостевой доступ"

https://yandex.ru/blog/dialogs/novye-vozmozhnosti-dlya-biznesa-integratsii-s-alisoy

5. В Алисе появляются Аудиотокены. По некоторому звуку колонка активирует ваш навык. Примерно как это происходит при настройке WiFi на колонке. История опять доступна только бизнесу 🙁
Написал очередную обучающую статью про Home Assistant.

Хотя статья описывает конкретную ситуацию про борьбу с конкретным провайдером, в ней заложена база для разных полезных идей.

Показан пример как сделать сенсор из HTTP-запроса. Есть пример, как можно принудительно вызвать обновление сенсоров.

И есть пример использования одного из моих любимых кастомов - PythonScriptsPro. Который незаслуженно имеет так мало звёзд на GitHub. Ведь с его помощью можно решить кучу разных задач.

Например, можно делать более сложные HTTP-запросы, чем это позволяют стандартные компоненты. Или выполнять SSH-запросы из Docker контейнера на Host или на роутер, используя привычные логин/пароль. Или сделать сенсор размера файла базы данных без использования Shell-скрипта. Вы ведь помните, что частый вызов Shell-скриптов на слабых однопалатниках это очень дорогая операция? Зачем вам лишние тормоза?

https://sprut.ai/client/blog/3764
Случайно заметил в Node-RED новую ноду get template. Не знаю, когда она появилась, раньше не замечал.

Так вот она позволяет использовать мой компонент морфологии числительных MorphNumbers в Node-RED. Полезно для голосовых уведомлений на колонки и текстовых уведомлений на мобильники.

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

Симбиоз HA и NR настолько крутой, что не имеет смысла пользоваться чем-то одним. А сам NR ставится в пару кликов, если вы пользуетесь Hass.io.

Все мои автоматизации Zigbee кнопок и датчиков движения исполняются именно в Node-RED. Так что, если б были хоть намёки на какие-нибудь тормоза - я бы первым бежал с этого корабля. Но всё работает в лучшем виде не первый год.

https://github.com/AlexxIT/MorphNumbers
Вот вам ещё один лайфхак по работе с шаблонами Jinja2.

Очень часто приходится проверять значения на пустоту. Иначе шаблон развалится. В моём случае телевизор выключен. И если произвести какую-то математическую операцию с значением громкости - шаблон упадёт с ошибкой.

В примере показана простая конструкция проверки. В программировании это называется тернарная условная операция. Только что загуглил этот термин. Всегда называл такую конструкцию - inline if.
Не думал, что моей версией компонента Лампы Гайвера хоть кто-то пользуется. С учётом, что на неё вышло так много альтернативных прошивок. А я, как обычно, поддерживаю устройства именно на оригинальных прошивках.

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

С новым обновлением это всё стало возможно. Поддерживается как настройка через GUI интеграций, так и старым дедовским способом в конфиге yaml.

Вообще такие маленькие проекты очень хорошо позволяют отточить навыки создания компонентов Home Assistant. С этим обновлением я наконец-то научился пользоваться настройками интеграций из GUI. Теперь могу грамотно применить эти знания в других своих компонентах.

Тем, кто решил связать свою жизнь с программированием, я бы советовал поступать аналогичным образом. Если в рамках большого проекта вам необходимо применить новую технологию, с которой не было опыта - опробуйте её на отдельном маленьком проекте или прототипе. Изучите все тонкости работы. И лишь потом внедряйте в код основного проекта. Иначе код основного проекта будет постоянно мешать и отвлекать.

https://www.youtube.com/watch?v=riYsv5k_EdY
В мастер версии Xiaomi Gateway 3 появился просто мега крутой фикс.

Как вы, вероятно, знаете - датчики движения Aqara помимо информации о движении посылают информацию о яркости в помещении. Причём сперва яркость и сразу же за ней движение. Двумя разными сообщениями.

Так вот, если такой датчик подключен через роутер - сообщение о движении могло пропускаться!

Я всё внимательно проверил. Сообщение о движении не доходит до хаба именно на уровне протокола Zigbee. Подозреваю, эта проблема повторяется с любым координатором, в том числе cc2531, cc2538, Conbee и тп.

Но! В Mi Home событие считается движением, даже если от датчика пришла всего лишь освещённость. А вот если приходит сообщение о движении без данных о освещённости - Mi Home такое событие пропускает сам 🤦

Ну а пользователям gw3 переживать не стоит. В следующем релизе всё заработает в лучшем виде из коробки.
На GitHub появилась болталка. По задумке авторов там можно что-то спросить, предложить идею или просто обсудить проект. Не засоряя при этом список issue.

В SonoffLAN счётчик перевалил за 300. А в Home Assistant за 44 тысячи! Количество звёзд на проекте меньше, чем issue 🤦

Включил обсуждения для своих самых больших проектов.
Итак, свершилось. Самое масштабное обновление YandexStation со времён выхода облачного управления. Более тысячи строк нового кода и куча вложенных человеко-часов. Вполне сгодится на версию под номером три.

А самое печальное, "бывалые" пользователи даже не заметят разницу 🙊

Новый код пока в мастер версии, не в релизе, и он умеет:

Мультиаккаунт. Теперь вы можете управлять колонками и лампочками своих близких, если конечно они вам скажут свой логин и пароль.

Настройку через GUI:
- можно забыть о проблеме 30 секунд для двухфакторной авторизации
- можно забыть о проблеме с капчей
- можно забыть о файле .yandex_station.json
- появились человеко-читаемые ошибки авторизации
- меньше поводов для перезагрузки Home Assistant
- вашими станциями можно любоваться в списке устройств

Ну и YAML конфиг всё ещё поддерживается. Всё переедет в новую версию "like a charm".

Рисковые мальчики и девочки могут установить мастер-версию через HACS. И завалить меня сообщениями, чего там в ней отвалилось.
This media is not supported in your browser
VIEW IN TELEGRAM
Развлекаюсь с новым меш лампами. Подтягиваю скорость работы.

Уже написал свою версию протокола miIO в сотню строк кода. В двух вариантах - синхронном и асинхронном.

Вполне выдерживает 100-200 запросов в секунду к одному WiFi устройству.

Научил его максимально быстро запрашивать статус десятков сотен меш ламп при необходимости.
Вот кстати новые лампы. Мнение о них и новом выключателе Yeelight расскажу после пары недель использования. Вероятно уже в следующем году.
Media is too big
VIEW IN TELEGRAM
Обожаю снимать такие видосики. Bluetooth Mesh лампы через Xiaomi Gateway 3. Ну что там, Zigbee напрягся?