Skip to content

Commit 0a6469c

Browse files
authored
Merge branch 'next' into hosted_update
2 parents f68626c + b4acdf2 commit 0a6469c

File tree

25 files changed

+566
-227
lines changed

25 files changed

+566
-227
lines changed

all_automations.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,7 @@
287287
"remote_transmitter.transmit_dish",
288288
"remote_transmitter.transmit_dooya",
289289
"remote_transmitter.transmit_drayton",
290+
"remote_transmitter.transmit_dyson",
290291
"remote_transmitter.transmit_haier",
291292
"remote_transmitter.transmit_jvc",
292293
"remote_transmitter.transmit_keeloq",

content/automations/_index.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ params:
77
image: auto-fix.svg
88
---
99

10+
{{< anchor "automation" >}}
11+
1012
Automations are a very powerful aspect of ESPHome; they allow you to easily perform actions given some condition(s).
1113

1214
When you want your ESPHome device to respond to its environment, you use an automation. Here are some examples:

content/automations/actions.md

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -253,16 +253,18 @@ on_...:
253253
- repeat:
254254
count: 5
255255
then:
256+
- lambda: ESP_LOGI("main", "Turning lights on for iteration [%d]", iteration);
256257
- light.turn_on: some_light
257258
- delay: 1s
259+
- lambda: ESP_LOGI("main", "Turning lights off for iteration [%d]", iteration);
258260
- light.turn_off: some_light
259261
- delay: 10s
260262
```
261263

262264
#### Configuration variables
263265

264266
- **count** (**Required**, int): The number of times the action should be repeated. The counter is available to
265-
lambdas using the reserved word "iteration".
267+
lambdas using the implicit script parameter `iteration`.
266268

267269
- **then** (**Required**, [Action](#config-action)): The action to repeat.
268270

@@ -460,7 +462,21 @@ on_...:
460462

461463
- **condition** (**Required**, [condition](#config-condition)): The condition to check.
462464

463-
{{< anchor "lambda_condition" >}}
465+
### `component.is_idle` Condition
466+
467+
This condition checks if a given component is idle. A component is considered to be idle if it has completed
468+
setup, has not been marked as failed, and is not currently being called by the loop task. This is useful for
469+
synchronizing actions with the state of the component, for example, an e-paper display component that requires
470+
a significant amount of time to update the display panel.
471+
472+
```yaml
473+
on_...:
474+
then:
475+
- if:
476+
condition:
477+
component.is_idle: some_component
478+
# ...
479+
```
464480

465481
### `lambda` Condition
466482

content/changelog/2025.10.0.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,21 @@ continue working, but custom components and advanced setups may require updates.
381381

382382
</details>
383383

384+
## Release 2025.10.4 - November 4
385+
386+
<details>
387+
<summary></summary>
388+
389+
- [uart] Fix order of initialization calls [esphome#11510](https://github.com/esphome/esphome/pull/11510) by [@kbx81](https://github.com/kbx81)
390+
- Fix the LiberTiny bug with UART pin setup [esphome#11518](https://github.com/esphome/esphome/pull/11518) by [@asergunov](https://github.com/asergunov)
391+
- [mipi_rgb] Fix rotation with custom model [esphome#11585](https://github.com/esphome/esphome/pull/11585) by [@clydebarrow](https://github.com/clydebarrow) (new-feature)
392+
- [lvgl] Fix nested lambdas in automations unable to access parameters [esphome#11583](https://github.com/esphome/esphome/pull/11583) by [@bdraco](https://github.com/bdraco)
393+
- [image] Catch and report svg load errors [esphome#11619](https://github.com/esphome/esphome/pull/11619) by [@clydebarrow](https://github.com/clydebarrow)
394+
- [lvgl] Fix event for binary sensor [esphome#11636](https://github.com/esphome/esphome/pull/11636) by [@clydebarrow](https://github.com/clydebarrow)
395+
- [sdl] Fix keymappings [esphome#11635](https://github.com/esphome/esphome/pull/11635) by [@clydebarrow](https://github.com/clydebarrow)
396+
397+
</details>
398+
384399
## Full list of changes
385400

386401
### New Features

content/components/_index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ Create update entities simplifying management of OTA updates.
167167
"I²S Audio","components/i2s_audio","i2s_audio.svg",""
168168
"OpenTherm","components/opentherm","opentherm.png",""
169169
"SPI Bus","components/spi","spi.svg",""
170+
"TinyUSB","components/tinyusb","usb.svg","dark-invert"
170171
"UART","components/uart","uart.svg",""
171172
"USB Host","components/usb_host","usb.svg","dark-invert"
172173
"USB UART","components/usb_uart","usb.svg","dark-invert"

content/components/display/epaper_spi.md

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,28 +15,34 @@ better integration with ESPHome's async architecture.
1515
The communication method uses 4-wire [SPI](#spi), so you need to have an `spi:` section in your
1616
configuration.
1717

18+
The driver supports a number of displays and there are also specific configurations for ESP32 boards with integrated displays.
19+
For those boards the predefined configuration will set the correct pins and dimensions for the display.
20+
1821
```yaml
1922
display:
2023
- platform: epaper_spi
21-
cs_pin: GPIOXX
22-
dc_pin: GPIOXX
23-
busy_pin: GPIOXX
24-
reset_pin: GPIOXX
25-
model: 7.3in-spectra-e6
24+
model: Seeed-reTerminal-E1002
2625
lambda: |-
2726
it.filled_circle(it.get_width() / 2, it.get_height() / 2, 50, Color::BLACK);
2827
```
2928
30-
## Configuration variables
29+
## Supported displays
3130
32-
- **cs_pin** (**Required**, [Pin Schema](#config-pin_schema)): The CS pin.
33-
- **dc_pin** (**Required**, [Pin Schema](#config-pin_schema)): The DC pin.
34-
- **model** (**Required**): The model of the ePaper display. Currently supported:
31+
| Model name | Manufacturer | Product Description |
32+
|------------------------|--------------|------------------------------------------------------------|
33+
| Spectra-E6 | Eink | <https://www.eink.com/brand/detail/Spectra6> |
34+
| Seeed-reTerminal-E1002 | Seeed Studio | <https://www.seeedstudio.com/reTerminal-E1002-p-6533.html> |
35+
36+
## Configuration variables
3537
36-
- `7.3in-spectra-e6` - 7.3" Spectra E6 6-color display (800×480 pixels)
38+
When using a model defining an integrated ESP32 display board most of the configuration such as the pins and dimensions will be set by default,
39+
but can be overridden if needed.
3740
38-
- **busy_pin** (*Optional*, [Pin Schema](#config-pin_schema)): The BUSY pin. Defaults to not connected.
39-
- **reset_pin** (*Optional*, [Pin Schema](#config-pin_schema)): The RESET pin. Defaults to not connected.
41+
- **model** (**Required**): The model of the ePaper display. See the table above for options.
42+
- **cs_pin** (**Required**, [Pin Schema](#config-pin_schema)): The CS pin. Predefined for integrated boards.
43+
- **dc_pin** (**Required**, [Pin Schema](#config-pin_schema)): The DC pin. Predefined for integrated boards.
44+
- **busy_pin** (*Optional*, [Pin Schema](#config-pin_schema)): The BUSY pin, if used.
45+
- **reset_pin** (*Optional*, [Pin Schema](#config-pin_schema)): The RESET pin, if used.
4046
Make sure you pull this pin high (by connecting it to 3.3V with a resistor) if not connected to a GPIO pin.
4147
4248
- **rotation** (*Optional*): Set the rotation of the display. Everything you draw in `lambda:` will be rotated

content/components/display/max7219digit.md

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -75,34 +75,24 @@ display:
7575
- **chip_lines_style** (*Optional*): How are the lines in Multiline Mode connected? Possible values are `zigzag` and `snake`. Defaults to `snake`
7676
- **flip_x** (*Optional*, boolean): Flip the horizontal axis on the screen. Defaults to `false`.
7777

78-
{{< anchor "display-max7219digit_actions" >}}
79-
8078
## Actions
8179

8280
The following actions are replicas of the LAMBDA functions shown in the next section.
8381

84-
{{< anchor "display-max7219digit_actions_invert_on_off>" >}}
85-
8682
### `MAX7219.invert_on` & `MAX7219.invert_off` Action
8783

8884
This action `MAX7219.invert_on` will invert the display. So background pixels are on and texts pixels are
8985
off. `MAX7219.invert_off` sets the display back to normal. The background pixels are only set at the next update, the pixels drawn in
9086
the various function like print, line, etc. are directly influenced by the invert command.
9187

92-
{{< anchor "display-max7219digit_actions_turn_on_off" >}}
93-
9488
### `MAX7219.turn_on` & `MAX7219.turn_off` Action
9589

9690
The display can be switched on and off "dynamically" with the actions `MAX7219.turn_on` & `MAX7219.turn_off`.
9791

98-
{{< anchor "display-max7219digit_actions_reverse_off" >}}
99-
10092
## `MAX7219.reverse_on` & `MAX7219.reverse_off` Action
10193

10294
With this actions you can reverse the display direction from left to right to right to left.
10395

104-
{{< anchor "display-max7219digit_actions_intensity" >}}
105-
10696
## `MAX7219.intensity` Action
10797

10898
The intensity of the screen can be set "dynamically" within the lambda code with the following command: it.intensity(`0` .. `15` ).

content/components/display/mipi_rgb.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ display:
6666
id: my_display
6767
```
6868
69-
## Configuration variables
69+
## Configuration options
7070
7171
- **rotation** (*Optional*): Rotate the display presentation in software. Choose one of `0°`, `90°`, `180°`, or `270°`.
7272
This option cannot be used with `transform`.
@@ -135,7 +135,8 @@ Displays needing a custom init sequence require an SPI bus to be configured, plu
135135
- **invert_colors** (*Optional*): Inverts the display colors, (white becomes black.) Defaults to false.
136136
- **color_order** (*Optional*): Should be one of `bgr` (default) or `rgb`.
137137
- **transform** (*Optional*): Transform the display presentation using hardware. All defaults are `false`.
138-
This option cannot be used with `rotation`.
138+
This option should not be used with `rotation`. For the `CUSTOM` model, use `transform: disabled`
139+
if the display does not support it, which will prevent a `rotation` being translated to a hardware transform.
139140

