AlexxIT Smart Home
7.97K subscribers
321 photos
28 videos
289 links
Заметки про развитие моего умного дома
Все полезные ссылки тут:
https://github.com/AlexxIT
Download Telegram
История первого появления на GitHub:
В ноябре 2019 - SonoffLAN
В январе 2020 - YandexStation
В июне 2020 - HassWP
В августе 2020 - Xiaomi Gateway 3
В апреле 2021 - WebRTC Camera
В августе 2022 - go2rtc

На сегодняшний день это привело к:
- 7 тысяч суммарных звёзд на аккаунте GitHub
- из них 2 тысячи у SonoffLAN
- 46 тысяч скачиваний HassWP
- 44 тысячи скачивания докера go2rtc + 10 тысяч скачиваний бинарника (всего за 5 месяцев)

Посчитать установки интеграций невозможно, GitHub не даёт таких API.

На прошлой неделе вышли в релиз:
- третья версия Xiaomi Gateway 3
- третья версия WebRTC Camera
- первая версия go2rtc
На прошлых выходных распаковал одну из своих TP-Link Tapo камер. Решил посмотреть по поводу поддержки two way audio и погряз на несколько дней.

Закрытый протокол, шифрование, поток MPEG TS, с которым я раньше не работал, и нестандартные кодеки внутри этого протокола.

Вчера вышел релиз и с поддержкой two way audio на этих камерах. И с отправкой потокового аудио или TTS на любые камеры, для которых go2rtc поддерживает TTS.

Автор интеграции Tapo в Home Assistant, целый вечер изучал мой код и наконец-то смог добавить функцию скачки видео с этих камер. Фича висела открытой более двух лет, а проблема реализации была связана с неправильным применением шифрования.

Я тоже помучался с этой проблемой в рамках реализации. Но на поиски решения ушло два дня.

https://github.com/JurajNyiri/pytapo/issues/4
В 2022 году я провёл без бега всего несколько дней. В начале февраля меня уложил Covid. А 18 марта - кишечная инфекция. Конечно можно было собрать волю и пробежать символические 3 км в эти дни, но тогда я решил, что оно того не стоит.

Это значит, что 18 марта 2023 (сегодня), я во второй раз в жизни, закрываю челлендж по ежедневному бегу в течении года.

Технический прогресс пришёл в нашу жизнь не только в виде смартфонов и умных лампочек. В любительском спорте появилась возможность следить за уровнем максимального потребления кислорода (МПК/VO2max) в бытовых условиях. Это универсальный показатель, отражающий выносливость организма.

Сейчас у меня он около 50. Что вполне соответствует лёгкому, но регулярному бегу.

У бегунов-разрядников он около 60. У профи около 70. У мировой элиты около 80. У офисного работника с лёгкой формой ожирения - около 30.

На поддержание организма во время сна расходуется около 3 единиц. Такие дела.
Описал часть нововведений последнего релиза go2rtc 1.3.0 в статье на Хабре:

- стриминг с камер пылесосов Roborock! Да-да, это мобильная роботизированная батарейная камера с двухсторонней аудиосвязью
- двухстороннюю аудиосвязь для Hikvision ISAPI
- быстрый, лёгкий и безопасный шаринг любых потоков камер с помощью технологии WebTorrent (открывать внешний доступ к серверу не нужно)
- получение потока с камер в удалённых закрытых сетях, опять же по технологии WebTorrent
- превращение камеры любого мобильника в IP-камеру в пару кликов
- стриминг экрана компьютера из OBS Studio или браузера Google Chrome

https://habr.com/ru/post/724482/
Вчера выпустил сразу несколько новых релизов.

Как вы возможно знаете, этот год объявлен разработчиками Home Assistant, как год голосового управления. И вот только в версии 2023.5 появилось что-то интересное.

Это локальный движок для распознавания речи - Whisper. И механизм конструирования своих голосовых помощников, так называемый Assist pipeline.

До вчерашнего дня эти новшества поддерживало всего две интеграции. Это ESPHome с микрофоном и динамиком, через которую можно говорить с ХА. И VOIP, где с помощью специального SIP телефона можно позвонить на ваш ХА.

Ни того, ни другого у меня нет. Зато у меня есть очень много разных камер и колонок. Так появилась интеграция StreamAssist.

https://github.com/AlexxIT/StreamAssist

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

Whisper это аддон ХА. Значит попробовать новые голосовые возможности могли только пользователи HassOS и Supervisor.

Чтоб это исправить, я за пару часов набросал FasterWhisper интеграцию. Которая работает на любой версии ХА.

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

На скриншоте HassWP + FasterWhisper + StreamAssist + WebRTC Camera + go2rtc + стриминг mp3-файла с песней по RTSP 🙈

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

Впрочем, у вас есть все возможности сделать вывод самостоятельно. И пожалуйста, научитесь думать своей головой. Этого так сильно не хватает в современном мире.
#gateway3
Начинается новая эпоха в развитии Xiaomi шлюзов - эпоха Ключей.

