mirror of
https://github.com/Threnklyn/esphome-dev.git
synced 2026-06-01 18:48:28 +02:00
Add Prometheus metrics relabeling (#3734)
Co-authored-by: Guillermo Ruffino <glm.net@gmail.com>
This commit is contained in:
@@ -2,16 +2,27 @@ import esphome.config_validation as cv
|
||||
import esphome.codegen as cg
|
||||
from esphome.const import (
|
||||
CONF_ID,
|
||||
CONF_NAME,
|
||||
CONF_INCLUDE_INTERNAL,
|
||||
CONF_RELABEL,
|
||||
)
|
||||
from esphome.components.web_server_base import CONF_WEB_SERVER_BASE_ID
|
||||
from esphome.components import web_server_base
|
||||
from esphome.cpp_types import EntityBase
|
||||
|
||||
AUTO_LOAD = ["web_server_base"]
|
||||
|
||||
prometheus_ns = cg.esphome_ns.namespace("prometheus")
|
||||
PrometheusHandler = prometheus_ns.class_("PrometheusHandler", cg.Component)
|
||||
|
||||
CUSTOMIZED_ENTITY = cv.Schema(
|
||||
{
|
||||
cv.Optional(CONF_ID): cv.string_strict,
|
||||
cv.Optional(CONF_NAME): cv.string_strict,
|
||||
},
|
||||
cv.has_at_least_one_key,
|
||||
)
|
||||
|
||||
CONFIG_SCHEMA = cv.Schema(
|
||||
{
|
||||
cv.GenerateID(): cv.declare_id(PrometheusHandler),
|
||||
@@ -19,6 +30,11 @@ CONFIG_SCHEMA = cv.Schema(
|
||||
web_server_base.WebServerBase
|
||||
),
|
||||
cv.Optional(CONF_INCLUDE_INTERNAL, default=False): cv.boolean,
|
||||
cv.Optional(CONF_RELABEL, default={}): cv.Schema(
|
||||
{
|
||||
cv.use_id(EntityBase): CUSTOMIZED_ENTITY,
|
||||
}
|
||||
),
|
||||
},
|
||||
cv.only_with_arduino,
|
||||
).extend(cv.COMPONENT_SCHEMA)
|
||||
@@ -33,3 +49,10 @@ async def to_code(config):
|
||||
await cg.register_component(var, config)
|
||||
|
||||
cg.add(var.set_include_internal(config[CONF_INCLUDE_INTERNAL]))
|
||||
|
||||
for key, value in config[CONF_RELABEL].items():
|
||||
entity = await cg.get_variable(key)
|
||||
if CONF_ID in value:
|
||||
cg.add(var.add_label_id(entity, value[CONF_ID]))
|
||||
if CONF_NAME in value:
|
||||
cg.add(var.add_label_name(entity, value[CONF_NAME]))
|
||||
|
||||
Reference in New Issue
Block a user