A Matter-compatible differential pressure sensor built on Espressif's ESP LowCode framework. This fork adds a Würth Elektronik WSEN-PDUS (±0.1 kPa) pressure sensing product to the LowCode product catalogue.
- Reads differential pressure from a WSEN-PDUS sensor over I2C every 5 seconds
- Reports measurements to the Matter fabric via the Pressure Measurement cluster (0x0403)
- Runs on an ESP32-C6 with the LowCode runtime (no full ESP-IDF application needed)
- Supports commissioning into Apple Home, Google Home, Amazon Alexa, Home Assistant, Samsung SmartThings
| Component | Detail |
|---|---|
| MCU | ESP32-C6 (ESP32-C6-MINI-1 module) |
| Sensor | WSEN-PDUS 2511020213301, ±0.1 kPa |
| LED | Single-channel PWM (cold white) for status indication |
| Button | Boot button for factory reset (long press >5 s) |
| Peripheral | Signal | GPIO |
|---|---|---|
| I2C (WSEN-PDUS) | SCL | GPIO1 |
| I2C (WSEN-PDUS) | SDA | GPIO2 |
| PWM LED | Cold | GPIO8 |
| Button | Input | GPIO9 |
GPIOs can be changed via macros in app_driver.cpp.
This project uses the same LowCode development workflow as upstream. You can develop in the browser via GitHub Codespaces or locally.
Requires a Chromium-based browser (Chrome, Edge, etc.)
- Go to https://github.com/OOHehir/esp-lowcode-matter/ and sign in to GitHub
- Click Code -> Codespaces -> Create Codespace on Main (+)
- Wait ~5 minutes for the environment to set up (it will restart a few times)
- Wait for the
LowCode is Readymessage in the terminal
Use the status bar buttons (left to right) or the command palette (Ctrl/Cmd + Shift + P, prefix Lowcode:):
- Select Product -> choose
pressure_sensor - Select Chip -> ESP32-C6 + network type (WiFi or Thread)
- Select Port -> connect your board via USB
- Prepare Device -> erases flash and loads LowCode runtime
- Upload Configuration -> generates certificates and QR code
- Upload Code -> builds, flashes, and runs
Your device is now a commissioned Matter pressure sensor.
| Field | Value |
|---|---|
| Device Type | Pressure Sensor (0x0305) |
| Cluster | Pressure Measurement (0x0403) |
| Attribute | MeasuredValue (0x0000) |
| Unit | 0.1 kPa (int16) |
The raw 14-bit ADC output maps to pressure as:
P_Pa = (raw / 16383.0) x 200.0 - 100.0
This yields ±100 Pa (±0.1 kPa). The Matter MeasuredValue is in 0.1 kPa units, so the reported range is [-1, 0, 1].
products/pressure_sensor/
main/
app_main.cpp # setup/loop entry point, callback registration
app_driver.cpp # sensor init, periodic read, Matter reporting
app_priv.h # shared declarations
configuration/ # ZAP data models (WiFi & Thread), certs
components/
pressure_sensor_wsen_pdus/ # I2C driver for the WSEN-PDUS sensor
See the detailed pressure sensor product README for the full initialization sequence and extension guide.
This is a fork of espressif/esp-lowcode-matter. The upstream project includes additional products (lights, sockets, temperature/occupancy sensors) and the full LowCode documentation:
- Create a Product
- Product Configuration
- Programmer's Model
- Debugging
- Device Setup & Ecosystems
- Matter Solutions Comparison
- All Documents
Built by Owen O'Hehir — embedded Linux, IoT, Matter & Rust consulting at electronicsconsult.com. Available for contract and consulting work.