Se rendre au contenu

← Web, MQTT & HTTP | Sommaire | Suivant : Référence →

Fonctionnalités avancées — Pilote natif DimmerLink pour Tasmota

Courbes de gradation expliquées

La courbe de gradation détermine comment le pourcentage de luminosité est associé à l'angle de déclenchement réel du TRIAC et donc à la puissance fournie à la charge. Trois courbes sont disponibles, chacune adaptée à différents types de charges.

LINEAR (valeur 0)

L'angle de phase est proportionnel au niveau de luminosité demandé. La relation entre la valeur de commande et la puissance électrique est linéaire.

plaintext
Power delivered
100% |                    /
     |                  /
 50% |              /
     |           /
  0% |        /
     +------------------
     0%     50%     100%
          Level set

Cas d'utilisation : Charges polyvalentes, radiateurs résistifs, moteurs à balais, toute charge où la puissance électrique doit suivre directement la valeur définie. Convient comme point de départ lorsque la courbe optimale est inconnue.

Non recommandé pour : Les ampoules LED ou les ampoules à incandescence où la luminosité perçue est importante.

RMS (valeur 1)

L'angle de phase est ajusté de sorte que la tension RMS (et donc la puissance RMS) soit proportionnelle au niveau défini.

plaintext
Perceived brightness (incandescent)
100% |                    /
     |                  /
 50% |              /
     |           /
  0% |        /
     +------------------
     0%     50%     100%
          Level set

Cas d'utilisation : Ampoules à incandescence et lampes halogènes. Avec la courbe RMS, un réglage de 50 produit environ la moitié de la luminosité perçue par rapport à 100.

Non recommandé pour : Les ampoules LED — les pilotes LED dimmables régulent le courant en interne et la relation entre l'angle de phase et la sortie lumineuse est plus complexe.

LOG (valeur 2)

L'angle de phase suit une courbe logarithmique conçue pour produire des niveaux de luminosité perceptuellement uniformes. L'œil humain répond de façon logarithmique à l'intensité lumineuse (loi de Weber-Fechner), de sorte que des incréments égaux produisent des changements de perception approximativement égaux.

plaintext
Perceived brightness (LED)
100% |                         /
     |                    /
 50% |               /
     |         /
  0% |  /
     +------------------
     0%     50%     100%
          Level set

Cas d'utilisation : Ampoules LED dimmables, éclairage d'ambiance, toute application où une gradation douce à faible niveau est importante. Évite la plainte courante selon laquelle les LED passent de « à peine allumées » à « très lumineuses » sur une petite plage.

Non recommandé pour : Les charges résistives ou inductives où le suivi de puissance (et non la luminosité perçue) est l'objectif.

Sélectionner la bonne courbe

Charge Courbe recommandée Commande
LED dimmable LOG DlCurve 2
Ampoule à incandescence RMS DlCurve 1
Lampe halogène RMS DlCurve 1
Radiateur résistif LINEAR DlCurve 0
Moteur à balais (ventilateur, mixeur) LINEAR DlCurve 0
Inconnu Essayer les trois --

La courbe peut être modifiée à tout moment sans affecter le niveau de luminosité actuel. La nouvelle courbe s'applique à partir de la prochaine commande de changement de luminosité.


Contrôle du fondu (Fade)

Fonctionnement

Le temps de fondu contrôle la durée que prend le matériel MCU pour passer du niveau de luminosité actuel à un niveau nouvellement commandé. Le fondu est entièrement implémenté dans le firmware MCU — une fois qu'un nouveau niveau est écrit via I2C, l'appareil monte en puissance en interne sans autre interaction avec Tasmota.

Calcul du temps

plaintext
Fade time (seconds) = value * 0.1
Valeur Temps de fondu
0 Instantané (sans fondu)
1 100 ms
5 500 ms
10 1,0 seconde
20 2,0 secondes
50 5,0 secondes
100 10,0 secondes
255 25,5 secondes (maximum)

Le fondu est par appareil, pas par canal

Tous les canaux d'un seul appareil partagent le même temps de fondu. Pour avoir des vitesses de fondu différentes sur différents canaux, ils doivent être sur des appareils séparés.

