[Tuto] Contrôler un thermostat Daikin Madoka BRC1H via Bluetooth avec Home Assistant (intégration custom + ESPHome)

Note : Ce tutoriel est maintenant maintenu sur GitHub et peut évoluer entre les mises à jour du forum. Version toujours à jour : github.com/dasimon135/daikin_madoka/blob/main/docs/tuto-hacf.md

Salut à tous !

Je partage ici mon intégration custom pour contrôler les thermostats Daikin Madoka BRC1H depuis Home Assistant via Bluetooth.

Les Madoka BRC1H sont des thermostats muraux design de Daikin, contrôlables uniquement via l’app mobile Daikin (Bluetooth). Pas de Wi-Fi, pas de cloud officiel exploitable. Cette intégration permet de les piloter directement depuis HA.

Deux approches possibles :

  • Intégration custom HA — connexion Bluetooth directe depuis le serveur HA
  • Composant ESPHome — un ESP32 sert de proxy Bluetooth (placement libre)

GitHub : GitHub - dasimon135/daikin_madoka: Home Assistant custom component integration for the BRC1H thermostat (madoka) · GitHub (branche main )
Mise à jour : la branche de référence est désormais main (ancienne branche madoka retirée).

Fonctionnalités

  • Contrôle complet : mode (chaud, froid, auto, ventilation, déshumidification), température de consigne, vitesse ventilateur
  • Lecture de la température ambiante (sensor dédié)
  • Modes ventilateur : Auto, Low, Mid, High
  • Plage de température : 16°C - 32°C
  • Reconnexion automatique en cas de déconnexion BLE
  • Compatible ESP32 et ESP32-S3 (M5Stack Atom Lite / Atom S3 Lite)

Option 1 : Intégration Custom HA (Bluetooth direct)

Prérequis

  • Home Assistant avec accès Bluetooth (adaptateur USB BLE si besoin)
  • Si HA tourne en Docker : accès DBUS obligatoire (voir plus bas)
  • Le thermostat doit être à portée Bluetooth du serveur HA (~10m)

:warning: Note (mars 2026) : la librairie pymadoka utilise from bleak import discover, une fonction supprimée depuis bleak 0.20. Les versions récentes de HA embarquent une version de bleak incompatible. Si vous tombez sur cannot import name 'discover' from 'bleak', passez directement à l’option 2 (ESPHome) qui fonctionne sans problème de dépendances.

Installation

  1. Téléchargez le dossier depuis le repo GitHub
  2. Copiez-le dans custom_components/daikin_madoka/ de votre config HA
  3. Redémarrez Home Assistant

Via le terminal HA (SSH) en une ligne :

cd /config/custom_components && mkdir -p daikin_madoka && cd daikin_madoka && wget -q https://github.com/dasimon135/daikin_madoka/archive/main.zip && unzip -q main.zip && cp daikin_madoka-main/{__init__,climate,config_flow,const,sensor}.py daikin_madoka-main/{manifest,strings}.json . && cp -r daikin_madoka-main/translations . && rm -rf daikin_madoka-main main.zip

Appairage Bluetooth (obligatoire)

bluetoothctl
agent KeyboardDisplay
remove <MAC_DU_BRC1H>
scan on
scan off
pair <MAC_DU_BRC1H>

:warning: Confirmez rapidement sur le thermostat après pair, sinon le pairing expire.

Configuration dans HA

Allez dans Paramètres → Intégrations → Ajouter → Daikin Madoka et renseignez :

  • Adresse MAC Bluetooth du BRC1H
  • Nom de l’adaptateur Bluetooth (généralement hci0)

Deux entités sont créées :

  • Climate : contrôle complet (mode, température, ventilateur)
  • Sensor : température ambiante

Docker / VM : configuration DBUS

Si HA tourne dans Docker, ajoutez dans docker-compose.yml :

volumes:
  - /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket
privileged: true

Option 2 : Proxy ESP32 via ESPHome (recommandé)

C’est l’approche que j’utilise au quotidien. Un M5Stack Atom Lite (ou tout ESP32) placé à proximité du thermostat sert de proxy Bluetooth.

Avantages

  • Pas besoin que le serveur HA soit à portée Bluetooth
  • Fonctionne parfaitement en Docker/VM sans DBUS
  • Un seul ESP32 peut gérer plusieurs thermostats
  • Fiabilité excellente avec reconnexion automatique

