Se rendre au contenu

← Commandes | Sommaire | Suivant : Fonctionnalités avancées →

Web UI, MQTT & HTTP — DimmerLink Native Tasmota Driver

Utilisation de l'interface web

Tableau de bord

Curseurs de luminosité

Lorsqu'un ou plusieurs appareils DimmerLink sont détectés, la page principale de Tasmota (http:///) affiche un curseur de luminosité pour chaque canal actif.

La disposition des curseurs est :

  • Pour un seul appareil, les curseurs sont étiquetés DL Ch1, DL Ch2, etc.
  • Pour plusieurs appareils, les curseurs sont étiquetés DL1 Ch1, DL1 Ch2, DL2 Ch1, etc.

Les curseurs vont de 0 (éteint) à 100 (pleine luminosité). Faire glisser le curseur et le relâcher envoie une commande DlDim au canal correspondant. Le curseur reflète le niveau de luminosité actuel stocké dans le pilote et se met à jour lorsque le niveau change depuis n'importe quelle source (commande, MQTT, etc.).

Affichage du capteur

La section capteur de la page principale affiche un tableau d'état en lecture seule pour chaque appareil :

Étiquette de ligne Valeur affichée Exemple
DimmerLink1 Ch1 Luminosité et courbe 75% (LOG)
DimmerLink1 Ch2 Luminosité et courbe 30% (RMS)
DimmerLink1 AC Fréquence secteur détectée 50 Hz
DimmerLink1 Fade Temps de fondu (brut et secondes) 10 (1.0s)
DimmerLink1 Temp Température et état thermique 42 C (NORMAL)

La ligne Temp n'apparaît que si la fonctionnalité de température est disponible sur le matériel. Toutes les lignes se mettent à jour à chaque actualisation de la page web ; la section capteur n'est pas un flux push en direct.


Télémétrie MQTT

Publication de télémétrie

Le pilote contribue au message périodique tele//SENSOR de Tasmota (le hook FUNC_JSON_APPEND). L'intervalle de télémétrie est contrôlé par le réglage TelePeriod de Tasmota (par défaut 300 secondes).

Structure JSON — appareil unique

json
{
  "Time": "2026-04-16T12:00:00",
  "DimmerLink1": {
    "Addr": "0x50",
    "ACFreq": 50,
    "Fade": 10,
    "Ch1": {"Level": 75, "Curve": "LOG"},
    "Ch2": {"Level": 30, "Curve": "RMS"},
    "Ch3": {"Level": 0, "Curve": "LINEAR"},
    "Ch4": {"Level": 0, "Curve": "LINEAR"},
    "Temp": 42,
    "Thermal": "NORMAL"
  }
}

Structure JSON — plusieurs appareils

Lorsque plusieurs appareils sont présents, tous apparaissent comme des clés séparées dans le même message SENSOR :

json
{
  "Time": "2026-04-16T12:00:00",
  "DimmerLink1": {
    "Addr": "0x50",
    "ACFreq": 50,
    "Fade": 0,
    "Ch1": {"Level": 75, "Curve": "LINEAR"},
    "Ch2": {"Level": 0, "Curve": "LINEAR"},
    "Ch3": {"Level": 0, "Curve": "LINEAR"},
    "Ch4": {"Level": 0, "Curve": "LINEAR"}
  },
  "DimmerLink2": {
    "Addr": "0x51",
    "ACFreq": 50,
    "Fade": 5,
    "Ch1": {"Level": 50, "Curve": "LOG"},
    "Ch2": {"Level": 0, "Curve": "LINEAR"},
    "Ch3": {"Level": 0, "Curve": "LINEAR"},
    "Ch4": {"Level": 0, "Curve": "LINEAR"}
  }
}

Descriptions des champs

Champ Type Description
Addr chaîne Adresse I2C en hex, ex. "0x50"
ACFreq entier Fréquence secteur détectée, 50 ou 60 Hz
Fade entier Réglage du temps de fondu actuel (0-255, unités de 100 ms)
Ch1 ... Ch4 objet Données par canal
Ch1.Level entier Luminosité en pourcentage (0-100)
Ch1.Curve chaîne Courbe de variation : "LINEAR", "RMS" ou "LOG"
Temp entier Température en Celsius (uniquement si le matériel le supporte)
Thermal chaîne État de protection thermique (uniquement avec capteur de température)

Les champs Temp et Thermal sont omis si le firmware MCU n'a pas FEATURE_TEMPERATURE activé, ou si le registre de température retourne 0xFF.

Envoi de commandes via MQTT

Les commandes sont envoyées à cmnd// avec la charge utile comme argument :

plaintext
Topic:   cmnd/my-device/DlDim
Payload: 75
Topic:   cmnd/my-device/DlDim
Payload: 2,30
Topic:   cmnd/my-device/DlCurve
Payload: 2
Topic:   cmnd/my-device/DlFade
Payload: 10

Les réponses aux commandes sont publiées sur stat//RESULT :

json
{"DlDim1":{"Ch1":75,"Ch2":30,"Ch3":0,"Ch4":0}}

API HTTP

Toutes les commandes Tasmota sont accessibles via HTTP GET en utilisant le point de terminaison /cm.

Syntaxe

plaintext
http:///cm?cmnd=%20

L'espace entre la commande et l'argument doit être encodé en URL comme %20.

Exemples avec curl

bash
# Set device 1, channel 1 to 75%
curl "http://192.168.1.100/cm?cmnd=DlDim%2075"
# Set device 1, channel 2 to 30%
curl "http://192.168.1.100/cm?cmnd=DlDim%202,30"
# Set device 2, channel 1 to 50%
curl "http://192.168.1.100/cm?cmnd=DlDim2%2050"
# Set dimming curve to LOG on channel 1
curl "http://192.168.1.100/cm?cmnd=DlCurve%202"
# Set fade time to 1 second (value 10)
curl "http://192.168.1.100/cm?cmnd=DlFade%2010"
# Query full status of device 1
curl "http://192.168.1.100/cm?cmnd=DlStatus"
# Query full status of device 2
curl "http://192.168.1.100/cm?cmnd=DlStatus2"
# Recalibrate AC frequency on device 1
curl "http://192.168.1.100/cm?cmnd=DlRecalibrate"
# Change device 1 I2C address to 0x51
curl "http://192.168.1.100/cm?cmnd=DlAddress%200x51"

Format de réponse

Toutes les réponses sont en JSON, retournées avec HTTP 200 :

json
{"DlDim1":{"Ch1":75,"Ch2":30,"Ch3":0,"Ch4":0}}

Réponse d'erreur (numéro d'appareil invalide, argument hors plage, etc.) :

json
{"Command":"Error"}