Roman Kretschmer 2 years ago
parent 18cab91774
commit cb427b17dc

@ -1,6 +1,6 @@
import esphome.codegen as cg import esphome.codegen as cg
import esphome.config_validation as cv import esphome.config_validation as cv
from esphome.components import i2c, sensor, output from esphome.components import i2c, sensor, monochromatic, output
from esphome.const import CONF_ID from esphome.const import CONF_ID
DEPENDENCIES = ['i2c'] DEPENDENCIES = ['i2c']
@ -16,6 +16,8 @@ CONFIG_SCHEMA = cv.Schema(
cv.Required("upper"): cv.use_id(output.FloatOutput), cv.Required("upper"): cv.use_id(output.FloatOutput),
cv.Required("lower"): cv.use_id(output.FloatOutput) cv.Required("lower"): cv.use_id(output.FloatOutput)
# cv.Required("upper"): cv.use_id(monochromatic.MonochromaticLightOutput),
# cv.Required("lower"): cv.use_id(monochromatic.MonochromaticLightOutput)
} }
).extend(cv.COMPONENT_SCHEMA).extend(i2c.i2c_device_schema(CONF_I2C_ADDR)) ).extend(cv.COMPONENT_SCHEMA).extend(i2c.i2c_device_schema(CONF_I2C_ADDR))

@ -16,17 +16,23 @@ void ShowcaseComponent::loop() {
/* ESP_LOGI(TAG, "READ value: %d", data); */ /* ESP_LOGI(TAG, "READ value: %d", data); */
if(data != 0){ if(data != 0){
if(data & 1){ if(data & 1){
this->s = Off; this->write_state(Off);
// TODO: turn off leds
} else if ( data & 2 ){ } else if ( data & 2 ){
this->s = Auto; this->write_state(Auto);
} else if ( data & 4 ){ } else if ( data & 4 ){
this->s = On; this->write_state(On);
// TODO: turn on led
} }
if(this->s == Auto && data & 8){ if(this->s_ == Auto) {
if(data & 8){
// TODO: turn on led // TODO: turn on led
this->upper_->set_level(this->b_upper_);
this->lower_->set_level(this->b_lower_);
}
else{
this->upper_->set_level(0.0);
this->lower_->set_level(0.0);
}
} }
} }
} }

@ -13,25 +13,57 @@ enum state{ Off, Auto, On };
class ShowcaseComponent : public i2c::I2CDevice, public Component { class ShowcaseComponent : public i2c::I2CDevice, public Component {
public: public:
state s;
void setup() override; void setup() override;
void loop() override; void loop() override;
void dump_config() override; void dump_config() override;
void set_upper(output::FloatOutput *upper) {this->upper_ = upper;} void set_upper(output::FloatOutput *upper) {this->upper_ = upper;}
void set_lower(output::FloatOutput *lower) {this->lower_ = lower;} void set_lower(output::FloatOutput *lower) {this->lower_ = lower;}
/* void set_upper(monochromatic::MonochromaticLightOutput *upper) {this->upper_ = upper;} */
/* void set_lower(monochromatic::MonochromaticLightOutput *lower) {this->lower_ = lower;} */
void write_state(state s){
switch(s) {
On:
this->set_level(this->b_upper_, this->b_lower_);
break;
Off:
this->upper_->set_level(0.0);
this->lower_->set_level(0.0);
break;
Auto:
break;
}
}
void write_state(float upper, float lower){ void set_level(float bright){
this->upper_->set_level(upper); this->set_level(bright, bright);
this->lower_->set_level(lower);
/* this->upper_->write_state(upper); */ /* this->upper_->write_state(upper); */
/* this->lower_->write_state(lower); */ /* this->lower_->write_state(lower); */
} }
void set_level(float upper, float lower){
this->set_level_upper(upper);
this->set_level_lower(lower);
/* this->upper_->write_state(upper); */
/* this->lower_->write_state(lower); */
}
void set_level_upper(float bright){
this->b_upper_ = bright;
this->upper_->set_level(bright);
}
void set_level_lower(float bright){
this->b_lower_ = bright;
this->lower_->set_level(bright);
}
protected: protected:
output::FloatOutput *upper_; output::FloatOutput *upper_;
output::FloatOutput *lower_; output::FloatOutput *lower_;
state s_;
float b_upper_ = 1.0;
float b_lower_ = 1.0;
/* monochromatic::MonochromaticLightOutput *upper_; */ /* monochromatic::MonochromaticLightOutput *upper_; */
/* monochromatic::MonochromaticLightOutput *lower_; */ /* monochromatic::MonochromaticLightOutput *lower_; */
}; };

Loading…
Cancel
Save