AlexxIT Smart Home
8.3K subscribers
328 photos
28 videos
292 links
Заметки про развитие моего умного дома
Все полезные ссылки тут:
https://github.com/AlexxIT
Download Telegram
Я тут недавно писал как всё плохо с лампочками в eWeLink API.

Так вот с атрибутами устройств Sonoff POW (мощность) и Sonoff TH (температура) творится вообще адская жесть.

1. По локальному протоколу они приходят в виде чисел с двумя знаками после запятой. Тут вопросов нет.

2. Из облака они приходят в виде строк. Ну ладно, не смертельно. Но! Температура из облака обрубается до 1 знака после запятой. У мощности такой проблемы нет, она и из облака с двумя знаками.

3. Данные о температуре и напряжении из облака не содержат ID сообщения. По ID сообщения можно исключить дубли локальных и облачных команд. Например, при включении/выключении устройств приходят сообщения с ID. А вот при изменении атрибутов - нет!

4. Температура от ZigBee датчиков приходит вообще в виде строки из 4х цифр. Её нужно привести к целому и разделить на 100. А вот температура от Sonoff SC (его давно не выпускают) приходит в виде чисел без знаков после запятой.

5. Sonoff TH сам шлёт новые атрибуты, если они изменились. А Sonoff POW нет! Но! Есть облачная команда, которая заставляет его самостоятельно слать обновления в течении некоторого времени. Именно поэтому в отзывах люди пишут, что POW обновляет атрибуты, только когда открыто мобильное приложение eWeLink. Оно раз в минуту "просит" каждый ваш POW сообщать о изменениях мощности в течении следующей минуты.

Как это всё могло прижиться в одной экосистеме вообще непонятно.
AlexxIT Smart Home
Добавить управление кондиционером в умный дом. Почему это должно быть сложно и дорого? Постоянные мучения людей в сообществах не давали мне покоя. Поэтому я нашёл силы записать видео и оформить статью: https://sprut.ai/client/blog/3254 А новая версия YandexStation…
Тут в комментариях к статье подсказывают, что у реализации ИК-пульта на ESPHome есть очень крутая функция.

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

Яндекс помнит статус кондиционера, если включил его сам (из мобильного приложения или Алисы). Помнит выбранный режим и скорость вентилятора. А мой компонент регулярно этот статус обновляет.

Так что статус Яндекса и Home Assistant синхронизирован в обе стороны. Если не пользоваться настоящим пультом - можно с 95% точность быть уверенным, работает ли кондей и в каком режиме.

А вот перехватывать команды пульта Яндекс не умеет. Но все заинтересованные могут написать в поддержку. Вдруг большое количество заявок на что-то повлияет.

Иметь на руках Яндекс.Пульт не обязательно. Выбираем Умный дом, тема - Предложение:
https://yandex.ru/support/smart-home/feedback.html
Политику Xiaomi по отношению к API своих ZigBee Gateway понять трудно.

У китайского Xiaomi Mijia Gateway второй версии можно легко включить локальный API протокол в мобильном приложении Mi Home. Было время, когда этот протокол не включался через приложение и устройству требовалось вскрытие. Мне досталась проблемная версия хаба. Но, по непонятным причинам, порты открылись без вскрытия.

Европейская версия Xiaomi Gateway не поддерживает локальный протокол. Но есть пара альтернативных прошивок. Не очень популярный путь на сегодняшний день.

Судя по документации, Xiaomi Aqara Gateway тоже поддерживает этот протокол. Но в сообществе нет известного способа включить его на этом хабе.

Веб-консоль разработчика Aqara позволяет включить локальный API на Aqara Air Conditioning Companion третьей версии. У меня есть доступ в эту консоль. Для активации нужен логин/пароль аккаунта Aqara, к которому привязан хаб. Пишите, если кому-то нужно включить API.

