AlexxIT Smart Home
8.34K subscribers
325 photos
28 videos
291 links
Заметки про развитие моего умного дома
Все полезные ссылки тут:
https://github.com/AlexxIT
Download Telegram
В Яндексе опять полностью поменяли политику своего Яндекс.Плюс. Возможно, официальное появление Spotify на них как-то повлияло.

С августа весь каталог фильмов КиноПоиск HD будет доступен всем владельцам обычной подписки: https://t.me/yandexhq/1087

Кстати я несколько месяцев пользуюсь КиноПоиск HD + Амедиатека. Библиотеки фильмов вполне хватает, чтоб не скучать по вечерам и не искать что-то в других источниках.

Получается вместо 299 рублей можно заплатить 267 рублей (при оплате за год) и получить всё то же самое, что даёт Плюс Мульти и вдобавок доступ к куче сериалов Амедиатеки.
Не все техноблогеры одинаково полезны.

На днях я писал, что люди часто путают обычный Android, растянутый под экран ТВ и Android TV.

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

Rozetked в своём обзоре на OKKO Smart Box кидаются словами Chromecast и AndroidTV. Они есть в описании и тегах к видео. Хотя там ни разу не Android TV.
https://www.youtube.com/watch?v=k9KUORe-EqA

Один энтузиаст даже создал специальный сайт, посвященный этой проблеме. И не поленился добавить туда Sberbank - Okko Smart Box:
https://sites.google.com/view/droid-tv/other/android-aosp

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

Заметили Sberbank в названии приставки? Потому что в Rozetket не сказали, что голосовой поиск (да и всю приставку) делали в их дочерней компании - СберДевайсы.

У Droider был подобный рекламный ролик в феврале. Но там хоть с технологиями не наврали:
https://www.youtube.com/watch?v=jTHRhGqIges
Меня верно поправили, что сайт в прошлом сообщении со списком лже-Android TV не принадлежит Google. Не верьте никому, даже мне 😅
Ещё один пример некомпетентного технического бреда можно было прочитать вчера на сайте cnews.

Тысячи устройств Garmin превратились в «кирпичи». Из-за взлома носимые гаджеты Garmin теперь не умнее обычных механических часов.
https://www.cnews.ru/news/top/2020-07-24_tysyachi_ustrojstv_garmin_prevratilis

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

Причём батареи флагманов хватает, чтоб бегать по часу в день на протяжении недели с посекундной фиксацией GPS+ГЛОНАСС (привет Apple Watch).

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

Такой подход не портит итоговые графики, но позволяет сильно уменьшить размер сохранённых данных о тренировке.

Я это всё знаю, потому что много лет назад сталкивался с форматом FIT и даже писал утилиту для исправления данных пульса в плавательной тренировке в закрытом помещении.
Добавить управление кондиционером в умный дом. Почему это должно быть сложно и дорого?

Постоянные мучения людей в сообществах не давали мне покоя. Поэтому я нашёл силы записать видео и оформить статью:
https://sprut.ai/client/blog/3254

А новая версия YandexStation сможет управлять кондиционерами даже если у вас нет колонок с Алисой.
Я тут недавно писал как всё плохо с лампочками в 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 не решился обозначать, так как не знаю его возможностей в качестве основной платформы умного дома.