Introduction
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) (branche madoka)
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)
Installation
- Téléchargez le dossier depuis le repo GitHub
- Copiez-le dans
custom_components/daikin_madoka/de votre config HA - Redémarrez Home Assistant
Appairage Bluetooth (obligatoire)
C’est l’étape critique. Le BRC1H nécessite un pairing sécurisé :
# 1. Déconnectez le thermostat de tout autre appareil (menu Bluetooth du Madoka → Oublier)
# 2. Sur le serveur HA (ou la machine avec l'adaptateur BT) :
bluetoothctl
agent KeyboardDisplay
remove <MAC_DU_BRC1H> # Supprimer un ancien appairage éventuel
scan on # Attendre que le BRC1H apparaisse
scan off
pair <MAC_DU_BRC1H> # Accepter le prompt + confirmer sur le thermostat
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 mesurée
Docker / VM : configuration DBUS
Si HA tourne dans Docker, DBUS doit être accessible :
# docker-compose.yml
volumes:
- /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket
privileged: true
Pour vérifier que ça fonctionne :
docker exec -ti <container_id> /bin/bash
bleak-lescan -i hci0
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 | Framework | Statut |
|---|---|---|---|
| M5Stack Atom Lite | ESP32 | ESP-IDF | |
| M5Stack Atom S3 Lite | ESP32-S3 | ESP-IDF 5.x | |
| ESP32 DevKit générique | ESP32 | ESP-IDF / Arduino |
Installation des composants
external_components:
# Depuis GitHub directement :
- source: github://dasimon135/daikin_madoka@madoka
components: [ madoka, ble_client ]
# OU en local (copiez esphome_components/ dans votre config ESPHome) :
# - source:
# type: local
# path: esphome_components
# components: [ madoka, ble_client ]
Le composant
ble_clientinclus est une version corrigée compatible ESPHome 2025.10.0+ (fix duconsume_connection_slotssupprimé).
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:
level: DEBUG
api:
encryption:
key: !secret api_key
ota:
external_components:
- source: github://dasimon135/daikin_madoka@madoka
components: [ madoka, ble_client ]
esp32_ble_tracker:
max_connections: 2
# IMPORTANT : désactiver le proxy BT classique
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)
Pour les ESP32-S3, ajoutez la configuration de sécurité BLE :
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)
- Flashez la config et ouvrez les logs ESPHome
- L’ESP32 se connecte au Madoka et lance le pairing
- Un code à 6 chiffres s’affiche dans les logs :
╔══════════════════════════════════════════════════════════╗
║ PAIRING CODE: 790440 ║
║ Vérifiez que ce code correspond à celui sur le Madoka ║
║ et CONFIRMEZ sur le thermostat! ║
╚══════════════════════════════════════════════════════════╝
- Le même code s’affiche sur l’écran du thermostat
- Confirmez sur le thermostat (bouton OK) — l’ESP32 confirme automatiquement
- Les connexions suivantes sont automatiques (bonding enregistré)
Plusieurs thermostats
Un seul ESP32 peut gérer 2 thermostats simultanément (max_connections: 2). Ajoutez un deuxième ble_client + climate :
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
Dépannage
| Problème | Solution |
|---|---|
| « device not found » dans l’intégration HA | Le thermostat est connecté à un autre appareil (app mobile). Oubliez-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, ils se connectent un par un. 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
GitHub : GitHub - dasimon135/daikin_madoka: Home Assistant custom component integration for the BRC1H thermostat (madoka) (branche madoka)
Si ça vous intéresse ou si vous avez des Madoka chez vous, n’hésitez pas à tester et à faire des retours ! ![]()