Меню
Обо мне Услуги Путь Работайте со мной
Raspberry Pi and smart home components
Умный дом 1 мар, 2026 • 20 мин. чтения

Операция Умный дом: инструктаж для отца и сына

Today my son and I execute our smart home plan. Raspberry Pi 5, follow-me lighting, WiFi sensing. The hardware's ready, the code's tested. Time to build.

Поделиться:
Lee Foropoulos

Lee Foropoulos

20 мин. чтения

Знаете, чего в этом мире и так хватает? Людей, которые рассказывают о том, что когда-нибудь сделают. Мечтатели, сидящие сложа руки, ждущие идеального момента, идеальной настройки, идеального чего-то там. А тем временем жизнь продолжает тикать.

«Я снова почувствовал, как проста и скромна вещь по имени счастье: бокал вина, жареный каштан, убогая жаровня, шум моря. Ничего больше.» Никос Казандзакис, «Грек Зорба»

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

Так что сегодня мы с сыном действуем. План готов. Оборудование подготовлено. Большая часть протестирована по отдельности: автоматизации работают, сенсоры обнаруживают, код компилируется. Теперь посмотрим, работает ли всё вместе. Что-то пойдёт не так? Скорее всего. Мы готовы к трудностям? Безусловно. В этом и весь кайф.

Лучше потерпеть неудачу как Зорба, чем сидеть сложа руки.

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

Миссия

К тому моменту, когда мы будем жарить ужин на гриле сегодня вечером, этот дом будет:

  • Включать свет в комнате, куда вы входите, и плавно гасить за вами, когда выходите
  • Запирать все двери, когда кровать почувствует, что мы заснули
  • Закрывать гараж автоматически, когда мы (опять) забудем
  • Регулировать климат на основе того, какие комнаты реально заняты
  • Генерировать WiFi-шум, чтобы никто снаружи не мог использовать ту же технологию sensing против нас

И Amazon ничего об этом не узнает. Всё работает локально. Без облака. Без подписок. Без сбора данных.

Арсенал (Уже на позициях)

Мозг: Raspberry Pi 5 - ГОТОВ

Эта штука две недели стоит на моём столе, полностью настроенная, ждёт сегодняшнего дня. Pi 5 - это перебор для базовой домашней автоматизации. Я люблю перебор. На нём крутится Raspberry Pi OS Lite, Docker установлен, Portainer работает. Всё, что нужно, это подключить его на постоянное место.

Я выбрал комплект Argon ONE V3 M.2 NVME PCIE Case. Уже собран:

  • M.2 SSD с прошитой ОС (никаких отказов SD-карт)
  • Docker + Portainer установлены и протестированы
  • Контейнер Home Assistant готов к развёртыванию
  • Статический IP назначен в сети

Предполётный чеклист - ВЫПОЛНЕН

  • ☑ Raspberry Pi OS Lite прошит на SSD
  • ☑ SSH включён, учётные данные настроены
  • ☑ Сеть настроена со статическим IP
  • ☑ Docker + Portainer работают
  • ☑ Конфигурационные файлы Home Assistant подготовлены

Сенсоры: Платы ESP32 - ПРОШИТЫ И ПРОТЕСТИРОВАНЫ

Эти маленькие платы ESP32 были самой весёлой частью. В прошлые выходные мы с сыном их прошивали и наблюдали, как данные WiFi-сигнала текут на экран. Работают. Подтверждено.

  1. Блок WiFi Sensing - Обнаруживает движение, измеряя возмущение WiFi-сигнала. Проверено ходьбой по гостиной: улавливает движение сквозь стены на расстоянии 4,5-6 метров.
  2. Блок WiFi Fog - Генерирует шум, чтобы ослепить любой внешний WiFi sensing. Работает в изоляции, создавая прекрасный хаос в пространстве сигналов.

Сегодня интегрируем их в Home Assistant и посмотрим, правильно ли срабатывают автоматизации. Код работает в тестах. Вопрос: работает ли он, когда всё подключено?

(Если хотите понять, почему это важно, читайте мои статьи про WiFi sensing и контрмеры WiFi.)

Существующая инфраструктура - УЖЕ НА МЕСТЕ

Мы не начинаем с нуля. В доме уже есть умные штуки, просто они работают в отдельных приложениях, как куча разрозненных островов. Сегодня мы объединяем королевство:

  • Лампы Philips Hue - Уже установлены по всему дому. Сейчас управляются через приложение Hue. Сегодня: Home Assistant берёт управление.
  • Термостат Ecobee - Уже знает, какие комнаты заняты, через свои сенсоры. Сегодня: интегрируем эти данные.
  • Кровать Eight Sleep - Уже отслеживает, когда я сплю. Сегодня: запускает автоматизацию блокировки.
  • Замки Kwikset (Z-Wave) - Уже на дверях. Сегодня: научатся запираться сами.
  • Гараж MyQ - Уже установлен. Сегодня: больше не нужно возвращаться домой, потому что забыл закрыть.