Utiliser le fondu avec les curseurs de l'interface web

Le réglage du fondu affecte toutes les commandes de changement de niveau, y compris celles des curseurs de l'interface web. Avec une valeur de fondu non nulle, déplacer le curseur envoie un nouveau niveau cible et l'appareil effectue une transition en douceur. Déplacer à nouveau le curseur avant la fin du fondu démarre une nouvelle transition à partir de la position actuelle.

Définir et interroger le fondu

plaintext
DlFade 10       # Set device 1 fade to 1.0 second
DlFade2 0       # Set device 2 fade to instant
DlFade          # Query device 1 current fade value

Surveillance de la température

Disponibilité de la fonctionnalité

La surveillance de la température est disponible lorsque le firmware MCU est compilé avec FEATURE_TEMPERATURE. Le pilote détecte cela automatiquement au démarrage en lisant le registre TEMP_CURRENT (0x40). Si le registre retourne 0xFF, la température n'est pas disponible et tous les champs de température sont supprimés.

Lecture de la température

La température brute est stockée dans le registre 0x40 avec un décalage de 50 :

plaintext
Temperature (Celsius) = register_value - 50

Cela permet une plage de -50 °C (valeur de registre 0) à +205 °C (valeur de registre 255). La plage de fonctionnement normale est de 20 °C à 100 °C.

États thermiques

Le firmware MCU gère la protection thermique de manière autonome. Six états sont définis :

État Valeur Description Action du pilote
NORMAL 0 Température en dessous du seuil d'avertissement Aucune
WARNING 1 Température au-dessus du seuil d'avertissement Journalisé au niveau DEBUG
DERATE 2 Réduction active de la sortie pour abaisser la température Aucune — le matériel gère la sortie
CRITICAL 3 Réduction agressive de la sortie Journalisé au niveau ERROR
SHUTDOWN 4 Toutes les sorties désactivées pour des raisons de sécurité Journalisé au niveau ERROR
FAULT 5 Défaillance du capteur de température Journalisé au niveau ERROR

Les états CRITICAL, SHUTDOWN et FAULT déclenchent une entrée de journal au niveau ERROR :

plaintext
DLK: Dev 0x50 thermal CRITICAL

La protection thermique est gérée par le matériel

La MCU gère la réduction et l'arrêt de manière autonome. Tasmota ne peut pas contourner la protection thermique — si l'appareil est en état SHUTDOWN, l'écriture d'une valeur de luminosité n'a aucun effet jusqu'à ce que l'appareil refroidisse et quitte l'arrêt.

Surveillance via MQTT

Avec la température activée, chaque message SENSOR inclut la température actuelle et l'état :

json
{
  "DimmerLink1": {
    "Addr": "0x50",
    "ACFreq": 50,
    "Fade": 0,
    "Ch1": {"Level": 75, "Curve": "LOG"},
    "Temp": 42,
    "Thermal": "NORMAL"
  }
}

Utilisez les règles Tasmota ou un système externe pour répondre aux changements d'état thermique.


Adressage multi-appareils

Le pilote prend en charge jusqu'à quatre appareils DimmerLink sur le même bus I2C (ou répartis sur deux bus). Les appareils sont numérotés de 1 à 4 dans l'ordre détecté lors du scan au démarrage — par ordre croissant d'adresse (0x08 à 0x77).

Numérotation des appareils

Adresse I2C Ordre de détection Numéro d'appareil
0x50 1er trouvé Appareil 1 (suffixe 1 ou sans suffixe)
0x51 2e trouvé Appareil 2 (suffixe 2)
0x52 3e trouvé Appareil 3 (suffixe 3)

Attribution d'adresses uniques

Tous les appareils DimmerLink sont livrés avec l'adresse I2C 0x50. Pour utiliser plusieurs appareils, chacun doit avoir une adresse unique assignée un par un avant de les connecter ensemble.

Étape par étape pour trois appareils :

plaintext
Step 1: Connect Device A only (boots at 0x50)
        Console: DlAddress 0x51
        Result: Device A is now at 0x51
Step 2: Power off. Connect Device B only (boots at 0x50)
        Console: DlAddress 0x52
        Result: Device B is now at 0x52
