Se rendre au contenu

← Vue d'ensemble du pilote natif | Sommaire | Suivant : Commandes →

Build & Flash — DimmerLink Native Tasmota Driver

Prérequis

Logiciel

Prérequis Détails
PlatformIO IDE ou CLI. Installer depuis https://platformio.org ou comme extension VS Code
Code source Tasmota Cloner depuis https://github.com/arendst/Tasmota ou utiliser votre fork existant
Python 3 Requis par le système de compilation PlatformIO
Git Pour cloner et gérer les sources

Matériel

Prérequis Détails
Carte ESP32 ou ESP8266 Toute variante ESP32 (tasmota32, tasmota32c3, tasmota32s3, etc.) ou ESP8266 (tasmota, tasmota-sensors, etc.)
Appareil DimmerLink Contrôleur de gradateur MCU TRIAC avec interface I2C activée
Câblage I2C Connexions SDA, SCL, GND, VCC avec résistances de tirage appropriées
Câble USB Pour le flash (ou capacité de mise à jour OTA si re-flash)

Mode I2C DimmerLink

L'appareil DimmerLink est livré avec l'interface UART activée par défaut. Avant de le connecter au bus I2C de Tasmota, l'appareil doit être basculé en mode I2C à l'aide de la commande UART SWITCH_I2C (0x5B). Référez-vous à la documentation matérielle DimmerLink pour cette procédure. Après le basculement, l'appareil démarre en mode I2C et le changement est sauvegardé dans la mémoire flash interne de l'appareil.

Activation du pilote

Le pilote est conditionné par deux gardes préprocesseur :

c
#ifdef USE_I2C
#ifdef USE_DIMMERLINK

Les deux doivent être actifs. USE_I2C est généralement activé dans la configuration par défaut de votre carte. USE_DIMMERLINK doit être ajouté explicitement.

Étape 1 : Créer ou ouvrir user_config_override.h

Ce fichier se trouve à :

plaintext
tasmota/user_config_override.h

S'il n'existe pas, créez-le à cet emplacement.

Étape 2 : Ajouter la définition

c
#ifndef USE_DIMMERLINK
  #define USE_DIMMERLINK
#endif

Étape 3 : Confirmer que I2C est activé

Vérifiez que USE_I2C est défini dans votre environnement cible. Pour tasmota32 (ESP32) et tasmota (ESP8266), c'est activé par défaut. Si vous compilez un environnement allégé (ex. tasmota-lite), vérifiez dans tasmota/tasmota_configurations.h que USE_I2C est présent.

Enregistrement du pilote

Une fois les deux définitions actives, le pilote s'auto-enregistre dans la table de dispatch de Tasmota via la fonction Xdrv94 et revendique le slot I2C XI2C_100 (ID d'appareil 100). Aucune autre modification au niveau du code source n'est nécessaire.

Options de configuration

Deux définitions optionnelles contrôlent le comportement à l'exécution. Placez-les dans user_config_override.h.

USE_DIMMERLINK_ADDR

Définit l'adresse de départ attendue pour le scan I2C. Le pilote scanne tout de même la plage d'adresses I2C valide complète (0x08 à 0x77) et identifie les appareils en lisant le registre VERSION. La valeur par défaut est fournie à titre documentaire.

c
// Default: 0x50 (factory default for DimmerLink)
#define USE_DIMMERLINK_ADDR  0x50

USE_DIMMERLINK_CHANNELS

Définit le nombre de canaux configurés par appareil détecté.

c
// Default: 4 (maximum)
#define USE_DIMMERLINK_CHANNELS  4

Plage valide : 1 à 4. Définissez ce nombre selon le nombre réel de canaux de charge physiquement câblés à votre matériel DimmerLink.

c
// Example: single-channel installation
#define USE_DIMMERLINK_CHANNELS  1
// Example: two-channel installation
#define USE_DIMMERLINK_CHANNELS  2

