ИИ отключили навсегда. Техническое руководство по миру без нейросетей

- -
- 100%
- +
Конкретные GPIO, способ прошивки и вообще возможность заменить заводскую прошивку зависят от устройства. Поэтому не пытайтесь бездумно заливать первый попавшийся конфиг в дорогой выключатель: наша задача — пережить исчезновение ИИ, а не добавить к нему небольшой домашний пожар.
ZigbeeС Zigbee всё ещё приятнее. Устройства этой сети изначально не обязаны разговаривать с облаком производителя. Обычно им нужен хаб — небольшое устройство, связывающее Zigbee-сеть с компьютером.
Подключаем совместимый Zigbee USB-хаб — добро пожаловать на AliExpress — и ставим два небольших компонента: MQTT-брокер Mosquitto и Zigbee2MQTT.
Mosquitto будет нашей локальной почтой для устройств. Одна программа публикует сообщение вроде «температура 23 градуса», другая его получает. Никакого облака и тем более, упаси, нейросети для этого не требуется.
Сам брокер в Debian/Ubuntu ставится так:
sudo apt install -y mosquitto mosquitto-clients
Теперь поставим сам Zigbee2MQTT. Он написан на Node.js и будет мостом между нашим USB-хабом и MQTT. Установим актуальный Node.js вместе с необходимыми зависимостями, а затем заберём Zigbee2MQTT из репозитория:
sudo apt install -y curl && curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - && sudo apt install -y nodejs git make g++ gcc libsystemd-dev && sudo corepack enable
sudo mkdir -p /opt/zigbee2mqtt && sudo chown -R $USER: /opt/zigbee2mqtt && git clone --depth 1 https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt && cd /opt/zigbee2mqtt && pnpm install --frozen-lockfile
Осталось узнать, как Linux назвал наш USB-хаб:
ls -l /dev/serial/by-id/
Скопируйте полученный путь и создайте файл /opt/zigbee2mqtt/data/configuration.yaml с минимальной конфигурацией:
version: 5
mqtt:
server: mqtt://localhost:1883
serial:
port: /dev/serial/by-id/ВАШ_USB_АДАПТЕР
frontend:
enabled: true
Во многих случаях Zigbee2MQTT сам определит тип адаптера. Если нет, придётся добавить в секцию serial строку adapter с типом вашего координатора, например zstack или ember.
Запускаем:
cd /opt/zigbee2mqtt && pnpm start
Если всё прошло удачно, веб-интерфейс появится на http://localhost:8080. Через него можно разрешить подключение новых устройств и начать сопряжение лампочек, датчиков, выключателей и прочего пережившего катастрофу железа.
Zigbee2MQTT подключается к хабу, находит устройства и представляет их в виде MQTT-сообщений. После сопряжения устройства разных производителей оказываются в одной локальной сети и могут управляться без родных приложений.
В результате вместо нескольких облаков у нас получается довольно скучная схема:
устройство → Zigbee → Zigbee2MQTT → MQTT → вы
И в данном случае скучная инфраструктура — именно то, что нам нужно.
Если хочется проверить, что наш новый умный дом действительно разговаривает, можно посмотреть вообще все сообщения:
mosquitto_sub -t '#' -v
Выключатель щёлкнули — сообщение появилось. Датчик движения заметил кота — ещё одно. Никакой магии.
А можно обратно получить приложение?Конечно. Когда устройства снова доступны локально, поверх всего этого можно установить Home Assistant. Он умеет работать с ESPHome, MQTT, Zigbee и огромным количеством других систем и вернёт вам привычные кнопки, переключатели, автоматизации и красивую панель управления.
Но это уже вопрос удобства.
Главную задачу мы решили раньше: лампочке снова не нужен интернет, чтобы включить свет.
2. А поговорить?Хорошо. Кнопки вернулись, лампочки включаются, а шторы снова умеют открываться. Но мы же не для того пережили конец ИИ, чтобы каждый раз тянуться к телефону и нажимать на экран.
Вернём дому голос.
Современный голосовой ассистент кажется чем-то монолитным и невероятно сложным, но для управления домом его можно разложить на несколько довольно простых частей: услышать человека, превратить речь в текст или команду, понять намерение, выполнить действие и, при желании, что-нибудь ответить.
Никакая огромная языковая модель для фразы «открой шторы» нам не нужна.
Раз уж в предыдущем разделе мы познакомились с Home Assistant, воспользуемся его локальным голосовым помощником Assist. Для распознавания команд возьмём Speech-to-Phrase, а для ответа голосом — Piper. Оба компонента могут работать локально: запись голоса не нужно отправлять куда-нибудь в чужое облако, а пропажа очередного провайдера больше не лишит нас возможности попросить дом выключить свет.
Получается довольно простая цепочка:
микрофон → Speech-to-Phrase → Assist → Home Assistant → устройство
А если хочется услышать ответ:
Home Assistant → Piper → динамик
Speech-to-Phrase здесь особенно удобен именно для нашей задачи. Он не пытается понимать бесконечное количество человеческих фраз и вести философские беседы о смысле жизни. Вместо этого он ориентирован на ограниченный набор команд умного дома. Благодаря этому распознавание можно выполнять локально даже на сравнительно слабом железе.
Самый простой микрофон у нас, скорее всего, уже лежит в кармане. Приложение Home Assistant на телефоне позволяет вызвать Assist, произнести команду и получить ответ. Поэтому для первого рабочего варианта отдельную умную колонку покупать, паять или искать среди обломков цивилизации вообще не требуется.
В Home Assistant устанавливаем локальные компоненты Speech-to-Phrase и Piper, после чего в настройках голосового помощника выбираем их соответственно как Speech-to-Text и Text-to-Speech. Сам Assist остаётся тем слоем, который превращает распознанную фразу в конкретное действие над уже подключёнными устройствами.
Теперь команда вроде «открой шторы» проходит полностью внутри нашей инфраструктуры: телефон передаёт голос локальному помощнику, Speech-to-Phrase распознаёт команду, Assist понимает, какие именно шторы имеются в виду, а Home Assistant отправляет действие через ESPHome, Zigbee или MQTT.
И вот здесь становится особенно хорошо видно, насколько избыточной была часть прежней инфраструктуры. Чтобы сказать лампочке включиться, нам совершенно необязательно вести разговор с дата-центром на другом конце континента.
А где «Алиса»?Пока её нет. Наш помощник работает по нажатию кнопки микрофона, а не постоянно прислушивается к комнате в ожидании кодового слова. Для режима «запусти здесь и сейчас» этого достаточно.
Но если вам категорически необходимо снова войти в комнату и властно произнести что-нибудь вроде «Эй, дом!», локальное распознавание ключевого слова тоже существует. К Home Assistant можно подключить отдельный голосовой спутник с микрофоном и динамиком и использовать локальный wake word. Тогда цепочка станет почти такой же, как у привычной умной колонки, только без обязательного путешествия вашей фразы через чужое облако.
Это уже дополнительный комфорт. Сейчас же мы вернули главное: дом снова нас слушает.
3. А музыка?Дом снова слушает нас, но вот музыкальный сервис, похоже, слушать перестал. Умная очередь закончилась, рекомендации больше не строятся, а любимый трек внезапно решил стать ещё любимее, запустившись в третий раз подряд.
Что же, вернём музыку домой тоже.
Для этого возьмём Navidrome — небольшой сервер для собственной музыкальной библиотеки. В отличие от огромных стриминговых платформ ему не нужно знать вкусы половины планеты: достаточно указать папку с музыкой, после чего библиотека станет доступна через браузер и совместимые клиенты на других устройствах.
Для Debian/Ubuntu официальный пакет Navidrome ставится обычным .deb. Скачайте актуальный пакет со страницы релизов проекта и установите его:
sudo apt install ./navidrome_*_linux_amd64.deb
После установки достаточно указать папку с музыкой в /etc/navidrome/navidrome.toml:
MusicFolder = "/home/you/Music"
Убедитесь, что пользователь navidrome может читать эту папку, и запускайте сервер:
sudo systemctl enable --now navidrome
Теперь открываем в браузере http://localhost:4533, создаём первого пользователя-администратора — и наша музыкальная библиотека снова доступна. Если сервер стоит на отдельном компьютере в домашней сети, вместо localhost используйте его IP-адрес.
Navidrome совместим с Subsonic/OpenSubsonic-клиентами, поэтому веб-интерфейс — далеко не единственный способ слушать музыку. Телефон, ноутбук или другой компьютер могут подключаться к одному и тому же серверу и видеть общую библиотеку и плейлисты.
А рекомендации?Возвращаться к папке Music и выбирать каждый следующий трек руками было бы слишком жестоким наказанием даже для пост-ИИ-мира. К счастью, музыкальные рекомендации появились задолго до нынешнего бума генеративных моделей.
Navidrome умеет использовать Last.fm как внешний источник метаданных, похожих исполнителей и похожих композиций. Для этого понадобится бесплатный API key и shared secret Last.fm. После их получения добавьте в тот же /etc/navidrome/navidrome.toml:
LastFM.Enabled = true
LastFM.ApiKey = "ВАШ_API_KEY"
LastFM.Secret = "ВАШ_SHARED_SECRET"
Перезапускаем сервер:
sudo systemctl restart navidrome
После этого Navidrome сможет обращаться к Last.fm за информацией о похожих исполнителях и композициях, а при желании пользователь сможет включить scrobbling и снова накапливать историю своих прослушиваний. То есть рекомендации вернулись, но для их работы не пришлось запускать языковую модель размером с небольшой дата-центр.
Конец ознакомительного фрагмента.
Текст предоставлен ООО «Литрес».
Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.
Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.
1
LSP (Language Server Protocol, протокол языкового сервера) — открытый протокол на основе JSON-RPC, используемый между редакторами исходного кода или IDE и серверами, предоставляющими инструменты анализа кода и языкового интеллекта.
2
GDPR (General Data Protection Regulation, Общий регламент по защите данных) — регламент Европейского союза о защите персональных данных и правилах их обработки. Применяется с 25 мая 2018 года.
3
Бывший Twitter



