You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

43 lines
1.3 KiB

#pragma once
#include <array>
#include <stdexcept>
#include "common.h"
namespace esphome {
namespace yeelight {
namespace bs2 {
class ColorNightLight : public GPIOOutputs {
public:
bool set_light_color_values(light::LightColorValues v) {
values = v;
// This night light mode is activated when white light is selected.
// Based on measurements using the original device firmware, so it
// matches the night light of the original firmware.
if (v.get_white() > 0) {
red = 0.968f;
green = 0.968f;
blue = 0.972f;
white = 0.0f;
}
// In RGB mode, the selected color is used to give the night light
// a specific color, instead of the default. This is a nice extra
// for this firmware, as the original firmware does not support it.
else {
red = 0.9997f - v.get_red() * (0.9997f - 0.9680f);
green = 0.9997f - v.get_green() * (0.9997f - 0.9680f);
auto blue_on = 0.9720f + (0.9680f - 0.9720f) * (1.0f - (v.get_red() + v.get_green())/2.0f);
blue = 0.9997f - v.get_blue() * (0.9997f - blue_on);
white = 0.0f;
}
return true;
}
};
} // namespace yeelight_bs2
} // namespace yeelight
} // namespace bs2