esphome-ratgdo/components/ratgdo/light/ratgdo_light_output.cpp

59 lines
1.7 KiB
C++
Raw Normal View History

2023-06-07 18:49:13 +00:00
#include "ratgdo_light_output.h"
2023-06-07 18:27:01 +00:00
#include "../ratgdo_state.h"
#include "esphome/core/log.h"
namespace esphome {
namespace ratgdo {
2023-06-07 18:28:01 +00:00
using namespace esphome::light;
2023-06-07 18:27:01 +00:00
static const char* const TAG = "ratgdo.light";
void RATGDOLightOutput::dump_config()
{
2023-06-07 18:29:05 +00:00
ESP_LOGCONFIG("", "RATGDO Light");
2023-06-07 18:27:01 +00:00
}
2023-06-08 00:31:08 +00:00
void RATGDOLightOutput::on_light_state(esphome::ratgdo::LightState state)
2023-06-07 22:14:35 +00:00
{
2023-06-07 22:15:02 +00:00
ESP_LOGD(TAG, "on_light_state: %d", state);
2023-06-07 22:14:35 +00:00
if (this->light_state_) {
2023-06-09 21:45:49 +00:00
set_state(state);
2023-06-07 22:14:35 +00:00
}
}
2023-06-09 21:45:49 +00:00
void RATGDOLightOutput::set_state(esphome::ratgdo::LightState state)
2023-06-09 21:43:09 +00:00
2023-06-09 21:40:49 +00:00
bool is_on = state == LightState::LIGHT_STATE_ON;
2023-06-09 21:45:49 +00:00
this->light_state_->current_values.set_state(is_on);
this->light_state_->remote_values.set_state(is_on);
this->light_state_->publish_state();
2023-06-09 21:38:59 +00:00
}
2023-06-09 21:45:49 +00:00
void RATGDOLightOutput::setup_state(light::LightState* light_state)
2023-06-08 01:46:44 +00:00
{
2023-06-09 21:45:49 +00:00
esphome::ratgdo::LightState state = this->parent_->getLightState();
ESP_LOGD(TAG,"setup_state: getLightState: %d", state)
this->light_state_ = light_state;
this->set_state(state);
2023-06-08 01:46:44 +00:00
}
2023-06-07 18:27:01 +00:00
LightTraits RATGDOLightOutput::get_traits()
{
auto traits = LightTraits();
traits.set_supported_color_modes({ light::ColorMode::ON_OFF });
return traits;
}
void RATGDOLightOutput::write_state(light::LightState* state)
{
bool binary;
state->current_values_as_binary(&binary);
if (binary) {
2023-06-08 00:38:21 +00:00
ESP_LOGD(TAG, "output call lightOn");
2023-06-07 18:34:01 +00:00
this->parent_->lightOn();
2023-06-07 18:27:01 +00:00
} else {
2023-06-08 00:38:21 +00:00
ESP_LOGD(TAG, "output call lightOff");
2023-06-07 18:34:01 +00:00
this->parent_->lightOff();
2023-06-07 18:27:01 +00:00
}
}
} // namespace ratgdo
} // namespace esphome