BWT - Best Water Tech­nology - Support

Thanks for the work @dkarv! It’s a great start!

Looks like this was fixed in the latest version. At least for me lookng at the logs it was that the older version of the API didn’t expect an empty error list and crashed due to that.

Btw it seems the new version still has some quirks too. For me after enabling the API through the VNC endpoint something on the BWT unit crashed and both the VNC and the API endpoints stopped working until I power-cycled the unit.

1 Like

Hello @dkarv,
I’ve been following this blog for some time as I own a BWT myself, I’ve now tried your integration and it works great. What I miss a little, however, is the flow meter (CurrentFlowrate_l_h). Maybe it would be possible for you to add it to the integration? Thank you again for your commitment. I have an operating manual for the new API with data that the BWT outputs. If anyone needs it, I can send it by email.

Hello,
it is no problem to add it. But by default HA samples new data every 30 seconds. I’m not sure how helpful the value is, even when updated more often - not sure how often it can be requested.
Maybe you can describe your use case. It might be a more accurate approach to take the difference between two readings of total_output.

I would have used this value as a monitoring tool to monitor excessive water consumption, e.g. when filling the pool.
Of course, an almost real-time evaluation must be possible for this.

Hi, thanks for the integration. It’s working great, can I ask for following entities. HolidayModeStartTime, LastRegenerationColumn1, LastRegenerationColumn2, RegenerationCounterColumn1, RegenerationCounterColumn2, WaterTreatedCurrentDay_l, WaterTreatedCurrentMonth_l, WaterTreatedCurrentYear_l. This is so I can regenerate the picture from the iOS App and make a similar card. I guess you got the API documentation to look up these values as well :slight_smile:

Hello,

I have just received version 2.0209 following the request to the email address [[email protected]] who were very responsive (less than 2 hours to receive the update)

Thank you @dkarv for your HA integration which works perfectly!

bwt

Hi @deepansteven ,
LastRegenerationColumn1, LastRegenerationColumn2, RegenerationCounterColumn1, RegenerationCounterColumn2 - these are fairly easy, I integrated them and will push a new version in a few days.

HolidayModeStartTime - I need to take a closer look and play around with it how to bring it to HA.

WaterTreatedCurrentDay_l, WaterTreatedCurrentMonth_l, WaterTreatedCurrentYear_l - as far as I understand the treated values are not the water consumption, but basically the water fully desalinated before it is mixed with untreated water, to reach the right output hardness. Not sure if this value is shown to the user (I don’t use the iOS app).
If you want to show the daily/monthly/yearly water consumption it could be possible with a Utility meter helper, calculating it based on the total_output value. I will give it a try.

Thanks @dkarv , but I couldn’t wait :slight_smile: and had a little Christmas holiday so made RESTful sensors. Any error message will be shown as a triangle below the circle diagram, when there is something wrong. I implemented a pop-up to show the full error messages when the alert triangle is clicked.