На сегодня неизвестно, как включить локальные API у Xiaomi Mijia Gateway третьей версии (на ZigBee 3) и есть ли они там в принципе. Но! Месяц назад появилась информация, как включить Telnet на этом хабе. Программным способом, как я люблю, даже вскрытия не требуется. Сейчас народ вовсю ковыряет, чего хорошего можно получить, имея такой доступ.

https://community.home-assistant.io/t/xiaomi-mijia-smart-multi-mode-gateway-zndmwg03lm-support/159586/61
В Node-RED есть очень крутое архитектурное решение. Это нода function. Если в стандартных нодах отсутствует нужный вам функционал, то имея базовые навыки JavaScript, можно реализовать его на месте.

В Home Assistant для этих целей есть стандартный компонент python_scripts, правда он очень урезан по функционалу.

Например, вы хотите включать радио на колонках с Яндекс Алисой из выпадающего списка всех поддерживаемых радиостанций.

Для этого не нужно ждать, пока я реализую подобный функционал в YandexStation. Нужны базовые навыки python, 15 минут времени и компонент PythonScriptsPro.

https://gist.github.com/AlexxIT/b2a435adb30b9bf91022fccc95267b9b
Придумывали ли вы автоматизацию, где нужно знать, кем была включена лампочка? Юзером или другой автоматизацией?

В Home Assistant состояние каждого устройства, помимо атрибутов, даты изменения (это когда состоние изменилось) и даты обновления (это когда атрибуты изменились, а состояние нет) - хранит Контекст (подробности вызова последнего обновления).

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

Хотите, чтоб автоматизации не трогали устройства, включенные вручную? Теперь вы знаете, что делать!

https://gist.github.com/AlexxIT/99ff662fe26e1db9afe27f2a4dd492e8
Ну вот и транснациональная компания присоединилась к донатам.

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

Сейчас уже всё подлатали. И теперь мой вклад в развитие Яндекс Алисы не ограничивается только компонентами для Home Assistant 😁
Обновление SonoffLAN пролежало в практически готовом состоянии с прошлых выходных. За всю неделю у меня не нашлось сил внимательно проверить все доработки, а их оказалось не мало.

Обновление должно быть особо интересно владельцам Sonoff Pow и Sonoff TH устройств. Ведь оно исправляет все те самые проблемы, о которых я писал в понедельник.

Теперь Pow устройства должны сами слать обновления своих атрибутов в реальном времени. force_update использовать не обязательно, но при желании можете его оставить. Обновления в реальном времени НЕ будут работать для режима mode: local. Я писал причину в прошлом посте. А для пользователей mode: auto (по умолчанию) данные будут прилетать и по локальному и по облачному соединению одновременно.

Так же для пользователей mode: auto (я рекомендую именно его) атрибуты Pow и TH будут приводиться к единому формату. Это позволит избежать дублирования событий и немного снизит нагрузку на весь Home Assistant. У подхода есть один минус - теперь температура будет округляться до одного знака после запятой. Опять же причина в прошлом посте. Если прям очень хотите оба знака - используйте mode: local. Меня просили оставить пользователю свободу выбора 🙂

Теперь компонент гораздо бережнее общается с облаком. Раньше, при большом количестве устройств с force_update, облако могло захлёбываться от запросов на обновление данных и рвало соединение лишний раз. Да и сам облачный запрос на обновление данных стал более оптимальным.

Ещё ранее я использовал собственный Zeroconf (на этом протоколе построена вся локальная работа). Но теперь переключил зависимость на компонент из Home Assistant. Это стало возможно с версии v0.110.0. Но! В теории можно использовать SonoffLAN и на более старой версии. Я не такой злой как создатели Home Assistant и стараюсь писать с обратной совместимостью.

https://github.com/AlexxIT/SonoffLAN/releases/tag/v2.3.1
Ранее я рассказывал, что мобильное приложение eWeLink каждую минуту шлёт запрос каждому вашему Sonoff Pow устройству с "просьбой" обновления атрибутов в течении следующей минуты.

