Skip to content

Commit e706027

Browse files
authored
Merge branch 'next' into pasco2
2 parents 6c4ad94 + 0a0f2e3 commit e706027

File tree

25 files changed

+268
-304
lines changed

25 files changed

+268
-304
lines changed

Makefile

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ check-links: anchors
2727
anchors: repo-data
2828
$(PAGEFIND) -s pagefind-bootstrap
2929
hugo --environment anchors
30-
python3 script/md_anchors.py
3130

3231
repo-data: directories
3332
mkdir -p data/automations
@@ -54,7 +53,6 @@ convert-branch-in-place:
5453
netlify: repo-data
5554
$(PAGEFIND) -s pagefind-bootstrap
5655
hugo --environment anchors
57-
python3 script/md_anchors.py
5856
hugo --minify
5957
$(PAGEFIND)
6058
# rerun hugo to incorporate generated index

content/changelog/2025.10.0.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ If you manage multiple devices, the dashboard will feel noticeably faster and mo
159159

160160
## Device Onboarding Improvements
161161

162-
Getting your ESPHome devices online has never been easier. This release brings major improvements to the initial setup experience, particularly for ESP32-IDF devices and the [Made for ESPHome](https://esphome.io/guides/made_for_esphome/) program.
162+
Getting your ESPHome devices online has never been easier. This release brings major improvements to the initial setup experience, particularly for ESP32-IDF devices and the [Made for ESPHome](/guides/made_for_esphome/) program.
163163

164164
### Captive Portal for ESP-IDF
165165

@@ -179,9 +179,9 @@ This brings ESP-IDF up to feature parity with Arduino for onboarding, and since
179179

180180
**Why passive scanning matters:** Many home automation systems and BLE scanners only support passive scanning (not active scanning). Making the device name visible to passive scanners means your devices show up in more scanning apps and are easier to identify during setup.
181181

182-
These improvements directly support the [Made for ESPHome program](https://esphome.io/guides/made_for_esphome/), which requires Improv provisioning via BLE for Wi-Fi projects to ensure a consistent, high-quality setup experience across all ESPHome-compatible products.
182+
These improvements directly support the [Made for ESPHome program](/guides/made_for_esphome/), which requires Improv provisioning via BLE for Wi-Fi projects to ensure a consistent, high-quality setup experience across all ESPHome-compatible products.
183183

184-
The Made for ESPHome program requires Improv BLE provisioning for Wi-Fi projects. See the [certification requirements](https://esphome.io/guides/made_for_esphome/) for details.
184+
The Made for ESPHome program requires Improv BLE provisioning for Wi-Fi projects. See the [certification requirements](/guides/made_for_esphome/) for details.
185185

186186
## Home Assistant Action Responses
187187

content/changelog/2025.11.0.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -142,13 +142,13 @@ Added `ignore_not_found` option (default `true`) to allow disabling `CONFIG_SPIR
142142

143143
**7 New Sensor/Device Components:**
144144

145-
- [HDC2010](https://esphome.io/components/sensor/hdc2010.html) ([#6674](https://github.com/esphome/esphome/pull/6674)) - Texas Instruments temperature and humidity sensor
146-
- [MCP3221](https://esphome.io/components/sensor/mcp3221.html) ([#7764](https://github.com/esphome/esphome/pull/7764)) - I2C A-D converter with configurable reference voltage
147-
- [HLK-FM22X](https://esphome.io/components/hlk_fm22x.html) ([#8059](https://github.com/esphome/esphome/pull/8059)) - Face recognition module family
148-
- [BH1900NUX](https://esphome.io/components/sensor/bh1900nux.html) ([#8631](https://github.com/esphome/esphome/pull/8631)) - Rohm Semiconductor temperature sensor
149-
- [RX8130](https://esphome.io/components/time/rx8130.html) ([#10511](https://github.com/esphome/esphome/pull/10511)) - Epson RTC chip (used in M5Stack devices)
150-
- [BLE NUS Logger](https://esphome.io/components/logger.html#ble-logging) ([#9846](https://github.com/esphome/esphome/pull/9846)) - Logging over BLE for nRF52 platform
151-
- [TinyUSB](https://esphome.io/components/tinyusb.html) ([#11678](https://github.com/esphome/esphome/pull/11678)) - USB device functionality foundation for ESP32-S2/S3
145+
- [HDC2010](/components/sensor/hdc2010) ([#6674](https://github.com/esphome/esphome/pull/6674)) - Texas Instruments temperature and humidity sensor
146+
- [MCP3221](/components/sensor/mcp3221) ([#7764](https://github.com/esphome/esphome/pull/7764)) - I2C A-D converter with configurable reference voltage
147+
- [HLK-FM22X](/components/hlk_fm22x) ([#8059](https://github.com/esphome/esphome/pull/8059)) - Face recognition module family
148+
- [BH1900NUX](/components/sensor/bh1900nux) ([#8631](https://github.com/esphome/esphome/pull/8631)) - Rohm Semiconductor temperature sensor
149+
- [RX8130](/components/time/rx8130) ([#10511](https://github.com/esphome/esphome/pull/10511)) - Epson RTC chip (used in M5Stack devices)
150+
- [BLE NUS Logger](/components/ble_nus) ([#9846](https://github.com/esphome/esphome/pull/9846)) - Logging over BLE for nRF52 platform
151+
- [TinyUSB](/components/tinyusb) ([#11678](https://github.com/esphome/esphome/pull/11678)) - USB device functionality foundation for ESP32-S2/S3
152152

153153
**Extended Hardware Support:**
154154

content/components/climate/thermostat.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -301,13 +301,13 @@ These should be used to control the fan only, if available.
301301
These are triggered when the humidity control action is changed by the thermostat controller. It can trigger actions
302302
to activate humidification **or** dehumidification.
303303

304-
- **humidity_control_dehumidify_action** (*Optional*, [Action](#config-action)): The action to call when
304+
- **humidity_control_dehumidify_action** (*Optional*, [Action](/automations/actions#config-action)): The action to call when
305305
dehumidification is required.
306306

307-
- **humidity_control_humidify_action** (*Optional*, [Action](#config-action)): The action to call when
307+
- **humidity_control_humidify_action** (*Optional*, [Action](/automations/actions#config-action)): The action to call when
308308
humidification is required.
309309

310-
- **humidity_control_off_action** (*Optional*, [Action](#config-action)): The action to call when
310+
- **humidity_control_off_action** (*Optional*, [Action](/automations/actions#config-action)): The action to call when
311311
(de)humidification should stop. This action is **required** when either of the above actions are configured.
312312

313313
## Advanced Configuration/Behavior
@@ -562,7 +562,7 @@ the range of allowed temperature values in the thermostat component. See {{< doc
562562
before calling the idle [action](/automations/actions#all-actions). Defaults to 0.5 °C.
563563

564564
- **humidity_hysteresis** (*Optional*, float): The maximum humidity differential (above/below the set point)
565-
before calling the respective humidity control [action](#config-action). Defaults to 1%.
565+
before calling the respective humidity control [action](/automations/actions#config-action). Defaults to 1%.
566566

567567
> [!NOTE]
568568
>

content/components/i2c.md

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@ params:
1010
{{< anchor "i2c" >}}
1111

1212
This component sets up the I²C bus for your ESP32, ESP8266, RP2040 or NRF52. In order for these components
13-
to work correctly, you need to define the I²C bus in your configuration. Please note the ESP
14-
will enable its internal 10kΩ pullup resistors for these pins, so you usually don't need to
15-
put on external ones. You can use multiple devices on one I²C bus as each device is given a
13+
to work correctly, you need to define the I²C bus in your configuration. On ESP32 (both Arduino and ESP-IDF
14+
frameworks), internal pullup resistors are enabled by default. On ESP8266, the internal 10kΩ pullup resistors
15+
are always enabled. External pullups are still recommended for longer wire runs or multiple devices.
16+
You can use multiple devices on one I²C bus as each device is given a
1617
unique address for communicating between it and the ESP. You can do this by hopping
1718
wires from the two lines (SDA and SCL) from each device board to the next device board or by
1819
connecting the wires from each device back to the two I²C pins on the ESP.
@@ -43,8 +44,14 @@ i2c:
4344
NRF52 supports only `100kHz` and `400kHz`.
4445

4546
- **timeout** (*Optional*, [Time](/guides/configuration-types#time)): Set the I²C bus timeout.
46-
Defaults to the framework defaults (`100us` on `esp32` with `esp-idf`, `50ms` on `esp32` with `Arduino`,
47-
`1s` on `esp8266` and `1s` on `rp2040` ). Maximum on `esp-idf` is 13ms.
47+
Defaults to the framework defaults (`100us` on `esp32`, `1s` on `esp8266` and `1s` on `rp2040`).
48+
Maximum on `esp32` is 13ms.
49+
50+
- **sda_pullup_enabled** (*Optional*, boolean): Enable the internal pullup resistor for the SDA pin.
51+
Defaults to `true`. Only available on ESP32.
52+
53+
- **scl_pullup_enabled** (*Optional*, boolean): Enable the internal pullup resistor for the SCL pin.
54+
Defaults to `true`. Only available on ESP32.
4855

4956
- **id** (*Optional*, [ID](/guides/configuration-types#id)): Manually specify the ID for this I²C bus if you need multiple I²C buses.
5057

content/components/lvgl/_index.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -147,15 +147,15 @@ The following configuration variables apply to the main `lvgl` component, in ord
147147
- **widgets** (*Optional*, list): A list of {{< docref "/components/lvgl/widgets" >}} to be drawn on the root display. May not be used if `pages` (below) is configured.
148148
- **pages** (*Optional*, list): A list of page IDs. Each page acts as a parent for widgets placed on it. May not be used with `widgets` (above). Options for each page:
149149
- **skip** (*Optional*, boolean): Option to skip this page when navigating between them with [`lvgl.page.next`, `lvgl.page.previous`](#lvgl-page-next-previous-action).
150-
- **layout** (*Optional*): See [Layouts](#lvgl-layouts) for details. Defaults to `NONE`.
150+
- **layout** (*Optional*): See [Layouts](/components/lvgl/layouts#lvgl-layouts) for details. Defaults to `NONE`.
151151
- **widgets** (*Optional*, list): A list of {{< docref "/components/lvgl/widgets" >}} to be drawn on the page.
152152
- All other options from [Style properties](#lvgl-styling) to be applied to this page.
153153
- **page_wrap** (*Optional*, boolean): Wrap from the last to the first page when navigating between them with [`lvgl.page.next`, `lvgl.page.previous`](#lvgl-page-next-previous-action). Defaults to `true`.
154154
- **top_layer** (*Optional*, list): A special kind of *Always on Top* page, which acts as a parent for widgets placed on it. It's shown above all the pages, which may be useful for widgets which always need to be visible.
155-
- **layout** (*Optional*): See [Layouts](#lvgl-layouts) for details. Defaults to `NONE`.
155+
- **layout** (*Optional*): See [Layouts](/components/lvgl/layouts#lvgl-layouts) for details. Defaults to `NONE`.
156156
- **widgets** (*Optional*, list): A list of {{< docref "/components/lvgl/widgets" >}} to be drawn on the page.
157157
- All other options from [Style properties](#lvgl-styling) to be applied to this page.
158-
- **layout** (*Optional*): See [Layouts](#lvgl-layouts) for details. Defaults to `NONE`.
158+
- **layout** (*Optional*): See [Layouts](/components/lvgl/layouts#lvgl-layouts) for details. Defaults to `NONE`.
159159
- All other options from [Style properties](#lvgl-styling) to be applied to all widgets directly.
160160

161161
**Example:**
@@ -832,11 +832,11 @@ This [trigger](/components/lvgl/widgets#lvgl-automation-triggers) is triggered a
832832

833833
### `on_draw_start`
834834

835-
This [trigger](#lvgl-automation-triggers) is executed before each LVGL drawing operation.
835+
This [trigger](/components/lvgl/widgets#lvgl-automation-triggers) is executed before each LVGL drawing operation.
836836

837837
### `on_draw_end`
838838

839-
This [trigger](#lvgl-automation-triggers) is executed after LVGL has completed drawing all updated screen elements. It
839+
This [trigger](/components/lvgl/widgets#lvgl-automation-triggers) is executed after LVGL has completed drawing all updated screen elements. It
840840
may be used for example to trigger an update of a display component like an e-paper screen that requires the buffer
841841
to be sent to the display for it to be updated.
842842

content/components/lvgl/layouts.md

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ The layout configuration options are applied to any parent widget or page, influ
1414
The position and size calculated by the layout override the *normal* `x`, `y`, `width`, and `height` settings of the
1515
children.
1616

17-
Check out [Flex layout positioning](#lvgl-cookbook-flex), [Grid layout positioning](#lvgl-cookbook-grid)
18-
and [Weather forecast panel](#lvgl-cookbook-weather) in the Cookbook for examples which demonstrate how to automate
17+
Check out [Flex layout positioning](/cookbook/lvgl#lvgl-cookbook-flex), [Grid layout positioning](/cookbook/lvgl#lvgl-cookbook-grid)
18+
and [Weather forecast panel](/cookbook/lvgl#lvgl-cookbook-weather) in the Cookbook for examples which demonstrate how to automate
1919
widget positioning, potentially reducing the size of your device's YAML configuration, and saving you from lots of
2020
manual calculations.
2121

22-
The `hidden`, `ignore_layout` and `floating` [flags](#lvgl-widget-flags) can be used on widgets to ignore them in layout
22+
The `hidden`, `ignore_layout` and `floating` [flags](/components/lvgl/widgets#lvgl-widget-flags) can be used on widgets to ignore them in layout
2323
calculations.
2424

2525
### Configuration variables
@@ -41,6 +41,9 @@ The configuration `layout: horizontal` is a shorthand for a flex layout:
4141
flex_align_cross: stretch
4242
```
4343
44+
In addition, if the option `pad_all` is set on the container (thus applying padding to the outside) the same
45+
padding will be applied between the columns, i.e. `pad_column` will be set.
46+
4447
### Vertical Layout
4548

4649
The configuration `layout: vertical` is a shorthand for a flex layout:
@@ -54,6 +57,8 @@ The configuration `layout: vertical` is a shorthand for a flex layout:
5457
flex_align_cross: stretch
5558
```
5659

60+
Similarly to the `horizontal` layout, using `pad_all` on the container will also apply that padding between rows.
61+
5762
### Flex
5863

5964
The Flex layout in LVGL is a subset implementation
@@ -156,11 +161,15 @@ distribute the free space proportionally.
156161
them. If one of the items has a value of 2, that one would take up twice as much of the space as either one of the
157162
others.
158163

164+
**Cell positioning:**
165+
159166
Child widgets can be placed on the grid using the `grid_cell_row_pos` and `grid_cell_column_pos` configuration
160167
variables.
161168
If either is specified both must be specified. If neither is specified the widget will be placed in the first available
162169
position, in a row-major order.
163170
Row and column spans will be taken into account when reserving space.
171+
Two or more widgets may not be explicitly assigned the same row and column positions unless the option
172+
`multiple_widgets_per_cell` is set to `true`.
164173

165174
#### Shorthand
166175

@@ -181,16 +190,16 @@ columns, with all rows and columns of equal size. For example `layout: 2x3` is a
181190
pixels. Possible options below.
182191
- **pad_row** (*Optional*, int16): Set the padding between the rows, in pixels.
183192
- **pad_column** (*Optional*, int16): Set the padding between the columns, in pixels.
193+
- **multiple_widgets_per_cell** (*Optional*, bool): If true, multiple widgets can be placed in the same cell. Defaults to `false`.
184194

185-
In a grid layout, *all the widgets placed on the grid* can have some additional configuration variables to help with
186-
placement:
195+
In a grid layout, all child widgets placed on the grid have additional configuration options available:
187196

188197
- **grid_cell_row_pos** (*Optional*, int16): Position of the widget, in which row to appear (0 based count).
189198
- **grid_cell_column_pos** (*Optional*, int16): Position of the widget, in which column to appear (0 based count).
190199
- **grid_cell_x_align** (*Optional*, string): How to align the widget horizontally within the cell. Can also be applied
191-
through [Style properties](#lvgl-styling). Possible options below.
200+
through [Style properties](/components/lvgl#lvgl-styling). Possible options below.
192201
- **grid_cell_y_align** (*Optional*, string): How to align the widget vertically within the cell. Can also be applied
193-
through [Style properties](#lvgl-styling). Possible options below.
202+
through [Style properties](/components/lvgl#lvgl-styling). Possible options below.
194203
- **grid_cell_row_span** (*Optional*, int16): How many rows to span across the widget. Defaults to `1`.
195204
- **grid_cell_column_span** (*Optional*, int16): How many columns to span across the widget. Defaults to `1`.
196205

content/components/lvgl/widgets.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ The properties below are common to all widgets.
2222
> [!NOTE]
2323
> By default, the `x` and `y` coordinates are measured from the *top left corner* of the parent's content area. [Important](/components/lvgl#lvgl-styling): content area starts *after the padding* thus if the parent has a non-zero padding value, position will be shifted with that. Percentage values are calculated from the parent's content area size.
2424
>
25-
> If specifying `align`, `x` and `y` can be used as an offset to the calculated position (can also be negative). They are ignored if [Layouts](/components/lvgl#lvgl-layouts) are used on the parent.
25+
> If specifying `align`, `x` and `y` can be used as an offset to the calculated position (can also be negative). They are ignored if [Layouts](/components/lvgl/layouts#lvgl-layouts) are used on the parent.
2626
2727
- **height** (*Optional*): Height of the widget in pixels or a percentage, or `SIZE_CONTENT`.
2828
- **width** (*Optional*): Width of the widget in pixels or a percentage, or `SIZE_CONTENT`.
@@ -49,7 +49,7 @@ The properties below are common to all widgets.
4949
{{< img src="lvgl_align.png" alt="Image" class="align-center" >}}
5050

5151
- **group** (*Optional*, string): The name of the group of widgets which will interact with a {{< docref "/components/sensor/rotary_encoder" >}}. In every group there is always one focused widget which receives the encoder actions. You need to associate an input device with a group. An input device can send key events to only one group but a group can receive data from more than one input device. If no group is specified for a widget or an encoder, an unnamed default group will be assigned, so in most cases where only one encoder is used it will not be necessary to explicitly specify a group.
52-
- **layout** (*Optional*): See [Layouts](/components/lvgl#lvgl-layouts) for details. Defaults to `NONE`.
52+
- **layout** (*Optional*): See [Layouts](/components/lvgl/layouts#lvgl-layouts) for details. Defaults to `NONE`.
5353
- **styles** (*Optional*, [ID](/guides/configuration-types#id)): The ID of a *style definition* from the main component configuration to override the theme styles.
5454
- **theme** (*Optional*, list): A list of styles to apply to the widget and children. Same configuration option as at the main component.
5555
- **widgets** (*Optional*, list): A list of LVGL widgets to be drawn as children of this widget. Same configuration option as at the main component.
@@ -815,7 +815,7 @@ it is invisible. It has a default width and height of 100%.
815815

816816
**Configuration variables:**
817817

818-
- Style options from [Style properties](#lvgl-styling).
818+
- Style options from [Style properties](/components/lvgl#lvgl-styling).
819819

820820
**Triggers:**
821821

@@ -1047,7 +1047,7 @@ A label is the basic widget type that is used to display text.
10471047

10481048
**Configuration variables:**
10491049

1050-
- **long_mode** (*Optional*, list): By default, the width and height of the label is set to `SIZE_CONTENT`. Therefore, the size of the label is automatically expanded to the text size. Otherwise, if the `width` or `height` are explicitly set (or set by [Layouts](/components/lvgl#lvgl-layouts)), the lines wider than the label's width can be manipulated according to the long mode policies below. These policies can be applied if the height of the text is greater than the height of the label.
1050+
- **long_mode** (*Optional*, list): By default, the width and height of the label is set to `SIZE_CONTENT`. Therefore, the size of the label is automatically expanded to the text size. Otherwise, if the `width` or `height` are explicitly set (or set by [Layouts](/components/lvgl/layouts#lvgl-layouts)), the lines wider than the label's width can be manipulated according to the long mode policies below. These policies can be applied if the height of the text is greater than the height of the label.
10511051
- `WRAP` : Wrap lines which are too long. If the height is `SIZE_CONTENT`, the label's height will be expanded, otherwise the text will be clipped (default).
10521052
- `DOT` : Replaces the last 3 characters from bottom right corner of the label with dots.
10531053
- `SCROLL` : If the text is wider than the label, scroll the text horizontally back and forth. If it's higher, scroll vertically. Text will scroll in only one direction; horizontal scrolling has higher precedence.

0 commit comments

Comments
 (0)