Daikin Madoka BRC1H bluetooth with ESPHome vía BTProxy

Seems to follow the same naming scheme for the ESPhome components. Hopefully a step towards merging into the main branch. But don’t qoute me on that. @Petapton can you shed some light on this, please?

Yes, sorry for that. I had to change it, but forgot to send updates :slight_smile:

Right! The maintainers of ESPHome requested so, for it to be merged. Hopefully it will be merged soon

2 Likes

I was able to get this working but the card is just reporting off. Any ideas what I might need to do? This is a great project as the Daikin products are great but their user interfaces are horrible.

What do you see when you visit the ESP32 page from ESPHome?

Hi @Petapon

It seems that ESPHome 2025.12.0 fails compiling daikin_madoka.

Compiling .pioenvs/esphome-mamad/src/esphome/components/esp32_ble_client/ble_client_base.cpp.o
In file included from src/esphome/core/component.h:9,
                 from src/esphome/components/daikin_madoka/daikin_madoka.h:7,
                 from src/esphome/components/daikin_madoka/daikin_madoka.cpp:1:
src/esphome/components/daikin_madoka/daikin_madoka.cpp: In member function 'void esphome::daikin_madoka::DaikinMadoka::query_(uint16_t, std::vector<unsigned char>, int)':
src/esphome/components/daikin_madoka/daikin_madoka.cpp:291:112: error: request for member 'c_str' in '((esphome::daikin_madoka::DaikinMadoka*)this)->esphome::daikin_madoka::DaikinMadoka::esphome::ble_client::BLEClientNode.esphome::ble_client::BLEClientNode::parent_->esphome::ble_client::BLEClient::esphome::esp32_ble_client::BLEClientBase.esphome::esp32_ble_client::BLEClientBase::address_str()', which is of non-class type 'const char*'
  291 |       ESP_LOGD(TAG, "[%s] esp_ble_gattc_write_char failed (%d of %d), status=%d", this->parent_->address_str().c_str(),
      |                                                                                                                ^~~~~
src/esphome/core/log.h:99:100: note: in definition of macro 'esph_log_d'
   99 |   ::esphome::esp_log_printf_(ESPHOME_LOG_LEVEL_DEBUG, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
      |                                                                                                    ^~~~~~~~~~~
src/esphome/components/daikin_madoka/daikin_madoka.cpp:291:7: note: in expansion of macro 'ESP_LOGD'
  291 |       ESP_LOGD(TAG, "[%s] esp_ble_gattc_write_char failed (%d of %d), status=%d", this->parent_->address_str().c_str(),
      |       ^~~~~~~~
src/esphome/components/daikin_madoka/daikin_madoka.cpp:295:100: error: request for member 'c_str' in '((esphome::daikin_madoka::DaikinMadoka*)this)->esphome::daikin_madoka::DaikinMadoka::esphome::ble_client::BLEClientNode.esphome::ble_client::BLEClientNode::parent_->esphome::ble_client::BLEClient::esphome::esp32_ble_client::BLEClientBase.esphome::esp32_ble_client::BLEClientBase::address_str()', which is of non-class type 'const char*'
  295 |       ESP_LOGE(TAG, "[%s] Command could not be sent, last status=%d", this->parent_->address_str().c_str(), status);
      |                                                                                                    ^~~~~
src/esphome/core/log.h:130:100: note: in definition of macro 'esph_log_e'
  130 |   ::esphome::esp_log_printf_(ESPHOME_LOG_LEVEL_ERROR, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
      |                                                                                                    ^~~~~~~~~~~
src/esphome/components/daikin_madoka/daikin_madoka.cpp:295:7: note: in expansion of macro 'ESP_LOGE'
  295 |       ESP_LOGE(TAG, "[%s] Command could not be sent, last status=%d", this->parent_->address_str().c_str(), status);
      |       ^~~~~~~~
Compiling .pioenvs/esphome-mamad/src/esphome/components/esp32_ble_client/ble_service.cpp.o
*** [.pioenvs/esphome-mamad/src/esphome/components/daikin_madoka/daikin_madoka.cpp.o] Error 1
Compiling .pioenvs/esphome-mamad/src/esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp.o

Thanks.

Until merged, you might want to change the yaml into this:

#Import custom Daikin code (until PR has been merged)
external_components:
  - source: github://aceindy/esphome@aceindy-patch-1
    components: [ daikin_madoka ]

I have the same issue of course :frowning:

I had a very old build of this installed. I followed this guide, reflashed an ESP device and re-paired with my Madoka.

I can set mode and fan, but any attempt to set the speed doesn’t update the controller.

I see this on the device

 hvac_modes: off, heat_cool, cool, heat, fan_only, dry
 min_temp: 16
 max_temp: 32
 target_temp_step: 1
 fan_modes: auto, low, medium, high
 current_temperature: 26
 temperature: 22
 target_temp_high: 22
 target_temp_low: 22

I adjust the temperature to 20C, but shortly after the state updates back to the temperature on the unit (22). Has anyone experienced this?


10:33:08.674][D][esp32_ble_client:197]: [1] [62:00:A1:34:35:84] ESP_GATTC_NOTIFY_EVT
[10:33:12.366][D][climate:048]: 'Climate' - Setting
[10:33:12.366][D][climate:083]:   Target Temperature High: 20.00
[10:33:12.456][D][daikin_madoka:201]: Got update request...
[10:33:12.662][D][esp32_ble_client:197]: [0] [00:CC:3F:31:40:CD] ESP_GATTC_WRITE_CHAR_EVT
[10:33:12.662][D][esp32_ble_client:197]: [0] [00:CC:3F:31:40:CD] ESP_GATTC_WRITE_CHAR_EVT
[10:33:12.662][D][esp32_ble_client:197]: [0] [00:CC:3F:31:40:CD] ESP_GATTC_WRITE_CHAR_EVT
[10:33:12.662][D][esp32_ble_client:197]: [0] [00:CC:3F:31:40:CD] ESP_GATTC_NOTIFY_EVT
[10:33:12.662][D][esp32_ble_client:197]: [0] [00:CC:3F:31:40:CD] ESP_GATTC_WRITE_CHAR_EVT
[10:33:12.662][D][esp32_ble_client:197]: [0] [00:CC:3F:31:40:CD] ESP_GATTC_WRITE_CHAR_EVT
[10:33:12.662][D][esp32_ble_client:197]: [0] [00:CC:3F:31:40:CD] ESP_GATTC_NOTIFY_EVT
[10:33:12.662][D][esp32_ble_client:197]: [0] [00:CC:3F:31:40:CD] ESP_GATTC_NOTIFY_EVT
[10:33:12.758][D][esp32_ble_client:197]: [0] [00:CC:3F:31:40:CD] ESP_GATTC_NOTIFY_EVT
[10:33:12.758][D][esp32_ble_client:197]: [0] [00:CC:3F:31:40:CD] ESP_GATTC_NOTIFY_EVT
[10:33:12.758][D][climate:426]: 'Climate' - Sending state:
[10:33:12.758][D][climate:429]:   Mode: COOL
[10:33:12.758][D][climate:434]:   Fan Mode: AUTO
[10:33:12.758][D][climate:449]:   Current Temperature: 26.00°C
[10:33:12.758][D][climate:453]:   Target Temperature: Low: 22.00°C High: 22.00°C
[10:33:12.758][D][esp32_ble_client:197]: [0] [00:CC:3F:31:40:CD] ESP_GATTC_NOTIFY_EVT
[10:33:12.758][D][esp32_ble_client:197]: [0] [00:CC:3F:31:40:CD] ESP_GATTC_NOTIFY_EVT
[10:33:12.758][D][esp32_ble_client:197]: [0] [00:CC:3F:31:40:CD] ESP_GATTC_NOTIFY_EVT
[10:33:12.758][D][climate:426]: 'Climate' - Sending state:
[10:33:12.758][D][climate:429]:   Mode: COOL
[10:33:12.758][D][climate:434]:   Fan Mode: AUTO
[10:33:12.758][D][climate:449]:   Current Temperature: 26.00°C
[10:33:12.758][D][climate:453]:   Target Temperature: Low: 22.00°C High: 22.00°C
[10:33:12.765][D][climate:426]: 'Climate' - Sending state:
[10:33:12.772][D][climate:429]:   Mode: COOL
[10:33:15.621][D][daikin_madoka:201]: Got update request...
[10:33:15.840][D][esp32_ble_client:197]: [0] [00:CC:3F:31:40:CD] ESP_GATTC_WRITE_CHAR_EVT
[10:33:15.840][D][esp32_ble_client:197]: [0] [00:CC:3F:31:40:CD] ESP_GATTC_WRITE_CHAR_EVT
[10:33:15.840][D][esp32_ble_client:197]: [0] [00:CC:3F:31:40:CD] ESP_GATTC_NOTIFY_EVT
[10:33:15.840][D][esp32_ble_client:197]: [0] [00:CC:3F:31:40:CD] ESP_GATTC_WRITE_CHAR_EVT
[10:33:15.840][D][esp32_ble_client:197]: [0] [00:CC:3F:31:40:CD] ESP_GATTC_WRITE_CHAR_EVT
[10:33:15.840][D][esp32_ble_client:197]: [0] [00:CC:3F:31:40:CD] ESP_GATTC_WRITE_CHAR_EVT
[10:33:15.840][D][esp32_ble_client:197]: [0] [00:CC:3F:31:40:CD] ESP_GATTC_NOTIFY_EVT
[10:33:15.840][D][esp32_ble_client:197]: [0] [00:CC:3F:31:40:CD] ESP_GATTC_NOTIFY_EVT
[10:33:15.845][D][esp32_ble_client:197]: [0] [00:CC:3F:31:40:CD] ESP_GATTC_N