cloggo
https://github.com/wseaton/cloggo
Rust-Powered IoT Device for Water Filter Clog Detection — W5500-EVB-Pico
Background: How Do You Monitor What You Can't See?
Water filters installed in hard-to-reach spaces — like crawlspaces or underground plumbing — give no indication of their condition until you physically inspect them. Missing a replacement window leads to pressure drops and water quality issues, while replacing filters too early is simply wasteful. For homes on private wells, where sediment levels are high and filter clogging is unpredictable, this problem is even more acute.
cloggo is an open-source IoT project built to automate this monitoring. The core setup is straightforward:
- Two pressure transducers mounted on either side of the filter stack (inlet and outlet)
- Real-time differential pressure measurement to detect clogging
- Entire system runs on the W5500-EVB-Pico board, implemented in Embedded Rust
The Role of W5500: Why Wired Ethernet Over WiFi
The decision to use WIZnet's W5500-EVB-Pico — which integrates the W5500 Ethernet controller — was driven by clear technical reasoning.
| Reason | Details |
|---|---|
| Connection Stability | Crawlspaces have poor RF conditions. Wired Ethernet eliminates WiFi reliability concerns in enclosed environments. |
| PoE Support | A single LAN cable handles both data and power via a PoE splitter — no separate power outlet required. |
| Software Ecosystem | embassy-rs, the async embedded Rust framework used in this project, has official support for the W5500 NIC. |
| Integrated Design | RP2040 MCU and W5500 on a single board — wired networking out of the box, no additional Ethernet module needed. |
The W5500 features a hardwired TCP/IP stack over SPI, offloading network processing from the MCU entirely.
How It Works: From Pressure Sensor to Home Assistant
The data pipeline runs through five stages:
- ① Analog Sensor Reading: Pressure transducers are fitted to the inlet and outlet of the filter housing. The analog voltage output is sampled via the RP2040's ADC.
- ② Linear Regression Calibration: ADC readings are converted to real pressure values (PSI) using a linear regression model. Reference data points are collected using a physical pressure gauge, and the resulting slope and intercept are stored in flash memory — persisting across reboots.
- ③ Circular Buffer Data Management: Calibration data points are held in a circular buffer structure, keeping memory usage bounded and efficient.
- ④ Lightweight REST API Web Server: A
picoserve-based HTTP server runs directly on the board, exposing pressure readings, system status, and regression coefficients over the local network. - ⑤ Home Assistant Integration: Data is polled every 20 seconds via the REST integration. This enables real-time pressure dashboards, filter replacement alerts, and pressure-based automations (e.g., preventing the washing machine from running while sprinklers are active).
The entire firmware is built on the embassy-rs async framework, allowing the web server, sensor acquisition, and flash I/O to run concurrently — without an RTOS.
Potential Applications: Beyond the Home
The architecture of cloggo translates well to a range of broader use cases.
| Application Area | Scenario |
|---|---|
| Industrial Filter Monitoring | Water treatment plants, factory cooling systems, semiconductor-grade pure water lines — anywhere filter health is operationally critical |
| Multi-Node Expansion | Multiple W5500-EVB-Pico units deployed across filter stages, each acting as an independent monitoring node on the same network |
| MQTT Integration | MQTT broker support is listed as a planned feature, enabling integration with industrial IoT gateways and cloud platforms |
| Wiring-Constrained Deployments | PoE-based single-cable installations suit agricultural irrigation, building automation, and remote facility monitoring |
- Minimal BOM (board, pressure transducers, a few plumbing fittings) keeps unit cost low
- Open-source firmware lowers the barrier for ODM/OEM productization or custom hardware ports
Tech Stack Summary
| Category | Details |
|---|---|
| Hardware | W5500-EVB-Pico (RP2040 + W5500) |
| WIZnet Component | W5500 Hardwired TCP/IP Ethernet Controller |
| Firmware Language | Rust (Embedded Rust, no_std) |
| Async Framework | embassy-rs |
| Web Server Library | picoserve |
| Sensor Interface | ADC (Analog Pressure Transducer) |
| Data Processing | Linear Regression, Circular Buffer |
| External Integration | Home Assistant (REST API, IoT Polling) |
| Power | PoE Splitter Support |
| Application Domain | Smart Home, Facility Automation, Industrial Filter Management |
Project Link: https://github.com/wseaton/cloggo
Board: W5500-EVB-Pico Product Page
FAQ
Q. Why use the W5500-EVB-Pico instead of a WiFi-enabled board like the Pico W?
A. The target deployment is a crawlspace — an enclosed area where WiFi signals are often weak or unreliable. Wired Ethernet provides a stable connection regardless of RF conditions. PoE support also means a single LAN cable handles both power and data, a significant advantage in spaces with limited outlets.
Q. How is the pressure sensor calibrated?
A. Calibration is done manually at setup. You collect multiple data point pairs — raw ADC readings alongside actual pressure values from a physical gauge — and the firmware computes a linear regression (slope and intercept) from those points. The resulting coefficients are stored in flash memory and persist across reboots.
Q. Can a single W5500-EVB-Pico monitor multiple filters simultaneously?
A. The current implementation targets one board per monitoring point. Scaling to multiple filters is possible either by deploying additional boards on the same network, or — as noted in the project's TODO list — by exploring multi-sensor management on a single Pico.
Q. Is this project suitable for industrial or commercial deployment?
A. The current codebase is a functional open-source prototype. The architecture — wired Ethernet, REST API, flash-persistent calibration, async firmware — provides a solid foundation for industrial adaptation. Productization would additionally require enclosure design, hardened power input, and potentially MQTT or Modbus integration depending on the target environment.