Matériel testé

Plateforme Chip Statut
M5Stack Atom Lite ESP32 :white_check_mark:
M5Stack Atom S3 Lite ESP32-S3 :white_check_mark:
ESP32 DevKit générique ESP32 :white_check_mark:

Installation des composants

external_components:
  - source: github://dasimon135/daikin_madoka@main
    components: [ madoka, ble_client ]

Le composant ble_client inclus est une version corrigée compatible ESPHome 2025.10.0+.

Config complète (M5Stack Atom Lite)

substitutions:
  name: madoka-proxy
  friendly_name: "Madoka BLE Proxy"

esphome:
  name: ${name}
  friendly_name: ${friendly_name}

esp32:
  board: m5stack-atom
  framework:
    type: esp-idf

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

logger:

api:
  encryption:
    key: !secret api_key

ota:

external_components:
  - source: github://dasimon135/daikin_madoka@main
    components: [ madoka, ble_client ]

esp32_ble_tracker:
  id: ble_tracker      # nécessaire pour le switch de ré-appairage (voir plus bas)
  max_connections: 2

bluetooth_proxy:
  active: false

ble_client:
  - mac_address: "F0:B3:1E:87:AF:FE"   # Votre MAC Madoka
    id: madoka_salon
    on_disconnect:
      then:
        - ble_client.connect: madoka_salon

climate:
  - platform: madoka
    name: "Madoka Salon"
    ble_client_id: madoka_salon
    update_interval: 15s

Config ESP32-S3 (M5Stack Atom S3 Lite)

Ajoutez ou remplacez le bloc esp32 par :

esp32:
  board: m5stack-atoms3
  variant: esp32s3
  framework:
    type: esp-idf
    version: recommended
    sdkconfig_options:
      CONFIG_BT_BLE_50_FEATURES_SUPPORTED: y
      CONFIG_BT_BLE_42_FEATURES_SUPPORTED: y

# OBLIGATOIRE pour le pairing Madoka sur ESP32-S3
esp32_ble:
  io_capability: display_yes_no

Processus de pairing (ESP32)

  1. Flashez la config et ouvrez les logs ESPHome
  2. Un code à 6 chiffres s’affiche dans les logs — le même s’affiche sur le Madoka
  3. Confirmez sur le thermostat (bouton OK)
  4. Les connexions suivantes sont automatiques (bonding enregistré)

Plusieurs thermostats

Un seul ESP32 peut gérer 2 thermostats simultanément (max_connections: 2) :

ble_client:
  - mac_address: "F0:B3:1E:87:AF:FE"
    id: madoka_salon
    on_disconnect:
      then:
        - ble_client.connect: madoka_salon
  - mac_address: "1C:54:9E:90:E3:0E"
    id: madoka_chambre
    on_disconnect:
      then:
        - ble_client.connect: madoka_chambre

climate:
  - platform: madoka
    name: "Madoka Salon"
    ble_client_id: madoka_salon
    update_interval: 15s
  - platform: madoka
    name: "Madoka Chambre"
    ble_client_id: madoka_chambre
    update_interval: 15s

Astuce : reprendre la main avec le téléphone (ré-appairage)

Merci à @Quev1n pour avoir trouvé et partagé cette solution ! :clap:

Problème : quand on supprime les appairages sur le Madoka pour se reconnecter avec l’application téléphone, l’ESP32 tente de se reconnecter en boucle et empêche le téléphone de s’appairer à nouveau.

Solution : un switch dans Home Assistant pour couper temporairement le scan BLE.

Ajoutez ces blocs à votre config YAML (le id: ble_tracker sur esp32_ble_tracker est requis, comme dans la config ci-dessus) :

switch:
  - platform: template
    name: "Proxy Madoka Actif"
    id: proxy_enabled
    optimistic: true
    restore_mode: RESTORE_DEFAULT_ON
    turn_on_action:
      - script.execute: start_ble
    turn_off_action:
      - script.execute: stop_ble

script:
  - id: stop_ble
    then:
      - logger.log: "Arret BLE"
      - lambda: |-
          id(ble_tracker).stop_scan();

  - id: start_ble
    then:
      - logger.log: "Demarrage BLE"
      - lambda: |-
          id(ble_tracker).start_scan();

