Monitoring and Logging¶
Event Enrollment Object¶
BACnet Event Enrollment object per ASHRAE 135-2016 Clause 12.12.
- class bac_py.objects.event_enrollment.EventEnrollmentObject(instance_number, **initial_properties)[source]¶
Bases:
BACnetObjectBACnet Event Enrollment object (Clause 12.12).
Configures alarm/event detection for a monitored property. Specifies the event algorithm, parameters, and notification routing.
- Parameters:
instance_number (int)
initial_properties (Any)
- OBJECT_TYPE: ClassVar[ObjectType] = 9¶
- PROPERTY_DEFINITIONS: ClassVar[dict[PropertyIdentifier, PropertyDefinition]] = {PropertyIdentifier.ACKED_TRANSITIONS: PropertyDefinition(identifier=<PropertyIdentifier.ACKED_TRANSITIONS: 0>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.NOTIFICATION_CLASS: PropertyDefinition(identifier=<PropertyIdentifier.NOTIFICATION_CLASS: 17>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, 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=True, 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.EVENT_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_TYPE: 37>, datatype=<enum 'EventType'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.NOTIFY_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.NOTIFY_TYPE: 72>, datatype=<enum 'NotifyType'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=<NotifyType.ALARM: 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_PROPERTY_REFERENCE: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_PROPERTY_REFERENCE: 78>, datatype=<class 'bac_py.types.constructed.BACnetDeviceObjectPropertyReference'>, 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.EVENT_PARAMETERS: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_PARAMETERS: 83>, 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=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.EVENT_TIME_STAMPS: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_TIME_STAMPS: 130>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.EVENT_DETECTION_ENABLE: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_DETECTION_ENABLE: 353>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=True), PropertyIdentifier.PROPERTY_LIST: PropertyDefinition(identifier=<PropertyIdentifier.PROPERTY_LIST: 371>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None)}¶
Notification Class Object¶
BACnet Notification Class object per ASHRAE 135-2016 Clause 12.21.
- class bac_py.objects.notification.NotificationClassObject(instance_number, **initial_properties)[source]¶
Bases:
BACnetObjectBACnet Notification Class object (Clause 12.21).
Defines alarm/event notification routing. Each Notification Class specifies priorities, acknowledgment requirements, and a recipient list for to-offnormal, to-fault, and to-normal transitions.
- Parameters:
instance_number (int)
initial_properties (Any)
- OBJECT_TYPE: ClassVar[ObjectType] = 15¶
- PROPERTY_DEFINITIONS: ClassVar[dict[PropertyIdentifier, PropertyDefinition]] = {PropertyIdentifier.ACK_REQUIRED: PropertyDefinition(identifier=<PropertyIdentifier.ACK_REQUIRED: 1>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.NOTIFICATION_CLASS: PropertyDefinition(identifier=<PropertyIdentifier.NOTIFICATION_CLASS: 17>, datatype=<class 'int'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), 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.PRIORITY: PropertyDefinition(identifier=<PropertyIdentifier.PRIORITY: 86>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.RECIPIENT_LIST: PropertyDefinition(identifier=<PropertyIdentifier.RECIPIENT_LIST: 102>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, 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)}¶
Notification Forwarder Object¶
BACnet Notification Forwarder object per ASHRAE 135-2020 Clause 12.51.
- class bac_py.objects.notification_forwarder.NotificationForwarderObject(instance_number, **initial_properties)[source]¶
Bases:
BACnetObjectBACnet Notification Forwarder object (Clause 12.51).
Filters and routes event notifications to subscribed recipients.
- Parameters:
instance_number (int)
initial_properties (Any)
- OBJECT_TYPE: ClassVar[ObjectType] = 51¶
- 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.LOCAL_FORWARDING_ONLY: PropertyDefinition(identifier=<PropertyIdentifier.LOCAL_FORWARDING_ONLY: 360>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=True), PropertyIdentifier.PROCESS_IDENTIFIER_FILTER: PropertyDefinition(identifier=<PropertyIdentifier.PROCESS_IDENTIFIER_FILTER: 361>, datatype=<class 'object'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.SUBSCRIBED_RECIPIENTS: PropertyDefinition(identifier=<PropertyIdentifier.SUBSCRIBED_RECIPIENTS: 362>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=[]), PropertyIdentifier.PORT_FILTER: PropertyDefinition(identifier=<PropertyIdentifier.PORT_FILTER: 363>, 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)}¶
Alert Enrollment Object¶
BACnet Alert Enrollment object per ASHRAE 135-2020 Clause 12.52.
- class bac_py.objects.alert_enrollment.AlertEnrollmentObject(instance_number, **initial_properties)[source]¶
Bases:
BACnetObjectBACnet Alert Enrollment object (Clause 12.52).
Generates proprietary alert notifications for vendor-specific conditions.
- Parameters:
instance_number (int)
initial_properties (Any)
- OBJECT_TYPE: ClassVar[ObjectType] = 52¶
- PROPERTY_DEFINITIONS: ClassVar[dict[PropertyIdentifier, PropertyDefinition]] = {PropertyIdentifier.NOTIFICATION_CLASS: PropertyDefinition(identifier=<PropertyIdentifier.NOTIFICATION_CLASS: 17>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, 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=True, 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 '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.EVENT_DETECTION_ENABLE: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_DETECTION_ENABLE: 353>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=True), PropertyIdentifier.PROPERTY_LIST: PropertyDefinition(identifier=<PropertyIdentifier.PROPERTY_LIST: 371>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None)}¶
Event Log Object¶
BACnet Event Log object per ASHRAE 135-2020 Clause 12.27.
- class bac_py.objects.event_log.EventLogObject(instance_number, **initial_properties)[source]¶
Bases:
BACnetObjectBACnet Event Log object (Clause 12.27).
Stores event notification records in a circular buffer.
- Parameters:
instance_number (int)
initial_properties (Any)
- OBJECT_TYPE: ClassVar[ObjectType] = 25¶
- 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.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.BUFFER_SIZE: PropertyDefinition(identifier=<PropertyIdentifier.BUFFER_SIZE: 126>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=0), PropertyIdentifier.LOG_BUFFER: PropertyDefinition(identifier=<PropertyIdentifier.LOG_BUFFER: 131>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.LOG_ENABLE: PropertyDefinition(identifier=<PropertyIdentifier.LOG_ENABLE: 133>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=False), PropertyIdentifier.NOTIFICATION_THRESHOLD: PropertyDefinition(identifier=<PropertyIdentifier.NOTIFICATION_THRESHOLD: 137>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.RECORDS_SINCE_NOTIFICATION: PropertyDefinition(identifier=<PropertyIdentifier.RECORDS_SINCE_NOTIFICATION: 140>, datatype=<class 'int'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=0), PropertyIdentifier.RECORD_COUNT: PropertyDefinition(identifier=<PropertyIdentifier.RECORD_COUNT: 141>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=0), PropertyIdentifier.START_TIME: PropertyDefinition(identifier=<PropertyIdentifier.START_TIME: 142>, datatype=<class 'bac_py.types.constructed.BACnetDateTime'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.STOP_TIME: PropertyDefinition(identifier=<PropertyIdentifier.STOP_TIME: 143>, datatype=<class 'bac_py.types.constructed.BACnetDateTime'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.STOP_WHEN_FULL: PropertyDefinition(identifier=<PropertyIdentifier.STOP_WHEN_FULL: 144>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=False), PropertyIdentifier.TOTAL_RECORD_COUNT: PropertyDefinition(identifier=<PropertyIdentifier.TOTAL_RECORD_COUNT: 145>, datatype=<class 'int'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=0), PropertyIdentifier.LAST_NOTIFY_RECORD: PropertyDefinition(identifier=<PropertyIdentifier.LAST_NOTIFY_RECORD: 173>, datatype=<class 'int'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=0), PropertyIdentifier.LOGGING_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.LOGGING_TYPE: 197>, datatype=<enum 'LoggingType'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<LoggingType.TRIGGERED: 2>), PropertyIdentifier.PROPERTY_LIST: PropertyDefinition(identifier=<PropertyIdentifier.PROPERTY_LIST: 371>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None)}¶
Audit Log Object¶
BACnet Audit Log object per ASHRAE 135-2020 Clause 12.64 (new in 2020).
- class bac_py.objects.audit_log.AuditLogObject(instance_number, **initial_properties)[source]¶
Bases:
BACnetObjectBACnet Audit Log object (Clause 12.64, new in 2020).
Circular buffer of audit log records with sequence numbering.
- Parameters:
instance_number (int)
initial_properties (Any)
- OBJECT_TYPE: ClassVar[ObjectType] = 62¶
- 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.BUFFER_SIZE: PropertyDefinition(identifier=<PropertyIdentifier.BUFFER_SIZE: 126>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=100), PropertyIdentifier.LOG_BUFFER: PropertyDefinition(identifier=<PropertyIdentifier.LOG_BUFFER: 131>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.LOG_ENABLE: PropertyDefinition(identifier=<PropertyIdentifier.LOG_ENABLE: 133>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=False), PropertyIdentifier.RECORD_COUNT: PropertyDefinition(identifier=<PropertyIdentifier.RECORD_COUNT: 141>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=0), PropertyIdentifier.STOP_WHEN_FULL: PropertyDefinition(identifier=<PropertyIdentifier.STOP_WHEN_FULL: 144>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=False), PropertyIdentifier.TOTAL_RECORD_COUNT: PropertyDefinition(identifier=<PropertyIdentifier.TOTAL_RECORD_COUNT: 145>, 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.AUDIT_LEVEL: PropertyDefinition(identifier=<PropertyIdentifier.AUDIT_LEVEL: 498>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=<AuditLevel.DEFAULT: 3>), PropertyIdentifier.AUDITABLE_OPERATIONS: PropertyDefinition(identifier=<PropertyIdentifier.AUDITABLE_OPERATIONS: 501>, datatype=<class 'bac_py.types.primitives.BitString'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None)}¶
- append_record(notification)[source]¶
Append an audit notification to the log buffer.
Handles circular buffer overflow (oldest records removed) and stop-when-full behavior. Returns the record if it was added.
- Return type:
- Parameters:
notification (BACnetAuditNotification)
Audit Reporter Object¶
BACnet Audit Reporter object per ASHRAE 135-2020 Clause 12.63 (new in 2020).
- class bac_py.objects.audit_reporter.AuditReporterObject(instance_number, **initial_properties)[source]¶
Bases:
BACnetObjectBACnet Audit Reporter object (Clause 12.63, new in 2020).
Monitors objects and generates audit notifications.
- Parameters:
instance_number (int)
initial_properties (Any)
- OBJECT_TYPE: ClassVar[ObjectType] = 61¶
- 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.PROPERTY_LIST: PropertyDefinition(identifier=<PropertyIdentifier.PROPERTY_LIST: 371>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.AUDIT_SOURCE_REPORTER: PropertyDefinition(identifier=<PropertyIdentifier.AUDIT_SOURCE_REPORTER: 497>, datatype=<class 'object'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.AUDIT_LEVEL: PropertyDefinition(identifier=<PropertyIdentifier.AUDIT_LEVEL: 498>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=<AuditLevel.DEFAULT: 3>), PropertyIdentifier.AUDIT_NOTIFICATION_RECIPIENT: PropertyDefinition(identifier=<PropertyIdentifier.AUDIT_NOTIFICATION_RECIPIENT: 499>, datatype=<class 'object'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.AUDIT_PRIORITY_FILTER: PropertyDefinition(identifier=<PropertyIdentifier.AUDIT_PRIORITY_FILTER: 500>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=0), PropertyIdentifier.AUDITABLE_OPERATIONS: PropertyDefinition(identifier=<PropertyIdentifier.AUDITABLE_OPERATIONS: 501>, datatype=<class 'bac_py.types.primitives.BitString'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.MAXIMUM_SEND_DELAY: PropertyDefinition(identifier=<PropertyIdentifier.MAXIMUM_SEND_DELAY: 503>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=0), PropertyIdentifier.MONITORED_OBJECTS: PropertyDefinition(identifier=<PropertyIdentifier.MONITORED_OBJECTS: 504>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=[])}¶
Accumulator Object¶
BACnet Accumulator object per ASHRAE 135-2020 Clause 12.2.
- class bac_py.objects.accumulator.AccumulatorObject(instance_number, **initial_properties)[source]¶
Bases:
BACnetObjectBACnet Accumulator object (Clause 12.2).
Represents a pulse-counting device such as an energy meter or water meter. Present_Value accumulates counts; Scale and Prescale control unit conversion.
- Parameters:
instance_number (int)
initial_properties (Any)
- OBJECT_TYPE: ClassVar[ObjectType] = 23¶
- INTRINSIC_EVENT_ALGORITHM: ClassVar[EventType | None] = 11¶
Event algorithm for intrinsic reporting, or
Noneif not supported.
- 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.COV_INCREMENT: PropertyDefinition(identifier=<PropertyIdentifier.COV_INCREMENT: 22>, 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.HIGH_LIMIT: PropertyDefinition(identifier=<PropertyIdentifier.HIGH_LIMIT: 45>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.LOW_LIMIT: PropertyDefinition(identifier=<PropertyIdentifier.LOW_LIMIT: 59>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.MAX_PRES_VALUE: PropertyDefinition(identifier=<PropertyIdentifier.MAX_PRES_VALUE: 65>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=4294967295), 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 'int'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=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.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=<enum 'EngineeringUnits'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=<EngineeringUnits.NO_UNITS: 95>), PropertyIdentifier.PRESCALE: PropertyDefinition(identifier=<PropertyIdentifier.PRESCALE: 185>, datatype=<class 'bac_py.types.constructed.BACnetPrescale'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.PULSE_RATE: PropertyDefinition(identifier=<PropertyIdentifier.PULSE_RATE: 186>, datatype=<class 'int'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.SCALE: PropertyDefinition(identifier=<PropertyIdentifier.SCALE: 187>, datatype=<class 'bac_py.types.constructed.BACnetScale'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.VALUE_BEFORE_CHANGE: PropertyDefinition(identifier=<PropertyIdentifier.VALUE_BEFORE_CHANGE: 190>, datatype=<class 'int'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.VALUE_SET: PropertyDefinition(identifier=<PropertyIdentifier.VALUE_SET: 191>, datatype=<class 'int'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.VALUE_CHANGE_TIME: PropertyDefinition(identifier=<PropertyIdentifier.VALUE_CHANGE_TIME: 192>, datatype=<class 'bac_py.types.constructed.BACnetDateTime'>, 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)}¶
Averaging Object¶
BACnet Averaging object per ASHRAE 135-2020 Clause 12.5.
- class bac_py.objects.averaging.AveragingObject(instance_number, **initial_properties)[source]¶
Bases:
BACnetObjectBACnet Averaging object (Clause 12.5).
Periodically samples a referenced property and computes minimum, average, and maximum values over a window.
- Parameters:
instance_number (int)
initial_properties (Any)
- OBJECT_TYPE: ClassVar[ObjectType] = 18¶
- 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_PROPERTY_REFERENCE: PropertyDefinition(identifier=<PropertyIdentifier.OBJECT_PROPERTY_REFERENCE: 78>, datatype=<class 'bac_py.types.constructed.BACnetDeviceObjectPropertyReference'>, 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.UNITS: PropertyDefinition(identifier=<PropertyIdentifier.UNITS: 117>, datatype=<enum 'EngineeringUnits'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=<EngineeringUnits.NO_UNITS: 95>), PropertyIdentifier.ATTEMPTED_SAMPLES: PropertyDefinition(identifier=<PropertyIdentifier.ATTEMPTED_SAMPLES: 124>, datatype=<class 'int'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=0), PropertyIdentifier.AVERAGE_VALUE: PropertyDefinition(identifier=<PropertyIdentifier.AVERAGE_VALUE: 125>, datatype=<class 'float'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=0.0), PropertyIdentifier.MAXIMUM_VALUE: PropertyDefinition(identifier=<PropertyIdentifier.MAXIMUM_VALUE: 135>, datatype=<class 'float'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=0.0), PropertyIdentifier.MINIMUM_VALUE: PropertyDefinition(identifier=<PropertyIdentifier.MINIMUM_VALUE: 136>, datatype=<class 'float'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=0.0), PropertyIdentifier.VALID_SAMPLES: PropertyDefinition(identifier=<PropertyIdentifier.VALID_SAMPLES: 146>, datatype=<class 'int'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=0), PropertyIdentifier.WINDOW_INTERVAL: PropertyDefinition(identifier=<PropertyIdentifier.WINDOW_INTERVAL: 147>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=60), PropertyIdentifier.WINDOW_SAMPLES: PropertyDefinition(identifier=<PropertyIdentifier.WINDOW_SAMPLES: 148>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=10), PropertyIdentifier.MAXIMUM_VALUE_TIMESTAMP: PropertyDefinition(identifier=<PropertyIdentifier.MAXIMUM_VALUE_TIMESTAMP: 149>, datatype=<class 'bac_py.types.constructed.BACnetDateTime'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.MINIMUM_VALUE_TIMESTAMP: PropertyDefinition(identifier=<PropertyIdentifier.MINIMUM_VALUE_TIMESTAMP: 150>, datatype=<class 'bac_py.types.constructed.BACnetDateTime'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.VARIANCE_VALUE: PropertyDefinition(identifier=<PropertyIdentifier.VARIANCE_VALUE: 151>, datatype=<class 'float'>, 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)}¶
Pulse Converter Object¶
BACnet Pulse Converter object per ASHRAE 135-2020 Clause 12.23.
- class bac_py.objects.pulse_converter.PulseConverterObject(instance_number, *, commandable=False, **initial_properties)[source]¶
Bases:
BACnetObjectBACnet Pulse Converter object (Clause 12.23).
Converts pulse counts to analog values using a scale factor.
- OBJECT_TYPE: ClassVar[ObjectType] = 24¶
- INTRINSIC_EVENT_ALGORITHM: ClassVar[EventType | None] = 5¶
Event algorithm for intrinsic reporting, or
Noneif 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=False, 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=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.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=<enum 'EngineeringUnits'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=<EngineeringUnits.NO_UNITS: 95>), PropertyIdentifier.EVENT_TIME_STAMPS: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_TIME_STAMPS: 130>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.ADJUST_VALUE: PropertyDefinition(identifier=<PropertyIdentifier.ADJUST_VALUE: 176>, datatype=<class 'float'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.COUNT: PropertyDefinition(identifier=<PropertyIdentifier.COUNT: 177>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=0), PropertyIdentifier.COUNT_BEFORE_CHANGE: PropertyDefinition(identifier=<PropertyIdentifier.COUNT_BEFORE_CHANGE: 178>, datatype=<class 'int'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=0), PropertyIdentifier.COUNT_CHANGE_TIME: PropertyDefinition(identifier=<PropertyIdentifier.COUNT_CHANGE_TIME: 179>, datatype=<class 'object'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.COV_PERIOD: PropertyDefinition(identifier=<PropertyIdentifier.COV_PERIOD: 180>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.INPUT_REFERENCE: PropertyDefinition(identifier=<PropertyIdentifier.INPUT_REFERENCE: 181>, datatype=<class 'object'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.LIMIT_MONITORING_INTERVAL: PropertyDefinition(identifier=<PropertyIdentifier.LIMIT_MONITORING_INTERVAL: 182>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.SCALE_FACTOR: PropertyDefinition(identifier=<PropertyIdentifier.SCALE_FACTOR: 188>, datatype=<class 'float'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=1.0), PropertyIdentifier.UPDATE_TIME: PropertyDefinition(identifier=<PropertyIdentifier.UPDATE_TIME: 189>, datatype=<class 'object'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, 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.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=False, 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)}¶