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.4.tar.gz (37.9 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.4-py3-none-any.whl (39.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: majordom_matter-0.1.4.tar.gz
  • Upload date:
  • Size: 37.9 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.4.tar.gz
Algorithm Hash digest
SHA256 e43be0d11a00ca94f84bd1f4cdf217496ae430162bcd3a8a3ee0ba6dfb01937b
MD5 7d6a02495c69cdeb5e110bfc8d028c99
BLAKE2b-256 d5e3caea37609b6c0c9017217927e83ba65521225d0eaa511d6e4ed3c9d4e750

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: majordom_matter-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 39.4 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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 a4e0f0a10b9013e84038191870f9cb7ec81e2fb7ce9aa509f46ebc50c5113426
MD5 29014c8f970b9d3ff4bb7b4f8cc6d062
BLAKE2b-256 bbbc7e3707364937159bd9d5ddbf7d52673888e9f14217f38718bde70e4024ff

See more details on using hashes here.

Provenance

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