← 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 :
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 |