Source code for bac_py.objects.structured_view
"""BACnet Structured View object per ASHRAE 135-2020 Clause 12.29."""
from __future__ import annotations
from typing import Any, ClassVar
from bac_py.objects.base import (
BACnetObject,
PropertyAccess,
PropertyDefinition,
register_object_type,
standard_properties,
)
from bac_py.types.enums import (
NodeType,
ObjectType,
PropertyIdentifier,
)
[docs]
@register_object_type
class StructuredViewObject(BACnetObject):
"""BACnet Structured View object (Clause 12.29).
Provides hierarchical grouping of objects for organizational
purposes. Pure data container with no behavioral logic.
"""
OBJECT_TYPE: ClassVar[ObjectType] = ObjectType.STRUCTURED_VIEW
PROPERTY_DEFINITIONS: ClassVar[dict[PropertyIdentifier, PropertyDefinition]] = {
**standard_properties(),
PropertyIdentifier.NODE_TYPE: PropertyDefinition(
PropertyIdentifier.NODE_TYPE,
NodeType,
PropertyAccess.READ_WRITE,
required=True,
default=NodeType.UNKNOWN,
),
PropertyIdentifier.NODE_SUBTYPE: PropertyDefinition(
PropertyIdentifier.NODE_SUBTYPE,
str,
PropertyAccess.READ_WRITE,
required=False,
),
PropertyIdentifier.SUBORDINATE_LIST: PropertyDefinition(
PropertyIdentifier.SUBORDINATE_LIST,
list,
PropertyAccess.READ_WRITE,
required=True,
default=[],
),
PropertyIdentifier.SUBORDINATE_ANNOTATIONS: PropertyDefinition(
PropertyIdentifier.SUBORDINATE_ANNOTATIONS,
list,
PropertyAccess.READ_WRITE,
required=False,
),
}
def __init__(self, instance_number: int, **initial_properties: Any) -> None:
super().__init__(instance_number, **initial_properties)