Press ESC to close

virtual-pinball-cabinet.com Tutorial: Einen virtuellen Pinball selber bauen

Anleitung: Smart Home Sonnensensor mit ESP32 und BH1750 für HomeAssistant bauen

In dieser Anleitung zeige ich dir, wie du aus nur zwei Bauteilen und ein paar Kabeln einen WLAN-Sonnensensor baust, der deine elektrischen Rollos im Haus via HomeAssistant steuert. Du musst dazu keine Zeile programmieren. Den nötigen YAML-Code für HomeAssistant kannst du dir hier kopieren. Das passende Gehäuse zum 3D-Druck findest du dazu weiter unten. Viel Spaß beim Nachbauen – und danke für Feedback!

Smart-Home Sonnensensor mit ESP32 C3 und Lichtsensor BH1750 für HomeAssistant

Verwendete Bauteile

Der ESP32-C3 ist ein kostengünstiger, stromsparender Mikrocontroller auf Basis der RISC-V-Architektur. Er integriert 2,4-GHz-WLAN und Bluetooth Low Energy (BLE 5.0) und eignet sich daher besonders für IoT-Anwendungen, die drahtlose Konnektivität erfordern. Für das Projekt verwende ich die kompakte Ausführung ohne angelötete Pins.

Der GY-302 BH1750 ist ein Licht-Sensor, der für die Messung von Lichtstärken und -helligkeiten entwickelt wurde. Der Sensor kommuniziert via I2C-Protokoll. Er gibt Helligkeitsmesswerte in Lux aus (SI-Einheit für Beleuchtungsstärke). Der Messbereich reicht von mindestens 1 Lux bis maximal 65.535 Lux. Der Sensor ist in unterschiedlichen Breakout-Board-Formaten erhältlich. Für mein Projekt habe ich die kompakte Version ohne Plastik-Dome und ohne angelötete Pins verwendet.  

Für den WLAN Sonnensensor benötigst du:

Schritt 1: ESP32-C3 Mini und BH1750 verkabeln

Microcontroller und Sensor werden nach folgendem Schema miteinander verbunden. Beim ESP32 die Beschriftung der Pins beachten – je nach Hersteller sind die Pins neben der Lötstelle, manchmal aber auch darüber beschriftet – in dem Fall kann man sich leicht mit den Pins vertun. Hat mich schon einige Nerven gekostet…

Anschlussschema Sonnensensor mit ESP32-C3 und BH1750.

Übersicht, welche Ports miteinander verbunden werden:

BH1750ESP32-C3 Mini
SDAGPIO4
SCLGPIO5
GNDGND
VCC3.3V
ADDR

Die Ports werden jeweils mit ca. 5cm langen Kabeln verbunden. Damit lassen sich die Breakout-Boards dann gut im Gehäuse unterbringen. Eine „Dritte“ Hand ist hier beim Verlöten wieder extrem hilfreich.

Schritt 2: DIY Sonnensensor mit ESP32-C3 Mini und BH1750 in Home Assistant integrieren

Damit der Sonnensensor deinen Rolladen steuern kann, muss er in ein Smart Home System eingebunden werden, wie z.B. HomeAssistant.

Home Assistant ist eine kostenlose, lokal laufende Smart-Home-Plattform, mit der sich Geräte verschiedenster Hersteller zentral steuern und automatisieren lassen. Sie ermöglicht komplexe Automationen – etwa das Einschalten von Licht bei Bewegung, das Regeln der Heizung beim Lüften oder eben die Steuerung deiner elektrischen Rollos bei starkem Sonnenschein, ganz ohne Cloud-Abhängigkeit. SmartHome Systeme wie Home Assistant sind Ideal für Nutzer, die ihr Zuhause intelligent vernetzen und dabei Datenschutz und Flexibilität schätzen. Wenn du HomeAssistant noch nicht installiert hast, findest du hier alle wichtigen Infos: https://www.home-assistant.io.

Um den Sonnensensor zu nutzen, wird er wie folgt in HomeAssitant eingebunden:

1. In HomeAssistant AddOn ESPHome installieren
  1. In Home Assistant: Einstellungen → Add-ons → ESPHome installieren
  2. Nach Installation starten und auf „Öffnen“ klicken

