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: