Un SCD40 ou SCD41 connecté à un ESP32 avec ESPHome permet de surveiller le CO2, la température et l'humidité de n'importe quelle pièce et d'envoyer des alertes dans Home Assistant en moins d'une heure. Le capteur se câble en I2C sur quatre fils, ESPHome génère automatiquement les entités, et Home Assistant reçoit les données sans cloud ni abonnement. Pour ceux qui ne souhaitent pas souder, l'Apollo AIR-1 intègre un SCD40 dans un boîtier clé en main disponible sur Domadoo.

Pourquoi surveiller le CO2 intérieur ?

Le CO2 s'accumule rapidement dans les pièces fermées : bureau de télétravail, chambre avec fenêtre close, salle de réunion. Au-delà de 1000 ppm, la concentration dégrade la vigilance et la qualité du sommeil. À 2000 ppm, maux de tête et fatigue apparaissent. La surveillance en temps réel permet d'automatiser la ventilation avant d'atteindre ces seuils — sans intervention manuelle.

Quel est le seuil de CO2 dangereux en intérieur ?

L'air extérieur contient environ 420 ppm de CO2 en 2026. Les recommandations de l'ANSES fixent le seuil d'alerte à 1000 ppm en intérieur. Au-delà de 1500 ppm, la qualité de l'air est jugée mauvaise et nécessite une action corrective immédiate. Au-delà de 5000 ppm, les risques pour la santé deviennent sérieux et l'exposition prolongée est à éviter.

Niveau CO2Qualité de l'airAction recommandée
< 800 ppmExcellentAucune
800 – 1000 ppmCorrectSurveillance passive
1000 – 1500 ppmDégradéAérer la pièce
1500 – 2000 ppmMauvaisVentilation obligatoire
> 2000 ppmTrès mauvaisAction immédiate

SCD40 ou SCD41 : lequel choisir ?

Le SCD40 et le SCD41 sont deux capteurs Sensirion NDIR photoacoustiques qui mesurent le CO2, la température et l'humidité via I2C. La différence principale est la plage de mesure : 400-2000 ppm pour le SCD40 contre 400-5000 ppm pour le SCD41. Les deux sont nativement supportés par la plateforme scd4x d'ESPHome avec le même YAML.

Quelle est la différence entre SCD40 et SCD41 ?

Le SCD40 mesure de 400 à 2000 ppm avec une précision de ±(50 ppm + 5 % de la valeur). Le SCD41 étend la plage à 5000 ppm et ajoute le mode single_shot pour les installations sur batterie — une mesure toutes les 5 minutes avec réveil du microcontrôleur. Les deux capteurs utilisent le même protocole I2C, la même tension d'alimentation (3,3 V) et le même code ESPHome.

Pour quel usage choisir le SCD41 ?

Le SCD41 est préférable pour les installations sur batterie (mode low power via single_shot) ou dans des espaces où le CO2 peut dépasser 2000 ppm (garage, cave, serre). Pour un bureau ou une chambre alimenté en continu, le SCD40 suffit largement et coûte généralement 3 à 5 euros de moins sur les mêmes revendeurs.

CritèreSCD40SCD41
Plage CO2400 – 2000 ppm400 – 5000 ppm
Précision±(50 ppm + 5 %)±(40 ppm + 5 %)
Mode single_shotNonOui
Installation batterieNon recommandéOui
Prix indicatif breakout~15 €~18 €

Matériel nécessaire et câblage I2C

Le montage de base requiert un ESP32 ou ESP8266, une carte breakout SCD40 ou SCD41 et quatre fils Dupont. Le SCD4x fonctionne en 3,3 V natif — pas de régulateur de tension nécessaire avec un ESP32. Le bus I2C permet de brancher d'autres capteurs sur les mêmes broches SDA/SCL si besoin (BME280, SHT40, etc.).

Câblage sur un ESP32

Les broches I2C par défaut sur ESP32 sont GPIO21 (SDA) et GPIO22 (SCL). Sur un D1 Mini (ESP8266), ce sont D2 (SDA) et D1 (SCL). Le câblage est identique pour le SCD40 et le SCD41.

Broche SCD4xBroche ESP32Broche D1 Mini
VCC3,3 V3,3 V
GNDGNDGND
SDAGPIO21D2
SCLGPIO22D1

