1
0
mirror of https://github.com/esphome/esphome.git synced 2025-03-15 15:18:16 +00:00

Adding way more climate metrics now

This commit is contained in:
Jordan Zucker 2025-02-13 15:26:43 -08:00
parent f488257413
commit 4b98d77b69

View File

@ -905,11 +905,21 @@ void PrometheusHandler::climate_row_(AsyncResponseStream *stream, climate::Clima
auto min_temp_value = value_accuracy_to_string(traits.get_visual_min_temperature(), target_accuracy);
climate_value_row_(stream, obj, area, node, friendly_name, min_temp, min_temp_value);
// now check optional things
if (traits.get_supports_current_temperature()) {
if (traits.get_supports_current_temperature() && !std::isnan(obj->current_temperature)) {
std::string current_temp = "current_temperature";
auto current_temp_value = value_accuracy_to_string(obj->current_temperature, current_accuracy);
climate_value_row_(stream, obj, area, node, friendly_name, current_temp, current_temp_value);
}
if (traits.get_supports_current_humidity() && !std::isnan(obj->current_humidity)) {
std::string current_humidity = "current_humidity";
auto current_humidity_value = value_accuracy_to_string(obj->current_humidity, 0);
climate_value_row_(stream, obj, area, node, friendly_name, current_humidity, current_humidity_value);
}
if (traits.get_supports_target_humidity() && !std::isnan(obj->target_humidity)) {
std::string target_humidity = "target_humidity";
auto target_humidity_value = value_accuracy_to_string(obj->target_humidity, 0);
climate_value_row_(stream, obj, area, node, friendly_name, target_humidity, target_humidity_value);
}
if (traits.get_supports_two_point_target_temperature()) {
std::string target_temp_low = "target_temperature_low";
auto target_temp_low_value = value_accuracy_to_string(obj->target_temperature_low, target_accuracy);
@ -923,9 +933,24 @@ void PrometheusHandler::climate_row_(AsyncResponseStream *stream, climate::Clima
climate_value_row_(stream, obj, area, node, friendly_name, target_temp, target_temp_value);
}
if (traits.get_supports_action()) {
std::string climate_action_category = "action";
auto climate_action_value = climate::climate_action_to_string(obj->action);
climate_setting_row_(stream, obj, area, node, friendly_name, climate_action_category, climate_action_value);
std::string climate_trait_category = "action";
auto climate_trait_value = climate::climate_action_to_string(obj->action);
climate_setting_row_(stream, obj, area, node, friendly_name, climate_trait_category, climate_trait_value);
}
if (traits.get_supports_fan_modes() && obj->fan_mode.has_value()) {
std::string climate_trait_category = "fan_mode";
auto climate_trait_value = climate::climate_fan_mode_to_string(obj->fan_mode.value());
climate_setting_row_(stream, obj, area, node, friendly_name, climate_trait_category, climate_trait_value);
}
if (traits.get_supports_presets() && obj->preset.has_value()) {
std::string climate_trait_category = "preset";
auto climate_trait_value = climate::climate_preset_to_string(obj->preset.value());
climate_setting_row_(stream, obj, area, node, friendly_name, climate_trait_category, climate_trait_value);
}
if (traits.get_supports_swing_modes()) {
std::string climate_trait_category = "swing_mode";
auto climate_trait_value = climate::climate_swing_mode_to_string(obj->swing_mode);
climate_setting_row_(stream, obj, area, node, friendly_name, climate_trait_category, climate_trait_value);
}
}
#endif