Fix validation of addressable light IDs (#2588)

This commit is contained in:
Oxan van Leeuwen 2021-10-21 20:07:37 +02:00 committed by Otto winter
parent 68cbe58d00
commit bbcd523967
No known key found for this signature in database
GPG key ID: 48ED2DDB96D7682C
2 changed files with 8 additions and 3 deletions

View file

@ -22,6 +22,12 @@ using ESPColor ESPDEPRECATED("esphome::light::ESPColor is deprecated, use esphom
/// Convert the color information from a `LightColorValues` object to a `Color` object (does not apply brightness). /// Convert the color information from a `LightColorValues` object to a `Color` object (does not apply brightness).
Color color_from_light_color_values(LightColorValues val); Color color_from_light_color_values(LightColorValues val);
/// Use a custom state class for addressable lights, to allow type system to discriminate between addressable and
/// non-addressable lights.
class AddressableLightState : public LightState {
using LightState::LightState;
};
class AddressableLight : public LightOutput, public Component { class AddressableLight : public LightOutput, public Component {
public: public:
virtual int32_t size() const = 0; virtual int32_t size() const = 0;

View file

@ -4,10 +4,9 @@ from esphome import automation
# Base # Base
light_ns = cg.esphome_ns.namespace("light") light_ns = cg.esphome_ns.namespace("light")
LightState = light_ns.class_("LightState", cg.EntityBase, cg.Component) LightState = light_ns.class_("LightState", cg.EntityBase, cg.Component)
# Fake class for addressable lights AddressableLightState = light_ns.class_("AddressableLightState", LightState)
AddressableLightState = light_ns.class_("LightState", LightState)
LightOutput = light_ns.class_("LightOutput") LightOutput = light_ns.class_("LightOutput")
AddressableLight = light_ns.class_("AddressableLight", cg.Component) AddressableLight = light_ns.class_("AddressableLight", LightOutput, cg.Component)
AddressableLightRef = AddressableLight.operator("ref") AddressableLightRef = AddressableLight.operator("ref")
Color = cg.esphome_ns.class_("Color") Color = cg.esphome_ns.class_("Color")