Суть в том: У вас, вероятно, уже больше умного оборудования, чем вы думаете. Оно просто ещё не общается друг с другом.

Панель управления домашней автоматизацией
К вечеру: всё объединено на одной панели управления

Фаза 1: Инфраструктура (ГОТОВО)

Это работа прошлых выходных. Если следуете за нами позже, вот что мы сделали. Если читали мою статью про Docker, вы знаете, почему мы всё контейнеризировали.

bash# Docker + Portainer - Already running
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER

docker volume create portainer_data
docker run -d -p 9000:9000 --name portainer \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce

Portainer работает на http://raspberrypi.local:9000. Красивый GUI для управления контейнерами. Проверено.

Фаза 2: Home Assistant (ПЕРВАЯ ЗАДАЧА НА СЕГОДНЯ)

Файл docker-compose написан. Директория конфигурации подготовлена. Сегодня запускаем по-настоящему и начинаем подключать устройства.

yaml# docker-compose.yml - ready to deploy
version: '3'
services:
  homeassistant:
    container_name: homeassistant
    image: ghcr.io/home-assistant/home-assistant:stable
    volumes:
      - /home/pi/homeassistant:/config
      - /etc/localtime:/etc/localtime:ro
    restart: unless-stopped
    privileged: true
    network_mode: host

План: Запустить docker-compose up -d, пройти мастер настройки и подключить интеграции одну за другой:

  • Philips Hue - Должен автоматически обнаружиться в сети
  • Ecobee - OAuth-процесс, нужно держать приложение под рукой
  • Eight Sleep - API-интеграция, учётные данные готовы
  • Z-Wave - Вот тут может быть весело, замки бывают капризными
  • MyQ - Просто, уже делал раньше
  • ESPHome - Для устройств ESP32, которые мы прошили в прошлые выходные

Ожидаемая проблема: Z-Wave. У замков всегда характер. Посмотрим.

Крупный план печатной платы с электронными компонентами
Платы ESP32 прошиты, протестированы и готовы к интеграции

Фаза 3: Интеграция WiFi Sensing (САМАЯ ИНТЕРЕСНАЯ ЧАСТЬ)

Блок сенсинга - ГОТОВ К ПОДКЛЮЧЕНИЮ

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

ESP32 уже прошит с ESPHome. Он уже обнаруживает движение через WiFi CSI (Channel State Information). Сегодня подключаем его к Home Assistant и даём имя: binary_sensor.living_room_occupied

Тест: Войти в гостиную. Home Assistant видит это? Если да, мы в деле.

Блок тумана - УРОВЕНЬ ПРИВАТНОСТИ ГОТОВ

Второй ESP32 запускает генератор шума из моей статьи о контрмерах. Он работает на моём стенде уже неделю, создавая прекрасный хаос в WiFi-спектре.

Да, мы используем WiFi sensing для собственной автоматизации, одновременно защищаясь от тех, кто может делать то же самое против нас. Это не лицемерие. Это операционная безопасность. А сын считает, что это самая крутая вещь на свете.

Будущее расширение: 3+3

Цель сегодня - доказать концепцию с одним сенсором и одним устройством тумана. Когда убедимся:

  • 3 устройства сенсинга: Гостиная, кухня, спальня
  • 3 устройства тумана: Распределены по дому для полного покрытия

Это примерно $50 на платы ESP32 для апгрейда всего дома. Но сначала давайте убедимся, что сегодня всё работает.

$50
Общая стоимость плат ESP32 для полного WiFi sensing покрытия дома с 3 сенсорами и 3 устройствами тумана.

Фаза 4: Автоматизации (РАДИ ЧЕГО ВСЁ ЭТО)

Вот к чему всё шло. Эти YAML-файлы написаны, протестированы в голове сотню раз и готовы к вставке. Сработают с первого раза? Давайте выясним.

Автоматизация 1: Свет следует за мной (ГВОЗДЬ ПРОГРАММЫ)

Видение: Входите в комнату, свет поднимается, встречая вас. Уходите, и он гаснет за вами, как почтительный дворецкий. Дом Тони Старка. Вот цель.

