Se rendre au contenu

← Fonctionnalités avancées | Sommaire

Reference & Troubleshooting — DimmerLink Native Tasmota Driver

Dépannage

Appareil non détecté au démarrage

Symptôme : Aucune ligne DLK: dans le journal série. DlStatus retourne {"Command":"Unknown"} ou {"Command":"Error"}.

Vérification Résolution
Mode I2C DimmerLink est livré avec UART activé. Passez en mode I2C en utilisant la commande UART SWITCH_I2C (0x5B) avant de connecter au bus I2C.
Câblage physique Vérifiez que SDA, SCL, GND et VCC sont connectés. SDA et SCL se connectent directement (sans croisement), contrairement à UART.
Résistances de rappel Ajoutez des résistances de 4,7 kOhm de SDA à 3,3 V et de SCL à 3,3 V. Les résistances de rappel internes de l'ESP32/ESP8266 sont insuffisantes.
Broches I2C dans Tasmota Confirmez que les broches GPIO sont assignées comme I2C SDA et I2C SCL dans Configuration > Configure Module.
Temps de démarrage de l'appareil L'appareil nécessite ~2 secondes après la mise sous tension pour la calibration de la fréquence AC. Redémarrez Tasmota s'il a démarré avant que l'appareil soit prêt.
USE_DIMMERLINK non défini Confirmez que la définition est dans user_config_override.h et que le firmware a été recompilé.
USE_I2C manquant Ajoutez #define USE_I2C à user_config_override.h si vous compilez un environnement allégé.
Incompatibilité de version de firmware Le pilote nécessite que le registre 0x03 retourne exactement 0x01. Les versions de firmware différentes sont ignorées.

Appareil détecté mais commandes ignorées

Symptôme : DlStatus retourne des données mais DlDim n'a pas d'effet visible.

Vérification Résolution
État READY de l'appareil Vérifiez DlStatus — si "Ready": false, l'appareil est encore en cours de calibration. Attendez et réessayez.
Code d'erreur dans le statut Vérifiez le champ LastError. 0xFE = paramètre hors plage. 0xFC = erreur d'écriture EEPROM.
Arrêt thermique Si ThermalState est SHUTDOWN, les sorties sont désactivées. Laissez l'appareil refroidir.
Câblage de la charge Confirmez que la charge est correctement connectée au module TRIAC.

Erreurs I2C ou communication intermittente

Symptôme : Appareil détecté mais DlStatus affiche des données périmées ou des erreurs apparaissent dans le journal.

Vérification Résolution
Longueur des fils Maintenez les fils I2C en dessous de 30 cm. Les fils plus longs nécessitent des résistances de rappel plus fortes ou des tampons I2C.
Valeur de résistance de rappel Les fils plus courts avec des résistances de rappel fortes (2,2 kOhm) améliorent l'intégrité du signal. N'utilisez pas de valeurs inférieures à 1 kOhm.
Alimentation électrique Ajoutez un condensateur de découplage de 100 nF entre VCC et GND près de l'appareil DimmerLink.
Conflit d'adresse Utilisez I2CScan pour vérifier les appareils partageant la même adresse.
Conflits GPIO Ne placez pas SDA ou SCL sur des broches GPIO utilisées à d'autres fins (ADC, touch, broches de démarrage).

La calibration prend trop de temps

Symptôme : L'appareil affiche "Ready": false pendant une longue période.

Vérification Résolution
Connexion AC La MCU détecte la fréquence AC depuis le secteur. Si aucune charge AC n'est connectée, la calibration ne peut pas se terminer.
Détection de fréquence Exécutez DlStatus — si ACFreq affiche 0, l'appareil n'a pas détecté la fréquence AC.
Forcer la recalibration Envoyez DlRecalibrate pour redémarrer le cycle de calibration.

Le changement d'adresse échoue

Symptôme : DlAddress 0x51 retourne une erreur, ou l'appareil disparaît.

Vérification Résolution
Délai de vérification Le pilote lit VERSION depuis la nouvelle adresse après 50 ms. Si l'appareil est lent, la vérification peut échouer même si l'adresse a changé. Coupez l'alimentation et redémarrez Tasmota.
Conflit à la nouvelle adresse Si un autre appareil occupe l'adresse cible, des collisions se produiront. Scannez d'abord le bus avec I2CScan.
Trouver l'appareil Exécutez I2CScan ou redémarrez Tasmota (qui rescanne) pour découvrir l'adresse actuelle réelle.

