import esphome.codegen as cg import esphome.config_validation as cv from esphome.components import number from esphome.const import CONF_POWER, ENTITY_CATEGORY_CONFIG, CONF_ID from .. import tw7100, tw7100_ns, CONF_TW7100_ID DEPENDENCIES = ["tw7100"] CODEOWNERS = ["@sqozz"] tw7100Number = tw7100_ns.class_("tw7100Number", number.Number, cg.Component) numbers = [ ("VOL","mdi:volume-high"), ("VKEYSTONE",""), ("HKEYSTONE",""), ("BRIGHT","mdi:brightness-7"), ("CONTRAST","mdi:contrast"), ("DENSITY",""), ("TINT",""), ("CTEMP","mdi:format-color-fill"), ("FCOLOR","mdi:account"), ("NRS",""), ("MPEGNRS",""), ("OFFSETR","mdi:alpha-r-box-outline"), ("OFFSETG","mdi:alpha-g-box-outline"), ("OFFSETB","mdi:alpha-b-box-outline"), ("GAINR","mdi:alpha-r-circle-outline"), ("GAING","mdi:alpha-g-circle-outline"), ("GAINB","mdi:alpha-b-circle-outline"), ("SHRF","mdi:format-line-weight"), ("SHRS","mdi:image-filter-center-focus"), ("DERANGE","mdi:magnify-expand"), ("DESTRENGTH","mdi:magnify-plus-outline") ] schema={cv.GenerateID(): cv.use_id(tw7100)} for name,icon in numbers: schema.update({cv.Optional(name): number.number_schema(tw7100Number, icon=icon)}) CONFIG_SCHEMA = cv.Schema(schema) async def to_code(config): parent = await cg.get_variable(config[CONF_ID]) for name,icon in numbers: if name in config: number_ = await number.new_number(config[name], min_value=0, max_value=255, step=1) cg.add(number_.set_cmd(name)) cg.add(number_.set_tw7100_parent(parent)) cg.add(getattr(parent, "set_set_{}".format(name.lower()))(number_))