| Key | Value |
|---|---|
| uid | ecowater |
| type | binding |
| author | PePe2KC |
| version range | [4.2.0.0;6.0.0.0) |
| download | org.openhab.binding.ecowater-4.2.0-SNAPSHOT.jar |
This binding integrates Ecowater water softeners through the Ayla Networks IoT Cloud API — the same backend used by the official Ecowater mobile app — instead of scraping the wifi.ecowater.com web dashboard. It exposes water usage, salt level, recharge status and related data as 15 read-only channels.
Supported Things
account— Bridge holding your Ecowater app email/password, signs in to Ayla.softener— one Thing per device (DSN), discovered under the Account bridge.
Discovery
Once the Account bridge is ONLINE, click “Scan” under this binding to discover softeners on the account. There is no automatic background discovery yet.
Channels
Water used today / avg daily / available, water flow, salt level %, salt type, out-of-salt days/date, recharge status/enabled, days/date since last recharge, rock removed (total/avg daily), WiFi RSSI. Model, software version and IP are exposed as Thing properties. All numeric channels use openHAB’s Units of Measurement — values are published in metric (liters, kg) by default, switch to gallons/lbs via item metadata if you prefer.
Tested
Confirmed working end-to-end on openHAB 4.2.0 and 5.2.1 against a real account/device: sign-in, discovery, live polling, correct unit display.
Not yet tested: multiple softeners on one account under load
Not implemented
No actuation (can’t trigger a manual recharge from openHAB) — read-only sensor binding for now.
Changelog
v0.1.1
- Fixed a bug where an expired/rejected Ayla token would fail with an opaque
COMMUNICATION_ERROR(“Request to X failed”) instead of transparently re-authenticating: Jetty’s defaultWWWAuthenticationProtocolHandlertreats Ayla’s 401 responses (which don’t carry aWWW-Authenticateheader) as a protocol violation and throws before our own 401-retry logic ever sees the response. Now disabled at the HTTP client level. - Failed Thing initialization is now logged with a full stack trace, and the underlying cause (timeout, DNS, connection refused, …) is included directly in the Thing status detail text — previously a failure here produced no log line at all.
- Updated the license header style to match the current openhab-addons convention.
v0.1.0
- Initial implementation (Account bridge + Softener thing, Ayla API client, discovery, channels).
- Concurrency/lifecycle fixes: thread-safe token refresh, no more orphaned polling after a bridge reconfiguration, polling moved off openHAB’s shared thread pool, corrected HTTP error handling, and a handful of smaller correctness fixes.
Resources
Download: org.openhab.binding.ecowater-4.2.0-SNAPSHOT.jar
Source: PePe2KC/openhab-addons, branch ecowater-binding
Credit to barleybobs/homeassistant-ecowater-softener and rewardone/ayla-iot-unofficial for reverse-engineering the Ayla API contract this binding relies on.
If this gets merged as an official binding down the line, I’ll unpublish this beta from the Marketplace per the community rules.