Нюанс: Если вы включили свет вручную, система его не трогает. Ваш выбор уважается. Мы отслеживаем это с помощью хелперов input_boolean. Потому что нет ничего хуже автоматизации, которая воюет с тобой.

yaml# configuration.yaml additions
input_text:
  last_occupied_room:
    name: "Last Occupied Room"
    initial: "none"

input_boolean:
  living_room_auto_triggered:
    name: "Living Room Auto Triggered"
  kitchen_auto_triggered:
    name: "Kitchen Auto Triggered"
  bedroom_auto_triggered:
    name: "Bedroom Auto Triggered"

Теперь автоматизация:

yaml# automations.yaml
- alias: "Follow Me - Living Room Entry"
  trigger:
    - platform: state
      entity_id: binary_sensor.living_room_occupied
      to: "on"
  condition:
    - condition: state
      entity_id: light.living_room
      state: "off"
  action:
    # Dim the previous room if it was auto-triggered
    - choose:
        - conditions:
            - condition: template
              value_template: "{{ states('input_text.last_occupied_room') == 'kitchen' }}"
            - condition: state
              entity_id: input_boolean.kitchen_auto_triggered
              state: "on"
          sequence:
            - service: light.turn_on
              target:
                entity_id: light.kitchen
              data:
                brightness_pct: 20
                transition: 3
    # Turn on current room
    - service: light.turn_on
      target:
        entity_id: light.living_room
      data:
        brightness_pct: 100
    - service: input_boolean.turn_on
      target:
        entity_id: input_boolean.living_room_auto_triggered
    - service: input_text.set_value
      target:
        entity_id: input_text.last_occupied_room
      data:
        value: "living_room"

- alias: "Follow Me - Living Room Vacancy"
  trigger:
    - platform: state
      entity_id: binary_sensor.living_room_occupied
      to: "off"
      for:
        minutes: 2
  condition:
    - condition: state
      entity_id: input_boolean.living_room_auto_triggered
      state: "on"
  action:
    - service: light.turn_off
      target:
        entity_id: light.living_room
      data:
        transition: 5
    - service: input_boolean.turn_off
      target:
        entity_id: input_boolean.living_room_auto_triggered

Тест: После развёртывания мы с сыном пойдём по дому и посмотрим, следует ли свет за нами. Если сработает, будем чувствовать себя как в кино. Если нет, будем дебажить за пиццей.

Автоматизация 2: Ночная блокировка (СПОКОЙСТВИЕ)

Сценарий: 22:00. Я ложусь в кровать. Через пять минут Eight Sleep подтверждает, что я действительно сплю (а не просто лежу и листаю ленту). Дом реагирует: все двери запираются, гараж закрывается, если я забыл (опять), термостат переходит в ночной режим, автоматически включённые светильники плавно гаснут.

yaml- alias: "Bedtime - Eight Sleep Triggered Lockdown"
  trigger:
    - platform: state
      entity_id: binary_sensor.eight_sleep_bed_presence
      to: "on"
      for:
        minutes: 5
  condition:
    - condition: time
      after: "21:00:00"
      before: "06:00:00"
  action:
    # Lock all doors
    - service: lock.lock
      target:
        entity_id:
          - lock.front_door
          - lock.back_door
    # Close garage if open
    - service: cover.close_cover
      target:
        entity_id: cover.garage_door
    # Set Ecobee to sleep mode
    - service: climate.set_preset_mode
      target:
        entity_id: climate.ecobee
      data:
        preset_mode: "Sleep"
    # Turn off auto-triggered lights
    - service: light.turn_off
      target:
        entity_id:
          - light.living_room
          - light.kitchen
      data:
        transition: 5

Нет Eight Sleep? Замените триггером по времени (22:30) или обнаружением зарядки телефона. Логика та же.

Автоматизация 3: Автозакрытие гаража (СПАСИТЕЛЬ БРАКА)

Проблема: «Ты закрыл гараж?» Вопрос, который задаётся 3 раза в неделю в этом доме. Больше нет. После 10 минут в открытом состоянии он закрывается сам и присылает уведомление.

yaml- alias: "Garage - Auto Close After 10 Minutes"
  trigger:
    - platform: state
      entity_id: cover.garage_door
      to: "open"
      for:
        minutes: 10
  action:
    - service: cover.close_cover
      target:
        entity_id: cover.garage_door
    - service: notify.mobile_app_your_phone
      data:
        title: "Garage Secured"
        message: "Garage was open for 10 minutes. Auto-closed."
        data:
          tag: "garage-closed"

Автоматизация 4: Умный климат (ЭКОНОМИЯ ЭНЕРГИИ)

