uptime · 1414 days · 28 posts published · last deploy 1 hour, 7 minutes ago build:passing rss
~ / home-automation / lueftung-automatisch-nach-pm25-home-assistant.md
Home Automation · 14. Juni 2026 · ~6min · 5f56bea

Lüftung automatisch nach PM2.5: Home-Assistant-Automation

Luftreiniger per Schwellwert + Hysterese schalten – ohne Flattern

>
devmaker.net
author · 5f56bea · 2026-06-14
PM2.5 Ventilation Automation Header.jpg 1024×1024
PM2.5 Ventilation Automation Header
Du hast deinen PMS5003T-Feinstaubsensor in Home Assistant – schaltest die Lüftung aber noch von Hand? Dieser Artikel zeigt die Automation: Luftreiniger automatisch an, wenn PM2.5 einen Schwellwert übersteigt, und wieder aus, sobald die Luft sauber ist. Mit Hysterese gegen nerviges Ein-/Aus-Flattern, optionaler Push-Warnung und einem Status-Sensor – basierend auf meinem echten Setup.

Warum die Lüftung automatisieren?

Im vorherigen Artikel ist ein PMS5003T am ESP32 entstanden, der PM1.0, PM2.5 und PM10 nach Home Assistant meldet. Schön – aber Werte anschauen und dann von Hand den Luftreiniger einschalten ist kein Smarthome, das ist eine Anzeige.

Das Ziel hier: Home Assistant schaltet den Luftreiniger (oder eine Lüftung) automatisch ein, wenn PM2.5 einen Schwellwert übersteigt, und wieder aus, sobald die Luft sauber ist. Klingt trivial – hat aber eine Falle: ohne Hysterese flattert der Schalter ständig um den Schwellwert.

Anzeige · Affiliate-Link – kaufst du darüber, erhalte ich ggf. eine Provision. Für dich ändert sich am Preis nichts.

Voraussetzung

Ein PM2.5-Sensor muss bereits als Entität in Home Assistant ankommen (bei mir sensor.pm2_5 vom PMS5003T-Setup) und ein schaltbarer Aktor für den Luftreiniger, z. B. eine smarte Steckdose oder ein ESPHome-Relais (switch.luftreiniger).

Das Konzept: Schwellwert + Hysterese

Ein einzelner Schwellwert (z. B. „an, wenn PM2.5 > 25") ist eine schlechte Idee: Schwankt der Messwert um genau diese Grenze, schaltet der Luftreiniger im Sekundentakt an und aus. Das nervt, kostet Lebensdauer und bringt nichts.

Die Lösung ist eine Hysterese – zwei Schwellen:

  • Einschalten bei PM2.5 über 35 µg/m³ (für 2 Minuten ununterbrochen).
  • Ausschalten erst bei PM2.5 unter 15 µg/m³ (für 10 Minuten).

Die for:-Dauer entprellt zusätzlich kurze Spitzen (z. B. beim Anbraten). Die 15/35-Werte orientieren sich grob an den WHO-Richtwerten – pass sie an deine Räume an.

Die Automation (YAML)

Zwei Automationen – eine fürs Ein-, eine fürs Ausschalten. Die condition verhindert unnötige Schaltbefehle, wenn der Aktor schon im Zielzustand ist:

# Luftreiniger AN bei hohem PM2.5
- alias: "Luftreiniger an bei PM2.5 hoch"
  trigger:
    - platform: numeric_state
      entity_id: sensor.pm2_5
      above: 35
      for: "00:02:00"
  condition:
    - condition: state
      entity_id: switch.luftreiniger
      state: "off"
  action:
    - service: switch.turn_on
      target:
        entity_id: switch.luftreiniger

# Luftreiniger AUS bei niedrigem PM2.5 (Hysterese)
- alias: "Luftreiniger aus bei PM2.5 niedrig"
  trigger:
    - platform: numeric_state
      entity_id: sensor.pm2_5
      below: 15
      for: "00:10:00"
  condition:
    - condition: state
      entity_id: switch.luftreiniger
      state: "on"
  action:
    - service: switch.turn_off
      target:
        entity_id: switch.luftreiniger
Warum die unterschiedlichen for:-Zeiten?

Einschalten reagiert schnell (2 min), damit die Luft zügig gereinigt wird. Ausschalten wartet länger (10 min), damit der Reiniger nicht abschaltet, während die Werte noch knapp schwanken. Asymmetrische Hysterese – schnell rein, langsam raus.

Optional: Push-Warnung bei sehr schlechter Luft

Bei wirklich hohen Werten will ich aktiv informiert werden – unabhängig davon, ob der Reiniger schon läuft:

- alias: "Warnung bei sehr hohem PM2.5"
  trigger:
    - platform: numeric_state
      entity_id: sensor.pm2_5
      above: 75
      for: "00:05:00"
  action:
    - service: notify.mobile_app_dein_handy
      data:
        title: "Luftqualität schlecht"
        message: >-
          PM2.5 liegt bei {{ states('sensor.pm2_5') }} µg/m³ –
          der Luftreiniger läuft.

Optional: Status-Sensor per Template

Für Dashboards ist ein binärer „Luft schlecht"-Sensor praktisch – er nutzt denselben Schwellwert wie die Einschalt-Automation:

template:
  - binary_sensor:
      - name: "Luftqualität schlecht"
        device_class: problem
        state: "{{ states('sensor.pm2_5') | float(0) > 35 }}"

Was ich weggelassen habe

Ehrliche Abgrenzung

Bewusst nicht behandelt:

  • Drehzahlregelung. Hier wird nur an/aus geschaltet. Eine stufenlose Lüfter-Regelung (PID o. Ä.) ist ein eigenes, deutlich fummeligeres Thema.
  • Außenluft-Check. Eine Fensterlüftung macht nur Sinn, wenn draußen weniger Feinstaub ist als drinnen – das bräuchte einen zweiten (Außen-)Sensor oder eine API.
  • CO₂ & Feuchte. Echte Lüftungssteuerung berücksichtigt mehr als PM2.5. Hier geht es nur um Feinstaub.
  • Helfer-Entities für die Schwellen. Sauberer wäre, 15/35 als input_number auszulagern, statt sie im YAML zu hardcoden.

Fazit

Mit zwei Automationen und einer sauberen Hysterese wird aus der reinen Feinstaub-Anzeige eine echte Automation: Der Luftreiniger läuft, wenn er gebraucht wird, und ist sonst aus. Kein Flattern, kein manuelles Eingreifen. Die Schwellwerte sind der einzige Teil, den du an deine Räume anpassen solltest – der Rest läuft.

Nächster logischer Schritt: die 15/35-Grenzen als input_number-Helfer ins Dashboard holen, damit du sie ohne YAML-Edit justieren kannst.

// responses (0)
> echo "your thoughts" >> lueftung-automatisch-nach-pm25-home-assistant.responses

Schreibe einen Kommentar

Wird für die Bestätigung benötigt