51 lines
2.2 KiB
Python
51 lines
2.2 KiB
Python
import esphome.codegen as cg
|
|
from esphome.components import uart
|
|
import esphome.config_validation as cv
|
|
from esphome.const import CONF_ID
|
|
|
|
DEPENDENCIES = ["uart"]
|
|
# is the code owner of the relevant code base
|
|
CODEOWNERS = ["@limengdu"]
|
|
# The current component or platform can be configured or defined multiple times in the same configuration file.
|
|
MULTI_CONF = True
|
|
|
|
# This line of code creates a new namespace called mr24hpc1_ns.
|
|
# This namespace will be used as a prefix for all classes, functions and variables associated with the mr24hpc1_ns component, ensuring that they do not conflict with the names of other components.
|
|
mr24hpc1_ns = cg.esphome_ns.namespace("seeed_mr24hpc1")
|
|
# This MR24HPC1Component class will be a periodically polled UART device
|
|
MR24HPC1Component = mr24hpc1_ns.class_(
|
|
"MR24HPC1Component", cg.Component, uart.UARTDevice
|
|
)
|
|
|
|
CONF_MR24HPC1_ID = "mr24hpc1_id"
|
|
|
|
CONFIG_SCHEMA = (
|
|
cv.Schema(
|
|
{
|
|
cv.GenerateID(): cv.declare_id(MR24HPC1Component),
|
|
}
|
|
)
|
|
.extend(uart.UART_DEVICE_SCHEMA)
|
|
.extend(cv.COMPONENT_SCHEMA)
|
|
)
|
|
|
|
# A verification mode was created to verify the configuration parameters of a UART device named "seeed_mr24hpc1".
|
|
# This authentication mode requires that the device must have transmit and receive functionality, a parity mode of "NONE", and a stop bit of one.
|
|
FINAL_VALIDATE_SCHEMA = uart.final_validate_device_schema(
|
|
"seeed_mr24hpc1",
|
|
require_tx=True,
|
|
require_rx=True,
|
|
parity="NONE",
|
|
stop_bits=1,
|
|
)
|
|
|
|
|
|
# The async def keyword is used to define a concurrent function.
|
|
# Concurrent functions are special functions designed to work with Python's asyncio library to support asynchronous I/O operations.
|
|
async def to_code(config):
|
|
# This line of code creates a new Pvariable (a Python object representing a C++ variable) with the variable's ID taken from the configuration.
|
|
var = cg.new_Pvariable(config[CONF_ID])
|
|
# This line of code registers the newly created Pvariable as a component so that ESPHome can manage it at runtime.
|
|
await cg.register_component(var, config)
|
|
# This line of code registers the newly created Pvariable as a device.
|
|
await uart.register_uart_device(var, config)
|