mirror of
https://github.com/esphome/esphome.git
synced 2025-03-15 15:18:16 +00:00
This is a little more complicated
This commit is contained in:
parent
ea4694cdd1
commit
77f3b5c372
@ -900,6 +900,7 @@ void PrometheusHandler::climate_row_(AsyncResponseStream *stream, climate::Clima
|
|||||||
if (obj->is_internal() && !this->include_internal_)
|
if (obj->is_internal() && !this->include_internal_)
|
||||||
return;
|
return;
|
||||||
// Data itself
|
// Data itself
|
||||||
|
bool any_failures = false;
|
||||||
std::string climate_mode_category = "mode";
|
std::string climate_mode_category = "mode";
|
||||||
const auto *climate_mode_value = climate::climate_mode_to_string(obj->mode);
|
const auto *climate_mode_value = climate::climate_mode_to_string(obj->mode);
|
||||||
climate_setting_row_(stream, obj, area, node, friendly_name, climate_mode_category, climate_mode_value);
|
climate_setting_row_(stream, obj, area, node, friendly_name, climate_mode_category, climate_mode_value);
|
||||||
@ -920,21 +921,34 @@ void PrometheusHandler::climate_row_(AsyncResponseStream *stream, climate::Clima
|
|||||||
std::string current_temp = "current_temperature";
|
std::string current_temp = "current_temperature";
|
||||||
if (std::isnan(obj->current_temperature)) {
|
if (std::isnan(obj->current_temperature)) {
|
||||||
climate_failed_row_(stream, obj, area, node, friendly_name, current_temp, true);
|
climate_failed_row_(stream, obj, area, node, friendly_name, current_temp, true);
|
||||||
|
any_failures = true;
|
||||||
} else {
|
} else {
|
||||||
auto current_temp_value = value_accuracy_to_string(obj->current_temperature, current_accuracy);
|
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);
|
climate_value_row_(stream, obj, area, node, friendly_name, current_temp, current_temp_value);
|
||||||
climate_failed_row_(stream, obj, area, node, friendly_name, current_temp, false);
|
climate_failed_row_(stream, obj, area, node, friendly_name, current_temp, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (traits.get_supports_current_humidity() && !std::isnan(obj->current_humidity)) {
|
if (traits.get_supports_current_humidity()) {
|
||||||
std::string current_humidity = "current_humidity";
|
std::string current_humidity = "current_humidity";
|
||||||
|
if (std::isnan(obj->current_humidity)) {
|
||||||
|
climate_failed_row_(stream, obj, area, node, friendly_name, current_temp, true);
|
||||||
|
any_failures = true;
|
||||||
|
} else {
|
||||||
auto current_humidity_value = value_accuracy_to_string(obj->current_humidity, 0);
|
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);
|
climate_value_row_(stream, obj, area, node, friendly_name, current_humidity, current_humidity_value);
|
||||||
|
climate_failed_row_(stream, obj, area, node, friendly_name, current_humidity, false);
|
||||||
}
|
}
|
||||||
if (traits.get_supports_target_humidity() && !std::isnan(obj->target_humidity)) {
|
}
|
||||||
|
if (traits.get_supports_target_humidity()) {
|
||||||
std::string target_humidity = "target_humidity";
|
std::string target_humidity = "target_humidity";
|
||||||
|
if (std::isnan(obj->target_humidity)) {
|
||||||
|
climate_failed_row_(stream, obj, area, node, friendly_name, current_temp, true);
|
||||||
|
any_failures = true;
|
||||||
|
} else {
|
||||||
auto target_humidity_value = value_accuracy_to_string(obj->target_humidity, 0);
|
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);
|
climate_value_row_(stream, obj, area, node, friendly_name, target_humidity, target_humidity_value);
|
||||||
|
climate_failed_row_(stream, obj, area, node, friendly_name, target_humidity, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (traits.get_supports_two_point_target_temperature()) {
|
if (traits.get_supports_two_point_target_temperature()) {
|
||||||
std::string target_temp_low = "target_temperature_low";
|
std::string target_temp_low = "target_temperature_low";
|
||||||
@ -953,21 +967,37 @@ void PrometheusHandler::climate_row_(AsyncResponseStream *stream, climate::Clima
|
|||||||
const auto *climate_trait_value = climate::climate_action_to_string(obj->action);
|
const 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);
|
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()) {
|
if (traits.get_supports_fan_modes()) {
|
||||||
std::string climate_trait_category = "fan_mode";
|
std::string climate_trait_category = "fan_mode";
|
||||||
|
if (obj->fan_mode.has_value()) {
|
||||||
const auto *climate_trait_value = climate::climate_fan_mode_to_string(obj->fan_mode.value());
|
const 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);
|
climate_setting_row_(stream, obj, area, node, friendly_name, climate_trait_category, climate_trait_value);
|
||||||
|
climate_failed_row_(stream, obj, area, node, friendly_name, climate_trait_category, false);
|
||||||
|
} else {
|
||||||
|
climate_failed_row_(stream, obj, area, node, friendly_name, climate_trait_category, true);
|
||||||
|
any_failures = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (traits.get_supports_presets() && obj->preset.has_value()) {
|
if (traits.get_supports_presets() && obj->preset.has_value()) {
|
||||||
std::string climate_trait_category = "preset";
|
std::string climate_trait_category = "preset";
|
||||||
|
if (obj->fan_mode.has_value()) {
|
||||||
const auto *climate_trait_value = climate::climate_preset_to_string(obj->preset.value());
|
const 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);
|
climate_setting_row_(stream, obj, area, node, friendly_name, climate_trait_category, climate_trait_value);
|
||||||
|
climate_failed_row_(stream, obj, area, node, friendly_name, climate_trait_category, false);
|
||||||
|
} else {
|
||||||
|
climate_failed_row_(stream, obj, area, node, friendly_name, climate_trait_category, true);
|
||||||
|
any_failures = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (traits.get_supports_swing_modes()) {
|
if (traits.get_supports_swing_modes()) {
|
||||||
std::string climate_trait_category = "swing_mode";
|
std::string climate_trait_category = "swing_mode";
|
||||||
const auto *climate_trait_value = climate::climate_swing_mode_to_string(obj->swing_mode);
|
const 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);
|
climate_setting_row_(stream, obj, area, node, friendly_name, climate_trait_category, climate_trait_value);
|
||||||
}
|
}
|
||||||
|
if (!any_failures) {
|
||||||
|
std::string climate_trait_category = "all";
|
||||||
|
climate_failed_row_(stream, obj, area, node, friendly_name, climate_trait_category, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user