diff --git a/tasmota/include/tasmota_template.h b/tasmota/include/tasmota_template.h
index 869e92a8c..76977bde0 100644
--- a/tasmota/include/tasmota_template.h
+++ b/tasmota/include/tasmota_template.h
@@ -198,6 +198,9 @@ enum UserSelectablePins {
GPIO_ADE7953_RST, // ADE7953 Reset
GPIO_NRG_MBS_TX, GPIO_NRG_MBS_RX, // Generic Energy Modbus device
GPIO_ADE7953_CS, // ADE7953 SPI Chip Select
+#ifdef ESP32
+ GPIO_DALI_RX, GPIO_DALI_TX, // Dali
+#endif
GPIO_SENSOR_END };
// Error as warning to rethink GPIO usage with max 2045
@@ -443,6 +446,9 @@ const char kSensorNames[] PROGMEM =
D_SENSOR_ADE7953_RST "|"
D_SENSOR_NRG_MBS_TX "|" D_SENSOR_NRG_MBS_RX "|"
D_SENSOR_ADE7953_CS "|"
+#ifdef ESP32
+ D_SENSOR_DALI_RX "|" D_SENSOR_DALI_TX "|"
+#endif
;
const char kSensorNamesFixed[] PROGMEM =
@@ -527,6 +533,11 @@ const uint16_t kGpioNiceList[] PROGMEM = {
* Protocol specifics
\*-------------------------------------------------------------------------------------------*/
+#if defined(USE_DALI) && defined(ESP32)
+ AGPIO(GPIO_DALI_RX), // DALI RX
+ AGPIO(GPIO_DALI_TX), // DALI TX
+#endif // USE_DALI
+
#ifdef USE_I2C
AGPIO(GPIO_I2C_SCL) + MAX_I2C, // I2C SCL
AGPIO(GPIO_I2C_SDA) + MAX_I2C, // I2C SDA
diff --git a/tasmota/language/af_AF.h b/tasmota/language/af_AF.h
index 58b48a17a..39dc3126b 100644
--- a/tasmota/language/af_AF.h
+++ b/tasmota/language/af_AF.h
@@ -511,6 +511,13 @@
#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "ZBBridge EEPROM gevind by adres"
#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Ewekansige Zigbee parameters, kyk asseblief met 'ZbConfig'"
+// xdrv_89_dali.ino
+#define D_SENSOR_DALI_RX "Dali RX"
+#define D_SENSOR_DALI_TX "Dali TX"
+#define D_CONFIGURE_DALI "Config DALI"
+#define D_CMND_DALI_POWER "power"
+#define D_CMND_DALI_DIMMER "dim"
+
// xdrv_03_energy.ino
#define D_ENERGY_TODAY "Energie Vandag"
#define D_ENERGY_YESTERDAY "Energie Gister"
diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h
index 968746cd4..21ecbce73 100644
--- a/tasmota/language/bg_BG.h
+++ b/tasmota/language/bg_BG.h
@@ -511,6 +511,13 @@
#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "ZBBridge EEPROM found at address"
#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Randomizing Zigbee parameters, please check with 'ZbConfig'"
+// xdrv_89_dali.ino
+#define D_SENSOR_DALI_RX "Dali RX"
+#define D_SENSOR_DALI_TX "Dali TX"
+#define D_CONFIGURE_DALI "Config DALI"
+#define D_CMND_DALI_POWER "power"
+#define D_CMND_DALI_DIMMER "dim"
+
// xdrv_03_energy.ino
#define D_ENERGY_TODAY "Консумация за днес"
#define D_ENERGY_YESTERDAY "Консумация за вчера"
diff --git a/tasmota/language/ca_AD.h b/tasmota/language/ca_AD.h
index 26bafafd8..01cf177b1 100644
--- a/tasmota/language/ca_AD.h
+++ b/tasmota/language/ca_AD.h
@@ -511,6 +511,13 @@
#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "ZBBridge EEPROM found at address"
#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Randomizing Zigbee parameters, please check with 'ZbConfig'"
+// xdrv_89_dali.ino
+#define D_SENSOR_DALI_RX "Dali RX"
+#define D_SENSOR_DALI_TX "Dali TX"
+#define D_CONFIGURE_DALI "Config DALI"
+#define D_CMND_DALI_POWER "power"
+#define D_CMND_DALI_DIMMER "dim"
+
// xdrv_03_energy.ino
#define D_ENERGY_TODAY "Energy Today"
#define D_ENERGY_YESTERDAY "Energy Yesterday"
diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h
index 2d32dcc9a..f1fea69ec 100644
--- a/tasmota/language/cs_CZ.h
+++ b/tasmota/language/cs_CZ.h
@@ -511,6 +511,13 @@
#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "ZBBridge EEPROM found at address"
#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Randomizing Zigbee parameters, please check with 'ZbConfig'"
+// xdrv_89_dali.ino
+#define D_SENSOR_DALI_RX "Dali RX"
+#define D_SENSOR_DALI_TX "Dali TX"
+#define D_CONFIGURE_DALI "Config DALI"
+#define D_CMND_DALI_POWER "power"
+#define D_CMND_DALI_DIMMER "dim"
+
// xdrv_03_energy.ino
#define D_ENERGY_TODAY "Spotřeba Dnes"
#define D_ENERGY_YESTERDAY "Spotřeba Včera"
diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h
index 05f940706..df8a827b1 100644
--- a/tasmota/language/de_DE.h
+++ b/tasmota/language/de_DE.h
@@ -511,6 +511,13 @@
#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "ZBBridge EEPROM gefunden an Adresse"
#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Zufällige Zigbee Parameter erstellt, Überprüfung mit 'ZbConfig'"
+// xdrv_89_dali.ino
+#define D_SENSOR_DALI_RX "Dali RX"
+#define D_SENSOR_DALI_TX "Dali TX"
+#define D_CONFIGURE_DALI "Config DALI"
+#define D_CMND_DALI_POWER "power"
+#define D_CMND_DALI_DIMMER "dim"
+
// xdrv_03_energy.ino
#define D_ENERGY_TODAY "Energie heute"
#define D_ENERGY_YESTERDAY "Energie gestern"
diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h
index d7cdbfe65..0d7500450 100644
--- a/tasmota/language/el_GR.h
+++ b/tasmota/language/el_GR.h
@@ -511,6 +511,13 @@
#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "ZBBridge EEPROM found at address"
#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Randomizing Zigbee parameters, please check with 'ZbConfig'"
+// xdrv_89_dali.ino
+#define D_SENSOR_DALI_RX "Dali RX"
+#define D_SENSOR_DALI_TX "Dali TX"
+#define D_CONFIGURE_DALI "Config DALI"
+#define D_CMND_DALI_POWER "power"
+#define D_CMND_DALI_DIMMER "dim"
+
// xdrv_03_energy.ino
#define D_ENERGY_TODAY "Ενέργεια σήμερα"
#define D_ENERGY_YESTERDAY "Ενέργεια χθες"
diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h
index ea85e0861..d59a97f01 100644
--- a/tasmota/language/en_GB.h
+++ b/tasmota/language/en_GB.h
@@ -511,6 +511,13 @@
#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "ZBBridge EEPROM found at address"
#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Randomizing Zigbee parameters, please check with 'ZbConfig'"
+// xdrv_89_dali.ino
+#define D_SENSOR_DALI_RX "Dali RX"
+#define D_SENSOR_DALI_TX "Dali TX"
+#define D_CONFIGURE_DALI "Config DALI"
+#define D_CMND_DALI_POWER "power"
+#define D_CMND_DALI_DIMMER "dim"
+
// xdrv_03_energy.ino
#define D_ENERGY_TODAY "Energy Today"
#define D_ENERGY_YESTERDAY "Energy Yesterday"
diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h
index fa8dd2b67..b75beec9a 100644
--- a/tasmota/language/es_ES.h
+++ b/tasmota/language/es_ES.h
@@ -511,6 +511,13 @@
#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "Encontrada EEPROM de ZBBridge en"
#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Configurando parámetros Zigbee de forma aleatoria. Usar 'ZbConfig' para revisarlos."
+// xdrv_89_dali.ino
+#define D_SENSOR_DALI_RX "Dali RX"
+#define D_SENSOR_DALI_TX "Dali TX"
+#define D_CONFIGURE_DALI "Config DALI"
+#define D_CMND_DALI_POWER "power"
+#define D_CMND_DALI_DIMMER "dim"
+
// xdrv_03_energy.ino
#define D_ENERGY_TODAY "Energía Hoy"
#define D_ENERGY_YESTERDAY "Energía Ayer"
diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h
index 3364ff482..5f3eac5a3 100644
--- a/tasmota/language/fr_FR.h
+++ b/tasmota/language/fr_FR.h
@@ -511,6 +511,13 @@
#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "EEPROM ZBBridge trouvée à l'adresse"
#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Randomisation des paramètres ZigBee, veuillez vérifier avec 'ZbConfig'"
+// xdrv_89_dali.ino
+#define D_SENSOR_DALI_RX "Dali RX"
+#define D_SENSOR_DALI_TX "Dali TX"
+#define D_CONFIGURE_DALI "Config DALI"
+#define D_CMND_DALI_POWER "power"
+#define D_CMND_DALI_DIMMER "dim"
+
// xsns_03_energy.ino
#define D_ENERGY_TODAY "Énergie aujourd'hui"
#define D_ENERGY_YESTERDAY "Énergie hier"
diff --git a/tasmota/language/fy_NL.h b/tasmota/language/fy_NL.h
index 1e1a25927..a5f22689a 100644
--- a/tasmota/language/fy_NL.h
+++ b/tasmota/language/fy_NL.h
@@ -511,6 +511,13 @@
#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "ZBBridge EEPROM fûn op adres"
#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Randomizing Zigbee parameters, kontrolearje asjebleaft mei 'ZbConfig'"
+// xdrv_89_dali.ino
+#define D_SENSOR_DALI_RX "Dali RX"
+#define D_SENSOR_DALI_TX "Dali TX"
+#define D_CONFIGURE_DALI "Config DALI"
+#define D_CMND_DALI_POWER "power"
+#define D_CMND_DALI_DIMMER "dim"
+
// xdrv_03_energy.ino
#define D_ENERGY_TODAY "Konsumpsje hjoed"
#define D_ENERGY_YESTERDAY "Konsumpsje juster"
diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h
index 4db4cc9ff..31d969f78 100644
--- a/tasmota/language/he_HE.h
+++ b/tasmota/language/he_HE.h
@@ -511,6 +511,13 @@
#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "ZBBridge EEPROM found at address"
#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Randomizing Zigbee parameters, please check with 'ZbConfig'"
+// xdrv_89_dali.ino
+#define D_SENSOR_DALI_RX "Dali RX"
+#define D_SENSOR_DALI_TX "Dali TX"
+#define D_CONFIGURE_DALI "Config DALI"
+#define D_CMND_DALI_POWER "power"
+#define D_CMND_DALI_DIMMER "dim"
+
// xdrv_03_energy.ino
#define D_ENERGY_TODAY "צריכה יומית"
#define D_ENERGY_YESTERDAY "צריכה בעבר"
diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h
index d90312b00..c2204ea65 100644
--- a/tasmota/language/hu_HU.h
+++ b/tasmota/language/hu_HU.h
@@ -511,6 +511,13 @@
#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "ZBBridge EEPROM található a címen"
#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Zigbee paramétereknek véletlennek kell lenniük, ellenőrizd a 'ZbConfig'-gal"
+// xdrv_89_dali.ino
+#define D_SENSOR_DALI_RX "Dali RX"
+#define D_SENSOR_DALI_TX "Dali TX"
+#define D_CONFIGURE_DALI "Config DALI"
+#define D_CMND_DALI_POWER "power"
+#define D_CMND_DALI_DIMMER "dim"
+
// xdrv_03_energy.ino
#define D_ENERGY_TODAY "Mai energia"
#define D_ENERGY_YESTERDAY "Tegnapi energia"
diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h
index 99301cc0e..5db1e1220 100644
--- a/tasmota/language/it_IT.h
+++ b/tasmota/language/it_IT.h
@@ -511,6 +511,13 @@
#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "Trovata EEPROM ZBBridge all'indirizzo"
#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Randomizzazione parametri Zigbee, controlla con \"ZbConfig\""
+// xdrv_89_dali.ino
+#define D_SENSOR_DALI_RX "Dali RX"
+#define D_SENSOR_DALI_TX "Dali TX"
+#define D_CONFIGURE_DALI "Config DALI"
+#define D_CMND_DALI_POWER "power"
+#define D_CMND_DALI_DIMMER "dim"
+
// xdrv_03_energy.ino
#define D_ENERGY_TODAY "Energia - oggi"
#define D_ENERGY_YESTERDAY "Energia - ieri"
diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h
index 5554f07a0..7e85879cc 100644
--- a/tasmota/language/ko_KO.h
+++ b/tasmota/language/ko_KO.h
@@ -511,6 +511,13 @@
#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "ZBBridge EEPROM found at address"
#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Randomizing Zigbee parameters, please check with 'ZbConfig'"
+// xdrv_89_dali.ino
+#define D_SENSOR_DALI_RX "Dali RX"
+#define D_SENSOR_DALI_TX "Dali TX"
+#define D_CONFIGURE_DALI "Config DALI"
+#define D_CMND_DALI_POWER "power"
+#define D_CMND_DALI_DIMMER "dim"
+
// xdrv_03_energy.ino
#define D_ENERGY_TODAY "금일 전력 사용량"
#define D_ENERGY_YESTERDAY "어제 전력 사용량"
diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h
index 960a8fcf2..f2355a709 100644
--- a/tasmota/language/nl_NL.h
+++ b/tasmota/language/nl_NL.h
@@ -511,6 +511,13 @@
#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "ZBBridge EEPROM aanwezig op adres"
#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Willekeurige Zigbee parameters gemaakt, controleer met 'ZbConfig'"
+// xdrv_89_dali.ino
+#define D_SENSOR_DALI_RX "Dali RX"
+#define D_SENSOR_DALI_TX "Dali TX"
+#define D_CONFIGURE_DALI "Config DALI"
+#define D_CMND_DALI_POWER "power"
+#define D_CMND_DALI_DIMMER "dim"
+
// xdrv_03_energy.ino
#define D_ENERGY_TODAY "Verbruik vandaag"
#define D_ENERGY_YESTERDAY "Verbruik gisteren"
diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h
index 1157da535..c523cec6f 100644
--- a/tasmota/language/pl_PL.h
+++ b/tasmota/language/pl_PL.h
@@ -511,6 +511,13 @@
#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "Znaleziono ZBBridge EEPROM na adresie"
#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Losowanie parametrów Zigbee, proszę sprawdzić 'ZbConfig'"
+// xdrv_89_dali.ino
+#define D_SENSOR_DALI_RX "Dali RX"
+#define D_SENSOR_DALI_TX "Dali TX"
+#define D_CONFIGURE_DALI "Config DALI"
+#define D_CMND_DALI_POWER "power"
+#define D_CMND_DALI_DIMMER "dim"
+
// xdrv_03_energy.ino
#define D_ENERGY_TODAY "Energia dzisiaj"
#define D_ENERGY_YESTERDAY "Energia wczoraj"
diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h
index fe96b16b8..b87b1a618 100644
--- a/tasmota/language/pt_BR.h
+++ b/tasmota/language/pt_BR.h
@@ -511,6 +511,13 @@
#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "EEPROM ZBBridge encontrada no endereço" // "ZBBridge EEPROM found at address"
#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Randomizando parametros Zigbee, por favor congira em 'ZbConfig'" // "Randomizing Zigbee parameters, please check with 'ZbConfig'"
+// xdrv_89_dali.ino
+#define D_SENSOR_DALI_RX "Dali RX"
+#define D_SENSOR_DALI_TX "Dali TX"
+#define D_CONFIGURE_DALI "Config DALI"
+#define D_CMND_DALI_POWER "power"
+#define D_CMND_DALI_DIMMER "dim"
+
// xdrv_03_energy.ino
#define D_ENERGY_TODAY "Consumo energético de hoje"
#define D_ENERGY_YESTERDAY "Consumo energético de ontem"
diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h
index 3607f8252..c050785fa 100644
--- a/tasmota/language/pt_PT.h
+++ b/tasmota/language/pt_PT.h
@@ -511,6 +511,13 @@
#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "ZBBridge EEPROM encontrada no edereço"
#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Randomização de parâmetros Zigbee, por-favor verifique a 'ZbConfig'"
+// xdrv_89_dali.ino
+#define D_SENSOR_DALI_RX "Dali RX"
+#define D_SENSOR_DALI_TX "Dali TX"
+#define D_CONFIGURE_DALI "Config DALI"
+#define D_CMND_DALI_POWER "power"
+#define D_CMND_DALI_DIMMER "dim"
+
// xdrv_03_energy.ino
#define D_ENERGY_TODAY "Consumo energético de hoje"
#define D_ENERGY_YESTERDAY "Consumo energético de ontem"
diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h
index f51f0d07a..77ca813dc 100644
--- a/tasmota/language/ro_RO.h
+++ b/tasmota/language/ro_RO.h
@@ -511,6 +511,13 @@
#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "ZBBridge EEPROM found at address"
#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Randomizing Zigbee parameters, please check with 'ZbConfig'"
+// xdrv_89_dali.ino
+#define D_SENSOR_DALI_RX "Dali RX"
+#define D_SENSOR_DALI_TX "Dali TX"
+#define D_CONFIGURE_DALI "Config DALI"
+#define D_CMND_DALI_POWER "power"
+#define D_CMND_DALI_DIMMER "dim"
+
// xdrv_03_energy.ino
#define D_ENERGY_TODAY "Energia de Azi"
#define D_ENERGY_YESTERDAY "Energia de Ieri"
diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h
index d45530605..fd9c3a7ee 100644
--- a/tasmota/language/ru_RU.h
+++ b/tasmota/language/ru_RU.h
@@ -511,6 +511,13 @@
#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "ZBBridge EEPROM found at address"
#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Randomizing Zigbee parameters, please check with 'ZbConfig'"
+// xdrv_89_dali.ino
+#define D_SENSOR_DALI_RX "Dali RX"
+#define D_SENSOR_DALI_TX "Dali TX"
+#define D_CONFIGURE_DALI "Конфигурация DALI"
+#define D_CMND_DALI_POWER "power"
+#define D_CMND_DALI_DIMMER "dim"
+
// xdrv_03_energy.ino
#define D_ENERGY_TODAY "Энергия Сегодня"
#define D_ENERGY_YESTERDAY "Энергия Вчера"
diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h
index 945bd72c1..8b1f107df 100644
--- a/tasmota/language/sk_SK.h
+++ b/tasmota/language/sk_SK.h
@@ -511,6 +511,13 @@
#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "ZBBridge EEPROM found at address"
#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Randomizing Zigbee parameters, please check with 'ZbConfig'"
+// xdrv_89_dali.ino
+#define D_SENSOR_DALI_RX "Dali RX"
+#define D_SENSOR_DALI_TX "Dali TX"
+#define D_CONFIGURE_DALI "Config DALI"
+#define D_CMND_DALI_POWER "power"
+#define D_CMND_DALI_DIMMER "dim"
+
// xdrv_03_energy.ino
#define D_ENERGY_TODAY "Spotreba dnes"
#define D_ENERGY_YESTERDAY "Spotreba včera"
diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h
index ffc3e2764..a603635c3 100644
--- a/tasmota/language/sv_SE.h
+++ b/tasmota/language/sv_SE.h
@@ -511,6 +511,13 @@
#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "ZBBridge EEPROM found at address"
#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Randomizing Zigbee parameters, please check with 'ZbConfig'"
+// xdrv_89_dali.ino
+#define D_SENSOR_DALI_RX "Dali RX"
+#define D_SENSOR_DALI_TX "Dali TX"
+#define D_CONFIGURE_DALI "Config DALI"
+#define D_CMND_DALI_POWER "power"
+#define D_CMND_DALI_DIMMER "dim"
+
// xdrv_03_energy.ino
#define D_ENERGY_TODAY "Energi idag"
#define D_ENERGY_YESTERDAY "Energi igår"
diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h
index a19995a43..4c6d46b49 100644
--- a/tasmota/language/tr_TR.h
+++ b/tasmota/language/tr_TR.h
@@ -511,6 +511,13 @@
#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "ZBBridge EEPROM found at address"
#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Randomizing Zigbee parameters, please check with 'ZbConfig'"
+// xdrv_89_dali.ino
+#define D_SENSOR_DALI_RX "Dali RX"
+#define D_SENSOR_DALI_TX "Dali TX"
+#define D_CONFIGURE_DALI "Config DALI"
+#define D_CMND_DALI_POWER "power"
+#define D_CMND_DALI_DIMMER "dim"
+
// xdrv_03_energy.ino
#define D_ENERGY_TODAY "Energy Today"
#define D_ENERGY_YESTERDAY "Energy Yesterday"
diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h
index 8e832b9d8..1a6f34161 100644
--- a/tasmota/language/uk_UA.h
+++ b/tasmota/language/uk_UA.h
@@ -511,6 +511,13 @@
#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "ZBBridge EEPROM found at address"
#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Randomizing Zigbee parameters, please check with 'ZbConfig'"
+// xdrv_89_dali.ino
+#define D_SENSOR_DALI_RX "Dali RX"
+#define D_SENSOR_DALI_TX "Dali TX"
+#define D_CONFIGURE_DALI "Config DALI"
+#define D_CMND_DALI_POWER "power"
+#define D_CMND_DALI_DIMMER "dim"
+
// xdrv_03_energy.ino
#define D_ENERGY_TODAY "Енергія Сьогодні"
#define D_ENERGY_YESTERDAY "Енергія Вчора"
diff --git a/tasmota/language/vi_VN.h b/tasmota/language/vi_VN.h
index f87ba1029..7416d1dae 100644
--- a/tasmota/language/vi_VN.h
+++ b/tasmota/language/vi_VN.h
@@ -511,6 +511,13 @@
#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "ZBBridge EEPROM found at address"
#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Randomizing Zigbee parameters, please check with 'ZbConfig'"
+// xdrv_89_dali.ino
+#define D_SENSOR_DALI_RX "Dali RX"
+#define D_SENSOR_DALI_TX "Dali TX"
+#define D_CONFIGURE_DALI "Config DALI"
+#define D_CMND_DALI_POWER "power"
+#define D_CMND_DALI_DIMMER "dim"
+
// xdrv_03_energy.ino
#define D_ENERGY_TODAY "Năng lượng tiêu thụ hôm nay"
#define D_ENERGY_YESTERDAY "Năng lượng tiêu thụ hôm qua"
diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h
index 348718091..4f93019fc 100644
--- a/tasmota/language/zh_CN.h
+++ b/tasmota/language/zh_CN.h
@@ -511,6 +511,13 @@
#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "找到 ZBBridge EEPROM, 地址:"
#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "正在随机化 Zigbee 参数, 请通过 'ZbConfig' 检查"
+// xdrv_89_dali.ino
+#define D_SENSOR_DALI_RX "Dali RX"
+#define D_SENSOR_DALI_TX "Dali TX"
+#define D_CONFIGURE_DALI "Config DALI"
+#define D_CMND_DALI_POWER "power"
+#define D_CMND_DALI_DIMMER "dim"
+
// xdrv_03_energy.ino
#define D_ENERGY_TODAY "今日用电量"
#define D_ENERGY_YESTERDAY "昨日用电量"
diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h
index 50c8c5dfb..641f8192c 100644
--- a/tasmota/language/zh_TW.h
+++ b/tasmota/language/zh_TW.h
@@ -511,6 +511,13 @@
#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "ZBBridge EEPROM found at address"
#define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Randomizing Zigbee parameters, please check with 'ZbConfig'"
+// xdrv_89_dali.ino
+#define D_SENSOR_DALI_RX "Dali RX"
+#define D_SENSOR_DALI_TX "Dali TX"
+#define D_CONFIGURE_DALI "Config DALI"
+#define D_CMND_DALI_POWER "power"
+#define D_CMND_DALI_DIMMER "dim"
+
// xdrv_03_energy.ino
#define D_ENERGY_TODAY "今日用電量"
#define D_ENERGY_YESTERDAY "昨日用電量"
diff --git a/tasmota/tasmota_xdrv_driver/xdrv_89_esp32_dali.ino b/tasmota/tasmota_xdrv_driver/xdrv_89_esp32_dali.ino
new file mode 100644
index 000000000..222f91bac
--- /dev/null
+++ b/tasmota/tasmota_xdrv_driver/xdrv_89_esp32_dali.ino
@@ -0,0 +1,643 @@
+/*
+ xdrv_89_esp32_dali.ino - DALI support for Tasmota
+
+ Copyright (C) 2022 Andrei Kazmirtsuk aka eeak
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see