mirror of
https://github.com/esphome/esphome.git
synced 2025-11-01 15:41:52 +00:00
Compare commits
3 Commits
2025.9.0b1
...
jesserockz
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
385d5c018b | ||
|
|
460ce5991c | ||
|
|
03b2d3f9d3 |
@@ -23,6 +23,7 @@ CHANNELS = {
|
||||
|
||||
CONF_UNIVERSE = "universe"
|
||||
CONF_E131_ID = "e131_id"
|
||||
CONF_CHANNEL_OFFSET = "channel_offset"
|
||||
|
||||
CONFIG_SCHEMA = cv.Schema(
|
||||
{
|
||||
@@ -46,6 +47,7 @@ async def to_code(config):
|
||||
cv.GenerateID(CONF_E131_ID): cv.use_id(E131Component),
|
||||
cv.Required(CONF_UNIVERSE): cv.int_range(min=1, max=512),
|
||||
cv.Optional(CONF_CHANNELS, default="RGB"): cv.one_of(*CHANNELS, upper=True),
|
||||
cv.Optional(CONF_CHANNEL_OFFSET, default=0): cv.int_range(min=0, max=512),
|
||||
},
|
||||
)
|
||||
async def e131_light_effect_to_code(config, effect_id):
|
||||
@@ -54,5 +56,6 @@ async def e131_light_effect_to_code(config, effect_id):
|
||||
effect = cg.new_Pvariable(effect_id, config[CONF_NAME])
|
||||
cg.add(effect.set_first_universe(config[CONF_UNIVERSE]))
|
||||
cg.add(effect.set_channels(CHANNELS[config[CONF_CHANNELS]]))
|
||||
cg.add(effect.set_channel_offset(config[CONF_CHANNEL_OFFSET]))
|
||||
cg.add(effect.set_e131(parent))
|
||||
return effect
|
||||
|
||||
@@ -55,7 +55,7 @@ bool E131AddressableLightEffect::process_(int universe, const E131Packet &packet
|
||||
// limit amount of lights per universe and received
|
||||
int output_end =
|
||||
std::min(it->size(), std::min(output_offset + get_lights_per_universe(), output_offset + packet.count - 1));
|
||||
auto *input_data = packet.values + 1;
|
||||
auto *input_data = packet.values + 1 + (this->channel_offset_ * this->channels_);
|
||||
|
||||
ESP_LOGV(TAG, "Applying data for '%s' on %d universe, for %" PRId32 "-%d.", get_name().c_str(), universe,
|
||||
output_offset, output_end);
|
||||
|
||||
@@ -27,6 +27,7 @@ class E131AddressableLightEffect : public light::AddressableLightEffect {
|
||||
|
||||
void set_first_universe(int universe) { this->first_universe_ = universe; }
|
||||
void set_channels(E131LightChannels channels) { this->channels_ = channels; }
|
||||
void set_channel_offset(int offset) { this->channel_offset_ = offset; }
|
||||
void set_e131(E131Component *e131) { this->e131_ = e131; }
|
||||
|
||||
protected:
|
||||
@@ -34,6 +35,7 @@ class E131AddressableLightEffect : public light::AddressableLightEffect {
|
||||
|
||||
int first_universe_{0};
|
||||
int last_universe_{0};
|
||||
int channel_offset_{0};
|
||||
E131LightChannels channels_{E131_RGB};
|
||||
E131Component *e131_{nullptr};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user