Passa al contenuto

← Comandi | Sommario | Avanti: Funzionalità avanzate →

Web UI, MQTT & HTTP — DimmerLink Native Tasmota Driver

Utilizzo dell'interfaccia web

Dashboard

Cursori di luminosità

Quando vengono rilevati uno o più dispositivi DimmerLink, la pagina principale di Tasmota (http:///) mostra un cursore di luminosità per ogni canale attivo.

Il layout del cursore è:

  • Per un singolo dispositivo, i cursori sono etichettati DL Ch1, DL Ch2, ecc.
  • Per dispositivi multipli, i cursori sono etichettati DL1 Ch1, DL1 Ch2, DL2 Ch1, ecc.

I cursori vanno da 0 (spento) a 100 (luminosità massima). Trascinare il cursore e rilasciarlo invia un comando DlDim al canale corrispondente. Il cursore riflette il livello di luminosità corrente memorizzato nel driver e si aggiorna quando il livello cambia da qualsiasi fonte (comando, MQTT, ecc.).

Visualizzazione sensore

La sezione sensore della pagina principale mostra una tabella di stato di sola lettura per ogni dispositivo:

Etichetta riga Valore mostrato Esempio
DimmerLink1 Ch1 Luminosità e curva 75% (LOG)
DimmerLink1 Ch2 Luminosità e curva 30% (RMS)
DimmerLink1 AC Frequenza di rete rilevata 50 Hz
DimmerLink1 Fade Tempo di fade (valore grezzo e secondi) 10 (1.0s)
DimmerLink1 Temp Temperatura e stato termico 42 C (NORMAL)

La riga Temp compare solo se la funzionalità di temperatura è disponibile sull'hardware. Tutte le righe si aggiornano ad ogni aggiornamento della pagina web; la sezione sensore non è un feed push in tempo reale.


Telemetria MQTT

Pubblicazione della telemetria

Il driver contribuisce al messaggio periodico tele//SENSOR di Tasmota (il hook FUNC_JSON_APPEND). L'intervallo di telemetria è controllato dall'impostazione TelePeriod di Tasmota (predefinito: 300 secondi).

Struttura JSON — dispositivo singolo

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"
  }
}

Struttura JSON — dispositivi multipli

Quando sono presenti più dispositivi, tutti compaiono come chiavi separate nello stesso messaggio 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"}
  }
}

Descrizione dei campi

Campo Tipo Descrizione
Addr stringa Indirizzo I2C in hex, es. "0x50"
ACFreq intero Frequenza di rete rilevata, 50 o 60 Hz
Fade intero Impostazione del tempo di fade corrente (0-255, unità di 100 ms)
Ch1 ... Ch4 oggetto Dati per canale
Ch1.Level intero Luminosità in percentuale (0-100)
Ch1.Curve stringa Curva di dimmerazione: "LINEAR", "RMS" o "LOG"
Temp intero Temperatura in Celsius (solo se l'hardware lo supporta)
Thermal stringa Stato di protezione termica (solo con sensore di temperatura)

I campi Temp e Thermal vengono omessi se il firmware MCU non ha FEATURE_TEMPERATURE abilitato, o se il registro della temperatura restituisce 0xFF.

Invio di comandi tramite MQTT

I comandi vengono inviati a cmnd// con il payload come argomento:

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

Le risposte ai comandi vengono pubblicate su stat//RESULT:

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

API HTTP

Tutti i comandi Tasmota sono accessibili tramite HTTP GET usando l'endpoint /cm.

Sintassi

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

Lo spazio tra il comando e l'argomento deve essere codificato come %20 nell'URL.

Esempi con 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"

Formato della risposta

Tutte le risposte sono JSON, restituite con HTTP 200:

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

Risposta di errore (numero dispositivo non valido, argomento fuori intervallo, ecc.):

json
{"Command":"Error"}