1
0
mirror of https://github.com/esphome/esphome.git synced 2025-09-17 18:52:19 +01:00
Files
esphome/esphome/components/syslog/__init__.py
2025-05-05 16:48:13 +12:00

42 lines
1.5 KiB
Python

import esphome.codegen as cg
from esphome.components import udp
from esphome.components.logger import LOG_LEVELS, is_log_level
from esphome.components.time import RealTimeClock
from esphome.components.udp import CONF_UDP_ID
import esphome.config_validation as cv
from esphome.const import CONF_ID, CONF_LEVEL, CONF_PORT, CONF_TIME_ID
from esphome.cpp_types import Component, Parented
CODEOWNERS = ["@clydebarrow"]
DEPENDENCIES = ["udp", "logger", "time"]
syslog_ns = cg.esphome_ns.namespace("syslog")
Syslog = syslog_ns.class_("Syslog", Component, Parented.template(udp.UDPComponent))
CONF_STRIP = "strip"
CONF_FACILITY = "facility"
CONFIG_SCHEMA = udp.UDP_SCHEMA.extend(
{
cv.GenerateID(): cv.declare_id(Syslog),
cv.GenerateID(CONF_TIME_ID): cv.use_id(RealTimeClock),
cv.Optional(CONF_PORT, default=514): cv.port,
cv.Optional(CONF_LEVEL, default="DEBUG"): is_log_level,
cv.Optional(CONF_STRIP, default=True): cv.boolean,
cv.Optional(CONF_FACILITY, default=16): cv.int_range(0, 23),
}
)
async def to_code(config):
parent = await cg.get_variable(config[CONF_UDP_ID])
time = await cg.get_variable(config[CONF_TIME_ID])
cg.add(parent.set_broadcast_port(config[CONF_PORT]))
cg.add(parent.set_should_broadcast())
level = LOG_LEVELS[config[CONF_LEVEL]]
var = cg.new_Pvariable(config[CONF_ID], level, time)
await cg.register_component(var, config)
await cg.register_parented(var, parent)
cg.add(var.set_strip(config[CONF_STRIP]))
cg.add(var.set_facility(config[CONF_FACILITY]))