Step 3: Power off. Connect Device C (keep at 0x50)
        Power on all three together.
        Three devices detected: 0x50, 0x51, 0x52

Vérification de l'adresse

Le pilote vérifie le changement d'adresse en relisant le registre VERSION depuis la nouvelle adresse :

c
if (DL_ValidRead8(&ver, new_addr, DL_REG_VERSION, dev->bus) && ver == DL_FW_VERSION) {
    dev->addr = new_addr;
    // success
}

Si la vérification échoue, la commande retourne une erreur. L'appareil physique a peut-être déjà changé d'adresse — exécutez DlStatus pour confirmer.

Plage d'adresses valide

Les adresses doivent être dans la plage 0x08 à 0x77 (inclus). Les adresses réservées 0x00-0x07 et 0x78-0x7F sont rejetées.

Notes sur les conflits d'adresses I2C

L'adresse par défaut 0x50 entre en conflit avec les appareils EEPROM/FRAM courants (FM24CXX, AT24Cxx, 24C256, 24LC256). Le pilote identifie les appareils DimmerLink spécifiquement par l'octet de version du firmware au registre 0x03, de sorte que les appareils non-DimmerLink à l'adresse 0x50 sont silencieusement ignorés. Cependant, pour éviter les transactions de bus indésirables, changez l'adresse DimmerLink si des appareils EEPROM partagent le bus.

Ordre de scan entre les bus

Si deux bus I2C sont actifs, le scan traite le bus 0 avant le bus 1. Un appareil sur le bus 0 à l'adresse 0x51 sera trouvé avant un appareil sur le bus 1 à l'adresse 0x50.


Migration depuis le pilote Berry

Si vous avez utilisé le pilote Berry DimmerLink.be et passez au pilote natif, notez les différences suivantes.

Ce qui change

Aspect Pilote Berry Pilote natif
Préfixe de commande DimmerLink, DimmerLink_Kitchen, etc. Dl
Sélection d'appareil Par étiquette (nom) Par ordre de détection (suffixe numérique)
Adressage des canaux Chiffre final : DimmerLink_Kitchen2 Syntaxe ch,level : DlDim 2,50
Commande de courbe DimmerLink_KitchenCurve 2 DlCurve 2
Commande de fondu DimmerLink_KitchenFade 10 DlFade 10
Relais virtuel Oui — Power ON/OFF Non fourni
Préréglages DimmerLinkPreset night Non fourni
Scanner de bus DimmerLink.scan() dans la console Berry Non fourni ; utiliser I2CScan
Instances nommées Oui — étiquettes dans dimmerlink.json Non fourni — appareils numérotés
Configuration /dimmerlink.json sur le système de fichiers user_config_override.h à la compilation
Clé de télémétrie MQTT Étiquette d'appareil (ex. "Kitchen") DimmerLink1, DimmerLink2, etc.

Étapes de migration

  1. Flasher le nouveau firmware incluant USE_DIMMERLINK.
  2. Supprimer les fichiers du pilote Berry du système de fichiers (DimmerLink.be, dimmerlink_loader.be) ou retirer la ligne load('dimmerlink_loader.be') de autoexec.be. Le pilote Berry et le pilote natif peuvent coexister mais répondront tous deux au même appareil et généreront une télémétrie en double.
  3. Mettre à jour les automatisations MQTT — remplacer les noms de commandes DimmerLink_ par DlDim, DlCurve, DlFade.
  4. Mettre à jour les abonnements MQTT — remplacer les clés d'appareils nommés (ex. "Kitchen") par des clés numérotées ("DimmerLink1", "DimmerLink2").
  5. Mettre à jour les appels HTTP API — remplacer DimmerLink_Kitchen%2075 par DlDim%2075 (ou DlDim2%2075 pour le deuxième appareil).
  6. Relais virtuels — si vous utilisiez Power pour basculer les appareils, implémentez une logique équivalente avec les règles Tasmota et les commandes DlDim.
  7. Préréglages — si vous utilisiez DimmerLinkPreset, créez des règles Tasmota ou des scripts Berry équivalents qui émettent des commandes DlDim.