Логика: Зачем отапливать пустой дом? Когда наши WiFi-сенсоры говорят, что никого нет дома 30 минут, Ecobee переходит в режим «Отсутствие». Когда кто-то входит, он просыпается.

yaml- alias: "Ecobee - Away When House Empty"
  trigger:
    - platform: state
      entity_id: binary_sensor.home_occupied
      to: "off"
      for:
        minutes: 30
  action:
    - service: climate.set_preset_mode
      target:
        entity_id: climate.ecobee
      data:
        preset_mode: "Away"

- alias: "Ecobee - Home When Occupied"
  trigger:
    - platform: state
      entity_id: binary_sensor.home_occupied
      to: "on"
  condition:
    - condition: state
      entity_id: climate.ecobee
      attribute: preset_mode
      state: "Away"
  action:
    - service: climate.set_preset_mode
      target:
        entity_id: climate.ecobee
      data:
        preset_mode: "Home"

Создание агрегатного сенсора

binary_sensor.home_occupied - это шаблонный сенсор, объединяющий все комнатные сенсоры:

yamltemplate:
  - binary_sensor:
      - name: "Home Occupied"
        state: >
          {{ is_state('binary_sensor.living_room_occupied', 'on')
             or is_state('binary_sensor.kitchen_occupied', 'on')
             or is_state('binary_sensor.bedroom_occupied', 'on') }}

Что может пойти не так? (Весёлая часть)

Вот в чём дело: что-то ОБЯЗАТЕЛЬНО пойдёт не так сегодня. Это не пессимизм, это реальность. И это нормально. В этом весь смысл.

Вероятные кандидаты на сегодняшнее приключение:

  • Замки Z-Wave - У этих штук характер. Сопряжение может потребовать нескольких попыток.
  • Калибровка WiFi-сенсора - На стенде работает, но как будет на рабочем месте?
  • Граничные случаи автоматизации - Что, если кто-то пройдёт через комнату за 2 секунды?
  • Проблема «вчера работало» - Любимая шутка технологий.

Но именно поэтому мы делаем это вместе. Отец и сын, устраняющие неполадки, учащиеся, наверняка спорящие о том, почему YAML не парсится. Вот как на самом деле учишься: строишь что-то реальное, смотришь, как оно ломается, и чинишь.

Шахта Зорбы рухнула. Его реакция? Танцевать на пляже. Что бы ни сломалось сегодня, мы разберёмся. А если не сможем, у нас будет отличная история за ужином.

Философия

Вот что отделяет деятелей от мечтателей:

Мечтатели исследуют месяцами. Читают каждую статью. Ждут «правильное» оборудование. Оптимизируют план, пока он не станет идеальным. Никогда не начинают.

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

Без плана нет пути. Только люди, говорящие ради звука собственного голоса. Но план без исполнения - это просто мечта с дополнительными шагами.

Критерии успеха на сегодня

  • ☐ Home Assistant работает со всеми подключёнными устройствами
  • ☐ WiFi-сенсор обнаруживает движение в гостиной
  • ☐ Следящее освещение работает хотя бы в одной комнате
  • ☐ Автоматизация ночной блокировки активирована
  • ☐ Сын говорит «это как дом Тони Старка»

Что дальше (после сегодняшнего успеха)

Если всё получится, а получится, даже если займёт больше времени, чем ожидалось:

  • Полное развёртывание ESP32 3+3 - Сенсинг в каждой основной комнате, покрытие туманом по всему дому
  • Настенный планшет с панелью управления - Всегда включённая панель в коридоре
  • Локальное голосовое управление - Wyoming/Piper для голосовых команд, не покидающих дом
  • Датчики протечек - Под каждой раковиной и рядом с водонагревателем

Но сначала: сегодня. Сначала: исполнение. Сначала: доказать, что всё это планирование действительно работает.

Чеклист сборки умного дома 0/6

«Жизнь - это то, что с тобой происходит, пока ты строишь другие планы.» Джон Леннон

Неправильно. Жизнь - это то, что происходит, когда ты перестаёшь планировать и начинаешь действовать. Увидимся на другой стороне. Пора идти строить.

How was this article?

Поделиться

Link copied to clipboard!

You Might Also Like

Lee Foropoulos

Lee Foropoulos

Business Development Lead at Lookatmedia, fractional executive, and founder of gotHABITS.

🔔

Ne propustite ni odnoi publikacii

Poluchajte uvedomleniya o novyh statyah. Email ne trebuetsya.

Vy uvidite banner na sajte kogda poyavitsya novaya statya, plyus uvedomlenie brauzera esli razreshite.

Tolko uvedomleniya brauzera. Bez spama.