Overview

The project is a Matterbridge dynamic platform plugin. It polls the JSON feed served by purpleair_data_logger and creates one stable Matter air-quality endpoint for each accepted PurpleAir sensor.

The plugin does not implement Matter transport, discovery, commissioning, or fabrics itself. Matterbridge remains the host runtime and owns those concerns.

Runtime requirements

  • Node.js 20.19, 22.13, 24, or 26

  • Matterbridge 3.10.0 or newer

  • A running PurpleAir Matter JSON feed

  • IPv6 and mDNS connectivity for Matter commissioning

The default feed URL is http://127.0.0.1:9855/matter/sensors.

Combined Docker runtime

The combined Docker image runs purpleair_data_logger and Matterbridge in one container. Start it with exactly one logger mode:

./docker/spinup.sh --local --settings-file /absolute/path/to/local.json
./docker/spinup.sh --remote --settings-file /absolute/path/to/remote.json

--local selects -paa_local_sensor_request_json_file. --remote selects -paa_multiple_sensor_request_json_file for API-backed settings. The settings file is mounted read-only, the logger feed remains on 127.0.0.1:9855, and Matterbridge uses host networking for mDNS and UDP commissioning. See the repository README and the Windows/WSL troubleshooting guide for pairing, persistent volumes, updates, and factory reset.

When the host has Docker bridge or virtual Ethernet interfaces, pass the real LAN interface explicitly, for example --mdns-interface eth0. Do not select docker0, br-*, or veth*. The Node.js 26 versus Node.js 24 LTS message from Matterbridge is advisory; Node.js 26 is the configured and supported image runtime.