Protocol
DMPProtocol
DMPProtocol(account_number: str, remote_key: str = '')
DMP protocol encoder/decoder.
Initialize protocol handler.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
account_number
|
str
|
5-digit account number (left-padded with spaces or zeros) |
required |
remote_key
|
str
|
Remote key for authentication |
''
|
account_number
instance-attribute
account_number = rjust(5)
remote_key
instance-attribute
remote_key = remote_key
crypto
instance-attribute
crypto = DMPCrypto(account_int, remote_key)
last_nak_detail
instance-attribute
last_nak_detail: str | None = None
encode_command
encode_command(command: str, **kwargs: Any) -> bytes
Encode a command for transmission to panel.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
command
|
str
|
Command template (e.g., "!C{area},{bypass}{force}") |
required |
**kwargs
|
Any
|
Parameters to substitute into command template |
{}
|
Returns:
| Type | Description |
|---|---|
bytes
|
Encoded command as bytes |
Raises:
| Type | Description |
|---|---|
DMPProtocolError
|
If command cannot be encoded |
decode_response
decode_response(response: bytes) -> str | StatusResponse | UserCodesResponse | UserProfilesResponse | OutputsResponse | None
Decode response from panel.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
response
|
bytes
|
Raw bytes from panel |
required |
Returns:
| Type | Description |
|---|---|
str | StatusResponse | UserCodesResponse | UserProfilesResponse | OutputsResponse | None
|
|
str | StatusResponse | UserCodesResponse | UserProfilesResponse | OutputsResponse | None
|
|
str | StatusResponse | UserCodesResponse | UserProfilesResponse | OutputsResponse | None
|
|
Raises:
| Type | Description |
|---|---|
DMPInvalidResponseError
|
If response cannot be decoded |
StatusResponse
dataclass
StatusResponse(areas: dict[str, AreaStatus], zones: dict[str, ZoneStatus])
Combined status response from panel.
areas
instance-attribute
areas: dict[str, AreaStatus]
zones
instance-attribute
zones: dict[str, ZoneStatus]
UserCodesResponse
dataclass
UserCodesResponse(users: list[UserCode], has_more: bool, last_number: str | None)
users
instance-attribute
users: list[UserCode]
has_more
instance-attribute
has_more: bool
last_number
instance-attribute
last_number: str | None
UserProfilesResponse
dataclass
UserProfilesResponse(profiles: list[UserProfile], has_more: bool, last_number: str | None)
profiles
instance-attribute
profiles: list[UserProfile]
has_more
instance-attribute
has_more: bool
last_number
instance-attribute
last_number: str | None