From 6fafba694c392aaa1255f2e650eb26f2736b70e0 Mon Sep 17 00:00:00 2001 From: Jordan Zucker Date: Thu, 13 Feb 2025 14:05:04 -0800 Subject: [PATCH] Trying again --- .../prometheus/prometheus_handler.cpp | 29 ++++++++++++------- .../prometheus/prometheus_handler.h | 2 ++ 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/esphome/components/prometheus/prometheus_handler.cpp b/esphome/components/prometheus/prometheus_handler.cpp index 4c77db2e88..1b4ae7e68e 100644 --- a/esphome/components/prometheus/prometheus_handler.cpp +++ b/esphome/components/prometheus/prometheus_handler.cpp @@ -840,6 +840,23 @@ void PrometheusHandler::climate_type_(AsyncResponseStream *stream) { stream->print(F("#TYPE esphome_climate_failed gauge\n")); } +void PrometheusHandler::climate_mode_row_(AsyncResponseStream *stream, std::string &category, + std::string &climate_value, std::string &area, std::string &node, + std::string &friendly_name) { + stream->print(F("esphome_climate_value{id=\"")); + stream->print(relabel_id_(obj).c_str()); + add_area_label_(stream, area); + add_node_label_(stream, node); + add_friendly_name_label_(stream, friendly_name); + stream->print(F("\",name=\"")); + stream->print(relabel_name_(obj).c_str()); + stream->print(F("\",category=\"")); + stream->print(category.c_str()); + stream->print(F("\"} ")); + stream->print(climate_value.c_str()); + stream->print(F("\n")); +} + void PrometheusHandler::climate_row_(AsyncResponseStream *stream, climate::Climate *obj, std::string &area, std::string &node, std::string &friendly_name) { if (obj->is_internal() && !this->include_internal_) @@ -867,17 +884,7 @@ void PrometheusHandler::climate_row_(AsyncResponseStream *stream, climate::Clima stream->print(F("\n")); // Now see if position is supported if (obj->get_traits().get_supports_current_temperature()) { - stream->print(F("esphome_climate_value{id=\"")); - stream->print(relabel_id_(obj).c_str()); - add_area_label_(stream, area); - add_node_label_(stream, node); - add_friendly_name_label_(stream, friendly_name); - stream->print(F("\",name=\"")); - stream->print(relabel_name_(obj).c_str()); - stream->print(F("\",category=current_temperature\"")); - stream->print(F("\"} ")); - stream->print(obj->current_temperature); - stream->print(F("\n")); + climate_mode_row_(stream, "current_temperature", obj->current_temperature, area, node, friendly_name) } } #endif diff --git a/esphome/components/prometheus/prometheus_handler.h b/esphome/components/prometheus/prometheus_handler.h index a27b1050be..e0d0dad6f6 100644 --- a/esphome/components/prometheus/prometheus_handler.h +++ b/esphome/components/prometheus/prometheus_handler.h @@ -175,6 +175,8 @@ class PrometheusHandler : public AsyncWebHandler, public Component { /// Return the climate state as prometheus data point void climate_row_(AsyncResponseStream *stream, climate::Climate *obj, std::string &area, std::string &node, std::string &friendly_name); + void climate_mode_row_(AsyncResponseStream *stream, std::string &category, std::string &climate_value, + std::string &area, std::string &node, std::string &friendly_name); #endif web_server_base::WebServerBase *base_;