Я покажу вам кое-что, что навсегда изменит ваше представление о WiFi-роутере, стоящем в вашей гостиной. Это не просто шлюз в интернет. Это радарная система, которая может видеть, как вы дышите.
Не научная фантастика. Физика. И вы можете собрать такую систему сами на этих выходных.
Подождите, что? Мой роутер может меня видеть?
Вот что на самом деле происходит: Современный WiFi (802.11ac/ax) использует технологию под названием beamforming (формирование луча). У вашего роутера несколько антенн, и вместо того чтобы передавать сигнал одинаково во все стороны, он фокусирует луч на ваши устройства. Представьте себе прожектор вместо лампочки, освещающей всё вокруг.
Для этого роутер и устройства постоянно обмениваются обратной связью о сигнале, а именно так называемой BFI (Beamforming Feedback Information). Эти данные точно описывают, как радиоволны отражаются по вашей комнате.
А вот самое интересное: эта обратная связь не зашифрована. Любой может её перехватить. И когда вы, по сути большой мешок с водой, отражающий радиоволны, двигаетесь по комнате, данные BFI меняются. Пройдите через гостиную, и математика буквально покажет ваше перемещение.
Наука простым языком
Ваше тело отражает WiFi-сигналы. Когда вы двигаетесь, отражения меняются. Роутер отслеживает эти изменения для оптимизации силы сигнала. Эти данные отслеживания передаются открыто. Перехватите их, и у вас есть датчик движения, работающий сквозь стены.
Исследователи уже использовали это для обнаружения паттернов дыхания, подсчёта людей в комнате, распознавания жестов и даже идентификации конкретных людей по их походке. Коммерческие продукты, превращающие ваш существующий WiFi в систему обнаружения движения для всего дома, уже существуют.
Последствия для конфиденциальности (да, это тревожно)
Прежде чем мы перейдём к увлекательной части проекта, давайте обсудим главную проблему: это вопрос приватности.
Ваша WiFi-сеть постоянно передаёт информацию, которая может раскрыть:
- Есть ли кто-нибудь дома
- Сколько людей находится в комнате
- Общие паттерны перемещения по вашему дому
- Потенциально, конкретные действия (готовка, сон, физические упражнения)
Кто-то с нужным оборудованием, припарковавшийся у вашего дома, теоретически может перехватить эти данные. Ему не нужно подключаться к вашей сети. Достаточно принимать BFI-фреймы, которые транслирует ваш роутер.
"Та же технология, которая делает ваш WiFi быстрее, делает ваш дом прозрачным для любого, кто знает, куда смотреть."
Это не гипотетический сценарий. Исследовательские статьи уже это продемонстрировали. Единственная причина, по которой это не используется массово, в том, что большинство людей не знает о такой возможности. Это... не лучшая защита.
Зачем строить это самому?
Так зачем я вам это рассказываю? Несколько причин:
1. Понимание модели угроз. Невозможно защититься от того, чего не понимаешь. Увидеть это своими глазами делает угрозу реальной так, как чтение об этом не может.
2. Легитимные применения реально крутые. Обнаружение движения для умного дома без камер. Датчики присутствия для автоматизации. Обнаружение падений для пожилых родственников. Экономия энергии за счёт знания, какие комнаты заняты. И всё это без установки датчиков повсюду.
3. Это по-настоящему увлекательно. Вы превращаете радиоволны в визуализацию физического пространства. Это настоящий киберпанк.
То, что мы строим, это этичный эксперимент только в собственной сети. Вы мониторите свой собственный WiFi, в своём собственном доме, чтобы понять технологию, которой уже пользуетесь. Это не просто законно, это разумно.
Два пути: выберите свой маршрут
Я дам вам два варианта в зависимости от вашего уровня подготовки и того, какое оборудование у вас под рукой.
Путь A: Полный опыт (Linux + Wi-BFI)
- Время: 30-60 минут
- Сложность: Средняя (нужна командная строка)
- Оборудование: Машина с Linux + WiFi-адаптер с режимом мониторинга
- Результат: Визуализация данных BFI в реальном времени, наблюдение за движением на графиках
Путь B: Готовое решение (ESP32 + ESPectre)
- Время: 15-30 минут
- Сложность: Легко (веб-прошивальщик, копирование конфига)
- Оборудование: Плата ESP32-S3 или ESP32-C6 (~$10)
- Результат: Работающий датчик движения в Home Assistant
Путь A: Глубокое погружение в Wi-BFI
Это подход "посмотрите на реальные данные". Вы будете захватывать настоящие BFI-фреймы от роутера и наблюдать, как они меняются при вашем перемещении. Тот же метод, который используют исследователи в научных статьях.
Что вам понадобится
- Машина с Linux — Ubuntu 22.04/24.04 или Raspberry Pi
- WiFi-адаптер с режимом мониторинга — Большинство встроенных чипов Intel/Broadcom/Realtek подойдут. Если нет, USB-донгл за $15, такой как TP-Link AC600 или Alfa AWUS036ACH, решит вопрос.
- Ваш существующий WiFi-роутер — Любой роутер 802.11ac или 802.11ax (по сути любой роутер за последние 5 лет)
Шаг 1: Установка инструментов
Откройте терминал и выполните:
# Install system dependencies
sudo apt update
sudo apt install tshark wireshark aircrack-ng git -y
# Install Miniconda (skip if you already have conda)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b
~/miniconda3/bin/conda init
# Close and reopen terminal after thisШаг 2: Клонирование Wi-BFI
# Get the tool
git clone https://github.com/kfoysalhaque/Wi-BFI.git
cd Wi-BFI
# Create the environment
conda env create -f wi-bfi.yml
conda activate wi-bfiШаг 3: Определение параметров сети
Вам нужно знать канал и ширину полосы вашего роутера. Выполните:
# See your wireless interface name
iw dev
# Or open Wireshark and scan for networksЗапишите имя интерфейса (обычно wlan0 или wlp2s0), канал (например, 36 или 149) и ширину полосы (80MHz типична для 5 ГГц).
Шаг 4: Начало захвата
Откройте два терминала. В первом запустите захват:
cd ~/Wi-BFI/Demo
# Replace values with your actual settings
./angle_collection.sh my_capture wlan0 36 80MHz 1Во втором терминале запустите визуализацию в реальном времени:
cd ~/Wi-BFI
# Replace YOUR_PHONE_MAC with your phone's MAC address
# (find it in your router's admin page or phone settings)
python main_live_plot.py AX SU 4x2 80 YOUR_PHONE_MAC my_capture 1Шаг 5: Наблюдайте за магией
Теперь пройдитесь по комнате. Смотрите на графики. Видите, как колеблются углы и амплитуды? Это ваше тело отражает WiFi-волны. Математика буквально отслеживает ваше перемещение в пространстве.
Встаньте неподвижно, и график стабилизируется. Пройдите мимо телефона, и он резко подскочит. Помашите руками, и вы увидите соответствующие изменения. Это те же самые данные, которые могут использоваться для обнаружения движения, распознавания жестов или... слежки.
Путь B: Простой режим с ESP32
Не хотите возиться с Linux и режимом мониторинга? Возьмите плату ESP32 и получите работающий датчик движения за 15 минут.
Что вам понадобится
- Плата ESP32-S3 или ESP32-C6 — Около $8-12 на Amazon. ESP32-C6 новее и отлично работает.
- Кабель USB-C — Для прошивки платы
- Home Assistant — Необязательно, но рекомендуется для полного опыта
Проект ESPectre
ESPectre это проект с открытым исходным кодом, специально разработанный для превращения вашего WiFi в датчик движения. Он блестящ в своей простоте.
GitHub: github.com/francescopace/espectre
Шаги настройки
1. Прошивка платы — Зайдите на веб-прошивальщик ESPectre (ссылка в репозитории). Подключите ESP32, нажмите flash, готово.
2. Настройка WiFi — Плата создаёт точку доступа. Подключитесь к ней, введите данные вашей домашней WiFi-сети.
3. Добавление в Home Assistant — Если у вас запущен Home Assistant, устройство автоматически обнаруживается как сущность датчика движения. Затем можно настроить автоматизации: включение света при обнаружении движения, оповещения, когда вы отсутствуете, и т.д.
4. Это буквально всё. Теперь у вас есть датчик движения, который работает сквозь стены, не требует прямой видимости и использует существующую WiFi-инфраструктуру.
Применение в реальной жизни
- Присутствие во всём доме: Знайте, какие комнаты заняты, без камер
- Отслеживание сна: Определяйте, когда кто-то в кровати (без носимых устройств)
- Безопасность: Оповещение при обнаружении движения, когда все ушли
- Автоматизация: HVAC, освещение на основе реальной занятости комнат
- Уход за пожилыми: Обнаружение падений, мониторинг активности
Home Assistant: здесь начинается настоящее веселье
Именно здесь мы превращаем крутой научный проект в по-настоящему полезную домашнюю автоматизацию. Как только ваш WiFi-датчик движения подключён к Home Assistant, вы можете создавать автоматизации, для которых обычно потребовались бы десятки PIR-датчиков, камер или дорогих коммерческих систем.
Прелесть WiFi-сенсинга в том, что он работает сквозь стены. Один ESP32 в коридоре может обнаруживать движение в нескольких комнатах. Не нужна прямая видимость. Нет мёртвых зон. Нет батареек, которые нужно менять.
Примеры автоматизаций (YAML для копирования)
1. Свет включается, когда вы входите в комнату:
automation:
- alias: "Living Room Motion Lights"
trigger:
- platform: state
entity_id: binary_sensor.wifi_motion_living_room
to: "on"
condition:
- condition: sun
after: sunset
action:
- service: light.turn_on
target:
entity_id: light.living_room
data:
brightness_pct: 80
transition: 22. Оповещения безопасности в режиме отсутствия:
automation:
- alias: "Motion Alert When Away"
trigger:
- platform: state
entity_id: binary_sensor.wifi_motion_main_floor
to: "on"
condition:
- condition: state
entity_id: input_boolean.away_mode
state: "on"
action:
- service: notify.mobile_app
data:
title: "Motion Detected!"
message: "Movement in the house while you're away."
data:
priority: high
ttl: 03. Умный HVAC на основе занятости комнат:
automation:
- alias: "Office HVAC When Occupied"
trigger:
- platform: state
entity_id: binary_sensor.wifi_motion_office
to: "on"
for:
minutes: 2
action:
- service: climate.set_temperature
target:
entity_id: climate.office
data:
temperature: 72
hvac_mode: heat_cool
- alias: "Office HVAC Standby When Empty"
trigger:
- platform: state
entity_id: binary_sensor.wifi_motion_office
to: "off"
for:
minutes: 15
action:
- service: climate.set_temperature
target:
entity_id: climate.office
data:
temperature: 65
hvac_mode: auto4. Определение времени отхода ко сну (без носимых устройств):
automation:
- alias: "Detect Bedtime"
trigger:
- platform: state
entity_id: binary_sensor.wifi_motion_bedroom
to: "on"
condition:
- condition: time
after: "22:00:00"
before: "02:00:00"
- condition: state
entity_id: binary_sensor.wifi_motion_living_room
state: "off"
for:
minutes: 10
action:
- service: scene.turn_on
target:
entity_id: scene.goodnight
- service: lock.lock
target:
entity_id: lock.front_door
- service: alarm_control_panel.arm_night
target:
entity_id: alarm_control_panel.home5. Уход за пожилыми / оповещение об отсутствии движения:
automation:
- alias: "No Motion Alert - Elder Care"
trigger:
- platform: state
entity_id: binary_sensor.wifi_motion_parents_house
to: "off"
for:
hours: 4
condition:
- condition: time
after: "08:00:00"
before: "22:00:00"
action:
- service: notify.mobile_app
data:
title: "Check on Mom"
message: "No motion detected for 4 hours during daytime."
data:
priority: highПолезные советы для интеграции с Home Assistant
- Несколько датчиков: Разместите 2-3 ESP32 для покрытия всего дома. Один на этаж работает хорошо.
- Настройте чувствительность: Отрегулируйте порог обнаружения в конфигурации ESPectre, чтобы избежать ложных срабатываний от домашних животных.
- Комбинируйте с другими датчиками: Используйте WiFi-движение как детектор "широкого охвата", а затем уточняйте с помощью датчиков дверей/окон для деталей.
- Шаблонные сенсоры: Создайте бинарные сенсоры, объединяющие несколько комнат в зоны (верхний этаж, нижний этаж и т.д.)
- Отслеживание истории: Используйте компонент Recorder для логирования паттернов движения. Полезно для анализа безопасности.
Убийственный сценарий: присутствие во всём доме
Традиционные датчики движения (PIR) обнаруживают только тепло и перемещение. Они не могут определить, сидит ли кто-то неподвижно. WiFi-сенсинг может. Он улавливает мельчайшие движения дыхания, набора текста или просто существования в пространстве.
Это значит, что вы можете создать автоматизации, которые знают, что вы в комнате, даже когда вы тихо работаете за столом. Свет не выключится, потому что вы перестали двигаться. HVAC не снизит температуру, потому что вы читаете книгу.
Это обнаружение присутствия, а не просто обнаружение движения. И вы собрали это за $10.
Идём дальше: добавляем обнаружение движения
Когда у вас есть потоковые данные BFI в реальном времени (из Пути A), вы можете добавить настоящее обнаружение движения примерно в 10 строках Python. Концепция проста: если дисперсия углов превышает порог, что-то двигалось.
import numpy as np
# Assuming you have a stream of angle data
def detect_motion(angle_buffer, threshold=0.5):
"""Returns True if motion detected in recent samples"""
if len(angle_buffer) < 10:
return False
variance = np.var(angle_buffer[-10:])
return variance > threshold
# In your main loop:
if detect_motion(recent_angles):
print("Motion detected!")
# Trigger alert, log event, whatever you wantЭто базовая версия. В научных статьях используются более сложные техники: классификаторы машинного обучения, множественные потоки антенн, временные паттерны, чтобы различать типы движения, считать людей или даже распознавать конкретные действия.
Что это значит для конфиденциальности
Теперь, когда вы видели, как это работает, давайте поговорим о последствиях:
Ваш WiFi всегда передаёт данные. Даже когда вы не используете его активно, роутер и устройства обмениваются BFI-данными. Любой в радиусе действия может перехватить эти фреймы.
Шифрование здесь не помогает. BFI является частью рукопожатия на физическом уровне. Это происходит до шифрования. WPA3, VPN, ничто из этого не имеет значения для этих конкретных данных.
Единственная реальная защита физическая: Клетки Фарадея (непрактично), снижение мощности передатчика (ломает WiFi) или принятие того факта, что паттерн присутствия в вашем доме фактически является публичной информацией в радиусе действия радиосигнала.
Это не про запугивание. Это про информированное согласие. Вы используете технологию с такими свойствами. Теперь вы знаете.
Подведём итоги
Вы только что узнали, что ваш WiFi-роутер, по сути, радарная система, собрали собственный детектор движения на радиоволнах и, надеюсь, получили лучшее понимание того, как невидимые сигналы вокруг нас несут информацию о нашем физическом мире.
Технология нейтральна. Она может использоваться для удобной домашней автоматизации или тревожной слежки. Важно понимать её, чтобы принимать осознанные решения о компромиссах, на которые вы идёте.
И кстати, у вас ещё и крутой проект на выходные, которым можно похвастаться. "Да, я превратил свой WiFi в датчик движения. Ничего особенного."
Довольно круто, правда?
Ресурсы
- Wi-BFI: github.com/kfoysalhaque/Wi-BFI
- ESPectre: github.com/francescopace/espectre
- Научная статья о WiFi-сенсинге: Ищите "WiFi CSI human activity recognition" в Google Scholar для углублённого изучения