import esphome.codegen as cg import esphome.config_validation as cv from esphome.components import select from esphome.const import CONF_POWER, ENTITY_CATEGORY_CONFIG, CONF_ID from .. import tw7100, tw7100_ns, CONF_TW7100_ID DEPENDENCIES = ["tw7100"] CODEOWNERS = ["@sqozz"] tw7100Select = tw7100_ns.class_("tw7100Select", select.Select, cg.Component) selects = [ ("SOURCE", "mdi:video-input-hdmi"), ("LUMINANCE", "mdi:brightness-6"), ("CMODE", ""), ("GAMMA", "mdi:gamma"), ("IMGPRESET", "mdi:palette"), ("MCFI", "mdi:image-multiple"), ("CLRSPACE", ""), ("DYNRANGE", "mdi:hdr"), ("IMGPROC", ""), ("MSEL", "mdi:image-off"), ("SPEED", "mdi:speedometer"), ("OVSCAN", "mdi:overscan"), ("ASPECT", "mdi:aspect-ratio") ] schema={cv.GenerateID(): cv.use_id(tw7100)} for name,icon in selects: schema.update({cv.Optional(name): select.select_schema(tw7100Select, icon=icon)}) CONFIG_SCHEMA = cv.Schema(schema) async def to_code(config): parent = await cg.get_variable(config[CONF_ID]) for name,icon in selects: if name in config: select_ = await select.new_select(config[name], options=[]) cg.add(select_.set_cmd(name)) cg.add(select_.set_tw7100_parent(parent)) cg.add(getattr(parent, "set_set_{}".format(name.lower()))(select_))