Daikin Madoka BRC1H bluetooth custom component

I have successfully got this working with ESPHome, as described above.

Thanks to the developers :+1:.

Might I suggest a new thread, or a community guide about this installation as I only managed to find it half way down a very long thread about a different installation method, after much reading and confusion.

1 Like

Shoot …forgot all about it…still need it?
(or maybe someone else can post their yaml?:thinking:)

Could you possibly make a manual, I’m currently despairing with my RPI4, I haven’t worked with ESP Home yet :slight_smile:

I’ll have a go at this tomorrow.

1 Like

I have the following problem. I was able to pair my two Bluetooth controls but after some time the status was not available. Can I keep the connection with esp32 active?

Could you share it please ?

I’m ESP newbie and also looking for a config to start with.

Should be something like this
I took out everything related to my light switch (i hope)

substitutions:
  node_name: "daikin-ac"
  node_id: daikin_ac
  friendly_node_name: "Daikin AC"

esphome:
  name: ${node_name}
  friendly_name: Bluetooth Daikin
  min_version: 2025.2.1
  name_add_mac_suffix: False

#Note that my esp32 board (shelly-1-plus) is defined as esp32doit-devkit-v1, so you might need to change that if using some other board.
esp32:
  board: esp32doit-devkit-v1
  framework:
    type: esp-idf
    sdkconfig_options:
      CONFIG_FREERTOS_UNICORE: y
      CONFIG_ESP32_DEFAULT_CPU_FREQ_160: y
      CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ: "160"

# WiFi connection, correct these
# with values for your WiFi.
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  manual_ip:
    static_ip: 192.168.1.31
    gateway: 192.168.1.1
    subnet: 255.255.255.0

# Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: ${node_name} FB
    password: !secret wifi_password

# Enable Home Assistant API
api:
  encryption:
    key: !secret api_encryption
  services:
    - service: passkey_reply
      variables:
        passkey: int
      then:
        - logger.log: "Authenticating with passkey"
        - ble_client.passkey_reply:
            id: cmanager_ac
            passkey: !lambda return passkey;
    - service: numeric_comparison_reply
      variables:
        accept: bool
      then:
        - logger.log: "Authenticating with numeric comparison"
        - ble_client.numeric_comparison_reply:
            id: cmanager_ac
            accept: !lambda return accept;
  
# Enable over-the-air updates.
ota:
  - platform: esphome
    password: !secret ota_password

# Enable logging.
logger:

#Load external sources
external_components:
  - source: github://Petapton/esphome@madoka
    components: [ madoka, esp32_ble ]

esp32_ble:
  io_capability: keyboard_display

esp32_ble_tracker:

#Use the MAC address of your Daikin BLE here
ble_client:
  - mac_address: AC:58:1C:B6:71:88
    id: my_ac
    on_passkey_request:
      then:
        - logger.log: "Enter the passkey displayed on your BLE device"
        - logger.log: " Go to https://my.home-assistant.io/redirect/developer_services/ and select passkey_reply"
    on_passkey_notification:
      then:
        - logger.log:
            format: "Enter this passkey on your BLE device: %06d"
            args: [ passkey ]
    on_numeric_comparison_request:
      then:
        - logger.log:
            format: "Compare this passkey with the one on your BLE device: %06d"
            args: [ passkey ]
        - logger.log: " Go to https://my.home-assistant.io/redirect/developer_services/ and select numeric_comparison_reply"
    on_connect:
      then:
        - logger.log: "Connected"

climate:
  - platform: madoka
    name: "My AC"
    ble_client_id: my_ac
    update_interval: 15s

# Text sensors with general information.
text_sensor:
  - platform: version
    name: ${friendly_node_name} ESPHome Version
    id: ${node_id}_esphome_version    
  - platform: wifi_info
    ip_address:
      name: "${friendly_node_name} IP Address"
      id: ${node_id}_ip_address
      icon: mdi:ip-network
    ssid:
      name: "${node_id} Wi-Fi SSID"
    bssid:
      name: "${node_id} Wi-Fi BSSID"

# Sensors with general information.
sensor:
  - platform: ble_client
    type: rssi
    ble_client_id: my_ac
    name: "My AC"
  # Uptime sensor.
  - platform: uptime
    name: ${node_id} Uptime Sensor
  # WiFi Signal sensor.
  - platform: wifi_signal
    name: ${node_id} WiFi Signal
    update_interval: 60s

switch:
  - platform: restart
    name: ${friendly_node_name} Restart
    id: ${node_id}_restart
    icon: "mdi:restart"
  - platform: shutdown
    name: ${friendly_node_name} Shutdown
    id: ${node_id}_shutdown
  - platform: safe_mode
    name: ${friendly_node_name} Restart (Safe Mode)"
    id: ${node_id}_safe_mode
  

Not sure I can help with that, having only just got it going, I’ve not had any problems yet.

I would check you phone is not trying to connect.

I would add an uptime sensor to your ESP, to see if its rebooting

text_sensor:
  - platform: uptime
    name: Uptime

I would connect just one AC unit, see if it works then.

Can you possibly make an instruction how you have implemented this with EspHome. I have no experience here.

I made a community guide here:
https://community.home-assistant.io/t/daikin-madoka-brc1h-bluetooth-with-esphome-via-btproxy/

Please edit and correct where necessary.

2 Likes

Little update here.

Two AC units connected and stable, but I have seen a problem: although order transmission (setting mode, speed, temp) works fast and flawlessly, all the time one of my HA components Will not update and Will be kept outdated: for example, if the initial temperature was set in 25⁰, it Will show that config all the time even if I change It to another value (same applies to modes). The other unit Will be updated.

Looking at the log in ESPHome, I see that updated keep coming in, but packages and values start overflowing the buffer. I Will try every unit separately to confirm this is the issue and not a problem with the Ac unit.

Any tip or clue here?