· 10 Min. Lesezeit

ESP32 BLE Anwesenheitserkennung in Home Assistant

ESP32 BLE Anwesenheitserkennung in Home Assistant: ESPresense, ESPHome BLE Tracker und Companion App im Vergleich — Schritt für Schritt erklärt.

Affiliate-Hinweis: Einige Links in diesem Artikel sind Affiliate-Links. Beim Kauf über diese Links erhalten wir eine kleine Provision — für dich ändert sich am Preis nichts.

Warum BLE-Anwesenheitserkennung?

Bewegungsmelder sind dumm. Klingt hart, ist aber so. Ein PIR-Sensor merkt, wenn du durch den Flur rennst — aber sobald du auf der Couch sitzt und Netflix schaust, denkt er nach fünf Minuten, der Raum sei leer. Licht aus, Heizung runter, du fluchst im Dunkeln.

Die Lösung heißt Bluetooth Low Energy (BLE) Anwesenheitserkennung mit einem ESP32. Statt auf Bewegung zu reagieren, erkennt das System, ob sich ein bestimmtes Gerät — dein Smartphone, deine Smartwatch, ein BLE-Beacon — tatsächlich im Raum befindet. Solange du da bist, weiß Home Assistant Bescheid. Egal ob du dich bewegst oder nicht.

In diesem Artikel zeige ich dir drei bewährte Methoden, wie du das umsetzt:

  1. ESPresense — eigenständige Firmware mit MQTT-Anbindung
  2. ESPHome BLE Tracker — direkt in ESPHome integriert
  3. Home Assistant Companion App — BLE Transmitter auf dem Smartphone

Für jede Methode bekommst du eine konkrete Einrichtung, YAML-Configs und Automations-Beispiele, die du sofort verwenden kannst.

Was ist BLE-Anwesenheitserkennung und warum brauchst du sie?

Bluetooth Low Energy (BLE) ist ein stromsparendes Funkprotokoll, das in praktisch jedem modernen Smartphone, jeder Smartwatch und vielen IoT-Geräten steckt. Diese Geräte senden regelmäßig sogenannte Advertisement-Pakete — kurze Funksignale, die ihre Anwesenheit ankündigen.

Ein ESP32 hat einen eingebauten BLE-Empfänger. Wenn du in jedem Raum einen ESP32 platzierst, kann jeder davon diese Signale empfangen und die Signalstärke (RSSI) messen. Daraus lässt sich ableiten, welcher ESP32 dem Gerät am nächsten ist — und damit in welchem Raum sich die Person befindet.

Vorteile gegenüber Bewegungsmeldern

EigenschaftBewegungsmelder (PIR)BLE-Anwesenheit
Erkennt Stillsitzen
Raumgenaue Zuordnung
Personenunterscheidung
ReaktionszeitSofort5–30 Sekunden
Kosten pro Raum10–25 €5–10 € (ESP32)

Der große Vorteil: Du kannst nicht nur erkennen, ob jemand da ist, sondern auch wer. Das eröffnet Automationen wie: „Wenn Philipp ins Büro geht, starte seine Playlist. Wenn Sarah ins Wohnzimmer kommt, dimme das Licht auf 60 %.”

Methode 1: ESPresense — Der Spezialist

ESPresense ist eine eigenständige Firmware für den ESP32, die speziell für BLE-Anwesenheitserkennung entwickelt wurde. Sie ist das ausgereifteste Projekt in diesem Bereich und bietet Features, die über einfaches Tracking hinausgehen.

Was kann ESPresense?

  • Raumgenaue Ortung über RSSI-Triangulation
  • Fingerprinting von Geräten (auch ohne feste MAC-Adresse)
  • iOS-Unterstützung über Identity Resolving Keys (IRK)
  • MQTT-Integration — perfekt für Home Assistant
  • Web-UI zur Konfiguration direkt auf dem ESP32

Hardware-Voraussetzungen

Du brauchst pro Raum:

