mirror of
https://github.com/esphome/esphome.git
synced 2025-04-13 22:30:31 +01:00
Check if the color temperature of the cold white channel is colder (less) than the warm white channel.
60 lines
2.2 KiB
Python
60 lines
2.2 KiB
Python
import esphome.codegen as cg
|
|
import esphome.config_validation as cv
|
|
from esphome.components import light, output
|
|
from esphome.const import (
|
|
CONF_BLUE,
|
|
CONF_GREEN,
|
|
CONF_RED,
|
|
CONF_OUTPUT_ID,
|
|
CONF_COLD_WHITE,
|
|
CONF_WARM_WHITE,
|
|
CONF_COLD_WHITE_COLOR_TEMPERATURE,
|
|
CONF_WARM_WHITE_COLOR_TEMPERATURE,
|
|
)
|
|
|
|
rgbww_ns = cg.esphome_ns.namespace("rgbww")
|
|
RGBWWLightOutput = rgbww_ns.class_("RGBWWLightOutput", light.LightOutput)
|
|
|
|
CONF_CONSTANT_BRIGHTNESS = "constant_brightness"
|
|
CONF_COLOR_INTERLOCK = "color_interlock"
|
|
|
|
CONFIG_SCHEMA = cv.All(
|
|
light.RGB_LIGHT_SCHEMA.extend(
|
|
{
|
|
cv.GenerateID(CONF_OUTPUT_ID): cv.declare_id(RGBWWLightOutput),
|
|
cv.Required(CONF_RED): cv.use_id(output.FloatOutput),
|
|
cv.Required(CONF_GREEN): cv.use_id(output.FloatOutput),
|
|
cv.Required(CONF_BLUE): cv.use_id(output.FloatOutput),
|
|
cv.Required(CONF_COLD_WHITE): cv.use_id(output.FloatOutput),
|
|
cv.Required(CONF_WARM_WHITE): cv.use_id(output.FloatOutput),
|
|
cv.Required(CONF_COLD_WHITE_COLOR_TEMPERATURE): cv.color_temperature,
|
|
cv.Required(CONF_WARM_WHITE_COLOR_TEMPERATURE): cv.color_temperature,
|
|
cv.Optional(CONF_CONSTANT_BRIGHTNESS, default=False): cv.boolean,
|
|
cv.Optional(CONF_COLOR_INTERLOCK, default=False): cv.boolean,
|
|
}
|
|
),
|
|
light.validate_color_temperature_channels,
|
|
)
|
|
|
|
|
|
async def to_code(config):
|
|
var = cg.new_Pvariable(config[CONF_OUTPUT_ID])
|
|
await light.register_light(var, config)
|
|
|
|
red = await cg.get_variable(config[CONF_RED])
|
|
cg.add(var.set_red(red))
|
|
green = await cg.get_variable(config[CONF_GREEN])
|
|
cg.add(var.set_green(green))
|
|
blue = await cg.get_variable(config[CONF_BLUE])
|
|
cg.add(var.set_blue(blue))
|
|
|
|
cwhite = await cg.get_variable(config[CONF_COLD_WHITE])
|
|
cg.add(var.set_cold_white(cwhite))
|
|
cg.add(var.set_cold_white_temperature(config[CONF_COLD_WHITE_COLOR_TEMPERATURE]))
|
|
|
|
wwhite = await cg.get_variable(config[CONF_WARM_WHITE])
|
|
cg.add(var.set_warm_white(wwhite))
|
|
cg.add(var.set_warm_white_temperature(config[CONF_WARM_WHITE_COLOR_TEMPERATURE]))
|
|
cg.add(var.set_constant_brightness(config[CONF_CONSTANT_BRIGHTNESS]))
|
|
cg.add(var.set_color_interlock(config[CONF_COLOR_INTERLOCK]))
|