140141
- **mirror_x** (*Optional*, boolean): If true, mirror the x-axis.
141142
- **mirror_y** (*Optional*, boolean): If true, mirror the y-axis.

content/components/display/mipi_spi.md

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ boards and chips, but the driver is also designed to be customisable in YAML for
2929
## Supported boards and driver chips
3030

3131
The driver supports a number of display driver chips, and can be configured for custom displays. As well as support for
32-
driver chips, there are also specific configurations for several ESP32 boards with integrated displays. For tbose boards
32+
driver chips, there are also specific configurations for several ESP32 boards with integrated displays. For those boards
3333
the predefined configuration will set the correct pins and dimensions for the display.
3434

3535
For custom displays, the driver can be configured with the correct pins and dimensions, and the driver chip can be
@@ -42,23 +42,23 @@ using an octal SPI bus, so references here to parallel and octal SPI are equival
4242
| ----------- | ------------------ |
4343
| RM690B0 | 320x240 |
4444
| ILI9341 | 320x240 |
45-
| ILI9481 | 320x480 |
46-
| ILI9486 | 320x480 |
47-
| ILI9488 | 320x480 |
48-
| ILI9488_A | 320x480 |
49-
| ST7796 | 320x480 |
50-
| ST7789V | 240x320 |
51-
| GC9A01A | 240x240 |
52-
| GC9D01N | 240x240 |
53-
| AXS15231 | 320x240 |
54-
| ST7735 | 128x160 |
55-
| CO5300 | 466x466 |
56-
| CUSTOM | Customisable |
45+
| ILI9481 | 320x480 |
46+
| ILI9486 | 320x480 |
47+
| ILI9488 | 320x480 |
48+
| ILI9488_A | 320x480 |
49+
| ST7796 | 320x480 |
50+
| ST7789V | 240x320 |
51+
| GC9A01A | 240x240 |
52+
| GC9D01N | 240x240 |
53+
| AXS15231 | 320x240 |
54+
| ST7735 | 128x160 |
55+
| CO5300 | 466x466 |
56+
| CUSTOM | Customisable |
5757

