Skip to content

Commit

Permalink
Merge pull request esphome#7004 from esphome/bump-2024.6.4
Browse files Browse the repository at this point in the history
2024.6.4
  • Loading branch information
jesserockz authored Jun 27, 2024
2 parents 04225d5 + 7904d3b commit 7b3d674
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 9 deletions.
65 changes: 58 additions & 7 deletions esphome/components/esphome/ota/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
import logging

import esphome.codegen as cg
import esphome.config_validation as cv
import esphome.final_validate as fv
from esphome.components.ota import BASE_OTA_SCHEMA, ota_to_code, OTAComponent
from esphome.config_helpers import merge_config
from esphome.const import (
CONF_ESPHOME,
CONF_ID,
Expand All @@ -16,6 +19,8 @@
)
from esphome.core import coroutine_with_priority

_LOGGER = logging.getLogger(__name__)


CODEOWNERS = ["@esphome/core"]
AUTO_LOAD = ["md5", "socket"]
Expand All @@ -26,16 +31,62 @@


def ota_esphome_final_validate(config):
fconf = fv.full_config.get()[CONF_OTA]
used_ports = []
for ota_conf in fconf:
full_conf = fv.full_config.get()
full_ota_conf = full_conf[CONF_OTA]
new_ota_conf = []
merged_ota_esphome_configs_by_port = {}
ports_with_merged_configs = []
for ota_conf in full_ota_conf:
if ota_conf.get(CONF_PLATFORM) == CONF_ESPHOME:
if (plat_port := ota_conf.get(CONF_PORT)) not in used_ports:
used_ports.append(plat_port)
if (
conf_port := ota_conf.get(CONF_PORT)
) not in merged_ota_esphome_configs_by_port:
merged_ota_esphome_configs_by_port[conf_port] = ota_conf
else:
raise cv.Invalid(
f"Only one instance of the {CONF_ESPHOME} {CONF_OTA} {CONF_PLATFORM} is allowed per port. Note that this error may result from OTA specified in packages"
if merged_ota_esphome_configs_by_port[conf_port][
CONF_VERSION
] != ota_conf.get(CONF_VERSION):
raise cv.Invalid(
f"Found multiple configurations but {CONF_VERSION} is inconsistent"
)
if (
merged_ota_esphome_configs_by_port[conf_port][CONF_ID].is_manual
and ota_conf.get(CONF_ID).is_manual
):
raise cv.Invalid(
f"Found multiple configurations but {CONF_ID} is inconsistent"
)
if (
CONF_PASSWORD in merged_ota_esphome_configs_by_port[conf_port]
and CONF_PASSWORD in ota_conf
and merged_ota_esphome_configs_by_port[conf_port][CONF_PASSWORD]
!= ota_conf.get(CONF_PASSWORD)
):
raise cv.Invalid(
f"Found multiple configurations but {CONF_PASSWORD} is inconsistent"
)

ports_with_merged_configs.append(conf_port)
merged_ota_esphome_configs_by_port[conf_port] = merge_config(
merged_ota_esphome_configs_by_port[conf_port], ota_conf
)
else:
new_ota_conf.append(ota_conf)

for port_conf in merged_ota_esphome_configs_by_port.values():
new_ota_conf.append(port_conf)

full_conf[CONF_OTA] = new_ota_conf
fv.full_config.set(full_conf)

if len(ports_with_merged_configs) > 0:
_LOGGER.warning(
"Found and merged multiple configurations for %s %s %s port(s) %s",
CONF_OTA,
CONF_PLATFORM,
CONF_ESPHOME,
ports_with_merged_configs,
)


CONFIG_SCHEMA = (
Expand Down
5 changes: 4 additions & 1 deletion esphome/components/ledc/ledc_output.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -115,12 +115,15 @@ void LEDCOutput::write_state(float state) {
const uint32_t max_duty = (uint32_t(1) << this->bit_depth_) - 1;
const float duty_rounded = roundf(state * max_duty);
auto duty = static_cast<uint32_t>(duty_rounded);

#ifdef USE_ARDUINO
ESP_LOGV(TAG, "Setting duty: %u on channel %u", duty, this->channel_);
ledcWrite(this->channel_, duty);
#endif
#ifdef USE_ESP_IDF
// ensure that 100% on is not 99.975% on
if ((duty == max_duty) && (max_duty != 1)) {
duty = max_duty + 1;
}
auto speed_mode = get_speed_mode(channel_);
auto chan_num = static_cast<ledc_channel_t>(channel_ % 8);
int hpoint = ledc_angle_to_htop(this->phase_angle_, this->bit_depth_);
Expand Down
2 changes: 1 addition & 1 deletion esphome/const.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""Constants used by esphome."""

__version__ = "2024.6.3"
__version__ = "2024.6.4"

ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_"
VALID_SUBSTITUTIONS_CHARACTERS = (
Expand Down

0 comments on commit 7b3d674

Please sign in to comment.