Ein ESP32-DevKit bekommst du für unter 5 € — das ist günstiger als jeder vernünftige Bewegungsmelder.

Installation

  1. Firmware flashen: Geh auf espresense.com/firmware und flashe die Firmware direkt im Browser über Web Serial. Kein zusätzliches Tool nötig.

  2. WLAN konfigurieren: Nach dem Flashen öffnet der ESP32 einen eigenen Access Point. Verbinde dich damit und gib deine WLAN-Zugangsdaten ein.

  3. MQTT konfigurieren: In der Web-UI (erreichbar über die IP des ESP32) trägst du deinen MQTT-Broker ein:

    • MQTT Host: IP deines Brokers (z. B. 192.168.1.100)
    • MQTT Port: 1883
    • Room Name: Der Name des Raums (z. B. wohnzimmer)
  4. Gerät enrollen: Unter http://IP-DES-ESP/ui kannst du Geräte hinzufügen. Für Android-Smartphones reicht die MAC-Adresse. Für iOS-Geräte brauchst du den IRK (Identity Resolving Key) — ESPresense hat dafür einen Enroll-Button in der UI.

MQTT-Topics

ESPresense sendet die Daten an strukturierte Topics:

espresense/rooms/wohnzimmer/DEVICE-ID

Die Payload enthält unter anderem:

  • distance — geschätzte Entfernung in Metern
  • rssi — Signalstärke (je negativer, desto weiter weg)
  • name — Gerätename

Home Assistant Integration

Wenn dein MQTT-Broker läuft, erkennt Home Assistant die ESPresense-Geräte automatisch per MQTT Discovery. Du bekommst für jedes Gerät einen device_tracker mit dem aktuellen Raum als State.

Falls du die automatische Discovery nicht nutzt, kannst du den Sensor auch manuell anlegen:

mqtt:
  sensor:
    - name: "Philipp Entfernung Wohnzimmer"
      state_topic: "espresense/rooms/wohnzimmer/philipp-handy"
      value_template: "{{ value_json.distance }}"
      unit_of_measurement: "m"

Methode 2: ESPHome BLE Tracker

Wenn du bereits ESPHome nutzt, brauchst du keine separate Firmware. ESPHome hat eine eingebaute esp32_ble_tracker-Komponente, die BLE-Geräte erkennen kann.

Wann ESPHome statt ESPresense?

  • Du nutzt den ESP32 bereits für andere Sensoren (Temperatur, Luftfeuchtigkeit, Stromverbrauch)
  • Du willst alles in einer Firmware verwalten
  • Du brauchst keine Triangulation über mehrere Räume

Basis-Konfiguration

esp32_ble_tracker:
  scan_parameters:
    interval: 1100ms
    window: 1100ms
    active: true

binary_sensor:
  - platform: ble_presence
    mac_address: "AA:BB:CC:DD:EE:FF"
    name: "Philipp Anwesend"
    device_class: presence

Diese einfache Config erkennt, ob ein Gerät mit der angegebenen MAC-Adresse in BLE-Reichweite ist. Die binary_sensor-Entity wird on, sobald das Gerät erkannt wird, und off, wenn es verschwindet.

RSSI-basierte Entfernung

Für eine grobe Entfernungsschätzung kannst du den RSSI-Wert als Sensor exponieren:

sensor:
  - platform: ble_rssi
    mac_address: "AA:BB:CC:DD:EE:FF"
    name: "Philipp RSSI Büro"
    filters:
      - exponential_moving_average:
          alpha: 0.3
          send_every: 1

Der Exponential Moving Average glättet die Werte — BLE-Signalstärke schwankt naturgemäß stark.

Format BLE Tracker (HACS-Integration)

Für eine komfortablere Lösung gibt es den Format BLE Tracker als HACS-Integration. Diese nutzt die BLE-Proxy-Funktion von ESPHome und verarbeitet die Daten direkt in Home Assistant:

  1. HACS installieren (falls noch nicht vorhanden)
  2. In HACS nach „Format BLE Tracker” suchen und installieren
  3. Integration in Home Assistant hinzufügen
  4. Geräte zuweisen

