From 5d15a6f1dcbd813ed05a9dd5d79aa1044fa303b3 Mon Sep 17 00:00:00 2001 From: gnxlxnxx Date: Wed, 24 Jan 2024 22:11:18 +0100 Subject: [PATCH] ..................... --- .../monochromatic_light_output.h | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/components/custom_monochromatic/monochromatic_light_output.h b/components/custom_monochromatic/monochromatic_light_output.h index 3483405..52e6f3d 100644 --- a/components/custom_monochromatic/monochromatic_light_output.h +++ b/components/custom_monochromatic/monochromatic_light_output.h @@ -8,6 +8,8 @@ namespace esphome { namespace c_monochromatic { +enum State{ Off, Auto, On }; + class MonochromaticLightOutput : public light::LightOutput, public i2c::I2CDevice, public Component { @@ -15,6 +17,7 @@ public: void set_output(output::FloatOutput *upper, output::FloatOutput *lower) { upper_ = upper; lower_ = lower; + state_ = Off; } light::LightTraits get_traits() override { auto traits = light::LightTraits(); @@ -22,13 +25,63 @@ public: return traits; } void write_state(light::LightState *state) override { + this->light_state_ = state; float bright; state->current_values_as_brightness(&bright); this->upper_->set_level(bright); this->lower_->set_level(bright); } + void set_state(State s){ + this->state_ = s; + switch(s){ + case(On): + /* this -> write_state(this) */ + this -> light_state_->turn_on(); + break; + case(Off): + this -> light_state_->turn_off(); + break; + case(Auto): + + break; + } + } + + void loop(){ + uint8_t data = 10; + this->read_register(0x0, &data, 0x1); + /* ESP_LOGI(TAG, "READ value: %d", data); */ + if(data != 0){ + if(data & 1){ + this->set_state(Off); + /* ESP_LOGI(TAG, "Set to Off", data); */ + /* } else if ( data & 2 ){ */ + /* this->set_state(Auto); */ + /* ESP_LOGI(TAG, "Set to Auto", data); */ + } else if ( data & 4 ){ + this->set_state(On); + /* ESP_LOGI(TAG, "Set to On", data); */ + } + } + /* if(this->state_ == Auto) { */ + /* if(data & 8){ */ + /* // TODO: turn on led */ + /* /\* ESP_LOGI(TAG, "Auto On"); *\/ */ + /* this->upper_->set_level(this->b_upper_); */ + /* this->lower_->set_level(this->b_lower_); */ + /* } */ + /* else{ */ + /* /\* ESP_LOGI(TAG, "Auto Off"); *\/ */ + /* this->upper_->set_level(0.0); */ + /* this->lower_->set_level(0.0); */ + /* } */ + /* } */ + } + protected: + State state_; + light::LightState *light_state_; output::FloatOutput *upper_; output::FloatOutput *lower_; };