Skip to main content

Matter integration for MajorDom — bridges Matter devices into the MajorDom language.

Project description

integration-matter

A MajorDom integration — bridges Matter (CSA Connectivity Standard) devices into the MajorDom language.

Built for the MajorDom Hub, but it doesn't need it: this is a standalone, standardized library for Matter that you can use on its own (see Run it standalone below). Built on the MajorDom Integration SDK. The entry point is MatterController (majordom_matter/controller.py), which the Hub — or the SDK's dev runner — instantiates and drives through its lifecycle: discovery → pairing → commands → teardown.

Documentation

Full integration-author docs — the controller lifecycle, data models, storing data, discovery, and a worked example — live at docs.majordom.io.

Development

poetry install && poetry run poe install
Task Description
poe check Full quality pipeline (ruff, ty, pytest, poetry build/check)
poe check --ci Same, plus git diff --exit-code

Work lands on develop; master is protected and released via Actions → Release. The default suite drives the controller against a canned node with the SDK's test doubles — no matter-server, no docker (tests/test_controller_stub.py). The exhaustive real-device coverage commissions Google's Matter Virtual Devices in a dockerized matter-server (tests/test_controller.py, see docker-compose.matter-tests.yml); the MVD binaries + PAA certs are fetched, not committed.

Run it standalone (without the Hub)

Matter needs a running python-matter-server (it owns the fabric and the Thread/BLE radios) reachable over its WebSocket — set MATTER_SERVER_URL (default ws://localhost:5580/ws). Thread devices also need an OpenThread Border Router. Then:

# run.py
import asyncio

from majordom_integration_sdk.dev import run_controller
from majordom_matter import MatterController

# Watches for Matter devices, logs discoveries/events. Ctrl-C to stop.
asyncio.run(run_controller(MatterController, db_path="devices.db"))
poetry run python run.py

About this integration

  • Protocol / platform: Matter (Connectivity Standards Alliance) via python-matter-server + chip.
  • Transport(s): IP over Thread / Wi-Fi / Ethernet; BLE for commissioning.
  • Supported devices: any Matter-certified device — lights, plugs, switches, sensors, locks, thermostats, covers, fans, appliances (verified against 30 Matter Virtual Device types).
  • Credentials needed to pair: code (manual pairing code) or qr.

Required harness

  • Hardware adapters: an 802.15.4 radio (e.g. a SkyConnect / Thread dongle) for Thread devices — driven by matter-server / the OTBR, not this package directly.
  • Third-party software services: a matter-server instance reachable over WebSocket (MATTER_SERVER_URL), and an OpenThread Border Router (OTBR) for Thread devices.
  • OS / permissions: BLE access for commissioning; mDNS on the LAN for on-network discovery.

Protocol stack (OSI)

OSI layer Protocol Implemented by
Application (7) Matter clusters / data model this integration (via chip lib)
Session (5) CASE / PASE secure session library (matter-server)
Transport (4) UDP OS
Network (3) IPv6 · 6LoWPAN OS · OTBR (harness)
Data link / Physical (1–2) Thread · IEEE 802.15.4 (or Wi-Fi / Ethernet) radio adapter (harness)

Progress

  • Discovery services registered (mDNS on-network via matter-server; BLE for commissionable devices); cancel closures called in stop
  • Discovery listeners fire and call controller_did_receive_discovery
  • Re-discovery of already-paired devices on reconnect (controller_did_connect_device)
  • Device pairing (BLE→Thread and on-network commissioning)
  • Device schema mapped: device info, parameter list, per-parameter metadata → MajorDom's domain model
  • Hub → Device control (send_command)
  • Device → Hub event subscription (controller_did_receive_events)
  • identify
  • unpair
  • fetch
  • Availability tracking while running (controller_did_lose_device / last_error)
  • Graceful shutdown in stop
  • Tests pass against virtual/simulated devices (stub + dockerized MVD suite)

Notes

The MVD chef binaries are x86-64 Linux only, so the real-device suite runs in an amd64 container (Rosetta on Apple Silicon). A monthly canary fetches the latest upstream MVD release and fails if it ships something unsupported — the signal to add support.

License

See LICENSE. For commercial licensing or partnership inquiries regarding MajorDom, contact us via parker-industries.org/partnership.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

majordom_matter-0.1.1.tar.gz (33.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

majordom_matter-0.1.1-py3-none-any.whl (34.5 kB view details)

Uploaded Python 3

File details

Details for the file majordom_matter-0.1.1.tar.gz.

File metadata

  • Download URL: majordom_matter-0.1.1.tar.gz
  • Upload date:
  • Size: 33.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for majordom_matter-0.1.1.tar.gz
Algorithm Hash digest
SHA256 a8db0bf722ab1ff08ebdf3169a4fceea93a79960e7a05ba136888937993d3f88
MD5 211b09cfdf09272a52e351688eb0b9fd
BLAKE2b-256 ae3f74c19d0ffbf08951b42968a438e1b684fd5ea80a3ec448cd6746f6262ced

See more details on using hashes here.

Provenance

The following attestation bundles were made for majordom_matter-0.1.1.tar.gz:

Publisher: release.yml on MajorDom-Systems/integration-matter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file majordom_matter-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: majordom_matter-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 34.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for majordom_matter-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7ff8ab6eb14745f6ccfea179f703e80eced5fbbd896a8e517f6e71fecfc8fe51
MD5 9bba8697b49f3f5e696c9200c88b73e6
BLAKE2b-256 cec6c1ded27c3c4b80ecd0acbf0796f98fdf1f5564ebea517e1f788fc3f1180c

See more details on using hashes here.

Provenance

The following attestation bundles were made for majordom_matter-0.1.1-py3-none-any.whl:

Publisher: release.yml on MajorDom-Systems/integration-matter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page