How writes work in the Home Assistant BACnet integration
Safety on a live site
What this integration writes to your devices, so you know before you try it on a running building:
- Writes only on your action. Home Assistant writes a value only when you or an automation switch, set or call an action. Discovery, polling and COV subscriptions do not change values.
- One exception: COV increment. If you set the COV increment above
0, it is written to thecovIncrementproperty of each imported analog object (with COV) whose device value differs. - Priority 16 by default. Entities write at the lowest priority, so anything at 1 to 15, including a Manual Operator command at 8, still wins.
- Actions can go higher.
bacnet.write_valueandbacnet.relinquishaccept any priority from 1 to 16. A write at 1 to 7 outranks a Manual Operator command; use those levels only on purpose. - Turning off is a command. Switching off writes
inactiveat the same priority. It does not release the output. Usebacnet.relinquishto hand control back. - Schedules have no priority.
bacnet.write_schedulechanges the configuration of the Schedule object itself. It refuses to remove existing exceptions unless you setallow_removal, and reads the result back. See Schedules. - No read-only mode yet. To keep an object read-only, import it as a
sensororbinary_sensor, or leave it out. Actions can still write to any object on the device.
Warning: The integration is provided as is, without warranty. Do not use it to control life-safety systems such as fire alarm or smoke control. You are responsible for what you write to a running building; test on a single object first.
The Priority Array
BACnet lets several writers command one output at once. Each writer uses one of 16 priority levels, and the device acts on the lowest-numbered level that holds a value. This list of 16 slots is the Priority Array. Level 8 is by convention the Manual Operator; level 16 is the lowest.
All writes to commandable objects use this array:
- Turn on or set a value writes at the configured priority (default 16).
- Turn off writes
inactive(0) at the same priority. This commands the output off; it does not release it. - Climate → Off relinquishes the setpoint (writes Null), so the schedule or Relinquish Default of the device takes over. See Climate.
- Release (relinquish) clears the slot at that priority, so lower priorities or the Relinquish Default take over. Use the
bacnet.relinquishaction; see Actions.
Binary outputs use the BACnet Enumerated type: 0 is inactive, 1 is active. If a device rejects a write, Home Assistant shows an error instead of silently keeping the old state.
Write Priority select
A Write Priority select entity (under Configuration on the device page) is added to every BACnet device. It is disabled by default to keep dashboards tidy.
To use it:
- Go to Settings → Devices & Services → BACnet IP and open your device.
- Find the Write Priority entity and enable it.
- Use the dropdown to select a priority.
Step by step: Switch with priority.
Available levels: 8 (Manual Operator), 9, 12, 13, 14, 15 and 16 (default, lowest). Priority 16 is the safest default; use 8 if your building management system requires a Manual Operator override. The selected priority persists across restarts. It applies to entity writes and to actions that do not give their own priority.