Limites à la compilation

Elles sont fixées dans le code source et ne peuvent pas être modifiées via user_config_override.h :

Constante Valeur Signification
DL_MAX_DEVICES 4 Nombre maximum d'appareils détectés simultanément
DL_MAX_CHANNELS 4 Nombre maximum de canaux par appareil
DL_FW_VERSION 0x01 Empreinte de version de firmware requise

Exemple complet de user_config_override.h

c
// user_config_override.h — DimmerLink native driver configuration
// Enable DimmerLink native I2C driver (requires USE_I2C)
#ifndef USE_DIMMERLINK
  #define USE_DIMMERLINK
#endif
// Default I2C address (informational — driver scans full bus range)
#ifndef USE_DIMMERLINK_ADDR
  #define USE_DIMMERLINK_ADDR  0x50
#endif
// Number of channels per device (1-4)
// Set to match the physical wiring of your DimmerLink hardware
#ifndef USE_DIMMERLINK_CHANNELS
  #define USE_DIMMERLINK_CHANNELS  4
#endif

Câblage matériel I2C

Connexions des broches

Broches ESP32 par défaut :

Broche DimmerLink Broche ESP32 Notes
VCC 3.3V DimmerLink accepte 1,8V, 3,3V ou 5V — aucun convertisseur de niveau requis
GND GND Masse commune
SDA GPIO21 (par défaut) Tout GPIO configuré comme I2C SDA dans Tasmota
SCL GPIO22 (par défaut) Tout GPIO configuré comme I2C SCL dans Tasmota

Broches ESP8266 par défaut :

Broche DimmerLink Broche ESP8266 Notes
VCC 3.3V Identique à ESP32
GND GND Masse commune
SDA GPIO4 (D2) I2C SDA par défaut sur la plupart des cartes ESP8266
SCL GPIO5 (D1) I2C SCL par défaut sur la plupart des cartes ESP8266

Sur les deux plateformes, les broches I2C peuvent être remappées via la configuration du module (Configuration > Configure Module).

Schéma

plaintext
3.3V
           |
      4.7k | 4.7k
           |     |
MCU        |     |     DimmerLink
SDA  ------+-----+---- SDA
SCL  ------------+---- SCL
GND   ----------------  GND
3.3V  ----------------  VCC

Résistances de tirage

Des résistances de tirage externes sont requises. ESP32 et ESP8266 ont des résistances de tirage internes faibles (~45 kOhm) insuffisantes pour I2C.

Longueur du fil Valeur de tirage recommandée
Moins de 10 cm 4,7 kOhm
10 à 30 cm 2,2 à 4,7 kOhm
Plus de 30 cm 1 à 2,2 kOhm (non recommandé ; utiliser des fils plus courts)

Placez les résistances entre les lignes SDA/SCL et 3,3V. Une paire de résistances sert l'ensemble du bus — n'ajoutez pas de résistances de tirage par appareil lorsque plusieurs appareils partagent le même bus.

Niveaux de tension

DimmerLink accepte une VCC de 1,8V à 5V et ses niveaux logiques correspondent à VCC. À 3,3V (niveau standard ESP32/ESP8266), aucun convertisseur de niveau n'est nécessaire.

Vitesse du bus I2C

L'appareil DimmerLink fonctionne à 100 kHz (mode standard). La vitesse I2C par défaut de Tasmota est appropriée. Ne configurez pas le bus I2C au-delà de 100 kHz pour cet appareil.

Deuxième bus I2C (ESP32)

Tasmota supporte deux bus I2C sur ESP32, ESP8266, ESP32-C6, ESP32-H2, ESP32-P4, ESP32-S2 et ESP32-S3. Le pilote scanne les deux bus automatiquement. Si vous avez d'autres appareils I2C sur le Bus 1 et souhaitez isoler DimmerLink sur le Bus 2, configurez la deuxième paire SDA/SCL dans la configuration du module de Tasmota et connectez DimmerLink là. Aucune modification du côté du pilote n'est nécessaire.