Le SCD4x est disponible en carte breakout sur plusieurs revendeurs. Les versions Seeed Studio et DFRobot intègrent des résistances de pull-up I2C et une protection contre les inversions de polarité, ce qui simplifie le montage pour les débutants.

Option sans soudure : l'Apollo AIR-1

Pour ceux qui préfèrent une solution prête à l'emploi, l'Apollo AIR-1 intègre un SCD40 dans un boîtier compact (61 × 61 × 30 mm) alimenté en USB-C. Il tourne nativement sur ESPHome (firmware préinstallé), s'adopte en un clic dans Home Assistant et inclut également un capteur multiparamètres SEN55 (PM1-PM10, COV, NOx) et un capteur de pression DPS310. Aucune soudure, aucun boîtier à imprimer.

Meilleur choix
Apollo AIR-1 + CO2

Apollo AIR-1 + CO2

SCD40 CO2 · SEN55 (PM + COV + NOx) · ESPHome préinstallé · USB-C

Voir sur Domadoo Stock FR · Retours 30 jours

Configuration ESPHome : YAML complet SCD4x

ESPHome supporte les SCD40 et SCD41 via la plateforme scd4x depuis la version 2021.10. La configuration déclare le bus I2C, puis les entités CO2, température et humidité. La calibration automatique (ASC) est activée par défaut — comportement correct pour la majorité des installations avec ventilation vers l'extérieur.

La configuration de base

esphome:
  name: capteur-co2-salon
  friendly_name: Capteur CO2 Salon

esp32:
  board: esp32dev
  framework:
    type: arduino

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

api:
  encryption:
    key: !secret api_encryption_key

ota:
  - platform: esphome
    password: !secret ota_password

logger:

i2c:
  sda: GPIO21
  scl: GPIO22
  scan: true

sensor:
  - platform: scd4x
    co2:
      name: "CO2"
      id: co2_sensor
    temperature:
      name: "Température"
      accuracy_decimals: 1
    humidity:
      name: "Humidité"
      accuracy_decimals: 0
    update_interval: 60s
    automatic_self_calibration: true

Flashez ce YAML via le tableau de bord ESPHome (USB au premier flash, OTA ensuite). Une fois l'ESP en ligne, Home Assistant le découvre automatiquement via mDNS — acceptez l'intégration dans Paramètres > Appareils & Services.

Note sur update_interval : 60 secondes est un bon compromis entre réactivité et consommation. Les valeurs inférieures à 5 secondes ne sont pas recommandées par Sensirion — le capteur a besoin d'un minimum de temps pour produire une mesure stable.

Calibration : automatique vs forcée

La calibration automatique (automatic_self_calibration: true) suppose que le capteur est régulièrement exposé à de l'air frais. L'algorithme Sensirion prend pour référence la valeur la plus basse mesurée sur une période glissante de 7 jours et la recale à 400 ppm. Si votre installation est dans une pièce sans ventilation régulière vers l'extérieur (cave, local technique, serre), désactivez l'ASC et utilisez la calibration forcée. À noter : une exposition à du CO2 inférieur à 400 ppm (air de haute montagne, certains espaces extérieurs ruraux) peut également perturber l'ASC — même recommandation dans ce cas.

Comment calibrer un capteur CO2 ESPHome ?

Pour une calibration forcée : ouvrez les fenêtres pendant 20 minutes, puis exposez le capteur à l'air extérieur (420 ppm environ). Ajoutez un bouton ESPHome qui déclenche le service perform_forced_calibration avec la valeur cible. L'opération prend moins de 30 secondes et corrige immédiatement la dérive du capteur sans redémarrage de l'ESP.

button:
  - platform: template
    name: "Calibration forcée (420 ppm extérieur)"
    on_press:
      then:
        - scd4x.perform_forced_calibration:
            value: 420

Ce bouton apparaît dans Home Assistant comme une entité Button. Un appui simple depuis l'interface ou une automation déclenche la calibration forcée à 420 ppm.

Intégration dans Home Assistant : entités et dashboard

Après adoption du device, Home Assistant crée trois entités : sensor.capteur_co2_salon_co2, sensor.capteur_co2_salon_temperature et sensor.capteur_co2_salon_humidity. Elles sont immédiatement disponibles pour les automations, les dashboards et l'historique long terme via le recorder.

Pour visualiser le niveau CO2 en temps réel, la carte Gauge de Lovelace est idéale :

