Skip to content

Panel API

DMPPanel

DMPPanel(port: int = DEFAULT_PORT, timeout: float = 10.0)

High-level async interface to DMP panel.

Initialize panel.

Parameters:

Name Type Description Default
port int

TCP port (default: 2011)

DEFAULT_PORT
timeout float

Connection timeout in seconds

10.0

port instance-attribute

port = port

timeout instance-attribute

timeout = timeout

is_connected property

is_connected: bool

Check if connected to panel.

connect async

connect(host: str, account: str, remote_key: str) -> None

Connect to panel and authenticate.

Parameters:

Name Type Description Default
host str

Panel IP address or hostname

required
account str

5-digit account number

required
remote_key str

Remote key for authentication

required

Raises:

Type Description
DMPConnectionError

If connection fails

disconnect async

disconnect() -> None

Disconnect from panel.

update_status async

update_status() -> None

Update status of all areas and zones from panel.

Raises:

Type Description
DMPConnectionError

If not connected or update fails

get_areas async

get_areas() -> list[Area]

Get all areas.

Returns:

Type Description
list[Area]

List of Area objects

Raises:

Type Description
DMPConnectionError

If not connected

get_area async

get_area(number: int) -> Area

Get specific area by number.

Parameters:

Name Type Description Default
number int

Area number (1-8)

required

Returns:

Type Description
Area

Area object

Raises:

Type Description
DMPConnectionError

If not connected

KeyError

If area not found

get_zones async

get_zones() -> list[Zone]

Get all zones.

Returns:

Type Description
list[Zone]

List of Zone objects

Raises:

Type Description
DMPConnectionError

If not connected

get_zone async

get_zone(number: int) -> Zone

Get specific zone by number.

Parameters:

Name Type Description Default
number int

Zone number (1-999)

required

Returns:

Type Description
Zone

Zone object

Raises:

Type Description
DMPConnectionError

If not connected

KeyError

If zone not found

get_outputs async

get_outputs() -> list[Output]

Get all outputs.

Note: Outputs are created on-demand; prefer calling update_output_status() first to populate real states from the panel.

Returns:

Type Description
list[Output]

List of Output objects

get_output async

get_output(number: int) -> Output

Get specific output by number.

Parameters:

Name Type Description Default
number int

Output number (1-999)

required

Returns:

Type Description
Output

Output object

Raises:

Type Description
KeyError

If output number invalid

update_output_status async

update_output_status() -> None

Fetch output status from panel (*WQ) and update known outputs.

The panel returns a stream of output entries in frames. We request the initial page for output 001, then continue with '?WQ' a few times to collect subsequent chunks.

Note: Many residential installations only use outputs 1-4.

sensor_reset async

sensor_reset() -> None

Send sensor reset command to the panel (!E001).

get_user_codes async

get_user_codes() -> list[UserCode]

Retrieve all user codes from the panel (decrypting entries).

get_user_profiles async

get_user_profiles() -> list[UserProfile]

Retrieve all user profiles from the panel.

check_code async

check_code(code: str, *, include_pin: bool = True, refresh_if_missing: bool = True) -> UserCode | None

Check if a user code (or PIN) exists in the panel.

Parameters:

Name Type Description Default
code str

The code/PIN string to validate

required
include_pin bool

If True, also match against PIN codes

True
refresh_if_missing bool

If True, refresh cache on miss and retry once

True

Returns:

Type Description
UserCode | None

Matching UserCode or None if not found

attach_status_server

attach_status_server(server: Any) -> None

Attach a DMPStatusServer to auto-refresh user cache on Zu events.

When the server receives a User Codes (Zu) event, the panel will refresh its user cache in the background. Call detach_status_server to remove.

detach_status_server

detach_status_server(server: Any) -> None

Detach a previously attached DMPStatusServer.

start_keepalive async

start_keepalive(interval: float = 10.0) -> None

Start periodic keep-alive (!H) while connected.

Parameters:

Name Type Description Default
interval float

Seconds between keep-alive messages (default: 10)

10.0

stop_keepalive async

stop_keepalive() -> None

Stop periodic keep-alive if running.

arm_areas async

arm_areas(area_numbers: list[int] | tuple[int, ...], bypass_faulted: bool = False, force_arm: bool = False, instant: bool | None = None) -> None

Arm one or more areas in a single command.

Concatenates two-digit area numbers per DMP format and sends !C{areas},{bypass}{force}.

disarm_areas async

disarm_areas(area_numbers: list[int] | tuple[int, ...]) -> None

Disarm one or more areas in a single command: !O{areas}.

DMPPanelSync

DMPPanelSync(port: int = DEFAULT_PORT, timeout: float = 10.0)

High-level synchronous interface to DMP panel.

Initialize sync panel.

Parameters:

Name Type Description Default
port int

TCP port (default: 2011)

DEFAULT_PORT
timeout float

Connection timeout in seconds

10.0

is_connected property

is_connected: bool

Check if connected to panel.

connect

connect(host: str, account: str, remote_key: str) -> None

Connect to panel and authenticate.

Parameters:

Name Type Description Default
host str

Panel IP address or hostname

required
account str

5-digit account number

required
remote_key str

Remote key for authentication

required

disconnect

disconnect() -> None

Disconnect from panel.

update_status

update_status() -> None

Update status of all areas and zones from panel.

get_areas

get_areas() -> list[AreaSync]

Get all areas.

Returns:

Type Description
list[AreaSync]

List of AreaSync objects

get_area

get_area(number: int) -> AreaSync

Get specific area by number.

Parameters:

Name Type Description Default
number int

Area number (1-8)

required

Returns:

Type Description
AreaSync

AreaSync object

get_zones

get_zones() -> list[ZoneSync]

Get all zones.

Returns:

Type Description
list[ZoneSync]

List of ZoneSync objects

get_zone

get_zone(number: int) -> ZoneSync

Get specific zone by number.

Parameters:

Name Type Description Default
number int

Zone number (1-999)

required

Returns:

Type Description
ZoneSync

ZoneSync object

get_outputs

get_outputs() -> list[OutputSync]

Get all outputs.

Returns:

Type Description
list[OutputSync]

List of OutputSync objects

get_output

get_output(number: int) -> OutputSync

Get specific output by number.

Parameters:

Name Type Description Default
number int

Output number (1-4)

required

Returns:

Type Description
OutputSync

OutputSync object