BACnet-schedules lezen en schrijven in Home Assistant
Een BACnet Schedule-object vertelt een controller welke waarde hij op welk moment moet aansturen. Het combineert een weekschema, uitzonderingen voor bijzondere dagen, een standaardwaarde en een geldigheidsperiode.
Schedule-sensor
Een Schedule-object wordt geïmporteerd als sensor die de waarde toont die het schedule nu aanstuurt. Het schedule zelf lees en wijzig je met twee acties die op die sensor mikken.
| Actie | Wat het doet |
|---|---|
bacnet.read_schedule | Geeft het schedule terug als responsdata: weekly_schedule, exception_schedule, calendars (de datums van kalenders waar de uitzonderingen naar verwijzen), schedule_default, effective_period, controlled_objects, value_type en priority_for_writing. |
bacnet.write_schedule | Wijzigt weekly_schedule, exception_schedule, schedule_default en/of effective_period, in dezelfde vorm als read_schedule teruggeeft. Velden die je weglaat blijven ongemoeid. |
Veldgegevens staan in Acties. Voer als eerste stap altijd bacnet.read_schedule eenmalig uit in Developer tools → Actions, om te zien wat je controller teruggeeft.
Een schedule schrijven
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
Het schedule wordt na elke schrijfactie teruggelezen. De actie mislukt als het apparaat de wijziging weigerde of iets anders opsloeg.
Weekschema
Alleen de weekdagen die je meegeeft worden gewijzigd, met één schrijfactie per dag. Geef alle zeven dagen mee om de week in één schrijfactie te sturen, wat sommige apparaten vereisen.
Exception schedule
Stap voor stap: Feestdag in een schedule.
Een exception schedule somt bijzondere periodes op, zoals feestdagen of vergaderingen, die het weekschema overschrijven. Elke uitzondering heeft een period, een priority (1 tot 16, lager wint) en time_values.
Het exception schedule wordt altijd als geheel vervangen. Ter bescherming van de controller mislukt de actie, en somt ze op, als de schrijfactie uitzonderingen zou verwijderen die het apparaat nu heeft. Geef de volledige lijst mee, inclusief de uitzonderingen die moeten blijven, of zet allow_removal: true als verwijderen precies is wat je wilt.
Een period is een van deze:
date: één datum.date_range: metstartenend.week_n_day: metmonth,week_of_monthenweekday.calendar_reference: de instance van een Calendar-object op het apparaat.
Datums en waarden
- Datums: schrijf
"YYYY-MM-DD", of{year, month, day, weekday}waarbijnullelke betekent. Datums komen altijd terug in de tweede vorm, met ruwe BACnet-getallen: maand 13 en 14 betekenen oneven en even maanden, dag 32 betekent de laatste dag van de maand, weekdag 1 is maandag. - Waarden worden geschreven in het datatype van het schedule zelf (
value_type), afgeleid van de standaardwaarde. Eennull-waarde geeft de regeling terug aan de standaardwaarde.
Automatiseren
Het voorbeeld agenda-afspraken als schedule-uitzonderingen voegt elke agenda-afspraak toe aan een Schedule-object, zodat de controller er van tevoren van weet.