Ecowater Binding [4.2.0.0;6.0.0.0)

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 default WWWAuthenticationProtocolHandler treats Ayla’s 401 responses (which don’t carry a WWW-Authenticate header) 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.

Works great! Thanks for your work.

Hi,

Expired/rejected Ayla token bug fixed. Pls. test v0.1.1.