2. Neues Gerät hinzufügen
  1. Klicke in ESPHome auf „+ Neues Gerät“
  2. Vergib einen Namen, z. B. sunsensor-1
  3. Wähle ESP32-C3 als Board aus
  4. WLAN-Zugangsdaten eingeben
  5. Nach Abschluss auf „Bearbeiten“ klicken und folgenden YAML-Code einfügen:
esphome:
  name: sunsensor-1
  friendly_name: SunSensor 1

esp32:
  board: esp32-s3-devkitc-1
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "HIER DEINEN KEY EINTRAGEN"

ota:
  - platform: esphome
    password: "HIER DEIN OTA PASSWORT EINTRAGEN"

  # WLAN-Zugang
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Sunsensor-1 Fallback Hotspot"
    password: "HIER PASSWORT EINTRAGEN"

# Fallback-Captive-Portal
captive_portal:

# I2C-Bus Konfiguration
i2c:
  sda: GPIO4
  scl: GPIO5
  frequency: 100kHz
  scan: true

# Helligkeitssensor BH1750
sensor:
  - platform: bh1750
    name: "Lichtsensor Büro"
    #address: 0x23
    update_interval: 10s
    filters:
      - lambda: |-
          if (isnan(x)) return 0;
          return x;  

3. Firmware auf den ESP32 flashen
  1. ESP32-C3 per USB-C-Kabel verbinden
  2. Auf „Installieren“ klicken → Lokal über USB“
  3. Wähle den richtigen COM-Port / USB-Gerät aus
  4. Nach erfolgreichem Flash: Gerät wird im Netzwerk erkannt

TIPP:
Alternativ kannst du den Code auch via ESPHome Webfrontend flashen: https://web.esphome.io. Verbinde den ESP32 per USB-Kabel erstmalig mit dem Rechner, auf dem HomeAssistant läuft und klicke auf „Connect“. Wähle den den Port und dann kannst du den ESP32 initial flashen. Ab dann ist er auch per WLAN über HomeAssistant erreichbar und Änderungen am YAML können durch klicken auf EDIT -> INSTALL -> WIRELESSLY direkt hochgeladen werden.

4. Sonnensensor in Home Assistant verwenden – Lichtstärke anzeigen

Nach wenigen Sekunden erscheint der Sensor automatisch in Home Assistant mit der Entität sensor.sunsensor_1 (oder nach deinem Namen). Der Sensor liefert den Wert Lux zurück. Diesen Wert benötigen wir im Folgenden als Schwellwert. Wird er überschritten, wird die Automation ausgelöst.

