Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Web_server-detail-all #4301

Open
wants to merge 19 commits into
base: current
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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 Doxygen
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ PROJECT_NAME = "ESPHome"
# could be handy for archiving the generated documentation or if some version
# control system is used.

PROJECT_NUMBER = 2024.12.2
PROJECT_NUMBER = 2025.1.0-dev

# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
Expand Down
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 = 2024.12.2
ESPHOME_REF = dev
PAGEFIND_VERSION=1.1.1
PAGEFIND=pagefind
NET_PAGEFIND=../pagefindbin/pagefind
Expand Down
2 changes: 1 addition & 1 deletion _static/version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2024.12.2
2025.1.0-dev
18 changes: 13 additions & 5 deletions components/climate/midea.rst
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ This action toggle the power state. Identical to pressing the power button on th
``midea_ac.follow_me`` Action
*****************************

This action transmit IR FollowMe command telling the air conditioner a more accurate
This action transmits an IR FollowMe command telling the air conditioner a more accurate
room temperature value to be used instead of the internal indoor unit sensor.

.. code-block:: yaml
Expand All @@ -154,14 +154,22 @@ room temperature value to be used instead of the internal indoor unit sensor.
then:
- midea_ac.follow_me:
temperature: !lambda "return x;"
use_fahrenheit: false
beeper: false

Configuration variables:

- **temperature** (**Required**, float, :ref:`templatable <config-templatable>`): Set the
value of a internal temperature sensor.
- **beeper** (*Optional*, boolean, :ref:`templatable <config-templatable>`): set beep on update.
Defaults to ``False``
- **temperature** (**Required**, float, :ref:`templatable <config-templatable>`):
Sets the value of an internal temperature sensor. The value will be **clamped** to the range:

- `0 °C to 37 °C` when ``use_fahrenheit`` is ``false``.
- `32 °F to 99 °F` when ``use_fahrenheit`` is ``true``.

- **use_fahrenheit** (*Optional*, boolean, :ref:`templatable <config-templatable>`):
Specifies if the ``temperature`` value is in Fahrenheit. When set to ``true``, the temperature is parsed and sent in Fahrenheit. Defaults to ``false`` (Celsius).

- **beeper** (*Optional*, boolean, :ref:`templatable <config-templatable>`):
Sets beep on update. Defaults to ``false``.


.. _midea_ac-display_toggle_action:
Expand Down
27 changes: 17 additions & 10 deletions components/display/qspi_dbi.rst
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ This driver has been tested with the following displays:

- Lilygo T4-S3
- Lilygo T-Display S3 AMOLED
- JC4832W535 board using AXS15231
- JC4832W535 board
- JC3636W518 board

Usage
-----
Expand Down Expand Up @@ -56,7 +57,13 @@ ESP-IDF. PSRAM is a requirement due to the size of the display buffer. A :ref:`q
Configuration variables:
************************

- **model** (**Required**): One of ``CUSTOM``, ``RM67162`` or ``RM690B0``.
- **model** (**Required**): One of
- ``CUSTOM``
- ``RM67162``
- ``RM690B0``
- ``JC4832W535``
- ``JC3636W518``
- ``AXS15231``
- **init_sequence** (*Optional*, A list of byte arrays): Specifies the init sequence for the display. This is required when using the ``CUSTOM`` model - but may be empty. If specified for other models this data will be sent after the pre-configured sequence.
- **cs_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The chip select pin.
- **reset_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The RESET pin.
Expand All @@ -77,13 +84,14 @@ Configuration variables:
- **rotation** (*Optional*): Rotate the display presentation in software. Choose one of ``0°``, ``90°``, ``180°``, or ``270°``.
- **transform** (*Optional*): Transform the display presentation using hardware. All defaults are ``false``. This option cannot be used with ``rotation``.

- **swap_xy** (*Optional*, boolean): If true, exchange the x and y axes.
- **swap_xy** (*Optional*, boolean): If true, exchange the x and y axes. Not available for some chips
- **mirror_x** (*Optional*, boolean): If true, mirror the x axis.
- **mirror_y** (*Optional*, boolean): If true, mirror the y axis.
- **data_rate** (*Optional*): Set the data rate of the SPI interface to the display. One of ``80MHz``, ``40MHz``, ``20MHz``, ``10MHz`` (default), ``5MHz``, ``2MHz`` or ``1MHz``.
- **data_rate** (*Optional*, int): Set the data rate of the SPI interface to the display. One of ``80MHz``, ``40MHz``, ``20MHz``, ``10MHz`` (default), ``5MHz``, ``2MHz`` or ``1MHz``.
- **spi_mode** (*Optional*): Set the mode for the SPI interface to the display. Default is ``MODE0``.
- **invert_colors** (*Optional*): With this boolean option you can invert the display colors.
- **draw_from_origin** (*Optional*): When set, all partial display updates will start at the origin (0,0). Defaults to false.
- **invert_colors** (*Optional*, boolean): With this boolean option you can invert the display colors.
- **draw_from_origin** (*Optional*, boolean): When set, all partial display updates will start at the origin (0,0). Defaults to false.
- **draw_rounding** (*Optional*, int): Caters for display chips that require partial drawing to be aligned to certain boundaries. Default is 2, must be a power of 2.
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`): The lambda to use for rendering the content on the display.
See :ref:`display-engine` for more information.

