Tabelle Stundenplan

Hi sirector, vielen Dank für den Hinweis :+1:

Ich habe das Problem inzwischen gefixt. Bitte einmal auf die neueste Version updaten und kurz Rückmeldung geben, ob jetzt alles korrekt funktioniert.

Als nächsten Schritt plane ich, die Highlight-Farbe konfigurierbar zu machen, um die Farben individuell seinen Dashboard-Bedürfnissen anzupassen, und über “highlight_current: true” (der Befehl sollte das aktuelle Fach highlighten) muss ich auch nochmal schauen, und in den visuellen Editor packen.

Besten Dank und viele Grüße, Fabel-Smith

Anstatt highlight_current, fände ich es besser einige Fächer highlighten zu können, z.B. Sport. Das muss z.B. an Sportsachen gedacht werden.

Ist kein Muss, aber wäre ein nettes Feature.

Edit: welche Version ist die aktuelle, 2.1.0 oder 2.0.6?

Das lässt sich bestimmt noch umsetzen.

Die 2.0.6 ist die aktuelle Version ..ich habe die andere gerade raus genommen, damit es nicht zu weiteren Verwirrungen kommt.

1 „Gefällt mir“

Hallo zusammen,
ich habe die Stundenplan Card erweitert: Ab sofort lassen sich für jedes Fach individuelle Hintergrund- und/oder Textfarben konfigurieren.

Zusätzlich kann man jetzt auch die Highlight-Farben für den aktuellen Wochentag sowie die aktuelle Stunde frei festlegen.

Damit sollte gestalterisch sehr viel möglich sein, um den Stundenplan optimal an das eigene Dashboard und die persönlichen Vorlieben anzupassen.

Aktuelle Version ist v2.1.2

6 „Gefällt mir“

Moin,

Richtig gut geworden! Danke dafür. Gibt es eine Möglichkeit die Schulstunden (Fächer) aus einer Datenbank auszulesen? Ich hab die im Moment noch in einer Entität im Attribut stehen. Da sind sie im json vorhanden, bspw.

json:

* ID: 1
  Stunde: 1. 07:45 - 08:30
  Montag: Biologie
  Dienstag: Mathe
* ID: 2
  Stunde: 2. 08:35 - 09:20
  Montag: Geschichte
  Dienstag: Deutsch

usw…

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)
s.a.: (Neues Update & Features - Hier in der Community 🫶)

Hallo Rocket12,

freut mich, dass dir die Karte gefällt – danke für das Feedback!

Ich habe die Card inzwischen so erweitert, dass sie Stundenplan-Daten direkt aus einer Entität (state oder Attribut mit JSON) lesen kann.
Eine direkte Datenbankabfrage aus einer Lovelace-Card ist in Home Assistant nicht vorgesehen, daher läuft es immer über:

Datenbank / Script / REST → Sensor (Entität) → Stundenplan-Card

In deinem Fall (JSON im Attribut) ist das also perfekt geeignet.

Beispiel-Konfiguration:

type: custom:stundenplan-card
title: Stundenplan
source_entity: sensor.stundenplan
source_attribute: plan
days: [Montag, Dienstag, Mittwoch, Donnerstag, Freitag]

Beispiel-JSON:

[
  {"ID":1,"Stunde":"1. 07:45-08:30","Montag":"Biologie","Dienstag":"Mathe"},
  {"ID":2,"Stunde":"2. 08:35-09:20","Montag":"Geschichte","Dienstag":"Deutsch"}
]

Die Card generiert daraus automatisch:

  • Stunde → Zeitspalte

  • Montag, Dienstag, … → Fächer pro Tag

Manuelle Pflege im Editor bleibt weiterhin möglich – die Entity-Anbindung ist optional.

Wie im Screenshot zu sehen, habe ich dafür im visuellen Editor den Bereich „Datenquelle (optional)“ ergänzt.

Zusätzlich gibt es jetzt eine Live-Vorschau (ganz oben): Ein Klick auf ein Fach in der Vorschau springt direkt zu den passenden Einstellungen – so bleibt es trotz der vielen Optionen übersichtlich.

Wenn du magst, kannst du mir auch deinen exakten JSON-Aufbau schicken, dann prüfe ich das Mapping 1:1 für dich.

Viele Grüße, Fabel-Smith

2 „Gefällt mir“

Alter, wie geil! Funktioniert genau wie von dir beschrieben! Mein JSON sieht genau so aus

