diff --git a/tasmota/i18n.h b/tasmota/i18n.h
index f2ca5ac65..a21734ae9 100644
--- a/tasmota/i18n.h
+++ b/tasmota/i18n.h
@@ -57,6 +57,7 @@
#define D_JSON_DNSSERVER "DNSServer"
#define D_JSON_DONE "Done"
#define D_JSON_DOWNTIME "Downtime"
+#define D_JSON_EC "EC"
#define D_JSON_ECO2 "eCO2"
#define D_JSON_EMPTY "Empty"
#define D_JSON_ENDDST "EndDST" // End Daylight Savings Time
@@ -773,6 +774,7 @@ const char HTTP_SNS_POWER[] PROGMEM = "{s}" D_POWERUSAGE "{
const char HTTP_SNS_ENERGY_TOTAL[] PROGMEM = "{s}" D_ENERGY_TOTAL "{m}%s " D_UNIT_KILOWATTHOUR "{e}";
const char HTTP_SNS_PH[] PROGMEM = "{s}%s " D_PH "{m}%s " "{e}";
const char HTTP_SNS_ORP[] PROGMEM = "{s}%s " D_ORP "{m}%s " D_UNIT_MILLIVOLT "{e}";
+const char HTTP_SNS_EC[] PROGMEM = "{s}%s " D_EC "{m}%s " D_UNIT_MICROSIEMENS_PER_CM "{e}";
const char S_MAIN_MENU[] PROGMEM = D_MAIN_MENU;
const char S_CONFIGURATION[] PROGMEM = D_CONFIGURATION;
diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h
index f0a869cf9..cd1f9ed24 100644
--- a/tasmota/language/bg_BG.h
+++ b/tasmota/language/bg_BG.h
@@ -86,6 +86,7 @@
#define D_DNS_SERVER "DNS Сървър"
#define D_DONE "Изпълнено"
#define D_DST_TIME "Лятно време"
+#define D_EC "EC"
#define D_ECO2 "eCO₂"
#define D_EMULATION "Емулация"
#define D_ENABLED "Разрешен"
@@ -747,6 +748,7 @@
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
+#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLIMETER "mm"
#define D_UNIT_MILLIMETER_MERCURY "mmHg"
diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h
index ec09983a7..48e1496ef 100644
--- a/tasmota/language/cs_CZ.h
+++ b/tasmota/language/cs_CZ.h
@@ -86,6 +86,7 @@
#define D_DNS_SERVER "Server DNS"
#define D_DONE "Provedeno"
#define D_DST_TIME "DST"
+#define D_EC "EC"
#define D_ECO2 "eCO₂"
#define D_EMULATION "Emulace"
#define D_ENABLED "Otevřený"
@@ -747,6 +748,7 @@
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
+#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLIMETER "mm"
#define D_UNIT_MILLIMETER_MERCURY "mmHg"
diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h
index 4d3d9eecd..fd860a180 100644
--- a/tasmota/language/de_DE.h
+++ b/tasmota/language/de_DE.h
@@ -86,6 +86,7 @@
#define D_DNS_SERVER "DNS-Server"
#define D_DONE "erledigt"
#define D_DST_TIME "DST"
+#define D_EC "EC"
#define D_ECO2 "eCO₂"
#define D_EMULATION "Emulation"
#define D_ENABLED "aktiviert"
@@ -747,6 +748,7 @@
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
+#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLIMETER "mm"
#define D_UNIT_MILLIMETER_MERCURY "mmHg"
diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h
index 1f20dd270..6306e0adb 100644
--- a/tasmota/language/el_GR.h
+++ b/tasmota/language/el_GR.h
@@ -86,6 +86,7 @@
#define D_DNS_SERVER "Διακομιστής DNS"
#define D_DONE "Ολοκληρώθηκε"
#define D_DST_TIME "DST"
+#define D_EC "EC"
#define D_ECO2 "eCO₂"
#define D_EMULATION "Εξομoίωση"
#define D_ENABLED "Ενεργό"
@@ -747,6 +748,7 @@
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
+#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLIMETER "mm"
#define D_UNIT_MILLIMETER_MERCURY "mmHg"
diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h
index 7e84ff75b..acf7271f2 100644
--- a/tasmota/language/en_GB.h
+++ b/tasmota/language/en_GB.h
@@ -86,6 +86,7 @@
#define D_DNS_SERVER "DNS Server"
#define D_DONE "Done"
#define D_DST_TIME "DST"
+#define D_EC "EC"
#define D_ECO2 "eCO₂"
#define D_EMULATION "Emulation"
#define D_ENABLED "Enabled"
@@ -747,6 +748,7 @@
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
+#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLIMETER "mm"
#define D_UNIT_MILLIMETER_MERCURY "mmHg"
diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h
index 35f0ac6f5..31decf77e 100644
--- a/tasmota/language/es_ES.h
+++ b/tasmota/language/es_ES.h
@@ -86,6 +86,7 @@
#define D_DNS_SERVER "Servidor DNS"
#define D_DONE "Listo"
#define D_DST_TIME "DST"
+#define D_EC "EC"
#define D_ECO2 "eCO₂"
#define D_EMULATION "Emulación"
#define D_ENABLED "Habilitado"
@@ -747,6 +748,7 @@
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
+#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLIMETER "mm"
#define D_UNIT_MILLIMETER_MERCURY "mmHg"
diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h
index 4c7775e49..a80353835 100644
--- a/tasmota/language/fr_FR.h
+++ b/tasmota/language/fr_FR.h
@@ -82,6 +82,7 @@
#define D_DNS_SERVER "Serveur DNS"
#define D_DONE "Terminé"
#define D_DST_TIME "DST"
+#define D_EC "EC"
#define D_ECO2 "eCO₂"
#define D_EMULATION "Émulation"
#define D_ENABLED "Activé"
@@ -743,6 +744,7 @@
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
+#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLIMETER "mm"
#define D_UNIT_MILLIMETER_MERCURY "mmHg"
diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h
index 4fb8cf5b6..5d3a71a2c 100644
--- a/tasmota/language/he_HE.h
+++ b/tasmota/language/he_HE.h
@@ -86,6 +86,7 @@
#define D_DNS_SERVER "DNS שרת"
#define D_DONE "סיים"
#define D_DST_TIME "DST"
+#define D_EC "EC"
#define D_ECO2 "eCO₂"
#define D_EMULATION "הדמיה"
#define D_ENABLED "מאופשר"
@@ -747,6 +748,7 @@
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
+#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLIMETER "mm"
#define D_UNIT_MILLIMETER_MERCURY "mmHg"
diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h
index d0cddc994..5f4d0219a 100644
--- a/tasmota/language/hu_HU.h
+++ b/tasmota/language/hu_HU.h
@@ -86,6 +86,7 @@
#define D_DNS_SERVER "DNS szerver"
#define D_DONE "Kész"
#define D_DST_TIME "nyári idő"
+#define D_EC "EC"
#define D_ECO2 "eCO₂"
#define D_EMULATION "Emuláció"
#define D_ENABLED "Engedélyezve"
@@ -747,6 +748,7 @@
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
+#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLIMETER "mm"
#define D_UNIT_MILLIMETER_MERCURY "mmHg"
diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h
index 44c671fdb..f5dc1829a 100644
--- a/tasmota/language/it_IT.h
+++ b/tasmota/language/it_IT.h
@@ -86,6 +86,7 @@
#define D_DNS_SERVER "Server DNS"
#define D_DONE "Completato"
#define D_DST_TIME "DST"
+#define D_EC "EC"
#define D_ECO2 "eCO₂"
#define D_EMULATION "Tipo emulazione"
#define D_ENABLED "Abilitato"
@@ -747,6 +748,7 @@
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
+#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLIMETER "mm"
#define D_UNIT_MILLIMETER_MERCURY "mmHg"
diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h
index a0c162c17..1ddaac5eb 100644
--- a/tasmota/language/ko_KO.h
+++ b/tasmota/language/ko_KO.h
@@ -86,6 +86,7 @@
#define D_DNS_SERVER "DNS 서버"
#define D_DONE "완료"
#define D_DST_TIME "DST"
+#define D_EC "EC"
#define D_ECO2 "eCO₂"
#define D_EMULATION "에뮬레이션"
#define D_ENABLED "사용"
@@ -747,6 +748,7 @@
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "마이크로미터"
#define D_UNIT_MICROSECOND "마이크로초"
+#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLIMETER "mm"
#define D_UNIT_MILLIMETER_MERCURY "mmHg"
diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h
index 5abc5852a..9c73b3dd0 100644
--- a/tasmota/language/nl_NL.h
+++ b/tasmota/language/nl_NL.h
@@ -86,6 +86,7 @@
#define D_DNS_SERVER "DNS Server"
#define D_DONE "Klaar"
#define D_DST_TIME "ZT"
+#define D_EC "EC"
#define D_ECO2 "eCO₂"
#define D_EMULATION "Emulatie"
#define D_ENABLED "Geactiveerd"
@@ -747,6 +748,7 @@
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
+#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLIMETER "mm"
#define D_UNIT_MILLIMETER_MERCURY "mmHg"
diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h
index 4d274f6c8..b17daa404 100644
--- a/tasmota/language/pl_PL.h
+++ b/tasmota/language/pl_PL.h
@@ -86,6 +86,7 @@
#define D_DNS_SERVER "Serwer DNS"
#define D_DONE "Wykonane"
#define D_DST_TIME "Czas DST"
+#define D_EC "EC"
#define D_ECO2 "eCO₂"
#define D_EMULATION "Emulacja"
#define D_ENABLED "Załączony"
@@ -747,6 +748,7 @@
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
+#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLIMETER "mm"
#define D_UNIT_MILLIMETER_MERCURY "mmHg"
diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h
index b81212785..1c3e4e0f0 100644
--- a/tasmota/language/pt_BR.h
+++ b/tasmota/language/pt_BR.h
@@ -86,6 +86,7 @@
#define D_DNS_SERVER "Servidor DNS"
#define D_DONE "Concluído"
#define D_DST_TIME "DST"
+#define D_EC "EC"
#define D_ECO2 "eCO₂"
#define D_EMULATION "Emulação"
#define D_ENABLED "Habilitado"
@@ -747,6 +748,7 @@
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
+#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLIMETER "mm"
#define D_UNIT_MILLIMETER_MERCURY "mmHg"
diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h
index 684f87424..0884caad0 100644
--- a/tasmota/language/pt_PT.h
+++ b/tasmota/language/pt_PT.h
@@ -86,6 +86,7 @@
#define D_DNS_SERVER "Servidor DNS"
#define D_DONE "Concluído"
#define D_DST_TIME "DST"
+#define D_EC "EC"
#define D_ECO2 "eCO₂"
#define D_EMULATION "Emulação"
#define D_ENABLED "Habilitado"
@@ -747,6 +748,7 @@
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
+#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLIMETER "mm"
#define D_UNIT_MILLIMETER_MERCURY "mmHg"
diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h
index f61504c4e..bee81ffe5 100644
--- a/tasmota/language/ro_RO.h
+++ b/tasmota/language/ro_RO.h
@@ -86,6 +86,7 @@
#define D_DNS_SERVER "Server DNS"
#define D_DONE "Terminat"
#define D_DST_TIME "DST"
+#define D_EC "EC"
#define D_ECO2 "eCO₂"
#define D_EMULATION "Emulație"
#define D_ENABLED "Activat"
@@ -747,6 +748,7 @@
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
+#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLIMETER "mm"
#define D_UNIT_MILLIMETER_MERCURY "mmHg"
diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h
index 1bef3939e..50ff4b89e 100644
--- a/tasmota/language/ru_RU.h
+++ b/tasmota/language/ru_RU.h
@@ -86,6 +86,7 @@
#define D_DNS_SERVER "DNS Сервер"
#define D_DONE "Выполнено"
#define D_DST_TIME "DST"
+#define D_EC "EC"
#define D_ECO2 "eCO₂"
#define D_EMULATION "Эмуляция"
#define D_ENABLED "Активно"
@@ -747,6 +748,7 @@
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "мкг/м³"
#define D_UNIT_MICROMETER "мкм"
#define D_UNIT_MICROSECOND "мкс"
+#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
#define D_UNIT_MILLIAMPERE "мА"
#define D_UNIT_MILLIMETER "mm"
#define D_UNIT_MILLIMETER_MERCURY "мм рт.ст."
diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h
index d090767a4..6d269327a 100644
--- a/tasmota/language/sk_SK.h
+++ b/tasmota/language/sk_SK.h
@@ -87,6 +87,7 @@
#define D_DNS_SERVER "Server DNS"
#define D_DONE "Hotovo"
#define D_DST_TIME "DST"
+#define D_EC "EC"
#define D_ECO2 "eCO₂"
#define D_EMULATION "Emulácia"
#define D_ENABLED "Otvorený"
@@ -747,6 +748,7 @@
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
+#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLIMETER "mm"
#define D_UNIT_MILLIMETER_MERCURY "mmHg"
diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h
index d186cf43b..7a946b4f0 100644
--- a/tasmota/language/sv_SE.h
+++ b/tasmota/language/sv_SE.h
@@ -86,6 +86,7 @@
#define D_DNS_SERVER "DNS-server"
#define D_DONE "Gjort"
#define D_DST_TIME "DST"
+#define D_EC "EC"
#define D_ECO2 "eCO₂"
#define D_EMULATION "Emulation"
#define D_ENABLED "Aktiverad"
@@ -747,6 +748,7 @@
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
+#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLIMETER "mm"
#define D_UNIT_MILLIMETER_MERCURY "mmHg"
diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h
index 244dad325..6d057b857 100644
--- a/tasmota/language/tr_TR.h
+++ b/tasmota/language/tr_TR.h
@@ -86,6 +86,7 @@
#define D_DNS_SERVER "DNS Sunucu"
#define D_DONE "Tamam"
#define D_DST_TIME "DST"
+#define D_EC "EC"
#define D_ECO2 "eCO₂"
#define D_EMULATION "Emülasyon"
#define D_ENABLED "Etkin"
@@ -747,6 +748,7 @@
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
+#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLIMETER "mm"
#define D_UNIT_MILLIMETER_MERCURY "mmHg"
diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h
index 1f3448303..71d768ceb 100644
--- a/tasmota/language/uk_UA.h
+++ b/tasmota/language/uk_UA.h
@@ -86,6 +86,7 @@
#define D_DNS_SERVER "Сервер DNS"
#define D_DONE "Виконано"
#define D_DST_TIME "Літній час"
+#define D_EC "EC"
#define D_ECO2 "eCO₂"
#define D_EMULATION "Емуляція"
#define D_ENABLED "Увімкнено"
@@ -747,6 +748,7 @@
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µг/м³"
#define D_UNIT_MICROMETER "µм"
#define D_UNIT_MICROSECOND "µС"
+#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
#define D_UNIT_MILLIAMPERE "мА"
#define D_UNIT_MILLIMETER "мм"
#define D_UNIT_MILLIMETER_MERCURY "ммHg"
diff --git a/tasmota/language/vi_VN.h b/tasmota/language/vi_VN.h
index e0700ba32..106f74e38 100644
--- a/tasmota/language/vi_VN.h
+++ b/tasmota/language/vi_VN.h
@@ -86,6 +86,7 @@
#define D_DNS_SERVER "Máy chủ DNS"
#define D_DONE "Hoàn thành"
#define D_DST_TIME "DST"
+#define D_EC "EC"
#define D_ECO2 "eCO2"
#define D_EMULATION "Mô phỏng"
#define D_ENABLED "Kích hoạt"
@@ -747,6 +748,7 @@
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
+#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLIMETER "mm"
#define D_UNIT_MILLIMETER_MERCURY "mmHg"
diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h
index a7d930ae4..01382ced7 100644
--- a/tasmota/language/zh_CN.h
+++ b/tasmota/language/zh_CN.h
@@ -86,6 +86,7 @@
#define D_DNS_SERVER "DNS服务器"
#define D_DONE "完成"
#define D_DST_TIME "DST"
+#define D_EC "EC"
#define D_ECO2 "eCO₂"
#define D_EMULATION "设备模拟"
#define D_ENABLED "启用"
@@ -747,6 +748,7 @@
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "微克/立方米"
#define D_UNIT_MICROMETER "微米"
#define D_UNIT_MICROSECOND "微秒"
+#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
#define D_UNIT_MILLIAMPERE "毫安"
#define D_UNIT_MILLIMETER "毫米"
#define D_UNIT_MILLIMETER_MERCURY "毫米汞柱"
diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h
index 4243f0b55..9f5ab99cc 100644
--- a/tasmota/language/zh_TW.h
+++ b/tasmota/language/zh_TW.h
@@ -86,6 +86,7 @@
#define D_DNS_SERVER "DNS伺服器"
#define D_DONE "完成"
#define D_DST_TIME "DST"
+#define D_EC "EC"
#define D_ECO2 "eCO₂"
#define D_EMULATION "模擬"
#define D_ENABLED "已啟用"
@@ -747,6 +748,7 @@
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "微克/立方公尺"
#define D_UNIT_MICROMETER "微米"
#define D_UNIT_MICROSECOND "微秒"
+#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
#define D_UNIT_MILLIAMPERE "毫安培"
#define D_UNIT_MILLIMETER "mm"
#define D_UNIT_MILLIMETER_MERCURY "mmHg"
diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h
index 28c075d9f..db809b67b 100644
--- a/tasmota/my_user_config.h
+++ b/tasmota/my_user_config.h
@@ -566,6 +566,7 @@
// #define USE_EZOORP // [I2cDriver55] Enable support for EZO's ORP sensor (+0k3 code) - Shared EZO code required for any EZO device (+1k2 code)
// #define USE_EZORTD // [I2cDriver55] Enable support for EZO's RTD sensor (+0k2 code) - Shared EZO code required for any EZO device (+1k2 code)
// #define USE_EZOHUM // [I2cDriver55] Enable support for EZO's HUM sensor (+0k3 code) - Shared EZO code required for any EZO device (+1k2 code)
+ #define USE_EZOEC // [I2cDriver55] Enable support for EZO's EC sensor (+0k3 code) - Shared EZO code required for any EZO device (+1k2 code)
// #define USE_DISPLAY // Add I2C Display Support (+2k code)
#define USE_DISPLAY_MODES1TO5 // Enable display mode 1 to 5 in addition to mode 0
diff --git a/tasmota/xsns_78_ezo.ino b/tasmota/xsns_78_ezo.ino
index 60d13f971..1507a36c4 100644
--- a/tasmota/xsns_78_ezo.ino
+++ b/tasmota/xsns_78_ezo.ino
@@ -17,7 +17,7 @@
along with this program. If not, see .
*/
#ifdef USE_I2C
-#if defined(USE_EZOPH) || defined(USE_EZOORP) || defined(USE_EZORTD) || defined(USE_EZOHUM)
+#if defined(USE_EZOPH) || defined(USE_EZOORP) || defined(USE_EZORTD) || defined(USE_EZOHUM) || defined(USE_EZOEC)
#define D_EZO_DELAY 300 // Minimum delay for any instruction
#define D_EZO_MAX_BUF 40 // Maximum response
diff --git a/tasmota/xsns_78_ezoec.ino b/tasmota/xsns_78_ezoec.ino
new file mode 100644
index 000000000..8d5a22912
--- /dev/null
+++ b/tasmota/xsns_78_ezoec.ino
@@ -0,0 +1,56 @@
+/*
+ xsns_78_ezoph.ino - EZO EC I2C EC sensor support for Tasmota
+
+ Copyright (C) 2020 Christopher Tremblay
+
+ 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 .
+*/
+
+#ifdef USE_I2C
+#ifdef USE_EZOEC
+
+#define EZO_EC_READ_LATENCY 600
+
+struct EZOEC : public EZOStruct {
+ EZOEC(uint32_t addr) : EZOStruct(addr), EC(NAN) {}
+
+ virtual void ProcessMeasurement(void)
+ {
+ char data[D_EZO_MAX_BUF];
+
+ EZOStruct::ProcessMeasurement(data, sizeof(data), EZO_EC_READ_LATENCY);
+ EC = CharToFloat(data);
+ }
+
+ virtual void Show(bool json, const char *name)
+ {
+ char str[6];
+ dtostrfd(EC, 2, str);
+
+ if (json) {
+ ResponseAppend_P(PSTR(",\"%s\":{\"" D_JSON_EC "\":%s}" ), name, str);
+ }
+#ifdef USE_WEBSERVER
+ else {
+ WSContentSend_PD(HTTP_SNS_EC, name, str);
+#endif // USE_WEBSERVER
+ }
+ }
+
+private:
+ float EC;
+};
+
+#endif // USE_EZOEC
+#endif // USE_I2C
diff --git a/tasmota/xsns_78_xezo.ino b/tasmota/xsns_78_xezo.ino
index b90fcbe0d..244268e00 100644
--- a/tasmota/xsns_78_xezo.ino
+++ b/tasmota/xsns_78_xezo.ino
@@ -18,10 +18,10 @@
*/
#ifdef USE_I2C
-#if defined(USE_EZOPH) || defined(USE_EZOORP) || defined(USE_EZORTD) || defined(USE_EZOHUM)
+#if defined(USE_EZOPH) || defined(USE_EZOORP) || defined(USE_EZORTD) || defined(USE_EZOHUM) || defined(USE_EZOEC)
#define XSNS_78 78
-#define XI2C_55 55 // See I2CDEVICES.md
+#define XI2C_55 55 // See I2CDEVICES.md
#define EZO_ADDR_0 0x61 // First EZO address
#define EZO_ADDR_n 16 // Number of ports for use with EZO devices
@@ -57,7 +57,9 @@ const char EZO_ORP_NAME[] PROGMEM = "ORP";
#ifdef USE_EZOPH
const char EZO_PH_NAME[] PROGMEM = "pH";
#endif
-//const char EZO_EC_NAME[] PROGMEM = "EC";
+#ifdef USE_EZOEC
+const char EZO_EC_NAME[] PROGMEM = "pH";
+#endif
#ifdef USE_EZORTD
const char EZO_RTD_NAME[] PROGMEM = "RTD";
#endif
@@ -86,7 +88,12 @@ const char *const EZOSupport[EZO_ADDR_n] PROGMEM = {
EZO_EMPTY,
#endif
+#ifdef USE_EZOEC
+ EZO_EC_NAME,
+#else
EZO_EMPTY,
+#endif
+
EZO_EMPTY,
#ifdef USE_EZORTD
@@ -248,6 +255,11 @@ private:
sensor[count] = new EZOpH(addr);
break;
#endif
+#ifdef USE_EZOEC
+ case EZO_EC:
+ sensor[count] = new EZOEC(addr);
+ break;
+#endif
#ifdef USE_EZORTD
case EZO_RTD:
sensor[count] = new EZORTD(addr);