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.
- Other protocols: browse the MajorDom integrations.
- Create your own: start from the integration template.
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) orqr.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a8db0bf722ab1ff08ebdf3169a4fceea93a79960e7a05ba136888937993d3f88
|
|
| MD5 |
211b09cfdf09272a52e351688eb0b9fd
|
|
| BLAKE2b-256 |
ae3f74c19d0ffbf08951b42968a438e1b684fd5ea80a3ec448cd6746f6262ced
|
Provenance
The following attestation bundles were made for majordom_matter-0.1.1.tar.gz:
Publisher:
release.yml on MajorDom-Systems/integration-matter
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
majordom_matter-0.1.1.tar.gz -
Subject digest:
a8db0bf722ab1ff08ebdf3169a4fceea93a79960e7a05ba136888937993d3f88 - Sigstore transparency entry: 2194854311
- Sigstore integration time:
-
Permalink:
MajorDom-Systems/integration-matter@8cd00a45cb807d157eac883988cd2075162f2bc3 -
Branch / Tag:
refs/heads/develop - Owner: https://github.com/MajorDom-Systems
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8cd00a45cb807d157eac883988cd2075162f2bc3 -
Trigger Event:
workflow_dispatch
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7ff8ab6eb14745f6ccfea179f703e80eced5fbbd896a8e517f6e71fecfc8fe51
|
|
| MD5 |
9bba8697b49f3f5e696c9200c88b73e6
|
|
| BLAKE2b-256 |
cec6c1ded27c3c4b80ecd0acbf0796f98fdf1f5564ebea517e1f788fc3f1180c
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
majordom_matter-0.1.1-py3-none-any.whl -
Subject digest:
7ff8ab6eb14745f6ccfea179f703e80eced5fbbd896a8e517f6e71fecfc8fe51 - Sigstore transparency entry: 2194854314
- Sigstore integration time:
-
Permalink:
MajorDom-Systems/integration-matter@8cd00a45cb807d157eac883988cd2075162f2bc3 -
Branch / Tag:
refs/heads/develop - Owner: https://github.com/MajorDom-Systems
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8cd00a45cb807d157eac883988cd2075162f2bc3 -
Trigger Event:
workflow_dispatch
-
Statement type: