mirror of
https://github.com/esphome/esphome.git
synced 2024-12-12 00:14:53 +01:00
Merge branch 'dev' into dev
This commit is contained in:
commit
25c7d0374e
17 changed files with 81 additions and 23 deletions
4
.github/actions/build-image/action.yaml
vendored
4
.github/actions/build-image/action.yaml
vendored
|
@ -46,7 +46,7 @@ runs:
|
||||||
|
|
||||||
- name: Build and push to ghcr by digest
|
- name: Build and push to ghcr by digest
|
||||||
id: build-ghcr
|
id: build-ghcr
|
||||||
uses: docker/build-push-action@v6.0.0
|
uses: docker/build-push-action@v6.0.1
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: ./docker/Dockerfile
|
file: ./docker/Dockerfile
|
||||||
|
@ -69,7 +69,7 @@ runs:
|
||||||
|
|
||||||
- name: Build and push to dockerhub by digest
|
- name: Build and push to dockerhub by digest
|
||||||
id: build-dockerhub
|
id: build-dockerhub
|
||||||
uses: docker/build-push-action@v6.0.0
|
uses: docker/build-push-action@v6.0.1
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: ./docker/Dockerfile
|
file: ./docker/Dockerfile
|
||||||
|
|
2
.github/workflows/sync-device-classes.yml
vendored
2
.github/workflows/sync-device-classes.yml
vendored
|
@ -36,7 +36,7 @@ jobs:
|
||||||
python ./script/sync-device_class.py
|
python ./script/sync-device_class.py
|
||||||
|
|
||||||
- name: Commit changes
|
- name: Commit changes
|
||||||
uses: peter-evans/create-pull-request@v6.0.5
|
uses: peter-evans/create-pull-request@v6.1.0
|
||||||
with:
|
with:
|
||||||
commit-message: "Synchronise Device Classes from Home Assistant"
|
commit-message: "Synchronise Device Classes from Home Assistant"
|
||||||
committer: esphomebot <esphome@nabucasa.com>
|
committer: esphomebot <esphome@nabucasa.com>
|
||||||
|
|
|
@ -129,13 +129,13 @@ class Cover : public EntityBase, public EntityBase_DeviceClass {
|
||||||
*
|
*
|
||||||
* This is a legacy method and may be removed later, please use `.make_call()` instead.
|
* This is a legacy method and may be removed later, please use `.make_call()` instead.
|
||||||
*/
|
*/
|
||||||
ESPDEPRECATED("open() is deprecated, use make_call().set_command_open() instead.", "2021.9")
|
ESPDEPRECATED("open() is deprecated, use make_call().set_command_open().perform() instead.", "2021.9")
|
||||||
void open();
|
void open();
|
||||||
/** Close the cover.
|
/** Close the cover.
|
||||||
*
|
*
|
||||||
* This is a legacy method and may be removed later, please use `.make_call()` instead.
|
* This is a legacy method and may be removed later, please use `.make_call()` instead.
|
||||||
*/
|
*/
|
||||||
ESPDEPRECATED("close() is deprecated, use make_call().set_command_close() instead.", "2021.9")
|
ESPDEPRECATED("close() is deprecated, use make_call().set_command_close().perform() instead.", "2021.9")
|
||||||
void close();
|
void close();
|
||||||
/** Stop the cover.
|
/** Stop the cover.
|
||||||
*
|
*
|
||||||
|
|
|
@ -12,7 +12,7 @@ std::string DebugComponent::get_reset_reason_() { return lt_get_reboot_reason_na
|
||||||
uint32_t DebugComponent::get_free_heap_() { return lt_heap_get_free(); }
|
uint32_t DebugComponent::get_free_heap_() { return lt_heap_get_free(); }
|
||||||
|
|
||||||
void DebugComponent::get_device_info_(std::string &device_info) {
|
void DebugComponent::get_device_info_(std::string &device_info) {
|
||||||
str::string reset_reason = get_reset_reason_();
|
std::string reset_reason = get_reset_reason_();
|
||||||
ESP_LOGD(TAG, "LibreTiny Version: %s", lt_get_version());
|
ESP_LOGD(TAG, "LibreTiny Version: %s", lt_get_version());
|
||||||
ESP_LOGD(TAG, "Chip: %s (%04x) @ %u MHz", lt_cpu_get_model_name(), lt_cpu_get_model(), lt_cpu_get_freq_mhz());
|
ESP_LOGD(TAG, "Chip: %s (%04x) @ %u MHz", lt_cpu_get_model_name(), lt_cpu_get_model(), lt_cpu_get_freq_mhz());
|
||||||
ESP_LOGD(TAG, "Chip ID: 0x%06X", lt_cpu_get_mac_id());
|
ESP_LOGD(TAG, "Chip ID: 0x%06X", lt_cpu_get_mac_id());
|
||||||
|
|
|
@ -19,7 +19,12 @@ IPAddress = network_ns.class_("IPAddress")
|
||||||
|
|
||||||
CONFIG_SCHEMA = cv.Schema(
|
CONFIG_SCHEMA = cv.Schema(
|
||||||
{
|
{
|
||||||
cv.SplitDefault(CONF_ENABLE_IPV6): cv.All(
|
cv.SplitDefault(
|
||||||
|
CONF_ENABLE_IPV6,
|
||||||
|
esp8266=False,
|
||||||
|
esp32=False,
|
||||||
|
rp2040=False,
|
||||||
|
): cv.All(
|
||||||
cv.boolean, cv.only_on([PLATFORM_ESP32, PLATFORM_ESP8266, PLATFORM_RP2040])
|
cv.boolean, cv.only_on([PLATFORM_ESP32, PLATFORM_ESP8266, PLATFORM_RP2040])
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_MIN_IPV6_ADDR_COUNT, default=0): cv.positive_int,
|
cv.Optional(CONF_MIN_IPV6_ADDR_COUNT, default=0): cv.positive_int,
|
||||||
|
@ -28,18 +33,17 @@ CONFIG_SCHEMA = cv.Schema(
|
||||||
|
|
||||||
|
|
||||||
async def to_code(config):
|
async def to_code(config):
|
||||||
if CONF_ENABLE_IPV6 in config:
|
if (enable_ipv6 := config.get(CONF_ENABLE_IPV6, None)) is not None:
|
||||||
cg.add_define("USE_NETWORK_IPV6", config[CONF_ENABLE_IPV6])
|
cg.add_define("USE_NETWORK_IPV6", enable_ipv6)
|
||||||
cg.add_define(
|
if enable_ipv6:
|
||||||
"USE_NETWORK_MIN_IPV6_ADDR_COUNT", config[CONF_MIN_IPV6_ADDR_COUNT]
|
cg.add_define(
|
||||||
)
|
"USE_NETWORK_MIN_IPV6_ADDR_COUNT", config[CONF_MIN_IPV6_ADDR_COUNT]
|
||||||
if CORE.using_esp_idf:
|
|
||||||
add_idf_sdkconfig_option("CONFIG_LWIP_IPV6", config[CONF_ENABLE_IPV6])
|
|
||||||
add_idf_sdkconfig_option(
|
|
||||||
"CONFIG_LWIP_IPV6_AUTOCONFIG", config[CONF_ENABLE_IPV6]
|
|
||||||
)
|
)
|
||||||
|
if CORE.using_esp_idf:
|
||||||
|
add_idf_sdkconfig_option("CONFIG_LWIP_IPV6", enable_ipv6)
|
||||||
|
add_idf_sdkconfig_option("CONFIG_LWIP_IPV6_AUTOCONFIG", enable_ipv6)
|
||||||
else:
|
else:
|
||||||
if config[CONF_ENABLE_IPV6]:
|
if enable_ipv6:
|
||||||
cg.add_build_flag("-DCONFIG_LWIP_IPV6")
|
cg.add_build_flag("-DCONFIG_LWIP_IPV6")
|
||||||
cg.add_build_flag("-DCONFIG_LWIP_IPV6_AUTOCONFIG")
|
cg.add_build_flag("-DCONFIG_LWIP_IPV6_AUTOCONFIG")
|
||||||
if CORE.is_rp2040:
|
if CORE.is_rp2040:
|
||||||
|
|
|
@ -42,6 +42,14 @@ COLOR_ORDERS = {
|
||||||
}
|
}
|
||||||
DATA_PIN_SCHEMA = pins.internal_gpio_output_pin_schema
|
DATA_PIN_SCHEMA = pins.internal_gpio_output_pin_schema
|
||||||
|
|
||||||
|
|
||||||
|
def validate_dimension(value):
|
||||||
|
value = cv.positive_int(value)
|
||||||
|
if value % 2 != 0:
|
||||||
|
raise cv.Invalid("Width/height/offset must be divisible by 2")
|
||||||
|
return value
|
||||||
|
|
||||||
|
|
||||||
CONFIG_SCHEMA = cv.All(
|
CONFIG_SCHEMA = cv.All(
|
||||||
display.FULL_DISPLAY_SCHEMA.extend(
|
display.FULL_DISPLAY_SCHEMA.extend(
|
||||||
cv.Schema(
|
cv.Schema(
|
||||||
|
@ -52,10 +60,14 @@ CONFIG_SCHEMA = cv.All(
|
||||||
cv.dimensions,
|
cv.dimensions,
|
||||||
cv.Schema(
|
cv.Schema(
|
||||||
{
|
{
|
||||||
cv.Required(CONF_WIDTH): cv.int_,
|
cv.Required(CONF_WIDTH): validate_dimension,
|
||||||
cv.Required(CONF_HEIGHT): cv.int_,
|
cv.Required(CONF_HEIGHT): validate_dimension,
|
||||||
cv.Optional(CONF_OFFSET_HEIGHT, default=0): cv.int_,
|
cv.Optional(
|
||||||
cv.Optional(CONF_OFFSET_WIDTH, default=0): cv.int_,
|
CONF_OFFSET_HEIGHT, default=0
|
||||||
|
): validate_dimension,
|
||||||
|
cv.Optional(
|
||||||
|
CONF_OFFSET_WIDTH, default=0
|
||||||
|
): validate_dimension,
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
@ -26,6 +26,19 @@ void QspiAmoLed::setup() {
|
||||||
|
|
||||||
void QspiAmoLed::update() {
|
void QspiAmoLed::update() {
|
||||||
this->do_update_();
|
this->do_update_();
|
||||||
|
// Start addresses and widths/heights must be divisible by 2 (CASET/RASET restriction in datasheet)
|
||||||
|
if (this->x_low_ % 2 == 1) {
|
||||||
|
this->x_low_--;
|
||||||
|
}
|
||||||
|
if (this->x_high_ % 2 == 0) {
|
||||||
|
this->x_high_++;
|
||||||
|
}
|
||||||
|
if (this->y_low_ % 2 == 1) {
|
||||||
|
this->y_low_--;
|
||||||
|
}
|
||||||
|
if (this->y_high_ % 2 == 0) {
|
||||||
|
this->y_high_++;
|
||||||
|
}
|
||||||
int w = this->x_high_ - this->x_low_ + 1;
|
int w = this->x_high_ - this->x_low_ + 1;
|
||||||
int h = this->y_high_ - this->y_low_ + 1;
|
int h = this->y_high_ - this->y_low_ + 1;
|
||||||
this->draw_pixels_at(this->x_low_, this->y_low_, w, h, this->buffer_, this->color_mode_, display::COLOR_BITNESS_565,
|
this->draw_pixels_at(this->x_low_, this->y_low_, w, h, this->buffer_, this->color_mode_, display::COLOR_BITNESS_565,
|
||||||
|
|
|
@ -12,7 +12,7 @@ pyserial==3.5
|
||||||
platformio==6.1.15 # When updating platformio, also update Dockerfile
|
platformio==6.1.15 # When updating platformio, also update Dockerfile
|
||||||
esptool==4.7.0
|
esptool==4.7.0
|
||||||
click==8.1.7
|
click==8.1.7
|
||||||
esphome-dashboard==20240613.0
|
esphome-dashboard==20240620.0
|
||||||
aioesphomeapi==24.3.0
|
aioesphomeapi==24.3.0
|
||||||
zeroconf==0.132.2
|
zeroconf==0.132.2
|
||||||
python-magic==0.4.27
|
python-magic==0.4.27
|
||||||
|
|
1
tests/components/debug/test.bk72xx-ard.yaml
Normal file
1
tests/components/debug/test.bk72xx-ard.yaml
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<<: !include common.yaml
|
|
@ -1,6 +1,9 @@
|
||||||
|
substitutions:
|
||||||
|
network_enable_ipv6: "false"
|
||||||
|
|
||||||
wifi:
|
wifi:
|
||||||
ssid: MySSID
|
ssid: MySSID
|
||||||
password: password1
|
password: password1
|
||||||
|
|
||||||
network:
|
network:
|
||||||
enable_ipv6: true
|
enable_ipv6: ${network_enable_ipv6}
|
||||||
|
|
4
tests/components/network/test-ipv6.esp32-ard.yaml
Normal file
4
tests/components/network/test-ipv6.esp32-ard.yaml
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
substitutions:
|
||||||
|
network_enable_ipv6: "true"
|
||||||
|
|
||||||
|
<<: !include common.yaml
|
4
tests/components/network/test-ipv6.esp32-c3-ard.yaml
Normal file
4
tests/components/network/test-ipv6.esp32-c3-ard.yaml
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
substitutions:
|
||||||
|
network_enable_ipv6: "true"
|
||||||
|
|
||||||
|
<<: !include common.yaml
|
4
tests/components/network/test-ipv6.esp32-c3-idf.yaml
Normal file
4
tests/components/network/test-ipv6.esp32-c3-idf.yaml
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
substitutions:
|
||||||
|
network_enable_ipv6: "true"
|
||||||
|
|
||||||
|
<<: !include common.yaml
|
4
tests/components/network/test-ipv6.esp32-idf.yaml
Normal file
4
tests/components/network/test-ipv6.esp32-idf.yaml
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
substitutions:
|
||||||
|
network_enable_ipv6: "true"
|
||||||
|
|
||||||
|
<<: !include common.yaml
|
4
tests/components/network/test-ipv6.esp8266-ard.yaml
Normal file
4
tests/components/network/test-ipv6.esp8266-ard.yaml
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
substitutions:
|
||||||
|
network_enable_ipv6: "true"
|
||||||
|
|
||||||
|
<<: !include common.yaml
|
4
tests/components/network/test-ipv6.rp2040-ard.yaml
Normal file
4
tests/components/network/test-ipv6.rp2040-ard.yaml
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
substitutions:
|
||||||
|
network_enable_ipv6: "true"
|
||||||
|
|
||||||
|
<<: !include common.yaml
|
1
tests/components/network/test.host.yaml
Normal file
1
tests/components/network/test.host.yaml
Normal file
|
@ -0,0 +1 @@
|
||||||
|
network:
|
Loading…
Reference in a new issue