← - Lambda Reference | Inhaltsverzeichnis | Weiter: FAQ & Fehlerbehebung →
ESPHome Integration — Home Assistant, Fehlerbehebung, Nächste Schritte
Integration mit Home Assistant, Fehlerbehebung und Entwicklungspläne.
Inhaltsverzeichnis
5.1 Home Assistant Integration
Automatische Erkennung
Nach dem Flashen des ESP32 erscheint das Gerät automatisch in Home Assistant.
Überprüfung:
- Einstellungen -> Geräte & Dienste
- Find the "New devices discovered" notification
- Oder: ESPHome -> Gerät auswählen
Entitäten in Home Assistant
Bei Verwendung des Standardbeispielswerden folgende Entitäten erstellt:
| Entität | Typ | Beschreibung |
|---|---|---|
light.dimmerlink_light |
Light | Haupt-Dimmer |
sensor.dimmerlink_ac_frequency |
Sensor | Netzfrequenz (50/60 Hz) |
sensor.dimmerlink_level |
Sensor | Aktueller Pegel (%) |
select.dimmerlink_curve |
Select | Dimmkurve |
binary_sensor.dimmerlink_ready |
Binary Sensor | Bereitschaftsstatus |
button.dimmerlink_restart_esp |
Button | ESP-Neustart |
Lovelace-Karten
Einfache Karte
type: light
entity: light.dimmerlink_light
name: Living Room
Erweiterte Karte
type: vertical-stack
cards:
- type: light
entity: light.dimmerlink_light
name: Dimmer
- type: entities
entities:
- entity: select.dimmerlink_curve
name: Curve
- entity: sensor.dimmerlink_ac_frequency
name: Mains Frequency
- entity: binary_sensor.dimmerlink_ready
name: Status
Karte mit Schieberegler (custom:slider-entity-row)
type: entities
entities:
- entity: light.dimmerlink_light
type: custom:slider-entity-row
name: Brightness
toggle: true
Automatisierungen
Einschalten per Bewegungsmelder
automation:
- alias: "Light on Motion"
trigger:
- platform: state
entity_id: binary_sensor.motion_sensor
to: "on"
condition:
- condition: sun
after: sunset
action:
- service: light.turn_on
target:
entity_id: light.dimmerlink_light
data:
brightness_pct: 70
transition: 2
Ausschalten nach 5 Minuten
automation:
- alias: "Auto Turn Off"
trigger:
- platform: state
entity_id: binary_sensor.motion_sensor
to: "off"
for:
minutes: 5
action:
- service: light.turn_off
target:
entity_id: light.dimmerlink_light
data:
transition: 5
Nachtmodus (gedimmtes Licht)
automation:
- alias: "Night Mode"
trigger:
- platform: time
at: "23:00:00"
condition:
- condition: state
entity_id: light.dimmerlink_light
state: "on"
action:
- service: light.turn_on
target:
entity_id: light.dimmerlink_light
data:
brightness_pct: 20
transition: 10
Kurve je nach Last-Typ wechseln
automation:
- alias: "Curve for LED"
trigger:
- platform: state
entity_id: input_select.lamp_type
to: "LED"
action:
- service: select.select_option
target:
entity_id: select.dimmerlink_curve
data:
option: "LOG"
- alias: "Curve for Incandescent"
trigger:
- platform: state
entity_id: input_select.lamp_type
to: "Incandescent"
action:
- service: select.select_option
target:
entity_id: select.dimmerlink_curve
data:
option: "RMS"
Skripte
Sanftes morgendliches Einschalten
script:
morning_light:
alias: "Morning Light"
sequence:
- service: light.turn_on
target:
entity_id: light.dimmerlink_light
data:
brightness_pct: 10
- delay:
seconds: 30
- service: light.turn_on
target:
entity_id: light.dimmerlink_light
data:
brightness_pct: 50
transition: 120 # 2 minutes
Anwesenheitssimulation
script:
presence_simulation:
alias: "Presence Simulation"
sequence:
- repeat:
count: 10
sequence:
- service: light.turn_on
target:
entity_id: light.dimmerlink_light
data:
brightness_pct: "{{ range(30, 80) | random }}"
- delay:
minutes: "{{ range(5, 20) | random }}"
- service: light.turn_off
target:
entity_id: light.dimmerlink_light
- delay:
minutes: "{{ range(10, 30) | random }}"
Szenen
scene:
- name: "Movie"
entities:
light.dimmerlink_light:
state: on
brightness_pct: 15
- name: "Reading"
entities:
light.dimmerlink_light:
state: on
brightness_pct: 80
- name: "Romantic"
entities:
light.dimmerlink_light:
state: on
brightness_pct: 30
Gruppen
light:
- platform: group
name: "All Dimmers"
entities:
- light.dimmerlink_living_room
- light.dimmerlink_bedroom
- light.dimmerlink_kitchen
Template-Sensor für Leistung
Wenn die Lampenleistung bekannt ist:
sensor:
- platform: template
sensors:
dimmer_power:
friendly_name: "Dimmer Power"
unit_of_measurement: "W"
value_template: >
{% set brightness = state_attr('light.dimmerlink_light', 'brightness') | default(0) %}
{% set max_power = 100 %}
{{ (brightness / 255 * max_power) | round(1) }}
Verlauf und Statistik
Zu configuration.yaml hinzufügen:
recorder:
include:
entities:
- light.dimmerlink_light
- sensor.dimmerlink_level
- sensor.dimmerlink_ac_frequency
history:
include:
entities:
- light.dimmerlink_light
5.2 Fehlerbehebung
I2C-Probleme
Gerät nicht gefunden (0x50)
Symptom: Logs don't show "Found i2c device at address 0x50"
Überprüfung:
| Überprüfung | Lösung |
|---|---|
| DimmerLink im I2C-Modus? | Über UART umschalten: 02 5B |
| Stromversorgung angeschlossen? | VCC -> 3,3V, GND -> GND |
| Verdrahtung korrekt? | SDA -> SDA, SCL -> SCL (nicht gekreuzt!) |
| Pull-up-Widerstände? | 4,7-kΩ-Widerstände an SDA und SCL zu 3,3V hinzufügen |
| Leitungen kurz genug? | I2C funktioniert bis zu 30 cm |
Diagnose:
# Add to configuration for debugging
i2c:
sda: GPIO21
scl: GPIO22
scan: true # Enable scanning
id: bus_a
logger:
level: DEBUG
logs:
i2c: DEBUG
Sporadische I2C-Fehler
Symptom: "I2C communication failed" from time to time
Lösungen:
- Frequenz reduzieren:
yaml
i2c:
frequency: 50kHz # Statt 100kHz
- Verzögerungen hinzufügen:
yaml
output:
- platform: template
write_action:
- delay: 1ms # Vor dem Schreiben
- lambda: |-
// ... Code
- Stromversorgung prüfen — instabile Spannung verursacht I2C-Fehler
WiFi-Probleme
ESP32 Doesn't Connect to WiFi
Überprüfung:
- Korrekte SSID und Passwort in
secrets.yaml - WiFi on 2.4 GHz (ESP32 doesn't support 5 GHz)
- Router blockiert keine neuen Geräte
Lösung — Fallback-AP:
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: "dimmerlink-fallback"
password: "12345678"
captive_portal:
If it doesn't connect to WiFi — it will create an access point for configuration.
Häufige Verbindungsabbrüche
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
fast_connect: true
power_save_mode: NONE # Disable power saving
Home Assistant-Probleme
Device Doesn't Appear in HA
- Prüfen, ob das ESPHome-Add-on läuft
- API-Schlüssel in der Konfiguration prüfen
- Home Assistant neu starten
- Manuell hinzufügen: Einstellungen -> Integrationen -> Hinzufügen -> ESPHome
"Entity unavailable"
Causes:
- ESP32 offline
- WiFi issues
- API key mismatch
Überprüfung:
ping dimmerlink.local
Dimmer-Probleme
Lampe flackert
Ursachen und Lösungen:
| Ursache | Lösung |
|---|---|
| LED nicht dimmbar | Use lamps marked "dimmable" |
| Zu geringe Last | Mindestens 10–25 W für stabilen Betrieb |
| Falsche Kurve | LOG für LED ausprobieren |
| Netzstörungen | RC-Snubber am Dimmer-Ausgang hinzufügen |
Lamp Doesn't Turn Off Completely
DimmerLink schaltet den TRIAC bei level=0 vollständig ab. Falls die Lampe trotzdem leuchtet:
- Problem im Dimmer oder der Verdrahtung
- Einige LED-Treiber haben Leckströme
Helligkeitsbereich zu eng
Andere Kurven ausprobieren:
# In Home Assistant Developer Tools
service: select.select_option
target:
entity_id: select.dimmerlink_curve
data:
option: "RMS" # or "LOG"
ESPHome-Probleme
Kompilierungsfehler
„lambda function not allowed"
Einrückung in YAML prüfen — lambda muss korrekt eingerückt sein:
# Correct
write_action:
- lambda: |-
uint8_t data[2] = {0x10, 50};
id(bus_a).write(0x50, data, 2, true);
# Incorrect (missing "|-")
write_action:
- lambda:
uint8_t data[2] = {0x10, 50};
„id not found"
Sicherstellen, dass id: bus_a im Abschnitt i2c: deklariert ist.
OTA funktioniert nicht
- Prüfen, ob ESP32 im gleichen Netzwerk ist
- IP statt Hostname verwenden:
bash
esphome run dimmerlink.yaml --device 192.168.1.100
Diagnose-Befehle
I2C-Prüfung aus ESPHome
Diagnose-Schaltfläche hinzufügen:
button:
- platform: template
name: "I2C Diagnostic"
on_press:
- lambda: |-
ESP_LOGI("diag", "=== I2C Diagnostic ===");
// Check connection
uint8_t reg = 0x00;
uint8_t status = 0;
auto err = id(bus_a).write(0x50, ®, 1, false);
ESP_LOGI("diag", "Write result: %d", err);
err = id(bus_a).read(0x50, &status, 1);
ESP_LOGI("diag", "Read result: %d, status: 0x%02X", err, status);
// Read version
reg = 0x03;
uint8_t version = 0;
id(bus_a).write(0x50, ®, 1, false);
id(bus_a).read(0x50, &version, 1);
ESP_LOGI("diag", "Firmware: %d", version);
// Read frequency
reg = 0x20;
uint8_t freq = 0;
id(bus_a).write(0x50, ®, 1, false);
id(bus_a).read(0x50, &freq, 1);
ESP_LOGI("diag", "AC Frequency: %d Hz", freq);
ESP_LOGI("diag", "=== Done ===");
Alle Operationen protokollieren
logger:
level: DEBUG
logs:
i2c: DEBUG
api: DEBUG
sensor: DEBUG
Werksreset
ESP32
- Flash löschen:
bash
esptool.py --port COM3 erase_flash
- Firmware erneut flashen
DimmerLink
RESET-Befehl senden:
button:
- platform: template
name: "Factory Reset DimmerLink"
on_press:
- lambda: |-
uint8_t data[2] = {0x01, 0x01};
id(bus_a).write(0x50, data, 2, true);
- delay: 3s
Fehlercode-Tabelle
| Code | Name | Ursache | Lösung |
|---|---|---|---|
| 0x00 | OK | — | — |
| 0xF9 | ERR_SYNTAX | Ungültiges Register | Registeradresse prüfen |
| 0xFC | ERR_NOT_READY | Nicht kalibriert oder FLASH-Fehler | 2 Sek. nach dem Einschalten warten |
| 0xFD | ERR_INDEX | Ungültiger Dimmer-Index | 0 verwenden |
| 0xFE | ERR_PARAM | Ungültiger Parameter | level <= 100, curve <= 2 |
5.3 Nächste Schritte
Aktueller Stand
DimmerLink v1.0:
- I2C interface
- UART interface
- Basic dimming (0-100%)
- Three curves (LINEAR, RMS, LOG)
- Auto-detection of mains frequency
- I2C address change
ESPHome Integration v1.0:
- Light entity
- All sensors
- Curve selection
- Diagnostics
- Multi-device
Entwicklungspläne
DimmerLink v2.0 (in Entwicklung)
| Funktion | Status | Beschreibung |
|---|---|---|
| Thermoschutz | In Entwicklung | NTC-Überwachung, PWM-Lüfter |
| Sanfter FADE | In Entwicklung | Hardware-Fade per Befehl |
| Multi-Kanal | Geplant | Bis zu 4 Kanäle pro Modul |
| EEPROM-Einstellungen | Geplant | Pegel und Kurve speichern |
ESPHome Integration v2.0
| Funktion | Status | Beschreibung |
|---|---|---|
| Native Komponente | Verfügbar | External Component |
| Temperaturüberwachung | In Entwicklung | Temperatursensor |
| Lüftersteuerung | In Entwicklung | Kühlungsmanagement |
| Energieüberwachung | Geplant | Integration mit ACS712/CT |
Native ESPHome-Komponente
Eine native externe ESPHome-Komponente ist verfügbar. Sie ermöglicht eine saubere YAML-Konfiguration ohne Lambda-Code:
external_components:
- source: github://robotdyn-dimmer/DimmerLink@main
components: [dimmerlink]
dimmerlink:
id: dimmer1
address: 0x50
light:
- platform: dimmerlink
dimmerlink_id: dimmer1
name: "Light"
sensor:
- platform: dimmerlink
dimmerlink_id: dimmer1
ac_frequency:
name: "AC Frequency"
Erweiterte Projekte
Solar-Router
DimmerLink zur Weiterleitung überschüssiger Solarenergie verwenden:
+---------------+ +---------------+ +---------------+
| Solar Panel |---->| CT Sensor |---->| ESP32 |
+---------------+ +---------------+ | + ESPHome |
| |
+---------------+ +---------------+ | |
| Heater |<----| DimmerLink |<----| |
+---------------+ +---------------+ +---------------+
Mehrraum-System
# Central controller for the whole house
substitutions:
# Dimmer addresses
living_room: "0x50"
bedroom: "0x51"
kitchen: "0x52"
bathroom: "0x53"
# 4 dimmers on one ESP32
Smarter Wecker
# Gradual light turn on for waking up
automation:
- alias: "Sunrise Alarm"
trigger:
- platform: time
at: "07:00:00"
action:
- service: light.turn_on
target:
entity_id: light.bedroom_dimmer
data:
brightness_pct: 1
- repeat:
count: 30
sequence:
- delay: 60
- service: light.turn_on
target:
entity_id: light.bedroom_dimmer
data:
brightness_pct: "{{ repeat.index * 3 }}"
transition: 60
Feedback
Fehler gefunden oder Vorschlag?
- GitHub Issues: DimmerLink Repository
- Dokumentation: rbdimmer.com/docs
Möchten Sie bei der Entwicklung helfen?
- Neue Versionen testen
- Dokumentation und Übersetzungen
- Anwendungsbeispiele
Nützliche Links
| Ressource | Link |
|---|---|
| DimmerLink-Dokumentation | rbdimmer.com/docs |
| ESPHome | esphome.io |
| Home Assistant | home-assistant.io |
| ESPHome I2C | esphome.io/components/i2c |
| ESPHome Light | esphome.io/components/light |
| HACS | hacs.xyz |
Änderungshistorie
| Version | Datum | Änderungen |
|---|---|---|
| 1.0 | 2026-02 | Erste Version |
← - Lambda Reference | Inhaltsverzeichnis | Weiter: FAQ & Fehlerbehebung →