A Home Assistant add-on that displays aircraft tracking data from a tar1090 server on an interactive map with full dashboard integration.
- Real-time Aircraft Tracking: Connect to your tar1090 server and display live aircraft positions
- Interactive Map: Leaflet-based map with OpenStreetMap and satellite layers
- Aircraft Details: Click on aircraft for detailed information including callsign, altitude, speed, and track
- Flight History: Optional trail display showing aircraft movement history
- Home Assistant Integration: Seamless dashboard integration with ingress support
- Responsive UI: Dark theme interface optimized for Home Assistant
- Configurable: Customizable update intervals, map center, and display options
-
Install the "Tar1090 Aircraft Tracker" add-on
-
Configure the add-on by clicking on the "Configuration" tab:
- Tar1090 Host: Enter your tar1090 server IP (e.g.,
192.168.1.100) - Tar1090 Port: Usually
8080(default) - Update Interval: How often to fetch data in seconds (1-60)
- Show History: Enable/disable flight trails
- Map Center: Set your location coordinates for map centering
- Map Zoom: Initial zoom level (1=world view, 18=street level)
- Auto Center: Automatically center map on aircraft
- Tar1090 Host: Enter your tar1090 server IP (e.g.,
-
Click Save and then Start the add-on
-
The add-on will appear in your sidebar with an airplane icon
If the add-on method has issues, you can run it standalone:
- SSH into your Home Assistant system
- Install dependencies:
apk add --no-cache py3-flask py3-requests
- Download and run:
wget https://raw.githubusercontent.com/random-robbie/tar1090-tracker/main/simple-start.sh chmod +x simple-start.sh TAR1090_HOST=192.168.1.175 ./simple-start.sh
- Access at
http://your-ha-ip:8099
Once running (either method), integrate into your HA dashboard:
- Edit your dashboard
- Add Card → Webpage Card
- Settings:
- URL:
http://your-ha-ip:8099(for standalone) or use the add-on's ingress URL - Title:
Aircraft Tracker - Aspect Ratio:
16:9(recommended)
- URL:
- Settings → Dashboards → Add Dashboard
- Create new dashboard:
- Type: Panel (iframe)
- URL:
http://your-ha-ip:8099 - Title:
Aircraft Tracker - Icon:
mdi:airplane
- This creates a dedicated full-screen aircraft tracking tab
The best way to integrate aircraft tracking into your Home Assistant dashboard is using the Webpage Card method (Option 1). However, if you want aircraft data as Home Assistant entities:
To show aircraft on Home Assistant's built-in map card, add this to your configuration.yaml:
# Aircraft data sensor
sensor:
- platform: rest
resource: http://192.168.1.212:8099/api/aircraft
name: aircraft_data
json_attributes:
- aircraft
value_template: "{{ value_json.aircraft | length }}"
unit_of_measurement: "aircraft"
scan_interval: 2
# Template device trackers for each aircraft
template:
- sensor:
- name: "Aircraft Count"
state: "{{ state_attr('sensor.aircraft_data', 'aircraft') | length if state_attr('sensor.aircraft_data', 'aircraft') else 0 }}"
unit_of_measurement: "aircraft"
# Device trackers for up to 10 aircraft
device_tracker:
- platform: template
trackers:
aircraft_1:
friendly_name: "Aircraft 1"
latitude_template: >
{% set aircraft = state_attr('sensor.aircraft_data', 'aircraft') %}
{% if aircraft and aircraft|length >= 1 and aircraft[0].lat %}
{{ aircraft[0].lat }}
{% endif %}
longitude_template: >
{% set aircraft = state_attr('sensor.aircraft_data', 'aircraft') %}
{% if aircraft and aircraft|length >= 1 and aircraft[0].lon %}
{{ aircraft[0].lon }}
{% endif %}
attributes_template: >
{% set aircraft = state_attr('sensor.aircraft_data', 'aircraft') %}
{% if aircraft and aircraft|length >= 1 %}
{
"callsign": "{{ aircraft[0].flight | default('Unknown') }}",
"altitude": "{{ aircraft[0].alt_baro | default('N/A') }} ft",
"speed": "{{ aircraft[0].gs | default('N/A') }} kts",
"hex": "{{ aircraft[0].hex }}"
}
{% endif %}
aircraft_2:
friendly_name: "Aircraft 2"
latitude_template: >
{% set aircraft = state_attr('sensor.aircraft_data', 'aircraft') %}
{% if aircraft and aircraft|length >= 2 and aircraft[1].lat %}
{{ aircraft[1].lat }}
{% endif %}
longitude_template: >
{% set aircraft = state_attr('sensor.aircraft_data', 'aircraft') %}
{% if aircraft and aircraft|length >= 2 and aircraft[1].lon %}
{{ aircraft[1].lon }}
{% endif %}
attributes_template: >
{% set aircraft = state_attr('sensor.aircraft_data', 'aircraft') %}
{% if aircraft and aircraft|length >= 2 %}
{
"callsign": "{{ aircraft[1].flight | default('Unknown') }}",
"altitude": "{{ aircraft[1].alt_baro | default('N/A') }} ft",
"speed": "{{ aircraft[1].gs | default('N/A') }} kts",
"hex": "{{ aircraft[1].hex }}"
}
{% endif %}
aircraft_3:
friendly_name: "Aircraft 3"
latitude_template: >
{% set aircraft = state_attr('sensor.aircraft_data', 'aircraft') %}
{% if aircraft and aircraft|length >= 3 and aircraft[2].lat %}
{{ aircraft[2].lat }}
{% endif %}
longitude_template: >
{% set aircraft = state_attr('sensor.aircraft_data', 'aircraft') %}
{% if aircraft and aircraft|length >= 3 and aircraft[2].lon %}
{{ aircraft[2].lon }}
{% endif %}
# Add aircraft_4 through aircraft_10 following the same pattern...Then add this map card to your dashboard:
type: map
entities:
- device_tracker.aircraft_1
- device_tracker.aircraft_2
- device_tracker.aircraft_3
- device_tracker.aircraft_4
- device_tracker.aircraft_5
- device_tracker.aircraft_6
- device_tracker.aircraft_7
- device_tracker.aircraft_8
- device_tracker.aircraft_9
- device_tracker.aircraft_10
auto_fit: true
default_zoom: 8
title: Live Aircraft Map
theme_mode: autoNote: This method shows aircraft as points on the map but has limitations:
- No flight trails or detailed aircraft information
- Less interactive than the full web interface
- Updates limited to Home Assistant's sensor scan intervals
For the best aircraft tracking experience in your dashboard:
- Add a Webpage Card (Option 1 above) - This shows the full interactive map
- Set card height to
400pxor more for better visibility - Position it prominently on your main dashboard
If you have Browser Mod installed:
# In a button card or automation
service: browser_mod.popup
data:
title: "Aircraft Tracker"
content:
type: iframe
url: "http://192.168.1.212:8099"
aspect_ratio: "16:9"Why Webpage Card is Recommended:
- ✅ Full interactive map with aircraft details
- ✅ Real-time updates and flight trails
- ✅ Aircraft information on click
- ✅ No complex configuration needed
- ✅ Works immediately after tracker installation
tar1090_host: "192.168.1.175" # IP address of your tar1090 server
tar1090_port: 8080 # Port of your tar1090 server (usually 8080)
update_interval: 1 # Data update interval in seconds (1-60)
show_history: true # Show aircraft movement trails
map_center_lat: 40.7128 # Map center latitude (your location)
map_center_lon: -74.0060 # Map center longitude (your location)
map_zoom: 8 # Initial map zoom level (1-18)The tracker provides several REST API endpoints:
/api/aircraft- Current aircraft data/api/history- Historical aircraft positions (if enabled)/api/config- Current configuration/api/health- Service health status/api/stats- Aircraft statistics
- A running tar1090 server (part of ADS-B aircraft tracking setup)
- Network access from Home Assistant to the tar1090 server
- For add-on: Home Assistant OS or Supervised installation
- For standalone: Python 3 with Flask and Requests libraries
- Check Home Assistant logs for validation errors
- Ensure repository URL is correct
- Try the standalone installation method
- Verify tar1090 server is running and accessible
- Check network connectivity between HA and tar1090 server
- Confirm tar1090_host and tar1090_port settings
- For ingress mode, use the add-on's internal URL
- For standalone, use
http://your-ha-ip:8099 - Ensure HTTPS/HTTP protocol matches your HA setup
See CHANGELOG.md for a detailed history of changes, new features, and bug fixes in each release.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
For maintainers, use the release script:
./scripts/release.sh 1.0.4 "Added new feature description"This will:
- Update version in config.yaml
- Add changelog entry
- Create git tag
- Push to GitHub
- Trigger automated release
- Issues & Bug Reports: GitHub Issues
- Feature Requests: GitHub Issues
- Discussions: GitHub Discussions
- Changelog: CHANGELOG.md