{“Di”: “Deutsch”,“Do”: “Frei”,“Fr”: “Frei”,“ID”: 1,“Mi”: “Biologie”,“Mo”: “Informatik”,“Stunde”: “1. 07:45 - 08:30”},
{“Di”: “Englisch”,“Do”: “Deutsch”,“Fr”: “Kunst”,“ID”: 2,“Mi”: “Geschichte”,“Mo”: “Informatik”,“Stunde”: “2. 08:35 - 09:20”},
{“Di”: “Französisch”,“Do”: “Sport”,“Fr”: “Geschichte”,“ID”: 3,“Mi”: “Englisch”,“Mo”: “Englisch”,“Stunde”: “3. 09:35 - 10:20”}

Und die Karte verarbeitet das perfekt, sieht dann am ende so aus

Mega! Vielen Dank für deine Arbeit!

Gruß

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)
s.a.: (Neues Update & Features - Hier in der Community 🫶)

1 „Gefällt mir“

Sehr gut, danke dir fürs Testen und das Feedback!
Und stark, dass dein JSON 1:1 gepasst hat – genau dafür war das Mapping gedacht.

Sieht im Screenshot auch richtig gut aus :+1:

Kleiner Hinweis zu den Pausen:
In deinem JSON sind aktuell nur die Unterrichtsstunden enthalten (was völlig normal ist – viele Schul-Exporte / APIs liefern keine Pausen als eigene Datensätze). Deshalb werden sie in der Card aktuell nicht als separate Zeilen angezeigt, sondern nur über die Zeitlücken sichtbar.

Wenn du Pausen explizit anzeigen möchtest, kannst du sie entweder:

  • im Code Editor ergänzen zB.:

image

  • oder sie direkt als eigene Zeile im JSON anlegen
{ “ID”:1,“Stunde”:“1. 07:45 - 08:30”,“Mo”:“…”,“Di”:“…” },
**{ “break”: true, “Stunde”: “08:30 - 08:35”, “label”: “Pause” },**
{ “ID”:2,“Stunde”:“2. 08:35 - 09:20”,“Mo”:“…”,“Di”:“…” }

Aktuell wird eine Pause im Visuellen Editor technisch immer ans Ende eingefügt – das werde ich noch verbessern, und als fix updaten. edit: (wurde soeben mit dem Release V2.4.0 gefixt)

.Wenn du noch Ideen hast (z. B. Wechselwochen, Klassen, Lehrer, Räume, etc.), immer her damit – die Card ist bewusst offen gehalten.

Viel Spaß damit! Viele Grüße, Fabel

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)
s.a.: (Neues Update & Features - Hier in der Community 🫶)

3 „Gefällt mir“

Hi,

ich finde die Karte auch Mega. Vielen Dank für deine Arbeit!
Kannst du mir noch kurz erklären, wie ich das mit der JSON mache? Ich habe leider davon keine Ahnung.
Mit der KI habe ich mir schon den Stundenplan erstellen lassen. Das ganze liegt mir als TXT Datei vor. Wie bekomme ich das ganze jetzt in Home Assistant und dann in die Stundenplan-card?

{"ID": 1, "Stunde": "1. 07:45 - 08:30", "Mo": "Erdkunde", "Di": "PoWi", "Mi": "Französisch", "Do": "KL", "Fr": "Chemie"}
{"ID": 2, "Stunde": "2. 08:35 - 09:20", "Mo": "Deutsch", "Di": "Mathe", "Mi": "Geschichte", "Do": "Deutsch", "Fr": "Französisch"}
{"break": true, "Stunde": "09:20 - 09:35", "label": "Pause"}
{"ID": 3, "Stunde": "3. 09:35 - 10:20", "Mo": "Mathe", "Di": "Englisch", "Mi": "Kunst", "Do": "Physik", "Fr": "Ethik"}
{"ID": 4, "Stunde": "4. 10:20 - 11:05", "Mo": "Mittagspause", "Di": "…", "Mi": "…", "Do": "Sport", "Fr": "…"}
{"break": true, "Stunde": "11:05 - 11:25", "label": "Pause"}
{"ID": 5, "Stunde": "5. 11:25 - 12:10", "Mo": "Englisch", "Di": "…", "Mi": "…", "Do": "…", "Fr": "…"}
{"ID": 6, "Stunde": "6. 12:15 - 13:00", "Mo": "…", "Di": "…", "Mi": "…", "Do": "…", "Fr": "…"}
{"ID": 7, "Stunde": "7. 13:00 - 13:45", "Mo": "Mittagspause", "Di": "…", "Mi": "…", "Do": "…", "Fr": "…"}
{"ID": 8, "Stunde": "8. 13:45 - 14:30", "Mo": "Englisch", "Di": "…", "Mi": "…", "Do": "…", "Fr": "…"}
{"ID": 9, "Stunde": "9. 14:30 - 15:15", "Mo": "Englisch", "Di": "…", "Mi": "…", "Do": "…", "Fr": "…"}
{"break": true, "Stunde": "15:15 - 15:30", "label": "Pause"}
{"ID": 10, "Stunde": "10. 15:30 - 16:15", "Mo": "…", "Di": "…", "Mi": "…", "Do": "…", "Fr": "…"}
{"ID": 11, "Stunde": "11. 16:15 - 17:00", "Mo": "…", "Di": "…", "Mi": "…", "Do": "…", "Fr": "…"}

