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)

majordom-matter is a standalone library — import it into your own app, or run just this integration interactively (discover, pair, control, and inspect devices from a prompt) with no Hub. It needs a running python-matter-server reachable over its WebSocket (MATTER_SERVER_URL, default ws://localhost:5580/ws); Thread devices also need an OpenThread Border Router.

See Standalone mode for the interactive CLI, watch mode, and the programmatic API.

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)

Parameter metadata sources & priority

Every parameter's UX metadata is resolved from several sources. See also the parameter-ux recipe.

Visibility / role / unit — resolved by classify_attribute() in matter_spec.py (first match wins):

# Source What it is
system cluster / sensitive (Aliro* crypto) forced system (safety, top priority)
1 OUR_ATTRIBUTE_UX (USER_READINGS, EVERYDAY_CONTROL_ATTRIBUTES) our hand curation
2 MATTER_HA_ATTRIBUTE_UX judgment harvested from Home Assistant's Matter discovery (scripts/harvest_matter_ha.py, AST-parsed, vendored — no homeassistant dep)
3 fallback policy writable → setting, else system; logs a warning on uncurated attrs. Flip _FALLBACK_HIDE_UNCURATED once coverage is validated.

Matter has no runtime quirk layer, so (unlike zigbee) there is no v2-quirk tier. The Matter Data Model (chip) already supplies names/types/bounds; the harvest adds only the entity_category (user/config/diagnostic) judgment the spec doesn't dictate.

Bounds come from the device's own limit attributes (runtime) > spec tables > wire-type range — see resolve_runtime_bounds() / METADATA_SOURCES.

Drift. scripts/check_matter_ha_drift.py re-runs the AST harvest against home-assistant/core and diffs vs the vendored artifact via the SDK's diff_specs, tiering ADD / REMOVE / RECLASSIFY.

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. The same drift machinery (the SDK's diff_specs) now also watches the harvested HA-Matter judgment.

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.3.tar.gz (37.6 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.3-py3-none-any.whl (39.0 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for majordom_matter-0.1.3.tar.gz
Algorithm Hash digest
SHA256 e1b7b4db7873119b1e7f1bf54023dbb734866df3916002bba82727c7012b610e
MD5 a61f434c5cebc523dd769ade5156ffe4
BLAKE2b-256 c365833a21311f824a950d23c4eed0d2c5fb233b98328398d10760c2d0054911

See more details on using hashes here.

Provenance

The following attestation bundles were made for majordom_matter-0.1.3.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.3-py3-none-any.whl.

File metadata

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

File hashes

Hashes for majordom_matter-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 12487b7d0fba2b7f1dcd1338c3697364eea319d3490dffbf65f366dd93958e82
MD5 edb43f06a1f0eed9e9b1189064c82af0
BLAKE2b-256 129445caf1ea6e2f0c65bf238cb5ea4671e5840b42a09708cf1b2d6210ed71ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for majordom_matter-0.1.3-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