5858
### Boards with integrated displays
5959

6060
| Model | Manufacturer | Product Description |
61-
|--------------------------------------| ------------ | ----------------------------------------------------------------- |
61+
| ------------------------------------ | ------------ | ----------------------------------------------------------------- |
6262
| ADAFRUIT-S2-TFT-FEATHER | Adafruit | <https://www.adafruit.com/product/6312> |
6363
| ADAFRUIT-FUNHOUSE | Adafruit | <https://www.adafruit.com/product/4985> |
6464
| M5CORE | M5Stack | <https://docs.m5stack.com/en/core/BASIC%20v2.6> |
@@ -74,7 +74,7 @@ using an octal SPI bus, so references here to parallel and octal SPI are equival
7474
| JC3636W518 | Guition | <https://www.aliexpress.com/item/1005007890666293.html> |
7575
| JC3636W518V2 | Guition | <https://www.aliexpress.com/item/1005007890666293.html> |
7676
| LANBON-L8 | Lanbon | <https://www.lanbon.cn/product/lanbon-l8> |
77-
| T4-S3-AMOLED | Lilygo | <https://www.lilygo.cc/products/t4-s3> |
77+
| T4-S3 | Lilygo | <https://www.lilygo.cc/products/t4-s3> |
7878
| T-EMBED | Lilygo | <https://www.lilygo.cc/products/t-embed> |
7979
| T-DISPLAY | Lilygo | <https://www.lilygo.cc/products/t-display> |
8080
| T-DISPLAY-S3 | Lilygo | <https://www.lilygo.cc/products/t-display-s3> |
@@ -127,6 +127,8 @@ most of the configuration will be set by default, but can be overridden if neede
127127
- **invert_colors** (*Optional*, boolean): Specifies whether the display colors should be inverted. Options are `true` or `false`. Defaults to `false`.
128128
- **rotation** (*Optional*): Rotate the display presentation in software. Choose one of `0°`, `90°`, `180°`, or `270°`. If the driver chip supports hardware rotation for the given orientation this will be translated to the appropriate hardware command. If hardware rotation is not supported, the display will be rotated in software.
129129
- **transform** (*Optional*): If `rotation` is not sufficient, use this to transform the display. If this option is specified, then the `dimensions` option must also be provided. The value can either be the string `disabled` to disable hardware transform, or a dictionary. Options are:
130+
This option should not be used with `rotation`. For the `CUSTOM` model, use `transform: disabled`
131+
if the display does not support it, which will prevent a `rotation` being translated to a hardware transform.
130132

131133
- **swap_xy** (**Required**, boolean): If true, exchange the x and y axes.
132134
- **mirror_x** (**Required**, boolean): If true, mirror the x axis.

content/components/esp32.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,10 @@ esp32:
148148
- **enable_idf_experimental_features** (*Optional*, boolean): Can be set to `true` to enable experimental features. Use of
149149
experimental features may cause instability or other issues.
150150

151+
- **loop_task_stack_size** (*Optional*, int): Loop task stack size in bytes. Increase if experiencing stack overflow
152+
errors (e.g., with complex code or deep recursion). Higher values reduce heap availability. Valid range is 8192-32768
153+
bytes. Defaults to 8192 bytes.
154+
151155
**LWIP Optimization Options (ESP-IDF only):**
152156

153157
The following options are available under the `advanced` section when using the ESP-IDF framework to optimize

0 commit comments

Comments
 (0)