..
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import esphome.codegen as cg
|
||||
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
|
||||
|
||||
DEPENDENCIES = ['i2c']
|
||||
@@ -16,6 +16,8 @@ CONFIG_SCHEMA = cv.Schema(
|
||||
|
||||
cv.Required("upper"): 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))
|
||||
|
||||
|
||||
@@ -16,17 +16,23 @@ void ShowcaseComponent::loop() {
|
||||
/* ESP_LOGI(TAG, "READ value: %d", data); */
|
||||
if(data != 0){
|
||||
if(data & 1){
|
||||
this->s = Off;
|
||||
// TODO: turn off leds
|
||||
this->write_state(Off);
|
||||
} else if ( data & 2 ){
|
||||
this->s = Auto;
|
||||
this->write_state(Auto);
|
||||
} else if ( data & 4 ){
|
||||
this->s = On;
|
||||
// TODO: turn on led
|
||||
this->write_state(On);
|
||||
}
|
||||
|
||||
if(this->s == Auto && data & 8){
|
||||
// TODO: turn on led
|
||||
if(this->s_ == Auto) {
|
||||
if(data & 8){
|
||||
// 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 {
|
||||
public:
|
||||
state s;
|
||||
|
||||
void setup() override;
|
||||
void loop() override;
|
||||
void dump_config() override;
|
||||
|
||||
void set_upper(output::FloatOutput *upper) {this->upper_ = upper;}
|
||||
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(float upper, float lower){
|
||||
this->upper_->set_level(upper);
|
||||
this->lower_->set_level(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 set_level(float bright){
|
||||
this->set_level(bright, bright);
|
||||
/* this->upper_->write_state(upper); */
|
||||
/* 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:
|
||||
output::FloatOutput *upper_;
|
||||
output::FloatOutput *lower_;
|
||||
state s_;
|
||||
float b_upper_ = 1.0;
|
||||
float b_lower_ = 1.0;
|
||||
/* monochromatic::MonochromaticLightOutput *upper_; */
|
||||
/* monochromatic::MonochromaticLightOutput *lower_; */
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user