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);