Guide - add a holiday to a BACnet schedule

Goal: on one date, the controller follows a different value than the weekly schedule, by adding an exception to a Schedule object.

Before you start

Steps

  1. Go to Developer tools → Actions and run bacnet.read_schedule on the schedule sensor. This shows what your controller returns, including the existing exception_schedule. Developer tools shows the response itself. response_variable is only needed in an automation or script.
    action: bacnet.read_schedule
    target:
      entity_id: sensor.ddc_heating_schedule
    

    The response of bacnet.read_schedule in Developer tools

  2. Copy the existing exceptions. You must pass them again, or the write fails.
  3. Run bacnet.write_schedule with the full list: the existing exceptions and the new one. The value is written in the datatype of the schedule itself. priority runs from 1 to 16; lower wins. After the write, the schedule is read back. You should see no error. Run bacnet.read_schedule again to confirm the exception is there.
    action: bacnet.write_schedule
    target:
      entity_id: sensor.ddc_heating_schedule
    data:
      exception_schedule:
        # ...plus every existing exception you want to keep
        - period: { date: "2026-12-25" }
          priority: 10
          time_values:
            - { time: "00:00:00", value: 16 }
    

If it doesn't work

More detail: Schedules and bacnet.write_schedule. An automatic version: Calendar events as schedule exceptions.