Property Access¶
ReadProperty¶
ReadProperty service per ASHRAE 135-2016 Clause 15.5.
- class bac_py.services.read_property.ReadPropertyRequest(object_identifier, property_identifier, property_array_index=None)[source]¶
Bases:
objectReadProperty-Request service parameters (Clause 15.5.1.1).
ReadProperty-Request ::= SEQUENCE { objectIdentifier [0] BACnetObjectIdentifier, propertyIdentifier [1] BACnetPropertyIdentifier, propertyArrayIndex [2] Unsigned OPTIONAL }
- Parameters:
object_identifier (ObjectIdentifier)
property_identifier (PropertyIdentifier)
property_array_index (int | None)
- object_identifier: ObjectIdentifier¶
- property_identifier: PropertyIdentifier¶
- encode()[source]¶
Encode ReadProperty-Request service parameters.
- Return type:
- Returns:
Encoded service request bytes.
- classmethod decode(data)[source]¶
Decode ReadProperty-Request from service request bytes.
- Parameters:
data (
memoryview|bytes) – Raw service request bytes.- Return type:
- Returns:
Decoded
ReadPropertyRequest.
- class bac_py.services.read_property.ReadPropertyACK(object_identifier, property_identifier, property_array_index=None, property_value=b'')[source]¶
Bases:
objectReadProperty-ACK service parameters (Clause 15.5.1.2).
ReadProperty-ACK ::= SEQUENCE { objectIdentifier [0] BACnetObjectIdentifier, propertyIdentifier [1] BACnetPropertyIdentifier, propertyArrayIndex [2] Unsigned OPTIONAL, propertyValue [3] ABSTRACT-SYNTAX.&TYPE }
The property_value field contains raw encoded bytes wrapped in context tag 3 (opening/closing). The application layer is responsible for interpreting the value based on the property type.
- Parameters:
object_identifier (ObjectIdentifier)
property_identifier (PropertyIdentifier)
property_array_index (int | None)
property_value (bytes)
- object_identifier: ObjectIdentifier¶
- property_identifier: PropertyIdentifier¶
- encode()[source]¶
Encode ReadProperty-ACK service parameters.
- Return type:
- Returns:
Encoded service ACK bytes.
- classmethod decode(data)[source]¶
Decode ReadProperty-ACK from service ACK bytes.
- Parameters:
data (
memoryview|bytes) – Raw service ACK bytes.- Return type:
- Returns:
Decoded
ReadPropertyACK.
ReadPropertyMultiple¶
ReadPropertyMultiple service per ASHRAE 135-2016 Clause 15.7.
- class bac_py.services.read_property_multiple.PropertyReference(property_identifier, property_array_index=None)[source]¶
Bases:
objectBACnetPropertyReference (Clause 21).
BACnetPropertyReference ::= SEQUENCE { propertyIdentifier [0] BACnetPropertyIdentifier, propertyArrayIndex [1] Unsigned OPTIONAL }
- Parameters:
property_identifier (PropertyIdentifier)
property_array_index (int | None)
- property_identifier: PropertyIdentifier¶
- encode()[source]¶
Encode this property reference as context-tagged bytes.
- Return type:
- Returns:
Encoded property reference bytes.
- classmethod decode(data, offset)[source]¶
Decode a property reference from a buffer at the given offset.
- Parameters:
data (
memoryview|bytes) – Raw bytes containing encoded property reference data.offset (
int) – Byte offset to start decoding from.
- Return type:
- Returns:
Tuple of (
PropertyReference, new offset).
- class bac_py.services.read_property_multiple.ReadAccessSpecification(object_identifier, list_of_property_references)[source]¶
Bases:
objectBACnetReadAccessSpecification (Clause 21).
ReadAccessSpecification ::= SEQUENCE { objectIdentifier [0] BACnetObjectIdentifier, listOfPropertyReferences [1] SEQUENCE OF BACnetPropertyReference }
- Parameters:
object_identifier (ObjectIdentifier)
list_of_property_references (list[PropertyReference])
- object_identifier: ObjectIdentifier¶
- list_of_property_references: list[PropertyReference]¶
- encode()[source]¶
Encode this read access specification as context-tagged bytes.
- Return type:
- Returns:
Encoded read access specification bytes.
- classmethod decode(data, offset)[source]¶
Decode a read access specification from a buffer at the given offset.
- Parameters:
data (
memoryview|bytes) – Raw bytes containing encoded read access specification data.offset (
int) – Byte offset to start decoding from.
- Return type:
- Returns:
Tuple of (
ReadAccessSpecification, new offset).
- class bac_py.services.read_property_multiple.ReadPropertyMultipleRequest(list_of_read_access_specs)[source]¶
Bases:
objectReadPropertyMultiple-Request service parameters (Clause 15.7.1.1).
ReadPropertyMultiple-Request ::= SEQUENCE { listOfReadAccessSpecs SEQUENCE OF ReadAccessSpecification }
- Parameters:
list_of_read_access_specs (list[ReadAccessSpecification])
- list_of_read_access_specs: list[ReadAccessSpecification]¶
- encode()[source]¶
Encode ReadPropertyMultiple-Request service parameters.
- Return type:
- Returns:
Encoded service request bytes.
- classmethod decode(data)[source]¶
Decode ReadPropertyMultiple-Request from service request bytes.
- Parameters:
data (
memoryview|bytes) – Raw service request bytes.- Return type:
- Returns:
Decoded
ReadPropertyMultipleRequest.
- class bac_py.services.read_property_multiple.ReadResultElement(property_identifier, property_array_index=None, property_value=None, property_access_error=None)[source]¶
Bases:
objectSingle result element within a ReadAccessResult.
Contains either a property value (success) or an error (failure), but not both.
ReadAccessResult.listOfResults-element ::= SEQUENCE { propertyIdentifier [2] BACnetPropertyIdentifier, propertyArrayIndex [3] Unsigned OPTIONAL, propertyValue [4] ABSTRACT-SYNTAX.&TYPE, -- on success | propertyAccessError [5] BACnetError -- on failure }
- Parameters:
property_identifier (PropertyIdentifier)
property_array_index (int | None)
property_value (bytes | None)
property_access_error (tuple[ErrorClass, ErrorCode] | None)
- property_identifier: PropertyIdentifier¶
- property_access_error: tuple[ErrorClass, ErrorCode] | None¶
- encode()[source]¶
Encode a single read result element.
- Return type:
- Returns:
Encoded result element bytes containing either a property value (success) or a property access error (failure).
- classmethod decode(data, offset)[source]¶
Decode a single read result element from a buffer at the given offset.
- Parameters:
data (
memoryview|bytes) – Raw bytes containing encoded result element data.offset (
int) – Byte offset to start decoding from.
- Return type:
- Returns:
Tuple of (
ReadResultElement, new offset).
- class bac_py.services.read_property_multiple.ReadAccessResult(object_identifier, list_of_results)[source]¶
Bases:
objectBACnetReadAccessResult (Clause 21).
ReadAccessResult ::= SEQUENCE { objectIdentifier [0] BACnetObjectIdentifier, listOfResults [1] SEQUENCE OF ReadAccessResult.listOfResults-element }
- Parameters:
object_identifier (ObjectIdentifier)
list_of_results (list[ReadResultElement])
- object_identifier: ObjectIdentifier¶
- list_of_results: list[ReadResultElement]¶
- encode()[source]¶
Encode this read access result as context-tagged bytes.
- Return type:
- Returns:
Encoded read access result bytes.
- classmethod decode(data, offset)[source]¶
Decode a read access result from a buffer at the given offset.
- Parameters:
data (
memoryview|bytes) – Raw bytes containing encoded read access result data.offset (
int) – Byte offset to start decoding from.
- Return type:
- Returns:
Tuple of (
ReadAccessResult, new offset).
- class bac_py.services.read_property_multiple.ReadPropertyMultipleACK(list_of_read_access_results)[source]¶
Bases:
objectReadPropertyMultiple-ACK service parameters (Clause 15.7.1.2).
ReadPropertyMultiple-ACK ::= SEQUENCE { listOfReadAccessResults SEQUENCE OF ReadAccessResult }
- Parameters:
list_of_read_access_results (list[ReadAccessResult])
- list_of_read_access_results: list[ReadAccessResult]¶
- encode()[source]¶
Encode ReadPropertyMultiple-ACK service parameters.
- Return type:
- Returns:
Encoded service ACK bytes.
- classmethod decode(data)[source]¶
Decode ReadPropertyMultiple-ACK from service ACK bytes.
- Parameters:
data (
memoryview|bytes) – Raw service ACK bytes.- Return type:
- Returns:
Decoded
ReadPropertyMultipleACK.
WriteProperty¶
WriteProperty service per ASHRAE 135-2016 Clause 15.9.
- class bac_py.services.write_property.WritePropertyRequest(object_identifier, property_identifier, property_value, property_array_index=None, priority=None)[source]¶
Bases:
objectWriteProperty-Request service parameters (Clause 15.9.1.1).
WriteProperty-Request ::= SEQUENCE { objectIdentifier [0] BACnetObjectIdentifier, propertyIdentifier [1] BACnetPropertyIdentifier, propertyArrayIndex [2] Unsigned OPTIONAL, propertyValue [3] ABSTRACT-SYNTAX.&TYPE, priority [4] Unsigned (1..16) OPTIONAL }
The property_value field contains raw application-tagged encoded bytes. The application layer is responsible for encoding the value appropriately for the target property type.
- Parameters:
object_identifier (ObjectIdentifier)
property_identifier (PropertyIdentifier)
property_value (bytes)
property_array_index (int | None)
priority (int | None)
- object_identifier: ObjectIdentifier¶
- property_identifier: PropertyIdentifier¶
- encode()[source]¶
Encode WriteProperty-Request service parameters.
- Return type:
- Returns:
Encoded service request bytes.
- classmethod decode(data)[source]¶
Decode WriteProperty-Request from service request bytes.
- Parameters:
data (
memoryview|bytes) – Raw service request bytes.- Return type:
- Returns:
Decoded
WritePropertyRequest.- Raises:
BACnetRejectError – If priority is outside the 1–16 range (per Clause 15.9.1.1.5).
WritePropertyMultiple¶
WritePropertyMultiple service per ASHRAE 135-2016 Clause 15.10.
- class bac_py.services.write_property_multiple.WriteAccessSpecification(object_identifier, list_of_properties)[source]¶
Bases:
objectBACnetWriteAccessSpecification (Clause 21).
WriteAccessSpecification ::= SEQUENCE { objectIdentifier [0] BACnetObjectIdentifier, listOfProperties [1] SEQUENCE OF BACnetPropertyValue }
- Parameters:
object_identifier (ObjectIdentifier)
list_of_properties (list[BACnetPropertyValue])
- object_identifier: ObjectIdentifier¶
- list_of_properties: list[BACnetPropertyValue]¶
- encode()[source]¶
Encode this write access specification as context-tagged bytes.
- Return type:
- Returns:
Encoded write access specification bytes.
- classmethod decode(data, offset)[source]¶
Decode a write access specification from a buffer at the given offset.
- Parameters:
data (
memoryview|bytes) – Raw bytes containing encoded write access specification data.offset (
int) – Byte offset to start decoding from.
- Return type:
- Returns:
Tuple of (
WriteAccessSpecification, new offset).
- class bac_py.services.write_property_multiple.WritePropertyMultipleRequest(list_of_write_access_specs)[source]¶
Bases:
objectWritePropertyMultiple-Request service parameters (Clause 15.10.1.1).
WritePropertyMultiple-Request ::= SEQUENCE { listOfWriteAccessSpecs SEQUENCE OF WriteAccessSpecification }
- Parameters:
list_of_write_access_specs (list[WriteAccessSpecification])
- list_of_write_access_specs: list[WriteAccessSpecification]¶
- encode()[source]¶
Encode WritePropertyMultiple-Request service parameters.
- Return type:
- Returns:
Encoded service request bytes.
- classmethod decode(data)[source]¶
Decode WritePropertyMultiple-Request from service request bytes.
- Parameters:
data (
memoryview|bytes) – Raw service request bytes.- Return type:
- Returns:
Decoded
WritePropertyMultipleRequest.
ReadRange¶
ReadRange service per ASHRAE 135-2016 Clause 15.8.
- class bac_py.services.read_range.RangeByPosition(reference_index, count)[source]¶
Bases:
objectRange qualifier: by position (index + count).
SEQUENCE { referenceIndex Unsigned, count INTEGER }
- class bac_py.services.read_range.RangeBySequenceNumber(reference_sequence_number, count)[source]¶
Bases:
objectRange qualifier: by sequence number.
SEQUENCE { referenceSequenceNumber Unsigned, count INTEGER }
- class bac_py.services.read_range.RangeByTime(reference_date, reference_time, count)[source]¶
Bases:
objectRange qualifier: by time.
SEQUENCE { referenceTime BACnetDateTime, count INTEGER }
- Parameters:
reference_date (BACnetDate)
reference_time (BACnetTime)
count (int)
- reference_date: BACnetDate¶
- reference_time: BACnetTime¶
- class bac_py.services.read_range.ResultFlags(first_item=False, last_item=False, more_items=False)[source]¶
Bases:
objectBACnetResultFlags — 3-bit BitString.
Bit 0: FIRST_ITEM — result includes the first item in the list Bit 1: LAST_ITEM — result includes the last item in the list Bit 2: MORE_ITEMS — more items remain beyond what was returned
- to_bit_string()[source]¶
Convert to a BACnet
BitString.- Return type:
- Returns:
3-bit BitString encoding of the result flags.
- classmethod from_bit_string(bs)[source]¶
Decode from a BACnet
BitString.- Parameters:
bs (
BitString) – BitString with up to 3 significant bits.- Return type:
- Returns:
Decoded
ResultFlags.
- class bac_py.services.read_range.ReadRangeRequest(object_identifier, property_identifier, property_array_index=None, range=None)[source]¶
Bases:
objectReadRange-Request service parameters (Clause 15.8.1.1).
ReadRange-Request ::= SEQUENCE { objectIdentifier [0] BACnetObjectIdentifier, propertyIdentifier [1] BACnetPropertyIdentifier, propertyArrayIndex [2] Unsigned OPTIONAL, range CHOICE { byPosition [3] SEQUENCE { referenceIndex Unsigned, count INTEGER }, bySequenceNumber [6] SEQUENCE { referenceSequenceNumber Unsigned, count INTEGER }, byTime [7] SEQUENCE { referenceTime BACnetDateTime, count INTEGER } } OPTIONAL }
- Parameters:
object_identifier (ObjectIdentifier)
property_identifier (PropertyIdentifier)
property_array_index (int | None)
range (RangeByPosition | RangeBySequenceNumber | RangeByTime | None)
- object_identifier: ObjectIdentifier¶
- property_identifier: PropertyIdentifier¶
- range: RangeByPosition | RangeBySequenceNumber | RangeByTime | None¶
- encode()[source]¶
Encode ReadRange-Request service parameters.
- Return type:
- Returns:
Encoded service request bytes.
- classmethod decode(data)[source]¶
Decode ReadRange-Request from service request bytes.
- Parameters:
data (
memoryview|bytes) – Raw service request bytes.- Return type:
- Returns:
Decoded
ReadRangeRequest.
- class bac_py.services.read_range.ReadRangeACK(object_identifier, property_identifier, result_flags, item_count, item_data, property_array_index=None, first_sequence_number=None)[source]¶
Bases:
objectReadRange-ACK service parameters (Clause 15.8.1.2).
ReadRange-ACK ::= SEQUENCE { objectIdentifier [0] BACnetObjectIdentifier, propertyIdentifier [1] BACnetPropertyIdentifier, propertyArrayIndex [2] Unsigned OPTIONAL, resultFlags [3] BACnetResultFlags, itemCount [4] Unsigned, itemData [5] SEQUENCE OF ABSTRACT-SYNTAX.&TYPE, firstSequenceNumber [6] Unsigned32 OPTIONAL }
The itemData field contains raw encoded bytes wrapped in context tag 5 (opening/closing).
- Parameters:
object_identifier (ObjectIdentifier)
property_identifier (PropertyIdentifier)
result_flags (ResultFlags)
item_count (int)
item_data (bytes)
property_array_index (int | None)
first_sequence_number (int | None)
- object_identifier: ObjectIdentifier¶
- property_identifier: PropertyIdentifier¶
- result_flags: ResultFlags¶
- encode()[source]¶
Encode ReadRange-ACK service parameters.
- Return type:
- Returns:
Encoded service ACK bytes.
- classmethod decode(data)[source]¶
Decode ReadRange-ACK from service ACK bytes.
- Parameters:
data (
memoryview|bytes) – Raw service ACK bytes.- Return type:
- Returns:
Decoded
ReadRangeACK.