From f5bd6c98fb97e6e3811beaa2ab5eee0804dcf998 Mon Sep 17 00:00:00 2001 From: clydebarrow <2366188+clydebarrow@users.noreply.github.com> Date: Mon, 17 Nov 2025 09:52:26 +1100 Subject: [PATCH 1/8] [epaper_spi] Add SSD1677 and Seeed EE04 with Waveshare 4.26 --- content/components/display/epaper_spi.md | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/content/components/display/epaper_spi.md b/content/components/display/epaper_spi.md index a18ed53789..6bffa57bd8 100644 --- a/content/components/display/epaper_spi.md +++ b/content/components/display/epaper_spi.md @@ -28,10 +28,12 @@ display: ## Supported displays -| Model name | Manufacturer | Product Description | -| ---------------------- | ------------ | ---------------------------------------------------------- | -| Spectra-E6 | Eink | | -| Seeed-reTerminal-E1002 | Seeed Studio | | +| Model name | Manufacturer | Product Description | +| ---------------------- |--------------|----------------------------------------------------------------------------------------------------------------------------| +| Spectra-E6 | Eink | | +| Seeed-reTerminal-E1002 | Seeed Studio | | +| ssd1677 | Solomon | | +| seeed-ee04-mono-4.26 | Seeed Studio | Seeed EE04 board with Waveshare 4.26" mono epaper. | ## Configuration variables @@ -47,15 +49,19 @@ but can be overridden if needed. - **rotation** (*Optional*): Set the rotation of the display. Everything you draw in `lambda:` will be rotated by this option. One of `0°` (default), `90°`, `180°`, `270°`. +- **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. Options are: + - **mirror_x** (**Required**, boolean): If true, mirror the x axis. + - **mirror_y** (**Required**, boolean): If true, mirror the y axis. - **reset_duration** (*Optional*, [Time](/guides/configuration-types#time)): Duration for the display reset operation. Defaults to `200ms`. - - **lambda** (*Optional*, [lambda](/automations/templates#config-lambda)): The lambda to use for rendering the content on the display. See [Display Rendering Engine](/components/display#display-engine) for more information. - **pages** (*Optional*, list): Show pages instead of a single lambda. See [Display Pages](/components/display#display-pages). - - **update_interval** (*Optional*, [Time](/guides/configuration-types#time)): The interval to re-draw the screen. Defaults to `60s`, use `never` to only manually update the screen via `component.update`. +- **full_update_every** (*Optional*, int): On screens that support partial updates, this sets the number of updates + before a full update is forced. Defaults to `1` which will make every update a full update. - **spi_id** (*Optional*, [ID](/guides/configuration-types#id)): Manually specify the ID of the [SPI Component](/components/spi) if you want to use multiple SPI buses. - **id** (*Optional*, [ID](/guides/configuration-types#id)): Manually specify the ID used for code generation. From c3ec61a2a3d05db751cc1e5755690fe17a9b63d3 Mon Sep 17 00:00:00 2001 From: clydebarrow <2366188+clydebarrow@users.noreply.github.com> Date: Mon, 17 Nov 2025 10:39:31 +1100 Subject: [PATCH 2/8] Remove incorrect statement --- content/components/display/epaper_spi.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/content/components/display/epaper_spi.md b/content/components/display/epaper_spi.md index 6bffa57bd8..a6743c0e74 100644 --- a/content/components/display/epaper_spi.md +++ b/content/components/display/epaper_spi.md @@ -49,8 +49,7 @@ but can be overridden if needed. - **rotation** (*Optional*): Set the rotation of the display. Everything you draw in `lambda:` will be rotated by this option. One of `0°` (default), `90°`, `180°`, `270°`. -- **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. Options are: +- **transform** (*Optional*): If `rotation` is not sufficient, use this to transform the display. Options are: - **mirror_x** (**Required**, boolean): If true, mirror the x axis. - **mirror_y** (**Required**, boolean): If true, mirror the y axis. From f7cca2015a3730673dc25fa8171ea7cd5fc7c43e Mon Sep 17 00:00:00 2001 From: clydebarrow <2366188+clydebarrow@users.noreply.github.com> Date: Mon, 17 Nov 2025 13:51:15 +1100 Subject: [PATCH 3/8] indents --- content/components/display/epaper_spi.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/components/display/epaper_spi.md b/content/components/display/epaper_spi.md index a6743c0e74..f09e3d7229 100644 --- a/content/components/display/epaper_spi.md +++ b/content/components/display/epaper_spi.md @@ -50,8 +50,8 @@ but can be overridden if needed. - **rotation** (*Optional*): Set the rotation of the display. Everything you draw in `lambda:` will be rotated by this option. One of `0°` (default), `90°`, `180°`, `270°`. - **transform** (*Optional*): If `rotation` is not sufficient, use this to transform the display. Options are: - - **mirror_x** (**Required**, boolean): If true, mirror the x axis. - - **mirror_y** (**Required**, boolean): If true, mirror the y axis. + - **mirror_x** (**Required**, boolean): If true, mirror the x axis. + - **mirror_y** (**Required**, boolean): If true, mirror the y axis. - **reset_duration** (*Optional*, [Time](/guides/configuration-types#time)): Duration for the display reset operation. Defaults to `200ms`. - **lambda** (*Optional*, [lambda](/automations/templates#config-lambda)): The lambda to use for rendering the content on the display. From 42af50466eeb67613a6154af88e9a9fd2997cdb2 Mon Sep 17 00:00:00 2001 From: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com> Date: Mon, 17 Nov 2025 13:52:07 +1100 Subject: [PATCH 4/8] whitespace Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- content/components/display/epaper_spi.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/components/display/epaper_spi.md b/content/components/display/epaper_spi.md index f09e3d7229..bd661f1862 100644 --- a/content/components/display/epaper_spi.md +++ b/content/components/display/epaper_spi.md @@ -33,7 +33,7 @@ display: | Spectra-E6 | Eink | | | Seeed-reTerminal-E1002 | Seeed Studio | | | ssd1677 | Solomon | | -| seeed-ee04-mono-4.26 | Seeed Studio | Seeed EE04 board with Waveshare 4.26" mono epaper. | +| seeed-ee04-mono-4.26 | Seeed Studio | Seeed EE04 board with Waveshare 4.26" mono epaper. | ## Configuration variables From a9e5a4a953a649c5091ece5981d95fd50908381c Mon Sep 17 00:00:00 2001 From: clydebarrow <2366188+clydebarrow@users.noreply.github.com> Date: Mon, 17 Nov 2025 13:55:23 +1100 Subject: [PATCH 5/8] alphabetic case --- content/components/display/epaper_spi.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/components/display/epaper_spi.md b/content/components/display/epaper_spi.md index bd661f1862..acd62cf33e 100644 --- a/content/components/display/epaper_spi.md +++ b/content/components/display/epaper_spi.md @@ -32,15 +32,15 @@ display: | ---------------------- |--------------|----------------------------------------------------------------------------------------------------------------------------| | Spectra-E6 | Eink | | | Seeed-reTerminal-E1002 | Seeed Studio | | -| ssd1677 | Solomon | | -| seeed-ee04-mono-4.26 | Seeed Studio | Seeed EE04 board with Waveshare 4.26" mono epaper. | +| SSD1677 | Solomon | | +| Seeed-ee04-mono-4.26 | Seeed Studio | Seeed EE04 board with Waveshare 4.26" mono epaper. | ## Configuration variables 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, but can be overridden if needed. -- **model** (**Required**): The model of the ePaper display. See the table above for options. +- **model** (**Required**): The model of the ePaper display. See the table above for options (case is not significant). - **cs_pin** (**Required**, [Pin Schema](/guides/configuration-types#pin-schema)): The CS pin. Predefined for integrated boards. - **dc_pin** (**Required**, [Pin Schema](/guides/configuration-types#pin-schema)): The DC pin. Predefined for integrated boards. - **busy_pin** (*Optional*, [Pin Schema](/guides/configuration-types#pin-schema)): The BUSY pin, if used. From cc22991894b019f0b651ecccafb06829aeded69b Mon Sep 17 00:00:00 2001 From: clydebarrow <2366188+clydebarrow@users.noreply.github.com> Date: Wed, 19 Nov 2025 12:12:15 +1100 Subject: [PATCH 6/8] Add dimensions option --- content/components/display/epaper_spi.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/content/components/display/epaper_spi.md b/content/components/display/epaper_spi.md index acd62cf33e..12475481ca 100644 --- a/content/components/display/epaper_spi.md +++ b/content/components/display/epaper_spi.md @@ -12,7 +12,7 @@ with improved state management and non-blocking operation. This component implem queue-based state machine that eliminates blocking waits for the busy pin and provides better integration with ESPHome's async architecture. -The communication method uses 4-wire [SPI](/components/spi), so you need to have an `spi:` section in your +The communication method uses [SPI](/components/spi), so you need to have an `spi:` section in your configuration. The driver supports a number of displays and there are also specific configurations for ESP32 boards with integrated displays. @@ -46,10 +46,16 @@ but can be overridden if needed. - **busy_pin** (*Optional*, [Pin Schema](/guides/configuration-types#pin-schema)): The BUSY pin, if used. - **reset_pin** (*Optional*, [Pin Schema](/guides/configuration-types#pin-schema)): The RESET pin, if used. Make sure you pull this pin high (by connecting it to 3.3V with a resistor) if not connected to a GPIO pin. +- **dimensions** (**Required**, dict): Dimensions of the screen, specified either as *width* **x** *height* (e.g `320x240` ) + or with separate config keys. For models with full pre-defined configuration this is optional and will be preset by + the model selected. The dimensions are specified in pixels, and the width and height must be greater than 0. -- **rotation** (*Optional*): Set the rotation of the display. Everything you draw in `lambda:` will be rotated + - **height** (**Required**, int): Specifies height of display. + - **width** (**Required**, int): Specifies width of display. + +- **rotation** (*Optional*, int): Set the rotation of the display. Everything you draw in `lambda:` will be rotated by this option. One of `0°` (default), `90°`, `180°`, `270°`. -- **transform** (*Optional*): If `rotation` is not sufficient, use this to transform the display. Options are: +- **transform** (*Optional*, dict): If `rotation` is not sufficient, use this to transform the display. Options are: - **mirror_x** (**Required**, boolean): If true, mirror the x axis. - **mirror_y** (**Required**, boolean): If true, mirror the y axis. @@ -61,8 +67,8 @@ but can be overridden if needed. use `never` to only manually update the screen via `component.update`. - **full_update_every** (*Optional*, int): On screens that support partial updates, this sets the number of updates before a full update is forced. Defaults to `1` which will make every update a full update. -- **spi_id** (*Optional*, [ID](/guides/configuration-types#id)): Manually specify the ID of the [SPI Component](/components/spi) if you want - to use multiple SPI buses. +- **spi_id** (*Optional*, [ID](/guides/configuration-types#id)): Required to specify the ID of the [SPI Component](/components/spi) if your + configuration defines multiple SPI buses. If only a single SPI bus is configured, this is optional. - **id** (*Optional*, [ID](/guides/configuration-types#id)): Manually specify the ID used for code generation. ## See Also From e8de2f88745b47139e7e47bc3561796731f1b892 Mon Sep 17 00:00:00 2001 From: clydebarrow <2366188+clydebarrow@users.noreply.github.com> Date: Wed, 19 Nov 2025 12:14:24 +1100 Subject: [PATCH 7/8] Adjust see-also --- content/components/display/epaper_spi.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/components/display/epaper_spi.md b/content/components/display/epaper_spi.md index 12475481ca..da342900ea 100644 --- a/content/components/display/epaper_spi.md +++ b/content/components/display/epaper_spi.md @@ -73,6 +73,6 @@ but can be overridden if needed. ## See Also -- {{< docref "index/" >}} - {{< apiref "epaper_spi/epaper_spi.h" "epaper_spi/epaper_spi.h" >}} - [ESPHome Display Rendering Engine](/components/display#display-engine) +- {{< docref "components/lvgl" >}} From 09bfa14ad372e169915f8d1330565f03904fa417 Mon Sep 17 00:00:00 2001 From: clydebarrow <2366188+clydebarrow@users.noreply.github.com> Date: Wed, 19 Nov 2025 12:15:46 +1100 Subject: [PATCH 8/8] lint --- content/components/display/epaper_spi.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/components/display/epaper_spi.md b/content/components/display/epaper_spi.md index da342900ea..500109fc17 100644 --- a/content/components/display/epaper_spi.md +++ b/content/components/display/epaper_spi.md @@ -50,8 +50,8 @@ but can be overridden if needed. or with separate config keys. For models with full pre-defined configuration this is optional and will be preset by the model selected. The dimensions are specified in pixels, and the width and height must be greater than 0. - - **height** (**Required**, int): Specifies height of display. - - **width** (**Required**, int): Specifies width of display. + - **height** (**Required**, int): Specifies height of display. + - **width** (**Required**, int): Specifies width of display. - **rotation** (*Optional*, int): Set the rotation of the display. Everything you draw in `lambda:` will be rotated by this option. One of `0°` (default), `90°`, `180°`, `270°`.