Ir al contenido

← Uso avanzado | Contenido | Siguiente: Integración Lambda →

DimmerLink — Integración con ESPHome

Atenuación AC sin parpadeo para Home Assistant. Un controlador de sincronización dedicado que elimina el problema n.°1 de los dimmers TRIAC.




❌ El problema

Using ESPHome's ac_dimmer component?

  • 💡 Parpadeo en niveles bajos de brillo
  • Conflictos WiFi — las interrupciones alteran la sincronización
  • 🔥 ESP8266 inestable — recursos insuficientes para código crítico en tiempo
  • 📝 Ajuste complejo — la sincronización depende del tipo de carga y la calidad de la red

«La lámpara tiene un parpadeo irregular»ESPHome Issue #4131



✅ La solución

DimmerLink — un módulo compacto con un Cortex-M0+ dedicado que gestiona TODAS las operaciones críticas en tiempo: detección de cruce por cero, cálculo del ángulo de fase y control de la puerta TRIAC con precisión de microsegundos.

Your ESP just sends: "Set brightness to 50%" via I2C. That's it.

  • Cero parpadeo — sincronización por hardware, sin jitter de software
  • 3 líneas de YAML — sin interrupciones, sin bibliotecas, sin conflictos
  • Funciona en cualquier ESP — ESP8266, ESP32, ESP32-S2/S3/C3
  • Auto 50/60 Hz — detección automática de frecuencia de red
  • 3 curvas de atenuación — Lineal, RMS, Logarítmica



ac_dimmer DimmerLink
Parpadeo ⚠️ Frecuente en niveles bajos (#4131) Nunca — sincronización por hardware
Soporte ESP8266 ⚠️ Inestable (conflictos de interrupciones) Estable — no requiere interrupciones
Uso de CPU Alto (ISR crítico en tiempo) < 1% (solo escrituras I2C)
Interferencia WiFi Sí (interrupciones vs pila WiFi) Ninguna
Complejidad de configuración Media (requiere ajustes) YAML simple
Curvas de atenuación Solo software 3 curvas por hardware
Frecuencia AC Configuración manual Detección automática 50/60 Hz
Hardware adicional $0 Módulo por $1.99

Cuándo usar ac_dimmer: Si ya funciona bien en tu instalación, ¡sigue usándolo!

Cuándo usar DimmerLink: Problemas de parpadeo, ESP8266, múltiples dimmers o si quieres simplicidad plug-and-play.


DimmerLink




Dos métodos de integración

DimmerLink soporta dos enfoques para la integración con ESPHome:


Un componente ESPHome listo para usar con configuración YAML clara. No requiere código C++ ni lambda.

yaml
external_components:
  - source: github://robotdyn-dimmer/DimmerLink@main
    components: [dimmerlink]
    refresh: 1d

dimmerlink:
  id: dimmer1
  address: 0x50

light:
  - platform: dimmerlink
    dimmerlink_id: dimmer1
    name: "Dimmer"

Ideal para: La mayoría de usuarios. YAML simple, comunicación I2C automática, sensores, selectores y botones integrados.

Documentación completa del componente


2. Integración Lambda (Avanzado)

Acceso directo a registros I2C mediante funciones lambda de ESPHome. Control total sobre el protocolo de comunicación.

yaml
output:
  - platform: template
    id: dimmer_out
    type: float
    write_action:
      - lambda: |-
          uint8_t level = (uint8_t)(state * 100.0f);
          uint8_t data[2] = {0x10, level};
          id(bus_a).write(0x50, data, 2, true);

light:
  - platform: monochromatic
    name: "Dimmer"
    output: dimmer_out

Ideal para: Usuarios avanzados que necesitan lógica personalizada, configuraciones no estándar o quieren entender el protocolo I2C en detalle.

Documentación Lambda completa | Referencia Lambda




Comparación de métodos de integración

Característica Componente externo Integración Lambda
Complejidad de configuración YAML simple Requiere lambdas C++
Líneas de código ~30 líneas ~100+ líneas
Sensores y estado Integrados Implementación manual
Selección de curva de atenuación Integrados Implementación manual
Reinicio / Recalibración Botones integrados Comandos manuales
Múltiples dispositivos Soporte nativo Manual por dispositivo
Personalización Opciones estándar Flexibilidad total
Manejo de errores I2C Automático Manual



Arquitectura

text
Home Assistant
      │
      │ WiFi (Native API)
      ▼
   ESP32 + ESPHome
      │
      │ I2C (100 kHz)
      ▼
  DimmerLink
      │
      │ Zero-Cross + Gate
      ▼
   AC Dimmer (TRIAC)
      │
      │ AC 110/220V
      ▼
    Lamp



Inicio rápido


Cableado

text
ESP32          DimmerLink
─────          ──────────
3.3V     →     VCC
GND      →     GND
GPIO21   →     SDA
GPIO22   →     SCL


Configuración mínima (Componente externo)

yaml
esphome:
  name: dimmerlink

esp32:
  board: esp32dev

logger:
api:
ota:

wifi:
  ssid: "YOUR_WIFI"
  password: "YOUR_PASSWORD"

external_components:
  - source: github://robotdyn-dimmer/DimmerLink@main
    components: [dimmerlink]
    refresh: 1d

i2c:
  sda: GPIO21
  scl: GPIO22

dimmerlink:
  id: dimmer1

light:
  - platform: dimmerlink
    dimmerlink_id: dimmer1
    name: "Dimmer"
    gamma_correct: 1.0



Tipos de entidades (Componente externo)

Entidad Plataforma Descripción
Light dimmerlink Control de brillo (0–100%)
Sensor dimmerlink Frecuencia AC, nivel de brillo, versión de firmware
Binary Sensor dimmerlink Estado de disponibilidad, indicador de error, estado de calibración
Select dimmerlink Curva de atenuación (LINEAR / RMS / LOG)
Button dimmerlink Comandos de reinicio y recalibración



Documento Descripción
Comunicación I2C Protocolo I2C y mapa de registros
Conexión de hardware Diagramas de conexión
Guía de inicio rápido Primeros pasos con DimmerLink
FAQ y solución de problemas Problemas frecuentes y soluciones



Historial de versiones

Versión Fecha Cambios
1.0 2026-02 Versión inicial: documentación de integración lambda
1.1 2026-02 Añadido componente externo

← Uso avanzado | Contenido | Siguiente: Integración Lambda →