Température non affichée

Symptôme : Aucune ligne de température dans l'affichage des capteurs. Pas de Temp ou Thermal dans MQTT.

Vérification Résolution
Fonctionnalité du firmware Le firmware MCU doit inclure FEATURE_TEMPERATURE. Vérifiez auprès du fournisseur de l'appareil.
Valeur du registre Au démarrage, le pilote lit le registre 0x40. La valeur 0xFF signifie aucun capteur. Toute autre valeur signifie que le capteur est présent.

Problèmes de compilation

Symptôme Résolution
Erreur USE_DIMMERLINK non défini Vérifiez que user_config_override.h est dans le répertoire tasmota/, pas à la racine du projet.
Pilote absent du binaire USE_I2C n'est pas activé pour l'environnement.
Avertissement de conflit XI2C_100 Vérifiez I2CDEVICES.md — le slot 100 est réservé pour DimmerLink.
Erreur de linkage sur I2cRead8 / I2cWrite8 USE_I2C est manquant.

Codes d'erreur

Code Nom Signification
0x00 OK Aucune erreur
0xF9 ERR_SYNTAX Adresse de registre invalide
0xFC ERR_NOT_READY Erreur d'écriture EEPROM (échec d'écriture flash)
0xFD ERR_INDEX Index de canal de variateur invalide
0xFE ERR_PARAM Parameter value out of range (level > 100, curve > 2, address outside 0x08-0x77)

Les codes d'erreur sont lus depuis le registre d'appareil 0x02 après les opérations d'écriture. La commande DlStatus affiche le dernier code d'erreur s'il est non nul comme "LastError":"0xFE". Les codes d'erreur se réinitialisent automatiquement lorsqu'une opération réussie suivante est terminée.


Carte des registres I2C

Adresse Registre Accès Valeurs
0x00 STATUS R Bit 0 = READY, Bit 1 = ERROR
0x01 COMMAND W 0x00=NOP, 0x01=RESET, 0x02=RECALIBRATE
0x02 ERROR R 0x00=OK, 0xF9=SYNTAX, 0xFC=NOT_READY, 0xFD=INDEX, 0xFE=PARAM
0x03 VERSION R 0x01 (firmware version fingerprint)
0x10 DIM0_LEVEL R/W 0-100
0x11 DIM0_CURVE R/W 0=LINEAR, 1=RMS, 2=LOG
0x12 DIM1_LEVEL R/W 0-100
0x13 DIM1_CURVE R/W 0=LINEAR, 1=RMS, 2=LOG
0x14 DIM2_LEVEL R/W 0-100
0x15 DIM2_CURVE R/W 0=LINEAR, 1=RMS, 2=LOG
0x16 DIM3_LEVEL R/W 0-100
0x17 DIM3_CURVE R/W 0=LINEAR, 1=RMS, 2=LOG
0x18 FADE R/W 0-255 (x100ms)
0x20 AC_FREQ R 50 or 60
0x21 AC_PERIOD_L R Half-wave period low byte
0x22 AC_PERIOD_H R Half-wave period high byte
0x23 CALIBRATION R 0=busy, 1=complete
0x30 I2C_ADDRESS R/W 0x08-0x77
0x40 TEMP_CURRENT R raw-50 = Celsius; 0xFF = no sensor
0x41 TEMP_STATE R 0-5 (thermal state)

Particularité de lecture I2C (exigence de lecture factice)

Le firmware MCU nécessite une lecture factice avant chaque lecture réelle pour définir correctement le pointeur de registre interne. Le pilote gère cela de manière transparente :

c
uint8_t DL_Read8(uint8_t addr, uint8_t reg, uint8_t bus) {
    I2cRead8(addr, reg, bus);           // Dummy: sets register pointer
    return I2cRead8(addr, reg, bus);    // Real read
}

Ce comportement est une exigence matérielle de la MCU et doit être préservé dans tout code qui communique directement avec l'appareil.


Référence des états thermiques

État Valeur du registre Température typique Comportement
NORMAL 0 En dessous de ~60 °C Fonctionnement complet
WARNING 1 ~60-70 °C Surveillance uniquement ; aucun changement de sortie
DERATE 2 ~70-80 °C La MCU réduit progressivement la sortie
CRITICAL 3 ~80-85 °C La MCU réduit agressivement la sortie
SHUTDOWN 4 Au-dessus de ~85 °C Toutes les sorties désactivées
FAULT 5 N/A Défaillance du capteur de température détectée