Skip to main content

Python Matter WebSocket Server

Project description

Python Matter Server

This project implements a Matter (formerly Home Assistant Connected Home over IP or CHIP) Controller Server using WebSockets.

:warning: This is under development and in very early stage!

Usage

To use the Matter Server using the Supervisor add-on is the recommended path (tbd).

Development

The Home Assistant Matter Server uses the Python CHIP Controller part of the open source Matter/Project CHIP repository. The project offers a IPython based REPL for testing/exploring. The REPL is also available as Python CHIP Controller REPL Add-on.

Prepare venv for the Matter Server

This Python Matter Server needs the CHIP Controller Python libraries. The CHIP Controller Python libraries come with the complete Matter SDK (CHIP stack) as a native C++ library. The CHIP Controller Python is not available on pip, and, because it comes with a native C++ library, is a platform dependent library. The Matter SDK allows to build a Python wheel for your platform.

To build the Python CHIP Controller follow the building instructions available at docs/guides/python_chip_controller_building.md.

Note the essential command is scripts/build_python.sh -m platform -i separate. It builds the library in out/python_lib/, and creates a venv for you in out/python_env/. If you update the Matter SDK git repository, make sure to run this command again to rebuild the library.

If you already compiled the CHIP Controller Python libraries previously, you can activate the Python virtual environment using:

source ../connectedhomeip/out/python_env/bin/activate

Note: There is a bug with Apple M1 based systems: Pigweed currently uses Python x86-64 via Rosetta. That causes problems when trying to build the Python CHIP Controller. There are work arounds documented in GitHub issue #19134. Make sure to not use -i separate and setup the venv separately as well.

Run from the source tree

The Server needs to be run in a Python environment where the Python CHIP Controller is installed. E.g.

Also make sure that the default storage location is present:

mkdir $HOME/.chip-storage/

With the following command the server can be run directly from the source tree.

python3 -m matter_server.server

On macOS you will have to run above command with 'sudo' as it requires to interact with BLE.

On Linux, make sure Bluetooth (bluez) is active and enabled before starting onboarding.

The client does not need to be run in the Python CHIP Controller environment. It can be run from the source tree using:

python3 -m matter_server.client

Build and install

nce you have a working Python CHIP Controller Python environment, switch to this repository and install this project as follows:

pip install .

Creating a test device

Instruction on how to create a test device can be found here.

Installing custom component in Home Assistant

Inside your Home Assistant development environment.

pip3 install -e ../python-matter-server
cd config
mkdir custom_components
cd custom_components
ln -sf ../../../python-matter-server/custom_components/matter_experimental .

You can now add the custom component via the UI. It's called Matter (experimental):

Open your Home Assistant instance and start setting up a new integration.

Commissioning a test device

You can use Home Assistant services to commission a test device.

Open your Home Assistant instance and show your service developer tools.

Each time the server restarts you will need to provide it your Wi-Fi credentials via the matter_experimental.set_wifi service to be able to onboard Wi-Fi devices.

Once done, you can onboard devices by sending the content of a QR code to the matter_experimental.commission service. Get the QR code from your test device via the Matter REPL.

Using the Python CHIP REPL

Matter provides their own REPL that allows you to directly interact with the device controller. It's possible to start this and have it use the same storage as the server:

chip-repl --storagepath=$HOME/.chip-storage/python-kv.json

On MacOs you will have to run above command with 'sudo' as it requires to interact with BLE.

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

python-matter-server-0.1.0.tar.gz (104.0 kB view details)

Uploaded Source

Built Distribution

python_matter_server-0.1.0-py3-none-any.whl (114.5 kB view details)

Uploaded Python 3

File details

Details for the file python-matter-server-0.1.0.tar.gz.

File metadata

  • Download URL: python-matter-server-0.1.0.tar.gz
  • Upload date:
  • Size: 104.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for python-matter-server-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4a0d959557b8b571ff6dc4c96252b1c3b916fbc3d20d4d055d98450b2dacf156
MD5 32c2852b1932cba21eaedb06b1332ed9
BLAKE2b-256 c30bf9a97a6b715ebcee23e37f1a7673ec43f0712287c6f0885a168a57006f2a

See more details on using hashes here.

File details

Details for the file python_matter_server-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for python_matter_server-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 00a29e41c457e5b2a0fa0f3274b0772a450f5fe36fe02006c79f3244f46d33f1
MD5 790fbbde0fda2a84a62a655b5b7cf2de
BLAKE2b-256 f522dc4b644b188e5df8f57a27b531ffa135d32257ac43148a8f79edc17fbebd

See more details on using hashes here.

Supported by

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