Compilation avec PlatformIO

Commande de compilation

bash
# ESP8266 (standard Tasmota)
pio run -e tasmota
# ESP32 (standard)
pio run -e tasmota32
# ESP32-C3
pio run -e tasmota32c3
# ESP32-S3
pio run -e tasmota32s3

Sélectionnez votre environnement cible dans platformio_override.ini sous default_envs.

Confirmer que le pilote est compilé

Après une compilation réussie, vérifiez que le pilote est inclus :

bash
pio run -e tasmota32 2>&1 | grep -i dimmerlink

Si le pilote est compilé, vous verrez des références aux symboles Xdrv94 ou DimmerLink dans la sortie. Si rien n'apparaît, vérifiez que USE_DIMMERLINK est défini et que USE_I2C est actif pour l'environnement sélectionné.

Impact mémoire

Ressource Utilisation
RAM (heap) ~40 octets par appareil ; moins de 250 octets pour 4 appareils à 4 canaux
Flash (code) ~4 à 6 Ko selon la configuration de compilation

Flasher le firmware

Via PlatformIO (USB)

Connectez la carte via USB et exécutez :

bash
# ESP8266
pio run -e tasmota --target upload
# ESP32
pio run -e tasmota32 --target upload

PlatformIO détecte automatiquement le port série. Si plusieurs ports sont disponibles, spécifiez explicitement :

bash
pio run -e tasmota32 --target upload --upload-port COM3

Via OTA (interface web Tasmota)

Si l'appareil exécute déjà Tasmota :

  1. Compiler le firmware (ex. pio run -e tasmota32)
  2. Le binaire de sortie se trouve dans .pio/build//firmware.bin
  3. Dans l'interface web Tasmota : Firmware Upgrade > Upgrade by file upload
  4. Sélectionner firmware.bin et cliquer sur Start upgrade

Via esptool.py (manuel)

bash
# ESP32
esptool.py --chip esp32 --port COM3 --baud 921600 \
  write_flash -z 0x0 .pio/build/tasmota32/firmware.bin
# ESP8266
esptool.py --chip esp8266 --port COM3 --baud 921600 \
  write_flash -z 0x0 .pio/build/tasmota/firmware.bin

Ajustez --chip, --port et le chemin du firmware pour votre environnement.

Vérification

Sortie du journal série

Connectez un terminal série (115200 bauds, 8N1) et observez le journal de démarrage. Une détection réussie produit :

plaintext
DLK: DimmerLink v1 at 0x50 bus1 (4ch, 50Hz, READY)

Si aucun appareil DimmerLink n'est trouvé, aucune ligne DLK: n'apparaît dans le journal de démarrage.

Vérification par console

Après le démarrage, interroger l'appareil :

plaintext
DlStatus

Un appareil connecté répond avec :

json
{
  "DimmerLink1": {
    "Addr": "0x50",
    "Bus": 1,
    "Ready": true,
    "FW": 1,
    "ACFreq": 50,
    "Fade": 0,
    "Ch1": {"Level": 0, "Curve": "LINEAR"},
    "Ch2": {"Level": 0, "Curve": "LINEAR"},
    "Ch3": {"Level": 0, "Curve": "LINEAR"},
    "Ch4": {"Level": 0, "Curve": "LINEAR"}
  }
}

Si la commande renvoie {"Command":"Unknown"}, le pilote n'est pas compilé.

Scan I2C

La commande de scan I2C intégrée à Tasmota confirme que l'appareil est sur le bus :

plaintext
I2CScan

Confirmation dans l'interface web

Naviguer vers http:///. Avec DimmerLink détecté, la page affiche des curseurs de luminosité et des lignes de données de capteurs. L'absence de curseurs indique qu'aucun appareil n'a été détecté.