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!
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…
Übersicht, welche Ports miteinander verbunden werden:
BH1750 | ESP32-C3 Mini |
SDA | GPIO4 |
SCL | GPIO5 |
GND | GND |
VCC | 3.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
- In Home Assistant: Einstellungen → Add-ons → ESPHome installieren
- Nach Installation starten und auf „Öffnen“ klicken
2. Neues Gerät hinzufügen
- Klicke in ESPHome auf „+ Neues Gerät“
- Vergib einen Namen, z. B.
sunsensor-1
- Wähle
ESP32-C3
als Board aus - WLAN-Zugangsdaten eingeben
- 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
- ESP32-C3 per USB-C-Kabel verbinden
- Auf „Installieren“ klicken → Lokal über USB“
- Wähle den richtigen COM-Port / USB-Gerät aus
- 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.
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:
- Gehe zu Einstellungen > Automationen & Szenen > Blaupausen > Importieren
- Lade die Datei hoch oder kopiere den Inhalt
- 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.
Schreibe einen Kommentar