{"id":25728923,"url":"https://github.com/faserf/ha-dieliga","last_synced_at":"2026-05-10T10:56:52.074Z","repository":{"id":278605097,"uuid":"872040432","full_name":"FaserF/ha-dieliga","owner":"FaserF","description":"Homeassistant integration for \"dieLiga\" based ranking sites","archived":false,"fork":false,"pushed_at":"2025-02-20T16:54:55.000Z","size":17,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-20T17:42:57.741Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FaserF.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"faserf","custom":"https://paypal.me/FaserF"}},"created_at":"2024-10-13T16:20:47.000Z","updated_at":"2025-02-20T16:54:57.000Z","dependencies_parsed_at":"2025-02-22T05:31:12.868Z","dependency_job_id":null,"html_url":"https://github.com/FaserF/ha-dieliga","commit_stats":null,"previous_names":["faserf/ha-dieliga"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FaserF%2Fha-dieliga","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FaserF%2Fha-dieliga/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FaserF%2Fha-dieliga/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FaserF%2Fha-dieliga/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FaserF","download_url":"https://codeload.github.com/FaserF/ha-dieliga/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240770629,"owners_count":19854866,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-26T00:27:50.372Z","updated_at":"2026-02-01T00:31:43.221Z","avatar_url":"https://github.com/FaserF.png","language":"Python","funding_links":["https://github.com/sponsors/faserf","https://paypal.me/FaserF"],"categories":[],"sub_categories":[],"readme":"# DieLiga Home Assistant Integration 🏐\n\nThe `dieliga` sensor provides information about your sports league from [DieLiga](https://www.ost.volleyball-freizeit.de/), compatible with scoreboard systems based on \"dieLiga\" (tested with **Volleyball-Freizeit Ost**).\n\n## Features ✨\n\n- **Modern Architecture**: Uses `DataUpdateCoordinator` for efficient API polling.\n- **Scoreboard**: See your team's current position or the league name.\n- **Schedule**: Track upcoming games and season progress (percentage of completed games).\n- **Notifications**: Get alerts for rank changes and game reminders via Home Assistant automations.\n\n## Installation 🛠️\n\n### 1. Using HACS (Recommended)\n\n1.  Open **HACS** in your Home Assistant instance.\n2.  Click the three dots in the top right corner and select **Custom repositories**.\n3.  Add Repository: `https://github.com/FaserF/ha-dieliga`\n4.  Category: **Integration**\n5.  Click **Add**.\n6.  Search for \"die Liga\" and click **Download**.\n\n[![Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=FaserF\u0026repository=ha-dieliga\u0026category=integration)\n\n### 2. Manual Installation\n\n1.  Download the latest [Release](https://github.com/FaserF/ha-dieliga/releases/latest).\n2.  Extract the ZIP file.\n3.  Copy the `custom_components/dieliga` folder to your `\u003cconfig\u003e/custom_components/` directory.\n4.  Restart Home Assistant.\n\n## Configuration ⚙️\n\n1.  Go to **Settings** -\u003e **Devices \u0026 Services**.\n2.  Click **Add Integration**.\n3.  Search for **\"die Liga\"**.\n\n[![Open your Home Assistant instance and start setting up a new integration.](https://my.home-assistant.io/badges/config_flow_start.svg)](https://my.home-assistant.io/redirect/config_flow_start/?domain=dieliga)\n\n### Configuration Variables\n\n| Variable | Description |\n| :--- | :--- |\n| **Base URL** | The URL of the DieLiga instance (e.g., `https://www.ost.volleyball-freizeit.de`). |\n| **Liga ID** | The numeric ID of your league. Found in the URL of your league's schedule page (e.g., `1031`). |\n| **Team Name** | (Optional) Your team's name exactly as it appears on the website. Used for filtering the schedule and showing your rank. |\n\n## Sensors \u0026 Platforms 🚀\n\nThe integration provides the following entities to keep you up to date:\n\n| Platform | Entity | Description |\n| :--- | :--- | :--- |\n| `sensor` | **Scoreboard** 🏆 | Your team's current position in the league or the league name. |\n| `sensor` | **Schedule** 📅 | The progress of the season (%) and a full list of matches in attributes. |\n| `calendar` | **Match Calendar** 🗓️ | All upcoming matches displayed directly in your Home Assistant calendar. |\n| `binary_sensor` | **Match Today** ⚡ | Turns `on` if your team has a game today. perfect for automation triggers! |\n\n\u003e [!TIP]\n\u003e **Pro Tip:** The **Match Today** sensor is **disabled by default** to keep your setup clean. You can manually enable it under **Settings** -\u003e **Devices \u0026 Services** -\u003e **dieLiga** -\u003e **Entities**. 🛠️\n\n## Automations 🤖\n\nBelow are several examples of how you can use the sensor data in your automations.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e1. Basic: Rank Change Notification\u003c/b\u003e\u003c/summary\u003e\n\nThis automation sends a notification whenever your team's position in the league table changes.\n\n```yaml\nalias: \"dieLiga: Notify Rank Change\"\ntrigger:\n  platform: state\n  entity_id: sensor.dieliga_scoreboard_myteam\ncondition:\n  # Ensure the state is a number (position) and has actually changed\n  - condition: template\n    value_template: \"{{ trigger.from_state.state != trigger.to_state.state }}\"\naction:\n  service: notify.mobile_app_myphone\n  data:\n    title: \"League Update! 🏐\"\n    message: \u003e\n      Your team is now in position {{ states('sensor.dieliga_scoreboard_myteam') }}.\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e2. Intermediate: Match Day Reminder (1 day before)\u003c/b\u003e\u003c/summary\u003e\n\nSends a reminder at 8 PM the day before a game.\n\n```yaml\nalias: \"dieLiga: Game Tomorrow Reminder\"\ntrigger:\n  platform: time\n  at: \"20:00:00\"\ncondition:\n  - condition: template\n    value_template: \u003e\n      {% set games = state_attr('sensor.dieliga_schedule_myteam', 'games') %}\n      {% if games %}\n        {% set next_game = games | selectattr('state', 'ne', 'Completed') | first %}\n        {% if next_game %}\n          {{ (strptime(next_game.date, '%Y-%m-%d').date() - now().date()).days == 1 }}\n        {% else %}\n          false\n        {% endif %}\n      {% else %}\n        false\n      {% endif %}\naction:\n  service: notify.mobile_app_myphone\n  data:\n    title: \"Match Day Tomorrow! 🏐\"\n    message: \u003e\n      Reminder: You play against {{ state_attr('sensor.dieliga_schedule_myteam', 'games')[0].team_a_name if state_attr('sensor.dieliga_schedule_myteam', 'games')[0].team_b_name == 'My Team Name' else state_attr('sensor.dieliga_schedule_myteam', 'games')[0].team_b_name }} tomorrow!\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e3. Advanced: Post-Match Result Notification\u003c/b\u003e\u003c/summary\u003e\n\nThis automation triggers when the season progress increases (meaning a game was completed) and sends the result of the last game.\n\n```yaml\nalias: \"dieLiga: Post-Match Result\"\ntrigger:\n  platform: state\n  entity_id: sensor.dieliga_schedule_myteam\ncondition:\n  # Only trigger if the completed percentage increased\n  - condition: template\n    value_template: \"{{ trigger.to_state.state | int \u003e trigger.from_state.state | int }}\"\naction:\n  - set_variable:\n      last_game: \u003e\n        {% set games = state_attr('sensor.dieliga_schedule_myteam', 'games') %}\n        {{ games | selectattr('state', 'eq', 'Completed') | list | last }}\n  - service: notify.mobile_app_myphone\n    data:\n      title: \"Game Result 🏐\"\n      message: \u003e\n        Result for {{ last_game.team_a_name }} vs {{ last_game.team_b_name }}:\n        {{ last_game.team_a_sets }} : {{ last_game.team_b_sets }} sets.\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e4. Dashboard: Next 3 Matches (Markdown)\u003c/b\u003e\u003c/summary\u003e\n\nYou can use this template in a manual `markdown` card to see your upcoming schedule.\n\n```yaml\ntype: markdown\ncontent: \u003e\n  ### Upcoming Matches 🏐\n  | Date | Opponent | Time |\n  | :--- | :--- | :--- |\n  {% set games = state_attr('sensor.dieliga_schedule_myteam', 'games') | selectattr('state', 'ne', 'Completed') | list %}\n  {% for game in games[:3] %}\n  | {{ game.date }} | {{ game.team_b_name if game.team_a_name == 'My Team Name' else game.team_a_name }} | {{ game.time }} |\n  {% endfor %}\n```\n\u003c/details\u003e\n\n## Bug Reporting 🐛\n\nPlease open an issue on [GitHub](https://github.com/FaserF/ha-dieliga/issues). For debugging, add this to your `configuration.yaml`:\n\n```yaml\nlogger:\n  logs:\n    custom_components.dieliga: debug\n```\n\n## Developers 💻\n\nTests can be run using `pytest`:\n```bash\npip install pytest pytest-homeassistant-custom-component\npytest\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffaserf%2Fha-dieliga","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffaserf%2Fha-dieliga","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffaserf%2Fha-dieliga/lists"}