Um sich jetzt die aktuelle Sonneneinstrahlung visuell auf dem Dashboard ausgeben zu lassen, eignen sich besonders die Lovelace Mini-Graph-Cards (https://github.com/kalkih/mini-graph-card), welche via HACS in Home Assistant eingebunden werden:

Die hier dargestellt Sonnenverlaufskurve bzw. die Lux-Werte sind untypisch, da der Sensor im Lauf des Tages immer wieder zu Testzwecken deaktiviert wurde.

type: custom:mini-graph-card
entities:
  - sensor.sunsensor_1
name: Sonnenverlauf
line_color: orange
line_width: 2
hours_to_show: 12
points_per_hour: 4
show:
  extrema: true
  fill: true

5. Anlegen von Automationen für die Rolladensteuerung mit Sonnensensor in HomeAssistant

Hier ist der YAML-Code für eine Home Assistant Automation, die bei starker Sonneneinstrahlung eine Somfy-Tahoma-Szene (mein Rolladen-System) zum Schließen der Rollläden ausführt. Für das automatische Hochfahren der Rollläden findest du hier zwei Beispiele: Auslöser für das „Wieder Hochfahren“ entweder über Sonnenstand (Sonnenuntergang) oder eine Uhrzeit.

Die Automationen legst du in HomeAssistant hier an:
> Einstellungen > Automation & Szenen > Automation Erstellen > Neue Automation erstellen.
Hier dann rechts oben auf die drei Punkte klicken und dann auf „In YAML bearbeiten“.

Mit den folgenden Snippets legst du dir zwei Automationen an – eines für’s Runterfahren und eine fürs wieder Hochfahren des Rollos.

Die Snippets greifen dazu auf sog. „Szenen“ zurück, welche im Rolladensystem (bei mir Somfy) angelegt sind. Z.B. Einzelner Rolladen hoch / runter (im Beispiel mein Büro) oder auch ein Kombination aus mehren Rollläden (EG auf / ab etc.). Siehe dazu auch den Tipp weiter unten.

Automation 1:
Rolladen schließen, wenn Sensorwert überschritten wird:

Der Rolladen soll schliessen, wenn der Sensor mehr als 30000 LUX meldet. Diesen Schwellwert kannst du für dich anpassen. Dazu ist die weiter oben ermittelte Lichtstärke hilfreich. Einfach beobachten, wann ein entsprechender Sonnenstand erreicht ist und den Lux-Wert im folgenden Skript anpassen (hier: 30000).

alias: Rolladen schließen bei starker Sonne
trigger:
  - platform: numeric_state
    entity_id: sensor.sunsensor_1
    above: 30000
condition:
  - condition: sun
    after: sunrise
    before: sunset
action:
  # Hier den Namen der z.B. in Somfy Tahoma angelegten Szene
  # Die Namen der Szenen findest du unter HA > Automationen > Reiter "Szenen" 
  - service: scene.turn_on
    data:
      entity_id: scene.buro_unten
mode: single

Automation 2:
Rolladen wieder öffnen (2 Varianten)

Da der Sensor auf der Innenseite des Fenster angebracht und damit verschattet ist, benötigen wir einen anderen Auslöser um den gesteuerten Rolladen auch wieder zu öffnen.

Zwei mögliche Varianten sind:

Rolladen öffnet zeitgesteuert z.B. um 18:00 Uhr:

alias: Rolladen Büro öffnen um 18 Uhr
trigger:
  - platform: time
    at: "18:00:00"
condition: []
action:
  # Hier den Namen der z.B. in Somfy Tahoma angelegten Szene
  # Die Namen der Szenen findest du unter HA > Automationen > Reiter "Szenen"
  - service: scene.turn_on
    data:
      entity_id: scene.buro_oben
mode: single

… oder 30 Minuten vor Sonnenuntergang:

alias: Rolladen Büro öffnen bei Sonnenuntergang
trigger:
  - platform: sun
    event: sunset
    offset: "-00:30:00"
condition: []
action:
  # Hier den Namen der z.B. in Somfy Tahoma angelegten Szene
  # Die Namen der Szenen findest du unter HA > Automationen > Reiter "Szenen"
  - service: scene.turn_on
    data:
      entity_id: scene.buro_oben
mode: single

Tipp:
Die im Script benötigten Bezeichnungen bzw. Entität-IDs der in Tahoma (oder einem System) angelegten Szenen wie „Rolladen Büro hoch“ etc. findest du in HomeAssistant unter Einstellungen > Automationen > Reiter „Szenen“. Wähle die gewünschte Szene durch Klicken auf die drei Punkte > Detailansicht > dann des Zahnrad. Hier findest du die Entität-ID für die Szene wie „scene.buero_oben“. Diese ID dann in deinem YAML-Code unter „- service“ eintragen.

5.1 Variante:
Ausschlussbedingung für manuelles Schließen (Automatik)

Falls du verhindern willst, dass Rollläden automatisch geöffnet werden, wenn sie z. B. manuell heruntergefahren wurden (z. B. wegen Urlaub), lässt sich das mit einem Helfer (Input Boolean) steuern.

1. Helfer erstellen

In Home Assistant > Einstellungen > Geräte & Dienste > Helfer > „Helfer erstellen“.

  • Typ: Schalter (Input Boolean)
  • Name: Rolladen Automatik aktiv
  • Entität: input_boolean.rolladen_automatik_aktiv

Öffne deine Datei configuration.yaml und füge den folgenden Abschnitt ein (falls input_boolean: schon vorhanden ist, ergänze nur den inneren Teil). Starte Home Assistant neu (Einstellungen > Drei Punkte > Home Assistant neu starten.

input_boolean:
  rolladen_automatik_aktiv:
    name: Rolladen-Automatik aktiv
    icon: mdi:weather-sunny-alert
    initial: true

Du kannst diesen Schalter dann über Dashboard > Karte hinzufügen > Entität sichtbar machen.

Home Assistant Sonnensensor mit Automatik-Abschaltung. Abbildung des Schalters.
2. Rolläden schließen bei starker Sonne (nur wenn Automatik aktiv)

Die bereits bekannten YAML Scripte werden um die Kondition „Schalter Aktiv“ ergänzt und nur ausgeführt, wenn die Automatik aktiviert ist.

alias: Rolladen schließen bei starker Sonne
trigger:
  - platform: numeric_state
    entity_id: sensor.sunsensor_1
    above: 30000
condition:
  - condition: sun
    after: sunrise
    before: sunset
  - condition: state
    entity_id: input_boolean.rolladen_automatik_aktiv
    state: "on"
action:
  - service: scene.turn_on
    data:
      entity_id: scene.buro_unten
mode: single
3. Rolläden öffnen bei Sonnenuntergang (wenn Automatik aktiv)
alias: Rolladen öffnen bei Sonnenuntergang
trigger:
  - platform: sun
    event: sunset
    offset: "-00:30:00"
condition:
  - condition: state
    entity_id: input_boolean.rolladen_automatik_aktiv
    state: "on"
action:
  - service: scene.turn_on
    data:
      entity_id: scene.buro_oben
mode: single

6. Blueprint für HomeAssistant Sonnensensor

Hier ist ein Blueprint für Home Assistant, mit dem du die Rollladenautomatik auf Basis eines Sonnensensors flexibel für verschiedene Räume und Szenen konfigurieren kannst. Du brauchst dazu:

  • die Entität des Helligkeitssensors (z. B. sensor.sunsensor_1)
  • eine Szene zum Schließen und eine zum Öffnen der Rollläden (z. B. aus Somfy Tahoma)
  • einen Input Boolean zur Aktivierung/Deaktivierung der Automatik

Blueprint YAML (kopieren in config/blueprints/automation/rolladen_sonne.yaml):

blueprint:
  name: Rolladenautomatik basierend auf Sonnensensor
  description: >
    Schließt Rollläden bei starker Sonne und öffnet sie am Abend wieder automatisch.
    Die Automatik kann über einen Input Boolean deaktiviert werden.
  domain: automation
  input:
    lux_sensor:
      name: Helligkeitssensor
      description: Sensor, der die Sonnenintensität misst (z. B. BH1750)
      selector:
        entity:
          domain: sensor
    lux_threshold:
      name: Schwellenwert (Lux)
      description: Ab diesem Lux-Wert werden die Rollläden geschlossen
      default: 30000
      selector:
        number:
          min: 1000
          max: 100000
          step: 1000
          unit_of_measurement: lux
    scene_close:
      name: Szene zum Schließen
      description: Szene zum Schließen der Rollläden (z. B. Tahoma)
      selector:
        entity:
          domain: scene
    scene_open:
      name: Szene zum Öffnen
      description: Szene zum Öffnen der Rollläden (z. B. Tahoma)
      selector:
        entity:
          domain: scene
    control_switch:
      name: Automatik Schalter (Input Boolean)
      description: Umschalter zum Aktivieren/Deaktivieren der Automatik
      selector:
        entity:
          domain: input_boolean

mode: single
trigger:
  - platform: numeric_state
    entity_id: !input lux_sensor
    above: !input lux_threshold
  - platform: sun
    event: sunset
    offset: "-00:30:00"

condition:
  - condition: state
    entity_id: !input control_switch
    state: "on"

action:
  - choose:
      - conditions:
          - condition: trigger
            id: '0'
        sequence:
          - service: scene.turn_on
            target:
              entity_id: !input scene_close
      - conditions:
          - condition: trigger
            id: '1'
        sequence:
          - service: scene.turn_on
            target:
              entity_id: !input scene_open
Verwendung im UI:
  1. Gehe zu Einstellungen > Automationen & Szenen > Blaupausen > Importieren
  2. Lade die Datei hoch oder kopiere den Inhalt
  3. Erstelle neue Automationen auf Basis dieses Blueprints:
    • Sensor auswählen
    • Schwellenwert eingeben
    • Szene zum Schließen und Öffnen wählen
    • Input Boolean auswählen

Das war’s. Dein Sonnensensor sollte nun einen oder mehrere Rolladenszenen steuern.


3D-Gehäuse für den ESP32 Sonnensensor

Wenn du einen 3D-Drucker hast, findest du hier auf https://www.printables.com die Files für das passende Gehäuse.

Der Sensor wird mit einem Saugnapf am Fenster fixiert und per USB-C-Kabel mit Strom versorgt.


5/5 - (1 vote)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Cookie Consent Banner von Real Cookie Banner