Control and Scheduling¶
Calendar Object¶
BACnet Calendar object per ASHRAE 135-2020 Clause 12.9.
- bac_py.objects.calendar.matches_date_range(entry, year, month, day)[source]¶
Check if a concrete date falls within an inclusive BACnetDateRange.
- Return type:
- Parameters:
entry (BACnetDateRange)
year (int)
month (int)
day (int)
- bac_py.objects.calendar.matches_calendar_entry(entry, year, month, day, day_of_week)[source]¶
Check if a concrete date matches a BACnetCalendarEntry.
Public helper also used by
ScheduleEnginefor exception_schedule evaluation.
- class bac_py.objects.calendar.CalendarObject(instance_number, **initial_properties)[source]¶
Bases:
BACnetObjectBACnet Calendar object (Clause 12.9).
A Calendar object maintains a list of dates, date ranges, and date patterns. Present_Value is TRUE when the current date matches any entry in Date_List.
- Parameters:
instance_number (int)
initial_properties (Any)
- OBJECT_TYPE: ClassVar[ObjectType] = 6¶
- PROPERTY_DEFINITIONS: ClassVar[dict[PropertyIdentifier, PropertyDefinition]] = {PropertyIdentifier.DATE_LIST: PropertyDefinition(identifier=<PropertyIdentifier.DATE_LIST: 23>, datatype=<class 'list'>, 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.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 '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)}¶
Schedule Object¶
BACnet Schedule object per ASHRAE 135-2016 Clause 12.24.
- class bac_py.objects.schedule.ScheduleObject(instance_number, **initial_properties)[source]¶
Bases:
BACnetObjectBACnet Schedule object (Clause 12.24).
Provides time-based scheduling with weekly schedules and exception schedules. Present_Value is computed from the active schedule entry for the current time.
- Parameters:
instance_number (int)
initial_properties (Any)
- OBJECT_TYPE: ClassVar[ObjectType] = 17¶
- 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.EFFECTIVE_PERIOD: PropertyDefinition(identifier=<PropertyIdentifier.EFFECTIVE_PERIOD: 32>, datatype=<class 'bac_py.types.constructed.BACnetDateRange'>, 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=False, default=<EventState.NORMAL: 0>), PropertyIdentifier.EXCEPTION_SCHEDULE: PropertyDefinition(identifier=<PropertyIdentifier.EXCEPTION_SCHEDULE: 38>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), 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=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 'object'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.PRIORITY_FOR_WRITING: PropertyDefinition(identifier=<PropertyIdentifier.PRIORITY_FOR_WRITING: 88>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=16), 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.WEEKLY_SCHEDULE: PropertyDefinition(identifier=<PropertyIdentifier.WEEKLY_SCHEDULE: 123>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.SCHEDULE_DEFAULT: PropertyDefinition(identifier=<PropertyIdentifier.SCHEDULE_DEFAULT: 174>, datatype=<class 'object'>, 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)}¶
TrendLog Object¶
BACnet Trend Log object per ASHRAE 135-2020 Clause 12.25.
- class bac_py.objects.trendlog.TrendLogObject(instance_number, **initial_properties)[source]¶
Bases:
BACnetObjectBACnet Trend Log object (Clause 12.25).
Provides historical data logging with buffer management. Records are stored in an internal buffer and accessible via Log_Buffer.
- Parameters:
instance_number (int)
initial_properties (Any)
- OBJECT_TYPE: ClassVar[ObjectType] = 20¶
- 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_DEVICE_OBJECT_PROPERTY: PropertyDefinition(identifier=<PropertyIdentifier.LOG_DEVICE_OBJECT_PROPERTY: 132>, datatype=<class 'bac_py.types.constructed.BACnetDeviceObjectPropertyReference'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.LOG_ENABLE: PropertyDefinition(identifier=<PropertyIdentifier.LOG_ENABLE: 133>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=False), PropertyIdentifier.LOG_INTERVAL: PropertyDefinition(identifier=<PropertyIdentifier.LOG_INTERVAL: 134>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), 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.ALIGN_INTERVALS: PropertyDefinition(identifier=<PropertyIdentifier.ALIGN_INTERVALS: 193>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.INTERVAL_OFFSET: PropertyDefinition(identifier=<PropertyIdentifier.INTERVAL_OFFSET: 195>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.LOGGING_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.LOGGING_TYPE: 197>, datatype=<enum 'LoggingType'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=<LoggingType.POLLED: 0>), PropertyIdentifier.TRIGGER: PropertyDefinition(identifier=<PropertyIdentifier.TRIGGER: 205>, 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)}¶
- append_record(record)[source]¶
Append a log record to the buffer.
Handles circular overwrite vs stop-when-full semantics.
- Return type:
- Parameters:
record (BACnetLogRecord)
- Returns:
Trueif the record was appended,Falseif the buffer is full andstop_when_fullis set.
TrendLog Multiple Object¶
BACnet Trend Log Multiple object per ASHRAE 135-2020 Clause 12.30.
- class bac_py.objects.trendlog_multiple.TrendLogMultipleObject(instance_number, **initial_properties)[source]¶
Bases:
BACnetObjectBACnet Trend Log Multiple object (Clause 12.30).
Logs multiple properties simultaneously per sampling interval. Each log record contains values for all monitored properties.
- Parameters:
instance_number (int)
initial_properties (Any)
- OBJECT_TYPE: ClassVar[ObjectType] = 27¶
- 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_DEVICE_OBJECT_PROPERTY: PropertyDefinition(identifier=<PropertyIdentifier.LOG_DEVICE_OBJECT_PROPERTY: 132>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=[]), PropertyIdentifier.LOG_ENABLE: PropertyDefinition(identifier=<PropertyIdentifier.LOG_ENABLE: 133>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=False), PropertyIdentifier.LOG_INTERVAL: PropertyDefinition(identifier=<PropertyIdentifier.LOG_INTERVAL: 134>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), 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.ALIGN_INTERVALS: PropertyDefinition(identifier=<PropertyIdentifier.ALIGN_INTERVALS: 193>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.INTERVAL_OFFSET: PropertyDefinition(identifier=<PropertyIdentifier.INTERVAL_OFFSET: 195>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.LOGGING_TYPE: PropertyDefinition(identifier=<PropertyIdentifier.LOGGING_TYPE: 197>, datatype=<enum 'LoggingType'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=<LoggingType.POLLED: 0>), PropertyIdentifier.TRIGGER: PropertyDefinition(identifier=<PropertyIdentifier.TRIGGER: 205>, 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)}¶
Loop Object¶
BACnet Loop object per ASHRAE 135-2020 Clause 12.17.
- class bac_py.objects.loop.LoopObject(instance_number, **initial_properties)[source]¶
Bases:
BACnetObjectBACnet Loop object (Clause 12.17).
Represents a PID control loop. Present_Value is the manipulated variable output. The control algorithm parameters (P, I, D constants) define the loop behavior.
- Parameters:
instance_number (int)
initial_properties (Any)
- OBJECT_TYPE: ClassVar[ObjectType] = 12¶
- INTRINSIC_EVENT_ALGORITHM: ClassVar[EventType | None] = 4¶
Event algorithm for intrinsic reporting, or
Noneif not supported.
- PROPERTY_DEFINITIONS: ClassVar[dict[PropertyIdentifier, PropertyDefinition]] = {PropertyIdentifier.ACTION: PropertyDefinition(identifier=<PropertyIdentifier.ACTION: 2>, datatype=<enum 'Action'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=<Action.DIRECT: 0>), PropertyIdentifier.BIAS: PropertyDefinition(identifier=<PropertyIdentifier.BIAS: 14>, datatype=<class 'float'>, 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.CONTROLLED_VARIABLE_REFERENCE: PropertyDefinition(identifier=<PropertyIdentifier.CONTROLLED_VARIABLE_REFERENCE: 19>, datatype=<class 'bac_py.types.constructed.BACnetObjectPropertyReference'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.CONTROLLED_VARIABLE_UNITS: PropertyDefinition(identifier=<PropertyIdentifier.CONTROLLED_VARIABLE_UNITS: 20>, datatype=<enum 'EngineeringUnits'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<EngineeringUnits.NO_UNITS: 95>), PropertyIdentifier.CONTROLLED_VARIABLE_VALUE: PropertyDefinition(identifier=<PropertyIdentifier.CONTROLLED_VARIABLE_VALUE: 21>, datatype=<class 'float'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=0.0), 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.DERIVATIVE_CONSTANT: PropertyDefinition(identifier=<PropertyIdentifier.DERIVATIVE_CONSTANT: 26>, datatype=<class 'float'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=0.0), PropertyIdentifier.DERIVATIVE_CONSTANT_UNITS: PropertyDefinition(identifier=<PropertyIdentifier.DERIVATIVE_CONSTANT_UNITS: 27>, datatype=<enum 'EngineeringUnits'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=<EngineeringUnits.NO_UNITS: 95>), PropertyIdentifier.DESCRIPTION: PropertyDefinition(identifier=<PropertyIdentifier.DESCRIPTION: 28>, datatype=<class 'str'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.ERROR_LIMIT: PropertyDefinition(identifier=<PropertyIdentifier.ERROR_LIMIT: 34>, datatype=<class 'float'>, 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.INTEGRAL_CONSTANT: PropertyDefinition(identifier=<PropertyIdentifier.INTEGRAL_CONSTANT: 49>, datatype=<class 'float'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=0.0), PropertyIdentifier.INTEGRAL_CONSTANT_UNITS: PropertyDefinition(identifier=<PropertyIdentifier.INTEGRAL_CONSTANT_UNITS: 50>, datatype=<enum 'EngineeringUnits'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=<EngineeringUnits.NO_UNITS: 95>), PropertyIdentifier.MANIPULATED_VARIABLE_REFERENCE: PropertyDefinition(identifier=<PropertyIdentifier.MANIPULATED_VARIABLE_REFERENCE: 60>, datatype=<class 'bac_py.types.constructed.BACnetObjectPropertyReference'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.MAXIMUM_OUTPUT: PropertyDefinition(identifier=<PropertyIdentifier.MAXIMUM_OUTPUT: 61>, datatype=<class 'float'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=100.0), PropertyIdentifier.MINIMUM_OUTPUT: PropertyDefinition(identifier=<PropertyIdentifier.MINIMUM_OUTPUT: 68>, datatype=<class 'float'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=0.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.OUTPUT_UNITS: PropertyDefinition(identifier=<PropertyIdentifier.OUTPUT_UNITS: 82>, datatype=<enum 'EngineeringUnits'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=<EngineeringUnits.NO_UNITS: 95>), PropertyIdentifier.PRESENT_VALUE: PropertyDefinition(identifier=<PropertyIdentifier.PRESENT_VALUE: 85>, datatype=<class 'float'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=0.0), PropertyIdentifier.PRIORITY_FOR_WRITING: PropertyDefinition(identifier=<PropertyIdentifier.PRIORITY_FOR_WRITING: 88>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=16), PropertyIdentifier.PROPORTIONAL_CONSTANT: PropertyDefinition(identifier=<PropertyIdentifier.PROPORTIONAL_CONSTANT: 93>, datatype=<class 'float'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=0.0), PropertyIdentifier.PROPORTIONAL_CONSTANT_UNITS: PropertyDefinition(identifier=<PropertyIdentifier.PROPORTIONAL_CONSTANT_UNITS: 94>, datatype=<enum 'EngineeringUnits'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=<EngineeringUnits.NO_UNITS: 95>), PropertyIdentifier.RELIABILITY: PropertyDefinition(identifier=<PropertyIdentifier.RELIABILITY: 103>, datatype=<enum 'Reliability'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.SETPOINT: PropertyDefinition(identifier=<PropertyIdentifier.SETPOINT: 108>, datatype=<class 'float'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=0.0), PropertyIdentifier.SETPOINT_REFERENCE: PropertyDefinition(identifier=<PropertyIdentifier.SETPOINT_REFERENCE: 109>, datatype=<class 'bac_py.types.constructed.BACnetObjectPropertyReference'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, 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.UPDATE_INTERVAL: PropertyDefinition(identifier=<PropertyIdentifier.UPDATE_INTERVAL: 118>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=100), PropertyIdentifier.PROPERTY_LIST: PropertyDefinition(identifier=<PropertyIdentifier.PROPERTY_LIST: 371>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None)}¶
Timer Object¶
BACnet Timer object per ASHRAE 135-2020 Clause 12.57.
- class bac_py.objects.timer.TimerObject(instance_number, **initial_properties)[source]¶
Bases:
BACnetObjectBACnet Timer object (Clause 12.57).
Provides countdown and periodic timer functionality with a state machine (IDLE, RUNNING, EXPIRED).
- Parameters:
instance_number (int)
initial_properties (Any)
- OBJECT_TYPE: ClassVar[ObjectType] = 31¶
- INTRINSIC_EVENT_ALGORITHM: ClassVar[EventType | None] = 22¶
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.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 '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.LIST_OF_OBJECT_PROPERTY_REFERENCES: PropertyDefinition(identifier=<PropertyIdentifier.LIST_OF_OBJECT_PROPERTY_REFERENCES: 54>, datatype=<class 'list'>, 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=False, default=None), PropertyIdentifier.MIN_PRES_VALUE: PropertyDefinition(identifier=<PropertyIdentifier.MIN_PRES_VALUE: 69>, datatype=<class 'int'>, 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 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=0), PropertyIdentifier.PRIORITY_FOR_WRITING: PropertyDefinition(identifier=<PropertyIdentifier.PRIORITY_FOR_WRITING: 88>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.RELIABILITY: PropertyDefinition(identifier=<PropertyIdentifier.RELIABILITY: 103>, datatype=<enum 'Reliability'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.RESOLUTION: PropertyDefinition(identifier=<PropertyIdentifier.RESOLUTION: 106>, datatype=<class 'int'>, 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.EVENT_TIME_STAMPS: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_TIME_STAMPS: 130>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.UPDATE_TIME: PropertyDefinition(identifier=<PropertyIdentifier.UPDATE_TIME: 189>, datatype=<class 'bac_py.types.constructed.BACnetDateTime'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.EXPIRATION_TIME: PropertyDefinition(identifier=<PropertyIdentifier.EXPIRATION_TIME: 270>, datatype=<class 'bac_py.types.constructed.BACnetDateTime'>, 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.DEFAULT_TIMEOUT: PropertyDefinition(identifier=<PropertyIdentifier.DEFAULT_TIMEOUT: 393>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.INITIAL_TIMEOUT: PropertyDefinition(identifier=<PropertyIdentifier.INITIAL_TIMEOUT: 394>, datatype=<class 'int'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=0), PropertyIdentifier.LAST_STATE_CHANGE: PropertyDefinition(identifier=<PropertyIdentifier.LAST_STATE_CHANGE: 395>, datatype=<enum 'TimerTransition'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<TimerTransition.NONE: 0>), PropertyIdentifier.STATE_CHANGE_VALUES: PropertyDefinition(identifier=<PropertyIdentifier.STATE_CHANGE_VALUES: 396>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.TIMER_RUNNING: PropertyDefinition(identifier=<PropertyIdentifier.TIMER_RUNNING: 397>, datatype=<class 'bool'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=False), PropertyIdentifier.TIMER_STATE: PropertyDefinition(identifier=<PropertyIdentifier.TIMER_STATE: 398>, datatype=<enum 'TimerState'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<TimerState.IDLE: 0>)}¶
Staging Object¶
BACnet Staging object per ASHRAE 135-2020 Clause 12.62 (new in 2020).
- class bac_py.objects.staging.StagingObject(instance_number, **initial_properties)[source]¶
Bases:
BACnetObjectBACnet Staging object (Clause 12.62, new in 2020).
Two-phase write mechanism. Writes to Present_Value are staged and can be committed or abandoned. State machine transitions: NOT_STAGED -> STAGING -> STAGED -> COMMITTING -> COMMITTED or STAGED -> ABANDONING -> ABANDONED.
- Parameters:
instance_number (int)
initial_properties (Any)
- OBJECT_TYPE: ClassVar[ObjectType] = 60¶
- 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_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.PROPERTY_LIST: PropertyDefinition(identifier=<PropertyIdentifier.PROPERTY_LIST: 371>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None), PropertyIdentifier.PRESENT_STAGE: PropertyDefinition(identifier=<PropertyIdentifier.PRESENT_STAGE: 493>, datatype=<enum 'StagingState'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<StagingState.NOT_STAGED: 0>), PropertyIdentifier.STAGES: PropertyDefinition(identifier=<PropertyIdentifier.STAGES: 494>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None), PropertyIdentifier.STAGE_NAMES: PropertyDefinition(identifier=<PropertyIdentifier.STAGE_NAMES: 495>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.TARGET_REFERENCES: PropertyDefinition(identifier=<PropertyIdentifier.TARGET_REFERENCES: 496>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=None)}¶
Program Object¶
BACnet Program object per ASHRAE 135-2016 Clause 12.22.
- class bac_py.objects.program.ProgramObject(instance_number, **initial_properties)[source]¶
Bases:
BACnetObjectBACnet Program object (Clause 12.22).
Represents an application program that can be loaded, run, halted, and unloaded. Program_State indicates the current execution state; Program_Change requests state transitions.
- Parameters:
instance_number (int)
initial_properties (Any)
- OBJECT_TYPE: ClassVar[ObjectType] = 16¶
- 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.DESCRIPTION_OF_HALT: PropertyDefinition(identifier=<PropertyIdentifier.DESCRIPTION_OF_HALT: 29>, datatype=<class 'str'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.EVENT_STATE: PropertyDefinition(identifier=<PropertyIdentifier.EVENT_STATE: 36>, datatype=<enum 'EventState'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=<EventState.NORMAL: 0>), PropertyIdentifier.INSTANCE_OF: PropertyDefinition(identifier=<PropertyIdentifier.INSTANCE_OF: 48>, datatype=<class 'str'>, access=<PropertyAccess.READ_ONLY: 0>, 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.PROGRAM_CHANGE: PropertyDefinition(identifier=<PropertyIdentifier.PROGRAM_CHANGE: 90>, datatype=<enum 'ProgramChange'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=<ProgramChange.READY: 0>), PropertyIdentifier.PROGRAM_LOCATION: PropertyDefinition(identifier=<PropertyIdentifier.PROGRAM_LOCATION: 91>, datatype=<class 'str'>, access=<PropertyAccess.READ_ONLY: 0>, required=False, default=None), PropertyIdentifier.PROGRAM_STATE: PropertyDefinition(identifier=<PropertyIdentifier.PROGRAM_STATE: 92>, datatype=<enum 'ProgramState'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=<ProgramState.IDLE: 0>), PropertyIdentifier.REASON_FOR_HALT: PropertyDefinition(identifier=<PropertyIdentifier.REASON_FOR_HALT: 100>, datatype=<class 'int'>, 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.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)}¶
Command Object¶
BACnet Command object per ASHRAE 135-2020 Clause 12.10.
- class bac_py.objects.command.CommandObject(instance_number, **initial_properties)[source]¶
Bases:
BACnetObjectBACnet Command object (Clause 12.10).
Executes an action list when Present_Value is written. Each action specifies a target object, property, and value.
- Parameters:
instance_number (int)
initial_properties (Any)
- OBJECT_TYPE: ClassVar[ObjectType] = 7¶
- PROPERTY_DEFINITIONS: ClassVar[dict[PropertyIdentifier, PropertyDefinition]] = {PropertyIdentifier.ACTION: PropertyDefinition(identifier=<PropertyIdentifier.ACTION: 2>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=True, default=[]), PropertyIdentifier.ACTION_TEXT: PropertyDefinition(identifier=<PropertyIdentifier.ACTION_TEXT: 3>, datatype=<class 'list'>, access=<PropertyAccess.READ_WRITE: 1>, required=False, default=None), PropertyIdentifier.ALL_WRITES_SUCCESSFUL: PropertyDefinition(identifier=<PropertyIdentifier.ALL_WRITES_SUCCESSFUL: 9>, datatype=<class 'bool'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=True), 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.IN_PROCESS: PropertyDefinition(identifier=<PropertyIdentifier.IN_PROCESS: 47>, datatype=<class 'bool'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=False), 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 'int'>, access=<PropertyAccess.READ_WRITE: 1>, 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.PROPERTY_LIST: PropertyDefinition(identifier=<PropertyIdentifier.PROPERTY_LIST: 371>, datatype=<class 'list'>, access=<PropertyAccess.READ_ONLY: 0>, required=True, default=None)}¶