En bref : Tasmota ne peut pas piloter nativement un variateur TRIAC à découpe de phase. Utilisez DimmerLink comme esclave I2C/UART. Sur ESP32 Tasmota : écrivez un script Berry de 5 lignes qui associe tout déclencheur de règle à une écriture de registre I2C à l'adresse 0x50. Sur ESP8266 : utilisez
SerialSend5avec le format de paquet binaire DimmerLink. Home Assistant découvre l'appareil automatiquement via Tasmota MQTT.
Pourquoi Tasmota ne peut pas piloter un TRIAC directement
La commande Dimmer de Tasmota contrôle une sortie PWM interne ou un
relais SWITCH. Elle ne supporte pas la commande de phase TRIAC
(découpe de phase) car cela nécessite une interruption matérielle à
chaque passage par zéro AC (toutes les 10 ms à 50 Hz) avec une
précision de déclenchement inférieure à la milliseconde.
Tasmota exécute une boucle d'événements et la pile WiFi sur le même cœur. Il ne peut pas garantir une latence ISR < 1 ms sous charge WiFi. Brancher directement un module TRIAC rbdimmer et tenter de synchroniser les impulsions de gâchette depuis Tasmota produira du scintillement ou aucune variation de luminosité.
La solution : déléguer la synchronisation à DimmerLink. DimmerLink est un contrôleur dédié Cortex-M0+ qui gère la détection de passage par zéro et le déclenchement du TRIAC de manière autonome. Tasmota envoie uniquement le niveau de luminosité cible (0–100) une fois par commande utilisateur — aucune exigence de synchronisation.
Matériel nécessaire
- Carte ESP32 ou ESP8266 flashée avec Tasmota
- Module DimmerLink
- Module variateur AC rbdimmer (tout calibre de courant)
- Résistances 4,7 kΩ × 2 (pour rappels I2C, en mode I2C)
Étape 1 — Basculer DimmerLink en mode I2C
DimmerLink est livré en mode UART par défaut. Pour l'approche Berry I2C (ESP32), vous devez d'abord le basculer en mode I2C.
Connectez DimmerLink à un adaptateur USB-UART (TX → RX, RX → TX, GND → GND, VCC → 3.3V), puis envoyez la commande SWITCH_I2C à 115200 baud :
Byte sequence: 02 5BDans n'importe quel terminal série (RealTerm, picocom) :
- Ouvrez le port à 115200, 8N1.
- Envoyez les octets bruts :
02 5B. - Réponse attendue :
00(OK). DimmerLink démarre désormais en mode I2C après chaque mise sous tension.
Après le basculement, déconnectez de l'adaptateur UART et câblez en I2C.
Si vous préférez garder DimmerLink en mode UART (plus simple pour ESP8266), passez cette étape et allez directement à l'Étape 3.
Étape 2 — Câblage
Connexion I2C (ESP32 — recommandée)
| ❌ non supporté | Pin ESP32 | Remarques |
|---|---|---|
| VCC | 3,3V | Correspondre à la tension logique du MCU |
| GND | GND | — |
| SDA (TX/SDA) | GPIO21 | Ajouter un rappel 4,7 kΩ vers 3.3V |
| SCL (RX/SCL) | GPIO22 | Ajouter un rappel 4,7 kΩ vers 3.3V |
Connectez les résistances de rappel de SDA et SCL vers 3.3V. Sans elles, le bus I2C ne fonctionnera pas de manière fiable.
3.3V ──┬──────────────┬──
4.7k 4.7k
│ │
ESP32 SDA ──── DL SDA │
ESP32 SCL ──────────── DL SCL
GND ────────────────── DL GND
3.3V ───────────────── DL VCCConnexion UART (ESP8266 ou ESP32)
| ❌ non supporté | ESP8266 | RBDdimmer (ancienne) | Remarques |
|---|---|---|---|
| VCC | 3,3V | 3,3V | — |
| GND | GND | GND | — |
| RX (TX/SDA) | GPIO1 TX* | GPIO17 TX2 | DL RX ← MCU TX |
| TX (RX/SCL) | GPIO3 RX* | GPIO16 RX2 | DL TX → MCU RX |
* GPIO1/3 sur ESP8266 sont partagés avec l'USB. Utilisez
Serial.swap() pour rediriger vers GPIO15/GPIO13, ou utilisez I2C.
// ESP8266 : rediriger Serial vers GPIO15 (TX) / GPIO13 (RX)
Serial.begin(115200);
Serial.swap(); // TX → GPIO15, RX → GPIO13DimmerLink → Module variateur AC
| ❌ non supporté | Module variateur |
|---|---|
| VCC | VCC |
| GND | GND |
| Z-C | Z-C |
| Dim | DIM |
The dimmer module connects to mains AC and the load as described in the Hardware Connection Guide.
Étape 3A — Script Berry Tasmota (ESP32, mode I2C)
Le scripting Berry est disponible uniquement sur ESP32 Tasmota. Il offre un contrôle programmatique complet de l'I2C.
Ouvrez la console web Tasmota et collez :
# Fichier : dimmer_i2c.be — contrôle DimmerLink par I2C
# Registre 0x10 (DIM0_LEVEL) : 0–100 pourcent
import wire
wire.begin() # initialiser le bus I2C une fois au chargement du script
def set_dimmer(level)
var l = int(level)
if l < 0 then l = 0 end
if l > 100 then l = 100 end
wire.beginTransmission(0x50)
wire.write(0x10) # registre DIM0_LEVEL
wire.write(l)
wire.endTransmission()
end
# Associer la commande Dimmer de Tasmota (0–100) à DimmerLink
tasmota.add_rule("Dimmer#State",
def(value) set_dimmer(value) end)
# Associer la commande Power (on/off) à pleine ou zéro luminosité
tasmota.add_rule("Power#State",
def(value)
if value == 1 then set_dimmer(100)
else set_dimmer(0) end
end)Pour le charger automatiquement au démarrage, enregistrez sous
autoexec.be via le gestionnaire de fichiers Tasmota
(Tools → Manage File System).
Fonctionnement :
wire.begin()est appelé une fois au chargement du script pour initialiser le bus I2C — pas à chaque commande.wire.beginTransmission(0x50)adresse DimmerLink à l'adresse I2C par défaut.wire.write(0x10)sélectionne le registre DIM0_LEVEL.wire.write(l)définit la luminosité 0–100%.- La règle se déclenche chaque fois que Tasmota reçoit une commande
Dimmerdepuis la console, par MQTT ou depuis Home Assistant.
Test depuis la console Tasmota
Dimmer 50 → set_dimmer(50) → écriture I2C 50 dans 0x10
Dimmer 0 → set_dimmer(0) → lampe éteinte
Power 0 → set_dimmer(0)Étape 3B — UART Tasmota via SerialSend (ESP8266 et ESP32)
Si Berry n'est pas disponible (ESP8266) ou si vous préférez ne pas
écrire de scripts, utilisez SerialSend5 pour envoyer des paquets
binaires bruts à DimmerLink par UART.
Format de paquet UART DimmerLink pour SET luminosité :
02 53 00 LEVEL
│ │ │ └── luminosité 0–100 (décimal)
│ │ └────── index du canal (toujours 00)
│ └────────── commande SET (0x53)
└────────────── octet de début (toujours 0x02)Dans la console Tasmota :
# Régler la luminosité à 50% (0x32 hex = 50 décimal)
SerialSend5 02530032
# Régler la luminosité à 75% (0x4B hex = 75 décimal)
SerialSend5 0253004B
# Éteindre (0x00 = 0%)
SerialSend5 02530000
# Allumer à fond (0x64 hex = 100 décimal)
SerialSend5 02530064Hex conversion:
Dimmer 50→ 50 decimal → 0x32 hex → packet02 53 00 32. Use any hex calculator or the table in the DimmerLink UART docs.
Automatiser SerialSend avec les règles Tasmota
Associez la valeur interne Dimmer de Tasmota à une commande
SerialSend via les variables Mem et l'astuce WebCmd — ou écrivez
un script Berry pour une conversion propre sur ESP32. Pour ESP8266,
une approche plus simple consiste à utiliser des niveaux fixes via les
règles Tasmota :
Rule1
ON Dimmer#State<20 DO SerialSend5 02530000 ENDON
ON Dimmer#State>=20 DO SerialSend5 02530032 ENDONPour un contrôle progressif à niveau arbitraire sur ESP8266, l'approche Berry sur ESP32 est recommandée.
Étape 4 — Intégration Home Assistant
Une fois que Tasmota contrôle DimmerLink, Home Assistant voit le périphérique ESP comme un nœud Tasmota standard via la découverte automatique MQTT.
Activer la découverte automatique MQTT dans Tasmota :
SetOption19 1 # Activer la découverte MQTT Home AssistantHome Assistant crée automatiquement une entité light avec contrôle de
luminosité. Le curseur de luminosité HA (0–255) est converti en commande
Dimmer Tasmota (0–100), qui déclenche la règle Berry écrivant dans
DimmerLink.
Pour une configuration manuelle de HA (si la découverte est désactivée) :
mqtt:
light:
- name: "AC Dimmer"
command_topic: "cmnd/tasmota_dimmer/Dimmer"
brightness_command_topic: "cmnd/tasmota_dimmer/Dimmer"
brightness_scale: 100
payload_on: "100"
payload_off: "0"
state_topic: "stat/tasmota_dimmer/RESULT"
brightness_state_topic: "stat/tasmota_dimmer/RESULT"
brightness_value_template: >
{{ value_json.Dimmer | default(0) }}Erreurs fréquentes
| Problème | Cause | Solution |
|---|---|---|
| Berry non disponible sur l'appareil | Tasmota sur ESP8266 | Utiliser l'approche UART + SerialSend5 |
La commande Dimmer n'a aucun effet |
Règle non chargée ou coquille | Vérifier la syntaxe tasmota.add_rule ; recharger Berry |
| DimmerLink ne répond pas en I2C | Mauvais mode (toujours UART) | Envoyer 02 5B via UART d'abord |
| I2C instable sous WiFi | Résistances de rappel manquantes | Ajouter 4,7 kΩ sur SDA et SCL |
SerialSend5 envoie un mauvais niveau |
Erreur de conversion hex | 50% = 0x32, 75% = 0x4B, 100% = 0x64 |
| HA affiche le variateur mais le niveau est ignoré | Incompatibilité on_command_type |
Utiliser brightness_scale: 100 dans la config MQTT light |
Alternative — ESPHome au lieu de Tasmota
Si l'approche par scripting Berry dans Tasmota semble complexe, ESPHome propose une intégration native DimmerLink en 5 lignes de YAML et gère automatiquement toute la communication I2C.
See: ESPHome YAML for AC Dimmer and DimmerLink
Checklist rapide
Articles connexes
- ESPHome alternative → ESPHome YAML for AC Dimmer and DimmerLink
- Home Assistant guide → AC Dimmer with Home Assistant and ESPHome
- DimmerLink I2C not detected → DimmerLink Not Detected: I2C vs UART Mode
- Raspberry Pi control → Raspberry Pi AC Dimmer via DimmerLink
Encore des questions ?
Ask on forum.rbdimmer.com or open a GitHub Issue.