Procédure :

  1. Dans HA, passez le switch « Proxy Madoka Actif » sur OFF
  2. Appairez votre téléphone avec le Madoka et faites vos modifications
  3. Repassez le switch sur ON — l’ESP32 se reconnecte automatiquement

Dépannage

Problème Solution
cannot import name 'discover' from 'bleak' bleak trop récent, passez à l’option ESPHome
« device not found » Thermostat connecté à un autre appareil, déconnectez-le d’abord
« cannot connect » DBUS non disponible (Docker) ou adaptateur BT absent
Pairing échoue (erreur 0x52) Sur ESP32-S3 : vérifiez esp32_ble: io_capability: display_yes_no
2ème thermostat ne se connecte pas Normal, connexions séquentielles — attendez le pairing du 1er
AttributeError: consume_connection_slots Utilisez le ble_client corrigé inclus dans le repo

Crédits

  • Intégration HA originale : @mduran80 / pymadoka
  • Composant ESPHome madoka : Petapton/esphome
  • Correctifs de compatibilité ESPHome 2025.10+ et support ESP32-S3 : ce repo
  • Astuce switch de ré-appairage BLE : @Quev1n

GitHub : GitHub - dasimon135/daikin_madoka: Home Assistant custom component integration for the BRC1H thermostat (madoka) · GitHub (branche main)

Si ça vous intéresse ou si vous avez des Madoka chez vous, n’hésitez pas à tester et à faire des retours ! :blush:

Bonjour, cela m’intéresse : j’ai tenté de modifier un proxy bluetooth pour contrôler le module Daikin . c’est un Xiao w550 ethernet. mais cela plante à l’installation . :

 # Only boards produced after November 1, 2025 are supported

# ==== AUTO-SYNC START: xiao-w5500-ethernet-adapter/xiao-w5500-ethernet-adapter.yaml ====




# Only boards produced after November 1, 2025 are supported

esphome:

name: seeed-esp32-poe

friendly_name: "XIAO W5500 Ethernet Adapter V1.2"

min_version: 2025.11.0

name_add_mac_suffix: true




esp32:

variant: esp32s3

framework:

type: esp-idf

version: recommended

sdkconfig_options:

CONFIG_BT_BLE_50_FEATURES_SUPPORTED: y

CONFIG_BT_BLE_42_FEATURES_SUPPORTED: y




ethernet:

type: W5500

clk_pin: GPIO7

mosi_pin: GPIO9

miso_pin: GPIO8

cs_pin: GPIO2

interrupt_pin: GPIO10

manual_ip:

static_ip: 192.168.....   # une IP libre sur ton réseau

gateway: 192.168....

subnet: 255.255.255.0




api:

logger:




ota:

  - platform: esphome

id: ota_esphome





esp32_ble_tracker:




#bluetooth_proxy:

#  active: true

#  connection_slots: 4

# IMPORTANT : désactiver le proxy BT classique

bluetooth_proxy:

active: false




ble_client:

  - mac_address: "................"  # ← Votre MAC Madoka

id: madoka_salon

on_disconnect:

then:

        - ble_client.connect: madoka_salon




climate:

  - platform: madoka

name: "Madoka Salon"

ble_client_id: madoka_salon

update_interval: 15s






# OBLIGATOIRE pour le pairing Madoka sur ESP32-S3

esp32_ble:

max_connections: 4

io_capability: display_yes_no

button:

  - platform: safe_mode

id: button_safe_mode

name: Safe Mode Boot




  - platform: factory_reset

id: factory_reset_btn

name: Factory reset




external_components:

  - source:

type: local

path: esphome_components

components: [ madoka, ble_client ]

# ==== AUTO-SYNC END ====

le fichier logiciel :

