Infrastructure and Specialized

File Object

BACnet File object type per ASHRAE 135-2016 Clause 12.13.

class bac_py.objects.file.FileObject(instance_number, *, file_access_method=FileAccessMethod.STREAM_ACCESS, **initial_properties)[source]

Bases: BACnetObject

BACnet File object (Clause 12.13).

Represents a file accessible via AtomicReadFile/AtomicWriteFile. Supports both stream and record access methods.

Parameters:
OBJECT_TYPE: ClassVar[ObjectType] = 10
PROPERTY_DEFINITIONS: ClassVar[dict[PropertyIdentifier, PropertyDefinition]] = {PropertyIdentifier.ARCHIVE: PropertyDefinition(identifier=<PropertyIdentifier.ARCHIVE: 13>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=False), PropertyIdentifier.DESCRIPTION: PropertyDefinition(identifier=<PropertyIdentifier.DESCRIPTION: 28>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.FILE_ACCESS_METHOD: PropertyDefinition(identifier=<PropertyIdentifier.FILE_ACCESS_METHOD: 41>, datatype=<enum 'FileAccessMethod'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.FILE_SIZE: PropertyDefinition(identifier=<PropertyIdentifier.FILE_SIZE: 42>, datatype=<class 'int'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=0), PropertyIdentifier.FILE_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.FILE_TYPE: 43>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=''), PropertyIdentifier.MODIFICATION_DATE: PropertyDefinition(identifier=<PropertyIdentifier.MODIFICATION_DATE: 71>, datatype=<class 'bac_py.types.constructed.BACnetDateTime'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OBJECT_IDENTIFIER: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_IDENTIFIER: 75>, datatype=<class 'bac_py.types.primitives.ObjectIdentifier'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OBJECT_NAME: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_NAME: 77>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.OBJECT_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_TYPE: 79>, datatype=<enum 'ObjectType'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.READ_ONLY: PropertyDefinition(identifier=<PropertyIdentifier.READ_ONLY: 99>, datatype=<class 'bool'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=False), PropertyIdentifier.PROPERTY_LIST: PropertyDefinition(identifier=<PropertyIdentifier.PROPERTY_LIST: 371>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None)}
read_stream(start, count)[source]

Read stream data from the file.

Parameters:
  • start (int) – Starting byte position.

  • count (int) – Number of bytes to read.

Return type:

tuple[bytes, bool]

Returns:

Tuple of (data, end_of_file).

Raises:

BACnetError – If access method is not stream.

write_stream(start, data)[source]

Write stream data to the file.

Parameters:
  • start (int) – Starting byte position. Use -1 to append.

  • data (bytes) – Data to write.

Return type:

int

Returns:

The actual file start position used.

Raises:

BACnetError – If access method is not stream or file is read-only.

read_records(start, count)[source]

Read records from the file.

Parameters:
  • start (int) – Starting record index.

  • count (int) – Number of records to read.

Return type:

tuple[list[bytes], bool]

Returns:

Tuple of (records, end_of_file).

Raises:

BACnetError – If access method is not record.

write_records(start, records)[source]

Write records to the file.

Parameters:
  • start (int) – Starting record index. Use -1 to append.

  • records (list[bytes]) – Records to write.

Return type:

int

Returns:

The actual file start record used.

Raises:

BACnetError – If access method is not record or file is read-only.

Network Port Object

BACnet Network Port object type per ASHRAE 135-2020 Clause 12.56.

class bac_py.objects.network_port.NetworkPortObject(instance_number, *, network_type=NetworkType.IPV4, **initial_properties)[source]

Bases: BACnetObject

BACnet Network Port object (Clause 12.56).

Describes a network port’s configuration and status. Required for BACnet/IP devices. Covers the essential properties for IP-based networking; additional properties (MS/TP, BACnet/SC) can be added as optional properties via initial_properties.

Parameters:
  • instance_number (int)

  • network_type (NetworkType)

  • initial_properties (Any)

OBJECT_TYPE: ClassVar[ObjectType] = 56
PROPERTY_DEFINITIONS: ClassVar[dict[PropertyIdentifier, PropertyDefinition]] = {PropertyIdentifier.DESCRIPTION: PropertyDefinition(identifier=<PropertyIdentifier.DESCRIPTION: 28>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.EVENT_STATE: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_STATE: 36>, datatype=<enum 'EventState'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<EventState.NORMAL: 0>), PropertyIdentifier.MAX_INFO_FRAMES: PropertyDefinition(identifier=<PropertyIdentifier.MAX_INFO_FRAMES: 63>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.MAX_MASTER: PropertyDefinition(identifier=<PropertyIdentifier.MAX_MASTER: 64>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.OBJECT_IDENTIFIER: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_IDENTIFIER: 75>, datatype=<class 'bac_py.types.primitives.ObjectIdentifier'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OBJECT_NAME: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_NAME: 77>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.OBJECT_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_TYPE: 79>, datatype=<enum 'ObjectType'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OUT_OF_SERVICE: PropertyDefinition(identifier=<PropertyIdentifier.OUT_OF_SERVICE: 81>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=False), PropertyIdentifier.RELIABILITY: PropertyDefinition(identifier=<PropertyIdentifier.RELIABILITY: 103>, datatype=<enum 'Reliability'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<Reliability.NO_FAULT_DETECTED: 0>), PropertyIdentifier.STATUS_FLAGS: PropertyDefinition(identifier=<PropertyIdentifier.STATUS_FLAGS: 111>, datatype=<class 'bac_py.types.constructed.StatusFlags'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.PROPERTY_LIST: PropertyDefinition(identifier=<PropertyIdentifier.PROPERTY_LIST: 371>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.APDU_LENGTH: PropertyDefinition(identifier=<PropertyIdentifier.APDU_LENGTH: 399>, datatype=<class 'int'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=1476), PropertyIdentifier.IP_ADDRESS: PropertyDefinition(identifier=<PropertyIdentifier.IP_ADDRESS: 400>, datatype=<class 'bytes'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.IP_DEFAULT_GATEWAY: PropertyDefinition(identifier=<PropertyIdentifier.IP_DEFAULT_GATEWAY: 401>, datatype=<class 'bytes'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.IP_DHCP_ENABLE: PropertyDefinition(identifier=<PropertyIdentifier.IP_DHCP_ENABLE: 402>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.IP_DNS_SERVER: PropertyDefinition(identifier=<PropertyIdentifier.IP_DNS_SERVER: 406>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.BACNET_IP_GLOBAL_ADDRESS: PropertyDefinition(identifier=<PropertyIdentifier.BACNET_IP_GLOBAL_ADDRESS: 407>, datatype=<class 'bytes'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.BACNET_IP_MODE: PropertyDefinition(identifier=<PropertyIdentifier.BACNET_IP_MODE: 408>, datatype=<enum 'IPMode'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.BACNET_IP_NAT_TRAVERSAL: PropertyDefinition(identifier=<PropertyIdentifier.BACNET_IP_NAT_TRAVERSAL: 410>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.IP_SUBNET_MASK: PropertyDefinition(identifier=<PropertyIdentifier.IP_SUBNET_MASK: 411>, datatype=<class 'bytes'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.BACNET_IP_UDP_PORT: PropertyDefinition(identifier=<PropertyIdentifier.BACNET_IP_UDP_PORT: 412>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.BBMD_ACCEPT_FD_REGISTRATIONS: PropertyDefinition(identifier=<PropertyIdentifier.BBMD_ACCEPT_FD_REGISTRATIONS: 413>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.BBMD_BROADCAST_DISTRIBUTION_TABLE: PropertyDefinition(identifier=<PropertyIdentifier.BBMD_BROADCAST_DISTRIBUTION_TABLE: 414>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.CHANGES_PENDING: PropertyDefinition(identifier=<PropertyIdentifier.CHANGES_PENDING: 416>, datatype=<class 'bool'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=False), PropertyIdentifier.COMMAND: PropertyDefinition(identifier=<PropertyIdentifier.COMMAND: 417>, datatype=<enum 'NetworkPortCommand'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=<NetworkPortCommand.IDLE: 0>), PropertyIdentifier.FD_BBMD_ADDRESS: PropertyDefinition(identifier=<PropertyIdentifier.FD_BBMD_ADDRESS: 418>, datatype=<class 'bytes'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.LINK_SPEED: PropertyDefinition(identifier=<PropertyIdentifier.LINK_SPEED: 420>, datatype=<class 'float'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=0.0), PropertyIdentifier.MAC_ADDRESS: PropertyDefinition(identifier=<PropertyIdentifier.MAC_ADDRESS: 423>, datatype=<class 'bytes'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.NETWORK_NUMBER: PropertyDefinition(identifier=<PropertyIdentifier.NETWORK_NUMBER: 425>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=0), PropertyIdentifier.NETWORK_NUMBER_QUALITY: PropertyDefinition(identifier=<PropertyIdentifier.NETWORK_NUMBER_QUALITY: 426>, datatype=<enum 'NetworkNumberQuality'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<NetworkNumberQuality.UNKNOWN: 0>), PropertyIdentifier.NETWORK_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.NETWORK_TYPE: 427>, datatype=<enum 'NetworkType'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.VIRTUAL_MAC_ADDRESS_TABLE: PropertyDefinition(identifier=<PropertyIdentifier.VIRTUAL_MAC_ADDRESS_TABLE: 429>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.BACNET_IPV6_MODE: PropertyDefinition(identifier=<PropertyIdentifier.BACNET_IPV6_MODE: 435>, datatype=<enum 'IPMode'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.IPV6_ADDRESS: PropertyDefinition(identifier=<PropertyIdentifier.IPV6_ADDRESS: 436>, datatype=<class 'bytes'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.IPV6_PREFIX_LENGTH: PropertyDefinition(identifier=<PropertyIdentifier.IPV6_PREFIX_LENGTH: 437>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.BACNET_IPV6_UDP_PORT: PropertyDefinition(identifier=<PropertyIdentifier.BACNET_IPV6_UDP_PORT: 438>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.IPV6_DEFAULT_GATEWAY: PropertyDefinition(identifier=<PropertyIdentifier.IPV6_DEFAULT_GATEWAY: 439>, datatype=<class 'bytes'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.BACNET_IPV6_MULTICAST_ADDRESS: PropertyDefinition(identifier=<PropertyIdentifier.BACNET_IPV6_MULTICAST_ADDRESS: 440>, datatype=<class 'bytes'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.IPV6_DNS_SERVER: PropertyDefinition(identifier=<PropertyIdentifier.IPV6_DNS_SERVER: 441>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.IPV6_AUTO_ADDRESSING_ENABLE: PropertyDefinition(identifier=<PropertyIdentifier.IPV6_AUTO_ADDRESSING_ENABLE: 442>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.PROTOCOL_LEVEL: PropertyDefinition(identifier=<PropertyIdentifier.PROTOCOL_LEVEL: 482>, datatype=<enum 'ProtocolLevel'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<ProtocolLevel.BACNET_APPLICATION: 2>)}

Channel Object

BACnet Channel object type per ASHRAE 135-2016 Clause 12.53.

class bac_py.objects.channel.ChannelObject(instance_number, *, channel_number=0, **initial_properties)[source]

Bases: BACnetObject

BACnet Channel object (Clause 12.53).

Provides multi-object control via a single write operation. A Channel can simultaneously command multiple other objects (e.g. lighting groups, HVAC zones) by writing to its Present_Value property.

Parameters:
  • instance_number (int)

  • channel_number (int)

  • initial_properties (Any)

OBJECT_TYPE: ClassVar[ObjectType] = 53
PROPERTY_DEFINITIONS: ClassVar[dict[PropertyIdentifier, PropertyDefinition]] = {PropertyIdentifier.DESCRIPTION: PropertyDefinition(identifier=<PropertyIdentifier.DESCRIPTION: 28>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.EVENT_STATE: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_STATE: 36>, datatype=<enum 'EventState'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<EventState.NORMAL: 0>), PropertyIdentifier.LIST_OF_OBJECT_PROPERTY_REFERENCES: PropertyDefinition(identifier=<PropertyIdentifier.LIST_OF_OBJECT_PROPERTY_REFERENCES: 54>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=[]), PropertyIdentifier.OBJECT_IDENTIFIER: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_IDENTIFIER: 75>, datatype=<class 'bac_py.types.primitives.ObjectIdentifier'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OBJECT_NAME: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_NAME: 77>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.OBJECT_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_TYPE: 79>, datatype=<enum 'ObjectType'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OUT_OF_SERVICE: PropertyDefinition(identifier=<PropertyIdentifier.OUT_OF_SERVICE: 81>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=False), PropertyIdentifier.PRESENT_VALUE: PropertyDefinition(identifier=<PropertyIdentifier.PRESENT_VALUE: 85>, datatype=<class 'object'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.RELIABILITY: PropertyDefinition(identifier=<PropertyIdentifier.RELIABILITY: 103>, datatype=<enum 'Reliability'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.STATUS_FLAGS: PropertyDefinition(identifier=<PropertyIdentifier.STATUS_FLAGS: 111>, datatype=<class 'bac_py.types.constructed.StatusFlags'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.ALLOW_GROUP_DELAY_INHIBIT: PropertyDefinition(identifier=<PropertyIdentifier.ALLOW_GROUP_DELAY_INHIBIT: 365>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.CHANNEL_NUMBER: PropertyDefinition(identifier=<PropertyIdentifier.CHANNEL_NUMBER: 366>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.CONTROL_GROUPS: PropertyDefinition(identifier=<PropertyIdentifier.CONTROL_GROUPS: 367>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=[]), PropertyIdentifier.EXECUTION_DELAY: PropertyDefinition(identifier=<PropertyIdentifier.EXECUTION_DELAY: 368>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.LAST_PRIORITY: PropertyDefinition(identifier=<PropertyIdentifier.LAST_PRIORITY: 369>, datatype=<class 'int'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.WRITE_STATUS: PropertyDefinition(identifier=<PropertyIdentifier.WRITE_STATUS: 370>, datatype=<enum 'WriteStatus'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<WriteStatus.IDLE: 0>), PropertyIdentifier.PROPERTY_LIST: PropertyDefinition(identifier=<PropertyIdentifier.PROPERTY_LIST: 371>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None)}

Global Group Object

BACnet Global Group object per ASHRAE 135-2020 Clause 12.50.

class bac_py.objects.global_group.GlobalGroupObject(instance_number, **initial_properties)[source]

Bases: BACnetObject

BACnet Global Group object (Clause 12.50).

Provides grouped property reads across multiple devices. Each member specifies a device, object, and property.

Parameters:
  • instance_number (int)

  • initial_properties (Any)

OBJECT_TYPE: ClassVar[ObjectType] = 26
PROPERTY_DEFINITIONS: ClassVar[dict[PropertyIdentifier, PropertyDefinition]] = {PropertyIdentifier.DESCRIPTION: PropertyDefinition(identifier=<PropertyIdentifier.DESCRIPTION: 28>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.EVENT_STATE: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_STATE: 36>, datatype=<enum 'EventState'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<EventState.NORMAL: 0>), PropertyIdentifier.OBJECT_IDENTIFIER: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_IDENTIFIER: 75>, datatype=<class 'bac_py.types.primitives.ObjectIdentifier'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OBJECT_NAME: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_NAME: 77>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.OBJECT_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_TYPE: 79>, datatype=<enum 'ObjectType'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.PRESENT_VALUE: PropertyDefinition(identifier=<PropertyIdentifier.PRESENT_VALUE: 85>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=[]), PropertyIdentifier.RELIABILITY: PropertyDefinition(identifier=<PropertyIdentifier.RELIABILITY: 103>, datatype=<enum 'Reliability'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.STATUS_FLAGS: PropertyDefinition(identifier=<PropertyIdentifier.STATUS_FLAGS: 111>, datatype=<class 'bac_py.types.constructed.StatusFlags'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.GROUP_MEMBERS: PropertyDefinition(identifier=<PropertyIdentifier.GROUP_MEMBERS: 345>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=[]), PropertyIdentifier.GROUP_MEMBER_NAMES: PropertyDefinition(identifier=<PropertyIdentifier.GROUP_MEMBER_NAMES: 346>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.MEMBER_STATUS_FLAGS: PropertyDefinition(identifier=<PropertyIdentifier.MEMBER_STATUS_FLAGS: 347>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.REQUESTED_UPDATE_INTERVAL: PropertyDefinition(identifier=<PropertyIdentifier.REQUESTED_UPDATE_INTERVAL: 348>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.COVU_PERIOD: PropertyDefinition(identifier=<PropertyIdentifier.COVU_PERIOD: 349>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.COVU_RECIPIENTS: PropertyDefinition(identifier=<PropertyIdentifier.COVU_RECIPIENTS: 350>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.PROPERTY_LIST: PropertyDefinition(identifier=<PropertyIdentifier.PROPERTY_LIST: 371>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None)}

Group Object

BACnet Group object per ASHRAE 135-2020 Clause 12.14.

class bac_py.objects.group.GroupObject(instance_number, **initial_properties)[source]

Bases: BACnetObject

BACnet Group object (Clause 12.14).

Provides local grouped property reads. Present_Value returns the current values of all members in a single read.

Parameters:
  • instance_number (int)

  • initial_properties (Any)

OBJECT_TYPE: ClassVar[ObjectType] = 11
PROPERTY_DEFINITIONS: ClassVar[dict[PropertyIdentifier, PropertyDefinition]] = {PropertyIdentifier.DESCRIPTION: PropertyDefinition(identifier=<PropertyIdentifier.DESCRIPTION: 28>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.LIST_OF_GROUP_MEMBERS: PropertyDefinition(identifier=<PropertyIdentifier.LIST_OF_GROUP_MEMBERS: 53>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=[]), PropertyIdentifier.OBJECT_IDENTIFIER: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_IDENTIFIER: 75>, datatype=<class 'bac_py.types.primitives.ObjectIdentifier'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OBJECT_NAME: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_NAME: 77>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.OBJECT_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_TYPE: 79>, datatype=<enum 'ObjectType'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.PRESENT_VALUE: PropertyDefinition(identifier=<PropertyIdentifier.PRESENT_VALUE: 85>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=[]), PropertyIdentifier.PROPERTY_LIST: PropertyDefinition(identifier=<PropertyIdentifier.PROPERTY_LIST: 371>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None)}

Structured View Object

BACnet Structured View object per ASHRAE 135-2020 Clause 12.29.

class bac_py.objects.structured_view.StructuredViewObject(instance_number, **initial_properties)[source]

Bases: BACnetObject

BACnet Structured View object (Clause 12.29).

Provides hierarchical grouping of objects for organizational purposes. Pure data container with no behavioral logic.

Parameters:
  • instance_number (int)

  • initial_properties (Any)

OBJECT_TYPE: ClassVar[ObjectType] = 29
PROPERTY_DEFINITIONS: ClassVar[dict[PropertyIdentifier, PropertyDefinition]] = {PropertyIdentifier.DESCRIPTION: PropertyDefinition(identifier=<PropertyIdentifier.DESCRIPTION: 28>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.OBJECT_IDENTIFIER: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_IDENTIFIER: 75>, datatype=<class 'bac_py.types.primitives.ObjectIdentifier'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OBJECT_NAME: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_NAME: 77>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.OBJECT_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_TYPE: 79>, datatype=<enum 'ObjectType'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.NODE_SUBTYPE: PropertyDefinition(identifier=<PropertyIdentifier.NODE_SUBTYPE: 207>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.NODE_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.NODE_TYPE: 208>, datatype=<enum 'NodeType'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=<NodeType.UNKNOWN: 0>), PropertyIdentifier.SUBORDINATE_ANNOTATIONS: PropertyDefinition(identifier=<PropertyIdentifier.SUBORDINATE_ANNOTATIONS: 210>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.SUBORDINATE_LIST: PropertyDefinition(identifier=<PropertyIdentifier.SUBORDINATE_LIST: 211>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=[]), PropertyIdentifier.PROPERTY_LIST: PropertyDefinition(identifier=<PropertyIdentifier.PROPERTY_LIST: 371>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None)}

Life Safety Objects

BACnet Life Safety object types per ASHRAE 135-2020 Clause 12.15-12.16.

class bac_py.objects.life_safety.LifeSafetyPointObject(instance_number, **initial_properties)[source]

Bases: BACnetObject

BACnet Life Safety Point object (Clause 12.15).

Represents a fire/smoke/gas detector point or similar life safety sensor. Present_Value reflects the current sensor state.

Parameters:
  • instance_number (int)

  • initial_properties (Any)

OBJECT_TYPE: ClassVar[ObjectType] = 21
INTRINSIC_EVENT_ALGORITHM: ClassVar[EventType | None] = 8

Event algorithm for intrinsic reporting, or None if not supported.

PROPERTY_DEFINITIONS: ClassVar[dict[PropertyIdentifier, PropertyDefinition]] = {PropertyIdentifier.ALARM_VALUES: PropertyDefinition(identifier=<PropertyIdentifier.ALARM_VALUES: 7>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.NOTIFICATION_CLASS: PropertyDefinition(identifier=<PropertyIdentifier.NOTIFICATION_CLASS: 17>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.DESCRIPTION: PropertyDefinition(identifier=<PropertyIdentifier.DESCRIPTION: 28>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.EVENT_ENABLE: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_ENABLE: 35>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.EVENT_STATE: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_STATE: 36>, datatype=<enum 'EventState'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<EventState.NORMAL: 0>), PropertyIdentifier.FAULT_VALUES: PropertyDefinition(identifier=<PropertyIdentifier.FAULT_VALUES: 39>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.OBJECT_IDENTIFIER: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_IDENTIFIER: 75>, datatype=<class 'bac_py.types.primitives.ObjectIdentifier'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OBJECT_NAME: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_NAME: 77>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.OBJECT_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_TYPE: 79>, datatype=<enum 'ObjectType'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OUT_OF_SERVICE: PropertyDefinition(identifier=<PropertyIdentifier.OUT_OF_SERVICE: 81>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=False), PropertyIdentifier.PRESENT_VALUE: PropertyDefinition(identifier=<PropertyIdentifier.PRESENT_VALUE: 85>, datatype=<enum 'LifeSafetyState'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<LifeSafetyState.QUIET: 0>), PropertyIdentifier.RELIABILITY: PropertyDefinition(identifier=<PropertyIdentifier.RELIABILITY: 103>, datatype=<enum 'Reliability'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<Reliability.NO_FAULT_DETECTED: 0>), PropertyIdentifier.STATUS_FLAGS: PropertyDefinition(identifier=<PropertyIdentifier.STATUS_FLAGS: 111>, datatype=<class 'bac_py.types.constructed.StatusFlags'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.TIME_DELAY: PropertyDefinition(identifier=<PropertyIdentifier.TIME_DELAY: 113>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.UNITS: PropertyDefinition(identifier=<PropertyIdentifier.UNITS: 117>, datatype=<class 'int'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.DIRECT_READING: PropertyDefinition(identifier=<PropertyIdentifier.DIRECT_READING: 156>, datatype=<class 'float'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.MEMBER_OF: PropertyDefinition(identifier=<PropertyIdentifier.MEMBER_OF: 159>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.MODE: PropertyDefinition(identifier=<PropertyIdentifier.MODE: 160>, datatype=<enum 'LifeSafetyMode'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=<LifeSafetyMode.ON: 1>), PropertyIdentifier.OPERATION_EXPECTED: PropertyDefinition(identifier=<PropertyIdentifier.OPERATION_EXPECTED: 161>, datatype=<enum 'LifeSafetyOperation'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<LifeSafetyOperation.NONE: 0>), PropertyIdentifier.SETTING: PropertyDefinition(identifier=<PropertyIdentifier.SETTING: 162>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.SILENCED: PropertyDefinition(identifier=<PropertyIdentifier.SILENCED: 163>, datatype=<enum 'SilencedState'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<SilencedState.UNSILENCED: 0>), PropertyIdentifier.TRACKING_VALUE: PropertyDefinition(identifier=<PropertyIdentifier.TRACKING_VALUE: 164>, datatype=<enum 'LifeSafetyState'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<LifeSafetyState.QUIET: 0>), PropertyIdentifier.LIFE_SAFETY_ALARM_VALUES: PropertyDefinition(identifier=<PropertyIdentifier.LIFE_SAFETY_ALARM_VALUES: 166>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.ACCEPTED_MODES: PropertyDefinition(identifier=<PropertyIdentifier.ACCEPTED_MODES: 175>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.PROPERTY_LIST: PropertyDefinition(identifier=<PropertyIdentifier.PROPERTY_LIST: 371>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None)}
class bac_py.objects.life_safety.LifeSafetyZoneObject(instance_number, **initial_properties)[source]

Bases: BACnetObject

BACnet Life Safety Zone object (Clause 12.16).

Represents a grouped area containing one or more life safety points. Present_Value reflects the aggregate zone state.

Parameters:
  • instance_number (int)

  • initial_properties (Any)

OBJECT_TYPE: ClassVar[ObjectType] = 22
INTRINSIC_EVENT_ALGORITHM: ClassVar[EventType | None] = 8

Event algorithm for intrinsic reporting, or None if not supported.

PROPERTY_DEFINITIONS: ClassVar[dict[PropertyIdentifier, PropertyDefinition]] = {PropertyIdentifier.ALARM_VALUES: PropertyDefinition(identifier=<PropertyIdentifier.ALARM_VALUES: 7>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.NOTIFICATION_CLASS: PropertyDefinition(identifier=<PropertyIdentifier.NOTIFICATION_CLASS: 17>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.DESCRIPTION: PropertyDefinition(identifier=<PropertyIdentifier.DESCRIPTION: 28>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.EVENT_ENABLE: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_ENABLE: 35>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.EVENT_STATE: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_STATE: 36>, datatype=<enum 'EventState'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<EventState.NORMAL: 0>), PropertyIdentifier.FAULT_VALUES: PropertyDefinition(identifier=<PropertyIdentifier.FAULT_VALUES: 39>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.OBJECT_IDENTIFIER: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_IDENTIFIER: 75>, datatype=<class 'bac_py.types.primitives.ObjectIdentifier'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OBJECT_NAME: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_NAME: 77>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.OBJECT_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_TYPE: 79>, datatype=<enum 'ObjectType'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OUT_OF_SERVICE: PropertyDefinition(identifier=<PropertyIdentifier.OUT_OF_SERVICE: 81>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=False), PropertyIdentifier.PRESENT_VALUE: PropertyDefinition(identifier=<PropertyIdentifier.PRESENT_VALUE: 85>, datatype=<enum 'LifeSafetyState'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<LifeSafetyState.QUIET: 0>), PropertyIdentifier.RELIABILITY: PropertyDefinition(identifier=<PropertyIdentifier.RELIABILITY: 103>, datatype=<enum 'Reliability'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<Reliability.NO_FAULT_DETECTED: 0>), PropertyIdentifier.STATUS_FLAGS: PropertyDefinition(identifier=<PropertyIdentifier.STATUS_FLAGS: 111>, datatype=<class 'bac_py.types.constructed.StatusFlags'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.TIME_DELAY: PropertyDefinition(identifier=<PropertyIdentifier.TIME_DELAY: 113>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.MEMBER_OF: PropertyDefinition(identifier=<PropertyIdentifier.MEMBER_OF: 159>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.MODE: PropertyDefinition(identifier=<PropertyIdentifier.MODE: 160>, datatype=<enum 'LifeSafetyMode'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=<LifeSafetyMode.ON: 1>), PropertyIdentifier.OPERATION_EXPECTED: PropertyDefinition(identifier=<PropertyIdentifier.OPERATION_EXPECTED: 161>, datatype=<enum 'LifeSafetyOperation'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<LifeSafetyOperation.NONE: 0>), PropertyIdentifier.SILENCED: PropertyDefinition(identifier=<PropertyIdentifier.SILENCED: 163>, datatype=<enum 'SilencedState'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<SilencedState.UNSILENCED: 0>), PropertyIdentifier.TRACKING_VALUE: PropertyDefinition(identifier=<PropertyIdentifier.TRACKING_VALUE: 164>, datatype=<enum 'LifeSafetyState'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<LifeSafetyState.QUIET: 0>), PropertyIdentifier.ZONE_MEMBERS: PropertyDefinition(identifier=<PropertyIdentifier.ZONE_MEMBERS: 165>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=[]), PropertyIdentifier.LIFE_SAFETY_ALARM_VALUES: PropertyDefinition(identifier=<PropertyIdentifier.LIFE_SAFETY_ALARM_VALUES: 166>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.ACCEPTED_MODES: PropertyDefinition(identifier=<PropertyIdentifier.ACCEPTED_MODES: 175>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.PROPERTY_LIST: PropertyDefinition(identifier=<PropertyIdentifier.PROPERTY_LIST: 371>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None)}

Access Control Objects

BACnet Access Control objects per ASHRAE 135-2020 Clauses 12.26, 12.31-12.37.

class bac_py.objects.access_control.AccessDoorObject(instance_number, **initial_properties)[source]

Bases: BACnetObject

BACnet Access Door object (Clause 12.26).

Represents a physical door with lock, alarm, and access control. Has a state machine (LOCKED -> UNLOCKED -> OPENED -> CLOSED -> LOCKED).

Parameters:
  • instance_number (int)

  • initial_properties (Any)

OBJECT_TYPE: ClassVar[ObjectType] = 30
INTRINSIC_EVENT_ALGORITHM: ClassVar[EventType | None] = 13

Event algorithm for intrinsic reporting, or None if not supported.

PROPERTY_DEFINITIONS: ClassVar[dict[PropertyIdentifier, PropertyDefinition]] = {PropertyIdentifier.DESCRIPTION: PropertyDefinition(identifier=<PropertyIdentifier.DESCRIPTION: 28>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.EVENT_STATE: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_STATE: 36>, datatype=<enum 'EventState'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<EventState.NORMAL: 0>), PropertyIdentifier.OBJECT_IDENTIFIER: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_IDENTIFIER: 75>, datatype=<class 'bac_py.types.primitives.ObjectIdentifier'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OBJECT_NAME: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_NAME: 77>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.OBJECT_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_TYPE: 79>, datatype=<enum 'ObjectType'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OUT_OF_SERVICE: PropertyDefinition(identifier=<PropertyIdentifier.OUT_OF_SERVICE: 81>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=False), PropertyIdentifier.PRESENT_VALUE: PropertyDefinition(identifier=<PropertyIdentifier.PRESENT_VALUE: 85>, datatype=<enum 'DoorStatus'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=<DoorStatus.CLOSED: 0>), PropertyIdentifier.RELIABILITY: PropertyDefinition(identifier=<PropertyIdentifier.RELIABILITY: 103>, datatype=<enum 'Reliability'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.STATUS_FLAGS: PropertyDefinition(identifier=<PropertyIdentifier.STATUS_FLAGS: 111>, datatype=<class 'bac_py.types.constructed.StatusFlags'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.MAINTENANCE_REQUIRED: PropertyDefinition(identifier=<PropertyIdentifier.MAINTENANCE_REQUIRED: 158>, datatype=<class 'bool'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.DOOR_ALARM_STATE: PropertyDefinition(identifier=<PropertyIdentifier.DOOR_ALARM_STATE: 226>, datatype=<enum 'DoorAlarmState'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<DoorAlarmState.NORMAL: 0>), PropertyIdentifier.DOOR_EXTENDED_PULSE_TIME: PropertyDefinition(identifier=<PropertyIdentifier.DOOR_EXTENDED_PULSE_TIME: 227>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=10), PropertyIdentifier.DOOR_MEMBERS: PropertyDefinition(identifier=<PropertyIdentifier.DOOR_MEMBERS: 228>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.DOOR_OPEN_TOO_LONG_TIME: PropertyDefinition(identifier=<PropertyIdentifier.DOOR_OPEN_TOO_LONG_TIME: 229>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.DOOR_PULSE_TIME: PropertyDefinition(identifier=<PropertyIdentifier.DOOR_PULSE_TIME: 230>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=3), PropertyIdentifier.DOOR_STATUS: PropertyDefinition(identifier=<PropertyIdentifier.DOOR_STATUS: 231>, datatype=<enum 'DoorStatus'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<DoorStatus.CLOSED: 0>), PropertyIdentifier.DOOR_UNLOCK_DELAY_TIME: PropertyDefinition(identifier=<PropertyIdentifier.DOOR_UNLOCK_DELAY_TIME: 232>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.LOCK_STATUS: PropertyDefinition(identifier=<PropertyIdentifier.LOCK_STATUS: 233>, datatype=<enum 'LockStatus'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<LockStatus.LOCKED: 0>), PropertyIdentifier.MASKED_ALARM_VALUES: PropertyDefinition(identifier=<PropertyIdentifier.MASKED_ALARM_VALUES: 234>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.SECURED_STATUS: PropertyDefinition(identifier=<PropertyIdentifier.SECURED_STATUS: 235>, datatype=<enum 'DoorSecuredStatus'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<DoorSecuredStatus.SECURED: 0>), PropertyIdentifier.PROPERTY_LIST: PropertyDefinition(identifier=<PropertyIdentifier.PROPERTY_LIST: 371>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None)}
class bac_py.objects.access_control.AccessPointObject(instance_number, **initial_properties)[source]

Bases: BACnetObject

BACnet Access Point object (Clause 12.31).

Represents a logical access point controlling one or more doors.

Parameters:
  • instance_number (int)

  • initial_properties (Any)

OBJECT_TYPE: ClassVar[ObjectType] = 33
PROPERTY_DEFINITIONS: ClassVar[dict[PropertyIdentifier, PropertyDefinition]] = {PropertyIdentifier.NOTIFICATION_CLASS: PropertyDefinition(identifier=<PropertyIdentifier.NOTIFICATION_CLASS: 17>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.DESCRIPTION: PropertyDefinition(identifier=<PropertyIdentifier.DESCRIPTION: 28>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.EVENT_STATE: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_STATE: 36>, datatype=<enum 'EventState'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<EventState.NORMAL: 0>), PropertyIdentifier.OBJECT_IDENTIFIER: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_IDENTIFIER: 75>, datatype=<class 'bac_py.types.primitives.ObjectIdentifier'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OBJECT_NAME: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_NAME: 77>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.OBJECT_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_TYPE: 79>, datatype=<enum 'ObjectType'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OUT_OF_SERVICE: PropertyDefinition(identifier=<PropertyIdentifier.OUT_OF_SERVICE: 81>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=False), PropertyIdentifier.RELIABILITY: PropertyDefinition(identifier=<PropertyIdentifier.RELIABILITY: 103>, datatype=<enum 'Reliability'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.STATUS_FLAGS: PropertyDefinition(identifier=<PropertyIdentifier.STATUS_FLAGS: 111>, datatype=<class 'bac_py.types.constructed.StatusFlags'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.ACCESS_ALARM_EVENTS: PropertyDefinition(identifier=<PropertyIdentifier.ACCESS_ALARM_EVENTS: 245>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.ACCESS_DOORS: PropertyDefinition(identifier=<PropertyIdentifier.ACCESS_DOORS: 246>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=[]), PropertyIdentifier.ACCESS_EVENT: PropertyDefinition(identifier=<PropertyIdentifier.ACCESS_EVENT: 247>, datatype=<enum 'AccessEvent'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<AccessEvent.NONE: 0>), PropertyIdentifier.ACCESS_EVENT_AUTHENTICATION_FACTOR: PropertyDefinition(identifier=<PropertyIdentifier.ACCESS_EVENT_AUTHENTICATION_FACTOR: 248>, datatype=<class 'object'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.ACCESS_EVENT_CREDENTIAL: PropertyDefinition(identifier=<PropertyIdentifier.ACCESS_EVENT_CREDENTIAL: 249>, datatype=<class 'object'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.ACCESS_EVENT_TIME: PropertyDefinition(identifier=<PropertyIdentifier.ACCESS_EVENT_TIME: 250>, datatype=<class 'object'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.ACCESS_TRANSACTION_EVENTS: PropertyDefinition(identifier=<PropertyIdentifier.ACCESS_TRANSACTION_EVENTS: 251>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.ACTIVE_AUTHENTICATION_POLICY: PropertyDefinition(identifier=<PropertyIdentifier.ACTIVE_AUTHENTICATION_POLICY: 255>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.AUTHENTICATION_POLICY_LIST: PropertyDefinition(identifier=<PropertyIdentifier.AUTHENTICATION_POLICY_LIST: 258>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.AUTHENTICATION_POLICY_NAMES: PropertyDefinition(identifier=<PropertyIdentifier.AUTHENTICATION_POLICY_NAMES: 259>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.AUTHORIZATION_MODE: PropertyDefinition(identifier=<PropertyIdentifier.AUTHORIZATION_MODE: 261>, datatype=<enum 'AuthorizationMode'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=<AuthorizationMode.AUTHORIZE: 0>), PropertyIdentifier.TRANSACTION_NOTIFICATION_CLASS: PropertyDefinition(identifier=<PropertyIdentifier.TRANSACTION_NOTIFICATION_CLASS: 309>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.ACCESS_EVENT_TAG: PropertyDefinition(identifier=<PropertyIdentifier.ACCESS_EVENT_TAG: 322>, datatype=<class 'int'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=0), PropertyIdentifier.VERIFICATION_TIME: PropertyDefinition(identifier=<PropertyIdentifier.VERIFICATION_TIME: 326>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.AUTHORIZATION_EXEMPTIONS: PropertyDefinition(identifier=<PropertyIdentifier.AUTHORIZATION_EXEMPTIONS: 364>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.PROPERTY_LIST: PropertyDefinition(identifier=<PropertyIdentifier.PROPERTY_LIST: 371>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None)}
class bac_py.objects.access_control.AccessZoneObject(instance_number, **initial_properties)[source]

Bases: BACnetObject

BACnet Access Zone object (Clause 12.32).

Represents a physical zone entered through access points.

Parameters:
  • instance_number (int)

  • initial_properties (Any)

OBJECT_TYPE: ClassVar[ObjectType] = 36
PROPERTY_DEFINITIONS: ClassVar[dict[PropertyIdentifier, PropertyDefinition]] = {PropertyIdentifier.DESCRIPTION: PropertyDefinition(identifier=<PropertyIdentifier.DESCRIPTION: 28>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.EVENT_STATE: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_STATE: 36>, datatype=<enum 'EventState'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<EventState.NORMAL: 0>), PropertyIdentifier.OBJECT_IDENTIFIER: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_IDENTIFIER: 75>, datatype=<class 'bac_py.types.primitives.ObjectIdentifier'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OBJECT_NAME: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_NAME: 77>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.OBJECT_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_TYPE: 79>, datatype=<enum 'ObjectType'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OUT_OF_SERVICE: PropertyDefinition(identifier=<PropertyIdentifier.OUT_OF_SERVICE: 81>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=False), PropertyIdentifier.RELIABILITY: PropertyDefinition(identifier=<PropertyIdentifier.RELIABILITY: 103>, datatype=<enum 'Reliability'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.STATUS_FLAGS: PropertyDefinition(identifier=<PropertyIdentifier.STATUS_FLAGS: 111>, datatype=<class 'bac_py.types.constructed.StatusFlags'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.CREDENTIALS_IN_ZONE: PropertyDefinition(identifier=<PropertyIdentifier.CREDENTIALS_IN_ZONE: 266>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.ENTRY_POINTS: PropertyDefinition(identifier=<PropertyIdentifier.ENTRY_POINTS: 268>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=[]), PropertyIdentifier.EXIT_POINTS: PropertyDefinition(identifier=<PropertyIdentifier.EXIT_POINTS: 269>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=[]), PropertyIdentifier.LAST_CREDENTIAL_ADDED: PropertyDefinition(identifier=<PropertyIdentifier.LAST_CREDENTIAL_ADDED: 277>, datatype=<class 'object'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.LAST_CREDENTIAL_ADDED_TIME: PropertyDefinition(identifier=<PropertyIdentifier.LAST_CREDENTIAL_ADDED_TIME: 278>, datatype=<class 'object'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.LAST_CREDENTIAL_REMOVED: PropertyDefinition(identifier=<PropertyIdentifier.LAST_CREDENTIAL_REMOVED: 279>, datatype=<class 'object'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.LAST_CREDENTIAL_REMOVED_TIME: PropertyDefinition(identifier=<PropertyIdentifier.LAST_CREDENTIAL_REMOVED_TIME: 280>, datatype=<class 'object'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.OCCUPANCY_COUNT: PropertyDefinition(identifier=<PropertyIdentifier.OCCUPANCY_COUNT: 290>, datatype=<class 'int'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=0), PropertyIdentifier.OCCUPANCY_COUNT_ADJUST: PropertyDefinition(identifier=<PropertyIdentifier.OCCUPANCY_COUNT_ADJUST: 291>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.OCCUPANCY_COUNT_ENABLE: PropertyDefinition(identifier=<PropertyIdentifier.OCCUPANCY_COUNT_ENABLE: 292>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=False), PropertyIdentifier.OCCUPANCY_LOWER_LIMIT: PropertyDefinition(identifier=<PropertyIdentifier.OCCUPANCY_LOWER_LIMIT: 294>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.OCCUPANCY_LOWER_LIMIT_ENFORCED: PropertyDefinition(identifier=<PropertyIdentifier.OCCUPANCY_LOWER_LIMIT_ENFORCED: 295>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.OCCUPANCY_STATE: PropertyDefinition(identifier=<PropertyIdentifier.OCCUPANCY_STATE: 296>, datatype=<class 'int'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=0), PropertyIdentifier.OCCUPANCY_UPPER_LIMIT: PropertyDefinition(identifier=<PropertyIdentifier.OCCUPANCY_UPPER_LIMIT: 297>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.OCCUPANCY_UPPER_LIMIT_ENFORCED: PropertyDefinition(identifier=<PropertyIdentifier.OCCUPANCY_UPPER_LIMIT_ENFORCED: 298>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.PASSBACK_MODE: PropertyDefinition(identifier=<PropertyIdentifier.PASSBACK_MODE: 300>, datatype=<enum 'AccessPassbackMode'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=<AccessPassbackMode.PASSBACK_OFF: 0>), PropertyIdentifier.PASSBACK_TIMEOUT: PropertyDefinition(identifier=<PropertyIdentifier.PASSBACK_TIMEOUT: 301>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.GLOBAL_IDENTIFIER: PropertyDefinition(identifier=<PropertyIdentifier.GLOBAL_IDENTIFIER: 323>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=0), PropertyIdentifier.PROPERTY_LIST: PropertyDefinition(identifier=<PropertyIdentifier.PROPERTY_LIST: 371>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None)}
class bac_py.objects.access_control.AccessUserObject(instance_number, **initial_properties)[source]

Bases: BACnetObject

BACnet Access User object (Clause 12.35).

Represents a person or asset with access credentials.

Parameters:
  • instance_number (int)

  • initial_properties (Any)

OBJECT_TYPE: ClassVar[ObjectType] = 35
PROPERTY_DEFINITIONS: ClassVar[dict[PropertyIdentifier, PropertyDefinition]] = {PropertyIdentifier.DESCRIPTION: PropertyDefinition(identifier=<PropertyIdentifier.DESCRIPTION: 28>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.EVENT_STATE: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_STATE: 36>, datatype=<enum 'EventState'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<EventState.NORMAL: 0>), PropertyIdentifier.OBJECT_IDENTIFIER: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_IDENTIFIER: 75>, datatype=<class 'bac_py.types.primitives.ObjectIdentifier'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OBJECT_NAME: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_NAME: 77>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.OBJECT_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_TYPE: 79>, datatype=<enum 'ObjectType'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.RELIABILITY: PropertyDefinition(identifier=<PropertyIdentifier.RELIABILITY: 103>, datatype=<enum 'Reliability'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.STATUS_FLAGS: PropertyDefinition(identifier=<PropertyIdentifier.STATUS_FLAGS: 111>, datatype=<class 'bac_py.types.constructed.StatusFlags'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.MEMBER_OF: PropertyDefinition(identifier=<PropertyIdentifier.MEMBER_OF: 159>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.CREDENTIALS: PropertyDefinition(identifier=<PropertyIdentifier.CREDENTIALS: 265>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=[]), PropertyIdentifier.MEMBERS: PropertyDefinition(identifier=<PropertyIdentifier.MEMBERS: 286>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.USER_EXTERNAL_IDENTIFIER: PropertyDefinition(identifier=<PropertyIdentifier.USER_EXTERNAL_IDENTIFIER: 310>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.USER_INFORMATION_REFERENCE: PropertyDefinition(identifier=<PropertyIdentifier.USER_INFORMATION_REFERENCE: 311>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.USER_NAME: PropertyDefinition(identifier=<PropertyIdentifier.USER_NAME: 317>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.USER_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.USER_TYPE: 318>, datatype=<enum 'AccessUserType'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=<AccessUserType.PERSON: 2>), PropertyIdentifier.GLOBAL_IDENTIFIER: PropertyDefinition(identifier=<PropertyIdentifier.GLOBAL_IDENTIFIER: 323>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=0), PropertyIdentifier.PROPERTY_LIST: PropertyDefinition(identifier=<PropertyIdentifier.PROPERTY_LIST: 371>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None)}
class bac_py.objects.access_control.AccessRightsObject(instance_number, **initial_properties)[source]

Bases: BACnetObject

BACnet Access Rights object (Clause 12.34).

Defines access rules mapping users/credentials to access points.

Parameters:
  • instance_number (int)

  • initial_properties (Any)

OBJECT_TYPE: ClassVar[ObjectType] = 34
PROPERTY_DEFINITIONS: ClassVar[dict[PropertyIdentifier, PropertyDefinition]] = {PropertyIdentifier.DESCRIPTION: PropertyDefinition(identifier=<PropertyIdentifier.DESCRIPTION: 28>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.EVENT_STATE: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_STATE: 36>, datatype=<enum 'EventState'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<EventState.NORMAL: 0>), PropertyIdentifier.OBJECT_IDENTIFIER: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_IDENTIFIER: 75>, datatype=<class 'bac_py.types.primitives.ObjectIdentifier'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OBJECT_NAME: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_NAME: 77>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.OBJECT_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_TYPE: 79>, datatype=<enum 'ObjectType'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.RELIABILITY: PropertyDefinition(identifier=<PropertyIdentifier.RELIABILITY: 103>, datatype=<enum 'Reliability'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.STATUS_FLAGS: PropertyDefinition(identifier=<PropertyIdentifier.STATUS_FLAGS: 111>, datatype=<class 'bac_py.types.constructed.StatusFlags'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.ACCOMPANIMENT: PropertyDefinition(identifier=<PropertyIdentifier.ACCOMPANIMENT: 252>, datatype=<class 'object'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.NEGATIVE_ACCESS_RULES: PropertyDefinition(identifier=<PropertyIdentifier.NEGATIVE_ACCESS_RULES: 288>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=[]), PropertyIdentifier.POSITIVE_ACCESS_RULES: PropertyDefinition(identifier=<PropertyIdentifier.POSITIVE_ACCESS_RULES: 302>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=[]), PropertyIdentifier.GLOBAL_IDENTIFIER: PropertyDefinition(identifier=<PropertyIdentifier.GLOBAL_IDENTIFIER: 323>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=0), PropertyIdentifier.PROPERTY_LIST: PropertyDefinition(identifier=<PropertyIdentifier.PROPERTY_LIST: 371>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None)}
class bac_py.objects.access_control.AccessCredentialObject(instance_number, **initial_properties)[source]

Bases: BACnetObject

BACnet Access Credential object (Clause 12.35).

Represents a physical or logical credential (card, PIN, biometric).

Parameters:
  • instance_number (int)

  • initial_properties (Any)

OBJECT_TYPE: ClassVar[ObjectType] = 32
PROPERTY_DEFINITIONS: ClassVar[dict[PropertyIdentifier, PropertyDefinition]] = {PropertyIdentifier.DESCRIPTION: PropertyDefinition(identifier=<PropertyIdentifier.DESCRIPTION: 28>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.EVENT_STATE: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_STATE: 36>, datatype=<enum 'EventState'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<EventState.NORMAL: 0>), PropertyIdentifier.OBJECT_IDENTIFIER: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_IDENTIFIER: 75>, datatype=<class 'bac_py.types.primitives.ObjectIdentifier'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OBJECT_NAME: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_NAME: 77>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.OBJECT_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_TYPE: 79>, datatype=<enum 'ObjectType'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.RELIABILITY: PropertyDefinition(identifier=<PropertyIdentifier.RELIABILITY: 103>, datatype=<enum 'Reliability'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.STATUS_FLAGS: PropertyDefinition(identifier=<PropertyIdentifier.STATUS_FLAGS: 111>, datatype=<class 'bac_py.types.constructed.StatusFlags'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.ABSENTEE_LIMIT: PropertyDefinition(identifier=<PropertyIdentifier.ABSENTEE_LIMIT: 244>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.ACTIVATION_TIME: PropertyDefinition(identifier=<PropertyIdentifier.ACTIVATION_TIME: 254>, datatype=<class 'object'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.ASSIGNED_ACCESS_RIGHTS: PropertyDefinition(identifier=<PropertyIdentifier.ASSIGNED_ACCESS_RIGHTS: 256>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=[]), PropertyIdentifier.AUTHENTICATION_FACTORS: PropertyDefinition(identifier=<PropertyIdentifier.AUTHENTICATION_FACTORS: 257>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=[]), PropertyIdentifier.BELONGS_TO: PropertyDefinition(identifier=<PropertyIdentifier.BELONGS_TO: 262>, datatype=<class 'object'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.CREDENTIAL_DISABLE: PropertyDefinition(identifier=<PropertyIdentifier.CREDENTIAL_DISABLE: 263>, datatype=<enum 'AccessCredentialDisable'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=<AccessCredentialDisable.NONE: 0>), PropertyIdentifier.CREDENTIAL_STATUS: PropertyDefinition(identifier=<PropertyIdentifier.CREDENTIAL_STATUS: 264>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=0), PropertyIdentifier.DAYS_REMAINING: PropertyDefinition(identifier=<PropertyIdentifier.DAYS_REMAINING: 267>, datatype=<class 'int'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.EXPIRATION_TIME: PropertyDefinition(identifier=<PropertyIdentifier.EXPIRATION_TIME: 270>, datatype=<class 'object'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.LAST_ACCESS_EVENT: PropertyDefinition(identifier=<PropertyIdentifier.LAST_ACCESS_EVENT: 275>, datatype=<enum 'AccessEvent'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.LAST_ACCESS_POINT: PropertyDefinition(identifier=<PropertyIdentifier.LAST_ACCESS_POINT: 276>, datatype=<class 'object'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.LAST_USE_TIME: PropertyDefinition(identifier=<PropertyIdentifier.LAST_USE_TIME: 281>, datatype=<class 'object'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.USES_REMAINING: PropertyDefinition(identifier=<PropertyIdentifier.USES_REMAINING: 319>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.GLOBAL_IDENTIFIER: PropertyDefinition(identifier=<PropertyIdentifier.GLOBAL_IDENTIFIER: 323>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=0), PropertyIdentifier.PROPERTY_LIST: PropertyDefinition(identifier=<PropertyIdentifier.PROPERTY_LIST: 371>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None)}
class bac_py.objects.access_control.CredentialDataInputObject(instance_number, **initial_properties)[source]

Bases: BACnetObject

BACnet Credential Data Input object (Clause 12.37).

Represents a credential reader device (card reader, keypad, etc.).

Parameters:
  • instance_number (int)

  • initial_properties (Any)

OBJECT_TYPE: ClassVar[ObjectType] = 37
PROPERTY_DEFINITIONS: ClassVar[dict[PropertyIdentifier, PropertyDefinition]] = {PropertyIdentifier.DESCRIPTION: PropertyDefinition(identifier=<PropertyIdentifier.DESCRIPTION: 28>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.EVENT_STATE: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_STATE: 36>, datatype=<enum 'EventState'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<EventState.NORMAL: 0>), PropertyIdentifier.OBJECT_IDENTIFIER: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_IDENTIFIER: 75>, datatype=<class 'bac_py.types.primitives.ObjectIdentifier'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OBJECT_NAME: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_NAME: 77>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.OBJECT_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_TYPE: 79>, datatype=<enum 'ObjectType'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OUT_OF_SERVICE: PropertyDefinition(identifier=<PropertyIdentifier.OUT_OF_SERVICE: 81>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=False), PropertyIdentifier.PRESENT_VALUE: PropertyDefinition(identifier=<PropertyIdentifier.PRESENT_VALUE: 85>, datatype=<class 'object'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.RELIABILITY: PropertyDefinition(identifier=<PropertyIdentifier.RELIABILITY: 103>, datatype=<enum 'Reliability'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.STATUS_FLAGS: PropertyDefinition(identifier=<PropertyIdentifier.STATUS_FLAGS: 111>, datatype=<class 'bac_py.types.constructed.StatusFlags'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.UPDATE_TIME: PropertyDefinition(identifier=<PropertyIdentifier.UPDATE_TIME: 189>, datatype=<class 'object'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.SUPPORTED_FORMATS: PropertyDefinition(identifier=<PropertyIdentifier.SUPPORTED_FORMATS: 304>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=[]), PropertyIdentifier.SUPPORTED_FORMAT_CLASSES: PropertyDefinition(identifier=<PropertyIdentifier.SUPPORTED_FORMAT_CLASSES: 305>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=[]), PropertyIdentifier.PROPERTY_LIST: PropertyDefinition(identifier=<PropertyIdentifier.PROPERTY_LIST: 371>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None)}

Lighting Objects

BACnet Lighting objects per ASHRAE 135-2020 Clauses 12.54-12.55.

class bac_py.objects.lighting.LightingOutputObject(instance_number, **initial_properties)[source]

Bases: BACnetObject

BACnet Lighting Output object (Clause 12.54).

Dimmable lighting control with fade, ramp, and step operations. Present_Value represents the current lighting level (0.0–100.0%).

Parameters:
  • instance_number (int)

  • initial_properties (Any)

OBJECT_TYPE: ClassVar[ObjectType] = 54
INTRINSIC_EVENT_ALGORITHM: ClassVar[EventType | None] = 5

Event algorithm for intrinsic reporting, or None if not supported.

PROPERTY_DEFINITIONS: ClassVar[dict[PropertyIdentifier, PropertyDefinition]] = {PropertyIdentifier.ACKED_TRANSITIONS: PropertyDefinition(identifier=<PropertyIdentifier.ACKED_TRANSITIONS: 0>, datatype=<class 'bac_py.types.primitives.BitString'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.NOTIFICATION_CLASS: PropertyDefinition(identifier=<PropertyIdentifier.NOTIFICATION_CLASS: 17>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.COV_INCREMENT: PropertyDefinition(identifier=<PropertyIdentifier.COV_INCREMENT: 22>, datatype=<class 'float'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.DEADBAND: PropertyDefinition(identifier=<PropertyIdentifier.DEADBAND: 25>, datatype=<class 'float'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.DESCRIPTION: PropertyDefinition(identifier=<PropertyIdentifier.DESCRIPTION: 28>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.EVENT_ENABLE: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_ENABLE: 35>, datatype=<class 'bac_py.types.primitives.BitString'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.EVENT_STATE: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_STATE: 36>, datatype=<enum 'EventState'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<EventState.NORMAL: 0>), PropertyIdentifier.HIGH_LIMIT: PropertyDefinition(identifier=<PropertyIdentifier.HIGH_LIMIT: 45>, datatype=<class 'float'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.LIMIT_ENABLE: PropertyDefinition(identifier=<PropertyIdentifier.LIMIT_ENABLE: 52>, datatype=<class 'bac_py.types.primitives.BitString'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.LOW_LIMIT: PropertyDefinition(identifier=<PropertyIdentifier.LOW_LIMIT: 59>, datatype=<class 'float'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.NOTIFY_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.NOTIFY_TYPE: 72>, datatype=<enum 'NotifyType'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.OBJECT_IDENTIFIER: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_IDENTIFIER: 75>, datatype=<class 'bac_py.types.primitives.ObjectIdentifier'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OBJECT_NAME: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_NAME: 77>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.OBJECT_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_TYPE: 79>, datatype=<enum 'ObjectType'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OUT_OF_SERVICE: PropertyDefinition(identifier=<PropertyIdentifier.OUT_OF_SERVICE: 81>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=False), PropertyIdentifier.PRESENT_VALUE: PropertyDefinition(identifier=<PropertyIdentifier.PRESENT_VALUE: 85>, datatype=<class 'float'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=0.0), PropertyIdentifier.PRIORITY_ARRAY: PropertyDefinition(identifier=<PropertyIdentifier.PRIORITY_ARRAY: 87>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.RELIABILITY: PropertyDefinition(identifier=<PropertyIdentifier.RELIABILITY: 103>, datatype=<enum 'Reliability'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.RELINQUISH_DEFAULT: PropertyDefinition(identifier=<PropertyIdentifier.RELINQUISH_DEFAULT: 104>, datatype=<class 'float'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=0.0), PropertyIdentifier.STATUS_FLAGS: PropertyDefinition(identifier=<PropertyIdentifier.STATUS_FLAGS: 111>, datatype=<class 'bac_py.types.constructed.StatusFlags'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.TIME_DELAY: PropertyDefinition(identifier=<PropertyIdentifier.TIME_DELAY: 113>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.EVENT_TIME_STAMPS: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_TIME_STAMPS: 130>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.TRACKING_VALUE: PropertyDefinition(identifier=<PropertyIdentifier.TRACKING_VALUE: 164>, datatype=<class 'float'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=0.0), PropertyIdentifier.EVENT_MESSAGE_TEXTS: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_MESSAGE_TEXTS: 351>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.EVENT_MESSAGE_TEXTS_CONFIG: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_MESSAGE_TEXTS_CONFIG: 352>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.EVENT_DETECTION_ENABLE: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_DETECTION_ENABLE: 353>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.PROPERTY_LIST: PropertyDefinition(identifier=<PropertyIdentifier.PROPERTY_LIST: 371>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.BLINK_WARN_ENABLE: PropertyDefinition(identifier=<PropertyIdentifier.BLINK_WARN_ENABLE: 373>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=False), PropertyIdentifier.DEFAULT_FADE_TIME: PropertyDefinition(identifier=<PropertyIdentifier.DEFAULT_FADE_TIME: 374>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=0), PropertyIdentifier.DEFAULT_RAMP_RATE: PropertyDefinition(identifier=<PropertyIdentifier.DEFAULT_RAMP_RATE: 375>, datatype=<class 'float'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=100.0), PropertyIdentifier.DEFAULT_STEP_INCREMENT: PropertyDefinition(identifier=<PropertyIdentifier.DEFAULT_STEP_INCREMENT: 376>, datatype=<class 'float'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=1.0), PropertyIdentifier.EGRESS_TIME: PropertyDefinition(identifier=<PropertyIdentifier.EGRESS_TIME: 377>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.IN_PROGRESS: PropertyDefinition(identifier=<PropertyIdentifier.IN_PROGRESS: 378>, datatype=<enum 'LightingInProgress'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<LightingInProgress.IDLE: 0>), PropertyIdentifier.INSTANTANEOUS_POWER: PropertyDefinition(identifier=<PropertyIdentifier.INSTANTANEOUS_POWER: 379>, datatype=<class 'float'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.LIGHTING_COMMAND: PropertyDefinition(identifier=<PropertyIdentifier.LIGHTING_COMMAND: 380>, datatype=<class 'bac_py.types.constructed.BACnetLightingCommand'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.LIGHTING_COMMAND_DEFAULT_PRIORITY: PropertyDefinition(identifier=<PropertyIdentifier.LIGHTING_COMMAND_DEFAULT_PRIORITY: 381>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=16), PropertyIdentifier.MAX_ACTUAL_VALUE: PropertyDefinition(identifier=<PropertyIdentifier.MAX_ACTUAL_VALUE: 382>, datatype=<class 'float'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.MIN_ACTUAL_VALUE: PropertyDefinition(identifier=<PropertyIdentifier.MIN_ACTUAL_VALUE: 383>, datatype=<class 'float'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.POWER: PropertyDefinition(identifier=<PropertyIdentifier.POWER: 384>, datatype=<class 'float'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.TRANSITION: PropertyDefinition(identifier=<PropertyIdentifier.TRANSITION: 385>, datatype=<enum 'LightingOperation'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.EGRESS_ACTIVE: PropertyDefinition(identifier=<PropertyIdentifier.EGRESS_ACTIVE: 386>, datatype=<class 'bool'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=False), PropertyIdentifier.COMMAND_TIME_ARRAY: PropertyDefinition(identifier=<PropertyIdentifier.COMMAND_TIME_ARRAY: 430>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.CURRENT_COMMAND_PRIORITY: PropertyDefinition(identifier=<PropertyIdentifier.CURRENT_COMMAND_PRIORITY: 431>, datatype=<class 'int'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.LAST_COMMAND_TIME: PropertyDefinition(identifier=<PropertyIdentifier.LAST_COMMAND_TIME: 432>, datatype=<class 'object'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.VALUE_SOURCE: PropertyDefinition(identifier=<PropertyIdentifier.VALUE_SOURCE: 433>, datatype=<class 'bac_py.types.constructed.BACnetValueSource'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.VALUE_SOURCE_ARRAY: PropertyDefinition(identifier=<PropertyIdentifier.VALUE_SOURCE_ARRAY: 434>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None)}
class bac_py.objects.lighting.BinaryLightingOutputObject(instance_number, **initial_properties)[source]

Bases: BACnetObject

BACnet Binary Lighting Output object (Clause 12.55).

On/off lighting control with optional blink and warn patterns.

Parameters:
  • instance_number (int)

  • initial_properties (Any)

OBJECT_TYPE: ClassVar[ObjectType] = 55
INTRINSIC_EVENT_ALGORITHM: ClassVar[EventType | None] = 1

Event algorithm for intrinsic reporting, or None if not supported.

PROPERTY_DEFINITIONS: ClassVar[dict[PropertyIdentifier, PropertyDefinition]] = {PropertyIdentifier.ACKED_TRANSITIONS: PropertyDefinition(identifier=<PropertyIdentifier.ACKED_TRANSITIONS: 0>, datatype=<class 'bac_py.types.primitives.BitString'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.NOTIFICATION_CLASS: PropertyDefinition(identifier=<PropertyIdentifier.NOTIFICATION_CLASS: 17>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.DESCRIPTION: PropertyDefinition(identifier=<PropertyIdentifier.DESCRIPTION: 28>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.EVENT_ENABLE: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_ENABLE: 35>, datatype=<class 'bac_py.types.primitives.BitString'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.EVENT_STATE: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_STATE: 36>, datatype=<enum 'EventState'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<EventState.NORMAL: 0>), PropertyIdentifier.FEEDBACK_VALUE: PropertyDefinition(identifier=<PropertyIdentifier.FEEDBACK_VALUE: 40>, datatype=<enum 'BinaryPV'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.NOTIFY_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.NOTIFY_TYPE: 72>, datatype=<enum 'NotifyType'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.OBJECT_IDENTIFIER: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_IDENTIFIER: 75>, datatype=<class 'bac_py.types.primitives.ObjectIdentifier'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OBJECT_NAME: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_NAME: 77>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.OBJECT_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_TYPE: 79>, datatype=<enum 'ObjectType'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OUT_OF_SERVICE: PropertyDefinition(identifier=<PropertyIdentifier.OUT_OF_SERVICE: 81>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=False), PropertyIdentifier.PRESENT_VALUE: PropertyDefinition(identifier=<PropertyIdentifier.PRESENT_VALUE: 85>, datatype=<enum 'BinaryPV'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=<BinaryPV.INACTIVE: 0>), PropertyIdentifier.PRIORITY_ARRAY: PropertyDefinition(identifier=<PropertyIdentifier.PRIORITY_ARRAY: 87>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.RELIABILITY: PropertyDefinition(identifier=<PropertyIdentifier.RELIABILITY: 103>, datatype=<enum 'Reliability'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.RELINQUISH_DEFAULT: PropertyDefinition(identifier=<PropertyIdentifier.RELINQUISH_DEFAULT: 104>, datatype=<enum 'BinaryPV'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=<BinaryPV.INACTIVE: 0>), PropertyIdentifier.STATUS_FLAGS: PropertyDefinition(identifier=<PropertyIdentifier.STATUS_FLAGS: 111>, datatype=<class 'bac_py.types.constructed.StatusFlags'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.TIME_DELAY: PropertyDefinition(identifier=<PropertyIdentifier.TIME_DELAY: 113>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.EVENT_TIME_STAMPS: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_TIME_STAMPS: 130>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.EVENT_MESSAGE_TEXTS: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_MESSAGE_TEXTS: 351>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.EVENT_MESSAGE_TEXTS_CONFIG: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_MESSAGE_TEXTS_CONFIG: 352>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.EVENT_DETECTION_ENABLE: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_DETECTION_ENABLE: 353>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.PROPERTY_LIST: PropertyDefinition(identifier=<PropertyIdentifier.PROPERTY_LIST: 371>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.BLINK_WARN_ENABLE: PropertyDefinition(identifier=<PropertyIdentifier.BLINK_WARN_ENABLE: 373>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=False), PropertyIdentifier.EGRESS_TIME: PropertyDefinition(identifier=<PropertyIdentifier.EGRESS_TIME: 377>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.INSTANTANEOUS_POWER: PropertyDefinition(identifier=<PropertyIdentifier.INSTANTANEOUS_POWER: 379>, datatype=<class 'float'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.LIGHTING_COMMAND: PropertyDefinition(identifier=<PropertyIdentifier.LIGHTING_COMMAND: 380>, datatype=<class 'bac_py.types.constructed.BACnetLightingCommand'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.LIGHTING_COMMAND_DEFAULT_PRIORITY: PropertyDefinition(identifier=<PropertyIdentifier.LIGHTING_COMMAND_DEFAULT_PRIORITY: 381>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=16), PropertyIdentifier.POWER: PropertyDefinition(identifier=<PropertyIdentifier.POWER: 384>, datatype=<class 'float'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.EGRESS_ACTIVE: PropertyDefinition(identifier=<PropertyIdentifier.EGRESS_ACTIVE: 386>, datatype=<class 'bool'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=False), PropertyIdentifier.COMMAND_TIME_ARRAY: PropertyDefinition(identifier=<PropertyIdentifier.COMMAND_TIME_ARRAY: 430>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.CURRENT_COMMAND_PRIORITY: PropertyDefinition(identifier=<PropertyIdentifier.CURRENT_COMMAND_PRIORITY: 431>, datatype=<class 'int'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.LAST_COMMAND_TIME: PropertyDefinition(identifier=<PropertyIdentifier.LAST_COMMAND_TIME: 432>, datatype=<class 'object'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.VALUE_SOURCE: PropertyDefinition(identifier=<PropertyIdentifier.VALUE_SOURCE: 433>, datatype=<class 'bac_py.types.constructed.BACnetValueSource'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.VALUE_SOURCE_ARRAY: PropertyDefinition(identifier=<PropertyIdentifier.VALUE_SOURCE_ARRAY: 434>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None)}

Load Control Object

BACnet Load Control object per ASHRAE 135-2020 Clause 12.28.

class bac_py.objects.load_control.LoadControlObject(instance_number, **initial_properties)[source]

Bases: BACnetObject

BACnet Load Control object (Clause 12.28).

Manages demand-limiting shed operations. Accepts shed requests specifying level and duration, and reports compliance state.

Parameters:
  • instance_number (int)

  • initial_properties (Any)

OBJECT_TYPE: ClassVar[ObjectType] = 28
PROPERTY_DEFINITIONS: ClassVar[dict[PropertyIdentifier, PropertyDefinition]] = {PropertyIdentifier.NOTIFICATION_CLASS: PropertyDefinition(identifier=<PropertyIdentifier.NOTIFICATION_CLASS: 17>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.DESCRIPTION: PropertyDefinition(identifier=<PropertyIdentifier.DESCRIPTION: 28>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.EVENT_STATE: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_STATE: 36>, datatype=<enum 'EventState'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<EventState.NORMAL: 0>), PropertyIdentifier.OBJECT_IDENTIFIER: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_IDENTIFIER: 75>, datatype=<class 'bac_py.types.primitives.ObjectIdentifier'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OBJECT_NAME: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_NAME: 77>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.OBJECT_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_TYPE: 79>, datatype=<enum 'ObjectType'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OUT_OF_SERVICE: PropertyDefinition(identifier=<PropertyIdentifier.OUT_OF_SERVICE: 81>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=False), PropertyIdentifier.PRESENT_VALUE: PropertyDefinition(identifier=<PropertyIdentifier.PRESENT_VALUE: 85>, datatype=<enum 'ShedState'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<ShedState.SHED_INACTIVE: 0>), PropertyIdentifier.RELIABILITY: PropertyDefinition(identifier=<PropertyIdentifier.RELIABILITY: 103>, datatype=<enum 'Reliability'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.STATUS_FLAGS: PropertyDefinition(identifier=<PropertyIdentifier.STATUS_FLAGS: 111>, datatype=<class 'bac_py.types.constructed.StatusFlags'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.START_TIME: PropertyDefinition(identifier=<PropertyIdentifier.START_TIME: 142>, datatype=<class 'bac_py.types.constructed.BACnetDateTime'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.ACTUAL_SHED_LEVEL: PropertyDefinition(identifier=<PropertyIdentifier.ACTUAL_SHED_LEVEL: 212>, datatype=<class 'bac_py.types.constructed.BACnetShedLevel'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.DUTY_WINDOW: PropertyDefinition(identifier=<PropertyIdentifier.DUTY_WINDOW: 213>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=0), PropertyIdentifier.EXPECTED_SHED_LEVEL: PropertyDefinition(identifier=<PropertyIdentifier.EXPECTED_SHED_LEVEL: 214>, datatype=<class 'bac_py.types.constructed.BACnetShedLevel'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.FULL_DUTY_BASELINE: PropertyDefinition(identifier=<PropertyIdentifier.FULL_DUTY_BASELINE: 215>, datatype=<class 'float'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.REQUESTED_SHED_LEVEL: PropertyDefinition(identifier=<PropertyIdentifier.REQUESTED_SHED_LEVEL: 218>, datatype=<class 'bac_py.types.constructed.BACnetShedLevel'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.SHED_DURATION: PropertyDefinition(identifier=<PropertyIdentifier.SHED_DURATION: 219>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=0), PropertyIdentifier.SHED_LEVEL_DESCRIPTIONS: PropertyDefinition(identifier=<PropertyIdentifier.SHED_LEVEL_DESCRIPTIONS: 220>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=[]), PropertyIdentifier.SHED_LEVELS: PropertyDefinition(identifier=<PropertyIdentifier.SHED_LEVELS: 221>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=[]), PropertyIdentifier.STATE_DESCRIPTION: PropertyDefinition(identifier=<PropertyIdentifier.STATE_DESCRIPTION: 222>, datatype=<class 'str'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.PROPERTY_LIST: PropertyDefinition(identifier=<PropertyIdentifier.PROPERTY_LIST: 371>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None)}

Elevator/Escalator Objects

BACnet Transportation objects per ASHRAE 135-2020 Clauses 12.58-12.60.

class bac_py.objects.transportation.ElevatorGroupObject(instance_number, **initial_properties)[source]

Bases: BACnetObject

BACnet Elevator Group object (Clause 12.58).

Represents a group of lifts managed together for landing calls. Primarily a data container – physical logic runs on the transportation controller.

Parameters:
  • instance_number (int)

  • initial_properties (Any)

OBJECT_TYPE: ClassVar[ObjectType] = 57
PROPERTY_DEFINITIONS: ClassVar[dict[PropertyIdentifier, PropertyDefinition]] = {PropertyIdentifier.DESCRIPTION: PropertyDefinition(identifier=<PropertyIdentifier.DESCRIPTION: 28>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.OBJECT_IDENTIFIER: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_IDENTIFIER: 75>, datatype=<class 'bac_py.types.primitives.ObjectIdentifier'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OBJECT_NAME: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_NAME: 77>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.OBJECT_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_TYPE: 79>, datatype=<enum 'ObjectType'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.GROUP_MEMBERS: PropertyDefinition(identifier=<PropertyIdentifier.GROUP_MEMBERS: 345>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=[]), PropertyIdentifier.PROPERTY_LIST: PropertyDefinition(identifier=<PropertyIdentifier.PROPERTY_LIST: 371>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.GROUP_ID: PropertyDefinition(identifier=<PropertyIdentifier.GROUP_ID: 465>, datatype=<class 'int'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=0), PropertyIdentifier.GROUP_MODE: PropertyDefinition(identifier=<PropertyIdentifier.GROUP_MODE: 467>, datatype=<enum 'LiftGroupMode'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<LiftGroupMode.UNKNOWN: 0>), PropertyIdentifier.LANDING_CALLS: PropertyDefinition(identifier=<PropertyIdentifier.LANDING_CALLS: 470>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=[]), PropertyIdentifier.LANDING_CALL_CONTROL: PropertyDefinition(identifier=<PropertyIdentifier.LANDING_CALL_CONTROL: 471>, datatype=<class 'object'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.MACHINE_ROOM_ID: PropertyDefinition(identifier=<PropertyIdentifier.MACHINE_ROOM_ID: 474>, datatype=<class 'object'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None)}
class bac_py.objects.transportation.LiftObject(instance_number, **initial_properties)[source]

Bases: BACnetObject

BACnet Lift object (Clause 12.59).

Represents a single elevator car with position, direction, and door status.

Parameters:
  • instance_number (int)

  • initial_properties (Any)

OBJECT_TYPE: ClassVar[ObjectType] = 59
PROPERTY_DEFINITIONS: ClassVar[dict[PropertyIdentifier, PropertyDefinition]] = {PropertyIdentifier.DESCRIPTION: PropertyDefinition(identifier=<PropertyIdentifier.DESCRIPTION: 28>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.EVENT_STATE: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_STATE: 36>, datatype=<enum 'EventState'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<EventState.NORMAL: 0>), PropertyIdentifier.OBJECT_IDENTIFIER: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_IDENTIFIER: 75>, datatype=<class 'bac_py.types.primitives.ObjectIdentifier'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OBJECT_NAME: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_NAME: 77>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.OBJECT_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_TYPE: 79>, datatype=<enum 'ObjectType'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OUT_OF_SERVICE: PropertyDefinition(identifier=<PropertyIdentifier.OUT_OF_SERVICE: 81>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=False), PropertyIdentifier.RELIABILITY: PropertyDefinition(identifier=<PropertyIdentifier.RELIABILITY: 103>, datatype=<enum 'Reliability'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.STATUS_FLAGS: PropertyDefinition(identifier=<PropertyIdentifier.STATUS_FLAGS: 111>, datatype=<class 'bac_py.types.constructed.StatusFlags'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.TRACKING_VALUE: PropertyDefinition(identifier=<PropertyIdentifier.TRACKING_VALUE: 164>, datatype=<class 'int'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=0), PropertyIdentifier.PROPERTY_LIST: PropertyDefinition(identifier=<PropertyIdentifier.PROPERTY_LIST: 371>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.CAR_ASSIGNED_DIRECTION: PropertyDefinition(identifier=<PropertyIdentifier.CAR_ASSIGNED_DIRECTION: 448>, datatype=<enum 'LiftCarDirection'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<LiftCarDirection.UNKNOWN: 0>), PropertyIdentifier.CAR_DOOR_COMMAND: PropertyDefinition(identifier=<PropertyIdentifier.CAR_DOOR_COMMAND: 449>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=0), PropertyIdentifier.CAR_DOOR_STATUS: PropertyDefinition(identifier=<PropertyIdentifier.CAR_DOOR_STATUS: 450>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=[]), PropertyIdentifier.CAR_DOOR_TEXT: PropertyDefinition(identifier=<PropertyIdentifier.CAR_DOOR_TEXT: 451>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.CAR_DOOR_ZONE: PropertyDefinition(identifier=<PropertyIdentifier.CAR_DOOR_ZONE: 452>, datatype=<class 'bool'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=False), PropertyIdentifier.CAR_DRIVE_STATUS: PropertyDefinition(identifier=<PropertyIdentifier.CAR_DRIVE_STATUS: 453>, datatype=<class 'int'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=0), PropertyIdentifier.CAR_LOAD: PropertyDefinition(identifier=<PropertyIdentifier.CAR_LOAD: 454>, datatype=<class 'float'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.CAR_LOAD_UNITS: PropertyDefinition(identifier=<PropertyIdentifier.CAR_LOAD_UNITS: 455>, datatype=<class 'int'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.CAR_MODE: PropertyDefinition(identifier=<PropertyIdentifier.CAR_MODE: 456>, datatype=<class 'int'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=0), PropertyIdentifier.CAR_MOVING_DIRECTION: PropertyDefinition(identifier=<PropertyIdentifier.CAR_MOVING_DIRECTION: 457>, datatype=<enum 'LiftCarDirection'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<LiftCarDirection.UNKNOWN: 0>), PropertyIdentifier.CAR_POSITION: PropertyDefinition(identifier=<PropertyIdentifier.CAR_POSITION: 458>, datatype=<class 'int'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=0), PropertyIdentifier.ELEVATOR_GROUP: PropertyDefinition(identifier=<PropertyIdentifier.ELEVATOR_GROUP: 459>, datatype=<class 'object'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.ENERGY_METER: PropertyDefinition(identifier=<PropertyIdentifier.ENERGY_METER: 460>, datatype=<class 'float'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.ENERGY_METER_REF: PropertyDefinition(identifier=<PropertyIdentifier.ENERGY_METER_REF: 461>, datatype=<class 'object'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.FAULT_SIGNALS: PropertyDefinition(identifier=<PropertyIdentifier.FAULT_SIGNALS: 463>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=[]), PropertyIdentifier.FLOOR_TEXT: PropertyDefinition(identifier=<PropertyIdentifier.FLOOR_TEXT: 464>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=[]), PropertyIdentifier.HIGHER_DECK: PropertyDefinition(identifier=<PropertyIdentifier.HIGHER_DECK: 468>, datatype=<class 'object'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.LANDING_DOOR_STATUS: PropertyDefinition(identifier=<PropertyIdentifier.LANDING_DOOR_STATUS: 472>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.LOWER_DECK: PropertyDefinition(identifier=<PropertyIdentifier.LOWER_DECK: 473>, datatype=<class 'object'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.MAKING_CAR_CALL: PropertyDefinition(identifier=<PropertyIdentifier.MAKING_CAR_CALL: 475>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=[]), PropertyIdentifier.NEXT_STOPPING_FLOOR: PropertyDefinition(identifier=<PropertyIdentifier.NEXT_STOPPING_FLOOR: 476>, datatype=<class 'int'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=0), PropertyIdentifier.PASSENGER_ALARM: PropertyDefinition(identifier=<PropertyIdentifier.PASSENGER_ALARM: 478>, datatype=<class 'bool'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=False), PropertyIdentifier.REGISTERED_CAR_CALL: PropertyDefinition(identifier=<PropertyIdentifier.REGISTERED_CAR_CALL: 480>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=[])}
class bac_py.objects.transportation.EscalatorObject(instance_number, **initial_properties)[source]

Bases: BACnetObject

BACnet Escalator object (Clause 12.60).

Represents an escalator with mode and fault reporting.

Parameters:
  • instance_number (int)

  • initial_properties (Any)

OBJECT_TYPE: ClassVar[ObjectType] = 58
PROPERTY_DEFINITIONS: ClassVar[dict[PropertyIdentifier, PropertyDefinition]] = {PropertyIdentifier.DESCRIPTION: PropertyDefinition(identifier=<PropertyIdentifier.DESCRIPTION: 28>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.EVENT_STATE: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_STATE: 36>, datatype=<enum 'EventState'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<EventState.NORMAL: 0>), PropertyIdentifier.OBJECT_IDENTIFIER: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_IDENTIFIER: 75>, datatype=<class 'bac_py.types.primitives.ObjectIdentifier'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OBJECT_NAME: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_NAME: 77>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.OBJECT_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_TYPE: 79>, datatype=<enum 'ObjectType'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.OUT_OF_SERVICE: PropertyDefinition(identifier=<PropertyIdentifier.OUT_OF_SERVICE: 81>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=False), PropertyIdentifier.RELIABILITY: PropertyDefinition(identifier=<PropertyIdentifier.RELIABILITY: 103>, datatype=<enum 'Reliability'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.STATUS_FLAGS: PropertyDefinition(identifier=<PropertyIdentifier.STATUS_FLAGS: 111>, datatype=<class 'bac_py.types.constructed.StatusFlags'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.PROPERTY_LIST: PropertyDefinition(identifier=<PropertyIdentifier.PROPERTY_LIST: 371>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.ENERGY_METER: PropertyDefinition(identifier=<PropertyIdentifier.ENERGY_METER: 460>, datatype=<class 'float'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.ENERGY_METER_REF: PropertyDefinition(identifier=<PropertyIdentifier.ENERGY_METER_REF: 461>, datatype=<class 'object'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.ESCALATOR_MODE: PropertyDefinition(identifier=<PropertyIdentifier.ESCALATOR_MODE: 462>, datatype=<enum 'EscalatorMode'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<EscalatorMode.UNKNOWN: 0>), PropertyIdentifier.FAULT_SIGNALS: PropertyDefinition(identifier=<PropertyIdentifier.FAULT_SIGNALS: 463>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=[]), PropertyIdentifier.INSTALLATION_ID: PropertyDefinition(identifier=<PropertyIdentifier.INSTALLATION_ID: 469>, datatype=<class 'int'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.OPERATION_DIRECTION: PropertyDefinition(identifier=<PropertyIdentifier.OPERATION_DIRECTION: 477>, datatype=<class 'int'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=0), PropertyIdentifier.PASSENGER_ALARM: PropertyDefinition(identifier=<PropertyIdentifier.PASSENGER_ALARM: 478>, datatype=<class 'bool'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=False), PropertyIdentifier.POWER_MODE: PropertyDefinition(identifier=<PropertyIdentifier.POWER_MODE: 479>, datatype=<class 'bool'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None)}