mirror of
https://github.com/esphome/esphome.git
synced 2024-11-25 16:38:16 +01:00
Update PulseLightEffect with range brightness (#4820)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
This commit is contained in:
parent
ce5dc6f100
commit
ae838b13a8
4 changed files with 22 additions and 3 deletions
|
@ -25,7 +25,7 @@ class PulseLightEffect : public LightEffect {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
auto call = this->state_->turn_on();
|
auto call = this->state_->turn_on();
|
||||||
float out = this->on_ ? 1.0 : 0.0;
|
float out = this->on_ ? this->max_brightness : this->min_brightness;
|
||||||
call.set_brightness_if_supported(out);
|
call.set_brightness_if_supported(out);
|
||||||
this->on_ = !this->on_;
|
this->on_ = !this->on_;
|
||||||
call.set_transition_length_if_supported(this->transition_length_);
|
call.set_transition_length_if_supported(this->transition_length_);
|
||||||
|
@ -41,11 +41,18 @@ class PulseLightEffect : public LightEffect {
|
||||||
|
|
||||||
void set_update_interval(uint32_t update_interval) { this->update_interval_ = update_interval; }
|
void set_update_interval(uint32_t update_interval) { this->update_interval_ = update_interval; }
|
||||||
|
|
||||||
|
void set_min_max_brightness(float min, float max) {
|
||||||
|
this->min_brightness = min;
|
||||||
|
this->max_brightness = max;
|
||||||
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool on_ = false;
|
bool on_ = false;
|
||||||
uint32_t last_color_change_{0};
|
uint32_t last_color_change_{0};
|
||||||
uint32_t transition_length_{};
|
uint32_t transition_length_{};
|
||||||
uint32_t update_interval_{};
|
uint32_t update_interval_{};
|
||||||
|
float min_brightness{0.0};
|
||||||
|
float max_brightness{1.0};
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Random effect. Sets random colors every 10 seconds and slowly transitions between them.
|
/// Random effect. Sets random colors every 10 seconds and slowly transitions between them.
|
||||||
|
|
|
@ -28,6 +28,8 @@ from esphome.const import (
|
||||||
CONF_NUM_LEDS,
|
CONF_NUM_LEDS,
|
||||||
CONF_RANDOM,
|
CONF_RANDOM,
|
||||||
CONF_SEQUENCE,
|
CONF_SEQUENCE,
|
||||||
|
CONF_MAX_BRIGHTNESS,
|
||||||
|
CONF_MIN_BRIGHTNESS,
|
||||||
)
|
)
|
||||||
from esphome.util import Registry
|
from esphome.util import Registry
|
||||||
from .types import (
|
from .types import (
|
||||||
|
@ -174,12 +176,19 @@ async def automation_effect_to_code(config, effect_id):
|
||||||
cv.Optional(
|
cv.Optional(
|
||||||
CONF_UPDATE_INTERVAL, default="1s"
|
CONF_UPDATE_INTERVAL, default="1s"
|
||||||
): cv.positive_time_period_milliseconds,
|
): cv.positive_time_period_milliseconds,
|
||||||
|
cv.Optional(CONF_MIN_BRIGHTNESS, default="0%"): cv.percentage,
|
||||||
|
cv.Optional(CONF_MAX_BRIGHTNESS, default="100%"): cv.percentage,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
async def pulse_effect_to_code(config, effect_id):
|
async def pulse_effect_to_code(config, effect_id):
|
||||||
effect = cg.new_Pvariable(effect_id, config[CONF_NAME])
|
effect = cg.new_Pvariable(effect_id, config[CONF_NAME])
|
||||||
cg.add(effect.set_transition_length(config[CONF_TRANSITION_LENGTH]))
|
cg.add(effect.set_transition_length(config[CONF_TRANSITION_LENGTH]))
|
||||||
cg.add(effect.set_update_interval(config[CONF_UPDATE_INTERVAL]))
|
cg.add(effect.set_update_interval(config[CONF_UPDATE_INTERVAL]))
|
||||||
|
cg.add(
|
||||||
|
effect.set_min_max_brightness(
|
||||||
|
config[CONF_MIN_BRIGHTNESS], config[CONF_MAX_BRIGHTNESS]
|
||||||
|
)
|
||||||
|
)
|
||||||
return effect
|
return effect
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,8 @@ from esphome.const import (
|
||||||
DEVICE_CLASS_POWER,
|
DEVICE_CLASS_POWER,
|
||||||
DEVICE_CLASS_VOLTAGE,
|
DEVICE_CLASS_VOLTAGE,
|
||||||
DEVICE_CLASS_CURRENT,
|
DEVICE_CLASS_CURRENT,
|
||||||
|
CONF_MIN_BRIGHTNESS,
|
||||||
|
CONF_MAX_BRIGHTNESS,
|
||||||
)
|
)
|
||||||
from esphome.core import HexInt, CORE
|
from esphome.core import HexInt, CORE
|
||||||
|
|
||||||
|
@ -41,8 +43,7 @@ CONF_UPDATE = "update"
|
||||||
CONF_LEADING_EDGE = "leading_edge"
|
CONF_LEADING_EDGE = "leading_edge"
|
||||||
CONF_WARMUP_BRIGHTNESS = "warmup_brightness"
|
CONF_WARMUP_BRIGHTNESS = "warmup_brightness"
|
||||||
# CONF_WARMUP_TIME = "warmup_time"
|
# CONF_WARMUP_TIME = "warmup_time"
|
||||||
CONF_MIN_BRIGHTNESS = "min_brightness"
|
|
||||||
CONF_MAX_BRIGHTNESS = "max_brightness"
|
|
||||||
|
|
||||||
CONF_NRST_PIN = "nrst_pin"
|
CONF_NRST_PIN = "nrst_pin"
|
||||||
CONF_BOOT0_PIN = "boot0_pin"
|
CONF_BOOT0_PIN = "boot0_pin"
|
||||||
|
|
|
@ -377,6 +377,7 @@ CONF_MAKE_ID = "make_id"
|
||||||
CONF_MANUAL_IP = "manual_ip"
|
CONF_MANUAL_IP = "manual_ip"
|
||||||
CONF_MANUFACTURER_ID = "manufacturer_id"
|
CONF_MANUFACTURER_ID = "manufacturer_id"
|
||||||
CONF_MASK_DISTURBER = "mask_disturber"
|
CONF_MASK_DISTURBER = "mask_disturber"
|
||||||
|
CONF_MAX_BRIGHTNESS = "max_brightness"
|
||||||
CONF_MAX_COOLING_RUN_TIME = "max_cooling_run_time"
|
CONF_MAX_COOLING_RUN_TIME = "max_cooling_run_time"
|
||||||
CONF_MAX_CURRENT = "max_current"
|
CONF_MAX_CURRENT = "max_current"
|
||||||
CONF_MAX_DURATION = "max_duration"
|
CONF_MAX_DURATION = "max_duration"
|
||||||
|
@ -396,6 +397,7 @@ CONF_MEDIUM = "medium"
|
||||||
CONF_MEMORY_BLOCKS = "memory_blocks"
|
CONF_MEMORY_BLOCKS = "memory_blocks"
|
||||||
CONF_METHOD = "method"
|
CONF_METHOD = "method"
|
||||||
CONF_MICROPHONE = "microphone"
|
CONF_MICROPHONE = "microphone"
|
||||||
|
CONF_MIN_BRIGHTNESS = "min_brightness"
|
||||||
CONF_MIN_COOLING_OFF_TIME = "min_cooling_off_time"
|
CONF_MIN_COOLING_OFF_TIME = "min_cooling_off_time"
|
||||||
CONF_MIN_COOLING_RUN_TIME = "min_cooling_run_time"
|
CONF_MIN_COOLING_RUN_TIME = "min_cooling_run_time"
|
||||||
CONF_MIN_FAN_MODE_SWITCHING_TIME = "min_fan_mode_switching_time"
|
CONF_MIN_FAN_MODE_SWITCHING_TIME = "min_fan_mode_switching_time"
|
||||||
|
|
Loading…
Reference in a new issue