Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
a7fd624
Bump version to 2025.8.0-dev
jesserockz Jul 9, 2025
980d027
Break apart 1-Wire doc (#5082)
kbx81 Jul 9, 2025
6a40905
Merge branch 'beta' into next
jesserockz Jul 9, 2025
b6b71f1
Adding Wave Gen2 documentation (#4781)
precurse Jul 10, 2025
5cfc97a
Fix filename for lps22 image - should be avif, not jpg (#5088)
clydebarrow Jul 12, 2025
e070032
Merge branch 'beta' into next
jesserockz Jul 13, 2025
7b48400
Merge branch 'beta' into next
jesserockz Jul 14, 2025
67409ea
[online_image] Document byte_order (#5101)
clydebarrow Jul 15, 2025
88f3d67
Merge branch 'current' into next
jesserockz Jul 15, 2025
fceebb8
Merge branch 'beta' into next
jesserockz Jul 15, 2025
5778528
Merge branch 'beta' into next
jesserockz Jul 15, 2025
e538c53
nrf52 core based on zephyr (#4111)
tomaszduda23 Jul 16, 2025
ad2de30
[adc] Use new library with ESP-IDF v5 (#4502)
edwardtfn Jul 16, 2025
a0cf014
[mipi_spi] Document new options (#5076)
clydebarrow Jul 16, 2025
02719c9
Add runtime_stats component for performance debugging and analysis (#…
bdraco Jul 16, 2025
1278195
Specify that python 3.11 is required (#5107)
jesserockz Jul 16, 2025
e565826
Document custom_services configuration option for API component (#5091)
bdraco Jul 16, 2025
b028743
Merge branch 'current' into next
jesserockz Jul 16, 2025
950a7ca
[adc] Add ESP32-C5 support (#5097)
edwardtfn Jul 16, 2025
08f04c2
Document web_server ota: false option for disabling OTA while keeping…
bdraco Jul 17, 2025
9673d30
Merge branch 'current' into next
jesserockz Jul 17, 2025
00cd6b8
Merge branch 'current' into next
jesserockz Jul 17, 2025
068ff91
Merge branch 'current' into next
jesserockz Jul 17, 2025
22b81d9
Merge branch 'current' into next
jesserockz Jul 17, 2025
27d7c9c
Merge branch 'current' into next
jesserockz Jul 17, 2025
2c2cd67
Merge branch 'current' into next
jesserockz Jul 17, 2025
af36ab5
[esp32] Document automatic board config (#5084)
clydebarrow Jul 18, 2025
63e8d97
esp32_cam: add location option documentation (#5129)
RubenKelevra Jul 18, 2025
bf08a02
[gpio] Document LibreTiny interrupt mode default behavior (#5132)
bdraco Jul 18, 2025
2404e75
Merge branch 'current' into next
jesserockz Jul 19, 2025
51de99b
Schema 2025 5b (#4922)
glmnet Jul 20, 2025
060ce26
[gpio] Update binary sensor docs for allow_other_uses interrupt handl…
bdraco Jul 22, 2025
6688206
Merge branch 'current' into next
jesserockz Jul 22, 2025
1dd23b2
Merge branch 'current' into next
jesserockz Jul 22, 2025
661f5cf
[remote_receiver] Fix idle time for newer ESP32 variants (#5144)
swoboda1337 Jul 23, 2025
762874e
[factory_reset] Document power cycle reset (#5148)
clydebarrow Jul 24, 2025
a9f3ba2
esp32_camera: Remove remaining references to i2c_pins-option from exa…
RubenKelevra Jul 24, 2025
8704c9b
[mipi_spi] Docs for display driver (#5171)
clydebarrow Jul 25, 2025
a81799e
[api] Document homeassistant_states option (#5177)
bdraco Jul 26, 2025
9cc96b1
[wifi] Document `use_psram` option (#5170)
clydebarrow Jul 26, 2025
fdea232
Merge branch 'current' into next
jesserockz Jul 28, 2025
b7b8298
[api] Add homeassistant_services configuration option (#5178)
bdraco Jul 28, 2025
546a305
Merge branch 'current' into next
jesserockz Jul 28, 2025
db5af69
[output] Add `set_min_power` & `set_max_power` actions for `FloatOutp…
DjordjeMandic Jul 29, 2025
8b1c1fd
[adc] Add P4 (#5185)
clydebarrow Jul 29, 2025
4a7e3dc
[filters] Add `throttle_with_priority` (#5186)
kbx81 Jul 30, 2025
a38078d
[esp32] Document LWIP core locking options for improved socket perfor…
bdraco Jul 30, 2025
d4e4915
media_player add off on capability (#5059)
rwrozelle Jul 30, 2025
66b5032
[wifi] Add details to use fast_connect with multiple networks (#5184)
GilDev Jul 31, 2025
33e626a
[image] Update schema docs (#5156)
clydebarrow Aug 1, 2025
a91c4cc
adc pins for nrf52 (#5164)
tomaszduda23 Aug 1, 2025
f16f003
Add documentation for the new espnow component (#4086)
nielsnl68 Aug 1, 2025
2662d24
[esp32] Add option to enable execution from PSRAM (#5180)
clydebarrow Aug 1, 2025
075c777
Add ESP32 Arduino to ESP-IDF migration guide (#5200)
bdraco Aug 4, 2025
6648d09
[esp32_ble] Document connection_timeout configuration option (#5196)
bdraco Aug 4, 2025
3941166
added CO5300 AMOLED driver (#5146)
mschnaubelt Aug 4, 2025
5f25605
Merge branch 'current' into next
jesserockz Aug 5, 2025
bc49b76
Merge branch 'current' into next
jesserockz Aug 5, 2025
5a5b252
[remote_transmitter] Add digital_write automation (#5203)
swoboda1337 Aug 5, 2025
7f567e0
Document multiple device address support in CLI commands (#5192)
bdraco Aug 5, 2025
987e935
Fix delta docs (#5147)
swoboda1337 Aug 5, 2025
5688515
Update espnow documentation (#5207)
nielsnl68 Aug 5, 2025
d20e3f7
Document max_notifications configuration option for esp32_ble compone…
bdraco Aug 6, 2025
4f5cdb6
[ld2410] Update docs for removal of ``throttle``, other clean-up (#5…
kbx81 Aug 6, 2025
07a1fc5
Document esp32_ble advertising configuration option (#5209)
bdraco Aug 7, 2025
aee35fa
[switch] Add `switch.control` automation action (#5211)
edwardtfn Aug 7, 2025
31643a1
[lvgl] Update lambda color usage (#5197)
clydebarrow Aug 8, 2025
3a8ee09
[switch] Add trigger `on_state` (#5212)
edwardtfn Aug 9, 2025
44ff89d
Add log_level docs (#5219)
swoboda1337 Aug 10, 2025
9d46b8c
[sensor] Extend timeout filter with option to return last value recei…
kbx81 Aug 11, 2025
7707750
[substitutions] Add some safe built-in functions to jinja parsing (#5…
jesserockz Aug 11, 2025
bc819c7
[ld2410] Fix typo (#5227)
kbx81 Aug 12, 2025
84e3823
[ld2412] New component docs (#5071)
Rihan9 Aug 12, 2025
4bb9937
[ld2410, ld2412] Formatting tweaks, fix typo (#5228)
kbx81 Aug 12, 2025
d013b89
[ld2450] Update docs for removal of ``throttle`` (#5226)
kbx81 Aug 13, 2025
a745877
Merge branch 'current' into next
jesserockz Aug 13, 2025
17f7eb1
Bump version to 2025.9.0-dev
jesserockz Aug 13, 2025
9aa45ed
Bump version to 2025.8.0b1
jesserockz Aug 13, 2025
3328a16
Update changelog for 2025.8.0b1
jesserockz Aug 13, 2025
0d94e65
Update supporters for 2025.8.0b1
jesserockz Aug 13, 2025
16f246a
Add summary
jesserockz Aug 13, 2025
b415fa6
Fix PR titles
jesserockz Aug 13, 2025
1bbf2ec
fix one more
jesserockz Aug 13, 2025
e1c83fb
Another one, just like the other one
jesserockz Aug 13, 2025
ce7aa47
Fix typos, remove duplicate config var (#5236)
kbx81 Aug 13, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
ESPHOME_PATH = ../esphome
ESPHOME_REF = 2025.7.5
ESPHOME_REF = 2025.8.0b1
PAGEFIND_VERSION=1.1.1
PAGEFIND=pagefind
NET_PAGEFIND=../pagefindbin/pagefind
Expand Down
Binary file added _static/changelog-2025.8.0.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion _static/version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2025.7.5
2025.8.0b1
660 changes: 660 additions & 0 deletions changelog/2025.8.0.rst

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion changelog/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ Changelog
=========

.. redirect::
:url: /changelog/2025.7.0.html
:url: /changelog/2025.8.0.html

.. toctree::
:glob:
Expand Down
2 changes: 2 additions & 0 deletions components/api.rst
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,8 @@ Configuration variables:
WiFi performance with many rapidly-changing sensors. Only use this setting when necessary.

- **custom_services** (*Optional*, boolean): Enable compilation of custom API services for external components that use the C++ ``CustomAPIDevice`` class. Only needed when external components register their own services via the native API. Defaults to ``false``.
- **homeassistant_services** (*Optional*, boolean): Enable compilation of Home Assistant service call support for external components that use the C++ ``CustomAPIDevice::call_homeassistant_service()`` or ``CustomAPIDevice::fire_homeassistant_event()`` methods. This is automatically enabled when using ``homeassistant.service`` or ``homeassistant.event`` actions, or the ``homeassistant`` platform for number or switch components. Only needs to be manually set when external components call Home Assistant services without using the built-in actions. Defaults to ``false``.
- **homeassistant_states** (*Optional*, boolean): Enable compilation of Home Assistant state subscription support for external components that use the C++ ``CustomAPIDevice::subscribe_homeassistant_state()`` method. This is automatically enabled when using any ``homeassistant`` platform components (sensor, binary_sensor, text_sensor, switch, or number). Only needs to be manually set when external components subscribe to Home Assistant states without using the built-in components. Defaults to ``false``.
- **reboot_timeout** (*Optional*, :ref:`config-time`): The amount of time to wait before rebooting when no
client connects to the API. This is needed because sometimes the low level ESP functions report that
the ESP is connected to the network, when in fact it is not - only a full reboot fixes it.
Expand Down
4 changes: 2 additions & 2 deletions components/binary_sensor/packet_transport.rst
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ It requires a ``packet_transport`` component to be configured.
- platform: ...


Configuration variables
-----------------------
Configuration variables:
------------------------

- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **provider** (**Required**, string): The name of the provider node.
Expand Down
1 change: 1 addition & 0 deletions components/button/factory_reset.rst
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ Configuration variables:
See Also
--------

- :doc:`/components/factory_reset`
- :doc:`shutdown`
- :doc:`restart`
- :doc:`safe_mode`
Expand Down
5 changes: 5 additions & 0 deletions components/display/ili9xxx.rst
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,11 @@ ILI9341 (`datasheet <https://cdn-shop.adafruit.com/datasheets/ILI9341.pdf>`__) a
displays from the same chip family with ESPHome. As this is a somewhat higher resolution display and requires additional pins
beyond the basic SPI connections, and a reasonable amount of RAM, it is not well suited for the ESP8266.

.. warning::

This component has been made redundant since this class of displays is now supported by the :ref:`mipi_spi`.
This component may be removed in a future release.

.. note::

PSRAM is not automatically enabled on the ESP32 (this changed with the 2025.2 release.) If PSRAM is available, you
Expand Down
178 changes: 178 additions & 0 deletions components/display/mipi_dsi.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
.. seo::
:description: Details for the MIPI DSI display driver component in ESPHome
:image: tab5.jpg

.. _mipi_dsi:

MIPI DSI Display Driver
=======================

Introduction
------------

This driver is for displays that use the MIPI DSI display interface available in the ESP32-P4.

.. figure:: /images/tab5.jpg
:align: center
:width: 75.0%

M5STACK-TAB5 with ESP32-P4

Background
----------

The MIPI (Mobile Industry Processor Interface) Alliance publishes various hardware and software interface specifications
including the Display Serial Interface (DSI), which transfers pixel data over a high-speed serial bus to an LCD display.

The display panels controlled by the driver may be of various types, including TFT, IPS, and others. Each driver
chip and panel combination requires a specific set of initialisation commands, and standard initialisation sequences are provided for many common
boards and chips, but the driver is also designed to be customisable in YAML for other displays.

Supported boards and driver chips
---------------------------------

There are specific configurations for several ESP32 boards with integrated displays. For those boards
the predefined configuration will set the correct pins and dimensions for the display.

For custom displays, the driver can be configured with the correct pins and dimensions, and the driver chip can be
specified, or a custom init sequence can be provided.

Driver chips
^^^^^^^^^^^^

.. csv-table::
:header: "Driver Chip", "Typical Dimensions"
:widths: 15, 20

"CUSTOM", "Customisable"

Boards with integrated displays
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. csv-table::
:header: "Model", "Manufacturer", "Product Description"
:widths: 30, 20, 30

"JC1060P470", "Guition", "https://aliexpress.com/item/1005008328088576.html"
"M5STACK-TAB5", "M5Stack", "https://shop.m5stack.com/products/m5stack-tab5-iot-development-kit-esp32-p4"
"WAVESHARE-P4-NANO-10.1", "Waveshare", "https://www.waveshare.com/esp32-p4-nano.htm?sku=29031"
"WAVESHARE-P4-86-PANEL", "Waveshare", "https://www.waveshare.com/esp32-p4-wifi6-touch-lcd-4b.htm?sku=31570"


Configuration
-------------

.. code-block:: yaml

# Example minimal configuration entry
display:
- platform: mipi_dsi
model: WAVESHARE-P4-NANO-10.1

Configuration options
^^^^^^^^^^^^^^^^^^^^^

All :ref:`graphical display configuration<display-configuration>` options are available, plus the following. For integrated display boards
most of the configuration will be set by default, but can be overridden if needed.

- **model** (**Required**): Chosen from the lists of supported chips and models above, or ``CUSTOM`` for custom displays.
- **reset_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The RESET pin, if required.
- **enable_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): An optional pin to enable the display, if required. A list of pins can be provided for displays that require multiple enable pins. A full pin configuration may be provided
to set the pin mode and inverted property. By default the pin will be driven high to enable the display.
- **color_order** (*Optional*): Should be one of ``bgr`` (default) or ``rgb``. This specifies the order of the color channels in the display panel. The default is ``bgr`` for most displays, but some displays may require ``rgb``. It does not affect the color order of the display buffer, which is always RGB.
- **dimensions** (*Optional*): Dimensions of the screen, specified either as *width* **x** *height* (e.g ``320x240``) or with separate config keys. If not provided the dimensions will be determined by the model selected. This is required for the ``CUSTOM`` model, and is optional for other models. The dimensions are specified in pixels, and the width and height must be greater than 0. The following keys are available:

- **height** (**Required**, int): Specifies height of display in pixels.
- **width** (**Required**, int): Specifies width of display.
- **offset_width** (*Optional*, int): Specify an offset for the x-direction of the display, typically used when an LCD is smaller than the maximum supported by the driver chip. Default is 0
- **offset_height** (*Optional*, int): Specify an offset for the y-direction of the display. Default is 0.

- **invert_colors** (*Optional*, boolean): Specifies whether the display colors should be inverted. Options are ``true`` or ``false``. Defaults to ``false``.
- **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.
- **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:

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

- **hsync_pulse_width** (*Optional*, int): The horizontal sync pulse width.
- **hsync_front_porch** (*Optional*, int): The horizontal front porch length.
- **hsync_back_porch** (*Optional*, int): The horizontal back porch length.
- **vsync_pulse_width** (*Optional*, int): The vertical sync pulse width.
- **vsync_front_porch** (*Optional*, int): The vertical front porch length.
- **vsync_back_porch** (*Optional*, int): The vertical back porch length.
- **pclk_frequency** (*Optional*): Set the pixel clock speed. Default is 40MHz.
- **pclk_inverted** (*Optional*, bool): If the pclk is active negative (default is True)
- **lanes** (*Optional*, int): Number of serial data lanes to use - 1 or 2. Default is 2.
- **lane_bit_rate** (*Optional*, int): The bit rate of the serial data lanes. No default unless a non-custom model is selected.

Advanced options
^^^^^^^^^^^^^^^^

- **init_sequence** (*Optional*): Allows custom initialisation sequences to be added. See below for more information.
- **pixel_mode** (*Optional*): Select the interface mode for the display driver. Options are ``16bit`` (default) and ``24bit``.
- **color_depth** (*Optional*): The color depth of the display buffer, expressed in bits. Options are ``16`` (default) and ``24``. Preferably should be the same as the ``pixel_mode`` option.
- **draw_rounding** (*Optional*): The rounding factor for drawing operations. Defaults to 2. Some chips require a higher value to avoid display artifacts. Must be a power of 2.
- **use_axis_flips** (*Optional*): If true, the driver will use alternate bits in the MADCTL register to implement x and y mirroring. Defaults to false.
- **byte_order** (*Optional*): The byte order of the display buffer. Options are ``big_endian`` and ``little_endian`` (default). This affects the byte order for the buffer when
using 16 bit color depth. The default is appropriate for the majority of displays.


Additional initialisation sequences
-----------------------------------

The ``init_sequence`` option allows additional configuration of the driver chip. Provided commands will be sent to the
driver chip in addition to, and after the chosen model's pre-defined commands. It requires a list of byte sequences:

.. code-block:: yaml

init_sequence:
- [ 0xD0, 0x07, 0x42, 0x18]
- delay 10ms
- [ 0xD1, 0x00, 0x07, 0x10]

Each entry represents a single-byte command followed by zero or more data bytes. Delays can be inserted with the ``delay`` keyword followed by a time in milliseconds. The delay is not precise, but will be at least the specified time.
If converting from other code, make sure the length byte, if present, is not copied as the length of each command sequence is determined by the number of bytes in the list.

CUSTOM model
------------

The ``CUSTOM`` model selection is provided for otherwise unsupported displays, and requires both ``dimensions:`` and ``init_sequence:`` to be specified. There is no pre-defined init sequence.

Using the ``transform`` options
-------------------------------

In most cases, the ``rotation`` option will be sufficient to orient the display correctly. However, some displays may require additional transformations. The ``transform`` option allows for these transformations to be applied in any of 8 different
combinations. It may be necessary to experiment with different combinations to achieve the desired result. When using the ``transform`` option, the ``rotation`` option should not be set unless the display does not support axis-swapping.
If the ``swap_xy`` option is set, then the ``dimensions`` option is required, and the ``width`` and ``height`` values should be set to reflect the final screen dimensions after rotation.

.. code-block:: yaml

transform:
swap_xy: true
mirror_x: true
mirror_y: false
dimensions:
height: 480
width: 320


LCD Backlights
--------------

Many displays have an integrated backlight, which may need to be turned on for the display to show. This backlight is not controlled
by the driver, but can be controlled by a separate GPIO pin. Depending on the display, the backlight may be active high or active low, and may
be able to be dimmed using a :doc:`/components/light/monochromatic` with a :doc:`/components/output/ledc`.

Touchscreens
------------

A touchscreen, if present, must be configured separately. See the :doc:`/components/touchscreen/index` documentation for more information.

See Also
--------

- :doc:`index`
- :doc:`/components/lvgl/index`
- :apiref:`mipi_dsi/mipi_dsi.h`
- :ghedit:`Edit`
Loading