Мне такой подход показался не очень оптимальным. SonoffLAN шлёт "просьбу" на обновление атрибутов раз в час. Причём просит присылать обновления в течении ближайших 2х часов, на всяк пожарный. Можно было бы перейти на раз в сутки, но мало ли. Решил, что час будет "золотой серединой".

Но не всё так радужно. Если пользователь откроет мобильное приложение - оно собьёт таймер устройства своим запросом на минуту. И обновления в Home Assistant снова пропадут на какое-то время.

Впрочем не стоит беспокоиться. Компонент внимательно следит и за этой ситуацией. Если он заметит вмешательство приложения - вступит с ним в неравную битву за этот таймер. Думаю понятно на чьей стороне будет победа.

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

В YandexStation появилась долгожданная поддержка нескольких аккаунтов Telegram. Можете поделиться радостью с аккаунтом близкого человека.

И теперь колонка будет "затыкаться" при попытке озвучить ответ на вопрос из Telegram. Работает не супер хорошо. Но хоть что-то.

https://github.com/AlexxIT/YandexStation/releases/tag/v2.2.4

А ещё добавлена долгожданная поддержка вручную обученных команд на ИК-пульте Яндекса или Tuya.

https://github.com/AlexxIT/YandexStation/releases/tag/v2.2.5
Настало время собрать обратную связь.

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

Я специально не стал указывать варианты ответов, чтоб не ограничивать вашу фантазию.

Если вам ничего не нужно - все равно отметьтесь. Хоть узнаю количество активных читателей.

Без регистрации и СМС
https://forms.gle/cxNsLFwjhbUiiVg46
Сегодня Яндекс обновил GUI и API управления сценариями.

В YandexStation отвалилось облачное управление колонками и TTS на локальных колонках (он работает так же через облако).

Но теперь всё хорошо
https://github.com/AlexxIT/YandexStation/releases/tag/v2.2.7

Ещё я заметил, что невозможно создать сценарий для управления Яндекс Модулем. Не помню, работало ли это раньше. Но теперь точно нельзя управлять модулем через облако 🙁
AlexxIT Smart Home pinned «Настало время собрать обратную связь. Если вам чего-то не хватает в текущих или будущих моих компонентах - самое время об этом заявить. Возможно, большое количество одинаковых пожеланий на что-то повлияет. Я специально не стал указывать варианты ответов…»
Можно подвести промежуточные итоги первого дня. Запросы очень разные и почти не сходятся. Но есть два очевидных лидера.

Dafang. Надо таки добить эту камеру. Тут важно всем понимать, что сервер с Home Assistant как ни крути - промежуточное звено. Между Home Assistant и вашим браузером есть только две протоптанные технологии передачи видео - HLS (компонент stream) и MJPEG (компонент ffmpeg). И смена технологии передачи потока между самой камерой и Home Assistant кардинальных изменений не даст.

Так что задача в общем виде делится на две - научиться получать видео от камеры и научится передавать видео браузеру в режиме real-time.

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

А вот написать интеграцию камер Dafang или научить Home Assistant новой технологии передачи видео в режиме real-time могут значительно меньше людей. Вот такая дилемма.
Схема сравнения систем умного дома. Нарисована по ощущениям. Точные координаты могут незначительно отличаться.

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

1. Платформа Home Assistant, как и многие OpenSource-разработки, не направлена на широкую аудиторию. Она создана гиками для гиков.

100 программистов не заменят одного дизайнера или UI/UX-специалиста. Даже для базовой установки и эксплуатации потребуются некоторые ИТ-навыки и знания.

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

Apple HomeKit из коробки поддерживает не так много устройств. Но если поставить Homebridge и научиться прошивать ESP-шки на RavenCore - количество устройств заметно вырастет. А если выучить странный язык скриптов в шорткатах - можно добиться функционала, сравнимого с возможностями OpenSource-систем. Правда ценой пошатнувшейся психики и способности логически мыслить.

Если вы наконец справились с установкой Home Assistant, это ещё не значит, что вам доступны все прикольные фишки блогеров из Ютуба и статей с тематических сайтов.

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

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

