Récupérer la température, l'hygrométrie et le niveau de batterie de ses thermomètres Switch-Bot avec ESPHome

Hello,

Je possède six thermomètres de la marque Switch-Bot que j’ai placé un peu partout dans ma maison.

Ayant refilé mon hub mini, j’ai donc cherché comment les intégrer à Home-Assistant, et sans le cloud.

Ces thermomètres fonctionne en Bluetooth low energie.
Avec ESPHome, il est donc possible de scanner les périphériques bluetooth et de récupérer les information en fonction de leur adresse mac.

Prérequis

  • Un ESP32, la config que je propose est pour un ESP32 AZDelivery
  • Avoir installé l’application Switch-Bot, créé son compte et ajouté les thermomètres à intégrer
  • Savoir comment charger son firmware basé sur ESPHome, ce tuto ne traite que de la configuration pour ce qui est de la partie ESPHome. Dans le cas du modèle que j’utilise, s’agissant d’un ESP32 devkit le port micro-USB permet de se passer d’un convertisseur série-USB vu qu’il permet de le flasher, simplement rester appuyé quelques secondes sur le bouton boot au moment de comencer l’upload du firmware
  • Savoir intégrer ESPHome dans Home-Assistant, qui découvrira l’appareil de lui-même et vous guidera pour l’ajouter

Récupération des adresses MAC

  1. Dans l’interface principale de l’application Switch-Bot, toucher le thermomètre
  2. Aller dans Paramètres, puis Info
  3. Noter la « BLE MAC »
  4. Répéter bien sûr pour tous les thermomètres à intégrer.

Configuration ESPHome

Je ne l’ai pa inventée, mon moteur de recherche m’a miraculeusement apporté cet article qui n’est vraiment pas en français avec la configuration qui suit.

esphome:
  name: "Meters Hub"
  platform: ESP32
  # Le reste est à adapter en fonction de votre ESP32
  board: esp32dev
  platformio_options: 
    platform: espressif32
    board: az-delivery-devkit-v4
    board_build.mcu: esp32
    board_build.f_cpu: 240000000L

logger:
  baud_rate: 0   # disable logging via UART, help to avoid numerous crash with ESP_LOGD
  level: NONE

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_key
  ap:
    password: !secret ap_key

captive_portal:

# API Home Assistant
api:
  password: !secret api_pass

ota:
  password: !secret ota_pass

sensor:
  - platform: template
    name: "Hygromètre Bureau"
    id: hygrometre_bureau
    unit_of_measurement: '%'
    accuracy_decimals: 0
    device_class: humidity
    icon: "mdi:water-percent"
  - platform: template
    name: "Thermomètre Bureau"
    id: thermometre_bureau
    unit_of_measurement: '°C'
    device_class: temperature
    accuracy_decimals: 1
    icon: "mdi:thermometer"
  - platform: template
    name: "RSSI Thermomètre Bureau"
    id: rssi_thermometre_bureau
    unit_of_measurement: 'dB'
    device_class: signal_strength
    accuracy_decimals: 0
    icon: "mdi:bluetooth"
  - platform: template
    name: "Batterie Thermomètre Bureau"
    id: batterie_thermometre_bureau
    unit_of_measurement: '%'
    device_class: battery
    accuracy_decimals: 0
    icon: "mdi:battery"
esp32_ble_tracker:
  on_ble_advertise:
    - mac_address: xx:xx:xx:xx:xx:xx # L'adresse MAC du thermomètre, mettre les lettres en minuscule
      then:
        - lambda: |-
            for (auto data : x.get_service_datas()) {
                if(data.data.size() == 6) {
                  float temperature = (float)(data.data[4] & 0b01111111) + ((float)(data.data[3] & 0b00001111) / 10);
                  if (!(data.data[4] & 0b10000000)) {
                    temperature = -temperature;
                  }
                  int8_t humidity= data.data[5] & 0b01111111;
                  int8_t battery = data.data[2] & 0b01111111;
                  int8_t rssi=x.get_rssi();
                  id(hygrometre_bureau).publish_state(humidity);
                  id(thermometre_bureau).publish_state(temperature);
                  id(rssi_thermometre_bureau).publish_state(rssi);
                  id(batterie_thermometre_bureau).publish_state(battery);
                }
            }

Récapitulatif

On retrouve donc quatre entités par thermomètres :

  • L’hygrométrie
  • La température
  • La force du signal bluetooth
  • Le niveau de baterie

Il ne reste plus qu’à placer chaque entité dans la bonne pièce, sinon il faudra un ESP par thermomètre ce qui est de suite moins rentable :slight_smile:

Conclusion

Avec cette configuration, on a donc une mise à jour fréquente de ses thermomètres Switch-Bot.
Pour ma part, j’arrive à récupérer les informations des six thermomètres don trois en étage et malgré un mur épais à passer pour un des thermomètres, grâce aux performances du matériel et du BLE lui-même.

1 « J'aime »