Files
esphome-lsm6ds/esphome/components/udp/packet_transport/__init__.py
T

30 lines
956 B
Python

import esphome.codegen as cg
from esphome.components.api import CONF_ENCRYPTION
from esphome.components.packet_transport import (
CONF_PING_PONG_ENABLE,
PacketTransport,
new_packet_transport,
transport_schema,
)
from esphome.const import CONF_BINARY_SENSORS, CONF_SENSORS
from esphome.cpp_types import PollingComponent
from .. import UDP_SCHEMA, register_udp_client, udp_ns
UDPTransport = udp_ns.class_("UDPTransport", PacketTransport, PollingComponent)
CONFIG_SCHEMA = transport_schema(UDPTransport).extend(UDP_SCHEMA)
async def to_code(config):
var, providers = await new_packet_transport(config)
udp_var = await register_udp_client(var, config)
if CONF_ENCRYPTION in config or providers:
cg.add(udp_var.set_should_listen())
if (
config[CONF_PING_PONG_ENABLE]
or config.get(CONF_SENSORS, ())
or config.get(CONF_BINARY_SENSORS, ())
):
cg.add(udp_var.set_should_broadcast())