Stundenplan ist eine Home-Assistant-Integration für Schul-Stundenpläne.
Für die beste Dashboard-Darstellung wird diese Integration zusammen mit der separaten Frontend-Karte verwendet:
ha-stundenplan-card: https://github.com/stefanmoeller/ha-stundenplan-card- Empfohlene Card-Version:
0.3.0oder neuer
Empfohlener Ablauf:
- Integration
ha-stundenplaninstallieren (dieses Repo, KategorieIntegration) - Frontend
ha-stundenplan-cardinstallieren (KategorieDashboard) - Lovelace-Ressource setzen:
url: /hacsfiles/ha-stundenplan-card/school-schedule-card.js
type: moduleVersionierung:
ha-stundenplan(Integration) undha-stundenplan-card(Frontend) werden getrennt versioniert.- Bitte bei Updates die jeweils aktuellen Release Notes in beiden Repositories beachten.
- UI-basierte Konfiguration in Home Assistant
- ein Sensor pro Stundenplan
- Schultage, Stundenzeiten, Fächer und Wochenplan konfigurierbar
- optionaler Ferien-/Feiertagskalender
- strukturierte Sensor-Attribute für Dashboards, Templates und Automationen
- deutsch/englische Übersetzungen für den Integrationsdialog
- Home Assistant
2024.6.0oder neuer - optional: Kalender-Entität für schulfreie Tage
-
HACS ->
Custom repositories -
Repository hinzufügen:
https://github.com/stefanmoeller/ha-stundenplan -
Kategorie
Integrationwählen -
Stundenplaninstallieren -
Home Assistant neu starten
-
Integration unter
Einstellungen > Geräte & Dienstehinzufügen
Der Assistent führt durch:
- Name, max. Stundenzahl, Schultage, optionaler Ferienkalender
- Beginn/Ende je Stunde
- Anzahl Fächer
- Name/Icon/Farbe pro Fach
- Fach je Stunde und Wochentag
Die Integration bleibt bewusst für zwei Anwendungsfälle nutzbar:
- eigenständige Dashboards mit Standardkarten
- optimierte Darstellung mit
ha-stundenplan-card
| Attribut | Beschreibung |
|---|---|
child_name |
Name des Stundenplans |
weekday, weekday_name |
aktueller Wochentag |
date |
Datum im ISO-Format |
is_school_day |
aktueller Tag ist Schultag |
is_free_day |
Ferienkalender ist aktiv |
free_reason |
Grund aus Kalender |
school_end |
Ende der letzten Stunde am aktuellen Tag |
lessons |
Stunden am aktuellen Tag |
lesson_count |
Anzahl Unterrichtsstunden |
school_days |
konfigurierte Schultage |
days |
kompletter Wochenplan |
monday_subjects ... sunday_subjects |
flache Fächerliste pro Wochentag |
monday_school_end ... sunday_school_end |
flaches Schulende pro Wochentag |
| Attribut | Beschreibung |
|---|---|
weekday_short |
kurzer Wochentag |
lesson_times |
alle konfigurierten Stundenzeiten |
subjects |
konfigurierte Fächer als Mapping |
day_subjects |
Fächer je Tag als Mapping (mon..sun) |
day_school_end |
Schulende je Tag als Mapping (mon..sun) |
weekday_names, weekday_short_names |
Namens-Mappings für Wochentage |
Hinweis: Es werden aktuell keine vorhandenen Attribute entfernt, damit bestehende Dashboards und Karten weiter funktionieren.
Für kompakte Karten mit Icons/Farben wird
lovelace-mushroom benötigt
(zusätzliche Abhängigkeit).
type: markdown
title: Stundenplan heute
content: >-
{% set e = 'sensor.stundenplan_fritz' %}
**{{ state_attr(e, 'weekday_name') or 'Heute' }}**
{% if state_attr(e, 'is_free_day') %}
Schulfrei{% if state_attr(e, 'free_reason') %}: {{ state_attr(e, 'free_reason') }}{% endif %}
{% elif not state_attr(e, 'is_school_day') %}
Kein Schultag
{% elif (state_attr(e, 'lessons') or []) | count == 0 %}
Keine Stunden
{% else %}
Schulende: {{ state_attr(e, 'school_end') or '-' }}
{% for l in state_attr(e, 'lessons') or [] %}
- {{ l.start or '--:--' }}-{{ l.end or '--:--' }} | {{ l.subject }}
{% endfor %}
{% endif %}type: vertical-stack
cards:
- type: custom:mushroom-template-card
entity: sensor.stundenplan_fritz
primary: >
{{ state_attr(entity, 'weekday_name') or 'Heute' }}
secondary: >
Schulende: {{ state_attr(entity, 'school_end') or '-' }}
icon: mdi:clock-check-outline
icon_color: blue
- type: custom:mushroom-template-card
visibility:
- condition: template
value_template: "{{ (state_attr('sensor.stundenplan_fritz','lessons') or [])|count > 0 }}"
primary: "{{ state_attr('sensor.stundenplan_fritz','lessons')[0].subject }}"
icon: "{{ state_attr('sensor.stundenplan_fritz','lessons')[0].icon }}"
icon_color: "{{ state_attr('sensor.stundenplan_fritz','lessons')[0].color_key or 'blue' }}"Den zweiten Kartenblock für Index 1..11 wiederholen, um alle Stunden
des Tages darzustellen.
type: markdown
title: Wochenplan (Tabelle)
content: >-
{% set e = 'sensor.stundenplan_fritz' %}
{% set days = state_attr(e, 'days') or {} %}
{% set school_days = state_attr(e, 'school_days') or [] %}
| Tag | Stunden | Schulende |
| --- | --- | --- |
{% for d in school_days %}
{% set row = days.get(d, {}) %}
| {{ row.name or d }} | {{ (row.lessons or []) | map(attribute='subject') | join(', ') or '-' }} | {{ row.school_end or '-' }} |
{% endfor %}type: grid
columns: 2
square: false
cards:
- type: entity
entity: sensor.stundenplan_fritz
name: Status
- type: entities
title: Heute
entities:
- type: attribute
entity: sensor.stundenplan_fritz
attribute: weekday_name
name: Wochentag
- type: attribute
entity: sensor.stundenplan_fritz
attribute: school_end
name: Schulende
- type: attribute
entity: sensor.stundenplan_fritz
attribute: free_reason
name: Grund schulfreitype: grid
title: Stundenplan
columns: 2
square: false
cards:
- type: entities
title: Montag
entities:
- type: attribute
entity: sensor.stundenplan_fritz
attribute: monday_subjects
name: Fächer
- type: attribute
entity: sensor.stundenplan_fritz
attribute: monday_school_end
name: Schulende
- type: entities
title: Dienstag
entities:
- type: attribute
entity: sensor.stundenplan_fritz
attribute: tuesday_subjects
name: Fächer
- type: attribute
entity: sensor.stundenplan_fritz
attribute: tuesday_school_end
name: Schulende
- type: entities
title: Mittwoch
entities:
- type: attribute
entity: sensor.stundenplan_fritz
attribute: wednesday_subjects
name: Fächer
- type: attribute
entity: sensor.stundenplan_fritz
attribute: wednesday_school_end
name: Schulende
- type: entities
title: Donnerstag
entities:
- type: attribute
entity: sensor.stundenplan_fritz
attribute: thursday_subjects
name: Fächer
- type: attribute
entity: sensor.stundenplan_fritz
attribute: thursday_school_end
name: Schulende
- type: entities
title: Freitag
entities:
- type: attribute
entity: sensor.stundenplan_fritz
attribute: friday_subjects
name: Fächer
- type: attribute
entity: sensor.stundenplan_fritz
attribute: friday_school_end
name: SchulendeIssues und Feature-Wünsche bitte über GitHub melden: https://github.com/stefanmoeller/ha-stundenplan/issues