|
|
|
@@ -110,21 +110,21 @@ std::string PrometheusHandler::relabel_name_(EntityBase *obj) {
|
|
|
|
|
|
|
|
|
|
void PrometheusHandler::add_area_label_(AsyncResponseStream *stream, std::string &area) {
|
|
|
|
|
if (!area.empty()) {
|
|
|
|
|
stream->print(F("\",area=\""));
|
|
|
|
|
stream->print(ESPHOME_F("\",area=\""));
|
|
|
|
|
stream->print(area.c_str());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PrometheusHandler::add_node_label_(AsyncResponseStream *stream, std::string &node) {
|
|
|
|
|
if (!node.empty()) {
|
|
|
|
|
stream->print(F("\",node=\""));
|
|
|
|
|
stream->print(ESPHOME_F("\",node=\""));
|
|
|
|
|
stream->print(node.c_str());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PrometheusHandler::add_friendly_name_label_(AsyncResponseStream *stream, std::string &friendly_name) {
|
|
|
|
|
if (!friendly_name.empty()) {
|
|
|
|
|
stream->print(F("\",friendly_name=\""));
|
|
|
|
|
stream->print(ESPHOME_F("\",friendly_name=\""));
|
|
|
|
|
stream->print(friendly_name.c_str());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@@ -132,8 +132,8 @@ void PrometheusHandler::add_friendly_name_label_(AsyncResponseStream *stream, st
|
|
|
|
|
// Type-specific implementation
|
|
|
|
|
#ifdef USE_SENSOR
|
|
|
|
|
void PrometheusHandler::sensor_type_(AsyncResponseStream *stream) {
|
|
|
|
|
stream->print(F("#TYPE esphome_sensor_value gauge\n"));
|
|
|
|
|
stream->print(F("#TYPE esphome_sensor_failed gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_sensor_value gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_sensor_failed gauge\n"));
|
|
|
|
|
}
|
|
|
|
|
void PrometheusHandler::sensor_row_(AsyncResponseStream *stream, sensor::Sensor *obj, std::string &area,
|
|
|
|
|
std::string &node, std::string &friendly_name) {
|
|
|
|
@@ -141,37 +141,37 @@ void PrometheusHandler::sensor_row_(AsyncResponseStream *stream, sensor::Sensor
|
|
|
|
|
return;
|
|
|
|
|
if (!std::isnan(obj->state)) {
|
|
|
|
|
// We have a valid value, output this value
|
|
|
|
|
stream->print(F("esphome_sensor_failed{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_sensor_failed{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} 0\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\"} 0\n"));
|
|
|
|
|
// Data itself
|
|
|
|
|
stream->print(F("esphome_sensor_value{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_sensor_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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\",unit=\""));
|
|
|
|
|
stream->print(ESPHOME_F("\",unit=\""));
|
|
|
|
|
stream->print(obj->get_unit_of_measurement().c_str());
|
|
|
|
|
stream->print(F("\"} "));
|
|
|
|
|
stream->print(ESPHOME_F("\"} "));
|
|
|
|
|
stream->print(value_accuracy_to_string(obj->state, obj->get_accuracy_decimals()).c_str());
|
|
|
|
|
stream->print(F("\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\n"));
|
|
|
|
|
} else {
|
|
|
|
|
// Invalid state
|
|
|
|
|
stream->print(F("esphome_sensor_failed{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_sensor_failed{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} 1\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\"} 1\n"));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
@@ -179,8 +179,8 @@ void PrometheusHandler::sensor_row_(AsyncResponseStream *stream, sensor::Sensor
|
|
|
|
|
// Type-specific implementation
|
|
|
|
|
#ifdef USE_BINARY_SENSOR
|
|
|
|
|
void PrometheusHandler::binary_sensor_type_(AsyncResponseStream *stream) {
|
|
|
|
|
stream->print(F("#TYPE esphome_binary_sensor_value gauge\n"));
|
|
|
|
|
stream->print(F("#TYPE esphome_binary_sensor_failed gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_binary_sensor_value gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_binary_sensor_failed gauge\n"));
|
|
|
|
|
}
|
|
|
|
|
void PrometheusHandler::binary_sensor_row_(AsyncResponseStream *stream, binary_sensor::BinarySensor *obj,
|
|
|
|
|
std::string &area, std::string &node, std::string &friendly_name) {
|
|
|
|
@@ -188,204 +188,204 @@ void PrometheusHandler::binary_sensor_row_(AsyncResponseStream *stream, binary_s
|
|
|
|
|
return;
|
|
|
|
|
if (obj->has_state()) {
|
|
|
|
|
// We have a valid value, output this value
|
|
|
|
|
stream->print(F("esphome_binary_sensor_failed{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_binary_sensor_failed{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} 0\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\"} 0\n"));
|
|
|
|
|
// Data itself
|
|
|
|
|
stream->print(F("esphome_binary_sensor_value{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_binary_sensor_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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} "));
|
|
|
|
|
stream->print(ESPHOME_F("\"} "));
|
|
|
|
|
stream->print(obj->state);
|
|
|
|
|
stream->print(F("\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\n"));
|
|
|
|
|
} else {
|
|
|
|
|
// Invalid state
|
|
|
|
|
stream->print(F("esphome_binary_sensor_failed{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_binary_sensor_failed{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} 1\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\"} 1\n"));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef USE_FAN
|
|
|
|
|
void PrometheusHandler::fan_type_(AsyncResponseStream *stream) {
|
|
|
|
|
stream->print(F("#TYPE esphome_fan_value gauge\n"));
|
|
|
|
|
stream->print(F("#TYPE esphome_fan_failed gauge\n"));
|
|
|
|
|
stream->print(F("#TYPE esphome_fan_speed gauge\n"));
|
|
|
|
|
stream->print(F("#TYPE esphome_fan_oscillation gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_fan_value gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_fan_failed gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_fan_speed gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_fan_oscillation gauge\n"));
|
|
|
|
|
}
|
|
|
|
|
void PrometheusHandler::fan_row_(AsyncResponseStream *stream, fan::Fan *obj, std::string &area, std::string &node,
|
|
|
|
|
std::string &friendly_name) {
|
|
|
|
|
if (obj->is_internal() && !this->include_internal_)
|
|
|
|
|
return;
|
|
|
|
|
stream->print(F("esphome_fan_failed{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_fan_failed{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} 0\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\"} 0\n"));
|
|
|
|
|
// Data itself
|
|
|
|
|
stream->print(F("esphome_fan_value{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_fan_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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} "));
|
|
|
|
|
stream->print(ESPHOME_F("\"} "));
|
|
|
|
|
stream->print(obj->state);
|
|
|
|
|
stream->print(F("\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\n"));
|
|
|
|
|
// Speed if available
|
|
|
|
|
if (obj->get_traits().supports_speed()) {
|
|
|
|
|
stream->print(F("esphome_fan_speed{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_fan_speed{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} "));
|
|
|
|
|
stream->print(ESPHOME_F("\"} "));
|
|
|
|
|
stream->print(obj->speed);
|
|
|
|
|
stream->print(F("\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\n"));
|
|
|
|
|
}
|
|
|
|
|
// Oscillation if available
|
|
|
|
|
if (obj->get_traits().supports_oscillation()) {
|
|
|
|
|
stream->print(F("esphome_fan_oscillation{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_fan_oscillation{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} "));
|
|
|
|
|
stream->print(ESPHOME_F("\"} "));
|
|
|
|
|
stream->print(obj->oscillating);
|
|
|
|
|
stream->print(F("\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\n"));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef USE_LIGHT
|
|
|
|
|
void PrometheusHandler::light_type_(AsyncResponseStream *stream) {
|
|
|
|
|
stream->print(F("#TYPE esphome_light_state gauge\n"));
|
|
|
|
|
stream->print(F("#TYPE esphome_light_color gauge\n"));
|
|
|
|
|
stream->print(F("#TYPE esphome_light_effect_active gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_light_state gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_light_color gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_light_effect_active gauge\n"));
|
|
|
|
|
}
|
|
|
|
|
void PrometheusHandler::light_row_(AsyncResponseStream *stream, light::LightState *obj, std::string &area,
|
|
|
|
|
std::string &node, std::string &friendly_name) {
|
|
|
|
|
if (obj->is_internal() && !this->include_internal_)
|
|
|
|
|
return;
|
|
|
|
|
// State
|
|
|
|
|
stream->print(F("esphome_light_state{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_light_state{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} "));
|
|
|
|
|
stream->print(ESPHOME_F("\"} "));
|
|
|
|
|
stream->print(obj->remote_values.is_on());
|
|
|
|
|
stream->print(F("\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\n"));
|
|
|
|
|
// Brightness and RGBW
|
|
|
|
|
light::LightColorValues color = obj->current_values;
|
|
|
|
|
float brightness, r, g, b, w;
|
|
|
|
|
color.as_brightness(&brightness);
|
|
|
|
|
color.as_rgbw(&r, &g, &b, &w);
|
|
|
|
|
stream->print(F("esphome_light_color{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_light_color{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\",channel=\"brightness\"} "));
|
|
|
|
|
stream->print(ESPHOME_F("\",channel=\"brightness\"} "));
|
|
|
|
|
stream->print(brightness);
|
|
|
|
|
stream->print(F("\n"));
|
|
|
|
|
stream->print(F("esphome_light_color{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("\n"));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_light_color{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\",channel=\"r\"} "));
|
|
|
|
|
stream->print(ESPHOME_F("\",channel=\"r\"} "));
|
|
|
|
|
stream->print(r);
|
|
|
|
|
stream->print(F("\n"));
|
|
|
|
|
stream->print(F("esphome_light_color{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("\n"));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_light_color{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\",channel=\"g\"} "));
|
|
|
|
|
stream->print(ESPHOME_F("\",channel=\"g\"} "));
|
|
|
|
|
stream->print(g);
|
|
|
|
|
stream->print(F("\n"));
|
|
|
|
|
stream->print(F("esphome_light_color{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("\n"));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_light_color{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\",channel=\"b\"} "));
|
|
|
|
|
stream->print(ESPHOME_F("\",channel=\"b\"} "));
|
|
|
|
|
stream->print(b);
|
|
|
|
|
stream->print(F("\n"));
|
|
|
|
|
stream->print(F("esphome_light_color{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("\n"));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_light_color{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\",channel=\"w\"} "));
|
|
|
|
|
stream->print(ESPHOME_F("\",channel=\"w\"} "));
|
|
|
|
|
stream->print(w);
|
|
|
|
|
stream->print(F("\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\n"));
|
|
|
|
|
// Effect
|
|
|
|
|
std::string effect = obj->get_effect_name();
|
|
|
|
|
if (effect == "None") {
|
|
|
|
|
stream->print(F("esphome_light_effect_active{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_light_effect_active{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\",effect=\"None\"} 0\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\",effect=\"None\"} 0\n"));
|
|
|
|
|
} else {
|
|
|
|
|
stream->print(F("esphome_light_effect_active{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_light_effect_active{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\",effect=\""));
|
|
|
|
|
stream->print(ESPHOME_F("\",effect=\""));
|
|
|
|
|
stream->print(effect.c_str());
|
|
|
|
|
stream->print(F("\"} 1\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\"} 1\n"));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef USE_COVER
|
|
|
|
|
void PrometheusHandler::cover_type_(AsyncResponseStream *stream) {
|
|
|
|
|
stream->print(F("#TYPE esphome_cover_value gauge\n"));
|
|
|
|
|
stream->print(F("#TYPE esphome_cover_failed gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_cover_value gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_cover_failed gauge\n"));
|
|
|
|
|
}
|
|
|
|
|
void PrometheusHandler::cover_row_(AsyncResponseStream *stream, cover::Cover *obj, std::string &area, std::string &node,
|
|
|
|
|
std::string &friendly_name) {
|
|
|
|
@@ -393,118 +393,118 @@ void PrometheusHandler::cover_row_(AsyncResponseStream *stream, cover::Cover *ob
|
|
|
|
|
return;
|
|
|
|
|
if (!std::isnan(obj->position)) {
|
|
|
|
|
// We have a valid value, output this value
|
|
|
|
|
stream->print(F("esphome_cover_failed{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_cover_failed{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} 0\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\"} 0\n"));
|
|
|
|
|
// Data itself
|
|
|
|
|
stream->print(F("esphome_cover_value{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_cover_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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} "));
|
|
|
|
|
stream->print(ESPHOME_F("\"} "));
|
|
|
|
|
stream->print(obj->position);
|
|
|
|
|
stream->print(F("\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\n"));
|
|
|
|
|
if (obj->get_traits().get_supports_tilt()) {
|
|
|
|
|
stream->print(F("esphome_cover_tilt{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_cover_tilt{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} "));
|
|
|
|
|
stream->print(ESPHOME_F("\"} "));
|
|
|
|
|
stream->print(obj->tilt);
|
|
|
|
|
stream->print(F("\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\n"));
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// Invalid state
|
|
|
|
|
stream->print(F("esphome_cover_failed{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_cover_failed{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} 1\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\"} 1\n"));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef USE_SWITCH
|
|
|
|
|
void PrometheusHandler::switch_type_(AsyncResponseStream *stream) {
|
|
|
|
|
stream->print(F("#TYPE esphome_switch_value gauge\n"));
|
|
|
|
|
stream->print(F("#TYPE esphome_switch_failed gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_switch_value gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_switch_failed gauge\n"));
|
|
|
|
|
}
|
|
|
|
|
void PrometheusHandler::switch_row_(AsyncResponseStream *stream, switch_::Switch *obj, std::string &area,
|
|
|
|
|
std::string &node, std::string &friendly_name) {
|
|
|
|
|
if (obj->is_internal() && !this->include_internal_)
|
|
|
|
|
return;
|
|
|
|
|
stream->print(F("esphome_switch_failed{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_switch_failed{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} 0\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\"} 0\n"));
|
|
|
|
|
// Data itself
|
|
|
|
|
stream->print(F("esphome_switch_value{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_switch_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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} "));
|
|
|
|
|
stream->print(ESPHOME_F("\"} "));
|
|
|
|
|
stream->print(obj->state);
|
|
|
|
|
stream->print(F("\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\n"));
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef USE_LOCK
|
|
|
|
|
void PrometheusHandler::lock_type_(AsyncResponseStream *stream) {
|
|
|
|
|
stream->print(F("#TYPE esphome_lock_value gauge\n"));
|
|
|
|
|
stream->print(F("#TYPE esphome_lock_failed gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_lock_value gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_lock_failed gauge\n"));
|
|
|
|
|
}
|
|
|
|
|
void PrometheusHandler::lock_row_(AsyncResponseStream *stream, lock::Lock *obj, std::string &area, std::string &node,
|
|
|
|
|
std::string &friendly_name) {
|
|
|
|
|
if (obj->is_internal() && !this->include_internal_)
|
|
|
|
|
return;
|
|
|
|
|
stream->print(F("esphome_lock_failed{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_lock_failed{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} 0\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\"} 0\n"));
|
|
|
|
|
// Data itself
|
|
|
|
|
stream->print(F("esphome_lock_value{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_lock_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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} "));
|
|
|
|
|
stream->print(ESPHOME_F("\"} "));
|
|
|
|
|
stream->print(obj->state);
|
|
|
|
|
stream->print(F("\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\n"));
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// Type-specific implementation
|
|
|
|
|
#ifdef USE_TEXT_SENSOR
|
|
|
|
|
void PrometheusHandler::text_sensor_type_(AsyncResponseStream *stream) {
|
|
|
|
|
stream->print(F("#TYPE esphome_text_sensor_value gauge\n"));
|
|
|
|
|
stream->print(F("#TYPE esphome_text_sensor_failed gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_text_sensor_value gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_text_sensor_failed gauge\n"));
|
|
|
|
|
}
|
|
|
|
|
void PrometheusHandler::text_sensor_row_(AsyncResponseStream *stream, text_sensor::TextSensor *obj, std::string &area,
|
|
|
|
|
std::string &node, std::string &friendly_name) {
|
|
|
|
@@ -512,37 +512,37 @@ void PrometheusHandler::text_sensor_row_(AsyncResponseStream *stream, text_senso
|
|
|
|
|
return;
|
|
|
|
|
if (obj->has_state()) {
|
|
|
|
|
// We have a valid value, output this value
|
|
|
|
|
stream->print(F("esphome_text_sensor_failed{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_text_sensor_failed{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} 0\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\"} 0\n"));
|
|
|
|
|
// Data itself
|
|
|
|
|
stream->print(F("esphome_text_sensor_value{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_text_sensor_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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\",value=\""));
|
|
|
|
|
stream->print(ESPHOME_F("\",value=\""));
|
|
|
|
|
stream->print(obj->state.c_str());
|
|
|
|
|
stream->print(F("\"} "));
|
|
|
|
|
stream->print(F("1.0"));
|
|
|
|
|
stream->print(F("\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\"} "));
|
|
|
|
|
stream->print(ESPHOME_F("1.0"));
|
|
|
|
|
stream->print(ESPHOME_F("\n"));
|
|
|
|
|
} else {
|
|
|
|
|
// Invalid state
|
|
|
|
|
stream->print(F("esphome_text_sensor_failed{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_text_sensor_failed{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} 1\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\"} 1\n"));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
@@ -550,8 +550,8 @@ void PrometheusHandler::text_sensor_row_(AsyncResponseStream *stream, text_senso
|
|
|
|
|
// Type-specific implementation
|
|
|
|
|
#ifdef USE_NUMBER
|
|
|
|
|
void PrometheusHandler::number_type_(AsyncResponseStream *stream) {
|
|
|
|
|
stream->print(F("#TYPE esphome_number_value gauge\n"));
|
|
|
|
|
stream->print(F("#TYPE esphome_number_failed gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_number_value gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_number_failed gauge\n"));
|
|
|
|
|
}
|
|
|
|
|
void PrometheusHandler::number_row_(AsyncResponseStream *stream, number::Number *obj, std::string &area,
|
|
|
|
|
std::string &node, std::string &friendly_name) {
|
|
|
|
@@ -559,43 +559,43 @@ void PrometheusHandler::number_row_(AsyncResponseStream *stream, number::Number
|
|
|
|
|
return;
|
|
|
|
|
if (!std::isnan(obj->state)) {
|
|
|
|
|
// We have a valid value, output this value
|
|
|
|
|
stream->print(F("esphome_number_failed{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_number_failed{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} 0\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\"} 0\n"));
|
|
|
|
|
// Data itself
|
|
|
|
|
stream->print(F("esphome_number_value{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_number_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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} "));
|
|
|
|
|
stream->print(ESPHOME_F("\"} "));
|
|
|
|
|
stream->print(obj->state);
|
|
|
|
|
stream->print(F("\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\n"));
|
|
|
|
|
} else {
|
|
|
|
|
// Invalid state
|
|
|
|
|
stream->print(F("esphome_number_failed{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_number_failed{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} 1\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\"} 1\n"));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef USE_SELECT
|
|
|
|
|
void PrometheusHandler::select_type_(AsyncResponseStream *stream) {
|
|
|
|
|
stream->print(F("#TYPE esphome_select_value gauge\n"));
|
|
|
|
|
stream->print(F("#TYPE esphome_select_failed gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_select_value gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_select_failed gauge\n"));
|
|
|
|
|
}
|
|
|
|
|
void PrometheusHandler::select_row_(AsyncResponseStream *stream, select::Select *obj, std::string &area,
|
|
|
|
|
std::string &node, std::string &friendly_name) {
|
|
|
|
@@ -603,105 +603,105 @@ void PrometheusHandler::select_row_(AsyncResponseStream *stream, select::Select
|
|
|
|
|
return;
|
|
|
|
|
if (obj->has_state()) {
|
|
|
|
|
// We have a valid value, output this value
|
|
|
|
|
stream->print(F("esphome_select_failed{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_select_failed{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} 0\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\"} 0\n"));
|
|
|
|
|
// Data itself
|
|
|
|
|
stream->print(F("esphome_select_value{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_select_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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\",value=\""));
|
|
|
|
|
stream->print(ESPHOME_F("\",value=\""));
|
|
|
|
|
stream->print(obj->state.c_str());
|
|
|
|
|
stream->print(F("\"} "));
|
|
|
|
|
stream->print(F("1.0"));
|
|
|
|
|
stream->print(F("\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\"} "));
|
|
|
|
|
stream->print(ESPHOME_F("1.0"));
|
|
|
|
|
stream->print(ESPHOME_F("\n"));
|
|
|
|
|
} else {
|
|
|
|
|
// Invalid state
|
|
|
|
|
stream->print(F("esphome_select_failed{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_select_failed{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} 1\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\"} 1\n"));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef USE_MEDIA_PLAYER
|
|
|
|
|
void PrometheusHandler::media_player_type_(AsyncResponseStream *stream) {
|
|
|
|
|
stream->print(F("#TYPE esphome_media_player_state_value gauge\n"));
|
|
|
|
|
stream->print(F("#TYPE esphome_media_player_volume gauge\n"));
|
|
|
|
|
stream->print(F("#TYPE esphome_media_player_is_muted gauge\n"));
|
|
|
|
|
stream->print(F("#TYPE esphome_media_player_failed gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_media_player_state_value gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_media_player_volume gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_media_player_is_muted gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_media_player_failed gauge\n"));
|
|
|
|
|
}
|
|
|
|
|
void PrometheusHandler::media_player_row_(AsyncResponseStream *stream, media_player::MediaPlayer *obj,
|
|
|
|
|
std::string &area, std::string &node, std::string &friendly_name) {
|
|
|
|
|
if (obj->is_internal() && !this->include_internal_)
|
|
|
|
|
return;
|
|
|
|
|
stream->print(F("esphome_media_player_failed{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_media_player_failed{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} 0\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\"} 0\n"));
|
|
|
|
|
// Data itself
|
|
|
|
|
stream->print(F("esphome_media_player_state_value{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_media_player_state_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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\",value=\""));
|
|
|
|
|
stream->print(ESPHOME_F("\",value=\""));
|
|
|
|
|
stream->print(media_player::media_player_state_to_string(obj->state));
|
|
|
|
|
stream->print(F("\"} "));
|
|
|
|
|
stream->print(F("1.0"));
|
|
|
|
|
stream->print(F("\n"));
|
|
|
|
|
stream->print(F("esphome_media_player_volume{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("\"} "));
|
|
|
|
|
stream->print(ESPHOME_F("1.0"));
|
|
|
|
|
stream->print(ESPHOME_F("\n"));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_media_player_volume{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} "));
|
|
|
|
|
stream->print(ESPHOME_F("\"} "));
|
|
|
|
|
stream->print(obj->volume);
|
|
|
|
|
stream->print(F("\n"));
|
|
|
|
|
stream->print(F("esphome_media_player_is_muted{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("\n"));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_media_player_is_muted{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} "));
|
|
|
|
|
stream->print(ESPHOME_F("\"} "));
|
|
|
|
|
if (obj->is_muted()) {
|
|
|
|
|
stream->print(F("1.0"));
|
|
|
|
|
stream->print(ESPHOME_F("1.0"));
|
|
|
|
|
} else {
|
|
|
|
|
stream->print(F("0.0"));
|
|
|
|
|
stream->print(ESPHOME_F("0.0"));
|
|
|
|
|
}
|
|
|
|
|
stream->print(F("\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\n"));
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef USE_UPDATE
|
|
|
|
|
void PrometheusHandler::update_entity_type_(AsyncResponseStream *stream) {
|
|
|
|
|
stream->print(F("#TYPE esphome_update_entity_state gauge\n"));
|
|
|
|
|
stream->print(F("#TYPE esphome_update_entity_info gauge\n"));
|
|
|
|
|
stream->print(F("#TYPE esphome_update_entity_failed gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_update_entity_state gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_update_entity_info gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_update_entity_failed gauge\n"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PrometheusHandler::handle_update_state_(AsyncResponseStream *stream, update::UpdateState state) {
|
|
|
|
@@ -730,168 +730,168 @@ void PrometheusHandler::update_entity_row_(AsyncResponseStream *stream, update::
|
|
|
|
|
return;
|
|
|
|
|
if (obj->has_state()) {
|
|
|
|
|
// We have a valid value, output this value
|
|
|
|
|
stream->print(F("esphome_update_entity_failed{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_update_entity_failed{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} 0\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\"} 0\n"));
|
|
|
|
|
// First update state
|
|
|
|
|
stream->print(F("esphome_update_entity_state{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_update_entity_state{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\",value=\""));
|
|
|
|
|
stream->print(ESPHOME_F("\",value=\""));
|
|
|
|
|
handle_update_state_(stream, obj->state);
|
|
|
|
|
stream->print(F("\"} "));
|
|
|
|
|
stream->print(F("1.0"));
|
|
|
|
|
stream->print(F("\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\"} "));
|
|
|
|
|
stream->print(ESPHOME_F("1.0"));
|
|
|
|
|
stream->print(ESPHOME_F("\n"));
|
|
|
|
|
// Next update info
|
|
|
|
|
stream->print(F("esphome_update_entity_info{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_update_entity_info{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\",current_version=\""));
|
|
|
|
|
stream->print(ESPHOME_F("\",current_version=\""));
|
|
|
|
|
stream->print(obj->update_info.current_version.c_str());
|
|
|
|
|
stream->print(F("\",latest_version=\""));
|
|
|
|
|
stream->print(ESPHOME_F("\",latest_version=\""));
|
|
|
|
|
stream->print(obj->update_info.latest_version.c_str());
|
|
|
|
|
stream->print(F("\",title=\""));
|
|
|
|
|
stream->print(ESPHOME_F("\",title=\""));
|
|
|
|
|
stream->print(obj->update_info.title.c_str());
|
|
|
|
|
stream->print(F("\"} "));
|
|
|
|
|
stream->print(F("1.0"));
|
|
|
|
|
stream->print(F("\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\"} "));
|
|
|
|
|
stream->print(ESPHOME_F("1.0"));
|
|
|
|
|
stream->print(ESPHOME_F("\n"));
|
|
|
|
|
} else {
|
|
|
|
|
// Invalid state
|
|
|
|
|
stream->print(F("esphome_update_entity_failed{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_update_entity_failed{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} 1\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\"} 1\n"));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef USE_VALVE
|
|
|
|
|
void PrometheusHandler::valve_type_(AsyncResponseStream *stream) {
|
|
|
|
|
stream->print(F("#TYPE esphome_valve_operation gauge\n"));
|
|
|
|
|
stream->print(F("#TYPE esphome_valve_failed gauge\n"));
|
|
|
|
|
stream->print(F("#TYPE esphome_valve_position gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_valve_operation gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_valve_failed gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_valve_position gauge\n"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PrometheusHandler::valve_row_(AsyncResponseStream *stream, valve::Valve *obj, std::string &area, std::string &node,
|
|
|
|
|
std::string &friendly_name) {
|
|
|
|
|
if (obj->is_internal() && !this->include_internal_)
|
|
|
|
|
return;
|
|
|
|
|
stream->print(F("esphome_valve_failed{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_valve_failed{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} 0\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\"} 0\n"));
|
|
|
|
|
// Data itself
|
|
|
|
|
stream->print(F("esphome_valve_operation{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_valve_operation{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\",operation=\""));
|
|
|
|
|
stream->print(ESPHOME_F("\",operation=\""));
|
|
|
|
|
stream->print(valve::valve_operation_to_str(obj->current_operation));
|
|
|
|
|
stream->print(F("\"} "));
|
|
|
|
|
stream->print(F("1.0"));
|
|
|
|
|
stream->print(F("\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\"} "));
|
|
|
|
|
stream->print(ESPHOME_F("1.0"));
|
|
|
|
|
stream->print(ESPHOME_F("\n"));
|
|
|
|
|
// Now see if position is supported
|
|
|
|
|
if (obj->get_traits().get_supports_position()) {
|
|
|
|
|
stream->print(F("esphome_valve_position{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_valve_position{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\"} "));
|
|
|
|
|
stream->print(ESPHOME_F("\"} "));
|
|
|
|
|
stream->print(obj->position);
|
|
|
|
|
stream->print(F("\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\n"));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef USE_CLIMATE
|
|
|
|
|
void PrometheusHandler::climate_type_(AsyncResponseStream *stream) {
|
|
|
|
|
stream->print(F("#TYPE esphome_climate_setting gauge\n"));
|
|
|
|
|
stream->print(F("#TYPE esphome_climate_value gauge\n"));
|
|
|
|
|
stream->print(F("#TYPE esphome_climate_failed gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_climate_setting gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_climate_value gauge\n"));
|
|
|
|
|
stream->print(ESPHOME_F("#TYPE esphome_climate_failed gauge\n"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PrometheusHandler::climate_setting_row_(AsyncResponseStream *stream, climate::Climate *obj, std::string &area,
|
|
|
|
|
std::string &node, std::string &friendly_name, std::string &setting,
|
|
|
|
|
const LogString *setting_value) {
|
|
|
|
|
stream->print(F("esphome_climate_setting{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_climate_setting{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\",category=\""));
|
|
|
|
|
stream->print(ESPHOME_F("\",category=\""));
|
|
|
|
|
stream->print(setting.c_str());
|
|
|
|
|
stream->print(F("\",setting_value=\""));
|
|
|
|
|
stream->print(ESPHOME_F("\",setting_value=\""));
|
|
|
|
|
stream->print(LOG_STR_ARG(setting_value));
|
|
|
|
|
stream->print(F("\"} "));
|
|
|
|
|
stream->print(F("1.0"));
|
|
|
|
|
stream->print(F("\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\"} "));
|
|
|
|
|
stream->print(ESPHOME_F("1.0"));
|
|
|
|
|
stream->print(ESPHOME_F("\n"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PrometheusHandler::climate_value_row_(AsyncResponseStream *stream, climate::Climate *obj, std::string &area,
|
|
|
|
|
std::string &node, std::string &friendly_name, std::string &category,
|
|
|
|
|
std::string &climate_value) {
|
|
|
|
|
stream->print(F("esphome_climate_value{id=\""));
|
|
|
|
|
stream->print(ESPHOME_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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\",category=\""));
|
|
|
|
|
stream->print(ESPHOME_F("\",category=\""));
|
|
|
|
|
stream->print(category.c_str());
|
|
|
|
|
stream->print(F("\"} "));
|
|
|
|
|
stream->print(ESPHOME_F("\"} "));
|
|
|
|
|
stream->print(climate_value.c_str());
|
|
|
|
|
stream->print(F("\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\n"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PrometheusHandler::climate_failed_row_(AsyncResponseStream *stream, climate::Climate *obj, std::string &area,
|
|
|
|
|
std::string &node, std::string &friendly_name, std::string &category,
|
|
|
|
|
bool is_failed_value) {
|
|
|
|
|
stream->print(F("esphome_climate_failed{id=\""));
|
|
|
|
|
stream->print(ESPHOME_F("esphome_climate_failed{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(ESPHOME_F("\",name=\""));
|
|
|
|
|
stream->print(relabel_name_(obj).c_str());
|
|
|
|
|
stream->print(F("\",category=\""));
|
|
|
|
|
stream->print(ESPHOME_F("\",category=\""));
|
|
|
|
|
stream->print(category.c_str());
|
|
|
|
|
stream->print(F("\"} "));
|
|
|
|
|
stream->print(ESPHOME_F("\"} "));
|
|
|
|
|
if (is_failed_value) {
|
|
|
|
|
stream->print(F("1.0"));
|
|
|
|
|
stream->print(ESPHOME_F("1.0"));
|
|
|
|
|
} else {
|
|
|
|
|
stream->print(F("0.0"));
|
|
|
|
|
stream->print(ESPHOME_F("0.0"));
|
|
|
|
|
}
|
|
|
|
|
stream->print(F("\n"));
|
|
|
|
|
stream->print(ESPHOME_F("\n"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PrometheusHandler::climate_row_(AsyncResponseStream *stream, climate::Climate *obj, std::string &area,
|
|
|
|
|