Skip to content

PyDMP

PyDMP is a platform-agnostic Python library for controlling DMP (Digital Monitoring Products) alarm panels over TCP/IP — dual async/sync APIs, high-level panel/area/zone abstractions, built-in rate limiting, and real-time S3 event handling. No vendor lock-in.

Installation

pip install pydmp
# CLI
pip install pydmp[cli]
# Docs tooling (to build the API reference locally)
pip install pydmp[docs]

Quick Start (Async)

import asyncio
from pydmp import DMPPanel

async def main():
    panel = DMPPanel()
    await panel.connect("192.168.1.100", "00001", "YOURKEY")

    # Pull status (connect() is side-effect free)
    await panel.update_status()
    areas = await panel.get_areas()
    zones = await panel.get_zones()

    # Control
    await areas[0].arm(bypass_faulted=False, force_arm=False, instant=None)
    await areas[0].disarm()

    # Outputs
    outs = await panel.get_outputs()
    await outs[0].pulse()

    await panel.disconnect()

asyncio.run(main())

Realtime Status (S3)

import asyncio
from pydmp import DMPStatusServer, parse_s3_message

async def run():
    server = DMPStatusServer(host="127.0.0.1", port=5001)
    server.register_callback(lambda msg: print(parse_s3_message(msg)))
    await server.start()
    await asyncio.sleep(3600)

asyncio.run(run())

Migration

Upgrading from an earlier version? See the migration guide for breaking API changes.