diff --git a/sonoff/i18n.h b/sonoff/i18n.h
index 3067271e9..20d5bdfa7 100644
--- a/sonoff/i18n.h
+++ b/sonoff/i18n.h
@@ -415,6 +415,7 @@ enum UnitNames {
UNIT_LUX,
UNIT_MICROSECOND,
UNIT_MILLIAMPERE,
+ UNIT_MILLIMETER_MERCURY,
UNIT_MILLISECOND,
UNIT_MINUTE,
UNIT_PPB,
@@ -436,6 +437,7 @@ const char kUnitNames[] PROGMEM =
D_UNIT_LUX "|"
D_UNIT_MICROSECOND "|"
D_UNIT_MILLIAMPERE "|"
+ D_UNIT_MILLIMETER_MERCURY "|"
D_UNIT_MILLISECOND "|"
D_UNIT_MINUTE "|"
D_UNIT_PARTS_PER_BILLION "|"
@@ -527,8 +529,13 @@ const char kOptionBlinkOff[] PROGMEM = "BLINKOFF|" D_BLINKOFF ;
#ifdef USE_WEBSERVER
const char HTTP_SNS_TEMP[] PROGMEM = "%s{s}%s " D_TEMPERATURE "{m}%s°%c{e}"; // {s} =
, {m} = | , {e} = |
const char HTTP_SNS_HUM[] PROGMEM = "%s{s}%s " D_HUMIDITY "{m}%s%%{e}"; // {s} = , {m} = | , {e} = |
+#ifndef USE_MMHG
const char HTTP_SNS_PRESSURE[] PROGMEM = "%s{s}%s " D_PRESSURE "{m}%s " D_UNIT_PRESSURE "{e}"; // {s} = , {m} = | , {e} = |
const char HTTP_SNS_SEAPRESSURE[] PROGMEM = "%s{s}%s " D_PRESSUREATSEALEVEL "{m}%s " D_UNIT_PRESSURE "{e}"; // {s} = , {m} = | , {e} = |
+#else
+const char HTTP_SNS_PRESSURE[] PROGMEM = "%s{s}%s " D_PRESSURE "{m}%s " D_UNIT_MILLIMETER_MERCURY "{e}"; // {s} = , {m} = | , {e} = |
+const char HTTP_SNS_SEAPRESSURE[] PROGMEM = "%s{s}%s " D_PRESSUREATSEALEVEL "{m}%s " D_UNIT_MILLIMETER_MERCURY "{e}"; // {s} = , {m} = | , {e} = |
+#endif
const char HTTP_SNS_ANALOG[] PROGMEM = "%s{s}%s " D_ANALOG_INPUT "%d{m}%d{e}"; // {s} = , {m} = | , {e} = |
#if defined(USE_MHZ19) || defined(USE_SENSEAIR)
diff --git a/sonoff/language/bg-BG.h b/sonoff/language/bg-BG.h
index d774276e8..1503884c3 100644
--- a/sonoff/language/bg-BG.h
+++ b/sonoff/language/bg-BG.h
@@ -545,6 +545,7 @@
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
#define D_UNIT_MILLIAMPERE "mA"
+#define D_UNIT_MILLIMETER_MERCURY "mmHg"
#define D_UNIT_MILLISECOND "ms"
#define D_UNIT_MINUTE "min"
#define D_UNIT_PARTS_PER_BILLION "ppb"
diff --git a/sonoff/language/cs-CZ.h b/sonoff/language/cs-CZ.h
index 0cf34043b..2b667cec1 100644
--- a/sonoff/language/cs-CZ.h
+++ b/sonoff/language/cs-CZ.h
@@ -545,6 +545,7 @@
#define D_UNIT_MICROMETER "um"
#define D_UNIT_MICROSECOND "us"
#define D_UNIT_MILLIAMPERE "mA"
+#define D_UNIT_MILLIMETER_MERCURY "mmHg"
#define D_UNIT_MILLISECOND "ms"
#define D_UNIT_MINUTE "min"
#define D_UNIT_PARTS_PER_BILLION "ppb"
diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h
index 0c2ab9f6a..d024562a6 100644
--- a/sonoff/language/de-DE.h
+++ b/sonoff/language/de-DE.h
@@ -545,6 +545,7 @@
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
#define D_UNIT_MILLIAMPERE "mA"
+#define D_UNIT_MILLIMETER_MERCURY "mmHg"
#define D_UNIT_MILLISECOND "ms"
#define D_UNIT_MINUTE "min"
#define D_UNIT_PARTS_PER_BILLION "ppb"
diff --git a/sonoff/language/el-GR.h b/sonoff/language/el-GR.h
index c5a3db324..79558615d 100644
--- a/sonoff/language/el-GR.h
+++ b/sonoff/language/el-GR.h
@@ -546,6 +546,7 @@
#define D_UNIT_MICROMETER "um"
#define D_UNIT_MICROSECOND "us"
#define D_UNIT_MILLIAMPERE "mA"
+#define D_UNIT_MILLIMETER_MERCURY "mmHg"
#define D_UNIT_MILLISECOND "ms"
#define D_UNIT_MINUTE "Min"
#define D_UNIT_PARTS_PER_BILLION "ppb"
diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h
index 48641d0ff..1a9304a7d 100644
--- a/sonoff/language/en-GB.h
+++ b/sonoff/language/en-GB.h
@@ -545,6 +545,7 @@
#define D_UNIT_MICROMETER "um"
#define D_UNIT_MICROSECOND "us"
#define D_UNIT_MILLIAMPERE "mA"
+#define D_UNIT_MILLIMETER_MERCURY "mmHg"
#define D_UNIT_MILLISECOND "ms"
#define D_UNIT_MINUTE "Min"
#define D_UNIT_PARTS_PER_BILLION "ppb"
diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h
index a5d044985..e5c3135fe 100644
--- a/sonoff/language/es-AR.h
+++ b/sonoff/language/es-AR.h
@@ -545,6 +545,7 @@
#define D_UNIT_MICROMETER "um"
#define D_UNIT_MICROSECOND "us"
#define D_UNIT_MILLIAMPERE "mA"
+#define D_UNIT_MILLIMETER_MERCURY "mmHg"
#define D_UNIT_MILLISECOND "ms"
#define D_UNIT_MINUTE "Min"
#define D_UNIT_PARTS_PER_BILLION "ppb"
diff --git a/sonoff/language/fr-FR.h b/sonoff/language/fr-FR.h
index 0e37d9990..0dfb2929c 100644
--- a/sonoff/language/fr-FR.h
+++ b/sonoff/language/fr-FR.h
@@ -545,6 +545,7 @@
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
#define D_UNIT_MILLIAMPERE "mA"
+#define D_UNIT_MILLIMETER_MERCURY "mmHg"
#define D_UNIT_MILLISECOND "ms"
#define D_UNIT_MINUTE "Min"
#define D_UNIT_PARTS_PER_BILLION "ppb"
diff --git a/sonoff/language/he-HE.h b/sonoff/language/he-HE.h
index 355fe8231..cb041ffba 100644
--- a/sonoff/language/he-HE.h
+++ b/sonoff/language/he-HE.h
@@ -545,6 +545,7 @@
#define D_UNIT_MICROMETER "um"
#define D_UNIT_MICROSECOND "us"
#define D_UNIT_MILLIAMPERE "mA"
+#define D_UNIT_MILLIMETER_MERCURY "mmHg"
#define D_UNIT_MILLISECOND "ms"
#define D_UNIT_MINUTE "Min"
#define D_UNIT_PARTS_PER_BILLION "ppb"
diff --git a/sonoff/language/hu-HU.h b/sonoff/language/hu-HU.h
index cbe52378d..5cee46a52 100644
--- a/sonoff/language/hu-HU.h
+++ b/sonoff/language/hu-HU.h
@@ -545,6 +545,7 @@
#define D_UNIT_MICROMETER "um"
#define D_UNIT_MICROSECOND "µs"
#define D_UNIT_MILLIAMPERE "mA"
+#define D_UNIT_MILLIMETER_MERCURY "mmHg"
#define D_UNIT_MILLISECOND "ms"
#define D_UNIT_MINUTE "p"
#define D_UNIT_PARTS_PER_BILLION "ppb"
diff --git a/sonoff/language/it-IT.h b/sonoff/language/it-IT.h
index 8449d250d..0eaca9337 100644
--- a/sonoff/language/it-IT.h
+++ b/sonoff/language/it-IT.h
@@ -545,6 +545,7 @@
#define D_UNIT_MICROMETER "um"
#define D_UNIT_MICROSECOND "us"
#define D_UNIT_MILLIAMPERE "mA"
+#define D_UNIT_MILLIMETER_MERCURY "mmHg"
#define D_UNIT_MILLISECOND "ms"
#define D_UNIT_MINUTE "Min"
#define D_UNIT_PARTS_PER_BILLION "ppb"
diff --git a/sonoff/language/nl-NL.h b/sonoff/language/nl-NL.h
index afaf9d08a..0567e0849 100644
--- a/sonoff/language/nl-NL.h
+++ b/sonoff/language/nl-NL.h
@@ -545,6 +545,7 @@
#define D_UNIT_MICROMETER "um"
#define D_UNIT_MICROSECOND "us"
#define D_UNIT_MILLIAMPERE "mA"
+#define D_UNIT_MILLIMETER_MERCURY "mmHg"
#define D_UNIT_MILLISECOND "ms"
#define D_UNIT_MINUTE "Min"
#define D_UNIT_PARTS_PER_BILLION "ppb"
diff --git a/sonoff/language/pl-PL.h b/sonoff/language/pl-PL.h
index 686f5cc76..678a7b770 100644
--- a/sonoff/language/pl-PL.h
+++ b/sonoff/language/pl-PL.h
@@ -545,6 +545,7 @@
#define D_UNIT_MICROMETER "um"
#define D_UNIT_MICROSECOND "us"
#define D_UNIT_MILLIAMPERE "mA"
+#define D_UNIT_MILLIMETER_MERCURY "mmHg"
#define D_UNIT_MILLISECOND "ms"
#define D_UNIT_MINUTE "Min"
#define D_UNIT_PARTS_PER_BILLION "ppb"
diff --git a/sonoff/language/pt-BR.h b/sonoff/language/pt-BR.h
index ef5104fdb..712ea6a74 100644
--- a/sonoff/language/pt-BR.h
+++ b/sonoff/language/pt-BR.h
@@ -545,6 +545,7 @@
#define D_UNIT_MICROMETER "um"
#define D_UNIT_MICROSECOND "us"
#define D_UNIT_MILLIAMPERE "mA"
+#define D_UNIT_MILLIMETER_MERCURY "mmHg"
#define D_UNIT_MILLISECOND "ms"
#define D_UNIT_MINUTE "M"
#define D_UNIT_PARTS_PER_BILLION "ppb"
diff --git a/sonoff/language/pt-PT.h b/sonoff/language/pt-PT.h
index 97750f38c..0bba501bd 100644
--- a/sonoff/language/pt-PT.h
+++ b/sonoff/language/pt-PT.h
@@ -545,6 +545,7 @@
#define D_UNIT_MICROMETER "um"
#define D_UNIT_MICROSECOND "us"
#define D_UNIT_MILLIAMPERE "mA"
+#define D_UNIT_MILLIMETER_MERCURY "mmHg"
#define D_UNIT_MILLISECOND "ms"
#define D_UNIT_MINUTE "Min"
#define D_UNIT_PARTS_PER_BILLION "ppb"
diff --git a/sonoff/language/ru-RU.h b/sonoff/language/ru-RU.h
index 28aa1d7f2..f9062a572 100644
--- a/sonoff/language/ru-RU.h
+++ b/sonoff/language/ru-RU.h
@@ -545,6 +545,7 @@
#define D_UNIT_MICROMETER "мкм"
#define D_UNIT_MICROSECOND "мкс"
#define D_UNIT_MILLIAMPERE "мА"
+#define D_UNIT_MILLIMETER_MERCURY "мм рт.ст."
#define D_UNIT_MILLISECOND "мс"
#define D_UNIT_MINUTE "мин"
#define D_UNIT_PARTS_PER_BILLION "ppb"
diff --git a/sonoff/language/tr-TR.h b/sonoff/language/tr-TR.h
index 0588b5175..f892fafbb 100755
--- a/sonoff/language/tr-TR.h
+++ b/sonoff/language/tr-TR.h
@@ -544,6 +544,7 @@
#define D_UNIT_MICROMETER "um"
#define D_UNIT_MICROSECOND "us"
#define D_UNIT_MILLIAMPERE "mA"
+#define D_UNIT_MILLIMETER_MERCURY "mmHg"
#define D_UNIT_MILLISECOND "ms"
#define D_UNIT_MINUTE "Min"
#define D_UNIT_PARTS_PER_BILLION "ppb"
diff --git a/sonoff/language/uk-UK.h b/sonoff/language/uk-UK.h
index fc32479fc..4c290613a 100644
--- a/sonoff/language/uk-UK.h
+++ b/sonoff/language/uk-UK.h
@@ -545,6 +545,7 @@
#define D_UNIT_MICROMETER "мкм"
#define D_UNIT_MICROSECOND "мкс"
#define D_UNIT_MILLIAMPERE "мА"
+#define D_UNIT_MILLIMETER_MERCURY "mmHg"
#define D_UNIT_MILLISECOND "мс"
#define D_UNIT_MINUTE "хв"
#define D_UNIT_PARTS_PER_BILLION "ppb"
diff --git a/sonoff/language/zh-CN.h b/sonoff/language/zh-CN.h
index f4a19e324..fe6dabe8d 100644
--- a/sonoff/language/zh-CN.h
+++ b/sonoff/language/zh-CN.h
@@ -544,6 +544,7 @@
#define D_UNIT_MICROMETER "微米"
#define D_UNIT_MICROSECOND "微秒"
#define D_UNIT_MILLIAMPERE "毫安"
+#define D_UNIT_MILLIMETER_MERCURY "mmHg"
#define D_UNIT_MILLISECOND "毫秒"
#define D_UNIT_MINUTE "分"
#define D_UNIT_PARTS_PER_BILLION "ppb"
diff --git a/sonoff/language/zh-TW.h b/sonoff/language/zh-TW.h
index 61fa90d4d..92a805587 100644
--- a/sonoff/language/zh-TW.h
+++ b/sonoff/language/zh-TW.h
@@ -545,6 +545,7 @@
#define D_UNIT_MICROMETER "微米"
#define D_UNIT_MICROSECOND "微秒"
#define D_UNIT_MILLIAMPERE "毫安"
+#define D_UNIT_MILLIMETER_MERCURY "mmHg"
#define D_UNIT_MILLISECOND "毫秒"
#define D_UNIT_MINUTE "分"
#define D_UNIT_PARTS_PER_BILLION "ppb"
diff --git a/sonoff/my_user_config.h b/sonoff/my_user_config.h
index 3c946f7ad..20d1e1eed 100644
--- a/sonoff/my_user_config.h
+++ b/sonoff/my_user_config.h
@@ -178,6 +178,7 @@
#define HUMIDITY_RESOLUTION 1 // [HumRes] Maximum number of decimals (0 - 3) showing sensor Humidity
#define PRESSURE_RESOLUTION 1 // [PressRes] Maximum number of decimals (0 - 3) showing sensor Pressure
#define ENERGY_RESOLUTION 3 // [EnergyRes] Maximum number of decimals (0 - 5) showing energy usage in kWh
+//#define USE_MMHG // Use mmHg instead of hPa
/*********************************************************************************************\
* END OF SECTION 1
diff --git a/sonoff/support.ino b/sonoff/support.ino
index bdce971bc..ef16b0bbc 100644
--- a/sonoff/support.ino
+++ b/sonoff/support.ino
@@ -475,6 +475,16 @@ char TempUnit()
return (Settings.flag.temperature_conversion) ? 'F' : 'C';
}
+float ConvertPress(float p)
+{
+ float result = p;
+
+ if (!isnan(p)) {
+ result = p * 0.75006375541921; // mmHg
+ }
+ return result;
+}
+
void SetGlobalValues(float temperature, float humidity)
{
global_update = uptime;
diff --git a/sonoff/xsns_09_bmp.ino b/sonoff/xsns_09_bmp.ino
index 23ddf7da9..6a77c2fd1 100755
--- a/sonoff/xsns_09_bmp.ino
+++ b/sonoff/xsns_09_bmp.ino
@@ -476,6 +476,11 @@ void BmpRead()
if (bmp_sensors[bmp_idx].bmp_temperature != 0.0) {
bmp_sensors[bmp_idx].bmp_temperature = ConvertTemp(bmp_sensors[bmp_idx].bmp_temperature);
}
+#ifdef USE_MMHG
+ if (bmp_sensors[bmp_idx].bmp_pressure != 0.0) {
+ bmp_sensors[bmp_idx].bmp_pressure = ConvertPress(bmp_sensors[bmp_idx].bmp_pressure);
+ }
+#endif // USE_MMHG
}
SetGlobalValues(bmp_sensors[0].bmp_temperature, bmp_sensors[0].bmp_humidity);