Track court availability from Eversports directly in Home Assistant.
- Availability Monitoring: Check free slots for specific sports and facilities.
- Detailed Attributes: Get next slot time, available count, and more.
- Calendar Integration: View all available slots directly in your calendar.
- Binary Sensor: Simple "Yes/No" sensor for available slots.
- Health Checks: Automatic Home Assistant Repair notification if data cannot be fetched for 24 hours (e.g., due to API or website changes).
- Easy Configuration: Simple setup via the Home Assistant UI.
- Open HACS in your Home Assistant instance.
- Click the three dots in the top right corner and select Custom repositories.
- Add
https://github.com/FaserF/ha-eversportswith category Integration. - Search for Eversports and click Download.
- Restart Home Assistant.
- Download the latest Release.
- Extract the ZIP file.
- Copy the
custom_components/eversportsfolder to your<config_dir>/custom_components/directory. - Restart Home Assistant.
- Go to Settings -> Devices & Services.
- Click Add Integration.
- Search for Eversports.
- Follow the configuration steps providing your Facility ID, Sport, and Court IDs.
- Visit the booking page of your facility on Eversports.
- Open your browser's Developer Tools (F12) and go to the Network tab.
- Refresh the page and look for a request starting with
https://www.eversports.de/widget/api/slot?. - The URL contains the
facilityId,sport, andcourts[]parameters you need.
Here are some examples of how you can use the Eversports sensors in your Home Assistant automations.
1. Persistent Notification when a slot becomes available
This automation sends a notification to the Home Assistant frontend whenever a new slot is found.
alias: "Eversports: Notify available slot"
trigger:
- platform: state
entity_id: sensor.eversports_squash_next_available
condition:
- condition: not
conditions:
- condition: state
entity_id: sensor.eversports_squash_next_available
state: "Keine freien Slots"
action:
- service: notify.persistent_notification
data:
title: "Squash Slot Available! 🎾"
message: >
A slot is available at {{ states('sensor.eversports_squash_next_available') }}.
Total free slots today: {{ state_attr('sensor.eversports_squash_next_available', 'available_slots_count') }}2. Mobile Notification (App/Telegram) with details
Get a push notification on your phone with the exact time and a list of all available slots.
alias: "Eversports: Mobile Alert"
trigger:
- platform: state
entity_id: sensor.eversports_squash_next_available
condition:
- condition: not
conditions:
- condition: state
entity_id: sensor.eversports_squash_next_available
state: "Keine freien Slots"
action:
- service: notify.mobile_app_your_phone
data:
title: "Eversports Squash"
message: >
Next free slot: {{ states('sensor.eversports_squash_next_available') }}
All times: {{ state_attr('sensor.eversports_squash_next_available', 'available_slots_list') | join(', ') }}
data:
clickAction: "https://www.eversports.de/s/{{ state_attr('sensor.eversports_squash_next_available', 'facility_id') }}"3. Custom Markdown Card for Dashboard
Use this template in a manual Markdown Card to get a beautiful overview of available times.
### Eversports Squash 🎾
{% set state = states('sensor.eversports_squash_next_available') %}
{% if state != 'Keine freien Slots' %}
**Next Slot:** {{ state }}
**Free today:** {{ state_attr('sensor.eversports_squash_next_available', 'available_slots_count') }}
**Available Times:**
{% for time in state_attr('sensor.eversports_squash_next_available', 'available_slots_list') %}
- {{ time }}
{% endfor %}
[Book now](https://www.eversports.de/s/{{ state_attr('sensor.eversports_squash_next_available', 'facility_id') }})
{% else %}
*Currently no slots available for today.*
{% endif %}
4. Alert if integration stops working (24h failure)
Since we implemented a repair issue, you can also monitor the "last update" attribute to get an early warning.
alias: "Eversports: API Failure Alert"
trigger:
- platform: template
value_template: >
{{ (now() - as_datetime(state_attr('sensor.eversports_squash_next_available', 'last_update'))).total_seconds() > 86400 }}
action:
- service: notify.persistent_notification
data:
title: "Eversports Timeout"
message: "The Eversports integration hasn't updated for 24 hours. Check the Repairs section!"If you see a Home Assistant Repair issue, it means the integration hasn't been able to fetch data for 24 hours. This usually happens if Eversports changes their website structure. Please check for updates or open an issue.
To enable debug logging, add this to your configuration.yaml:
logger:
default: info
logs:
custom_components.eversports: debugIf you like this integration, feel free to give it a star on GitHub! ⭐ Documentation is mostly based on the community's effort. Contributions are welcome.