Viele Grüße
tors10

1 „Gefällt mir“

Kurz-Anleitung:

  1. JSON-Datei richtig formatieren
    Dein Stundenplan muss als Objekt mit Schlüssel plan vorliegen (und zwischen den Einträgen Kommas haben):
{
  "plan": [
    {"ID": 1, "Stunde": "1. 07:45 - 08:30", "Mo": "Erdkunde", "Di": "PoWi", "Mi": "Französisch", "Do": "KL", "Fr": "Chemie"},
    {"ID": 2, "Stunde": "2. 08:35 - 09:20", "Mo": "Deutsch", "Di": "Mathe", "Mi": "Geschichte", "Do": "Deutsch", "Fr": "Französisch"}
  ]
}

  1. Datei in Home Assistant ablegen
    Speichern als:
/config/www/stundenplan/stundenplan.json

  1. REST-Sensor anlegen (configuration.yaml)
sensor:
  - platform: rest
    name: stundenplan
    resource: http://localhost:DEINPORT/local/stundenplan/stundenplan.json
    value_template: "OK"
    json_attributes:
      - plan

  1. Home Assistant neu starten

  2. Stundenplan-Card (visueller Editor) einstellen

  • source_entity: sensor.stundenplan

  • source_attribute: plan

  • source_time_key: Stunde

Bitte testen und wenn du nicht weiter kommst, gerne melden. VG Fabel

2 „Gefällt mir“

Funktioniert super. Wenn du jetzt noch ne Idee für Wechselwochen hast, wäre das perfekt!

Danke!!!

1 „Gefällt mir“

Freut mich, dass es läuft!

Zur Einbindung der Wechselwochen (A/B) gibt es leider eine kleine Grundproblematik: Die Logik ist je nach Schule unterschiedlich.

Manche Schulen wechseln strikt nach Kalenderwoche (z. B. gerade KW = A, ungerade KW = B), andere unterbrechen den Rhythmus durch Ferien oder Sonderwochen.

Wenn Ferien den A/B-Wechsel nicht unterbrechen sollen, müsste man zusätzlich einen Ferienkalender (je Bundesland/Schule) einbinden und das intelligent berücksichtigen. Das macht die Lösung leider deutlich komplexer, vor allem wenn sie allgemein für viele nutzbar bleiben soll.

Kurze Rückfrage: Wie ist es bei euch geregelt – strikter Wochenwechsel oder Unterbrechung durch Ferien?

Wenn du selbst einen guten Ansatz hast, wie du es gerne bedienen würdest (z. B. manueller Schalter A/B), sag gerne Bescheid.

1 „Gefällt mir“

Hi,

also bei uns ist es strikt nach KW geregelt und zieht sich durch.
Vielleicht wäre es praktikabel es auch optional zu machen. Zum Beispiel einzutragen A Woche = gerade GW, B-Woche ungerade KW. Wenn das nicht ausgewählt ist kann man optional noch eine Datei hinterlegen (parallel zu der Stundeplan.json) in der hart die KWs eingetragen werden.
Die kann sich dann jeder selbst erstellen.

Auf jeden Fall vielen Dank für diene Mühe und deiner Bereitschaft auf Userwünsche einzugehen!

Hallo zusammen,

ich finde den Stundenplan richtig gut und möchte ihn gerne in mein Dashboard einfügen. Leider scheitere ich daran…

Hier meine Schritte:

  1. HACS (2.0.5) → Benutzerdefinierte Repositories.
    Repository-URL: GitHub - fabel-smith/stundenplan-card
  2. Mich irritiert die “neue” Auswahlmöglichkeit in HACS nach Typ (Theme, Integration, Dashboard, Template). Nur Dashboard “funktioniert”. Bei den anderen bekomme ich die Fehlermeldung: z.B. “<Integration fabel-smith/stundenplan-card> Repository structure for v2.5.0 is not compliant”.
  3. Check in den Dashboard Ressourcen, ob der Eintrag “/hacsfiles/stundenplan-card/stundenplan-card.js” vorhanden ist => Nein
  4. Manueller Eintrag der Ressource
  5. Neustart HA (2026.1.2)
  6. Einstellungen - Integrationen - Integration hinzufügen wird mir nichts unter der Suche nach “Stunden”, “Fabel” oder “Smith” vorgeschlagen…

