diff --git a/I2CDEVICES.md b/I2CDEVICES.md
new file mode 100644
index 000000000..f4e257f0e
--- /dev/null
+++ b/I2CDEVICES.md
@@ -0,0 +1,59 @@
+
+
+# Tasmota I2C devices
+
+Tasmota supports several I2C devices but to use them they mostly need to be enabled at compile time to solve possible address conflicts.
+
+## Supported I2C devices
+The following table lists the supported I2C devices
+
+Define | Driver | Device | Address(es) | Description
+--------------------|---------|----------|-------------|-----------------------------------------------
+USE_PCA9685 | xdrv_15 | PCA9685 | 0x40 - 0x47 | 16-channel 12-bit pwm driver
+USE_PCF8574 | xdrv_28 | PCF8574 | 0x20 - 0x27 | 8-bit I/O expander
+USE_PCF8574 | xdrv_28 | PCF8574A | 0x38 - 0x3F | 8-bit I/O expander
+USE_DISPLAY_LCD | xdsp_01 | | 0x27, 0x3F | LCD display
+USE_DISPLAY_SSD1306 | xdsp_02 | SSD1306 | 0x3C - 0x3D | Oled display
+USE_DISPLAY_MATRIX | xdsp_03 | HT16K33 | 0x70 - 0x77 | 8x8 led matrix
+USE_DISPLAY_SH1106 | xdsp_07 | SH1106 | 0x3C - 0x3D | Oled display
+USE_ADE7953 | xnrg_07 | ADE7953 | 0x38 | Energy monitor
+USE_HTU | xsns_08 | HTU21 | 0x40 | Temperature and Humidity sensor
+USE_HTU | xsns_08 | SI7013 | 0x40 | Temperature and Humidity sensor
+USE_HTU | xsns_08 | SI7020 | 0x40 | Temperature and Humidity sensor
+USE_HTU | xsns_08 | SI7021 | 0x40 | Temperature and Humidity sensor
+USE_BMP | xsns_09 | BMP085 | 0x76 - 0x77 | Pressure and temperature sensor
+USE_BMP | xsns_09 | BMP180 | 0x76 - 0x77 | Pressure and temperature sensor
+USE_BMP | xsns_09 | BMP280 | 0x76 - 0x77 | Pressure and temperature sensor
+USE_BMP | xsns_09 | BME280 | 0x76 - 0x77 | Pressure, temperature and humidity sensor
+USE_BMP | xsns_09 | BME680 | 0x76 - 0x77 | Pressure, temperature, humidity and gas sensor
+USE_BH1750 | xsns_10 | BH1750 | 0x23, 0x5C | Ambient light intensity sensor
+USE_VEML6070 | xsns_11 | VEML6070 | 0x38 - 0x39 | Ultra violet light intensity sensor
+USE_ADS1115_I2CDEV | xsns_12 | ADS1115 | 0x48 - 0x4B | 4-channel 16-bit A/D converter
+USE_ADS1115 | xsns_12 | ADS1115 | 0x48 - 0x4B | 4-channel 16-bit A/D converter
+USE_INA219 | xsns_13 | INA219 | 0x40 - 0x41, 0x44 - 0x45 | Low voltage current sensor
+USE_SHT3X | xsns_14 | SHT3X | 0x44 - 0x45 | Temperature and Humidity sensor
+USE_SHT3X | xsns_14 | SHTC3 | 0x70 | Temperature and Humidity sensor
+USE_TSL2561 | xsns_16 | TSL2561 | 0x29, 0x39, 0x49 | Light intensity sensor
+USE_MGS | xsns_19 | Grove | 0x04 | Multichannel gas sensor
+USE_SGP30 | xsns_21 | SGP30 | 0x58 | Gas (TVOC) and air quality sensor
+USE_SI1145 | xsns_24 | SI1145 | 0x60 | Ultra violet index and light sensor
+USE_SI1145 | xsns_24 | SI1146 | 0x60 | Ultra violet index and light sensor
+USE_SI1145 | xsns_24 | SI1147 | 0x60 | Ultra violet index and light sensor
+USE_LM75AD | xsns_26 | LM75AD | 0x48 - 0x4F | Temperature sensor
+USE_APDS9960 | xsns_27 | APDS9960 | 0x39 | Proximity ambient light RGB and gesture sensor
+USE_MCP230xx | xsns_29 | MCP23008 | 0x20 - 0x27 | 16-bit I/O expander
+USE_MCP230xx | xsns_29 | MCP23017 | 0x20 - 0x27 | 16-bit I/O expander
+USE_MPR121 | xsns_30 | MPR121 | 0x5A - 0x5D | Proximity capacitive touch sensor
+USE_CCS811 | xsns_31 | CCS811 | 0x5A | Gas (TVOC) and air quality sensor
+USE_MPU6050 | xsns_32 | MPU6050 | 0x68 - 0x69 | 3-axis gyroscope and temperature sensor
+USE_DS3231 | xsns_33 | DS3231 | 0x68 | Real time clock
+USE_MGC3130 | xsns_36 | MGC3130 | 0x42 | Electric field sensor
+USE_MAX44009 | xsns_41 | MAX44009 | 0x4A - 0x4B | Ambient light intensity sensor
+USE_SCD30 | xsns_42 | SCD30 | 0x61 | CO2 sensor
+USE_SPS30 | xsns_44 | SPS30 | 0x69 | Particle sensor
+USE_VL53L0X | xsns_45 | VL53L0X | 0x29 | Time-of-flight (ToF) distance sensor
+USE_MLX90614 | xsns_46 | MLX90614 | 0x5A | Infra red temperature sensor
+USE_CHIRP | xsns_48 | CHIRP | 0x20 | Soil moisture sensor
+USE_PAJ7620 | xsns_50 | PAJ7620 | 0x73 | Gesture sensor
+USE_INA226 | xsns_54 | INA226 | 0x40 - 0x41, 0x44 - 0x45 | Low voltage current sensor
+USE_HIH6 | xsns_55 | HIH6130 | 0x27 | Temperature and Humidity sensor
diff --git a/tasmota/i18n.h b/tasmota/i18n.h
index fbfa3477f..304418a95 100644
--- a/tasmota/i18n.h
+++ b/tasmota/i18n.h
@@ -193,7 +193,7 @@
#define D_LOG_SOME_SETTINGS_RESET "Some settings have been reset"
-// Commands sonoff.ino
+// Commands tasmota.ino
#define D_CMND_BACKLOG "Backlog"
#define D_CMND_DELAY "Delay"
#define D_CMND_STATUS "Status"
diff --git a/tasmota/language/bg-BG.h b/tasmota/language/bg-BG.h
index 986a93bdf..ff28de65d 100644
--- a/tasmota/language/bg-BG.h
+++ b/tasmota/language/bg-BG.h
@@ -182,7 +182,7 @@
#define D_WARMLIGHT "Топла"
#define D_WEB_SERVER "Уеб сървър"
-// sonoff.ino
+// tasmota.ino
#define D_WARNING_MINIMAL_VERSION "ПРЕДУПРЕЖДЕНИЕ Тази версия не поддържа постоянни настройки"
#define D_LEVEL_10 "ниво 1-0"
#define D_LEVEL_01 "ниво 0-1"
@@ -511,7 +511,7 @@
//xsns_43_hre.ino
#define D_LOG_HRE "HRE: "
-// sonoff_template.h - keep them as short as possible to be able to fit them in GUI drop down box
+// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Няма"
#define D_SENSOR_USER "Потребит."
#define D_SENSOR_DHT11 "DHT11"
diff --git a/tasmota/language/cs-CZ.h b/tasmota/language/cs-CZ.h
index ae887e534..afe2f33f6 100644
--- a/tasmota/language/cs-CZ.h
+++ b/tasmota/language/cs-CZ.h
@@ -182,7 +182,7 @@
#define D_WARMLIGHT "Teplé světlo"
#define D_WEB_SERVER "Web Server"
-// sonoff.ino
+// tasmota.ino
#define D_WARNING_MINIMAL_VERSION "UPOZORNĚNÍ Tato verze nepodporuje trvalé nastavení"
#define D_LEVEL_10 "úroveň 1-0"
#define D_LEVEL_01 "úroveň 0-1"
@@ -511,7 +511,7 @@
//xsns_43_hre.ino
#define D_LOG_HRE "HRE: "
-// sonoff_template.h - keep them as short as possible to be able to fit them in GUI drop down box
+// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Není"
#define D_SENSOR_USER "User"
#define D_SENSOR_DHT11 "DHT11"
diff --git a/tasmota/language/de-DE.h b/tasmota/language/de-DE.h
index 0f96a77db..9916bd923 100644
--- a/tasmota/language/de-DE.h
+++ b/tasmota/language/de-DE.h
@@ -182,7 +182,7 @@
#define D_WARMLIGHT "warm"
#define D_WEB_SERVER "Web-Server"
-// sonoff.ino
+// tasmota.ino
#define D_WARNING_MINIMAL_VERSION "ACHTUNG: Diese Version unterstützt keine persistenten Einstellungen"
#define D_LEVEL_10 "level 1-0"
#define D_LEVEL_01 "level 0-1"
@@ -511,7 +511,7 @@
//xsns_43_hre.ino
#define D_LOG_HRE "HRE: "
-// sonoff_template.h - keep them as short as possible to be able to fit them in GUI drop down box
+// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "None"
#define D_SENSOR_USER "User"
#define D_SENSOR_DHT11 "DHT11"
diff --git a/tasmota/language/el-GR.h b/tasmota/language/el-GR.h
index 91088cb0c..78546d1d5 100644
--- a/tasmota/language/el-GR.h
+++ b/tasmota/language/el-GR.h
@@ -182,7 +182,7 @@
#define D_WARMLIGHT "Θερμό"
#define D_WEB_SERVER "Διακομιστής Web"
-// sonoff.ino
+// tasmota.ino
#define D_WARNING_MINIMAL_VERSION "ΠΡΟΕΙΔΟΠΟΙΗΣΗ Αυτή η έκδοση δεν αποθηκεύει τις ρυθμίσεις"
#define D_LEVEL_10 "επίπεδο 1-0"
#define D_LEVEL_01 "επίπεδο 0-1"
@@ -511,7 +511,7 @@
//xsns_43_hre.ino
#define D_LOG_HRE "HRE: "
-// sonoff_template.h - keep them as short as possible to be able to fit them in GUI drop down box
+// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Κανένα"
#define D_SENSOR_USER "User"
#define D_SENSOR_DHT11 "DHT11"
diff --git a/tasmota/language/en-GB.h b/tasmota/language/en-GB.h
index 87761b35f..4f8b8d728 100644
--- a/tasmota/language/en-GB.h
+++ b/tasmota/language/en-GB.h
@@ -182,7 +182,7 @@
#define D_WARMLIGHT "Warm"
#define D_WEB_SERVER "Web Server"
-// sonoff.ino
+// tasmota.ino
#define D_WARNING_MINIMAL_VERSION "WARNING This version does not support persistent settings"
#define D_LEVEL_10 "level 1-0"
#define D_LEVEL_01 "level 0-1"
@@ -511,7 +511,7 @@
//xsns_43_hre.ino
#define D_LOG_HRE "HRE: "
-// sonoff_template.h - keep them as short as possible to be able to fit them in GUI drop down box
+// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "None"
#define D_SENSOR_USER "User"
#define D_SENSOR_DHT11 "DHT11"
diff --git a/tasmota/language/es-ES.h b/tasmota/language/es-ES.h
index acc45837e..21636c80b 100644
--- a/tasmota/language/es-ES.h
+++ b/tasmota/language/es-ES.h
@@ -182,7 +182,7 @@
#define D_WARMLIGHT "Cálida"
#define D_WEB_SERVER "Servidor Web"
-// sonoff.ino
+// tasmota.ino
#define D_WARNING_MINIMAL_VERSION "Cuidado, esta versión no guarda los cambios"
#define D_LEVEL_10 "level 1-0"
#define D_LEVEL_01 "level 0-1"
@@ -511,7 +511,7 @@
//xsns_43_hre.ino
#define D_LOG_HRE "HRE: "
-// sonoff_template.h - keep them as short as possible to be able to fit them in GUI drop down box
+// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Ninguno"
#define D_SENSOR_USER "User"
#define D_SENSOR_DHT11 "DHT11"
diff --git a/tasmota/language/fr-FR.h b/tasmota/language/fr-FR.h
index f9dd3655c..83d8f2ce8 100644
--- a/tasmota/language/fr-FR.h
+++ b/tasmota/language/fr-FR.h
@@ -182,7 +182,7 @@
#define D_WARMLIGHT "Chaud"
#define D_WEB_SERVER "Serveur web"
-// sonoff.ino
+// tasmota.ino
#define D_WARNING_MINIMAL_VERSION "ATTENTION Cette version ne supporte pas les réglages persistants"
#define D_LEVEL_10 "level 1-0"
#define D_LEVEL_01 "level 0-1"
@@ -511,7 +511,7 @@
//xsns_43_hre.ino
#define D_LOG_HRE "HRE: "
-// sonoff_template.h - keep them as short as possible to be able to fit them in GUI drop down box
+// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Aucun"
#define D_SENSOR_USER "Utilisateur"
#define D_SENSOR_DHT11 "DHT11"
diff --git a/tasmota/language/he-HE.h b/tasmota/language/he-HE.h
index d5cb61c8a..ca1cef4ac 100644
--- a/tasmota/language/he-HE.h
+++ b/tasmota/language/he-HE.h
@@ -182,7 +182,7 @@
#define D_WARMLIGHT "חום"
#define D_WEB_SERVER "Web שרת"
-// sonoff.ino
+// tasmota.ino
#define D_WARNING_MINIMAL_VERSION "אזהרה גרסה זו אינה תומכת בהגדרות קבועות"
#define D_LEVEL_10 "level 1-0"
#define D_LEVEL_01 "level 0-1"
@@ -511,7 +511,7 @@
//xsns_43_hre.ino
#define D_LOG_HRE "HRE: "
-// sonoff_template.h - keep them as short as possible to be able to fit them in GUI drop down box
+// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "None"
#define D_SENSOR_USER "משתמש"
#define D_SENSOR_DHT11 "DHT11"
diff --git a/tasmota/language/hu-HU.h b/tasmota/language/hu-HU.h
index 4dc310c8d..a6e22bd4a 100644
--- a/tasmota/language/hu-HU.h
+++ b/tasmota/language/hu-HU.h
@@ -182,7 +182,7 @@
#define D_WARMLIGHT "Meleg fény"
#define D_WEB_SERVER "Webszerver"
-// sonoff.ino
+// tasmota.ino
#define D_WARNING_MINIMAL_VERSION "VIGYÁZZ! Ez a verzió nem támogat tartós beállításokat"
#define D_LEVEL_10 "szint 1-0"
#define D_LEVEL_01 "szint 0-1"
@@ -511,7 +511,7 @@
//xsns_43_hre.ino
#define D_LOG_HRE "HRE: "
-// sonoff_template.h - keep them as short as possible to be able to fit them in GUI drop down box
+// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Nincs"
#define D_SENSOR_USER "User"
#define D_SENSOR_DHT11 "DHT11"
diff --git a/tasmota/language/it-IT.h b/tasmota/language/it-IT.h
index dcc3d786e..16392f675 100644
--- a/tasmota/language/it-IT.h
+++ b/tasmota/language/it-IT.h
@@ -182,7 +182,7 @@
#define D_WARMLIGHT "Calda"
#define D_WEB_SERVER "Web Server"
-// sonoff.ino
+// tasmota.ino
#define D_WARNING_MINIMAL_VERSION "ATTENZIONE Questa versione non supporta il salvataggio delle impostazioni"
#define D_LEVEL_10 "level 1-0"
#define D_LEVEL_01 "level 0-1"
@@ -511,7 +511,7 @@
//xsns_43_hre.ino
#define D_LOG_HRE "HRE: "
-// sonoff_template.h - keep them as short as possible to be able to fit them in GUI drop down box
+// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Nessuno"
#define D_SENSOR_USER "User"
#define D_SENSOR_DHT11 "DHT11"
diff --git a/tasmota/language/ko-KO.h b/tasmota/language/ko-KO.h
index ffe507144..bf8c8fe09 100644
--- a/tasmota/language/ko-KO.h
+++ b/tasmota/language/ko-KO.h
@@ -182,7 +182,7 @@
#define D_WARMLIGHT "따뜻하게"
#define D_WEB_SERVER "웹 서버"
-// sonoff.ino
+// tasmota.ino
#define D_WARNING_MINIMAL_VERSION "경고: 이 버전은 영구 설정을 지원하지 않습니다"
#define D_LEVEL_10 "level 1-0"
#define D_LEVEL_01 "level 0-1"
@@ -511,7 +511,7 @@
//xsns_43_hre.ino
#define D_LOG_HRE "HRE: "
-// sonoff_template.h - keep them as short as possible to be able to fit them in GUI drop down box
+// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "없음"
#define D_SENSOR_USER "User"
#define D_SENSOR_DHT11 "DHT11"
diff --git a/tasmota/language/nl-NL.h b/tasmota/language/nl-NL.h
index 37f620ea5..baf5e933a 100644
--- a/tasmota/language/nl-NL.h
+++ b/tasmota/language/nl-NL.h
@@ -182,7 +182,7 @@
#define D_WARMLIGHT "Warm"
#define D_WEB_SERVER "Webserver"
-// sonoff.ino
+// tasmota.ino
#define D_WARNING_MINIMAL_VERSION "WAARSCHUWING Deze versie bewaart geen instellingen"
#define D_LEVEL_10 "niveau 1-0"
#define D_LEVEL_01 "niveau 0-1"
@@ -511,7 +511,7 @@
//xsns_43_hre.ino
#define D_LOG_HRE "HRE: "
-// sonoff_template.h - keep them as short as possible to be able to fit them in GUI drop down box
+// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Geen"
#define D_SENSOR_USER "Gebruiker"
#define D_SENSOR_DHT11 "DHT11"
diff --git a/tasmota/language/pl-PL.h b/tasmota/language/pl-PL.h
index 19856e47f..842646b3a 100644
--- a/tasmota/language/pl-PL.h
+++ b/tasmota/language/pl-PL.h
@@ -182,7 +182,7 @@
#define D_WARMLIGHT "Nagrzanie"
#define D_WEB_SERVER "Web Serwer"
-// sonoff.ino
+// tasmota.ino
#define D_WARNING_MINIMAL_VERSION "UWAGA Ta wersja nie obsługuje zapisu ustawień"
#define D_LEVEL_10 "poziom 1-0"
#define D_LEVEL_01 "poziom 0-1"
@@ -511,7 +511,7 @@
//xsns_43_hre.ino
#define D_LOG_HRE "HRE: "
-// sonoff_template.h - keep them as short as possible to be able to fit them in GUI drop down box
+// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Brak"
#define D_SENSOR_USER "User"
#define D_SENSOR_DHT11 "DHT11"
diff --git a/tasmota/language/pt-BR.h b/tasmota/language/pt-BR.h
index d1287efd7..acb44af24 100644
--- a/tasmota/language/pt-BR.h
+++ b/tasmota/language/pt-BR.h
@@ -182,7 +182,7 @@
#define D_WARMLIGHT "Luz quente"
#define D_WEB_SERVER "Servidor WEB"
-// sonoff.ino
+// tasmota.ino
#define D_WARNING_MINIMAL_VERSION "AVISO: esta versão não supporta configurações persistentes"
#define D_LEVEL_10 "nível 1-0"
#define D_LEVEL_01 "nível 0-1"
@@ -511,7 +511,7 @@
//xsns_43_hre.ino
#define D_LOG_HRE "HRE: "
-// sonoff_template.h - keep them as short as possible to be able to fit them in GUI drop down box
+// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Nenhum"
#define D_SENSOR_USER "User"
#define D_SENSOR_DHT11 "DHT11"
diff --git a/tasmota/language/pt-PT.h b/tasmota/language/pt-PT.h
index eba4fbb0d..ff5b3448d 100644
--- a/tasmota/language/pt-PT.h
+++ b/tasmota/language/pt-PT.h
@@ -182,7 +182,7 @@
#define D_WARMLIGHT "Luz Quente"
#define D_WEB_SERVER "Servidor WEB"
-// sonoff.ino
+// tasmota.ino
#define D_WARNING_MINIMAL_VERSION "AVISO esta versão não supporta configurações persistentes"
#define D_LEVEL_10 "nível 1-0"
#define D_LEVEL_01 "nível 0-1"
@@ -511,7 +511,7 @@
//xsns_43_hre.ino
#define D_LOG_HRE "HRE: "
-// sonoff_template.h - keep them as short as possible to be able to fit them in GUI drop down box
+// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Nenhum"
#define D_SENSOR_USER "User"
#define D_SENSOR_DHT11 "DHT11"
diff --git a/tasmota/language/ru-RU.h b/tasmota/language/ru-RU.h
index 1598a1d58..8ccbc9df1 100644
--- a/tasmota/language/ru-RU.h
+++ b/tasmota/language/ru-RU.h
@@ -182,7 +182,7 @@
#define D_WARMLIGHT "Тепло"
#define D_WEB_SERVER "Web сервер"
-// sonoff.ino
+// tasmota.ino
#define D_WARNING_MINIMAL_VERSION "ПРЕДУПРЕЖДЕНИЕ Эта версия не поддерживает персистентные настройки"
#define D_LEVEL_10 "уровень 1-0"
#define D_LEVEL_01 "уровень 0-1"
@@ -511,7 +511,7 @@
//xsns_43_hre.ino
#define D_LOG_HRE "HRE: "
-// sonoff_template.h - keep them as short as possible to be able to fit them in GUI drop down box
+// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "-нет-"
#define D_SENSOR_USER "User"
#define D_SENSOR_DHT11 "DHT11"
diff --git a/tasmota/language/sk-SK.h b/tasmota/language/sk-SK.h
index 594afb5d6..de4a72367 100644
--- a/tasmota/language/sk-SK.h
+++ b/tasmota/language/sk-SK.h
@@ -182,7 +182,7 @@
#define D_WARMLIGHT "Teplé svetlo"
#define D_WEB_SERVER "Web Server"
-// sonoff.ino
+// tasmota.ino
#define D_WARNING_MINIMAL_VERSION "UPOZORNENIE Táto verzia nepodporuje trvalé nastavenia"
#define D_LEVEL_10 "úroveň 1-0"
#define D_LEVEL_01 "úroveň 0-1"
@@ -511,7 +511,7 @@
//xsns_43_hre.ino
#define D_LOG_HRE "HRE: "
-// sonoff_template.h - keep them as short as possible to be able to fit them in GUI drop down box
+// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Žiaden"
#define D_SENSOR_USER "User"
#define D_SENSOR_DHT11 "DHT11"
diff --git a/tasmota/language/sv-SE.h b/tasmota/language/sv-SE.h
index 8ae40d324..466f2e396 100644
--- a/tasmota/language/sv-SE.h
+++ b/tasmota/language/sv-SE.h
@@ -182,7 +182,7 @@
#define D_WARMLIGHT "Varm"
#define D_WEB_SERVER "Webbserver"
-// sonoff.ino
+// tasmota.ino
#define D_WARNING_MINIMAL_VERSION "VARNING Denna version supporterar inte beständiga inställningar"
#define D_LEVEL_10 "nivå 1-0"
#define D_LEVEL_01 "nivå 0-1"
@@ -511,7 +511,7 @@
//xsns_43_hre.ino
#define D_LOG_HRE "HRE: "
-// sonoff_template.h - keep them as short as possible to be able to fit them in GUI drop down box
+// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Ingen"
#define D_SENSOR_USER "User"
#define D_SENSOR_DHT11 "DHT11"
diff --git a/tasmota/language/tr-TR.h b/tasmota/language/tr-TR.h
index 18699b21c..be515217c 100644
--- a/tasmota/language/tr-TR.h
+++ b/tasmota/language/tr-TR.h
@@ -182,7 +182,7 @@
#define D_WARMLIGHT "Sıcak"
#define D_WEB_SERVER "Web Sunucusu"
-// sonoff.ino
+// tasmota.ino
#define D_WARNING_MINIMAL_VERSION "UYARI Bu versiyon ayarların kalıcı olarak kaydedilmesine olanak sağlamıyor"
#define D_LEVEL_10 "seviye 1-0"
#define D_LEVEL_01 "seviye 0-1"
@@ -511,7 +511,7 @@
//xsns_43_hre.ino
#define D_LOG_HRE "HRE: "
-// sonoff_template.h - keep them as short as possible to be able to fit them in GUI drop down box
+// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "None"
#define D_SENSOR_USER "User"
#define D_SENSOR_DHT11 "DHT11"
diff --git a/tasmota/language/uk-UK.h b/tasmota/language/uk-UK.h
index d3124c4ab..8d454447c 100644
--- a/tasmota/language/uk-UK.h
+++ b/tasmota/language/uk-UK.h
@@ -182,7 +182,7 @@
#define D_WARMLIGHT "Тепло"
#define D_WEB_SERVER "Web сервер"
-// sonoff.ino
+// tasmota.ino
#define D_WARNING_MINIMAL_VERSION "ПОПЕРЕДЖЕННЯ! Ця версія не підтримує збереження налаштувань"
#define D_LEVEL_10 "рівень 1-0"
#define D_LEVEL_01 "рівень 0-1"
@@ -511,7 +511,7 @@
//xsns_43_hre.ino
#define D_LOG_HRE "HRE: "
-// sonoff_template.h - keep them as short as possible to be able to fit them in GUI drop down box
+// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "Немає"
#define D_SENSOR_USER "Користувач"
#define D_SENSOR_DHT11 "DHT11"
diff --git a/tasmota/language/zh-CN.h b/tasmota/language/zh-CN.h
index 4b443d490..14dd178c9 100644
--- a/tasmota/language/zh-CN.h
+++ b/tasmota/language/zh-CN.h
@@ -182,7 +182,7 @@
#define D_WARMLIGHT "暖"
#define D_WEB_SERVER "Web Server"
-// sonoff.ino
+// tasmota.ino
#define D_WARNING_MINIMAL_VERSION "警告:精简固件不支持配置持久化保存"
#define D_LEVEL_10 "level 1-0"
#define D_LEVEL_01 "level 0-1"
@@ -511,7 +511,7 @@
//xsns_43_hre.ino
#define D_LOG_HRE "HRE: "
-// sonoff_template.h - keep them as short as possible to be able to fit them in GUI drop down box
+// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "无"
#define D_SENSOR_USER "User"
#define D_SENSOR_DHT11 "DHT11"
diff --git a/tasmota/language/zh-TW.h b/tasmota/language/zh-TW.h
index 179cc0177..96504e371 100644
--- a/tasmota/language/zh-TW.h
+++ b/tasmota/language/zh-TW.h
@@ -182,7 +182,7 @@
#define D_WARMLIGHT "暖"
#define D_WEB_SERVER "Web Server"
-// sonoff.ino
+// tasmota.ino
#define D_WARNING_MINIMAL_VERSION "警告:精簡產品不支持配置寫入保存"
#define D_LEVEL_10 "level 1-0"
#define D_LEVEL_01 "level 0-1"
@@ -511,7 +511,7 @@
//xsns_43_hre.ino
#define D_LOG_HRE "HRE: "
-// sonoff_template.h - keep them as short as possible to be able to fit them in GUI drop down box
+// tasmota_template.h - keep them as short as possible to be able to fit them in GUI drop down box
#define D_SENSOR_NONE "None"
#define D_SENSOR_USER "User"
#define D_SENSOR_DHT11 "DHT11"
diff --git a/tasmota/support.ino b/tasmota/support.ino
index 461534b65..2e09525d4 100644
--- a/tasmota/support.ino
+++ b/tasmota/support.ino
@@ -304,7 +304,7 @@ char* ulltoa(unsigned long long value, char *str, int radix)
}
// see https://stackoverflow.com/questions/6357031/how-do-you-convert-a-byte-array-to-a-hexadecimal-string-in-c
-// char* ToHex_P(unsigned char * in, size_t insz, char * out, size_t outsz, char inbetween = '\0'); in sonoff_post.h
+// char* ToHex_P(unsigned char * in, size_t insz, char * out, size_t outsz, char inbetween = '\0'); in tasmota_post.h
char* ToHex_P(const unsigned char * in, size_t insz, char * out, size_t outsz, char inbetween)
{
// ToHex_P(in, insz, out, outz) -> "12345667"
diff --git a/tasmota/support_command.ino b/tasmota/support_command.ino
index f1bd22de1..bca3a4f17 100644
--- a/tasmota/support_command.ino
+++ b/tasmota/support_command.ino
@@ -102,7 +102,7 @@ void ExecuteCommand(const char *cmnd, uint32_t source)
const char *start = pos;
// Get a command. Commands can only use letters, digits and underscores
while (*pos && (isalpha(*pos) || isdigit(*pos) || '_' == *pos || '/' == *pos)) {
- if ('/' == *pos) { // Skip possible cmnd/sonoff/ preamble
+ if ('/' == *pos) { // Skip possible cmnd/tasmota/ preamble
start = pos + 1;
}
pos++;
@@ -125,8 +125,8 @@ void ExecuteCommand(const char *cmnd, uint32_t source)
/********************************************************************************************/
// topicBuf: /power1 dataBuf: toggle = Console command
-// topicBuf: cmnd/sonoff/power1 dataBuf: toggle = Mqtt command using topic
-// topicBuf: cmnd/sonoffs/power1 dataBuf: toggle = Mqtt command using a group topic
+// topicBuf: cmnd/tasmota/power1 dataBuf: toggle = Mqtt command using topic
+// topicBuf: cmnd/tasmotas/power1 dataBuf: toggle = Mqtt command using a group topic
// topicBuf: cmnd/DVES_83BB10_fb/power1 dataBuf: toggle = Mqtt command using fallback topic
void CommandHandler(char* topicBuf, char* dataBuf, uint32_t data_len)
diff --git a/tasmota/support_features.ino b/tasmota/support_features.ino
index ef1f23c84..964d5058d 100644
--- a/tasmota/support_features.ino
+++ b/tasmota/support_features.ino
@@ -29,19 +29,19 @@ void GetFeatures(void)
feature_drv1 |= 0x00000001; // xdrv_03_energy.ino
#endif
#ifdef USE_LIGHT
- feature_drv1 |= 0x00000002; // sonoff.ino, xdrv_04_light.ino
+ feature_drv1 |= 0x00000002; // tasmota.ino, xdrv_04_light.ino
#endif
#ifdef USE_I2C
- feature_drv1 |= 0x00000004; // sonoff.ino
+ feature_drv1 |= 0x00000004; // tasmota.ino
#endif
#ifdef USE_SPI
- feature_drv1 |= 0x00000008; // sonoff.ino
+ feature_drv1 |= 0x00000008; // tasmota.ino
#endif
#ifdef USE_DISCOVERY
- feature_drv1 |= 0x00000010; // sonoff.ino
+ feature_drv1 |= 0x00000010; // tasmota.ino
#endif
#ifdef USE_ARDUINO_OTA
- feature_drv1 |= 0x00000020; // sonoff.ino
+ feature_drv1 |= 0x00000020; // tasmota.ino
#endif
#ifdef USE_MQTT_TLS
feature_drv1 |= 0x00000040; // xdrv_02_mqtt.ino
diff --git a/tasmota/xdrv_01_webserver.ino b/tasmota/xdrv_01_webserver.ino
index d9fa8d172..9d94622a5 100644
--- a/tasmota/xdrv_01_webserver.ino
+++ b/tasmota/xdrv_01_webserver.ino
@@ -837,7 +837,7 @@ void WSContentSendStyle_P(const char* formatP, ...)
if (Settings.flag3.gui_hostname_ip) { // SetOption53 - Show hostanme and IP address in GUI main menu
bool lip = (static_cast(WiFi.localIP()) != 0);
bool sip = (static_cast(WiFi.softAPIP()) != 0);
- WSContentSend_P(PSTR("%s%s (%s%s%s)
"), // sonoff.local (192.168.2.12, 192.168.4.1)
+ WSContentSend_P(PSTR("%s%s (%s%s%s)
"), // tasmota.local (192.168.2.12, 192.168.4.1)
my_hostname,
(Wifi.mdns_begun) ? ".local" : "",
(lip) ? WiFi.localIP().toString().c_str() : "",
@@ -2494,10 +2494,10 @@ String UrlEncode(const String& text)
int WebSend(char *buffer)
{
- // [sonoff] POWER1 ON --> Sends http://sonoff/cm?cmnd=POWER1 ON
+ // [tasmota] POWER1 ON --> Sends http://tasmota/cm?cmnd=POWER1 ON
// [192.168.178.86:80,admin:joker] POWER1 ON --> Sends http://hostname:80/cm?user=admin&password=joker&cmnd=POWER1 ON
- // [sonoff] /any/link/starting/with/a/slash.php?log=123 --> Sends http://sonoff/any/link/starting/with/a/slash.php?log=123
- // [sonoff,admin:joker] /any/link/starting/with/a/slash.php?log=123 --> Sends http://sonoff/any/link/starting/with/a/slash.php?log=123
+ // [tasmota] /any/link/starting/with/a/slash.php?log=123 --> Sends http://tasmota/any/link/starting/with/a/slash.php?log=123
+ // [tasmota,admin:joker] /any/link/starting/with/a/slash.php?log=123 --> Sends http://tasmota/any/link/starting/with/a/slash.php?log=123
char *host;
char *user;
diff --git a/tasmota/xdrv_11_knx.ino b/tasmota/xdrv_11_knx.ino
index 8ba54b73b..c848bddfe 100644
--- a/tasmota/xdrv_11_knx.ino
+++ b/tasmota/xdrv_11_knx.ino
@@ -24,7 +24,7 @@
* Using libraries:
* ESP KNX IP library (https://github.com/envy/esp-knx-ip)
-Constants in sonoff.h
+Constants in tasmota.h
-----------------------
#define MAX_KNX_GA 10 Max number of KNX Group Addresses to read that can be set
diff --git a/tasmota/xdrv_13_display.ino b/tasmota/xdrv_13_display.ino
index 2c0f7f229..42bb9858b 100644
--- a/tasmota/xdrv_13_display.ino
+++ b/tasmota/xdrv_13_display.ino
@@ -1221,10 +1221,10 @@ bool DisplayMqttData(void)
snprintf_P(stopic, sizeof(stopic) , PSTR("%s/"), Settings.mqtt_prefix[2]); // tele/
char *tp = strstr(XdrvMailbox.topic, stopic);
- if (tp) { // tele/sonoff/SENSOR
+ if (tp) { // tele/tasmota/SENSOR
if (Settings.display_mode &0x04) {
- tp = tp + strlen(stopic); // sonoff/SENSOR
- char *topic = strtok(tp, "/"); // sonoff
+ tp = tp + strlen(stopic); // tasmota/SENSOR
+ char *topic = strtok(tp, "/"); // tasmota
DisplayAnalyzeJson(topic, XdrvMailbox.data);
}
return true;
diff --git a/tasmota/xdrv_20_hue.ino b/tasmota/xdrv_20_hue.ino
index e52ff88c9..254fa4d99 100644
--- a/tasmota/xdrv_20_hue.ino
+++ b/tasmota/xdrv_20_hue.ino
@@ -484,7 +484,7 @@ void HueAuthentication(String *path)
void HueLights(String *path)
{
/*
- * http://sonoff/api/username/lights/1/state?1={"on":true,"hue":56100,"sat":254,"bri":254,"alert":"none","transitiontime":40}
+ * http://tasmota/api/username/lights/1/state?1={"on":true,"hue":56100,"sat":254,"bri":254,"alert":"none","transitiontime":40}
*/
String response;
int code = 200;
@@ -744,7 +744,7 @@ void HueLights(String *path)
void HueGroups(String *path)
{
/*
- * http://sonoff/api/username/groups?1={"name":"Woonkamer","lights":[],"type":"Room","class":"Living room"})
+ * http://tasmota/api/username/groups?1={"name":"Woonkamer","lights":[],"type":"Room","class":"Living room"})
*/
String response = "{}";
uint8_t maxhue = (devices_present > MAX_HUE_DEVICES) ? MAX_HUE_DEVICES : devices_present;
@@ -774,9 +774,9 @@ void HandleHueApi(String *path)
* (c) Heiko Krupp, 2017
*
* Hue URL
- * http://sonoff/api/username/lights/1/state with post data {"on":true,"hue":56100,"sat":254,"bri":254,"alert":"none","transitiontime":40}
+ * http://tasmota/api/username/lights/1/state with post data {"on":true,"hue":56100,"sat":254,"bri":254,"alert":"none","transitiontime":40}
* is converted by webserver to
- * http://sonoff/api/username/lights/1/state with arg plain={"on":true,"hue":56100,"sat":254,"bri":254,"alert":"none","transitiontime":40}
+ * http://tasmota/api/username/lights/1/state with arg plain={"on":true,"hue":56100,"sat":254,"bri":254,"alert":"none","transitiontime":40}
*/
uint8_t args = 0;
diff --git a/tasmota/xdrv_99_debug.ino b/tasmota/xdrv_99_debug.ino
index 717eafb71..7fbee7f3a 100644
--- a/tasmota/xdrv_99_debug.ino
+++ b/tasmota/xdrv_99_debug.ino
@@ -142,7 +142,7 @@ Decoding 14 results
0x40201118: atol at C:\Data2\Arduino\arduino-1.8.1-esp-2.3.0\portable\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/core_esp8266_noniso.c line 45
0x40201128: atoi at C:\Data2\Arduino\arduino-1.8.1-esp-2.3.0\portable\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/core_esp8266_noniso.c line 45
-00:00:08 MQTT: tele/sonoff/INFO3 = {"Started":"Fatal exception:28 flag:2 (EXCEPTION) epc1:0x4000bf64 epc2:0x00000000 epc3:0x00000000 excvaddr:0x00000007 depc:0x00000000"}
+00:00:08 MQTT: tele/tasmota/INFO3 = {"Started":"Fatal exception:28 flag:2 (EXCEPTION) epc1:0x4000bf64 epc2:0x00000000 epc3:0x00000000 excvaddr:0x00000007 depc:0x00000000"}
*/
if (1 == type) {
char svalue[10];
diff --git a/tasmota/xsns_42_scd30.ino b/tasmota/xsns_42_scd30.ino
index 5f629eb91..5a1425dfe 100644
--- a/tasmota/xsns_42_scd30.ino
+++ b/tasmota/xsns_42_scd30.ino
@@ -23,12 +23,12 @@
#define XSNS_42 42
#define SCD30_MAX_MISSED_READS 3
-#define SONOFF_SCD30_STATE_NO_ERROR 0
-#define SONOFF_SCD30_STATE_ERROR_DATA_CRC 1
-#define SONOFF_SCD30_STATE_ERROR_READ_MEAS 2
-#define SONOFF_SCD30_STATE_ERROR_SOFT_RESET 3
-#define SONOFF_SCD30_STATE_ERROR_I2C_RESET 4
-#define SONOFF_SCD30_STATE_ERROR_UNKNOWN 5
+#define SCD30_STATE_NO_ERROR 0
+#define SCD30_STATE_ERROR_DATA_CRC 1
+#define SCD30_STATE_ERROR_READ_MEAS 2
+#define SCD30_STATE_ERROR_SOFT_RESET 3
+#define SCD30_STATE_ERROR_I2C_RESET 4
+#define SCD30_STATE_ERROR_UNKNOWN 5
#include "Arduino.h"
#include
@@ -60,7 +60,7 @@ FrogmoreScd30 scd30;
bool scd30Found = false;
bool scd30IsDataValid = false;
-int scd30ErrorState = SONOFF_SCD30_STATE_NO_ERROR;
+int scd30ErrorState = SCD30_STATE_NO_ERROR;
uint16_t scd30Interval_sec;
int scd30Loop_count = 0;
int scd30DataNotAvailable_count = 0;
@@ -154,7 +154,7 @@ int Scd30Update()
{
switch (scd30ErrorState)
{
- case SONOFF_SCD30_STATE_NO_ERROR:
+ case SCD30_STATE_NO_ERROR:
{
error = scd30.readMeasurement(&scd30_CO2, &scd30_CO2EAvg, &scd30_Temp, &scd30_Humid);
switch (error)
@@ -170,7 +170,7 @@ int Scd30Update()
break;
case ERROR_SCD30_CRC_ERROR:
- scd30ErrorState = SONOFF_SCD30_STATE_ERROR_DATA_CRC;
+ scd30ErrorState = SCD30_STATE_ERROR_DATA_CRC;
scd30CrcError_count++;
#ifdef SCD30_DEBUG
snprintf_P(log_data, sizeof(log_data), "SCD30: CRC error, CRC error: %ld, CO2 zero: %ld, good: %ld, no data: %ld, sc30_reset: %ld, i2c_reset: %ld", scd30CrcError_count, scd30Co2Zero_count, scd30GoodMeas_count, scd30DataNotAvailable_count, scd30Reset_count, i2cReset_count);
@@ -188,7 +188,7 @@ int Scd30Update()
default:
{
- scd30ErrorState = SONOFF_SCD30_STATE_ERROR_READ_MEAS;
+ scd30ErrorState = SCD30_STATE_ERROR_READ_MEAS;
#ifdef SCD30_DEBUG
snprintf_P(log_data, sizeof(log_data), "SCD30: Update: ReadMeasurement error: 0x%lX, counter: %ld", error, scd30Loop_count);
AddLog(LOG_LEVEL_ERROR);
@@ -200,7 +200,7 @@ int Scd30Update()
}
break;
- case SONOFF_SCD30_STATE_ERROR_DATA_CRC:
+ case SCD30_STATE_ERROR_DATA_CRC:
{
//scd30IsDataValid = false;
#ifdef SCD30_DEBUG
@@ -213,7 +213,7 @@ int Scd30Update()
}
break;
- case SONOFF_SCD30_STATE_ERROR_READ_MEAS:
+ case SCD30_STATE_ERROR_READ_MEAS:
{
//scd30IsDataValid = false;
#ifdef SCD30_DEBUG
@@ -233,11 +233,11 @@ int Scd30Update()
error >>= 8;
if (error == 4)
{
- scd30ErrorState = SONOFF_SCD30_STATE_ERROR_SOFT_RESET;
+ scd30ErrorState = SCD30_STATE_ERROR_SOFT_RESET;
}
else
{
- scd30ErrorState = SONOFF_SCD30_STATE_ERROR_UNKNOWN;
+ scd30ErrorState = SCD30_STATE_ERROR_UNKNOWN;
}
}
else
@@ -247,7 +247,7 @@ int Scd30Update()
}
break;
- case SONOFF_SCD30_STATE_ERROR_SOFT_RESET:
+ case SCD30_STATE_ERROR_SOFT_RESET:
{
//scd30IsDataValid = false;
#ifdef SCD30_DEBUG
@@ -260,7 +260,7 @@ int Scd30Update()
error = scd30.clearI2CBus();
if (error)
{
- scd30ErrorState = SONOFF_SCD30_STATE_ERROR_I2C_RESET;
+ scd30ErrorState = SCD30_STATE_ERROR_I2C_RESET;
#ifdef SCD30_DEBUG
snprintf_P(log_data, sizeof(log_data), "SCD30: error clearing i2c bus: 0x%lX", error);
AddLog(LOG_LEVEL_ERROR);
@@ -280,7 +280,7 @@ int Scd30Update()
snprintf_P(log_data, sizeof(log_data), "SCD30: unknown error state: 0x%lX", scd30ErrorState);
AddLog(LOG_LEVEL_ERROR);
#endif
- scd30ErrorState = SONOFF_SCD30_STATE_ERROR_SOFT_RESET; // try again
+ scd30ErrorState = SCD30_STATE_ERROR_SOFT_RESET; // try again
}
}