В недавнем обновлении прошивки Xiaomi Multimode Gateway v1.5.5 был закрыт неофициальный способ выполнить произвольную команду на шлюзе.

На его место пришёл официальный способ. Но он требует "ключ" шлюза (не путать с токеном). Ключ зашивается на заводе и никогда не меняется. Узнать его можно только получив полный доступ к шлюзу.

Поэтому интеграция Xiaomi Gateway 3, начиная с версии v3.3.0, автоматически скачает и сохранит этот ключ в настройках интеграции.

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

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

https://github.com/AlexxIT/XiaomiGateway3/releases/tag/v3.3.0
#go2rtc
Марафон очередных бессонных ночей закончен в виде нового релиза go2rtc.

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

Из большого и сложного появилась базовая поддержка стриминга в Apple HomeKit. Этим конечно сейчас никого не удивишь. Такое умеют разные open source решения.

Зато никто из них не умеет trasparent proxy для HomeKit камер (например Aqara). Это когда камера продолжает работать в экосистеме Apple с полной поддержкой всех своих функций. И дополнительно можно с неё забрать RTSP, WebRTC, MSE, снапшоты и прочее.

А ещё никто из них не имеет маленького и полностью автономного приложения в 5 МБайт, которое можно запустить прям на железе камеры.

Например, разработчик альтернативных прошивок для дешёвых и популярных китайских камер Wyze, добавил go2rtc в качестве основного стримингового ядра на эти камеры. А это значит, что с новым релизом поддержка HomeKit появится прям на них. А, в перспективе, и на других камерах.

Изменений очень много, поэтому релиз может быть не супер стабилен.

https://github.com/AlexxIT/go2rtc/releases/tag/v1.7.0
Решил немного отвлечься и реализовать очень старую задумку - голосовое управление офисной кофеваркой.

Как это выглядит (осторожно, в видео есть слово Алиса!):
https://www.youtube.com/watch?v=NzvDjmDLbJE

Как это работает:
https://habr.com/ru/articles/759858/
Please open Telegram to view this post
VIEW IN TELEGRAM
#go2rtc
Обновления получили сразу два проекта - go2rtc и WebRTC.

1. В go2rtc появилась механика шаринга потока на популярные стриминговые сервисы - YouTube, Telegram и др.

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

Есть один минус - сервера Telegram добавляют к трансляции задержку примерно в 10 секунд. На YouTube я видел задержку менее двух секунд. Тут я готов посотрудничать с командой Павла @durov, чтоб догнать и перегнать этот показатель YouTube. Пишите - сделаем из Telegram топовую стриминговую платформу.

2. Также в go2rtc появилась поддержка two-way audio для протокола DVRIP. Популярные безымянные камеры из Поднебесной.

3. И поддержка two-way audio появилась в карточке WebRTC.

---

На скриншоте выше демонстрация четырёх технологий стриминга камеры за серым IP-адресом (без публичного внешнего доступа):

1. SSH Tunnel - самый сложный в настройке способ. У меня на GitHub есть такой аддон.

2. Telegram - трансляция поддерживается в мобильных и настольных приложениях. Видно отставание потока.

3. WebTorrent - поддерживается в go2rtc довольно давно, есть статья на Хабре.

4. HomeKit - для внешнего доступа нужен "центр умного дома" Apple, у меня это старый iPad Air 2 на постоянном питании. Трансляция на доли секунды опережает WebRTC.

Ещё в список можно добавить сервисы Ngrok и Dataplicity. В бесплатной версии оба позволяют закрепить за своим сервером один публичный адрес.
Полностью посвятить себя любимому делу можно не только программируя что-то там на GitHub.

Уже много лет Искандер @yadgarovblog вдохновляет тысячи бегунов своим стилем жизни. Обычный (бывший) программист Яндекса занимал призовые места на разных забегах (когда-то) в России, а теперь уже в мире.

Чтоб было не так скучно (иначе зачем это всё), он бежал Амстердамский полумарафон на прошлых выходных в "костюме" Форреста Гампа. Но самое примечательное (почему я и пишу этот пост) - он специально не брился несколько недель, для более тонкой передачи образа культового персонажа.

За внимание к деталям, снимаю шляпу:
https://t.me/yadgarovblog

А тем временем прошёл 578й день моего челленджа "ни дня без бега".

PS. А ещё сегодня профиль GitHub перевалил за 10000 суммарных звёзд...
На прошлой неделе, без лишнего пафоса, произошло значимое событие в индустрии видео стриминга. Вышел релиз iOS 17.1 с поддержкой технологии MSE.

Именно на этой технологии 80% браузеров отображают потоковое видео последние несколько лет. А с новым релизом цифра может подняться до 90-95%.

По заявлению инженера Apple, технологию не пускали на яблочные телефоны из-за высокого энергопотребления. Тут сложно поспорить, если потоковое видео не открывается - телефон проживёт дольше.

На мой взгляд, Apple специально тормозит развитие индустрии, чтоб продлить жизнь собственной стриминговой технологии HLS.

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

