BACnet Schedules in Home Assistant lesen und schreiben

Ein BACnet-Schedule-Objekt teilt einem Controller mit, welchen Wert er zu welcher Zeit ansteuern soll. Es verbindet einen Wochenplan, Ausnahmen für besondere Tage, einen Standardwert und einen Gültigkeitszeitraum.

Schedule-Sensor

Ein Schedule-Objekt wird als Sensor importiert, der den Wert anzeigt, den der Schedule gerade ansteuert. Der Schedule selbst wird mit zwei Aktionen gelesen und geändert, die diesen Sensor als Ziel haben.

AktionWas sie tut
bacnet.read_scheduleGibt den Schedule als Antwortdaten zurück: weekly_schedule, exception_schedule, calendars (die Daten der Kalender, auf die sich die Ausnahmen beziehen), schedule_default, effective_period, controlled_objects, value_type und priority_for_writing.
bacnet.write_scheduleÄndert weekly_schedule, exception_schedule, schedule_default und/oder effective_period, in derselben Form, die read_schedule zurückgibt. Felder, die du weglässt, bleiben unangetastet.

Felddetails stehen unter Aktionen. Als ersten Schritt führst du bacnet.read_schedule immer einmal unter Developer tools → Actions aus, um zu sehen, was dein Controller zurückgibt.

Einen Schedule schreiben

action: bacnet.write_schedule
target:
  entity_id: sensor.ddc_heating_schedule
data:
  weekly_schedule:
    monday:
      - { time: "06:30:00", value: 21.5 }
      - { time: "22:00:00", value: null }   # null = back to the default
  exception_schedule:
    - period: { date: "2026-12-25" }
      priority: 10
      time_values:
        - { time: "00:00:00", value: 16 }
response_variable: schedule

Der Schedule wird nach jedem Schreibzugriff zurückgelesen. Die Aktion schlägt fehl, wenn das Gerät die Änderung abgelehnt oder etwas anderes gespeichert hat.

Weekly schedule

Nur die Wochentage, die du übergibst, werden geändert, mit je einem Schreibzugriff pro Tag. Übergib alle sieben Tage, um die Woche in einem einzigen Schreibzugriff zu senden, was manche Geräte verlangen.

Exception schedule

Schritt für Schritt: Feiertag im Schedule.

Ein Exception Schedule listet besondere Zeiträume auf, etwa Feiertage oder Besprechungen, die den Wochenplan übersteuern. Jede Ausnahme hat eine period, eine priority (1 bis 16, niedriger gewinnt) und time_values.

Der Exception Schedule wird immer als Ganzes ersetzt. Zum Schutz des Controllers schlägt die Aktion fehl und listet sie auf, wenn der Schreibzugriff Ausnahmen entfernen würde, die das Gerät gerade hat. Übergib die vollständige Liste, einschließlich der Einträge, die bleiben sollen, oder setze allow_removal: true, wenn das Entfernen gewollt ist.

Eine period ist eine der folgenden:

Daten und Werte

Automatisieren

Das Beispiel Kalendertermine als Schedule-Ausnahmen fügt jeden Kalendertermin einem Schedule-Objekt hinzu, damit der Controller ihn im Voraus kennt.