Expand Down Expand Up @@ -202,17 +210,16 @@ This rotates the display into landscape mode using software rotation.

display:
- platform: qspi_dbi
model: axs15231
model: JC4832W535
data_rate: 40MHz
rotation: 270
dimensions:
height: 480
width: 320
cs_pin:
number: 45
ignore_strapping_warning: true
auto_clear_enabled: false
update_interval: never
init_sequence:
show_test_card: true

i2c:
sda: 4
Expand Down
51 changes: 37 additions & 14 deletions components/light/esp32_rmt_led_strip.rst
Original file line number Diff line number Diff line change
Expand Up @@ -23,24 +23,17 @@ Configuration variables

- **pin** (**Required**, :ref:`config-pin`): The pin for the data line of the light.
- **num_leds** (**Required**, int): The number of LEDs in the strip.
- **rmt_channel** (**Required**, int): The RMT channel to use. If using multiple strips, you need to use different channels.
- **chipset** (**Required**, enum): The name of the chipset used; determines signal timing. Not required if
:ref:`specifying the timings manually<esp32-rmt-led-strip-manual_timings>`.

.. csv-table::
:header: "ESP32 Variant", "Channels"

"ESP32", "0, 1, 2, 3, 4, 5, 6, 7"
"ESP32-S2", "0, 1, 2, 3"
"ESP32-S3", "0, 1, 2, 3"
"ESP32-C3", "0, 1"

- **chipset** (**Required**, enum): The chipset to apply known timings from. Not used if specifying the timings manually, see below.
- ``WS2811``
- ``WS2812``
- ``SK6812``
- ``APA106``
- ``SM16703``

- **rgb_order** (**Required**, string): The RGB order of the strip.

- ``RGB``
- ``RBG``
- ``GRB``
Expand All @@ -50,13 +43,43 @@ Configuration variables

- **is_rgbw** (*Optional*, boolean): Set to ``true`` if the strip is RGBW. Defaults to ``false``.
- **is_wrgb** (*Optional*, boolean): Set to ``true`` if the strip is WRGB. Defaults to ``false``.
- **max_refresh_rate** (*Optional*, :ref:`config-time`):
A time interval used to limit the number of commands a light can handle per second. For example
16ms will limit the light to a refresh rate of about 60Hz. Defaults to sending commands as quickly as
changes are made to the lights.
- **max_refresh_rate** (*Optional*, :ref:`config-time`): A time interval used to limit the number of commands a light
can handle per second. For example, ``16ms`` will limit the light to a refresh rate of about 60Hz. Defaults to
sending commands as quickly as changes are made to the lights.

IDF configuration variables:
****************************

- **rmt_symbols** (*Optional*, int): The amount of RMT memory allocated to this component. Memory is shared by all
receivers and transmitters. On variants other than ``ESP32`` and ``ESP32-S2`` only half the symbol memory is
available to transmitters. Each symbol is 32 bits and contains two values.

.. csv-table::
:header: "ESP32 Variant", "Memory Size", "Block Size"

