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.

AktionWas sie tut
bacnet.write_valueEinmalig einen Wert mit gewählter Priorität schreiben, oder eine beliebige andere Property schreiben
bacnet.relinquishDen Befehl von Home Assistant auf einem Objekt freigeben
bacnet.read_propertyEine beliebige Property lesen und als Antwortdaten zurückgeben
bacnet.read_scheduleEin Schedule-Objekt als Antwortdaten zurückgeben
bacnet.write_scheduleTeile eines Schedule-Objekts ändern
bacnet.read_trend_logDie 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).

FeldPflichtBeschreibungBeispiel
valueJaZu schreibender Wert. Binäre Objekte: 0 = inactive, 1 = active. Andere Properties nehmen eine Zahl, true/false oder Text.21.5
priorityNeinPrioritätsstufe, mit der geschrieben wird (1 bis 16). Standard ist die Write Priority des Geräts. Gilt nur für den Present Value.11
propertyNeinZu schreibende BACnet-Property, per Name oder Nummer. Ohne Angabe: die Property, die eine Extra-Property-Entität anzeigt, sonst der Present Value.minimumOnTime
deviceNeinNur für nicht importierte Objekte: das BACnet-Gerät. Gib dann auch Objekttyp und Instanz an; die Ziel-Entität wird ignoriert.
object_typeNeinNur mit device: Typ des Objekts, per Name oder Nummer.analog-value
instanceNeinNur 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.

FeldPflichtBeschreibungBeispiel
priorityNeinFreizugebende 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.

FeldPflichtBeschreibungBeispiel
propertyNeinZu lesende BACnet-Property, per Name oder Nummer. Ohne Angabe: die Property, die eine Extra-Property-Entität anzeigt, sonst der Present Value.minimumOnTime
array_indexNeinEin Element einer Array-Property lesen (0 = Anzahl der Elemente).0
deviceNeinNur für nicht importierte Objekte: das BACnet-Gerät.
object_typeNeinNur mit device: Typ des Objekts, per Name oder Nummer.analog-value
instanceNeinNur 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.

FeldPflichtBeschreibungBeispiel
weekly_scheduleNeinWochentage (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_scheduleNeinVollstä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_defaultNeinWert, der gilt, wenn kein Wochen- oder Ausnahmeeintrag zutrifft.16.0
effective_periodNeinStart- und Enddatum, zwischen denen der Schedule aktiv ist.{"start": "2026-01-01", "end": "2026-12-31"}
allow_removalNeinErlaubt 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.

FeldPflichtBeschreibungBeispiel
deviceNeinNur für ein nicht importiertes Trend Log: das BACnet-Gerät.
instanceNeinNur mit device: Instanznummer des Trend-Log-Objekts.4
startNeinDatensätze ab diesem Zeitpunkt zurückgeben (lokale Zeit des Geräts). Ohne Angabe werden die neuesten Datensätze zurückgegeben.{{ now() - timedelta(hours=24) }}
countNeinMaximale 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.