BACnet-Aktionen für Home Assistant Automatisierungen
Die Integration fügt sechs Aktionen (früher Services genannt) in der Domain bacnet hinzu. Nutze sie in Automatisierungen, Skripten und unter Developer tools → Actions (Entwicklerwerkzeuge → Aktionen). Die meisten arbeiten mit einer Ziel-Entität (target) dieser Integration. Einige erreichen auch Objekte, die du nicht importiert hast; dafür ist ein Administratorkonto nötig, weil sie jedes Objekt des Geräts erreichen.
| Aktion | Was sie tut |
|---|---|
bacnet.write_value | Einmalig einen Wert mit gewählter Priorität schreiben, oder eine beliebige andere Property schreiben |
bacnet.relinquish | Den Befehl von Home Assistant auf einem Objekt freigeben |
bacnet.read_property | Eine beliebige Property lesen und als Antwortdaten zurückgeben |
bacnet.read_schedule | Ein Schedule-Objekt als Antwortdaten zurückgeben |
bacnet.write_schedule | Teile eines Schedule-Objekts ändern |
bacnet.read_trend_log | Die Datensätze eines Trend Log zurückgeben |
Aktionen, die Daten zurückgeben, verwendest du in einer Automatisierung mit response_variable.
bacnet.write_value
Schreibt einmalig einen Wert: den Present Value eines Objekts mit gewählter Priorität, ohne die Einstellung Write Priority des Geräts zu ändern, oder eine beliebige andere Property. Ziel: jede Entität dieser Integration. Binäre Objekte nehmen 0 (inactive) oder 1 (active).
| Feld | Pflicht | Beschreibung | Beispiel |
|---|---|---|---|
value | Ja | Zu schreibender Wert. Binäre Objekte: 0 = inactive, 1 = active. Andere Properties nehmen eine Zahl, true/false oder Text. | 21.5 |
priority | Nein | Prioritätsstufe, mit der geschrieben wird (1 bis 16). Standard ist die Write Priority des Geräts. Gilt nur für den Present Value. | 11 |
property | Nein | Zu schreibende BACnet-Property, per Name oder Nummer. Ohne Angabe: die Property, die eine Extra-Property-Entität anzeigt, sonst der Present Value. | minimumOnTime |
device | Nein | Nur für nicht importierte Objekte: das BACnet-Gerät. Gib dann auch Objekttyp und Instanz an; die Ziel-Entität wird ignoriert. | |
object_type | Nein | Nur mit device: Typ des Objekts, per Name oder Nummer. | analog-value |
instance | Nein | Nur mit device: Instanznummer des Objekts. | 12 |
action: bacnet.write_value
target:
entity_id: number.meeting_room_occupancy
data:
value: 1
priority: 11
Schreibzugriffe auf andere Properties tragen nie eine Priorität; nur der Present Value hat ein Priority Array. Werte werden im BACnet-Typ der Property gesendet. Eine andere Property als den Present Value zu schreiben ändert die Konfiguration des Objekts und ist daher nur Administratoren erlaubt. Siehe Zusätzliche Properties.
bacnet.relinquish
Gibt den Befehl von Home Assistant auf einem Objekt frei, indem Null auf einer Prioritätsstufe geschrieben wird, sodass niedrigere Prioritäten oder der Relinquish Default übernehmen. Ziel: eine Switch-, Number- oder Climate-Entität dieser Integration.
| Feld | Pflicht | Beschreibung | Beispiel |
|---|---|---|---|
priority | Nein | Freizugebende Prioritätsstufe (1 bis 16). Standard ist die Write Priority des Geräts. | 8 |
action: bacnet.relinquish
target:
entity_id: switch.ahu_1_supply_fan
data:
priority: 8
Gib immer mit der Priorität frei, mit der du geschrieben hast. Ausschalten oder 0 schreiben befiehlt dem Objekt, aus zu sein; nur bacnet.relinquish gibt es frei. Siehe So funktioniert das Schreiben.
bacnet.read_property
Liest eine beliebige Property eines Objekts und gibt sie als Antwortdaten zurück. Ziel: jede Entität dieser Integration.
| Feld | Pflicht | Beschreibung | Beispiel |
|---|---|---|---|
property | Nein | Zu lesende BACnet-Property, per Name oder Nummer. Ohne Angabe: die Property, die eine Extra-Property-Entität anzeigt, sonst der Present Value. | minimumOnTime |
array_index | Nein | Ein Element einer Array-Property lesen (0 = Anzahl der Elemente). | 0 |
device | Nein | Nur für nicht importierte Objekte: das BACnet-Gerät. | |
object_type | Nein | Nur mit device: Typ des Objekts, per Name oder Nummer. | analog-value |
instance | Nein | Nur mit device: Instanznummer des Objekts. | 12 |
action: bacnet.read_property
target:
entity_id: switch.ahu_1_ventilation_fan
data:
property: minimumOnTime
response_variable: result
Die Antwort sieht so aus: {"switch.ahu_1_ventilation_fan": {"object": "4:3", "property": "minimumOnTime", "value": 300}}. Lehnt das Gerät ab, zum Beispiel mit unknown-property, schlägt die Aktion mit dem Fehler des Geräts fehl.
bacnet.read_schedule
Gibt ein Schedule-Objekt als Antwortdaten zurück. Ziel: ein Schedule-Sensor. Es hat keine Felder. Details und die Form der Antwort stehen unter Schedules.
action: bacnet.read_schedule
target:
entity_id: sensor.meeting_room_schedule
response_variable: schedule
bacnet.write_schedule
Ändert Teile eines Schedule-Objekts, in derselben Form, die bacnet.read_schedule zurückgibt. Felder, die du weglässt, bleiben unangetastet. Der Schedule wird anschließend zurückgelesen, und die Aktion schlägt fehl, wenn das Gerät die Änderung abgelehnt oder etwas anderes gespeichert hat. Ziel: ein Schedule-Sensor.
| Feld | Pflicht | Beschreibung | Beispiel |
|---|---|---|---|
weekly_schedule | Nein | Wochentage (monday bis sunday), abgebildet auf eine Liste von Einträgen mit time und value. Nur die übergebenen Tage werden geändert. Ein value von null gibt auf den Standardwert frei. | {"monday": [{"time": "08:00:00", "value": 21.0}, {"time": "17:00:00", "value": 16.0}]} |
exception_schedule | Nein | Vollständige Liste der Ausnahmen, die die bestehende Liste ersetzt. | [{"period": {"date": "2026-12-25"}, "priority": 10, "time_values": [{"time": "00:00:00", "value": 12.0}]}] |
schedule_default | Nein | Wert, der gilt, wenn kein Wochen- oder Ausnahmeeintrag zutrifft. | 16.0 |
effective_period | Nein | Start- und Enddatum, zwischen denen der Schedule aktiv ist. | {"start": "2026-01-01", "end": "2026-12-31"} |
allow_removal | Nein | Erlaubt es, den Exception Schedule auch dann zu schreiben, wenn dadurch Ausnahmen entfernt werden, die das Gerät gerade hat. Standardmäßig aus. | false |
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 }
Lies Schedules, bevor du schreibst: Für Ausnahmen, Daten und allow_removal gelten Regeln, die den Controller schützen.
bacnet.read_trend_log
Liest die Datensätze eines Trend Log und gibt sie als Antwortdaten zurück. Ziel: ein Trend-Log-Sensor.
| Feld | Pflicht | Beschreibung | Beispiel |
|---|---|---|---|
device | Nein | Nur für ein nicht importiertes Trend Log: das BACnet-Gerät. | |
instance | Nein | Nur mit device: Instanznummer des Trend-Log-Objekts. | 4 |
start | Nein | Datensätze ab diesem Zeitpunkt zurückgeben (lokale Zeit des Geräts). Ohne Angabe werden die neuesten Datensätze zurückgegeben. | {{ now() - timedelta(hours=24) }} |
count | Nein | Maximale Anzahl Datensätze, 1 bis 1000. Standard 100. | 500 |
action: bacnet.read_trend_log
target:
entity_id: sensor.ahu_1_supply_temperature_log
data:
start: "{{ now() - timedelta(hours=24) }}"
count: 500
response_variable: trend
Das Antwortformat steht unter Trend Logs.