Skip to content

ericbodden/openhab-addon-bwt-perla

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BWT Perla Binding for OpenHAB

An OpenHAB 5.x binding for BWT Perla and Rondomat Duo water softeners. It communicates with the device's local REST API to expose real-time status, water consumption statistics, and device diagnostics as OpenHAB channels.

Supported Devices

  • BWT Perla (all variants including Perla Hybrid)
  • BWT Rondomat Duo

The device must have firmware version 2.02xx or higher and the local API must be enabled.

Prerequisites

  • OpenHAB 5.1.0 or later
  • Java 21 runtime
  • The BWT device must be on the same local network as OpenHAB
  • The local API must be enabled on the device: Einstellungen > Allgemeines > Verbindung
  • You need the Login Code (sent via email upon product registration with BWT)

Installation

  1. Download the latest JAR from Releases
  2. Copy the JAR to your OpenHAB addons/ folder:
    cp org.openhab.binding.bwtperla-5.1.0-SNAPSHOT.jar /path/to/openhab/addons/
    
  3. The binding will be loaded automatically (or restart OpenHAB)

Building from Source

cd org.openhab.binding.bwtperla
mvn clean package

The JAR is produced in target/org.openhab.binding.bwtperla-5.1.0-SNAPSHOT.jar.

Configuration

Thing Configuration

Parameter Required Default Description
hostname Yes - IP address or hostname of the BWT device
port No 8080 HTTP port of the device API
password Yes - Login Code for API authentication
currentDataPollingInterval No 60 Polling interval for current data (seconds)
consumptionDataPollingInterval No 3600 Polling interval for consumption data (seconds)

Example Thing (UI)

  1. Go to Settings > Things > Add Thing
  2. Select BWT Perla Binding
  3. Select BWT Perla Water Softener
  4. Enter the hostname/IP and Login Code

Example Thing (text file)

See examples/bwtperla.things for a complete example.

Thing bwtperla:device:mysoftener "Water Softener" [ hostname="192.168.1.100", password="your-login-code" ]

Channels

The binding provides 122 channels organized in 4 channel groups.

Current Data (31 channels)

Live device status polled at currentDataPollingInterval (default: 60 seconds).

Channel Type Description
current-data#active-error-ids String Comma-separated active error IDs
current-data#show-error Number Error state: 0=OK, 1=Warning, 2=Error
current-data#out-of-service Switch Device out of service
current-data#firmware-version String Firmware version
current-data#current-flowrate Number:VolumetricFlowRate Current water flow rate (l/h)
current-data#blended-water-since-setup Number:Volume Blended water since setup (l)
current-data#water-since-setup Number:Volume Total treated water since setup (l)
current-data#water-treated-current-day Number:Volume Water treated today (l)
current-data#water-treated-current-month Number:Volume Water treated this month (l)
current-data#water-treated-current-year Number:Volume Water treated this year (l)
current-data#hardness-in-dh Number Input hardness (°dH)
current-data#hardness-in-fh Number Input hardness (°fH)
current-data#hardness-in-mmol Number Input hardness (mmol/l)
current-data#hardness-in-caco3 Number Input hardness (ppm CaCO3)
current-data#hardness-out-dh Number Output hardness (°dH)
current-data#hardness-out-fh Number Output hardness (°fH)
current-data#hardness-out-mmol Number Output hardness (mmol/l)
current-data#hardness-out-caco3 Number Output hardness (ppm CaCO3)
current-data#capacity-column1 Number Remaining capacity column 1 (ml*°dH)
current-data#capacity-column2 Number Remaining capacity column 2 (ml*°dH)
current-data#regenerativ-level Number:Dimensionless Salt fill level (%)
current-data#regenerativ-remaining-days Number:Time Days until salt is empty
current-data#regenerativ-since-setup Number:Mass Salt consumed since setup (g)
current-data#regeneration-count-column1 Number Regeneration count column 1
current-data#regeneration-count-column2 Number Regeneration count column 2
current-data#regeneration-count-since-setup Number Total regeneration count
current-data#last-regeneration-column1 DateTime Last regeneration column 1
current-data#last-regeneration-column2 DateTime Last regeneration column 2
current-data#last-service-customer DateTime Last customer maintenance
current-data#last-service-technician DateTime Last technician service
current-data#holiday-mode Number Holiday mode (-1/0=off, 1=active, >1=scheduled UNIX timestamp)
current-data#dosing-since-setup Number:Volume Dosing agent consumed since setup (ml, Hybrid only)

Daily Consumption (48 channels)

Water consumption per 30-minute slot for the current day, polled at consumptionDataPollingInterval.

Channels follow the pattern daily-data#slot-HHMM-HHMM (e.g., daily-data#slot-0600-0629). All channels are Number:Volume in liters.

Monthly Consumption (31 channels)

Water consumption per day for the current month.

Channels follow the pattern monthly-data#day-DD (e.g., monthly-data#day-15). All channels are Number:Volume in liters.

Yearly Consumption (12 channels)

Water consumption per month for the current year.

Channels follow the pattern yearly-data#month-MM (e.g., yearly-data#month-06). All channels are Number:Volume in liters.

Full Example

See the examples/ directory for complete .things and .items files covering all channels.

How It Works

The binding communicates with the BWT device over HTTP on the local network. It uses HTTP Basic Authentication with the username user and the Login Code as the password.

Two independent polling loops run at configurable intervals:

  • Current data (default: every 60 seconds) — polls /api/GetCurrentData for live device status. This drives the Thing's ONLINE/OFFLINE status.
  • Consumption data (default: every 3600 seconds) — polls /api/GetDailyData, /api/GetMonthlyData, and /api/GetYearlyData for historical water consumption. Failures here only log warnings and do not affect the Thing status.

All channels are read-only. The only supported command is REFRESH, which triggers an immediate poll of the relevant data.

Error Codes

The active-error-ids channel contains a comma-separated list of active error IDs. The show-error channel indicates the overall severity (0=OK, 1=Warning, 2=Error). See docs/error-codes.md for a full reference of all 37 device error codes.

References

License

This project is licensed under the Eclipse Public License 2.0.

About

OpenHAB addon for BWT Perla Water Softener

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages