Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com> Co-authored-by: J. Nick Koston <nick@koston.org>
40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
"""ESP-NOW transport platform for packet_transport component."""
|
|
|
|
import esphome.codegen as cg
|
|
from esphome.components.packet_transport import (
|
|
PacketTransport,
|
|
new_packet_transport,
|
|
transport_schema,
|
|
)
|
|
import esphome.config_validation as cv
|
|
from esphome.core import HexInt
|
|
from esphome.cpp_types import PollingComponent
|
|
|
|
from .. import ESPNowComponent, espnow_ns
|
|
|
|
CODEOWNERS = ["@EasilyBoredEngineer"]
|
|
DEPENDENCIES = ["espnow"]
|
|
|
|
ESPNowTransport = espnow_ns.class_("ESPNowTransport", PacketTransport, PollingComponent)
|
|
|
|
CONF_ESPNOW_ID = "espnow_id"
|
|
CONF_PEER_ADDRESS = "peer_address"
|
|
|
|
CONFIG_SCHEMA = transport_schema(ESPNowTransport).extend(
|
|
{
|
|
cv.GenerateID(CONF_ESPNOW_ID): cv.use_id(ESPNowComponent),
|
|
cv.Optional(CONF_PEER_ADDRESS, default="FF:FF:FF:FF:FF:FF"): cv.mac_address,
|
|
}
|
|
)
|
|
|
|
|
|
async def to_code(config):
|
|
"""Set up the ESP-NOW transport component."""
|
|
var, _ = await new_packet_transport(config)
|
|
|
|
await cg.register_parented(var, config[CONF_ESPNOW_ID])
|
|
|
|
# Set peer address - convert MAC to parts array like ESP-NOW does
|
|
mac = config[CONF_PEER_ADDRESS]
|
|
cg.add(var.set_peer_address([HexInt(x) for x in mac.parts]))
|