diff --git a/tasmota/i18n.h b/tasmota/i18n.h index d1e85c1de..5de4b7a1d 100644 --- a/tasmota/i18n.h +++ b/tasmota/i18n.h @@ -290,6 +290,7 @@ #define D_JSON_GPIO "GPIO" #define D_JSON_FLAG "FLAG" #define D_JSON_BASE "BASE" +#define D_CMND_TEMPOFFSET "TempOffset" // Commands xdrv_01_mqtt.ino #define D_CMND_MQTTLOG "MqttLog" diff --git a/tasmota/settings.h b/tasmota/settings.h index f88f33c52..7e557e15e 100644 --- a/tasmota/settings.h +++ b/tasmota/settings.h @@ -434,8 +434,8 @@ struct SYSCFG { uint32_t deepsleep; // E94 uint16_t energy_power_delta; // E98 uint8_t shutter_motordelay[MAX_SHUTTERS]; // E9A - - uint8_t free_e9e[2]; // E9E + int8_t temp_comp; + uint8_t free_e9e[1]; // E9E uint8_t web_color2[2][3]; // EA0 - Needs to be on integer / 3 distance from web_color diff --git a/tasmota/support.ino b/tasmota/support.ino index 77103272a..a791563ee 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -540,6 +540,7 @@ float ConvertTemp(float c) if (!isnan(c) && Settings.flag.temperature_conversion) { // SetOption8 - Switch between Celsius or Fahrenheit result = c * 1.8 + 32; // Fahrenheit } + result = result + (0.1 * Settings.temp_comp); return result; } @@ -550,6 +551,7 @@ float ConvertTempToCelsius(float c) if (!isnan(c) && Settings.flag.temperature_conversion) { // SetOption8 - Switch between Celsius or Fahrenheit result = (c - 32) / 1.8; // Celsius } + result = result + (0.1 * Settings.temp_comp); return result; } diff --git a/tasmota/support_command.ino b/tasmota/support_command.ino index 939189938..11d51f610 100644 --- a/tasmota/support_command.ino +++ b/tasmota/support_command.ino @@ -26,7 +26,7 @@ const char kTasmotaCommands[] PROGMEM = "|" // No prefix D_CMND_BUTTONDEBOUNCE "|" D_CMND_SWITCHDEBOUNCE "|" D_CMND_SYSLOG "|" D_CMND_LOGHOST "|" D_CMND_LOGPORT "|" D_CMND_SERIALSEND "|" D_CMND_BAUDRATE "|" D_CMND_SERIALDELIMITER "|" D_CMND_IPADDRESS "|" D_CMND_NTPSERVER "|" D_CMND_AP "|" D_CMND_SSID "|" D_CMND_PASSWORD "|" D_CMND_HOSTNAME "|" D_CMND_WIFICONFIG "|" D_CMND_FRIENDLYNAME "|" D_CMND_SWITCHMODE "|" D_CMND_INTERLOCK "|" D_CMND_TELEPERIOD "|" D_CMND_RESET "|" D_CMND_TIME "|" D_CMND_TIMEZONE "|" D_CMND_TIMESTD "|" - D_CMND_TIMEDST "|" D_CMND_ALTITUDE "|" D_CMND_LEDPOWER "|" D_CMND_LEDSTATE "|" D_CMND_LEDMASK "|" D_CMND_WIFIPOWER "|" + D_CMND_TIMEDST "|" D_CMND_ALTITUDE "|" D_CMND_LEDPOWER "|" D_CMND_LEDSTATE "|" D_CMND_LEDMASK "|" D_CMND_WIFIPOWER "|" D_CMND_TEMPOFFSET "|" #ifdef USE_I2C D_CMND_I2CSCAN "|" D_CMND_I2CDRIVER "|" #endif @@ -41,7 +41,7 @@ void (* const TasmotaCommand[])(void) PROGMEM = { &CmndButtonDebounce, &CmndSwitchDebounce, &CmndSyslog, &CmndLoghost, &CmndLogport, &CmndSerialSend, &CmndBaudrate, &CmndSerialDelimiter, &CmndIpAddress, &CmndNtpServer, &CmndAp, &CmndSsid, &CmndPassword, &CmndHostname, &CmndWifiConfig, &CmndFriendlyname, &CmndSwitchMode, &CmndInterlock, &CmndTeleperiod, &CmndReset, &CmndTime, &CmndTimezone, &CmndTimeStd, - &CmndTimeDst, &CmndAltitude, &CmndLedPower, &CmndLedState, &CmndLedMask, &CmndWifiPower, + &CmndTimeDst, &CmndAltitude, &CmndLedPower, &CmndLedState, &CmndLedMask, &CmndWifiPower, &CmndTempOffset, #ifdef USE_I2C &CmndI2cScan, CmndI2cDriver, #endif @@ -496,6 +496,15 @@ void CmndState(void) #endif // USE_HOME_ASSISTANT } +void CmndTempOffset(void) +{ + if ((XdrvMailbox.payload > -127) && (XdrvMailbox.payload < 127) && (XdrvMailbox.data_len > 0)) { + Settings.temp_comp = XdrvMailbox.payload; + } + ResponseCmndNumber(Settings.temp_comp); +} + + void CmndSleep(void) { if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload < 251)) {