INFO ESPHome 2026.2.1
INFO Reading configuration /config/esphome/bluetooth-proxy.yaml…
ERROR Unexpected exception while reading configuration:
Traceback (most recent call last):
File « /usr/local/bin/esphome », line 10, in
sys.exit(main())
^^^^^^
File « /esphome/esphome/main.py », line 1652, in main
return run_esphome(sys.argv)
^^^^^^^^^^^^^^^^^^^^^
File « /esphome/esphome/main.py », line 1631, in run_esphome
config = read_config(
^^^^^^^^^^^^
File « /esphome/esphome/config.py », line 1323, in read_config
res = load_config(command_line_substitutions, skip_external_update)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File « /esphome/esphome/config.py », line 1180, in load_config
return _load_config(command_line_substitutions, skip_external_update)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File « /esphome/esphome/config.py », line 1168, in _load_config
return validate_config(config, command_line_substitutions, skip_external_update)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File « /esphome/esphome/config.py », line 1059, in validate_config
target_platform = core_config.preload_core_config(config, result)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File « /esphome/esphome/core/config.py », line 358, in preload_core_config
if _is_target_platform(domain):
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File « /esphome/esphome/core/config.py », line 308, in _is_target_platform
return get_component(name, True).is_target_platform
^^^^^^^^^^^^^^^^^^^^^^^^^
File « /esphome/esphome/loader.py », line 230, in get_component
return _lookup_module(domain, exception)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File « /esphome/esphome/loader.py », line 206, in _lookup_module
module = importlib.import_module(f"esphome.components.{domain}")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File « /usr/local/lib/python3.12/importlib/init.py », line 90, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File « », line 1387, in _gcd_import
File « », line 1360, in _find_and_load
File « », line 1331, in _find_and_load_unlocked
File « », line 935, in _load_unlocked
File « », line 995, in exec_module
File « », line 1133, in get_code
File « », line 1063, in source_to_code
File « », line 488, in _call_with_frames_removed
File « /config/esphome/esphome_components/ble_client/init.py », line 163
{ ),
^
SyntaxError: closing parenthesis ‹ ) › does not match opening parenthesis ‹ { ›

Yop, je regarde ça quand je rentre de congés ce weekend

Finalement j’ai commit un fix, dis moi si c’est bon pour toi

Bonjour et Merci pour ce travail très intéressant.

Je me suis lancé dernièrement dans l’installation d’une box domotique sur mon lieu de travail pour justement contrôler notre chauffage (via le module bluetooth de Daikin). Je suis sur un Raspberry Pi 5 avec le bluetooth intégré + un disque MVme. J’ai réussi à l’appairage avec le module Daikin (option n°1 du tuto) cependant sur HA lorsque je lance l’installation du module Daikin Madoka je fait face à une erreur :

Erreur

Le flux de configuration n’a pas pu être chargé: {« message »:« Invalid handler specified »}

et le journal indique :

Détails du journal (AVERTISSEMENT)

Enregistreur: annotatedyaml.constructors
Source: util/yaml/loader.py:65
S’est produit pour la première fois: 10:51:13 (1 occurrence)
Dernier enregistrement: 10:51:13

YAML file /config/configuration.yaml contains duplicate key « climate ». Check lines 13 and 14

et

Détails du journal (AVERTISSEMENT)

Enregistreur: homeassistant.util.loop
Source: util/loop.py:137
S’est produit pour la première fois: 10:51:48 (1 occurrence)
Dernier enregistrement: 10:51:48

Detected blocking call to import_module with args (‹ custom_components.daikin_madoka.config_flow ›,) inside the event loop by integration ‹ config › at homeassistant/components/config/config_entries.py, line 195: return await super()._post_impl(request, data) (offender: /usr/src/homeassistant/homeassistant/loader.py, line 1307: return importlib.import_module(f"{self.pkg_path}.{platform_name}")), please create a bug report at "integration%3A+config For developers, please see LIEN SUPPRIM2 Traceback (most recent call last): File « », line 198, in _run_module_as_main File « », line 88, in _run_code File « /usr/src/homeassistant/homeassistant/_main_.py », line 229, in sys.exit(main()) File « /usr/src/homeassistant/homeassistant/_main_.py », line 215, in main exit_code = runner.run(runtime_conf) File « /usr/src/homeassistant/homeassistant/runner.py », line 289, in run return loop.run_until_complete(setup_and_run_hass(runtime_config)) File « /usr/local/lib/python3.13/asyncio/base_events.py », line 712, in run_until_complete self.run_forever() File « /usr/local/lib/python3.13/asyncio/base_events.py », line 683, in run_forever self._run_once() File « /usr/local/lib/python3.13/asyncio/base_events.py », line 2050, in _run_once handle._run() File « /usr/local/lib/python3.13/asyncio/events.py », line 89, in _run self._context.run(self._callback, *self._args) File « /usr/local/lib/python3.13/site-packages/aiohttp/web_protocol.py », line 510, in _handle_request resp = await request_handler(request) File « /usr/local/lib/python3.13/site-packages/aiohttp/web_app.py », line 569, in _handle return await handler(request) File « /usr/local/lib/python3.13/site-packages/aiohttp/web_middlewares.py », line 117, in impl return await handler(request) File « /usr/src/homeassistant/homeassistant/components/http/security_filter.py », line 92, in security_filter_middleware return await handler(request) File « /usr/src/homeassistant/homeassistant/components/http/forwarded.py », line 87, in forwarded_middleware return await handler(request) File « /usr/src/homeassistant/homeassistant/components/http/request_context.py », line 26, in request_context_middleware return await handler(request) File « /usr/src/homeassistant/homeassistant/components/http/ban.py », line 86, in ban_middleware return await handler(request) File « /usr/src/homeassistant/homeassistant/components/http/auth.py », line 242, in auth_middleware return await handler(request) File « /usr/src/homeassistant/homeassistant/components/http/headers.py », line 41, in headers_middleware response = await handler(request) File « /usr/src/homeassistant/homeassistant/helpers/http.py », line 73, in handle result = await handler(request, **request.match_info) File « /usr/src/homeassistant/homeassistant/components/http/decorators.py », line 83, in with_admin return await func(self, request, *args, **kwargs) File « /usr/src/homeassistant/homeassistant/components/http/data_validator.py », line 74, in wrapper return await method(view, request, data, *args, **kwargs) File « /usr/src/homeassistant/homeassistant/components/config/config_entries.py », line 188, in post return await self._post_impl(request, data) File « /usr/src/homeassistant/homeassistant/components/config/config_entries.py », line 195, in _post_impl return await super()._post_impl(request, data)”

et enfin

Détails du journal (ERREUR)

Enregistreur: homeassistant.config_entries
Source: config_entries.py:3969
S’est produit pour la première fois: 10:51:48 (2 occurrences)
Dernier enregistrement: 11:55:23

Error occurred loading flow for integration daikin_madoka: cannot import name ‹ discover › from ‹ bleak › (/usr/local/lib/python3.13/site-packages/bleak/_init_.py)

j’ai passé beaucoup de temps pour comprendre mais j’atteins la limite de mes compétences.

Avez-vous des idées ou pistes pour m’aider ?

Merci pour votre aide.

Bonjour CDRN !

Tu as en fait deux problèmes distincts :

1. La clé dupliquée dans configuration.yaml — c’est mineur, tu as simplement deux entrées climate: dans ton fichier. Il faut les fusionner en une seule.

2. La vraie erreur de blocage :

cannot import name 'discover' from 'bleak'

Malheureusement c’est un bug connu : la lib pymadoka utilise from bleak import discover, une fonction supprimée depuis bleak 0.20 (remplacée par BleakScanner.discover()). Les versions récentes de Home Assistant embarquent une version de bleak trop récente pour que pymadoka fonctionne encore — tu n’es pas le seul dans ce cas.

La solution la plus propre : passer à l’option 2 du tuto (ESPHome + proxy BLE). Un petit ESP32 (type XIAO, M5Stack Atom Lite…) posé près du Madoka fait le relais BLE vers HA via Ethernet ou WiFi, et ça fonctionne très bien. En bonus, pas de galère avec les dépendances Python ou le Bluetooth du Raspberry Pi :blush:

Bon courage !

Salut, merci pour ce travail qui a du prendre unpaquet de temps.

en revanche je n’arrive pas a installer l’intégration madoka, j’ai essayer de mettre les fichiers les uns apres les autres en utilisant file editor dans homeassistant/custom components/daikin madoka , ca ne marche pas, j’ai aussi essayé avec studio code server, je n’y arrive pas.

comment insérer le fichier au bon emplacement stp car la je sèche ?

je suis sur HA raspberry PI4 sans esphome pour le moment

Salut à tous,

Je viens tout juste de faire installer un gainable Daikin chez moi avec installation du Madoka et en faisant des recherches sur comment le connecter à mon Home Assistant je suis tombé sur topic.

J’ai effectué toutes les étapes nécessaires mais malheureusement je tombe sur l’erreur citée plus haut : Le flux de configuration n’a pas pu être chargé: {« message »:« Invalid handler specified »}.
Dommage, j’étais trop content de pouvoir y arriver en quelques minutes :grinning_face: !

Pas grave, je vais essayer de passer sur du ESP32 comme conseillé même si je n’ai jamais utilisé ce genre de choses. Merci les différentes IA qui m’aident au quotidien pour maintenir mon Home Assistant !

Merci ce super travail en tout cas ! Je m’en vais commander un ESP32.

Salut !

Merci, content que ça puisse servir :grinning_face_with_smiling_eyes:

Pour l’installation, le plus simple c’est de passer par SSH (tu peux installer l’app « Terminal & SSH » depuis les app HA si c’est pas déjà fait).

Une fois dans le terminal :

cd /config
mkdir -p custom_components/daikin_madoka
cd custom_components/daikin_madoka

Ensuite tu télécharges les fichiers directement depuis le repo :

wget https://github.com/dasimon135/daikin_madoka/archive/refs/heads/main.zip
unzip main.zip
cp daikin_madoka-main/__init__.py .
cp daikin_madoka-main/climate.py .
cp daikin_madoka-main/config_flow.py .
cp daikin_madoka-main/const.py .
cp daikin_madoka-main/sensor.py .
cp daikin_madoka-main/manifest.json .
cp daikin_madoka-main/strings.json .
cp -r daikin_madoka-main/translations .
rm -rf daikin_madoka-main main.zip

Ou en une ligne plus rapide si tu préfères :

cd /config/custom_components && mkdir -p daikin_madoka && cd daikin_madoka && wget -q https://github.com/dasimon135/daikin_madoka/archive/main.zip && unzip -q main.zip && cp daikin_madoka-main/{__init__,climate,config_flow,const,sensor}.py daikin_madoka-main/{manifest,strings}.json . && cp -r daikin_madoka-main/translations . && rm -rf daikin_madoka-main main.zip

Après ça tu redémarres HA, et l’intégration « Daikin Madoka » devrait apparaître quand tu vas dans Paramètres > Intégrations > Ajouter.

Par contre attention, avant de lancer l’intégration il faut que le thermostat soit appairé en Bluetooth avec ton RPi (c’est expliqué dans le README, section Requirements). Si t’es directement sur un RPi4 sans Docker ça devrait être assez direct avec bluetoothctl.

Hésite pas si tu bloques sur une étape !

Salut,

Content que le projet t’intéresse ! L’erreur « Invalid handler specified » c’est en général un souci d’installation du composant custom - soit le dossier n’est pas au bon endroit (config/custom_components/daikin_madoka/), soit HA n’a pas été redémarré après la copie. Si tu veux retenter, vérifie que le manifest.json est bien dans ce chemin.

Ceci dit, passer par l’ESP32 c’est franchement la meilleure option aujourd’hui. Ça te découple du Bluetooth du serveur HA, tu places l’ESP32 à portée du Madoka et c’est réglé. Un M5Stack Atom Lite ou n’importe quel ESP32 avec BLE fait l’affaire.

T’inquiète pas si t’as jamais touché à ESPHome, c’est assez simple à prendre en main une fois le premier flash fait. Le README dans esphome_components/ détaille la config. N’hésite pas si tu bloques sur une étape.

Bon courage pour l’install !

Merci !

J’ai réessayé en repartant de zéro avec les lignes de commande que tu as donné plus haut. J’ai bien redémarré Home Assistant et dans les Journaux du système j’ai l’erreur suivante :

Error occurred loading flow for integration daikin_madoka: cannot import name 'discover' from 'bleak' (/usr/local/lib/python3.14/site-packages/bleak/__init__.py)

Du coup ça confirme bien la nécessité d’un basculement sur la solution ESP32.

J’ai commandé un M5Stack AtomS3 Lite qui semblait très bien. Je dois le recevoir d’ici quelques jours. Je vais solliciter toutes les IA possibles pour m’aider à configurer tout ça et je viendrai demander de l’aide si jamais je galère :grinning_face: .

Bonne soirée !

J’ai exactement le même, minuscule mais puissant, donc à toi les joies de la climatisation :grin:

Hello,

Juste pour faire un petit suivi : j’ai bien reçu le M5Stack Atom S3 Lite et grâce à mon grand amis ChatGPT j’ai pu prendre en main ESPHome et flasher l’ESP32 et ça fonctionne !

C’est top de pouvoir le contrôler à distance grâce à mon Home Assistant !

Toujours avec l’aide de ChatGPT, je suis en train d’essayer de mettre un “switch” pour désactiver le Bluetooth lorsque je veux re-jumeler mon téléphone pour modifier certains paramètres.

Parce que si je supprime tout jumelage sur le Madoka, l’ESP32 fait une demande en boucle et je ne peux pas jumeler de nouveau mon téléphone. L’idée c’est donc de “désactiver” l’ESP32 le temps de reprendre la main avec le téléphone, faire les changement de paramètres et “réactiver” l’ESP32 pour le reconnecter sur le Madoka.

Ou alors il y aurait une autre méthode ?

Je me réponds à moi-même, ça fonctionne parfaitement avec la solution de ChatGPT → maintenant j’ai un switch que je peux utiliser pour “désactiver” temporairement l’ESP32 le temps de faire mes manipulations avec mon téléphone.

Pour ceux que ça intéresse, j’ai modifié le YAML pour :

  • Ajouter un id au esp32_ble_tracker
esp32_ble_tracker:
  id: ble_tracker
  max_connections: 2
  • Ajouter les lignes suivantes :
switch:
  - platform: template
    name: "Proxy Madoka Actif"
    id: proxy_enabled
    optimistic: true
    restore_mode: RESTORE_DEFAULT_ON
    turn_on_action:
      - script.execute: start_ble
    turn_off_action:
      - script.execute: stop_ble
      
script:
  - id: stop_ble
    then:
      - logger.log: "Arrêt BLE"
      - lambda: |-
          id(ble_tracker).stop_scan();

  - id: start_ble
    then:
      - logger.log: "Démarrage BLE"
      - lambda: |-
          id(ble_tracker).start_scan();

J’ai flashé, un nouveau switch est apparu lié à l’appareil → done !

Merci @Quev1n, j’ai intégré ton astuce directement dans le post principal avec les remerciements qui vont bien ! :clap:

Avec plaisir :wink:
Et merci à toi pour cette intégration :+1:

Merci pour tes précisions ! Dernier blocage : j’ai réussi a installer Daikin Madoka et a connecter mon module en bluetooth avec le bluetooth de mon raspberry Pi4, et maintenent j’ai la meme erreur que CDRN > message d’erreur : Le flux de configuration n’a pas pu être chargé: {« message »:« Invalid handler specified »}

Détails du journal (ERREUR)

Enregistreur: homeassistant.config_entries
Source: config_entries.py:4041
S’est produit pour la première fois: 20:24:06 (1 occurrence)
Dernier enregistrement: 20:24:06

Error occurred loading flow for integration daikin_madoka: cannot import name ‹ discover › from ‹ bleak › (/usr/local/lib/python3.14/site-packages/bleak/_init_.py)

as tu une solution pour cela tout en gardant la connection bluetooth intégrée (ce que je préfèrerais largement) ou suis-je obligé d’ajouter un ESP32 ?

merci a toi !

Bonjour,
merci pour ton retour détaillé.

Le message Invalid handler specified est en fait une conséquence d’un autre problème visible dans les logs :

cannot import name 'discover' from 'bleak'

Donc, a priori, ce n’est pas ton appairage Bluetooth avec le Raspberry Pi qui est en cause. Le souci semble plutôt venir de la librairie pymadoka, qui utilise encore un appel devenu incompatible avec les versions récentes de bleak embarquées par Home Assistant.

En clair :

  • ton Bluetooth intégré peut très bien convenir en théorie
  • tu n’es pas forcément obligé de passer par un ESP32
  • mais dans l’état actuel, l’intégration directe est bloquée par cette incompatibilité logicielle

L’option ESP32/ESPHome reste aujourd’hui la solution la plus simple et la plus fiable si tu veux quelque chose qui fonctionne rapidement.

De mon côté, je vais regarder si je peux faire un correctif dans pymadoka pour rétablir la compatibilité avec les versions récentes de bleak. Si j’arrive à faire quelque chose de propre, je le publierai.

merci 1000x pour ton aide et tes solutions, je vais attendre de voir si tu trouve une solution sinon je me tournerais vers l’ESP32.

tu est super ! bravo pour tes compétences que je suis loin d’avoir.