Feinstaubsensor PMS5003T mit ESP32 und ESPHome

29. März 2026

Luftqualität messen und visualisieren in Home Assistant

Air Quality Sensor ESP32 Header

Die Überwachung der Luftqualität in unseren Wohnräumen wird immer wichtiger, insbesondere in Zeiten, in denen Umweltbewusstsein und Gesundheit eine zentrale Rolle spielen. In diesem Blogartikel werden wir einen Blick auf die Integration eines Feinstaubsensors vom Typ PMS5003T mit einem ESP32-Mikrocontroller werfen. Dabei nutzen wir das ESPHome-Framework zur Programmierung und die Home Assistant-Plattform zur Anzeige und Überwachung der Daten. Zudem wird ein individuell designtes Gehäuse verwendet, das mit FreeCAD entworfen und mithilfe eines 3D-Druckers hergestellt wurde.

Schritt 1: Hardware-Zusammenstellung

Bevor wir uns mit den technischen Details beschäftigen, schauen wir uns an, welche Hardware wir benötigen:

  • PMS5003T Feinstaubsensor
  • ESP32 Mikrocontroller
  • Display für die Anzeige, wie z.B. OLED oder TFT
  • (Optional) Gehäuse

Schritt 2: ESPHome-Framework einrichten

ESPHome erleichtert die Entwicklung von IoT-Anwendungen erheblich, indem es eine einfache YAML-basierte Konfigurationssprache bietet. In der ESPHome-Konfigurationsdatei legen wir die Sensoren und Aktoren fest, definieren die Kommunikationsprotokolle und integrieren sie in Home Assistant. Beispielhaft könnte die Konfiguration des Feinstaubsensors folgendermaßen aussehen:

#  PM Sensor port
#  -----------------
#  |       -----   |
#  |    8  | o |   |
#  |    7  | o |   |
#  |    6  | o |   |
#  |    5  | o |   |   5 - TX
#  |    4  | o |   |   4 - RX
#  |    3  | o |   |
#  |    2  | o |   |   2 - GND
#  |    1  | o |   |   1 - VCC
#  |       -----   |
#  |               |
#  |               |
#  |               |
#  |               |
#  |               |
#  |               |
#  |               |
#  |               |
#  |               |
#  |               |
#  -----------------

esphome:
  name: esp32-pm-sensor-01
  friendly_name: esp32-PM-Sensor-01

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "xxx"

ota:
  password: "xxx"

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp32-Pm-Sensor-02"
    password: "ztsQxEKlkaUj"

captive_portal:

i2c:
  sda: 19
  scl: 18

display:
  - platform: ssd1306_i2c
    model: "SSD1306 128x32"
    update_interval: 10s
    lambda: |-
        it.printf(0, 0, id(font_robo),  "PM1.0   : %.0f", id(pms_pm_1).state),
        it.printf(0, 11, id(font_robo), "PM2.5   : %.0f", id(pms_pm_25).state),
        it.printf(0, 22, id(font_robo), "PM10.0 : %.0f", id(pms_pm_10).state),
        it.line(64, 10, 128, 10),
        it.line(64, 0, 64, 32),
        it.printf(67, 11, id(font_robo), "T : %3.1f°C", id(pms_temperature).state),
        it.printf(67, 22, id(font_robo), "H : %3.1f%%", id(pms_humidity).state),
        it.printf(67, 0, id(font_robo_sm), "WiFi : %2.f dBm", id(wifi_signal_sensor).state);

font:
  - file: "gfonts://Roboto"
    id: font_robo_sm
    size: 9
  - file: "gfonts://Roboto"
    id: font_robo
    size: 10

uart:
  rx_pin: GPIO17
  tx_pin: GPIO16
  baud_rate: 9600

sensor:
  # -----------------------------------------------
  # sensor wifi_signal
  # -----------------------------------------------
  - platform: wifi_signal
    name: WiFi Signal
    id: wifi_signal_sensor
    update_interval: 60s
    
  - platform: pmsx003
    type: PMS5003T
    id: pm_sensor
    pm_1_0:
      id: pms_pm_1
      name: "Particulate Matter <1.0µm Concentration"
      accuracy_decimals: 1
    pm_2_5:
      id: pms_pm_25
      name: "Particulate Matter <2.5µm Concentration"
      accuracy_decimals: 1
    pm_10_0:
      id: pms_pm_10
      name: "Particulate Matter <10.0µm Concentration"
      accuracy_decimals: 1
    temperature:
      id: pms_temperature
      name: "Environment temperature in °C"
    humidity:
      id: pms_humidity
      name: "Environment humidity in %"
    update_interval: 120s

Schritt 3: Home Assistant-Integration

Die Konfiguration des ESP32 wird in Home Assistant durch das Hinzufügen einer neuen Entität vorgenommen. Dadurch können die Daten des Feinstaubsensors in der Home Assistant-Oberfläche angezeigt und überwacht werden.

Schritt 4: Gehäusedesign mit FreeCAD

Für die sichere Aufbewahrung und den Schutz der Komponenten vor äußeren Einflüssen entwickeln wir ein Gehäuse unter Verwendung von FreeCAD.

PM_Sensor_Case_alpha
PM-Sensor Gehäuse

Freecad Projekt Datei

Herunterladen (7,2 MB) FCSTD
Dateinanme: pmSensor_Case_bigLCD.FCStd

Fazit

Die Kombination des PMS5003T Feinstaubsensors mit dem ESP32 und dem ESPHome-Framework ermöglicht eine effektive Überwachung der Luftqualität. Die Integration in Home Assistant erlaubt eine bequeme Datenüberwachung und die Automatisierung von Aktionen basierend auf den gemessenen Werten. Dank des individuell gestalteten Gehäuses wird nicht nur die Funktionalität, sondern auch das Design optimiert, um eine umfassende Lösung für die Luftqualitätsüberwachung zu bieten.

Teilen:


Schreibe einen Kommentar

Wird für die Bestätigung benötigt