
espectre snapshot-dev
ESPectre — система обнаружения движения на основе анализа Wi-Fi спектра (CSI) с интеграцией с Home Assistant.
🛜 ESPectre 👻
Система обнаружения движения на основе анализа Wi-Fi спектра (CSI), с нативной интеграцией Home Assistant через ESPHome.
[!TIP] Новый ML-детектор: Обнаружение движения на основе нейронной сети. Не требует калибровки, работает на устройстве. Это экспериментальная функция, и мы приветствуем обратную связь в специальном обсуждении ML-детектора. Также доступна снапшот-сборка с последними изменениями (используйте ресурсы
-mlдля детектора на основе машинного обучения) или следуйте руководству по настройке для пользовательской конфигурации.
Содержание
- В трёх пунктах
- Что вам нужно
- Быстрый старт
- Как это работает
- Что с этим можно делать
- Руководство по размещению датчика
- Архитектура системы
- Часто задаваемые вопросы
- Безопасность и конфиденциальность
- Техническое погружение
- Стратегия двух платформ
- Будущее развитие
- Документация
- Медиа
- Связанные проекты
- Благодарности
- Лицензия
- Автор
В трёх пунктах
- Что оно делает: Обнаруживает движение с помощью Wi-Fi (без камер, без микрофонов)
- Что вам нужно: Устройство ESP32 за ~€10 (рекомендуются S3 и C6, поддерживаются другие варианты)
- Время настройки: 10-15 минут
Что вам нужно
Оборудование
- Wi-Fi роутер 2.4 ГГц - тот, что у вас уже есть дома, отлично подходит
- ESP32 с поддержкой CSI - ESP32-C6, ESP32-S3, ESP32-C3, ESP32 (оригинальный) или другие варианты. См. SETUP.md для полной таблицы сравнения платформ.
ESP32-S3 DevKit с внешними антеннами
Программное обеспечение (всё бесплатно)
- Home Assistant (на Raspberry Pi, ПК, NAS или в облаке)
- ESPHome (интегрирован в Home Assistant или отдельно)
Необходимые навыки
- Базовые знания YAML для конфигурации
- Знакомство с Home Assistant (необязательно, но рекомендуется)
- НЕ требуется программирование
- НЕ требуется настройка роутера
Быстрый старт
Время настройки: ~10-15 минут
Сложность: Легко (только конфигурация YAML)
- Настройка и установка: Следуйте полному руководству в SETUP.md
- Настройка: Оптимизируйте для вашего окружения с помощью TUNING.md
Панель Home Assistant с обнаружением движения в реальном времени, управлением порогом и отладочными датчиками
Как это работает
Когда кто-то движется в комнате, он «возмущает» волны Wi-Fi, распространяющиеся между роутером и датчиком. Это похоже на то, как вы двигаете рукой перед фонариком и видите, как меняется тень.
Устройство ESP32 «слушает» эти изменения и определяет, есть ли движение.
Преимущества
- Нет камер (полная конфиденциальность)
- Не нужны носимые устройства (никаких браслетов или датчиков)
- Работает сквозь стены (Wi-Fi проходит через стены)
- Очень дёшево (~€10 всего)
Хотите понять технические детали? Смотрите ALGORITHMS.md для объяснения CSI и документации по обработке сигналов.
Что с этим можно делать
Практические примеры
- Домашняя безопасность: Получать оповещение, если кто-то входит, когда вас нет
- Уход за пожилыми: Отслеживать активность для обнаружения падений или длительного бездействия
- Умная автоматизация: Включать свет/отопление только тогда, когда кто-то присутствует
- Энергосбережение: Автоматически выключать устройства в пустых комнатах
- Мониторинг детей: Оповещение, если ребёнок покидает комнату ночью
- Климат-контроль: Обогрев/охлаждение только занятых зон
Где разместить датчик
Оптимальное размещение датчика имеет решающее значение для надёжного обнаружения движения.
Рекомендуемое расстояние от роутера
Оптимальный диапазон: 3-8 метров
| Расстояние | Сигнал | Многолучёвость | Чувствительность | Шум | Рекомендация |
|---|---|---|---|---|---|
| < 2м | Слишком сильный | Минимальная | Низкая | Низкий | ❌ Слишком близко |
| 3-8м | Сильный | Хорошая | Высокая | Низкий | ✅ Оптимально |
| > 10-15м | Слабый | Переменная | Низкая | Высокий | ❌ Слишком далеко |
Советы по размещению
Делайте:
- Расположите датчик в контролируемой зоне (не обязательно на прямой линии с роутером)
- Высота: 1-1.5 метра от земли (высота стола)
- Внешняя антенна: используйте разъём IPEX для лучшего приёма
Не делайте:
- Избегайте металлических препятствий между роутером и датчиком (холодильники, металлические шкафы)
- Избегайте углов или замкнутых пространств (уменьшает многолучевое разнообразие)
Архитектура системы
Конвейер обработки```
┌─────────────┐ │ CSI Data │ Raw Wi-Fi Channel State Information └──────┬──────┘ │ ▼ ┌─────────────┐ │ Gain Lock │ AGC/FFT stabilization (~3 seconds) │ │ Locks hardware gain for stable measurements └──────┬──────┘ │ ▼ ┌─────────────┐ │ Auto │ Automatic subcarrier selection (once at boot) │ Calibration │ Selects optimal 12 subcarriers (NBVI) └──────┬──────┘ │ ▼ ┌─────────────┐ │ Adaptive │ auto: P95 × 1.1 | min: P100 │ Threshold │ or fixed manual value └──────┬──────┘ │ ▼ ┌─────────────┐ │ Hampel │ Turbulence outlier removal │ Filter │ (enabled by default) └──────┬──────┘ │ ▼ ┌─────────────┐ │ Low-pass │ Noise reduction (smoothing) │ Filter │ (optional, disabled by default) └──────┬──────┘ │ ▼ ┌─────────────┐ │ Detection │ MVS or ML score │ Evaluation │ every evaluation_interval packets └──────┬──────┘ │ ▼ ┌─────────────┐ │ Hit Filter │ motion_on_hits / motion_off_hits │ │ edge-driven IDLE ↔ MOTION └──────┬──────┘ │ ▼ ┌─────────────┐ │ Home │ Edge-driven motion binary + │ Assistant │ periodic Movement Score / Threshold └─────────────┘
### Один или несколько датчиков```
┌─────────┐ ┌─────────┐ ┌─────────┐
│ ESP32 │ │ ESP32 │ │ ESP32 │
│ Room 1 │ │ Room 2 │ │ Room 3 │
└────┬────┘ └────┬────┘ └────┬────┘
│ │ │
└────────────┴────────────┘
│
│ ESPHome Native API
▼
┌────────────────────┐
│ Home Assistant │
│ (Auto-discovery) │
└────────────────────┘
Каждый датчик автоматически обнаруживается Home Assistant с помощью:
- Бинарного датчика для обнаружения движения, сообщается немедленно по изменению состояния
- Датчика оценки движения, сообщается с периодическим интервалом
- Регулируемого порога (числовой объект)
Автоматический выбор поднесущих
ESPectre реализует NBVI (Normalized Band Variance Index) для автоматического выбора поднесущих, достигая почти оптимальной производительности (F1>96%) без ручной настройки. Алгоритм выбирает 12 непоследовательных поднесущих на основе показателей стабильности и спектрального разнообразия.
⚠️ ВАЖНО (режим MVS): Оставьте комнату тихой и неподвижной в течение 10 секунд после запуска устройства. Автоматическая калибровка выполняется в это время, и движение повлияет на точность обнаружения. Режим ML пропускает калибровку.
Подробности алгоритма см. в ALGORITHMS.md.
Часто задаваемые вопросы
Нажмите, чтобы развернуть FAQ
В: Нужны ли знания программирования для использования?
О: Нет! ESPectre использует файлы конфигурации YAML. Просто скачайте пример, прошейте его и настройте Wi-Fi через приложение ESPHome или веб-интерфейс.
В: Работает ли с моим роутером?
О: Да, если ваш роутер поддерживает Wi-Fi 2,4 ГГц (практически все современные роутеры это имеют).
В: Сколько это стоит в общей сложности?
О: Оборудование: ~€10 за устройство ESP32 (рекомендуется S3/C6, другие варианты тоже работают). Программное обеспечение: всё бесплатно и с открытым исходным кодом. Также вам понадобится работающий Home Assistant (Raspberry Pi ~€35-50 или любой существующий ПК/NAS).
В: Нужно ли что-то менять в роутере?
О: Нет! Роутер работает нормально. Датчик «слушает» сигналы Wi-Fi, ничего не изменяя.
В: Работает ли сквозь стены?
О: Да, сигнал Wi-Fi 2,4 ГГц проникает через гипсокартон. Стены из армированного бетона снижают чувствительность, но обнаружение остается возможным на уменьшенных расстояниях.
В: Сколько датчиков нужно для дома?
О: Зависит от размера. Один датчик может контролировать ~50 м². Для больших домов используйте несколько датчиков (1 датчик на каждые 50-70 м² для оптимального покрытия).
В: Может ли система различать людей и домашних животных?
О: Система использует двухсостоятельную модель сегментации (IDLE/MOTION), которая определяет общее движение, не различая людей, животных или другие движущиеся объекты. Для более сложной классификации (люди против животных, распознавание активности, обнаружение жестов) потребуются обученные модели ИИ/МО (см. раздел Будущее развитие).
В: Работает ли с mesh-сетями Wi-Fi?
О: Да, работает нормально. Убедитесь, что ESP32 подключается к диапазону 2,4 ГГц.
В: Насколько точное обнаружение?
О: Точность обнаружения сильно зависит от окружения и требует правильной настройки. Факторы, влияющие на производительность: планировка комнаты, материалы стен, расположение мебели, расстояние до роутера (оптимально: 3-8 м) и уровень помех. В оптимальных условиях с правильной настройкой система обеспечивает надежное обнаружение движения. Настройте параметр segmentation_threshold для регулировки чувствительности под ваше конкретное окружение.
В: Какое энергопотребление?
О: ~500 мВт в типичном режиме непрерывной работы. Прошивка включает поддержку оптимизации энергопотребления, а режимы глубокого сна могут быть реализованы для развертывания на батарейках, хотя для этого потребуются индивидуальные модификации кода.
В: Если не работает, могу ли я получить помощь?
О: Да, откройте Issue на GitHub или свяжитесь со мной по электронной почте.
Безопасность и конфиденциальность
Конфиденциальность, безопасность и этические соображения (нажмите, чтобы развернуть)
Характер собираемых данных
Система собирает анонимные данные, связанные с физическими характеристиками радиоканала Wi-Fi:
- Амплитуды и фазы поднесущих OFDM
- Статистические дисперсии сигнала
- НЕ собираются: личные данные, содержимое коммуникаций, изображения, аудио
Данные CSI представляют собой только свойства среды передачи и не содержат прямой идентифицирующей информации.
Преимущества для конфиденциальности
- Нет камер: уважение к визуальной конфиденциальности
- Нет микрофонов: без аудиозаписи
- Носимых устройств не требуется: не требует носимых устройств
- Агрегированные данные: только статистические показатели, а не необработанные идентифицирующие данные
⚠️ Отказ от ответственности и этические соображения
ПРЕДУПРЕЖДЕНИЕ: Несмотря на внутреннюю анонимность данных CSI, эта система может использоваться для:
- Несогласованного мониторинга: обнаружение присутствия/движения людей без их явного согласия
- Профилирования поведения: с помощью продвинутых моделей ИИ, выведение шаблонов повседневной жизни
- Нарушения домашней конфиденциальности: отслеживание активности внутри частных домов
Ответственность за использование
Пользователь несет единоличную ответственность за использование этой системы и должен:
- Получить явное согласие от всех наблюдаемых лиц
- Соблюдать местные нормативные акты (GDPR в ЕС, местные законы о конфиденциальности)
- Четко информировать о наличии системы зондирования
- Ограничить использование законными целями (домашняя безопасность, личная домашняя автоматизация)
- Защитить данные с помощью шифрования и контролируемого доступа
- НЕ использовать для незаконного наблюдения, преследования или нарушения конфиденциальности других лиц
Техническое углубление
Подробности алгоритмов (MVS, калибровка NBVI, фильтр Хампеля) см. в ALGORITHMS.md.
Показатели производительности (матрица ошибок, F1-мера, бенчмарки) см. в PERFORMANCE.md.
Стратегия двух платформ
Этот проект использует двухплатформенный подход для баланса между скоростью инноваций и стабильностью производства:
ESPectre (Этот репозиторий) - Платформа для производства
Цель: Конечные пользователи, энтузиасты умного дома, пользователи Home Assistant
- Компонент ESPHome с нативной интеграцией в Home Assistant
- Конфигурация YAML - не требуется программирования
- Автообнаружение - устройства появляются автоматически в Home Assistant
- Готовность к эксплуатации - стабильно, протестировано, легко развертывается
- Демонстрационное - представляет результаты исследований в удобном для пользователя пакете
Micro-ESPectre - Платформа для исследований и разработок
Цель: Исследователи, разработчики, академические/промышленные приложения
- Реализация на Python/MicroPython для быстрого прототипирования
- На основе MQTT - гибкая интеграция (не ограничивается Home Assistant)
- Быстрая итерация - тестирование новых алгоритмов за секунды, а не минуты
- Инструменты анализа - полный набор для анализа данных CSI
- Сценарии использования: Академические исследования, промышленное зондирование, разработка алгоритмов
Micro-ESPectre предоставляет основы для:
- Подсчета людей
- Распознавания активности (ходьба, падение, сидение, сон)
- Локализации и отслеживания
- Распознавания жестов
Порядок разработки```
┌─────────────────────┐ Validated ┌──────────────────────┐ │ Micro-ESPectre │ ─────────────────► │ ESPectre │ │ (R&D Platform) │ algorithms │ (Production Platform)│ │ │ │ │ │ • Fast prototyping │ │ • ESPHome component │ │ • Algorithm testing │ │ • Home Assistant │ │ • Data analysis │ │ • End-user ready │ │ • MQTT flexibility │ │ • Native API │ └─────────────────────┘ └──────────────────────┘
**Цикл инноваций**: Новые функции и алгоритмы сначала разрабатываются и валидируются в Micro-ESPectre (Python), затем портируются в ESPectre (C++) после доказательства эффективности.
---
## Будущее развитие
В то время как ESPectre v2.x сосредоточен на **обнаружении движения** (MVS + автоматический выбор поднесущей), проект исследует возможности машинного обучения для продвинутых приложений:
| Возможность | Статус | Описание |
|------------|--------|-------------|
| **ML Detector** | Экспериментальный | Нейронная сеть (MLP 9→32→16→1)|
| **Распознавание жестов** | Запланировано | Обнаружение жестов рук (свайп, толчок, круг) для управления умным домом |
| **Распознавание активности человека** | Запланировано | Определение действий (сидение, ходьба, падение) |
| **Подсчёт людей** | Запланировано | Оценка количества людей в комнате |
| **3D-локализация** | Исследование | Внутреннее позиционирование (точность 30-50 см) с помощью когерентной по фазе антенной решётки |
ML Detector уже доступен с параметром `detection_algorithm: ml` в вашей YAML-конфигурации. Подробности об алгоритме см. в [ALGORITHMS.md](https://github.com/francescopace/espectre/blob/HEAD/micro-espectre/ALGORITHMS.md#ml-neural-network-detector), а текущие метрики — в `PERFORMANCE.md`.
Инфраструктура сбора данных и обучения ML описана в [ML_DATA_COLLECTION.md](https://github.com/francescopace/espectre/blob/HEAD/micro-espectre/ML_DATA_COLLECTION.md).
Подробные планы, сроки и информацию о том, как внести вклад, см. в [ROADMAP.md](https://github.com/francescopace/espectre/blob/HEAD/ROADMAP.md).
---
## Документация
### ESPectre (Продукт)
| Документ | Описание |
|----------|-------------|
| [Введение](https://github.com/francescopace/espectre/blob/HEAD/README.md) | (Этот файл) Обзор проекта, быстрый старт, FAQ |
| [Руководство по настройке](https://github.com/francescopace/espectre/blob/HEAD/SETUP.md) | Установка и настройка с ESPHome |
| [Руководство по настройке параметров](https://github.com/francescopace/espectre/blob/HEAD/TUNING.md) | Настройка параметров для оптимального обнаружения |
| [Производительность](https://github.com/francescopace/espectre/blob/HEAD/PERFORMANCE.md) | Бенчмарки, матрица ошибок, F1-мера |
| [Игра](https://github.com/francescopace/espectre/blob/HEAD/docs/game/README.md) | Браузерная игра, USB-потоковый API, интерактивная настройка порога |
| [Набор тестов](https://github.com/francescopace/espectre/blob/HEAD/test/README.md) | Документация тестов PlatformIO Unity |
### Micro-ESPectre (R&D)
| Документ | Описание |
|----------|-------------|
| [Введение](https://github.com/francescopace/espectre/blob/HEAD/micro-espectre/README.md) | Обзор R&D-платформы, CLI, MQTT, веб-монитор |
| [Алгоритмы](https://github.com/francescopace/espectre/blob/HEAD/micro-espectre/ALGORITHMS.md) | Научная документация MVS, калибровки NBVI, фильтра Хэмпеля |
| [Инструменты анализа](https://github.com/francescopace/espectre/blob/HEAD/micro-espectre/tools/README.md) | Скрипты анализа и оптимизации CSI |
| [Сбор данных ML](https://github.com/francescopace/espectre/blob/HEAD/micro-espectre/ML_DATA_COLLECTION.md) | Создание размеченных наборов данных для машинного обучения |
| [Ссылки](https://github.com/francescopace/espectre/blob/HEAD/micro-espectre/README.md#references) | Академические статьи и исследовательские ресурсы |
### Проект
| Документ | Описание |
|----------|-------------|
| [Дорожная карта](https://github.com/francescopace/espectre/blob/HEAD/ROADMAP.md) | Видение проекта и планы по ML |
| [Участие](https://github.com/francescopace/espectre/blob/HEAD/CONTRIBUTING.md) | Как внести вклад (код, данные, документация) |
| [История изменений](https://github.com/francescopace/espectre/blob/HEAD/CHANGELOG.md) | История версий и примечания к релизам |
| [Безопасность](https://github.com/francescopace/espectre/blob/HEAD/SECURITY.md) | Политика безопасности и сообщение об уязвимостях |
| [Кодекс поведения](https://github.com/francescopace/espectre/blob/HEAD/CODE_OF_CONDUCT.md) | Правила сообщества |
---
## Медиа
| Статьи | Название |
|-------------|-------|
| Medium | [How I Turned My Wi-Fi Into a Motion Sensor - Part 1](https://medium.com/@francesco.pace/how-i-turned-my-wi-fi-into-a-motion-sensor-61a631a9b4ec?sk=c7f79130d78b0545fce4a228a6a79af3&utm_source=github&utm_medium=readme&utm_campaign=espectre) |
| Medium | [How I Turned My Wi-Fi Into a Motion Sensor - Part 2](https://medium.com/@francesco.pace/how-i-turned-my-wi-fi-into-a-motion-sensor-part-2-62038130e530?sk=7c8b6f11cf3fcb8d279648016ebff72a&utm_source=github&utm_medium=readme&utm_campaign=espectre) |
| IoT For All | [How I Turned My Wi-Fi Into a Motion Sensor](https://www.iotforall.com/wifi-motion-sensor-iot) |
| Hackaday | [Make Your Own ESP32-Based Person Sensor, No Special Hardware Needed](https://hackaday.com/2026/01/28/make-your-own-esp32-based-person-sensor-no-special-hardware-needed/) |
| Adafruit Learn | [ESPectre Human Detector for Feather](https://learn.adafruit.com/espectre-human-detector-for-feather) |
| Seeed Studio Wiki | [Deploying Espectre on Seeed Studio XIAO ESP32 Series with ESPHome](https://wiki.seeedstudio.com/xiao-esp32--series-espresense/) |
| Блог | Обсуждение |
|----------|------------|
| Home Assistant | [ESPectre - Wi-Fi Motion Detection for Home Assistant](https://community.home-assistant.io/t/espectre-wi-fi-motion-detection-for-home-assistant/961251) |
| Видео | Видео |
|---------|-------|
| @GithubAwesome | [ESPectre](https://www.youtube.com/shorts/iQ_DPHLn8ms) |
| Подкасты | Выпуск |
|-------------|---------|
| Hackaday | [Podcast Episode 355: Person Detectors, Walkie Talkies, Open Smartphones...](https://hackaday.com/2026/01/30/hackaday-podcast-episode-355-person-detectors-walkie-talkies-open-smartphones-and-a-wifi-traffic-light/) |
---
## Связанные проекты
- [radio-presence-scanner](https://github.com/francescopace/radio-presence-scanner): дополняющий проект для определения присутствия, ориентированный на наблюдения BLE-радио с хост-устройств (Python), с опциональной HTTP-панелью управления.
- [micropython-esp32-csi](https://github.com/francescopace/micropython-esp32-csi): кастомный форк MicroPython, открывающий доступ к API CSI ESP32, используемый как прошивочная основа для быстрого прототипирования CSI в рабочем процессе Micro-ESPectre.
---
## Благодарности
ESPectre использует нативные возможности CSI Wi-Fi чипов ESP32. Спасибо [Espressif](https://www.espressif.com/) за то, что сделали CSI доступным в фреймворке ESP-IDF и признали ESPectre [проектом сообщества](https://github.com/espressif/esp-csi#6-related-resources) в своём репозитории [esp-csi](https://github.com/espressif/esp-csi).
---
## Лицензия
Этот проект выпущен под лицензией **GNU General Public License v3.0 (GPLv3)**.
GPLv3 гарантирует, что:
- Программное обеспечение остаётся свободным и с открытым исходным кодом
- Каждый может использовать, изучать, модифицировать и распространять его
- Модификации должны распространяться под той же лицензией
- Защищаются права конечных пользователей и свобода ПО
Полный текст лицензии см. в [LICENSE](https://github.com/francescopace/espectre/blob/HEAD/LICENSE).
Вклады принимаются на условиях GPLv3 и должны содержать DCO-метку
`Signed-off-by` в каждом коммите (`git commit -s`).
## Автор
**Франческо Паче**
Email: [[email protected]](mailto:[email protected])
LinkedIn: [linkedin.com/in/francescopace](https://www.linkedin.com/in/francescopace/)
Если вы считаете ESPectre полезным и хотите поддержать его разработку, вы можете угостить меня кофе. Это совершенно необязательно.
Я работаю над этим проектом, потому что я увлечён им. Ваши пожертвования помогают мне покупать новое оборудование для расширения списка протестированных и поддерживаемых устройств, а также уделять больше времени новым функциям.
<a href="https://www.buymeacoffee.com/espectre" target="_blank"><img src="https://assets.kitploit.com/production/public/readmes/9574/a7e8174c892355a24fbaec083cbef385d097a0b488fd4823dbbb0061643bb5e2.png" alt="Buy Me A Coffee" style="height: 60px !important;width: 217px !important;" ></a>