"ESP32", "512 symbols", "64 symbols"
"ESP32-S2", "256 symbols", "64 symbols"
"ESP32-S3", "384 symbols", "48 symbols"
"ESP32-C3", "192 symbols", "48 symbols"
"ESP32-C6", "192 symbols", "48 symbols"
"ESP32-H2", "192 symbols", "48 symbols"

Arduino configuration variables:
********************************

- **rmt_channel** (**Required**, int): The RMT channel to use. Each LED strip needs to use a unique channel.

.. csv-table::
:header: "ESP32 Variant", "Channels"

"ESP32", "0, 1, 2, 3, 4, 5, 6, 7"
"ESP32-S2", "0, 1, 2, 3"
"ESP32-S3", "0, 1, 2, 3"
"ESP32-C3", "0, 1"

- All other options from :ref:`Light <config-light>`.

.. _esp32-rmt-led-strip-manual_timings:

Manual Timings
**************
Expand Down
61 changes: 59 additions & 2 deletions components/opentherm.rst
Original file line number Diff line number Diff line change
Expand Up @@ -57,11 +57,32 @@ Configuration variables:
- **sync_mode** (**Optional**, boolean, default **false**): Synchronous communication mode prevents other components
from disabling interrupts while we are talking to the boiler. Enable if you experience a lot of random intermittent
invalid response errors (very likely to happen while using Dallas temperature sensors).
- **opentherm_version** (**Optional**, float): OpenTherm version that is required for some boilers to work (message
id 124). You don't need to specify this if everything works.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. Required if you have
multiple busses.

Optional Boiler-specific Configuration
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Some boilers require certain OpenTherm messages to be sent by thermostat on initialization in order to work
correctly. You can use the following settings in hub configuration to make your particular boiler happy.

- **controller_product_type** (**Optional**, byte [0-255], OpenTherm message id ``126`` high byte): Controller product
type
- **controller_product_version** (**Optional**, byte [0-255], OpenTherm message id ``126`` low byte): Controller product
version
- **opentherm_version_controller** (**Optional**, float, OpenTherm message id ``124``): Version of OpenTherm implemented
by controller
- **controller_configuration** (**Optional**, byte [0-255], OpenTherm message id ``2`` high byte): Controller
configuration
- **controller_id** (**Optional**, byte [0-255], OpenTherm message id ``2`` low byte): Controller ID code

Automations
^^^^^^^^^^^

- **before_send** (**Optional**) An automation to perform on OpenTherm message before it is sent to the boiler.
- **before_process_response** (**Optional**) An automation to perform on boiler response before it is processed.

See :ref:`on-the-fly-message-editing` for details.

Note about sync mode
********************

Expand Down Expand Up @@ -319,6 +340,42 @@ available:
- ``otc_hc_ratio_ub``: OTC heat curve ratio upper bound
- ``otc_hc_ratio_lb``: OTC heat curve ratio lower bound

.. _on-the-fly-message-editing:

On-the-fly Message Editing
--------------------------

Some boilers use non-standard message ids and formats. For example,
`it's known <https://github.com/olegtarasov/esphome-opentherm/issues/11>`__ that Daikin D2C boiler uses message id
`162` instead of `56` to set target DHW temperature. In order to accomodate all sorts of non-standard behavior, I
introduced two automations that allow editing the low-level OpenTherm message:

- **before_send**: fired just before the fully formed message is sent to the boiler. When you use a lambda, the message
is passed by reference as ``x``.
- **before_process_response**: fired when response message is received from the boiler and is about to be processed.
When you use a lambda, the message is passed by reference as ``x``.

This allows to make arbitrary alterations to any message. Here is an example of overriding message id for DHW setpoint
for Daikin D2C boiler:

.. code-block:: yaml

opentherm:
# Usual hub config
before_send:
then:
- lambda: |-
if (x.id == 56) { // 56 is standard message id for DHW setpoint
x.id = 162; // message is passed by refence, so we can change anything, including message id
}
before_process_response:
then:
- lambda: |-
if (x.id == 162) { // We substitute the original id back, so that esphome is not confused.
x.id = 56;
}

You can check the :apistruct:`OpenthermData <opentherm::OpenthermData>` for the list of all available fields.

Examples
--------
Expand Down
Loading
Loading