diff --git a/esphome/nspanel_esphome_addon_climate_base.yaml b/esphome/nspanel_esphome_addon_climate_base.yaml index ed11670..c1c6034 100644 --- a/esphome/nspanel_esphome_addon_climate_base.yaml +++ b/esphome/nspanel_esphome_addon_climate_base.yaml @@ -173,8 +173,8 @@ script: auto CelsiusToFahrenheit = [](float celsius) -> float { return (celsius * 9 / 5) + 32; }; - std::string temp_units = "${temp_units}"; - bool temp_unit_fahrenheit = (temp_units == "°F" || temp_units == "F" || temp_units == "°f" || temp_units == "f"); + const std::string temp_units = "${temp_units}"; + const bool temp_unit_fahrenheit = (temp_units == "°F" || temp_units == "F" || temp_units == "°f" || temp_units == "f"); ClimateTraits traits = thermostat_embedded->get_traits(); disp1->set_component_text("page_label", id(addon_climate_friendly_name).c_str()); @@ -187,7 +187,7 @@ script: float temp_current = thermostat_embedded->current_temperature; if (temp_unit_fahrenheit) { //temp_step = CelsiusToFahrenheit(temp_step); - temp_step = temp_step * 1.8; + temp_step = std::ceil(temp_step * 1.8); temp_offset = CelsiusToFahrenheit(temp_offset); temp_max = CelsiusToFahrenheit(temp_max); temp_target = CelsiusToFahrenheit(temp_target); diff --git a/esphome/nspanel_esphome_core.yaml b/esphome/nspanel_esphome_core.yaml index 6e75437..03b8182 100644 --- a/esphome/nspanel_esphome_core.yaml +++ b/esphome/nspanel_esphome_core.yaml @@ -2121,16 +2121,14 @@ script: - lambda: |- if (id(embedded_indoor_temp) or !wifi_component->is_connected() or !api_server->is_connected()) { const std::string temp_units = "${temp_units}"; - if (!temp_units.empty()) { - const char last_char = std::tolower(temp_units.back()); // Access the last character and convert to lowercase - char buffer[15]; // Buffer for formatted temperature string - if (last_char == 'f') { - snprintf(buffer, sizeof(buffer), "%.0f${temp_units}", (id(temp_nspanel).state * 9.0 / 5.0) + 32); // Fahrenheit with no decimal - } else { - snprintf(buffer, sizeof(buffer), "%.1f${temp_units}", id(temp_nspanel).state); // Celsius with one decimal - } - id(disp1)->set_component_text("home.indr_temp", adjustDecimalSeparator(buffer, id(mui_decimal_separator)).c_str()); + const bool temp_unit_fahrenheit = (temp_units == "°F" || temp_units == "F" || temp_units == "°f" || temp_units == "f"); + char buffer[15]; // Buffer for formatted temperature string + if (temp_unit_fahrenheit) { + snprintf(buffer, sizeof(buffer), "%.0f${temp_units}", (id(temp_nspanel).state * 9.0 / 5.0) + 32); // Fahrenheit with no decimal + } else { + snprintf(buffer, sizeof(buffer), "%.1f${temp_units}", id(temp_nspanel).state); // Celsius with one decimal } + id(disp1)->set_component_text("home.indr_temp", adjustDecimalSeparator(buffer, id(mui_decimal_separator)).c_str()); } - id: display_wrapped_text