[APP][Pro] BDR Thermea climate

BDR Thermea

Homey App for thermostats from BDR Thermea group. BDR Thermea is owner of the brands Remeha, Baxi, De Dietrich, Chappee, Baymak and Brötje Heizung

This app uses an unofficial API and needs an internet connection to function, if there is no internet then you can only control your devices with the mobile app. You have to pair your devices first with the thermostat.

Supported devices

  • Baxi Usense
  • Remeha Etwist


  • Brötje IDA

Setup device

  1. Press Add device
  2. Choose BDR app
  3. Choose the right thermostat
  4. On the pairing page fill in the e-mail and password
  5. Open the menu on your thermostat
  6. Got to settings menu
  7. Go to pair new device or service
  8. fill in the pairing code on the pairing page
  9. Press the pair button
1 Like

Hi @Jurgen_Heine! Thank you for the app. Seems to work great! :star:

Can I make one suggestion?

I’ve made an alternative device icon, which fits better in the style of official Homey device icons. Maybe you can incorporate it into the app.


1 Like

@basvanderploeg, thank you. The new icon will be in next release and is currently in test release.
BDR Thermea climate | Homey

Awesome! I saw you also added a different kind of thermostat, so I’ve made an icon for that one too:


Thanks again, new version with updated Icon for De Dietrich now put to test :slight_smile:


1 Like

I tried to install a Remeha Etwist but it fails saying that the outside temperature could not be read/imported. That could be right as my thermostat does not have an outside temperature sensor.

@Roland, can you send me a diagnostic report. Please fill your username in report and post de id in this threat. There is a check if outside temp is pressent, and capablity should only be added when pressent.

The ID of the diagnostic report is B12046
Etwist error

I did not recieve a diagnostic report, I think you send a Homey general diagnostic report( that one goes to Athom). I need an app diagnostic report: more=> apps => BDR thermea climate=>gear( right top) => create diagnostic report.

I indeed send the wrong report.
I made a new report with code: f2019ae2-4086-4c5b-9650-23331eb5acf8

I have looked at you log, but strange enough the url for requesting status info is missing. This status info is called for checking if there is outside temperature pressent. But without status there is no info at all.

@Roland, I was searching and found folowing. eTwist app wordt Remeha Home - The Feeling of Warmth - Remeha
Do you have this instead of e-twist app?

I still have the eTwist app. I did receive an email from Remeha that the eTwist device will get an update and from then on I should replace the eTwist app on my phone by the Remeha Home app.
The email states that this will happen before the end of the year but they can’t tell me when exactly.

I found your code and did some checking with Postman. The statusUri endpoint is calculated differently for my eTwist from Remeha.
var api_endpoint = this.capabilities.centralHeatingZones?.statusUri
should be
var api_endpoint = this.capabilities.centralHeatingZones?.uri + “/status”

Same here. Model identifier for the Remeha eTwist is GTW-16.

Here is the full capabilities object. There are more discrepancies with the currrent code based on the Baxi.

    "centralHeatingZones": [{
        "name": "CIRCA ",
        "uri": "/central-heating-zone/1E1000000000010",
        "coolingSupported": false,
        "timeProgramsUri": "/central-heating-zone/1E1000000000010/time-programs",
        "timeProgramActivitiesUri": "/central-heating-zone/1E1000000000010/time-program-activities",
        "putSetpointScheduleUri": "/central-heating-zone/1E1000000000010/setpoint/schedule",
        "putSetpointManualUri": "/central-heating-zone/1E1000000000010/setpoint/manual",
        "putSetpointAntiFrostUri": "/central-heating-zone/1E1000000000010/setpoint/anti-frost",
        "putSetpointTemporaryOverrideUri": "/central-heating-zone/1E1000000000010/setpoint/temporary-override",
        "putSetpointHolidayUri": "/central-heating-zone/1E1000000000010/setpoint/holiday",
        "paramsMaxPreheatUri": "/central-heating-zone/1E1000000000010/parameters/max-pre-heat",
        "paramsHeatingCurveUri": "/central-heating-zone/1E1000000000010/parameters/heating-curve",
        "paramsHeatingCoolingSpeedUri": "/central-heating-zone/1E1000000000010/parameters/heating-cooling-speed",
        "paramsAntiFrostHolidayUri": "/central-heating-zone/1E1000000000010/parameters/anti-frost-and-holiday-setpoint"
    "domesticHotWaterZones": [{
        "name": "DHW Primary",
        "uri": "/domestic-hot-water-zone/1E1000000000011",
        "timeProgramsUri": "/domestic-hot-water-zone/1E1000000000011/time-programs",
        "putSetpointScheduleUri": "/domestic-hot-water-zone/1E1000000000011/setpoint/schedule",
        "putSetpointReducedUri": "/domestic-hot-water-zone/1E1000000000011/setpoint/anti-frost",
        "putSetpointComfortUri": "/domestic-hot-water-zone/1E1000000000011/setpoint/comfort",
        "putSetpointTemporaryOverrideUri": "/domestic-hot-water-zone/1E1000000000011/setpoint/temporary-override",
        "putSetpointHolidayUri": "/domestic-hot-water-zone/1E1000000000011/setpoint/holiday",
        "parametersUri": "/domestic-hot-water-zone/1E1000000000011/parameters"
    "producers": [{
        "name": "GTW-16",
        "statusUri": "/producers/1E1000000000",
        "powerSettingsUri": "/producers/1E1000000000/parameters/power-settings"
    "system": {
        "waterPressureUri": "/system/water-pressure",
        "gatewayUri": "/system/gateway",
        "historyUri": "/system/errors/history",
        "locationUri": "/system/location",
        "connectionUri": "/system/gateway/connection",
        "errorStatusUri": "/system/error-status",
        "applianceTimeUri": "/system/appliance-time",
        "flowTemperatureUri": "/system/flow-temperature",
        "deviceInformationUri": "/system/device-information"

@Roland and @Phuturist thanks for the info. The data is little bit different then where my code based on (Home assistant) and my own data. I will try to change it to use some of the endpoints even when they are not listed.

There is new version on test. In this version getting the status will be done alway and pairing doesn’t need status info anymore.

@Phuturist and @Roland, can you test if you can add device now and if you are getting temperature info.
The folowing urls where missing according my own log:
centralHeatingZones.statusUri - required (measured temperature, setpoint, mode and status)
centralHeatingZones.putFirePlaceModeUri - not used
centralHeatingZones.paramsControlStrategyUri - not used
domesticHotWaterZones.getSetpointUri - not used
producers.parametersUri - not used
producers.energyConsumptionUri - optional (used power)
system.outsideTemperatureConditionsUri - optional (outside temperature)
system.operatingModeUri - optional (operating mode: off, cool, heat, auto)

The optional urls are used to unlock those capabilties because not every device has them.

1 Like

Installing the eTwist works with version 0.0.5. Set temp, room temp, water temp look ok. I will monitor over time and give and update later this week.
Thx for the update.

1 Like

@Roland, thanks for checking. Fine it’s working now, I don’t expect it stops working anymore when it is working first time.