mirror of
https://github.com/esphome/esphome.git
synced 2026-02-24 10:18:23 -07:00
[udp] Register socket consumption for CONFIG_LWIP_MAX_SOCKETS (#14068)
This commit is contained in:
committed by
Jonathan Swoboda
parent
efe8a6c8eb
commit
8c0cc3a2d8
@@ -14,6 +14,7 @@ import esphome.config_validation as cv
|
||||
from esphome.const import CONF_DATA, CONF_ID, CONF_PORT, CONF_TRIGGER_ID
|
||||
from esphome.core import ID
|
||||
from esphome.cpp_generator import MockObj
|
||||
from esphome.types import ConfigType
|
||||
|
||||
CODEOWNERS = ["@clydebarrow"]
|
||||
DEPENDENCIES = ["network"]
|
||||
@@ -65,33 +66,47 @@ RELOCATED = {
|
||||
)
|
||||
}
|
||||
|
||||
CONFIG_SCHEMA = cv.COMPONENT_SCHEMA.extend(
|
||||
{
|
||||
cv.GenerateID(): cv.declare_id(UDPComponent),
|
||||
cv.Optional(CONF_PORT, default=18511): cv.Any(
|
||||
cv.port,
|
||||
cv.Schema(
|
||||
|
||||
def _consume_udp_sockets(config: ConfigType) -> ConfigType:
|
||||
"""Register socket needs for UDP component."""
|
||||
from esphome.components import socket
|
||||
|
||||
# UDP uses up to 2 sockets: 1 broadcast + 1 listen
|
||||
# Whether each is used depends on code generation, so register worst case
|
||||
socket.consume_sockets(2, "udp")(config)
|
||||
return config
|
||||
|
||||
|
||||
CONFIG_SCHEMA = cv.All(
|
||||
cv.COMPONENT_SCHEMA.extend(
|
||||
{
|
||||
cv.GenerateID(): cv.declare_id(UDPComponent),
|
||||
cv.Optional(CONF_PORT, default=18511): cv.Any(
|
||||
cv.port,
|
||||
cv.Schema(
|
||||
{
|
||||
cv.Required(CONF_LISTEN_PORT): cv.port,
|
||||
cv.Required(CONF_BROADCAST_PORT): cv.port,
|
||||
}
|
||||
),
|
||||
),
|
||||
cv.Optional(
|
||||
CONF_LISTEN_ADDRESS, default="255.255.255.255"
|
||||
): cv.ipv4address_multi_broadcast,
|
||||
cv.Optional(CONF_ADDRESSES, default=["255.255.255.255"]): cv.ensure_list(
|
||||
cv.ipv4address,
|
||||
),
|
||||
cv.Optional(CONF_ON_RECEIVE): automation.validate_automation(
|
||||
{
|
||||
cv.Required(CONF_LISTEN_PORT): cv.port,
|
||||
cv.Required(CONF_BROADCAST_PORT): cv.port,
|
||||
cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(
|
||||
Trigger.template(trigger_args)
|
||||
),
|
||||
}
|
||||
),
|
||||
),
|
||||
cv.Optional(
|
||||
CONF_LISTEN_ADDRESS, default="255.255.255.255"
|
||||
): cv.ipv4address_multi_broadcast,
|
||||
cv.Optional(CONF_ADDRESSES, default=["255.255.255.255"]): cv.ensure_list(
|
||||
cv.ipv4address,
|
||||
),
|
||||
cv.Optional(CONF_ON_RECEIVE): automation.validate_automation(
|
||||
{
|
||||
cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(
|
||||
Trigger.template(trigger_args)
|
||||
),
|
||||
}
|
||||
),
|
||||
}
|
||||
).extend(RELOCATED)
|
||||
}
|
||||
).extend(RELOCATED),
|
||||
_consume_udp_sockets,
|
||||
)
|
||||
|
||||
|
||||
async def register_udp_client(var, config):
|
||||
|
||||
Reference in New Issue
Block a user