type: gauge
entity: sensor.capteur_co2_salon_co2
name: CO2 Salon
unit: ppm
min: 400
max: 2000
needle: true
segments:
  - from: 400
    color: "#22D3A5"
  - from: 800
    color: "#F59E0B"
  - from: 1000
    color: "#EF4444"

Pour l'historique, une carte History Graph affiche l'évolution sur 24h ou 7 jours — pratique pour identifier les pics nocturnes en chambre ou les montées en bureau fermé. Selon les retours du forum HACF, les pics les plus fréquents sont constatés la nuit (chambre avec deux personnes, fenêtre fermée) et entre 14h et 17h en période de travail intense en bureau.

Automations et alertes CO2 dans Home Assistant

Les deux automations les plus utiles sont la notification mobile au franchissement du seuil de 1000 ppm et le déclenchement automatique d'une VMC connectée. L'utilisation de deux seuils distincts (1000 ppm pour l'activation, 800 ppm pour la désactivation) évite les cycles marche/arrêt répétés — technique dite d'hystérésis.

Comment créer une alerte CO2 dans Home Assistant ?

Une automation Home Assistant se déclenche quand l'entité CO2 dépasse un seuil défini et envoie une notification via le service notify.mobile_app. L'ajout d'une condition for: "00:05:00" évite les faux positifs liés aux pics transitoires (four chaud, cuisson). La notification inclut la valeur actuelle via un template Jinja2.

automation:
  - alias: "Alerte CO2 > 1000 ppm (salon)"
    triggers:
      - trigger: numeric_state
        entity_id: sensor.capteur_co2_salon_co2
        above: 1000
        for: "00:05:00"
    conditions: []
    actions:
      - action: notify.mobile_app_mon_telephone
        data:
          title: "Qualité d'air dégradée"
          message: >
            CO2 salon : {{ states('sensor.capteur_co2_salon_co2') | int }} ppm.
            Pensez à aérer la pièce.
          data:
            tag: alerte_co2_salon
            importance: high

Déclencher la VMC automatiquement

Si vous disposez d'une VMC connectée (prise Shelly, Sonoff Mini, ou module ESPHome), deux automations complémentaires gèrent l'activation et la désactivation. Le délai for sur chaque trigger lisse les variations transitoires et évite les courts-cycles sur la VMC.

automation:
  - alias: "VMC ON si CO2 salon > 1000 ppm"
    triggers:
      - trigger: numeric_state
        entity_id: sensor.capteur_co2_salon_co2
        above: 1000
        for: "00:03:00"
    actions:
      - action: switch.turn_on
        target:
          entity_id: switch.vmc_salon

  - alias: "VMC OFF si CO2 salon < 800 ppm"
    triggers:
      - trigger: numeric_state
        entity_id: sensor.capteur_co2_salon_co2
        below: 800
        for: "00:05:00"
    actions:
      - action: switch.turn_off
        target:
          entity_id: switch.vmc_salon

Ces deux automations suffisent pour une gestion complète de la qualité d'air intérieur. Vous pouvez affiner avec une condition de temps (ne pas activer la VMC la nuit au-delà de 23h) ou un mode maison (inactif si personne présent).

Option clé en main : Apollo AIR-1 ou module SCD40 Domadoo

Si le montage DIY ne vous convient pas, deux solutions clé en main sont disponibles sur Domadoo avec livraison depuis l'Europe. L'Apollo AIR-1 est la solution la plus complète : SCD40, capteur multiparamètres SEN55 (PM1-PM10, COV, NOx), pression DPS310, dans un boîtier WiFi compact avec firmware ESPHome préchargé. Le module SCD40 Domadoo est une carte breakout montée et testée, à connecter sur votre propre ESP32 si vous souhaitez choisir le boîtier.

Pour les débutants ou ceux qui souhaitent un résultat immédiat, l'Apollo AIR-1 est le choix le plus rapide : unboxing, branchement USB-C, adoption dans Home Assistant en moins de 10 minutes. Pour les makers qui veulent contrôler la forme et l'emplacement du capteur, le breakout SCD40 ou le module Domadoo offre plus de flexibilité.

Rapport qualité-prix
Module CO2 SCD40 Apollo

Module CO2 SCD40 Apollo

Module SCD40 · I2C · Prêt à câbler · Compatible ESP32

Voir sur Domadoo Stock FR · Retours 30 jours