Комментарии 12
без mqtt я устройства даже не рассматриваю...дома можоржомо и хомасистант... однако mqtt основа этого.. стараюсь делать устройство автономным.. а уже через mqtt связь с другими устройствами и системой умного дома. чтобы в случае чего всё не превратилось в тыкву.
Иметь поддержку TCP/IP + MQTT на выключателе или простейшем датчике, на мой взгляд, и избыточно и дорого. Причем "дорого" не столько поддержка TCP (ESP-01 стоит не дорого), сколько его питание. Поэтому простейшие устройства выгодней делать на mesh сети из nRF24L01+ в паре с ultra-low-power МК. Если это только датчик на двери или окне, то от литиевой CR2032 он способен проработь год или даже более. Или несколько месяцев от LIR2032. Причем напрямую, без DC-DC преобразователя или, тем более AC-DC блока питания!
А уже гейтом MQTT - nRF24L01+ на той же малинке можно получать к этой сети доступ.
Если вы хотите, чтобы ваш умный дом был доступен на смартфоне, то тут ничего не поделаешь. Всё надо будет либо подключать через интернет, либо оснащать сервер двумя сетевыми картами и выводить админку во внешний мир. Более того, вам потребуется либо выделенный адрес, либо какой-нибудь сервис для выведения этого адреса вовне.
Если роутер достаточно надежен, то вполне можно обойтись и одной сетевой картой. Выделенный IP адрес тоже не обязателен. Достаточно, чтобы он был внешним, пусть даже IPv6.
А вот безопасность передачи данных шифрованием в любом случае необходимо обеспечить даже внутри сети. Особенно при использовании радиоканалов. Полагаться на встроенную безопасность того же WiFi я бы не рекомендовал.
Что же касается "админка во внешний мир" - то только с pre-shared ключами. Например, SSH туннель на внутренний proxy, не отказываясь при этом от HTTPS.
Стабильный сервер с хорошим соединением позволит вашим чадам избежать стояния в холодном подъезде по 3 часа, потому что единственный физический ключ есть только у папы, а сервер решил кордампнуть по причине падения IDE жёсткого диска-пенсионера.
Я бы расшифровал это так:
Соединение с интернет должно быть резервировано, например через LTE (или LTE с симкой другого оператора, если основной канал и так LTE). Причем, желательно, не на том же самом роутере, который обеспечивает основной канал, так как роутер тоже может зависнуть.
В идеале, должен быть резервирован и сервер IoT, пусть даже в режиме ограниченной функциональности.
И не забываем о резервном питании. Причем не только роутеров и серверов IoT, но и датчиков охранной сигнализации.
Статья читается так, будто у нас тут в open source большой выбор отличных готовых легко настраиваемых решений, так что выбирайте понравившееся и начинайте использовать. К сожалению, в реальности всё даже близко не так, и даже самые популярные системы часто сводятся наборам костылей и далеко не самой простой настройке с поиском ответов в чатах и в issue на гитхабе. Это не так плохо, но всё же очень сильно отличается от опыта настройки одной кнопкой, который стараются предоставить закрытые коммерческие экосистемы.
Ну и более конкретно прокомментирую часть про голосовых ассистентов, так как я этим сейчас активно занимаюсь:
Один из самых больших проектов на github с открытым кодом голосового помощника называется Leon. Система сделана французом…
…и поэтому поддерживает только два языка: английский и французский. К тому же проект имеет довольно небольшое сообщество и в основном разрабатывается автором. Как следствие, набор модулей, которые обеспечивают интеграцию, довольно скуден.
После, у нас есть JARVIS из Железного Человека. <…> Это позволит вам создавать вашу собственную Сири в пределах отдельно взятой сети.
Интересно, получилось ли у автора создать собственную Сири, или всё же самостоятельная настройка споттера, распознавания голоса и озвучки текста на отдельно взятой малинке всё же сильно выходят за рамки «небольшой конфигурации». Ну, и если ничего не поменялось, то у него была проблема с поддержкой даже не русского, а вообще какой-либо локализации. Так что, вероятно, вам придётся делать форк и переводить все сообщения.
Чуть более популярная чем Jarvis, но уступающая Леону — система Mycroft.
Про эту знаю несколько больше, так как выбрал её и сейчас занимаюсь локализацией. И хорошо, если хотя бы к новому году смогу получить сколько-нибудь работающее решение.
Ядро небольшое, почти всё вынесено в плагины и навыки. Есть какое-никакое сообщество, которое эти навыки пишет и поддерживает. Хотя встречается довольно много говна и палок не самых лучших архитектурных решений. Ядро в интернет ломится за настройками навыков, которые хранятся на сервере, сами навыки за данными. По умному дому более-менее нормальная интеграция есть только с Home Assistant, остальное вам придётся писать с нуля. По музыке есть интеграция со Spotify (если вас не смущает необходимость хранить пароль в открытом виде на чужих серверах).
Хотя система и запускается в докере, но она очень просится в интернет, особенно если вы прикупите себе Mycroft гаджетов.
Только вы их не прикупите, потому что первой версии колонки давно нет в продаже, а со второй компания встряла, и всё висит в статусе «почти готово». Когда они смогут найти производителя, никто толком не знает. Ну а после этого вам придётся дождаться отгрузки всем тем, кто перечислял на неё через краудфандинг в 2018-м. Если всё же смогут выпустить, то есть надежда на взрывной рост сообщества.
В общем, в моём случае история «а настрою-ка я себе голосового ассистента, который будет работать локально и не будет сливать никому данные» подбирается уже к окончанию второго месяца, и он пока умеет только погоду сообщать, да и в интернет при этом поглядывает регулярно.
Хороший обзор.
Да, лично я эту проблему решил переходом га английский. Но это не вариант для всех. Можете поделиться наработками в Микрофте?
Наработки можете посмотреть в репозитории, но в целом всё, что я делаю, и так постепенно попадает в основные ветки репозиториев ядра и навыков. Ну, разве что выбор и настройка TTS и SST — это головная боль (пока остановился на RHVoice и Vosk, но буду продолжать пробовать варианты), и там нужно было дописывать и искать плагины, на которые нет ссылок на официальном сайте.
Когда это всё получится (надеюсь) завести в достаточно полезном для использования виде, постараюсь собрать готовый образ и выложить статьёй на Хабр. Просто кажется, что это мало кому интересно в качестве сырого проекта, хотя спрос на голосового помощника и есть. Обычно всё же хочется, чтобы базовые вещи уже работали сразу из коробки, а дальше можно постепенно улучшать.
Если надумаете попробовать раньше настроить, приходите в чат в Mattermost, там жизни практически нет, но я туда стараюсь кидать информацию, которую нахожу.
А вообще спасибо за обзор, я как-то начал писать своего по фану, без оглядки на существующие, так что было интересно узнать, как там.
Подскажите, вы что используете для Text-to-Speech и Speech-to-Text?
STT — vosk
Впрочем, при необходимости они заменяемы. STT заменяется раннером ядра — например, есть раннер для командной строки для отладки текстом вместо голоса, 20 строк кода, глянул только что. TTS пока через одну заменяемую функцию работает, подключить другие не проблема.
(Если что, у меня своя CMS для сайтов, которой уже 17 лет, до сих пор с актуальными проектами. Так что кое-как в архитектуру умею ;))
Примерно в 1960х, м.б. в журнале "Радио", была схема аналогового выключателя на многих транзисторах, который включал лампочку по хлопку ладоней. В конце 1980х мой приятель раскопал этот журнал и собрал устройство. Когда пришел к нему, он хлопал несколько раз — включилось. Он сказал, что поработает с настройкой. Следущий раз он включил свет обычным выключателем — сказал, что все ладони отбил пока настраивал, а сейчас его сосед ремонт затеял и когда электродрелью стенку сверлит, то электроника включается среди дня.
Мне вспомнилась эта история по прочтении статьи.
Лет 5 назад купил часы, повесил на кухне. Стоит ударить ложкой по тарелке — они на полминуты подсветку включают. ИМХО можно придумать много ненужных функций.
Тут надо учесть вот что. Умный дом должен сам менять температуру, включать кофеварки и управлять лампочками, когда надо. Для того чтобы это «когда надо» определить, нам потребуется куча сенсоров и датчиков.
Вот если он хотя бы отдалённо напоминает что-то из этого списка, тогда да, он умный, в остальных случаях это просто некое «баловство», не более того.
Программируем умный дом