Feinstaubsensor PMS5003T mit ESP32 und ESPHome
Luftqualität messen und visualisieren in Home Assistant
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.
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.