mirror of
https://github.com/esphome/esphome.git
synced 2026-10-07 03:16:37 +00:00
Merge remote-tracking branch 'upstream/dev' into integration
This commit is contained in:
@@ -339,7 +339,7 @@ jobs:
|
|||||||
echo "binary=$BINARY" >> $GITHUB_OUTPUT
|
echo "binary=$BINARY" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Run CodSpeed benchmarks
|
- name: Run CodSpeed benchmarks
|
||||||
uses: CodSpeedHQ/action@281164b0f014a4e7badd2c02cecad9b595b70537 # v4
|
uses: CodSpeedHQ/action@1c8ae4843586d3ba879736b7f6b7b0c990757fab # v4
|
||||||
with:
|
with:
|
||||||
run: ${{ steps.build.outputs.binary }}
|
run: ${{ steps.build.outputs.binary }}
|
||||||
mode: simulation
|
mode: simulation
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ jobs:
|
|||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@b1bff81932f5cdfc8695c7752dcee935dcd061c8 # v4.33.0
|
uses: github/codeql-action/init@38697555549f1db7851b81482ff19f1fa5c4fedc # v4.34.1
|
||||||
with:
|
with:
|
||||||
languages: ${{ matrix.language }}
|
languages: ${{ matrix.language }}
|
||||||
build-mode: ${{ matrix.build-mode }}
|
build-mode: ${{ matrix.build-mode }}
|
||||||
@@ -86,6 +86,6 @@ jobs:
|
|||||||
exit 1
|
exit 1
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@b1bff81932f5cdfc8695c7752dcee935dcd061c8 # v4.33.0
|
uses: github/codeql-action/analyze@38697555549f1db7851b81482ff19f1fa5c4fedc # v4.34.1
|
||||||
with:
|
with:
|
||||||
category: "/language:${{matrix.language}}"
|
category: "/language:${{matrix.language}}"
|
||||||
|
|||||||
@@ -64,7 +64,11 @@ static constexpr uint32_t KEEPALIVE_DISCONNECT_TIMEOUT = (KEEPALIVE_TIMEOUT_MS *
|
|||||||
// A stalled handshake from a buggy client or network glitch holds a connection
|
// A stalled handshake from a buggy client or network glitch holds a connection
|
||||||
// slot, which can prevent legitimate clients from reconnecting. Also hardens
|
// slot, which can prevent legitimate clients from reconnecting. Also hardens
|
||||||
// against the less likely case of intentional connection slot exhaustion.
|
// against the less likely case of intentional connection slot exhaustion.
|
||||||
static constexpr uint32_t HANDSHAKE_TIMEOUT_MS = 15000;
|
//
|
||||||
|
// 60s is intentionally high: on ESP8266 with power_save_mode: LIGHT and weak
|
||||||
|
// WiFi (-70 dBm+), TCP retransmissions push real-world handshake times to
|
||||||
|
// 28-30s. See https://github.com/esphome/esphome/issues/14999
|
||||||
|
static constexpr uint32_t HANDSHAKE_TIMEOUT_MS = 60000;
|
||||||
|
|
||||||
static constexpr auto ESPHOME_VERSION_REF = StringRef::from_lit(ESPHOME_VERSION);
|
static constexpr auto ESPHOME_VERSION_REF = StringRef::from_lit(ESPHOME_VERSION);
|
||||||
|
|
||||||
|
|||||||
@@ -530,10 +530,11 @@ void LD2450Component::handle_periodic_data_() {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Store target info for zone target count
|
// Store target info for zone target count. Zero out untracked targets (td==0)
|
||||||
this->target_info_[index].x = tx;
|
// so stale coordinates don't produce ghost counts in count_targets_in_zone_().
|
||||||
this->target_info_[index].y = ty;
|
this->target_info_[index].x = (td > 0) ? tx : 0;
|
||||||
this->target_info_[index].is_moving = is_moving;
|
this->target_info_[index].y = (td > 0) ? ty : 0;
|
||||||
|
this->target_info_[index].is_moving = (td > 0) && is_moving;
|
||||||
|
|
||||||
} // End loop thru targets
|
} // End loop thru targets
|
||||||
|
|
||||||
|
|||||||
@@ -406,7 +406,7 @@ class MeterType(WidgetType):
|
|||||||
lv.scale_section_set_style(
|
lv.scale_section_set_style(
|
||||||
tvar, LV_PART.MAIN, await arc_style.get_var()
|
tvar, LV_PART.MAIN, await arc_style.get_var()
|
||||||
)
|
)
|
||||||
lw = Widget(tvar, arc_indicator_type)
|
lw = Widget.create(iid, tvar, arc_indicator_type)
|
||||||
await set_indicator_values(lw, v)
|
await set_indicator_values(lw, v)
|
||||||
|
|
||||||
if t == CONF_TICK_STYLE:
|
if t == CONF_TICK_STYLE:
|
||||||
|
|||||||
@@ -93,13 +93,23 @@ bool WiFiComponent::wifi_mode_(optional<bool> sta, optional<bool> ap) {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
bool WiFiComponent::wifi_apply_power_save_() {
|
bool WiFiComponent::wifi_apply_power_save_() {
|
||||||
|
// ESP8266 sleep types have confusing names — LIGHT_SLEEP_T is the MORE aggressive mode.
|
||||||
|
// SDK enum: NONE_SLEEP_T=0, LIGHT_SLEEP_T=1, MODEM_SLEEP_T=2
|
||||||
|
// https://github.com/esp8266/Arduino/blob/3.1.2/tools/sdk/include/user_interface.h#L447-L451
|
||||||
|
// Arduino ESP32 compat confirms: WIFI_PS_MIN_MODEM=MODEM_SLEEP, WIFI_PS_MAX_MODEM=LIGHT_SLEEP
|
||||||
|
// https://github.com/esp8266/Arduino/blob/3.1.2/libraries/ESP8266WiFi/src/ESP8266WiFiType.h#L53-L55
|
||||||
sleep_type_t power_save;
|
sleep_type_t power_save;
|
||||||
switch (this->power_save_) {
|
switch (this->power_save_) {
|
||||||
case WIFI_POWER_SAVE_LIGHT:
|
case WIFI_POWER_SAVE_LIGHT:
|
||||||
power_save = LIGHT_SLEEP_T;
|
// MODEM_SLEEP_T: only the WiFi modem sleeps between DTIM beacons, CPU stays active.
|
||||||
|
// Matches ESP32's WIFI_PS_MIN_MODEM.
|
||||||
|
power_save = MODEM_SLEEP_T;
|
||||||
break;
|
break;
|
||||||
case WIFI_POWER_SAVE_HIGH:
|
case WIFI_POWER_SAVE_HIGH:
|
||||||
power_save = MODEM_SLEEP_T;
|
// LIGHT_SLEEP_T: both WiFi modem AND CPU suspend between DTIM beacons.
|
||||||
|
// Most aggressive — prevents TCP processing during sleep. Matches ESP32's WIFI_PS_MAX_MODEM.
|
||||||
|
// See https://github.com/esphome/esphome/issues/14999
|
||||||
|
power_save = LIGHT_SLEEP_T;
|
||||||
break;
|
break;
|
||||||
case WIFI_POWER_SAVE_NONE:
|
case WIFI_POWER_SAVE_NONE:
|
||||||
default:
|
default:
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ platformio==6.1.19
|
|||||||
esptool==5.2.0
|
esptool==5.2.0
|
||||||
click==8.3.1
|
click==8.3.1
|
||||||
esphome-dashboard==20260210.0
|
esphome-dashboard==20260210.0
|
||||||
aioesphomeapi==44.6.1
|
aioesphomeapi==44.6.2
|
||||||
zeroconf==0.148.0
|
zeroconf==0.148.0
|
||||||
puremagic==1.30
|
puremagic==1.30
|
||||||
ruamel.yaml==0.19.1 # dashboard_import
|
ruamel.yaml==0.19.1 # dashboard_import
|
||||||
|
|||||||
@@ -37,7 +37,11 @@ lvgl:
|
|||||||
on_resume:
|
on_resume:
|
||||||
logger.log: LVGL has resumed
|
logger.log: LVGL has resumed
|
||||||
on_boot:
|
on_boot:
|
||||||
logger.log: LVGL has started
|
- logger.log: LVGL has started
|
||||||
|
- lvgl.indicator.update:
|
||||||
|
id: meter_arc_indicator
|
||||||
|
start_value: 0
|
||||||
|
end_value: 180
|
||||||
bg_color: light_blue
|
bg_color: light_blue
|
||||||
disp_bg_color: color_id
|
disp_bg_color: color_id
|
||||||
disp_bg_image: cat_image
|
disp_bg_image: cat_image
|
||||||
@@ -1110,6 +1114,12 @@ lvgl:
|
|||||||
color: 0xA0A0A0
|
color: 0xA0A0A0
|
||||||
length: 80%
|
length: 80%
|
||||||
opa: 0%
|
opa: 0%
|
||||||
|
- arc:
|
||||||
|
id: meter_arc_indicator
|
||||||
|
color: 0xFF0000
|
||||||
|
width: 6
|
||||||
|
start_value: 0
|
||||||
|
end_value: 360
|
||||||
- id: page3
|
- id: page3
|
||||||
layout: Horizontal
|
layout: Horizontal
|
||||||
pad_all: 6px
|
pad_all: 6px
|
||||||
|
|||||||
Reference in New Issue
Block a user