# Add-on: BLE Tracker

## Description
This add-on enables your NSPanel to use its internal Bluetooth module to track nearby Bluetooth Low Energy (BLE) devices
using the [ESPHome BLE Tracker component](https://esphome.io/components/esp32_ble_tracker.html).

> [!IMPORTANT]
> Configuring the BLE Tracker on your NSPanel is crucial for enabling device discovery and presence detection functionalities efficiently.
This component should be managed with careful consideration of ESP32's memory capabilities, especially when other Bluetooth components are used concurrently.

## Prerequisites
- The `esp-idf` framework is recommended for the [ESP32 Platform](customization.md#framework-esp-idf) to ensure optimal operation and compatibility when using BLE features.
The `arduino` framework is not advised as it may increase memory usage and impact the performance negatively.

> [!WARNING]
> Using the `arduino` framework can lead to high memory consumption which might interfere with the stability of BLE operations on the NSPanel.
It is crucial to use the `esp-idf` framework to avoid such issues.

## Configuration Steps
1. **Edit Your ESPHome YAML File**: Incorporate the BLE Tracker component into your NSPanel's configuration by adding the necessary entries under the `esp32_ble_tracker:` section as shown below:
    ```yaml
    substitutions:
      device_name: "YOUR_NSPANEL_NAME"        # Set your NSPanel's device name
      friendly_name: "Your Friendly Name"     # Set a friendly display name
      wifi_ssid: !secret wifi_ssid            # Your Wi-Fi SSID
      wifi_password: !secret wifi_password    # Your Wi-Fi password

    # Optional configurations (uncomment if needed)
    ## Add-on for specific tracked devices or automation triggers
    # sensor:
    #   - platform: ble_rssi
    #     mac_address: MAC_ADDRESS_OF_DEVICE
    #     name: "BLE Device RSSI"

    ## If you wanna set non-standard parameters to your BLE tracker, just add like this:
    # esp32_ble_tracker:
    #   scan_parameters:
    #     interval: 1100ms
    #     window: 1100ms
    #     active: true

    # Package Configuration
    packages:
      remote_package:
        url: https://github.com/Blackymas/NSPanel_HA_Blueprint
        ref: main
        refresh: 300s
        files:
          - nspanel_esphome.yaml # Basic NSPanel package
          # Optional packages for advanced features and other add-ons
          - esphome/nspanel_esphome_addon_ble_tracker.yaml # BLE Tracker add-on package
          # - esphome/nspanel_esphome_addon_bluetooth_proxy.yaml
          # - esphome/nspanel_esphome_addon_climate_cool.yaml
          # - esphome/nspanel_esphome_addon_climate_heat.yaml
          # - esphome/nspanel_esphome_addon_climate_dual.yaml
    ```
2. **Update Substitutions**: Customize `"YOUR_NSPANEL_NAME"` and `"Your Friendly Name"` to appropriate identifiers for your device and its Bluetooth functionality.
3. **Save and Upload**: After making the necessary changes, save your configuration file and upload it to your NSPanel via the ESPHome dashboard.

> [!NOTE]
> The first time this component is enabled for an ESP32, the code partition needs to be resized.
> Please flash the ESP32 via USB when adding this to your configuration. After that, you can use OTA updates again.

This configuration allows your NSPanel to efficiently manage Bluetooth connections, acting as a proxy for various BLE operations.
