AlexxIT Smart Home
8.88K subscribers
338 photos
29 videos
299 links
Заметки про развитие моего умного дома
Все полезные ссылки тут:
https://github.com/AlexxIT
Download Telegram
Так. Я вас дезинформировал. Чтоб позвонить СЕБЕ на колонку с Алисой - опцию "принимать входящие звонки" включать НЕ надо! Себе вы можете позвонить вне зависимости от этой настройки. Эта галка нужна, чтоб вам мог кто-то позвонить. Так что хорошо подумайте, на каких колонках стоит её включать.

Звонить можно из мобильного приложения Яндекс. Для этого нужно войти в Мессенджер (бумажный самолётик сверху справа) и добавить друга, например, по его нику на Яндексе.

Звонок пройдёт на его телефон и на его колонки с включенной опцией "принимать звонки".
Вслед за идеей "тихого звонка на колонку", давайте немного поднимем тему приватности.

Если вы думали, что до этого момента были в безопасности, а теперь вас начнут отчаянно ломать, то это не так.

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

Любое умное устройство с Wi-Fi стоимостью от 300 рублей уже может пустить злоумышленника в ваш дом.

И никакие Apple вас не спасут. Или все забыли историю, как через Facetime можно было провернуть этот самый "тихий звонок" на любой яблочный телефон? А истории про слитые фото Голливудских звёзд или Дзюбы. Думаете, у них был Android?

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

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

Какие-то уязвимости возникают по ошибке, какие-то специально. Самая гениальная дыра в HTTPS существовала более двух лет. Еслиб за такие "закладки" давали нобелевские премии, дыра, несомненно, была достойна такой премии.

Переживаю ли я по поводу камер? Скажем так, я смирился с этим и просто не хожу мимо них без трусов.
Приехала новая кнопка от Sonoff SNZB-01 и... она ужасна. Буд-то инженеры АвтоВАЗ резко поняли, что они делают что-то не то и решили попробовать себя в Zigbee.

К сожалению, в Mi Home, кнопка не работает.

Но! Кнопка поддерживает Zigbee 3, а значит, на ней работает прямой binding. Напоминаю, это настройка прямой связи кнопка => устройство, которая будет работать даже без хаба/стика. И, конечно, я не мог не попробовать её завести на Xiaomi Gateway 3.

Розетка продолжает работать в Mi Home и может управляться с кнопки при выключенном хабе:

https://youtu.be/peRCgClxO0w

Вообще я разочарован функцией биндинга и поэтому не сильно спешу её реализовать в компоненте. Функция поддерживается только на новых кнопках с Zigbee 3, а их не так много в природе. И хитрую логику на ней не построишь.

Например, у кнопки Sonoff одно нажатие - переключает устройство, два нажатия - всегда включает устройство, долгое нажатие - всегда выключает устройство. Всё. Больше вариантов нет.

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

С биндингом так нельзя. Он тупой как валенок. Хоть и позволяет организовать отказоустойчивое управление устройствами.

Ещё конечно бывают пульты-диммеры. Например, Hue, IKEA или Opple. Они могут включать/выключать свет и менять его яркость. Opple даже умеет менять температуру.

Но особой сути это не меняет. Свой Opple на шесть кнопок в режим биндига я не переведу.
Прикупил новую версию iStat Menus. Пользуюсь ими уже много лет, но остановился на 5й версии. Обновление было платным. А сегодня у них скидки в честь Black Friday. Лучше брать версию именно на сайте разработчика, как и любой другой софт для macOS. С одной стороны софт не будет урезан ограничениями App Store. С другой стороны авторы получат порядочно больше денег, чем бы им осталось от злодеев из Купертино.

Пишу про злодеев из Купертино, а сам покупаю софт по скидкам 🙈
Алексей @Rodchenkov из комментариев к инструкции "тихого" звонка предложил вариант, как совершить тихий звонок на колонку с Алисой в один клик через кастомный компонент - button-card (неожиданно).

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

https://youtu.be/Xp0Z91ndnLg

Идентификатор скрипта можно взять из адресной строки браузера при его редактировании. Это довольно большая цифра.

Чтоб с установкой кастомных карточек не было проблем - нужно пользоваться HACS и никаких mode: yaml в configuration.yaml! При этом возможность настраивать интерфейс в формате yaml не теряется, просто переносится... в интерфейс.
Друзья. Вы уже мне как-то помогли с поиском отличной утилиты для преобразования RTSP в WebRTC. Может, поможете и сейчас.

Давно мечтаю реализовать светомузыку. Вероятно, технически это должно быть снятие звука с микрофона на сервере Home Assistant и преобразование его в RGB-цвет. Вообще не было с таким опыта. Накидаете проектов по этому поводу?

Желательно такие примеры, которые потом можно легко завернуть в аддон Hass.io. Можно какие-нибудь готовые библиотеки.
В компоненте YandexStation пополнение.

Как бы странно это не звучало, но компонент помимо колонок поддерживает Кондиционеры и ИК-пульты, заведённые в Умный дом Яндекса.

Тут важно не путать историю с компонентом Дмитрия. Его компонент прокидывает устройства из Home Assistant в умный дом Яндекса. А компонент YandexStation делает наоборот - из умного дома Яндекса назад в Home Assistant.

Вот тут статья, как потратив 9 баксов и 2 минуты своего времени, можно сделать почти любой старый тупой кондиционер умным:
https://sprut.ai/client/blog/3254

Сегодня я добавил поддержку Телевизоров. Обновления пока не в релизе, а в master-версии. Кому не терпится - могут установить её через HACS.

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

Но теперь это больше не проблема. Его будет включать ИК-пульт от Яндекса (Tuya). По команде с Zigbee выключателя Opple.

One more thing...

Чтоб два раза не открывать исходники YandexStation, я добавил поддержку лампочек и выключателей!

Да-да. Теперь можно добавить умную лампочку и умную розетку от Яндекса в Home Assistant. Впрочем, не обязательно от Яндекса. Поддерживаются любые Кондиционеры, Телевизоры, Лампочки и Выключатели, что есть в Яндексе.

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

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

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

PS. Для работы компонента не обязательно иметь колонку от Яндекса!
Так выглядит телевизор, добавленный через ИК-пульт Яндекса (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
👍3
Играюсь с картой сети на 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