Der Vorteil: Du bekommst eine saubere UI zur Geräteverwaltung und Raumzuordnung, ohne YAML-Dateien bearbeiten zu müssen.

Methode 3: Home Assistant Companion App

Die einfachste Methode — aber auch die eingeschränkteste. Die Home Assistant Companion App auf deinem Smartphone kann als BLE Transmitter fungieren und regelmäßig BLE-Signale senden.

Einrichtung (Android)

  1. Home Assistant Companion App öffnen
  2. Einstellungen → Companion App → Sensoren → BLE Transmitter
  3. BLE Transmitter aktivieren
  4. Transmit Power und Intervall konfigurieren

Einrichtung (iOS)

Auf iOS ist die BLE-Transmitter-Funktion eingeschränkter, weil Apple den Hintergrund-Bluetooth-Zugriff limitiert. Die App sendet im Hintergrund seltener Signale. Für zuverlässige Erkennung empfehle ich auf iOS eher ESPresense mit IRK-Enrollment.

Vor- und Nachteile

Vorteile:

  • Keine zusätzliche Hardware (ESP32 wird trotzdem als Empfänger gebraucht)
  • Einfachste Einrichtung

Nachteile:

  • Akkuverbrauch auf dem Smartphone
  • iOS sendet im Hintergrund unzuverlässig
  • Keine Triangulation ohne zusätzliches Setup

Vergleich: Welche Methode passt zu dir?

KriteriumESPresenseESPHome BLECompanion App
Raumgenauigkeit⭐⭐⭐⭐⭐
iOS-Support⭐⭐⭐ (IRK)⭐⭐
EinrichtungsaufwandMittelGeringSehr gering
Multi-Raum✅ Triangulation⚠️ Manuell
Zusätzliche Sensoren❌ Nur BLE✅ Alles in ESPHome
MQTT erforderlich
Akkuverbrauch HandyKeinerKeinerMittel

Meine Empfehlung:

  • ESPresense, wenn du raumgenaue Erkennung in mehreren Räumen willst. Das ist die Königsdisziplin.
  • ESPHome BLE Tracker, wenn du bereits ESP32s mit ESPHome im Einsatz hast und einfach Anwesenheit pro Raum ergänzen willst.
  • Companion App, wenn du nur wissen willst, ob jemand zuhause ist (nicht in welchem Raum).

Praxis: Automationen mit BLE-Anwesenheit

Jetzt wird’s spannend. Eine Anwesenheitserkennung ist nur so gut wie die Automationen, die darauf aufbauen. Hier ein paar Beispiele:

Licht an bei Betreten, aus bei Verlassen

automation:
  - alias: "Büro Licht an wenn Philipp da"
    trigger:
      - platform: state
        entity_id: sensor.espresense_philipp_handy
        to: "buero"
    action:
      - service: light.turn_on
        target:
          entity_id: light.buero_decke
        data:
          brightness_pct: 80
          color_temp_kelvin: 4000

  - alias: "Büro Licht aus wenn Philipp weg"
    trigger:
      - platform: state
        entity_id: sensor.espresense_philipp_handy
        from: "buero"
    action:
      - delay: "00:02:00"
      - condition: not
        conditions:
          - condition: state
            entity_id: sensor.espresense_philipp_handy
            state: "buero"
      - service: light.turn_off
        target:
          entity_id: light.buero_decke

Der 2-Minuten-Delay beim Ausschalten verhindert Flackern, falls das BLE-Signal kurz aussetzt.

Heizung nach Person steuern

Anwesenheitserkennung ist der perfekte Partner für eine smarte Heizungssteuerung — wer nicht da ist, muss auch nicht heizen.

automation:
  - alias: "Wohnzimmer Heizung nach Anwesenheit"
    trigger:
      - platform: state
        entity_id: binary_sensor.philipp_anwesend_wohnzimmer
    action:
      - service: climate.set_temperature
        target:
          entity_id: climate.wohnzimmer
        data:
          temperature: >
            {% if trigger.to_state.state == 'on' %}
              21
            {% else %}
              17
            {% endif %}

Musik folgt dir durchs Haus

automation:
  - alias: "Musik folgt Philipp"
    trigger:
      - platform: state
        entity_id: sensor.espresense_philipp_handy
    condition:
      - condition: state
        entity_id: media_player.spotify
        state: "playing"
    action:
      - service: media_player.select_source
        target:
          entity_id: media_player.spotify
        data:
          source: "{{ trigger.to_state.state | replace('_', ' ') | title }}"

Tipps für zuverlässige Erkennung

ESP32 Platzierung

  • Mittig im Raum montieren, nicht in einer Ecke
  • Höhe: 1,5–2 Meter (etwa Brusthöhe)
  • Abstand zu Metall und dicken Wänden halten
  • Direkte Sichtlinie zum typischen Aufenthaltsort ist ideal

Signalstabilität

BLE-Signale schwanken — das ist normal. Diese Maßnahmen helfen:

  • Glättung: Exponential Moving Average in ESPHome oder Absorption-Filter in ESPresense
  • Hysterese: Gerät erst als „weg” markieren, wenn es 30–60 Sekunden nicht mehr gesehen wurde
  • Max Distance: In ESPresense kannst du eine maximale Entfernung pro Raum setzen — alles darüber gilt als „nicht im Raum”

Mehrere Räume kalibrieren

Bei ESPresense lohnt sich die Kalibrierung der absorption- und tx_power-Werte:

  1. Stell dich mit deinem Smartphone 1 Meter vor den ESP32
  2. Notiere den RSSI-Wert
  3. Passe absorption an, bis die angezeigte Entfernung ungefähr 1 Meter zeigt
  4. Wiederhole für jeden Raum

Häufige Probleme und Lösungen

Android-Gerät wird nicht erkannt

  • Stelle sicher, dass Bluetooth und Standort aktiviert sind
  • Prüfe, ob die Home Assistant Companion App im Hintergrund laufen darf (Akku-Optimierung deaktivieren)
  • Manche Android-Hersteller (Xiaomi, Huawei) killen aggressiv Hintergrund-Apps

iOS-Gerät springt zwischen Räumen

  • Nutze IRK statt MAC-Adresse (Apple randomisiert BLE-MACs)
  • Erhöhe die Glättung (höherer absorption-Wert in ESPresense)
  • Verringere das Scan-Intervall

ESP32 verliert WLAN

  • Nutze ein Board mit externer Antenne für besseren WLAN-Empfang
  • Setze einen statischen DHCP-Lease im Router
  • Bei ESPresense: Aktiviere den Watchdog-Timer für automatischen Neustart

Fazit

BLE-Anwesenheitserkennung mit dem ESP32 ist eins der besten Upgrades, die du deinem Smart Home verpassen kannst. Für unter 10 € pro Raum bekommst du eine Erkennung, die Bewegungsmeldern in jeder Hinsicht überlegen ist — zumindest wenn es darum geht, ob jemand da ist, nicht nur ob sich gerade jemand bewegt hat.

ESPresense ist die beste Wahl für Multi-Raum-Setups mit präziser Ortung. ESPHome BLE Tracker ist perfekt, wenn du deine bestehenden ESPHome-Nodes erweitern willst. Und die Companion App taugt als schneller Einstieg zum Ausprobieren.

Fang mit einem Raum an — Büro oder Wohnzimmer, wo du die meiste Zeit verbringst. Wenn das läuft, ist die Erweiterung auf weitere Räume ein Kinderspiel.

Weiterführende Artikel:

Philipp Just

Gründer & Autor

Schreibt über Home Assistant, ESP32 und alles was das Smart Home smarter macht.