esphome-tw7100/number/__init__.py

53 lines
1.6 KiB
Python

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_))