Files
esphome-lsm6ds/esphome/components/mcp4461/output/__init__.py
T

62 lines
2.2 KiB
Python

import esphome.codegen as cg
from esphome.components import output
import esphome.config_validation as cv
from esphome.const import CONF_CHANNEL, CONF_ID, CONF_INITIAL_VALUE
from .. import CONF_MCP4461_ID, Mcp4461Component, mcp4461_ns
DEPENDENCIES = ["mcp4461"]
Mcp4461Wiper = mcp4461_ns.class_(
"Mcp4461Wiper", output.FloatOutput, cg.Parented.template(Mcp4461Component)
)
Mcp4461WiperIdx = mcp4461_ns.enum("Mcp4461WiperIdx", is_class=True)
CHANNEL_OPTIONS = {
"A": Mcp4461WiperIdx.MCP4461_WIPER_0,
"B": Mcp4461WiperIdx.MCP4461_WIPER_1,
"C": Mcp4461WiperIdx.MCP4461_WIPER_2,
"D": Mcp4461WiperIdx.MCP4461_WIPER_3,
"E": Mcp4461WiperIdx.MCP4461_WIPER_4,
"F": Mcp4461WiperIdx.MCP4461_WIPER_5,
"G": Mcp4461WiperIdx.MCP4461_WIPER_6,
"H": Mcp4461WiperIdx.MCP4461_WIPER_7,
}
CONF_TERMINAL_A = "terminal_a"
CONF_TERMINAL_B = "terminal_b"
CONF_TERMINAL_W = "terminal_w"
CONFIG_SCHEMA = output.FLOAT_OUTPUT_SCHEMA.extend(
{
cv.Required(CONF_ID): cv.declare_id(Mcp4461Wiper),
cv.GenerateID(CONF_MCP4461_ID): cv.use_id(Mcp4461Component),
cv.Required(CONF_CHANNEL): cv.enum(CHANNEL_OPTIONS, upper=True),
cv.Optional(CONF_TERMINAL_A, default=True): cv.boolean,
cv.Optional(CONF_TERMINAL_B, default=True): cv.boolean,
cv.Optional(CONF_TERMINAL_W, default=True): cv.boolean,
cv.Optional(CONF_INITIAL_VALUE): cv.float_range(min=0.0, max=1.0),
}
)
async def to_code(config):
parent = await cg.get_variable(config[CONF_MCP4461_ID])
var = cg.new_Pvariable(
config[CONF_ID],
parent,
config[CONF_CHANNEL],
)
if not config[CONF_TERMINAL_A]:
cg.add(parent.initialize_terminal_disabled(config[CONF_CHANNEL], ord("a")))
if not config[CONF_TERMINAL_B]:
cg.add(parent.initialize_terminal_disabled(config[CONF_CHANNEL], ord("b")))
if not config[CONF_TERMINAL_W]:
cg.add(parent.initialize_terminal_disabled(config[CONF_CHANNEL], ord("w")))
if CONF_INITIAL_VALUE in config:
cg.add(
parent.set_initial_value(config[CONF_CHANNEL], config[CONF_INITIAL_VALUE])
)
await output.register_output(var, config)
await cg.register_parented(var, config[CONF_MCP4461_ID])