Home Assistant integration to detect drones via BLE Remote ID broadcasts using ESPHome Bluetooth Proxies.
Since January 2024, all drones sold in the EU must broadcast their identification and location via Bluetooth Low Energy (BLE) according to the Remote ID standard. This integration allows you to detect these drones in your area using your existing ESPHome Bluetooth proxies.
- ๐ธ Drone Detection - Automatically detects drones transmitting BLE Remote ID
- ๐ Real-time Position Tracking - Shows drone position on Home Assistant maps
- ๐ Pilot Location - Displays operator/pilot position when available
- ๐ก Multi-Proxy Support - Uses all your existing ESPHome BLE proxies
- ๐ No Additional Hardware - Works with your existing ESPHome devices
- โก Instant Updates - Real-time data via BLE advertisements
This integration decodes Remote ID broadcasts compliant with:
- ASTM F3411-22a - Standard Specification for Remote ID (FAA)
- ASD-STAN prEN 4709-002 - European Standard for UAS Remote ID (EU)
- Home Assistant 2026.1 or newer
- One or more ESPHome devices with
bluetooth_proxyenabled - Drones in range transmitting BLE Remote ID (mandatory in EU since Jan 2024)
- Open HACS in Home Assistant
- Click the three dots menu (โฎ) โ Custom repositories
- Add
https://github.com/jleinenbach/ha-opendroneidas Integration - Search for "OpenDroneID" in HACS
- Click Download
- Restart Home Assistant
- Download the latest release from GitHub Releases
- Extract and copy
custom_components/opendroneidto yourconfig/custom_components/directory - Restart Home Assistant
- Go to Settings โ Devices & Services
- Click + Add Integration
- Search for "OpenDroneID"
- Configure the inactive timeout (default: 120 seconds)
- Click Submit
That's it! The integration will automatically use all available Bluetooth adapters and ESPHome proxies to detect drones.
| Option | Default | Description |
|---|---|---|
| Inactive Timeout | 120s | Time before a drone is removed after losing signal |
| DragonSync Enabled | Off | Forward drone data to DragonSync via ZMQ |
| DragonSync Host | - | IP address or hostname of DragonSync server |
| DragonSync Port | 4224 | ZMQ port for DragonSync |
If you have DragonSync running, you can forward all detected drone data to its web map. Enable "DragonSync forwarding" and enter your DragonSync server's IP address (e.g., 192.168.1.100).
For each detected drone, the integration creates a device_tracker entity:
| Entity ID | Description |
|---|---|
device_tracker.drone_<id> |
Drone position for map display |
Each drone entity includes these attributes:
| Attribute | Description |
|---|---|
latitude |
Current latitude (WGS84) |
longitude |
Current longitude (WGS84) |
altitude |
Geodetic altitude in meters |
altitude_barometric |
Pressure altitude in meters |
height |
Height above takeoff/ground |
speed |
Horizontal speed in m/s |
vertical_speed |
Vertical speed in m/s |
heading |
Direction in degrees (0-360) |
uas_id |
Drone serial number or registration |
id_type |
ID type (Serial, CAA Registration, etc.) |
ua_type |
Aircraft type (Helicopter, Aeroplane, etc.) |
status |
Operational status (Ground, Airborne, Emergency) |
operator_latitude |
Pilot/operator latitude |
operator_longitude |
Pilot/operator longitude |
operator_id |
Operator registration ID |
rssi |
Signal strength in dBm |
last_seen |
Timestamp of last received message |
| State | Description |
|---|---|
ground |
Drone is on the ground |
airborne |
Drone is flying |
emergency |
Drone declared emergency |
malfunction |
Remote ID system failure |
unknown |
Status not reported |
Ensure your ESPHome devices have Bluetooth proxy enabled:
esp32:
board: esp32dev
framework:
type: esp-idf # Recommended for best BLE performance
bluetooth_proxy:
active: trueTip: For best coverage, distribute multiple ESPHome proxies around your property. The integration will combine data from all proxies.
type: map
entities:
- device_tracker.drone_abc123def456
default_zoom: 15type: entities
title: Detected Drones
entities:
- entity: device_tracker.drone_abc123def456
secondary_info: attribute
attribute: uas_idautomation:
- alias: "Drone Detected Alert"
trigger:
- platform: state
entity_id: device_tracker.drone_abc123def456
to: "airborne"
action:
- service: notify.mobile_app
data:
title: "Drone Detected!"
message: "A drone is flying nearby"โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ ESPHome Proxy โโโโโโถโ Home Assistant โโโโโโถโ Device Tracker โ
โ (BLE Scanner) โ โ (This Integr.) โ โ + Map Display โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โฒ
โ BLE Advertisement
โ Service UUID: 0xFFFA
โ
โโโโโโโโโโโโโโโ
โ Drone โ
โ (Remote ID) โ
โโโโโโโโโโโโโโโ
- Drones broadcast Remote ID data via BLE (Service UUID 0xFFFA)
- ESPHome proxies receive advertisements and forward to Home Assistant
- This integration decodes the OpenDroneID protocol
- Creates device_tracker entities with GPS coordinates
- Entities appear on maps and can trigger automations
- Check ESPHome proxies - Ensure
bluetooth_proxyis enabled and active - Verify BLE range - Remote ID broadcasts have limited range (~300-500m)
- Check drone compliance - Not all drones transmit Remote ID (older models, DIY)
- Enable debug logging:
logger:
logs:
custom_components.opendroneid: debugIncrease the inactive timeout in the integration options.
The drone may not be transmitting location data (e.g., GPS not acquired). Check the status attribute.
This integration only receives publicly broadcast Remote ID data. Drones are legally required to transmit this information for aviation safety. The data received includes:
- Drone identification (serial number or registration)
- Drone position and altitude
- Pilot/operator position
- Flight status
No private data is collected. All information is broadcast openly by the drone per legal requirements.
- opendroneid-core-c - Reference C implementation
- DragonSync - Alternative receiver with dedicated hardware
- Bermuda BLE Trilateration - BLE room presence tracking
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Submit a pull request
For bug reports, please open an issue.
This project is licensed under the MIT License - see the LICENSE file for details.
- OpenDroneID community for protocol documentation
- ESPHome team for the excellent Bluetooth proxy
- Home Assistant community
Note: This integration is not affiliated with any drone manufacturer. Remote ID is a regulatory requirement, not a tracking feature.