An dem Schritt hänge ich gerade und hoffe, dass mir jemand die Scheuklappen abnehmen kann :wink:

Danke

Gruß

Rolf

Hi, super, danke dir! :+1:
Ich habe das inzwischen genau so umgesetzt und auch in der README dokumentiert.

https://github.com/fabel-smith/stundenplan-card/blob/main/README.md

Kurz zusammengefasst:

  • Standardfall: A-Woche = gerade KW, B-Woche = ungerade KW → sofort nutzbar, kein Zusatzaufwand

  • Optional: Für abweichende Regelungen kann eine separate Mapping-Datei hinterlegt werden, in der die KWs fest A/B zugeordnet sind (parallel zur Stundenplan-JSON). Das ist in der README Schritt für Schritt beschrieben.

Wenn ihr also strikt nach KW wechselt, müsst ihr praktisch nichts weiter tun – einfach den Modus auswählen. Alles andere ist nur für Sonderfälle gedacht.

Danke dir nochmals für den Input und das Feedback!

1 „Gefällt mir“

Hi Rolf, kein Problem, du bist schon sehr nah dran.
Die Stundenplan-Card ist keine Integration, sondern eine Lovelace Custom Card.

Kurz die entscheidenden Punkte:

  1. HACS → Benutzerdefinierte Repositories

    • Typ Dashboard ist richtig :white_check_mark:

    • Die anderen Typen (Integration, Template, Theme) müssen fehlschlagen – die Fehlermeldung ist normal.

  2. Installation über HACS

    • Nach dem Hinzufügen des Repos in HACS → Stundenplan Card → Installieren

    • Danach Browser-Cache leeren oder STRG+F5

    • Ein HA-Neustart schadet nicht (hast du ja schon gemacht)

  3. Ressource prüfen (wichtigster Punkt)

    • Einstellungen → Dashboards → Ressourcen

    • Dort muss automatisch stehen:

      /hacsfiles/stundenplan-card/stundenplan-card.js
      
      
    • Falls nicht vorhanden: manuell hinzufügen (Typ: JavaScript-Modul)

  4. Card hinzufügen

    • Dashboard bearbeiten → „Karte hinzufügen“

    • nach Stundenplan suchen und hinzufügen

    • oder manuelle Card:

      custom:stundenplan-card
      
      
  5. Warum nichts unter „Integrationen“ auftaucht

    • Custom Cards erscheinen nicht unter Einstellungen → Integrationen.

Bitte die Schritte mal prüfen, und ggf. gerne nochmal melden.

Viele Grüße, Fabel Smith

Hi Fabel,

wow! Mega schnelle Antwort! Danke!

Ich habe das Gefühl, dass es bereit mit 2. nicht weitergeht. Alles was ich bisher über HACS geladen und installiert habe wird mir unter HA - HACS - “Heruntergeladen” angezeigt. Der Stundenplan leider nicht…

Wie in dem Bild aus meiner ersten Beschreibung habe ich die Option den Stundenplan über die Mülltonne zu löschen, aber wenn ich noch einmal auf Hinzufügen klicke kommt die Meldung:

image Ich kenne das so, dass man irgendwann aufgefordert wird eine Version auszuwählen und dann installieren kann, aber soweit komme ich erst gar nicht.

Demzufolge bringt es offensichtlich nichts, wenn ich die Ressource manuell hinzufüge, denn danach kann ich trotzdem keine Karte auswählen.

Bin zwar kein HA Neuling, aber auch kein Dev….

Danke!

Hi,

du muss im HACS einfach nur nach stundenplan-card suchen. :slight_smile:

Hi,

das war tatsächlich mein erster Versuch. Allerdings:

Keine Filter aktiv! K.A. was ich falsch mache…

Hallo Rolf, sry hatte nicht alles gelesen..

Bitte versuche mal folgendes:

  1. HACS → Frontend öffnen
    → dort sollte die „Stundenplan Card“ erscheinen
    (auch wenn sie nicht über die Suche auffindbar ist)

  2. Falls sie dort noch nicht sichtbar ist:

    • Home Assistant komplett neu starten

    • danach Browser-Cache leeren (Strg+F5)

  3. In HACS → Frontend:

    • Card installieren

    • Installation abwarten

  4. Prüfen unter
    Einstellungen → Dashboards → Ressourcen
    ob automatisch vorhanden:

    /hacsfiles/stundenplan-card/stundenplan-card.js
    
    

    Falls nicht:

    • Ressource manuell hinzufügen

    • Typ: JavaScript-Modul

    • URL wie oben

  5. Karte anlegen mit:

    type: custom:stundenplan-card