Более сложные автоматизации, удалённый безопасный доступ в ваш умный дом, подключение к платформе Яндекса, обработка голосовых команд через Natural Language Processing (NLP) - это уже следующий уровень мастерства.

Например, я не умею делать Fatality в Mortal Kombat, хотя знаю как они выглядят и видел инструкции, какие кнопки нужно жать. Мои пальцы просто не могут это повторить в нужный момент. Хотя завалить несколько противников на низком уровне сложности доступно многим. При должном упорстве можно даже пару супер-приёмов выучить на любимых бойцах.

Вопрос лишь в том, готовы ли вы ждать, пока ИТ-гиганты принесут технический прогресс в широкие массы. И насколько сильно ваше желание идти в ногу с техническим прогрессом вслед за такими вот энтузиастами:
https://www.forbes.ru/tehnologii/406211-kak-tehnoentuziast-iz-rossii-sobral-za-sutki-1-mln-na-tamagochi-dlya-hakerov
Меня не раз спрашивали, как отправить TTS на колонку с Алисой из командной строки без обвязки в виде Home Assistant.

Исходники YandexStation вполне справятся и с таким кейсом:
https://gist.github.com/AlexxIT/0ba110a4e1214eeac21d2f942f28a1d7
AlexxIT Smart Home
Настало время собрать обратную связь. Если вам чего-то не хватает в текущих или будущих моих компонентах - самое время об этом заявить. Возможно, большое количество одинаковых пожеланий на что-то повлияет. Я специально не стал указывать варианты ответов…
Одним из запросов функциональности была функция: Играть плейлист по ID в компоненте YandexStation

Ну так это уже реализовано месяц назад в версии 2.2.0.

Колонке можно отправить ссылку на песню/альбом/исполнителя/плейлист на сервисе Яндекс.Музыка.

Ссылку можно отправить через поле "воспроизвести текст" в интерфейсе ХА. Компонент сам поймёт, что это ссылка и нужно включить песню, а не произнести это вслух.

И ссылку можно отправить своему Telegram-боту. Если вы подключили его к колонке с Алисой по инструкции из readme.

Работает только на колонках с локальным управлением. На сегодня это маленькая и большая колонка Яндекса и Яндекс Модуль. Тут все вопросы к Яндексу...
Ещё был запрос: Возможность переключать источник выхода большой Яндекс.Станции через вызов службы в HA

Ну так это тоже давно есть.

Тут нужно уяснить важный момент. В работе Media Player я ничего не выдумывал. У Home Assistant есть ряд сервисов по управлению медиа-устройствами. Включить/изменить громкость/перемотать песню и прочее. И для YandexStation, Kodi, Chromecast, Apple TV и прочих - сервисы будут вызываться одинаково.

YandexStation поддерживает почти все сервисы (службы) HA:
https://www.home-assistant.io/integrations/media_player/

А пример, как переключить HDMI выход, я вернул в readme.
Вопрос инструкций по базовой настройке Home Assistant для новичков не остался неуслышанным.

Добрый человек @ignat_vakorin запилил статью, где освещаются вопросы:

- установка аддонов File Editor и Samba
- установка компонентов HACS и YandexStation
- базовая настройка YandexStation
- установка и настройка карточки Mini Media Player
- настройка базовых TTS-скриптов
- подключение Telegram к YandexStation
- подключение и настройка кондиционеров

https://sprut.ai/client/article/3332
Одна картинка может заменить 1000 слов, одно видео - 1000 изображений.

@ignat_vakorin не стал останавливаться на недавней статье и запилил подробнейший видео-гайд про YandexStation и не только.

Видео длится чуть меньше 10 минут, но за ними скрывается огромная работа. Под видео можно и нужно выразить свою благодарность.

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

По моему опыту, реализация GUI обычно занимает не меньше времени, чем написание основного функционала программного обеспечения.

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

https://youtu.be/MAsr3iBiZS8