1
0
mirror of https://github.com/esphome/esphome.git synced 2025-11-20 00:35:44 +00:00
Files
esphome/tests/components
Claude 755357b7c6 [motion_map] Add new component for Wi-Fi CSI-based motion detection
This component implements privacy-preserving motion detection using
Wi-Fi Channel State Information (CSI) analysis, inspired by the
ESPectre project.

Features:
- CSI-based motion detection without cameras or microphones
- Binary sensor for motion state (IDLE/MOTION)
- Multiple feature sensors (variance, amplitude, entropy, skewness)
- Configurable thresholds and sensitivity
- ESP32-S3 with ESP-IDF framework support only

Components:
- Core component with CSI capture and analysis
- Binary sensor platform for motion detection
- Sensor platform for CSI feature extraction
- Comprehensive test configuration
- Full documentation with usage examples

The component uses Moving Variance Segmentation algorithm to detect
motion by analyzing variations in Wi-Fi signal propagation patterns.
Perfect for smart home automation, occupancy detection, and
privacy-conscious security applications.
2025-11-17 23:23:40 +00:00
..
2025-09-26 08:53:21 +12:00
2025-11-03 18:29:30 -06:00

How to write C++ ESPHome unit tests

  1. Locate the folder with your component or create a new one with the same name as the component.
  2. Write the tests. You can add as many .cpp and .h files as you need to organize your tests.

IMPORTANT: wrap all your testing code in a unique namespace to avoid linker collisions when compiling testing binaries that combine many components. By convention, this unique namespace is esphome::component::testing (where "component" is the component under test), for example: esphome::uart::testing.

Running component unit tests

(from the repository root)

./script/cpp_unit_test.py component1 component2 ...

The above will compile and run the provided components and their tests.

To run all tests, you can invoke cpp_unit_test.py with the special --all flag:

./script/cpp_unit_test.py --all

To run a specific test suite, you can provide a Google Test filter:

GTEST_FILTER='UART*' ./script/cpp_unit_test.py uart modbus

The process will return 0 for success or nonzero for failure. In case of failure, the errors will be printed out to the console.