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.
| Aktion | Was sie tut |
|---|---|
bacnet.read_schedule | Gibt 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:
date: ein einzelnes Datum.date_range: mitstartundend.week_n_day: mitmonth,week_of_monthundweekday.calendar_reference: die Instanz eines Calendar-Objekts auf dem Gerät.
Daten und Werte
- Daten: schreibe
"YYYY-MM-DD"oder{year, month, day, weekday}, wobeinullbeliebig bedeutet. Daten werden immer in der zweiten Form mit rohen BACnet-Zahlen zurückgegeben: Monat 13 und 14 bedeuten ungerade und gerade Monate, Tag 32 bedeutet den letzten Tag des Monats, Wochentag 1 ist Montag. - Werte werden im Datentyp des Schedules selbst geschrieben (
value_type), entnommen aus seinem Standardwert. Ein Wertnullgibt die Kontrolle an den Standardwert zurück.
Automatisieren
Das Beispiel Kalendertermine als Schedule-Ausnahmen fügt jeden Kalendertermin einem Schedule-Objekt hinzu, damit der Controller ihn im Voraus kennt.