This add-on enables the use of your panel’s Wi-Fi traffic to act as a motion sensor using the ESPectre module. See ESPectre.dev for details on how the module works and for its license conditions.
If the display is blank, and motion is detected, the display wakes up.
For best results you will need to make adjustments in Home Assistant > Settings > Devices > ESPHome for each panel and calibrate with no-one in the room.
Add the reference to addon_espectre in your ESPHome settings in the packages section after the remote_package (base code), as shown below:
substitutions:
# Settings - Editable values
device_name: "YOUR_NSPANEL_NAME"
friendly_name: "Your panel's friendly name"
wifi_ssid: !secret wifi_ssid
wifi_password: !secret wifi_password
language: en # Language code - see docs/localization.md for all supported codes
##### My customization - Start #####
##### My customization - End #####
# Basic and optional configurations
packages:
remote_package:
url: https://github.com/edwardtfn/NSPanel-Easy
ref: latest
refresh: 300s
files:
- nspanel_esphome.yaml # Basic package
# Optional add-on configurations
- esphome/nspanel_esphome_addon_espectre.yaml
The following keys are available to be used in your substitutions. All values must be delimited with "":
| Key | Required | Supported values | Default | Description | | :- | :-: | :-: | :-: | :- | | espectre_ref | no | valid ESPectre release tag | “3.0.0” | ESPectre version control | | espectre_direct_api | no | “false” or “true” | “true” | the direct API is used by the ESPectre App | | espectre_detection_algorithm | no | “high_accuracy” or “lightweight” | “high_accuracy” | see ESPectre docs | | espectre_traffic_generator_mode | no | “ping”, “dns”, “dns_tcp”, “wifi_raw” or “external” | “wifi_raw” | “external” if using ESPectre App as traffic generator |
In General Settings make sure that relay 2 has a visible colour and icon - cyan and mdi:motion-sensor for example.
Head over to ESPectre.dev for details. Getting the balance right between traffic modes may take a bit of work.
[!NOTE] If you have more than a few panels or other devices running ESPectre with default settings you will want to install ESPectre Manager app for Home Assistant and use it to make necessary adjustments, setting traffic mode to External to use its multicast traffic generator for example. Properly configured, there is no problem using a dozen or more panels in combination with ESPectre Manager.
This combination has been tested successfully, but for reliable long-term use a dedicated Bluetooth proxy device is recommended.
This tweak shares airtime without Bluetooth taking too long for its scans and disrupting ESPectre.
esp32:
framework:
type: esp-idf
sdkconfig_options:
CONFIG_ESP_COEX_SW_COEXIST_ENABLE: n
# With Wi-Fi enabled, software_coexistence: false only stops ESPHome from requesting software coexistence,
# ESP-IDF still enables it by default when Wi-Fi and Bluetooth are both in use, so this sdkconfig option is needed.
esp32_ble_tracker:
software_coexistence: false
scan_parameters:
interval: 100ms
window: 5ms
Tested with ESPHome 2026.9.1, ESPectre 3.0.0 and NSPanel-Easy 2026.10.0 with space saving captive_portal: !remove, web_server: !remove.
| Addon(s) | Image | RAM | Flash | Impact | | :- | :-: | :-: | :-: | :- | | base package | | | | | | + ESPectre | 1391455 | 39.9% | 75.8% | easily within capacity on both RAM and Flash | | + ESPectre + climate + climate_backup | 1413351 | 40.5% | 77.0% | minimal increase to RAM or Flash | | + ESPectre + climate + climate_backup + Bluetooth Proxy | 1813615 | 77.2% | 98.8% | RAM is still OK but very little remaining margin on Flash |
[!NOTE] As both the ESPectre code and the base package gain new features over time, the image size is likely to grow and eventually make ESPectre/Bluetooth Proxy coexistence impossible.
substitutions:
wakeup_with_button_press: true
captive_portal: !remove
web_server: !remove
packages:
remote_package:
url: https://github.com/edwardtfn/NSPanel-Easy
files:
- nspanel_esphome.yaml # Base package
- esphome/nspanel_esphome_addon_display_light.yaml
- esphome/nspanel_esphome_addon_espectre.yaml
Image size: 1391455 bytes, RAM: 39.9%, Flash: 75.8%
substitutions:
wakeup_with_button_press: true
backup_heater_relay: "1"
backup_cooler_relay: "0" # Relay 2 status icon is used by ESPectre
climate_backup_delay: "3"
captive_portal: !remove
web_server: !remove
packages:
remote_package:
url: https://github.com/edwardtfn/NSPanel-Easy
files:
- nspanel_esphome.yaml # Base package
- esphome/nspanel_esphome_addon_display_light.yaml
- esphome/nspanel_esphome_addon_climate_backup.yaml
- esphome/nspanel_esphome_addon_climate_dual.yaml
- esphome/nspanel_esphome_addon_espectre.yaml
Image size: 1413351 bytes, RAM: 40.5%, Flash: 77.0%
substitutions:
wakeup_with_button_press: true
backup_heater_relay: "1"
backup_cooler_relay: "0" # Relay 2 status icon is used by ESPectre
climate_backup_delay: "3"
captive_portal: !remove
web_server: !remove
esp32:
framework:
type: esp-idf
sdkconfig_options:
CONFIG_ESP_COEX_SW_COEXIST_ENABLE: n
# With Wi-Fi enabled, software_coexistence: false only stops ESPHome from requesting software coexistence, and
# ESP-IDF still enables it by default when Wi-Fi and Bluetooth are both in use, so this sdkconfig option is needed.
esp32_ble_tracker:
software_coexistence: false
scan_parameters:
interval: 100ms
window: 5ms
packages:
remote_package:
url: https://github.com/edwardtfn/NSPanel-Easy
files:
- nspanel_esphome.yaml # Base package
- esphome/nspanel_esphome_addon_display_light.yaml
- esphome/nspanel_esphome_addon_climate_backup.yaml
- esphome/nspanel_esphome_addon_climate_heat.yaml
- esphome/nspanel_esphome_addon_espectre.yaml
- esphome/nspanel_esphome_addon_bluetooth_proxy.yaml
Image size: 1813615 bytes, RAM: 77.2%, Flash: 98.8%