#################################################################
#                                                               #
#                BWT Perla REST API Call                        #
#                                                               #
#################################################################
rest:
  - authentication: basic
    username: !secret bwt_login_code
    password: !secret bwt_login_code
    scan_interval: 60
    resource: !secret bwt_GetCurrentData_url
  
    sensor:
      - name: "BWT Perla"
        icon: "mdi:water"
        value_template: >
          {% set codes =
            { "": "OK",
              "1": "Error - Motor / valve 1 cannot be controlled",
              "2": "Error - Motor / valve 2 cannot be controlled",
              "3": "Error - Blending motor cannot be controlled",
              "5": "Warning - Regenerative level is <= 20%",
              "8": "Error - Power consumption of motor / valve 1 is too high",
              "9": "Error - Power consumption of motor / valve 2 is too high",
              "10": "Error - Power consumption of motor / valve 3 is too high",
              "12": "Error - Power consumption at one of the sole- noid valves is too high",
              "13": "Error - AQA Stop sensor set volume exceeded",
              "14": "Error - AQA Stop sensor wired floor sensor has triggered",
              "15": "Warning - AQA Watch leakage water was detected",
              "16": "Warning - Line pressure has dropped",
              "21": "Error - Piston 1 / 2 is in an undefined position",
              "22": "Error - Error on internal electronics",
              "25": "Warning - Too little brine was sucked off during regeneration",
              "26": "Error - AQA Guard Wireless Sensor wireless floor sensor has triggered",
              "27": "Error - Regenerative level = 0%",
              "32": "Warning - Routine maintenance must be carried out by the customer",
              "33": "Warning - The inspection must be carried out by the customer",
              "34": "Warning - Expert maintenance must be carried out by customer service",
              "35": "Warning - The mineral substance container of the metering unit is nearly empty",
              "36": "Warning - The mineral substance container of the metering unit is empty",
              "43": "Error - Power consumption at one of the solenoid valves is too high",
              "44": "Error - Power consumption at one of the solenoid valves is too high",
              "45": "Error - Power consumption of the metering pump is too high.",
              "46": "Error - Power consumption of the motorised ball valve is too high",
              "54": "Warning - No pulses were counted on the water meter for 30 days",
              "55": "Warning - Repeatedly, no brine was sucked off during regeneration",
              "56": "Error - PCB 1.0 failed to initialise",
              "57": "Error - PCB 1.1 failed to initialise",
              "58": "Error - Motor 1 position faulty",
              "59": "Error - Motor 2 position faulty",
              "61": "Warning - The measured conductivity is too high",
              "62": "Warning - The measured conductivity is above limit 1",
              "63": "Warning - The measured conductivity is above limit 2",
              "64": "Warning - The measured conductivity is above the water limit",
              "65": "Error - The system has no brine available, which means that it is not functional",
              "66": "Warning - The connection between the system and the temperature sensor has been interrupted",
              "67": "Warning - The measured temperature is too high",
              "68": "Error - The motorised ball valve does not respond",
              "74": "Warning - Reminder to change/flush the external filter",
              "75": "Warning - An unsaturated brine results in lower capacity",
              "88": "Warning - There is a fault in the metering pump"                                                                                                                                          
            } %}
          {{ codes.get(value_json['ActiveErrorIDs'], 'unknown') }}
        json_attributes:
          - ActiveErrorIDs
          - BlendedWaterSinceSetup_l
          - CapacityColumn1_ml_dH
          - CapacityColumn2_ml_dH
          - CurrentFlowrate_l_h
          - DosingSinceSetup_ml
          - FirmwareVersion
          - HardnessIN_dH
          - HardnessOUT_dH
          - HolidayModeStartTime
          - LastRegenerationColumn1
          - LastRegenerationColumn2
          - LastServiceCustomer
          - LastServiceTechnican
          - OutOfService
          - RegenerationCountSinceSetup
          - RegenerationCounterColumn1
          - RegenerationCounterColumn2
          - RegenerativLevel
          - RegenerativRemainingDays
          - RegenerativSinceSetup_g
          - ShowError
          - WaterSinceSetup_l
          - WaterTreatedCurrentDay_l
          - WaterTreatedCurrentMonth_l
          - WaterTreatedCurrentYear_l

      - name: "BWT Perla State"
        value_template: "{{ value_json.ActiveErrorIDs}}"      
        json_attributes:
          - ActiveErrorIDs

      - name: "BWT Perla Current Flowrate"
        unit_of_measurement: L
        icon: "mdi:water"
        value_template: "{{ value_json.CurrentFlowrate_l_h}}"      
        json_attributes:
          - CurrentFlowrate_l_h

      - name: "BWT Perla Daily Consumption"
        unit_of_measurement: L
        device_class: water
        state_class: total_increasing
        icon: "mdi:faucet"
        value_template: "{{ value_json.WaterTreatedCurrentDay_l}}"
        json_attributes:
          - WaterTreatedCurrentDay_l

      - name: "BWT Perla Total Consumption"
        unit_of_measurement: L
        device_class: water
        state_class: total_increasing
        icon: "mdi:water"
        value_template: "{{ value_json.WaterSinceSetup_l}}"      
        json_attributes:
          - WaterSinceSetup_l

      - name: "BWT Perla Salt Level"
        icon: "mdi:shaker-outline"
        value_template: "{{ value_json.RegenerativLevel}}"      
        json_attributes:
          - RegenerativLevel

      - name: "BWT Perla Salt Level Days"
        icon: "mdi:calendar-clock"
        value_template: "{{ value_json.RegenerativRemainingDays}}"      
        json_attributes:
          - RegenerativRemainingDays

Hello,
can you please share the code from the lovelace card?! It looks amazing!!
Best regards
Stefan

I just added new values to the integration, as requested (last regeneration, regeneration count and holiday mode). I will look into the errors next.

Just keep in mind this is treated water, so it is not the blended (=consumed) water.
The easiest and most accurate way to get daily / monthly / … water usage is to set up a Utility meter like this: README.md
As far as I understand, the BWT internally produces water with zero hardness (treated) and blends it together with normal water to reach the required output hardness. I was not successful in calculating the blended water from the treated water, probably because we only get rounded values in the API.

Hello everyone,

I have received the complete instructions from BWT. It contains all the values that can be output.

Please edit your post to english.

Inspired by deepansteven 's screenshot above I created a visualization like this:

This dashboard need´s the integration from @dkarv and the custom-card from @AmoebeLabs - thank you both for your cool work!

You will find instruction for installation and the files in my repo: Link

2 Likes

Considering ordering a Perla and grateful to see the work on this HA integration.

There seem to be a number of variations on the Perla range. Does anybody have experience integrating the UK Silk model listed here? While I have Ethernet available, It seems you need the more expensive WiFi version to get any connectivity.

Many thanks

As far i know, try to avoid the Perla Silk non wifi, there is no connectivity whatsoever on the “Ethernet” one. I wasn’t able to get any infos on the controller card of the Perla Silk on my end, maybe you’ll be more lucky contacting BWT.

Has the firmware finally been released and is public after a beta test phase of a year?

@MelleD as of today it is still in beta phase. Please see below response from them.

Der offizielle Release ist aktuell nicht bekannt. Wir können Sie auf die Warteliste setzten, damit wir Ihnen, sobald die Firmware freigegeben ist, das Update aufspielen können.

Hey thanks for the update, meanwhile I also have an answer:

“Leider gibt es noch kein Offizielles Datum des Releases.”

Little bit confusing to postpone a release with 2 REST Apis more than over 1 year :see_no_evil: :hear_no_evil:

Thanks for sharing your solution. As I am in the process of selecting a water softener I also came up to BWT as one of the best solutions to integrate with HA I like your approach, also since you do not need to depend on cloud api’s.

There are quite some different BWT models available. May I ask on which model or series this solution applies to? Personally I am in favor of the BWT Perla One

I do own a Perla Duo, which works great for me.
Supported devices, according to the api documentation: BWT Perla und Rondomat Duo

The documentation mentions Duplex and Simplex devices, so probably the Perla One is supported. But nobody confirmed or denied it to me so far.