В последних версиях go2rtc и WebRTC Camera всё уже поддерживается. Интеграция автоматически определит, на какой технологии лучше всего отобразить потоковое видео на вашем текущем устройстве.

Чем MSE лучше WebRTC:
- поддержка большего количества кодеков (H265, AAC, и другие)
- меньше проблем с внешним доступом
- нет потерь на высоких битрейтах видео
- поддержка неквадратного пикселя и перевёрнутого видео (не во всех браузерах)

На идеальном сетевом канале и качественном видео-потоке задержка MSE сравнима с WebRTC.

https://developer.apple.com/videos/play/wwdc2023/10122/
Через пару недель можно будет посмотреть на меня вживую, пообщаться и даже послушать доклады на конференциях VideoTech и юбилейной HighLoad.

На первой будет про историю создания go2rtc и разное про видео-стриминг. На второй про тонкости Golang внутри go2rtc.

Забавно. В описании одного из докладов есть цифры скачивания go2rtc. Так вот они уже не актуальны и подросли в полтора раза...

PS. А сегодня, тем временем, 600-й день ежедневного бега.

https://t.me/HighLoadChannel/3408
https://habr.com/ru/companies/jugru/articles/769996/
#go2rtc
Давно мечтал поснимать свои пробежки от первого лица. На прошлой неделе идея стала настолько навязчивой, что не удержался от покупки GoPro.

GoPro это в первую очередь камера. А что мы делаем с камерами? Правильно, добавляем их в go2rtc.

Сегодняшний релиз уже поддерживает модели с HERO9 по HERO12. Более старые имеют другие API. Добавлю по возможности.
На днях Яндекс выпустил фичу "активации по голосу" почти на всех своих колонках.

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

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

https://github.com/AlexxIT/YandexStation/wiki/VoiceSensor
Вчера неожиданно прошло 18 марта. А это значит, что челлендж ежедневного бега перевалил за отметку два года подряд.

Было ли сложно? 95% времени - нет. Бег стал более привычным занятием, чем чистка зубов.

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

Но сильнее всего отражаются в памяти самые трудные дни. В январе я слёг с современной формой коронавируса. Был выбор между "оборвать бег после 20 месяцев подряд" или "получить шанс внезапной остановки сердца".

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

Интересный факт. Лёгкий бег при температуре -20 в течении 30 минут хорошо сбивает температуру тела с 38+ градусов до положенных 36.6.

Теория известного доктора о сбивании температуры тела путём вдыхания прохладного воздуха очень даже работает. Даже интересно её ещё раз испытать в будущих болезнях.
Три года назад проект Zigbee2MQTT выпустил шуточную интеграцию с Xiamoli cloud.
В тот же день я выпустил вполне нешуточную интеграцию Zigbee2MQTT с шлюзами Xiaomi.

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

А также добавлена поддержка дочерних Matter устройств для шлюза Xiaomi Multimode Gateway 2 EU. Она появилась в евро версии с недавним обновлением прошивки. Пока особой пользы в таких устройствах в MiHome нет. Они не могут участвовать в автоматизациях.

Автоматизации MiHome довольно "детские", но их можно использовать для добавления отказоустойчивости вашему умному дому. Например, настроить управление "Zigbee, Mesh и Wi-Fi" светом с "Zigbee или BLE" кнопок и датчиков. Такие автоматизации вполне могут исполняться локально на шлюзе. Тогда при падении Интернета или сервера вашего умного дома (например, Home Assistant) - свет продолжит управляться.

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

PS. Известны случаи, что новый Xiaomi Multimode Gateway 2 с завода может иметь проблемы с Zigbee устройствами. Рекомендуется выполнить полный сброс (10 кликов на кнопку).

PS. Сразу после покупки получите и надёжно сохраните ключ шлюза. Иначе после обновления прошивки вам прийдётся использовать паяльник для подключения шлюза к Home Assistant.

https://github.com/AlexxIT/XiaomiGateway3/releases/tag/v4.0.0
Наверное, впервые в умном доме... караоке

Посмотреть
https://youtu.be/K8w_867i7qA

Попробовать
https://t.me/AlexxIT_Releases
#go2rtc
У программистов есть привычка - запускать Doom на любой железке, которая попадётся под руку.

У меня есть привычка - добавлять в go2rtc любую стриминговую технологию, которая попадётся под руку.

Пару дней назад я узнал о забавном способе отображать анимацию в формате ASCII-графики в текстовой консоли сервера.

Всего 150 строк кода, и вы можете повторить такой трюк дома с новой версией go2rtc.

https://www.youtube.com/watch?v=sHj_3h_sX7M
#go2rtc
Меня всегда завораживала карта Zigbee сети. Большую карту интересно разглядывать, как произведение искусства.

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

Идея проекта go2rtc не просто реализовывать базовую функцию стриминга. Но и выполнять некую обучающую роль. Чтоб люди, далёкие от видео индустрии, могли на простых и живых примерах понять, насколько глубока эта кроличья нора.

https://youtu.be/ZzePTFl0QFk