From c628ab728119892bf8a2a4286a4072a9daf9d07a Mon Sep 17 00:00:00 2001 From: Keith Burzinski Date: Thu, 27 Jun 2024 03:56:13 -0500 Subject: [PATCH 001/173] Fix script link (#3999) --- components/script.rst | 2 +- index.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/components/script.rst b/components/script.rst index 1b400fd110..7060a962e4 100644 --- a/components/script.rst +++ b/components/script.rst @@ -1,4 +1,4 @@ -.. _scripts: +.. _script: ``script`` Component -------------------- diff --git a/index.rst b/index.rst index bde2dd570f..88edddeffd 100644 --- a/index.rst +++ b/index.rst @@ -172,7 +172,7 @@ ESPHome-specific components or components supporting ESPHome device provisioning Improv via BLE, components/esp32_improv, improv.svg, dark-invert Improv via Serial, components/improv_serial, improv.svg, dark-invert Interval, components/interval, description.svg, dark-invert - Scripts, components/scripts, description.svg, dark-invert + Script, components/script, description.svg, dark-invert Network Hardware ---------------- From 90757f4ab9ec60cc52940ff36b8104f282dc94f5 Mon Sep 17 00:00:00 2001 From: David Martin <51385971+3ative@users.noreply.github.com> Date: Thu, 27 Jun 2024 16:10:03 +0100 Subject: [PATCH 002/173] "Temperature" to "Pressure" correction (#4000) --- components/sensor/bmp280.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/sensor/bmp280.rst b/components/sensor/bmp280.rst index 87337481c0..df7bc8041e 100644 --- a/components/sensor/bmp280.rst +++ b/components/sensor/bmp280.rst @@ -48,7 +48,7 @@ Configuration variables: - **pressure** (*Optional*): The information for the pressure sensor. - **name** (**Required**, string): The name for the pressure sensor. - - **oversampling** (*Optional*): The oversampling parameter for the temperature sensor. + - **oversampling** (*Optional*): The oversampling parameter for the pressure sensor. See :ref:`Oversampling Options `. - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. From 8c1aef40f4c16d5054dbd4ef5e478c57cca45b3e Mon Sep 17 00:00:00 2001 From: Ian Wells Date: Sun, 30 Jun 2024 18:02:03 -0700 Subject: [PATCH 003/173] Minor wording update for duty_time.rst (#4008) --- components/sensor/duty_time.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/components/sensor/duty_time.rst b/components/sensor/duty_time.rst index 6273c87df0..0efa5ba52e 100644 --- a/components/sensor/duty_time.rst +++ b/components/sensor/duty_time.rst @@ -2,13 +2,13 @@ Duty Time ========= .. seo:: - :description: Instructions for setting up a sensor that tracks the duty time of the some object. + :description: Instructions for setting up a sensor that tracks the duty time of some object. :image: timer-play-outline.svg -The ``duty_time`` sensor allows you to track the total duty time of the some object, for example, a light bulb, in seconds. +The ``duty_time`` sensor allows you to track the total duty time of some object, for example, a light bulb, in seconds. Able to calculate the last turn-on time when an optional sensor ``last_time`` is included in the configuration. -Supports boolean signal sources: ``binary_sensor`` or ``lambda`` that returns a boolean state of tracked object. +Supports boolean signal sources: ``binary_sensor`` or ``lambda`` that returns a boolean state of the tracked object. As an alternative to controlling a component in automations, may be used the ``sensor.duty_time.start`` and ``sensor.duty_time.stop`` actions. From 327ed38f2bf3e77bbf1a91c03dc0c9e92ddbc108 Mon Sep 17 00:00:00 2001 From: Kamahat Date: Mon, 1 Jul 2024 06:50:35 +0200 Subject: [PATCH 004/173] add update_interval to the dallas_temp example (#4009) --- components/sensor/dallas_temp.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/components/sensor/dallas_temp.rst b/components/sensor/dallas_temp.rst index 00337cfdd4..19e8f3b2ed 100644 --- a/components/sensor/dallas_temp.rst +++ b/components/sensor/dallas_temp.rst @@ -19,6 +19,7 @@ required to be set up in your configuration for this sensor to work. - platform: dallas_temp address: 0x1234567812345628 name: temperature + update_interval: 120s Configuration variables: ************************ From 2ac411866e8a58025f095d7792f266783883e5e7 Mon Sep 17 00:00:00 2001 From: Samuel Sieb Date: Sun, 30 Jun 2024 23:09:47 -0700 Subject: [PATCH 005/173] fix ota example (#3990) --- components/ota/esphome.rst | 1 - 1 file changed, 1 deletion(-) diff --git a/components/ota/esphome.rst b/components/ota/esphome.rst index 1c735daadc..0d782521b1 100644 --- a/components/ota/esphome.rst +++ b/components/ota/esphome.rst @@ -22,7 +22,6 @@ expected. This is automatically enabled by this component, but it may be disable # Example configuration entry ota: - platform: esphome - safe_mode: true password: !secret ota_password Configuration variables: From 27f3440b4bc5a7f7383e0416fbcfab27383d6b18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=2E=20=C3=81rkosi=20R=C3=B3bert?= Date: Tue, 2 Jul 2024 02:00:51 +0200 Subject: [PATCH 006/173] Note about alternative wind sensors due to deprecation by manufacturer (#3869) --- components/sensor/tx20.rst | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/components/sensor/tx20.rst b/components/sensor/tx20.rst index b4414262f0..d6944c8569 100644 --- a/components/sensor/tx20.rst +++ b/components/sensor/tx20.rst @@ -7,8 +7,6 @@ TX20/TX23 Wind Speed/Direction Sensor :keywords: TX20 The ``tx20`` sensor platform allows you to use your TX20/TX23 -(`Amazon`_, -`lacrosse_tx23`_) wind direction and speed sensors with ESPHome. The only required pin is the black or brown cable (which is used to transmit data.) The red cable should be connected to VCC (3.3V), green initiates the data transfer when connected to GND @@ -23,9 +21,6 @@ connected to GND in the TX20. TX20 / TX23 Wind Speed / Direction. -.. _Amazon: https://www.amazon.de/Technoline-Tx-20/dp/B01HXZ3KLA -.. _lacrosse_tx23: https://www.lacrossetechnology.com/tx23-wind-sensor - .. code-block:: yaml # Example configuration entry @@ -66,14 +61,20 @@ Configuration variables: return {id(tx20_id).get_wind_cardinal_direction()}; update_interval: 2s +.. note:: + + It appears that the manufacturer discontinued production of this sensor, as it doesn't seem to be available anymore for purchase. + There are various alternatives though, and since ESPHome has a :doc:`/components/modbus`, any model supporting RS485 connection + can be easily integrated. + + Check out in the ESPHome Devices database example configurations for + `RS-FSJT-N01 Wind Speed `__ and + `RS-FXJT-N01 Wind Direction `__ sensors. See Also -------- - :ref:`sensor-filters` - :apiref:`tx20/tx20.h` -- `Amazon Tx20 `__ -- `La Crosse Tx23 `__ - `Datagram Tx20 `__ -- `Datagram Tx23 `__- - :ghedit:`Edit` From d36e808d7263829da26dec614e7673a63e7d7f89 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Tue, 2 Jul 2024 12:11:08 +1200 Subject: [PATCH 007/173] Fix components.json generation (#4013) --- changelog/v1.9.0.rst | 2 +- components/globals.rst | 4 +--- components/interval.rst | 6 ++---- components/script.rst | 6 ++---- cookbook/http_request_sensor.rst | 4 ++-- 5 files changed, 8 insertions(+), 14 deletions(-) diff --git a/changelog/v1.9.0.rst b/changelog/v1.9.0.rst index ff519918c7..900ef04b7c 100644 --- a/changelog/v1.9.0.rst +++ b/changelog/v1.9.0.rst @@ -137,7 +137,7 @@ New Features - You can now upload OTA firmware files with the :doc:`web server component ` -- Added the ability to define global variables in esphomeyaml: :ref:`config-globals`. +- Added the ability to define global variables in esphomeyaml: :doc:`/components/globals`. - Added a ``frequency`` option to the :doc:`/components/output/esp8266_pwm`. diff --git a/components/globals.rst b/components/globals.rst index 614254efa5..c1f34bf1a6 100644 --- a/components/globals.rst +++ b/components/globals.rst @@ -1,5 +1,3 @@ -.. _config-globals: - Global Variables ---------------- @@ -54,7 +52,7 @@ Configuration variables: ``globals.set`` Action ---------------------- -This :ref:`Action ` allows you to change the value of a :ref:`global ` +This :ref:`Action ` allows you to change the value of a ``global`` variable without having to use the lambda syntax. .. code-block:: yaml diff --git a/components/interval.rst b/components/interval.rst index c5edfe0bb7..84243420da 100644 --- a/components/interval.rst +++ b/components/interval.rst @@ -1,7 +1,5 @@ -.. _interval: - -``interval`` Component ----------------------- +Interval Component +------------------ This component allows you to run actions at fixed time intervals. For example, if you want to toggle a switch every minute, you can use this component. Please note that it's possible to achieve the same thing with the diff --git a/components/script.rst b/components/script.rst index 7060a962e4..7112626e04 100644 --- a/components/script.rst +++ b/components/script.rst @@ -1,7 +1,5 @@ -.. _script: - -``script`` Component --------------------- +Script Component +---------------- ESPHome's ``script`` component allows you to define a list of steps (actions) in a central place. You can then execute the script from nearly anywhere in your device's configuration with a single call. diff --git a/cookbook/http_request_sensor.rst b/cookbook/http_request_sensor.rst index 7180c0d2bf..7ddfaa6dbd 100644 --- a/cookbook/http_request_sensor.rst +++ b/cookbook/http_request_sensor.rst @@ -35,7 +35,7 @@ On the client nodes we need an :doc:`/components/http_request` with an ``id`` se Pulling the data **************** -To automate the request for data, we use an :ref:`interval` requesting the URL pointing to the sensor id for which the state is needed. See :ref:`api-rest` on how to build up the URL for your sensors. +To automate the request for data, we use an :doc:`/components/interval` requesting the URL pointing to the sensor id for which the state is needed. See :ref:`api-rest` on how to build up the URL for your sensors. In the example below we request the value of a sensor from the server node, and after parsing the resulted JSON string we publish it to the local template sensor: @@ -118,6 +118,6 @@ See Also - :doc:`/components/web_server` - :doc:`/components/http_request` - :doc:`/components/sensor/template` -- :ref:`interval` +- :doc:`/components/interval` - :ref:`api-rest` - :ghedit:`Edit` From fc5d338521f900dba1dab3334695047dbba22044 Mon Sep 17 00:00:00 2001 From: Keith Burzinski Date: Mon, 1 Jul 2024 21:29:55 -0500 Subject: [PATCH 008/173] [uptime] Add sensor types (#4014) * Add uptime sensor types * Oops * Update update_interval copy --- components/sensor/uptime.rst | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/components/sensor/uptime.rst b/components/sensor/uptime.rst index c1f6db763f..7f1103d21c 100644 --- a/components/sensor/uptime.rst +++ b/components/sensor/uptime.rst @@ -13,16 +13,20 @@ Time rollovers are automatically handled. # Example configuration entry sensor: - platform: uptime + type: seconds name: Uptime Sensor Configuration variables: ------------------------ -- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. +- **type** (*Optional*): Either: -- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. -- All other options from :ref:`Sensor `. + - ``seconds`` (*default*): A simple counter. + - ``timestamp``: presents the time ESPHome last booted up. Requires a :doc:`/components/time/index`. +- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. + Valid only with ``type: seconds``. +- All other options from :ref:`Sensor `. See Also -------- From 804eb79e28b00fb1d053c55cbe2d75e3f5f46241 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 3 Jul 2024 15:45:32 +1200 Subject: [PATCH 009/173] Bump version to 2024.6.5 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index 8af1ec6453..dfbde1a0e8 100644 --- a/Doxygen +++ b/Doxygen @@ -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.6.4 +PROJECT_NUMBER = 2024.6.5 # 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 diff --git a/Makefile b/Makefile index 40b3485065..80936929c5 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = 2024.6.4 +ESPHOME_REF = 2024.6.5 PAGEFIND_VERSION=1.1.0 PAGEFIND=pagefind NET_PAGEFIND=../pagefindbin/pagefind diff --git a/_static/version b/_static/version index ca26d9adaa..f5e12de827 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2024.6.4 \ No newline at end of file +2024.6.5 \ No newline at end of file diff --git a/conf.py b/conf.py index e4ff6f1247..01ce02d8ed 100644 --- a/conf.py +++ b/conf.py @@ -69,7 +69,7 @@ # The short X.Y version. version = "2024.6" # The full version, including alpha/beta/rc tags. -release = "2024.6.4" +release = "2024.6.5" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 68c97b27a018bb39fe4f018a6cef0df0a4dcaa2c Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 3 Jul 2024 15:46:06 +1200 Subject: [PATCH 010/173] Update changelog for 2024.6.5 --- changelog/2024.6.0.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/changelog/2024.6.0.rst b/changelog/2024.6.0.rst index 39d0856374..2d6f3ec7a1 100644 --- a/changelog/2024.6.0.rst +++ b/changelog/2024.6.0.rst @@ -219,6 +219,13 @@ Release 2024.6.4 - June 27 - [ota-esphome] Merge configurations by port :esphomepr:`7001` by :ghuser:`kbx81` - Fix LEDC 100% is not 100% duty with ESP32 IDF :esphomepr:`6997` by :ghuser:`Links2004` +Release 2024.6.5 - July 3 +------------------------- + +- [mpr121] await register parented :esphomepr:`7014` by :ghuser:`jesserockz` +- Move some consts for #4585 :esphomepr:`7023` by :ghuser:`kbx81` +- [wifi] Only set default ttls phase 2 on esp-idf :esphomepr:`7033` by :ghuser:`jesserockz` + Full list of changes -------------------- From c2df792c9fcfda2038c47d45c586738b697bb9d5 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 3 Jul 2024 15:46:45 +1200 Subject: [PATCH 011/173] Update supporters for 2024.6.5 --- guides/supporters.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index 35f96e4caa..dc3a003178 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -1032,6 +1032,7 @@ Contributors - `Joakim Sørensen (@ludeeus) `__ - `ludrao (@ludrao) `__ - `Luiz Correia (@luizcorreia) `__ +- `luk1803 (@luk1803) `__ - `luka6000 (@luka6000) `__ - `Lukas Klass (@LukasK13) `__ - `Lukas Lindner (@lukasl96) `__ @@ -1244,6 +1245,7 @@ Contributors - `NatashaLi-ESPRESSIF (@NatashaLi-ESPRESSIF) `__ - `Nate Lust (@natelust) `__ - `Nathan Marlor (@nathanmarlor) `__ +- `Andreas Fritiofson (@nattgris) `__ - `ueno (@nayuta-ueno) `__ - `Nazar Mokrynskyi (@nazar-pc) `__ - `Bergont Nicolas (@nbergont) `__ @@ -1890,4 +1892,4 @@ Contributors - `Christian Zufferey (@zuzu59) `__ - `Zynth-dev (@Zynth-dev) `__ -*This page was last updated June 27, 2024.* +*This page was last updated July 3, 2024.* From 1135d611c78b4cf968dfbebe20043072221c699f Mon Sep 17 00:00:00 2001 From: azrdev Date: Wed, 3 Jul 2024 09:07:32 +0200 Subject: [PATCH 012/173] remote_receiver: document using multiple with receiver_id (#3811) --- components/remote_receiver.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/components/remote_receiver.rst b/components/remote_receiver.rst index a994d8c51e..20ef6b3245 100644 --- a/components/remote_receiver.rst +++ b/components/remote_receiver.rst @@ -23,6 +23,8 @@ which will trigger when they hear their own configured signal. pin: GPIOXX dump: all +Multiple remote receivers can be configured as a list of dict definitions in remote_receiver. + Configuration variables: ------------------------ @@ -234,6 +236,8 @@ Configuration variables: - **name** (**Required**, string): The name for the binary sensor. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. +- **receiver_id** (*Optional*, :ref:`config-id`): The remote receiver to receive the + remote code with. Required if multiple receivers configured. - All other options from :ref:`Binary Sensor `. Remote code selection (exactly one of these has to be included): From e6285f89896dacbb2d6aa24537b0fb925b3832b0 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 3 Jul 2024 20:14:28 +1200 Subject: [PATCH 013/173] Bump version to 2024.6.6 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index dfbde1a0e8..1cacee07e8 100644 --- a/Doxygen +++ b/Doxygen @@ -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.6.5 +PROJECT_NUMBER = 2024.6.6 # 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 diff --git a/Makefile b/Makefile index 80936929c5..7c0268fd52 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = 2024.6.5 +ESPHOME_REF = 2024.6.6 PAGEFIND_VERSION=1.1.0 PAGEFIND=pagefind NET_PAGEFIND=../pagefindbin/pagefind diff --git a/_static/version b/_static/version index f5e12de827..fceccade95 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2024.6.5 \ No newline at end of file +2024.6.6 \ No newline at end of file diff --git a/conf.py b/conf.py index 01ce02d8ed..f405aab401 100644 --- a/conf.py +++ b/conf.py @@ -69,7 +69,7 @@ # The short X.Y version. version = "2024.6" # The full version, including alpha/beta/rc tags. -release = "2024.6.5" +release = "2024.6.6" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 20ed210ea13f57b07494d8398db8b2eff5d2ac94 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 3 Jul 2024 20:14:41 +1200 Subject: [PATCH 014/173] Update changelog for 2024.6.6 --- changelog/2024.6.0.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/changelog/2024.6.0.rst b/changelog/2024.6.0.rst index 2d6f3ec7a1..16b92cba73 100644 --- a/changelog/2024.6.0.rst +++ b/changelog/2024.6.0.rst @@ -226,6 +226,13 @@ Release 2024.6.5 - July 3 - Move some consts for #4585 :esphomepr:`7023` by :ghuser:`kbx81` - [wifi] Only set default ttls phase 2 on esp-idf :esphomepr:`7033` by :ghuser:`jesserockz` +Release 2024.6.6 - July 3 +------------------------- + +- Bump dockerfile dependencies :esphomepr:`7017` by :ghuser:`jesserockz` +- [docker] Bump versions inside armv7 block :esphomepr:`7022` by :ghuser:`jesserockz` +- [docker] Fix docker build error fall through :esphomepr:`7021` by :ghuser:`jesserockz` + Full list of changes -------------------- From 694d97d79377d29774cf229fff1b04e24fba16c5 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 3 Jul 2024 20:15:26 +1200 Subject: [PATCH 015/173] Update supporters for 2024.6.6 --- guides/supporters.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/guides/supporters.rst b/guides/supporters.rst index dc3a003178..e585fde6eb 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -161,6 +161,7 @@ Contributors - `Kamil Trzciński (@ayufan) `__ - `Nicholas Peters (@Azimath) `__ - `Daniel (@azrael783) `__ +- `azrdev (@azrdev) `__ - `B48D81EFCC (@B48D81EFCC) `__ - `Florian Mösch (@badbadc0ffee) `__ - `Baden (@baden03) `__ From e0072ee215850e82a718d74fa8ebe59c0337c5cf Mon Sep 17 00:00:00 2001 From: Pavlo Dudnytskyi Date: Sat, 6 Jul 2024 09:00:48 +0200 Subject: [PATCH 016/173] Update of Haier component documentation to support new features and settings (#4020) Co-authored-by: Pavlo Dudnytskyi --- components/climate/haier.rst | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/components/climate/haier.rst b/components/climate/haier.rst index 7b7e81ed88..8849a406f4 100644 --- a/components/climate/haier.rst +++ b/components/climate/haier.rst @@ -100,6 +100,12 @@ This component requires a :ref:`uart` to be setup. level: INFO format: "Alarm deactivated. Code: %d. Message: \"%s\"" args: [ code, message] + on_status_message: + then: + - logger.log: + level: INFO + format: "New status message received, size=%d, subcmd=%02X%02X" + args: [ 'data_size', 'data[0]', 'data[1]' ] Configuration variables: @@ -112,7 +118,9 @@ Configuration variables: - **wifi_signal** (*Optional*, boolean): If true - send wifi signal level to AC. - **answer_timeout** (*Optional*, :ref:`config-time`): Responce timeout. The default value is 200ms. - **alternative_swing_control** (*Optional*, boolean): (supported by smartAir2 only) If true - use alternative values to control swing mode. Use only if the original control method is not working for your AC. +- **status_message_header_size** (*Optional*, int): (supported only by hOn) Define the header size of the status message. Can be used to handle some protocol variations. Use only if you are sure what you are doing. The default value: 0. - **control_packet_size** (*Optional*, int): (supported only by hOn) Define the size of the control packet. Can help with some newer models of ACs that use bigger packets. The default value: 10. +- **sensors_packet_size** (*Optional*, int): (supported only by hOn) Define the size of the sensor packet of the status message. Can help with some models of ACs that have bigger sensor packet. The default value: 22, minimum value: 18. - **control_method** (*Optional*, list): (supported only by hOn) Defines control method (should be supported by AC). Supported values: MONITOR_ONLY - no control, just monitor status, SET_GROUP_PARAMETERS - set all AC parameters with one command (default method), SET_SINGLE_PARAMETER - set each parameter individually (this method is supported by some new ceiling ACs like AD71S2SM3FA) - **display** (*Optional*, boolean): Can be used to set the AC display off. - **beeper** (*Optional*, boolean): Can be used to disable beeping on commands from AC. Supported only by hOn protocol. @@ -121,6 +129,7 @@ Configuration variables: - **supported_presets** (*Optional*, list): Can be used to disable some presets. Possible values for smartair2 are: AWAY, BOOST, COMFORT. Possible values for hOn are: AWAY, ECO, BOOST, SLEEP. AWAY preset can be enabled only in HEAT mode, it is disabled by default - **on_alarm_start** (*Optional*, :ref:`Automation `): (supported only by hOn) Automation to perform when AC activates a new alarm. See :ref:`haier-on_alarm_start` - **on_alarm_end** (*Optional*, :ref:`Automation `): (supported only by hOn) Automation to perform when AC deactivates a new alarm. See :ref:`haier-on_alarm_end` +- **on_status_message** (*Optional*, :ref:`Automation `): Automation to perform when status message received from AC. See :ref:`haier-on_status_message` - All other options from :ref:`Climate `. Automations @@ -131,7 +140,7 @@ Automations ``on_alarm_start`` Trigger ************************** -This automation will be triggered when a new alarm is activated by AC. The error code of the alarm will be given in the variable "code" (type uint8_t), error message in the variable "message" (type char*). Those variables can be used in :ref:`lambdas ` +This automation will be triggered when a new alarm is activated by AC. The error code of the alarm will be given in the variable ``code`` (``uint8_t``), error message in the variable ``message`` (``const char *``). Those variables can be used in :ref:`lambdas ` .. code-block:: yaml @@ -142,14 +151,14 @@ This automation will be triggered when a new alarm is activated by AC. The error - logger.log: level: WARN format: "Alarm activated. Code: %d. Message: \"%s\"" - args: [ code, message] + args: [ 'code', 'message' ] .. _haier-on_alarm_end: ``on_alarm_end`` Trigger ************************ -This automation will be triggered when a previously activated alarm is deactivated by AC. The error code of the alarm will be given in the variable "code" (type uint8_t), error message in the variable "message" (type char*). Those variables can be used in :ref:`lambdas ` +This automation will be triggered when a previously activated alarm is deactivated by AC. The error code of the alarm will be given in the variable ``code`` (``uint8_t``), error message in the variable ``message`` (``const char *``). Those variables can be used in :ref:`lambdas ` .. code-block:: yaml @@ -160,7 +169,26 @@ This automation will be triggered when a previously activated alarm is deactivat - logger.log: level: INFO format: "Alarm deactivated. Code: %d. Message: \"%s\"" - args: [ code, message] + args: [ 'code', 'message' ] + +.. _haier-on_status_message: + +``on_status_message`` Trigger +***************************** + +This automation will be triggered when component receives new status packet from AC. Raw message binary (without header and checksum) will be provided in the variable ``data`` (``const char *``), message length in the variable ``data_size`` (``uint8_t``). Those variables can be used in :ref:`lambdas ` +This trigger can be used to support some features that unique for the model and not supported by others. + +.. code-block:: yaml + + climate: + - protocol: hOn + on_status_message: + then: + - logger.log: + level: INFO + format: "New status message received, size=%d, subcmd=%02X%02X" + args: [ 'data_size', 'data[0]', 'data[1]' ] ``climate.haier.power_on`` Action ********************************* From 163ead23332405f87d3af1834f0e68620b64497d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benno=20P=C3=BCtz?= Date: Sat, 6 Jul 2024 14:41:31 +0200 Subject: [PATCH 017/173] Update api.rst (#4023) Fixed typo: "Fnd" -> "Find" --- components/api.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/api.rst b/components/api.rst index a6386a845c..96d819ee6e 100644 --- a/components/api.rst +++ b/components/api.rst @@ -89,7 +89,7 @@ Open the ESPHome integration page on your Home Assistant instance: Then: -#. Fnd your device in the device list +#. Find your device in the device list #. Click the "configure" button next to it #. Check the "Allow the device to make Home Assistant service calls" box #. Then click "submit". From bea5dd4e3a0ae087f6b58fe76f4a4ec27e6d1658 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Jul 2024 07:34:58 +0200 Subject: [PATCH 018/173] Bump actions/upload-artifact from 4.3.3 to 4.3.4 (#4027) --- .github/workflows/component-image.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/component-image.yml b/.github/workflows/component-image.yml index 609a8aa315..6c46330277 100644 --- a/.github/workflows/component-image.yml +++ b/.github/workflows/component-image.yml @@ -48,7 +48,7 @@ jobs: component: ${{ needs.prepare.outputs.name }} - name: Upload - uses: actions/upload-artifact@v4.3.3 + uses: actions/upload-artifact@v4.3.4 id: upload-artifact with: name: ${{ needs.prepare.outputs.name }} From 74c578bb8ebf4616de62975f4016381f98ff99a8 Mon Sep 17 00:00:00 2001 From: Denis Prokopenko <22414094+denproc@users.noreply.github.com> Date: Mon, 8 Jul 2024 12:20:46 +0100 Subject: [PATCH 019/173] Update sgp30.rst (#4021) --- components/sensor/sgp30.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/components/sensor/sgp30.rst b/components/sensor/sgp30.rst index e54b4021ec..341da383b1 100644 --- a/components/sensor/sgp30.rst +++ b/components/sensor/sgp30.rst @@ -39,7 +39,7 @@ Configuration variables: - **tvoc** (**Required**): The information for the total Volatile Organic Compounds sensor. - - **name** (**Required**, string): The name for the humidity sensor. + - **name** (**Required**, string): The name for the TVOC sensor. - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. @@ -60,13 +60,13 @@ Advanced: - **tvoc_baseline** (**Required**, int): The TVOC baseline for calibration purposes. After OTA, this value is used to calibrate the sensor. -- **eco2_baseline** (*Optional*): The information for the CO₂eq. sensor baseline value. Baseline value is published in decimals. +- **eco2_baseline** (*Optional*): The information for the CO₂eq. baseline value sensor. Baseline value is published in decimals. - **name** (**Required**, string): The name for the CO₂eq baseline value sensor. - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. -- **tvoc_baseline** (*Optional*): The information for the TVOC baseline value sensor. Baseline value is published in in decimals. +- **tvoc_baseline** (*Optional*): The information for the TVOC baseline value sensor. Baseline value is published in decimals. - **name** (**Required**, string): The name for the TVOC baseline value sensor. - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. From b25d6c03d38b03c4ab2f729560a7e9013e497dc9 Mon Sep 17 00:00:00 2001 From: Keith Burzinski Date: Wed, 10 Jul 2024 02:34:28 -0500 Subject: [PATCH 020/173] [M4E] Requirements tweak (#4031) --- guides/made_for_esphome.rst | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/guides/made_for_esphome.rst b/guides/made_for_esphome.rst index 4c1b92c8ff..19e4674b58 100644 --- a/guides/made_for_esphome.rst +++ b/guides/made_for_esphome.rst @@ -34,11 +34,14 @@ For all projects - Your project is powered by an ESP32 or *supported* ESP32 variant such as the S2, S3, C3, etc. - Your ESPHome configuration is open source, available for end users to modify/update - Users should be able to apply updates if your project sells ready-made devices -- Your project supports adoption via the ``dashboard_import`` feature of ESPHome (see :doc:`Sharing `). In particular: +- Your project supports adoption via the ``dashboard_import`` feature of ESPHome (see + :doc:`Sharing `). In particular: + - There are **no** references to secrets or passwords - Network configuration must assume defaults (no static IPs or DNS configured) - - It **must** compile successfully without any user changes after adopting it. - - All configuration is contained within a single YAML file. Fully remote packages are permitted if using ``import_full_config: true``. + - The configuration **must** be valid, compile and run successfully *without any user changes* after adopting it. + - Use of remote packages in the YAML is permitted only if the above criteria are met. + - Your product name cannot contain "**ESPHome**" except in the case of *ending with* "**for ESPHome**" When your project matches all requirements of the Made for ESPHome program, From 8452a82845cccd4a9142fb89f67fd60b60d68e7f Mon Sep 17 00:00:00 2001 From: Kevin Ahrendt Date: Wed, 10 Jul 2024 21:21:07 -0400 Subject: [PATCH 021/173] [micro_wake_word] Version 2 Documentation (#4015) Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Co-authored-by: Keith Burzinski --- components/micro_wake_word.rst | 118 ++++++++++++++++++++------------- 1 file changed, 72 insertions(+), 46 deletions(-) diff --git a/components/micro_wake_word.rst b/components/micro_wake_word.rst index 5726025ff9..3f69ffd33d 100644 --- a/components/micro_wake_word.rst +++ b/components/micro_wake_word.rst @@ -10,72 +10,55 @@ This repository/library allows you to create a custom wake word for your ESPHome The training process is described on the `microWakeWord GitHub repository `__. -The ``micro_wake_word`` component requires an **ESP32-S3 with PSRAM** to function. .. code-block:: yaml # Shorthand name micro_wake_word: - model: okay_nabu + models: + - model: okay_nabu # Github shorthand URL micro_wake_word: - model: github://esphome/micro-wake-word-models/models/okay_nabu.json + models: + - model: github://esphome/micro-wake-word-models/models/v2/okay_nabu.json Configuration variables: ------------------------ -- **model** (**Required**, string): The model to use. This can be one of: +- **models** (**Required**, list): The models to use. - - A simple name of a model that exists in the official `ESPHome Models repository `__. - e.g. ``okay_nabu``. - - A github shorthand URL to a model JSON file. - e.g. ``github://esphome/micro-wake-word-models/models/okay_nabu.json@main``. - - A full URL to a model JSON file. - e.g. ``https://github.com/esphome/micro-wake-word-models/raw/main/models/okay_nabu.json``. + - **model** (**Required**, string): This can be one of: + - A simple name of a model that exists in the official `ESPHome Models repository `__. + e.g. ``okay_nabu``. + - A github shorthand URL to a model JSON file. + e.g. ``github://esphome/micro-wake-word-models/models/okay_nabu.json@main``. + - A full URL to a model JSON file. + e.g. ``https://github.com/esphome/micro-wake-word-models/raw/main/models/okay_nabu.json``. + + - **probability_cutoff** (*Optional*, percentage): The probability cutoff for the wake word detection. + If the probability of the wake word is below this value, the wake word is not detected. + A larger value reduces the number of false accepts but increases the number of false rejections. + - **sliding_window_size** (*Optional*, int): The size of the sliding window average for the wake word detection. A small value lowers latency but may increase the number of false accepts. - **on_wake_word_detected** (*Optional*, Automation): An automation to perform when the wake word is detected. The ``wake_word`` phrase from the model manifest is provided as a ``std::string`` to any actions in this automation. +- **vad** (*Optional*, model): Enable a Voice Activity Detection model to reduce false accepts from non-speech sounds. -The below two options are provided by the JSON file, but can be overridden in YAML. + - **model** (*Optional*, string): This can be one of: -- **probability_cutoff** (*Optional*, percentage): The probability cutoff for the wake word detection. - If the probability of the wake word is below this value, the wake word is not detected. - A larger value reduces the number of false accepts but increases the number of false rejections. -- **sliding_window_average_size** (*Optional*, int): The size of the sliding window average for the wake word detection. A small value lowers latency but may increase the number of false accepts. + - A github shorthand URL to a model JSON file. + e.g. ``github://esphome/micro-wake-word-models/models/v2/vad.json@main``. + - A full URL to a model JSON file. + e.g. ``https://github.com/esphome/micro-wake-word-models/raw/main/models/v2/vad.json``. -Model JSON ----------- + - **probability_cutoff** (*Optional*, percentage): The probability cutoff for voice activity detection. + If the probability is below this value, then no wake word will be accepted. + A larger value reduces the number of false accepts but increases the number of false rejections. + - **sliding_window_size** (*Optional*, int): The size of the sliding window for voice activity detection. The maximum of the probabilities in the sliding window is compared to ``probability_cutoff`` to determine if voice activity is detected. -.. code-block:: json - { - "type": "micro", - "wake_word": "okay nabu", - "author": "Kevin Ahrendt", - "website": "https://www.kevinahrendt.com/", - "model": "./okay_nabu.tflite", - "version": 1, - "micro": { - "probability_cutoff": 0.5, - "sliding_window_average_size": 10 - } - } - -The model JSON file contains the following fields that are all **required** unless otherwise specified: - -- **type** (string): The type of the model. This should always be ``micro``. -- **wake_word** (string): The wake word that the model is trained to detect. -- **author** (string): The name of the author that trained the model. -- **website** (string): The website of the author. -- **model** (string): The relative or absolute path or URL to the TFLite trained model file. -- **version** (int): The version of the JSON schema. Currently only version ``1`` exists. -- **micro** (object): The microWakeWord specific configuration. - - - **probability_cutoff** (float): The probability cutoff for the wake word detection. - If the probability of the wake word is below this value, the wake word is not detected. - - **sliding_window_average_size** (int): The size of the sliding window average for the wake word detection. - - **minimum_esphome_version** (*Optional* version): The minimum ESPHome version required to use this model. +The ``probability_cutoff`` and ``sliding_window_size`` are provided by the JSON file but can be overridden in YAML. A default VAD model is provided with the ``vad`` configuration variables, but a different model can be overridden in YAML. Automations @@ -97,13 +80,56 @@ Example usage .. code-block:: yaml micro_wake_word: - model: okay_nabu + vad: + models: + - model: okay_nabu + - model: hey_mycroft on_wake_word_detected: then: - voice_assistant.start: wake_word: !lambda return wake_word; +Model JSON +---------- + +.. code-block:: json + + { + "type": "micro", + "wake_word": "okay nabu", + "author": "Kevin Ahrendt", + "website": "https://www.kevinahrendt.com/", + "model": "stream_state_internal_quant.tflite", + "version": 2, + "micro": { + "probability_cutoff": 0.97, + "sliding_window_size": 5, + "feature_step_size": 10, + "tensor_arena_size": 22860, + "minimum_esphome_version": "2024.7" + } + } + +The model JSON file contains the following fields that are all **required** unless otherwise specified: + +- **type** (string): The type of the model. This should always be ``micro``. +- **wake_word** (string): The wake word that the model is trained to detect. +- **author** (string): The name of the author that trained the model. +- **website** (*optional* string): The website of the author. +- **model** (string): The relative or absolute path or URL to the TFLite trained model file. +- **trained_languages** (list of strings): A list of the wake word samples' primary languages/pronunciations used when training. +- **version** (int): The version of the JSON schema. The current version is ``2``. +- **micro** (object): The microWakeWord specific configuration. + + - **probability_cutoff** (float): The probability cutoff for the wake word detection. + If the probability of the wake word is below this value, the wake word is not detected. + - **sliding_window_size** (int): The size of the sliding window for the wake word detection. Wake words average all probabilities in the sliding window and VAD models use the maximum of all probabilities in the sliding window. + - **feature_step_size** (int): The step size for the spectrogram feature generation in milliseconds. + - **tensor_arena_size** (int): The minimum size of the tensor arena in bytes. + - **minimum_esphome_version** (version): The minimum ESPHome version required to use this model. + + See Also -------- From 082146d557d94fc19f2f87dfcb8813d907ab57f2 Mon Sep 17 00:00:00 2001 From: Pavlo Dudnytskyi Date: Thu, 11 Jul 2024 03:30:59 +0200 Subject: [PATCH 022/173] Information about UART component in host platform added (#4004) Co-authored-by: Keith Burzinski --- components/uart.rst | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/components/uart.rst b/components/uart.rst index 9632381667..731273cdb8 100644 --- a/components/uart.rst +++ b/components/uart.rst @@ -38,6 +38,9 @@ In some cases only **TX** or **RX** exists as the device at the other end only a for the data being sent. This could cause unexpected issues if you are using the Software UART and have devices that explicity check the parity. Most likely you will need to flip the ``parity`` flag in YAML. +.. note:: + + UART implementation for the host platform does not use TX and RX pins but port names. .. code-block:: yaml @@ -51,8 +54,9 @@ Configuration variables: ------------------------ - **baud_rate** (**Required**, int): The baud rate of the UART bus. -- **tx_pin** (*Optional*, :ref:`config-pin`): The pin to send data to from the ESP's perspective. Use the full pin schema and set ``inverted: true`` to invert logic levels. -- **rx_pin** (*Optional*, :ref:`config-pin`): The pin to receive data on from the ESP's perspective. Use the full pin schema and set ``inverted: true`` to invert logic levels. +- **tx_pin** (*Optional*, :ref:`config-pin`): The pin to send data to from the ESP's perspective. Use the full pin schema and set ``inverted: true`` to invert logic levels. Not supported by host platform. +- **rx_pin** (*Optional*, :ref:`config-pin`): The pin to receive data on from the ESP's perspective. Use the full pin schema and set ``inverted: true`` to invert logic levels. Not supported by host platform. +- **port** (*Optional*, string): Host platform only. Unix style name of the port to use. - **rx_buffer_size** (*Optional*, int): The size of the buffer used for receiving UART messages. Increase if you use an integration that needs to read big payloads from UART. Defaults to ``256``. - **data_bits** (*Optional*, int): The number of data bits used on the UART bus. Options: 5 to 8. Defaults to 8. - **parity** (*Optional*): The parity used on the UART bus. Options: ``NONE``, ``EVEN``, ``ODD``. Defaults to ``NONE``. @@ -258,6 +262,20 @@ Below are the methods to read current settings and modify them dynamically: This flexibility allows for dynamic adaptation to different communication requirements, enhancing the versatility of your ESPHome setup. +UART component with the host platform +------------------------------------- + +Since the host platform does not have physical UART pins, the UART component is implemented using Unix-style ports. Instead of using pins, +you can specify the port name to use. This implementation also supports components that have ``require_tx`` and ``require_rx`` options such as +smt100 etc. + +.. code-block:: yaml + + # Example configuration entry for host platform + uart: + baud_rate: 9600 + port: "/dev/ttyUSB0" + See Also -------- From d54f89a741351ccceb35017bb2474c825300a8b5 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Thu, 11 Jul 2024 15:41:48 +1200 Subject: [PATCH 023/173] Bump version to 2024.7.0b1 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index a840b136d9..698aee7ff6 100644 --- a/Doxygen +++ b/Doxygen @@ -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.7.0-dev +PROJECT_NUMBER = 2024.7.0b1 # 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 diff --git a/Makefile b/Makefile index 7c0268fd52..cd252d445f 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = 2024.6.6 +ESPHOME_REF = 2024.7.0b1 PAGEFIND_VERSION=1.1.0 PAGEFIND=pagefind NET_PAGEFIND=../pagefindbin/pagefind diff --git a/_static/version b/_static/version index 45336c3761..2bda8aa02e 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2024.7.0-dev \ No newline at end of file +2024.7.0b1 \ No newline at end of file diff --git a/conf.py b/conf.py index bb6562ff55..280d91fa51 100644 --- a/conf.py +++ b/conf.py @@ -69,7 +69,7 @@ # The short X.Y version. version = "2024.7" # The full version, including alpha/beta/rc tags. -release = "2024.7.0-dev" +release = "2024.7.0b1" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 2f143429fa4ac8584aee373f590036ef70c0d5f8 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Thu, 11 Jul 2024 15:41:48 +1200 Subject: [PATCH 024/173] Bump version to 2024.8.0-dev --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Doxygen b/Doxygen index a840b136d9..cdff1cae97 100644 --- a/Doxygen +++ b/Doxygen @@ -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.7.0-dev +PROJECT_NUMBER = 2024.8.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 diff --git a/Makefile b/Makefile index 7c0268fd52..aaf14f9512 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = 2024.6.6 +ESPHOME_REF = dev PAGEFIND_VERSION=1.1.0 PAGEFIND=pagefind NET_PAGEFIND=../pagefindbin/pagefind diff --git a/_static/version b/_static/version index 45336c3761..092c4094c9 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2024.7.0-dev \ No newline at end of file +2024.8.0-dev \ No newline at end of file diff --git a/conf.py b/conf.py index bb6562ff55..d9d29eb021 100644 --- a/conf.py +++ b/conf.py @@ -67,9 +67,9 @@ # built documents. # # The short X.Y version. -version = "2024.7" +version = "2024.8" # The full version, including alpha/beta/rc tags. -release = "2024.7.0-dev" +release = "2024.8.0-dev" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 11aeb1280ea77fc3ec5007c471001ea5f9bdb075 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Thu, 11 Jul 2024 15:44:40 +1200 Subject: [PATCH 025/173] Update changelog for 2024.7.0b1 --- changelog/2024.7.0.rst | 138 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 changelog/2024.7.0.rst diff --git a/changelog/2024.7.0.rst b/changelog/2024.7.0.rst new file mode 100644 index 0000000000..8b3edca170 --- /dev/null +++ b/changelog/2024.7.0.rst @@ -0,0 +1,138 @@ +ESPHome 2024.7.0 - 17th July 2024 +================================= + +.. seo:: + :description: Changelog for ESPHome 2024.7.0. + :author: Jesse Hills + :author_twitter: @jesserockz + + +Full list of changes +-------------------- + +New Features +^^^^^^^^^^^^ + +- [uptime] Add new timestamp type for uptime sensor :esphomepr:`7029` by :ghuser:`jesserockz` (new-feature) + +Breaking Changes +^^^^^^^^^^^^^^^^ + +- [dooya] Flip bit timings :esphomepr:`6947` by :ghuser:`jesserockz` (breaking-change) +- [modbus_text_sensor] new default ANSI encoding type :esphomepr:`6975` by :ghuser:`dudanov` (breaking-change) +- [micro_wake_word] Version 2 :esphomepr:`7032` by :ghuser:`kahrendt` (breaking-change) + +All changes +^^^^^^^^^^^ + +- [CI] Update device class sync script for update entities :esphomepr:`6895` by :ghuser:`jesserockz` +- X9c operation speed :esphomepr:`6898` by :ghuser:`oliverhihn` +- Bump actions/checkout from 4.1.6 to 4.1.7 :esphomepr:`6900` by :ghuser:`dependabot[bot]` +- [CI] Allow clang-tidy to see IDF components :esphomepr:`6903` by :ghuser:`kbx81` +- [esp32_camera] Use newer library version (for #6802) :esphomepr:`6809` by :ghuser:`kbx81` +- [micro_wake_word] Pin to esp-tflite-micro v1.3.1 :esphomepr:`6906` by :ghuser:`kbx81` +- VEML7700 Fix GCC build warnings :esphomepr:`6881` by :ghuser:`latonita` +- IDF 5 fixes for #6802 :esphomepr:`6911` by :ghuser:`kbx81` +- [CI-ethernet] Add/fix/organize/clean up ethernet component tests :esphomepr:`6916` by :ghuser:`kbx81` +- [CI-a01nyub] Consolidate test files :esphomepr:`6917` by :ghuser:`kbx81` +- [CI-api] Test fix for IDF 5+ :esphomepr:`6918` by :ghuser:`kbx81` +- [CI-http_request] Test fix for IDF 5+ :esphomepr:`6919` by :ghuser:`kbx81` +- [CI-wireguard] Test file consolidation :esphomepr:`6920` by :ghuser:`kbx81` +- [CI-esp32_hall] Remove IDF test :esphomepr:`6921` by :ghuser:`kbx81` +- [CI] Introduce testing for IDF 5 (and other arbitrary framework versions) :esphomepr:`6802` by :ghuser:`kbx81` +- uart: allow setting the UART id in final_validate_device_schema :esphomepr:`6923` by :ghuser:`paravoid` +- Bump peter-evans/create-pull-request from 6.0.5 to 6.1.0 :esphomepr:`6935` by :ghuser:`dependabot[bot]` +- Fix garbled graphics on LILYGO T4-S3 display :esphomepr:`6910` by :ghuser:`manuelkasper` +- Update cover.h for open() and close() compiler warnings :esphomepr:`6936` by :ghuser:`peter--s` +- [CI] Add debug component test for LibreTiny :esphomepr:`6945` by :ghuser:`kbx81` +- [dooya] Flip bit timings :esphomepr:`6947` by :ghuser:`jesserockz` (breaking-change) +- [qspi_amoled] Fix display remaining blank after update() before setup completion :esphomepr:`6958` by :ghuser:`manuelkasper` +- Bump docker/build-push-action from 6.0.1 to 6.1.0 in /.github/actions/build-image :esphomepr:`6962` by :ghuser:`dependabot[bot]` +- Synchronise Device Classes from Home Assistant :esphomepr:`6966` by :ghuser:`esphomebot` +- [qspi_amoled] Fix clear/fill with rotation :esphomepr:`6960` by :ghuser:`manuelkasper` +- [script] allow template parameters :esphomepr:`6972` by :ghuser:`ssieb` +- [haier] climate ID auto generation :esphomepr:`6949` by :ghuser:`dudanov` +- [core] Add script to extract actions, conditions, and pin_providers :esphomepr:`6929` by :ghuser:`jesserockz` +- [external_files] Move common ``download_content`` function to ``external_files.py`` :esphomepr:`6982` by :ghuser:`jesserockz` +- Do not build mDNS when mDNS is disabled via yaml :esphomepr:`6979` by :ghuser:`Links2004` +- Bump HeatpumpIR and IRremoteESP8266 :esphomepr:`6948` by :ghuser:`nagyrobi` +- [CI] Add more mdns and safe_mode tests :esphomepr:`6990` by :ghuser:`kbx81` +- [CI] Remove old test yamls from CI runs :esphomepr:`6991` by :ghuser:`kbx81` +- [CI] Update tests to run against IDF 5.1 :esphomepr:`6992` by :ghuser:`kbx81` +- Bump docker/build-push-action from 6.1.0 to 6.2.0 in /.github/actions/build-image :esphomepr:`6999` by :ghuser:`dependabot[bot]` +- [tuya] implement command 0x22 - datapoint-async :esphomepr:`6980` by :ghuser:`christiaanderidder` +- Allow wireguard to bind to PPP interface :esphomepr:`6989` by :ghuser:`droscy` +- [modbus_text_sensor] new default ANSI encoding type :esphomepr:`6975` by :ghuser:`dudanov` (breaking-change) +- [CI] Remove old test yaml files :esphomepr:`7002` by :ghuser:`kbx81` +- Revert "[CI] Update tests to run against IDF 5.1" :esphomepr:`7003` by :ghuser:`jesserockz` +- Enable devcontainer linters :esphomepr:`7019` by :ghuser:`orland0m` +- 'uart' and 'improv_serial' need to understand non-UART logger configurations :esphomepr:`6998` by :ghuser:`kpfleming` +- Make crc8 const-correct :esphomepr:`7027` by :ghuser:`nattgris` +- [CI] Run all tests when a base test changes :esphomepr:`7010` by :ghuser:`kbx81` +- [CI] Update tests to run against IDF 5.1 :esphomepr:`7011` by :ghuser:`kbx81` +- [uptime] Add new timestamp type for uptime sensor :esphomepr:`7029` by :ghuser:`jesserockz` (new-feature) +- Fix compile errors on ESP32-C6 with W5500 SPI ethernet :esphomepr:`7030` by :ghuser:`LeeHanYeong` +- Bump docker/setup-buildx-action from 3.3.0 to 3.4.0 :esphomepr:`7043` by :ghuser:`dependabot[bot]` +- Bump docker/build-push-action from 6.2.0 to 6.3.0 in /.github/actions/build-image :esphomepr:`7038` by :ghuser:`dependabot[bot]` +- Bump docker/setup-qemu-action from 3.0.0 to 3.1.0 :esphomepr:`7039` by :ghuser:`dependabot[bot]` +- Bump actions/upload-artifact from 4.3.3 to 4.3.4 :esphomepr:`7047` by :ghuser:`dependabot[bot]` +- Bump actions/download-artifact from 4.1.7 to 4.1.8 :esphomepr:`7046` by :ghuser:`dependabot[bot]` +- Fix display of update state in webinterfae :esphomepr:`7045` by :ghuser:`leejoow` +- Haier component update to support more protocol variations :esphomepr:`7040` by :ghuser:`paveldn` +- Don't test for IPv6 addresses when min_ipv6_addr_count is 0 :esphomepr:`7037` by :ghuser:`colmbuckley` +- [CI] Allow running specific target test(s) only :esphomepr:`7051` by :ghuser:`tomaszduda23` +- Bump actions/setup-python from 5.1.0 to 5.1.1 in /.github/actions/restore-python :esphomepr:`7071` by :ghuser:`dependabot[bot]` +- Fix RC Switch protocol not transmitting correctly via IR :esphomepr:`5411` by :ghuser:`michd` +- [micro_wake_word] Version 2 :esphomepr:`7032` by :ghuser:`kahrendt` (breaking-change) +- UART component support added for host platform :esphomepr:`6912` by :ghuser:`paveldn` +- Configure ap ip for RP2040 :esphomepr:`7065` by :ghuser:`HeMan` + +Past Changelogs +--------------- + +- :doc:`2024.6.0` +- :doc:`2024.5.0` +- :doc:`2024.4.0` +- :doc:`2024.3.0` +- :doc:`2024.2.0` +- :doc:`2023.12.0` +- :doc:`2023.11.0` +- :doc:`2023.10.0` +- :doc:`2023.9.0` +- :doc:`2023.8.0` +- :doc:`2023.7.0` +- :doc:`2023.6.0` +- :doc:`2023.5.0` +- :doc:`2023.4.0` +- :doc:`2023.3.0` +- :doc:`2023.2.0` +- :doc:`2022.12.0` +- :doc:`2022.11.0` +- :doc:`2022.10.0` +- :doc:`2022.9.0` +- :doc:`2022.8.0` +- :doc:`2022.6.0` +- :doc:`2022.5.0` +- :doc:`2022.4.0` +- :doc:`2022.3.0` +- :doc:`2022.2.0` +- :doc:`2022.1.0` +- :doc:`2021.12.0` +- :doc:`2021.11.0` +- :doc:`2021.10.0` +- :doc:`2021.9.0` +- :doc:`2021.8.0` +- :doc:`v1.20.0` +- :doc:`v1.19.0` +- :doc:`v1.18.0` +- :doc:`v1.17.0` +- :doc:`v1.16.0` +- :doc:`v1.15.0` +- :doc:`v1.14.0` +- :doc:`v1.13.0` +- :doc:`v1.12.0` +- :doc:`v1.11.0` +- :doc:`v1.10.0` +- :doc:`v1.9.0` +- :doc:`v1.8.0` +- :doc:`v1.7.0` From 82d41c4248931868b7710d047c30b37f486d8a13 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Thu, 11 Jul 2024 15:45:24 +1200 Subject: [PATCH 026/173] Update supporters for 2024.7.0b1 --- guides/supporters.rst | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index e585fde6eb..b12964913d 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -253,6 +253,7 @@ Contributors - `brtchip-tuannguyen (@brtchip-tuannguyen) `__ - `buddydvd (@buddydvd) `__ - `bulburDE (@bulburDE) `__ +- `Justin Bunton (@Bunton33) `__ - `Matt Burke (@burkemw3) `__ - `Jon Little (@burundiocibu) `__ - `buxtronix (@buxtronix) `__ @@ -331,6 +332,7 @@ Contributors - `Coenie Richards (@coenier) `__ - `Ashton Lafferty (@cogneato) `__ - `Colin Leroy-Mira (@colinleroy) `__ +- `Colm (@colmbuckley) `__ - `ColoMAX (@ColoMAX) `__ - `Max (@coltoncat) `__ - `Conclusio (@Conclusio) `__ @@ -393,6 +395,7 @@ Contributors - `Aliasghar Dashkhaneh (@dashkhaneh) `__ - `Sylwester (@DatanoiseTV) `__ - `Anthony Uk (@dataway) `__ +- `Datortarps (@Datortarp5) `__ - `Dav-id (@dav-id-org) `__ - `DAVe3283 (@DAVe3283) `__ - `DaveCorder (@DaveCorder) `__ @@ -430,6 +433,7 @@ Contributors - `Mickaël Le Baillif (@demikl) `__ - `denes44 (@denes44) `__ - `Dennis (@dennisvbussel) `__ +- `Denis Prokopenko (@denproc) `__ - `dentra (@dentra) `__ - `depasseg (@depasseg) `__ - `Davide Depau (@Depau) `__ @@ -641,6 +645,7 @@ Contributors - `Greg Cormier (@gcormier) `__ - `GeekVisit (@GeekVisit) `__ - `Ian Reinhart Geiser (@geiseri) `__ +- `Gene Hand (@genehand) `__ - `R Huish (@genestealer) `__ - `Geoff Davis (@geoffdavis) `__ - `Geoffrey Van Landeghem (@geoffrey-vl) `__ @@ -895,6 +900,7 @@ Contributors - `joskfg (@joskfg) `__ - `Joscha Wagner (@jowgn) `__ - `Javier Peletier (@jpeletier) `__ +- `Jan Rieger (@jrieger) `__ - `jsuanet (@jsuanet) `__ - `James Szalay (@jtszalay) `__ - `Jules-R (@Jules-R) `__ @@ -928,6 +934,7 @@ Contributors - `kbouchard111 (@kbouchard111) `__ - `Keith Burzinski (@kbx81) `__ - `Ken Piper (@Kealper) `__ +- `kecajtop (@kecajtop) `__ - `Tom Keller (@kellertk) `__ - `Kelvie Wong (@kelvie) `__ - `Kenny Stier (@KennyStier) `__ @@ -997,6 +1004,7 @@ Contributors - `lcavalli (@lcavalli) `__ - `Craig Fletcher (@leakypixel) `__ - `Dominik Wagenknecht (@LeDominik) `__ +- `leejoow (@leejoow) `__ - `Benny de Leeuw (@leeuwte) `__ - `Thayne (@Legot) `__ - `lein1013 (@lein1013) `__ @@ -1405,6 +1413,7 @@ Contributors - `pplucky (@pplucky) `__ - `Peter Provost (@PProvost) `__ - `Q. Marchi (@preeefix) `__ +- `PricelessToolkit (@PricelessToolkit) `__ - `Francesco Ciocchetti (@primeroz) `__ - `probonopd (@probonopd) `__ - `Gary Morris (@progrmr) `__ @@ -1791,6 +1800,7 @@ Contributors - `Aaron Mildenstein (@untergeek) `__ - `uPesy Electronics (@uPesy) `__ - `user897943 (@user897943) `__ +- `uSlackr (@uSlackr) `__ - `UT2UH (@UT2UH) `__ - `Vlad Yarotsky (@v-yarotsky) `__ - `Vc (@Valcob) `__ @@ -1893,4 +1903,4 @@ Contributors - `Christian Zufferey (@zuzu59) `__ - `Zynth-dev (@Zynth-dev) `__ -*This page was last updated July 3, 2024.* +*This page was last updated July 11, 2024.* From 909dd9a0121f36ad12b72b04a303c9cabd4de715 Mon Sep 17 00:00:00 2001 From: Jani Luoti Date: Thu, 11 Jul 2024 19:34:39 +0300 Subject: [PATCH 027/173] Update power_meter.rst (#4036) Change average_throttle to throttle_average --- cookbook/power_meter.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cookbook/power_meter.rst b/cookbook/power_meter.rst index c829a9d93f..0411666e2c 100644 --- a/cookbook/power_meter.rst +++ b/cookbook/power_meter.rst @@ -46,7 +46,7 @@ Adjust ``GPIO12`` to match your set up of course. The output from the pulse coun .. note:: - The ``pulse_meter`` sensor sends an update every time a pulse is detected. This can quickly lead to sub-second updates which can be a bit much for Home Assistant to handle. To avoid this, you can use the ``average_throttle`` filter to only send updates up to a desired interval: + The ``pulse_meter`` sensor sends an update every time a pulse is detected. This can quickly lead to sub-second updates which can be a bit much for Home Assistant to handle. To avoid this, you can use the ``throttle_average`` filter to only send updates up to a desired interval: .. code-block:: yaml @@ -54,7 +54,7 @@ Adjust ``GPIO12`` to match your set up of course. The output from the pulse coun - platform: pulse_meter # ... filters: - - average_throttle: 10s + - throttle_average: 10s - filter_out: NaN .. note:: @@ -97,7 +97,7 @@ When the total sensor is configured, ``pulse_meter`` also reports the total numb accuracy_decimals: 3 filters: - multiply: 0.0001 # (1/10000 pulses per kWh) - # - average_throttle: 10s + # - throttle_average: 10s # - filter_out: NaN (Re)Setting the total energy value From 0af8c80ea78fb759185118679ac2e5f47dbe327b Mon Sep 17 00:00:00 2001 From: Tomi Junnila Date: Thu, 11 Jul 2024 23:33:27 +0300 Subject: [PATCH 028/173] Add yac1fb9 model for the gree climate_ir component (#4029) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: H. Árkosi Róbert --- components/climate/climate_ir.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/components/climate/climate_ir.rst b/components/climate/climate_ir.rst index 6f67f8f9c5..7013e66929 100644 --- a/components/climate/climate_ir.rst +++ b/components/climate/climate_ir.rst @@ -414,6 +414,7 @@ Configuration variables: - ``yan`` - ``yaa`` - ``yac`` + - ``yac1fb9`` .. code-block:: yaml From d104d944379c764aca46313ab64b2313979f5a3d Mon Sep 17 00:00:00 2001 From: soeffi Date: Thu, 11 Jul 2024 23:30:51 +0200 Subject: [PATCH 029/173] jsn_sr04t: Added options for AJ_SR04M sensor types (#4022) --- components/sensor/jsn_sr04t.rst | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/components/sensor/jsn_sr04t.rst b/components/sensor/jsn_sr04t.rst index 700701255a..50cd632082 100644 --- a/components/sensor/jsn_sr04t.rst +++ b/components/sensor/jsn_sr04t.rst @@ -6,7 +6,7 @@ JSN-SR04T Waterproof Ultrasonic Range Finder :image: jsn-sr04t-v3.jpg :keywords: JSN-SR04T -This sensor allows you to use the JSN-SR04T Waterproof Ultrasonic Range Finder **in Mode 1 and 2** +This sensor allows you to use the JSN-SR04T and AJ_SR04M Waterproof Ultrasonic Range Finder **in Mode 1 and 2** with ESPHome to measure distances. This sensor can measure ranges between 25 centimeters and 600 centimeters with a resolution of 1 millimeter. @@ -18,6 +18,12 @@ Configure the JSN-SR04T for mode 2: - **V1.0 and V2.0**: Add a 120k resistor to pad R27. - **V3.0**: Short pad M2 or add 120k resistor to pad mode. +Configure the AJ_SR04M for mode 1: + - Add a 120k resistor to pad R19. + +Configure the AJ_SR04M for mode 2: + - Add a 47k resistor to pad R19. + .. figure:: images/jsn-sr04t-v3-mode-select-pads.jpg :align: center :width: 50.0% @@ -55,6 +61,7 @@ Configuration variables: sensor. Defaults to ``60s``. Not applicable in mode 1. - **uart_id** (*Optional*, :ref:`config-id`): The ID of the :ref:`UART bus ` you wish to use for this sensor. Use this if you want to use multiple UART buses at once. +- **model** (*Optional*): Sensor model. Available options: ``jsn_sr04t`` (default) and ``aj_sr04t``. - All other options from :ref:`Sensor `. See Also From 978879f41a77bd4fb0944ba08458d9c8d9a43dff Mon Sep 17 00:00:00 2001 From: David Martin <51385971+3ative@users.noreply.github.com> Date: Fri, 12 Jul 2024 15:39:39 +0100 Subject: [PATCH 030/173] Update globals.rst (#4044) Added globals.set Action Lambda Example --- components/globals.rst | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/components/globals.rst b/components/globals.rst index c1f34bf1a6..fae21191cc 100644 --- a/components/globals.rst +++ b/components/globals.rst @@ -68,6 +68,14 @@ Configuration variables: - **value** (**Required**, :ref:`templatable `): The value to set the global variable to. +.. note:: + + This action can also be written in lambdas: + + .. code-block:: cpp + + id(my_global_var) = 10; + See Also -------- From aacf4a0865eef12c8165c9b2ae4a7ea893117870 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=2E=20=C3=81rkosi=20R=C3=B3bert?= Date: Fri, 12 Jul 2024 23:18:28 +0200 Subject: [PATCH 031/173] Remove `esp8266_restore_from_flash` note (#4040) --- components/cover/time_based.rst | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/components/cover/time_based.rst b/components/cover/time_based.rst index d879948227..d5888b9233 100644 --- a/components/cover/time_based.rst +++ b/components/cover/time_based.rst @@ -7,7 +7,8 @@ Time Based Cover The ``time_based`` cover platform allows you to create covers with position control that do not have any position feedback. The state of the cover is thus always an assumed one, the current -position is approximated with the time the cover has been moving in a direction. +position is approximated with the time the cover has been moving in a direction. The state +of the cover can be restored at node reboot. .. figure:: images/more-info-ui.png :align: center @@ -71,12 +72,6 @@ Configuration variables: The stop button on the UI is always enabled even when the cover is stopped and each press on the button will cause the ``stop_action`` to be performed. -.. note:: - - The state of the cover can be restored from flash after a node reboot, with - ``esp8266_restore_from_flash: true`` option set. - See :doc:`esp8266_restore_from_flash ` for details. - Handle stop_action: ------------------------ For some cover controllers, separate switches for UP and DOWN action are used while a stop is issued when sending a counter command. From 0b64012de7d0f47280b85db2476bae9d82a4474f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=2E=20=C3=81rkosi=20R=C3=B3bert?= Date: Fri, 12 Jul 2024 23:18:42 +0200 Subject: [PATCH 032/173] Remove `esp8266_restore_from_flash` reference (#4041) --- components/globals.rst | 1 - 1 file changed, 1 deletion(-) diff --git a/components/globals.rst b/components/globals.rst index fae21191cc..6097d95fe7 100644 --- a/components/globals.rst +++ b/components/globals.rst @@ -40,7 +40,6 @@ Configuration variables: ``int`` (for integers), ``float`` (for decimal numbers), ``int[50]`` for an array of 50 integers, etc. - **restore_value** (*Optional*, boolean): Whether to try to restore the state on boot up. Be careful: on the ESP8266, you only have a total of 96 bytes available for this! Defaults to ``no``. - This will use storage in "RTC memory", so it won't survive a power-cycle unless you use the ``esp8266_restore_from_flash`` option to save to flash. See :doc:`esp8266_restore_from_flash ` for details. - **max_restore_data_length** (*Optional*, integer): Only applies to variables of type ``std::string``. ESPHome will allocate enough space for this many characters, plus single character of overhead. Strings longer than this will not be saved. The max value of this variable is 254 characters, and the default is 63 characters. - **initial_value** (*Optional*, string): The value with which to initialize this variable if the state From 13d318701f8b317ffe77dab6514a093ea7eabc87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=2E=20=C3=81rkosi=20R=C3=B3bert?= Date: Fri, 12 Jul 2024 23:18:53 +0200 Subject: [PATCH 033/173] Remove `esp8266_restore_from_flash` reference (#4042) --- components/light/index.rst | 2 -- 1 file changed, 2 deletions(-) diff --git a/components/light/index.rst b/components/light/index.rst index 5ccae3afb5..60125554ec 100644 --- a/components/light/index.rst +++ b/components/light/index.rst @@ -43,8 +43,6 @@ Configuration variables: - **flash_transition_length** (*Optional*, :ref:`config-time`): The transition length to use when flash is called. Defaults to ``0s``. - **restore_mode** (*Optional*): Control how the light attempts to restore state on bootup. - For restoring on ESP8266s, also see ``esp8266_restore_from_flash`` in the - :doc:`esphome section `. - ``RESTORE_DEFAULT_OFF`` - Attempt to restore state and default to OFF if not possible to restore. - ``RESTORE_DEFAULT_ON`` - Attempt to restore state and default to ON. From cf0ce8f615d848486a7a93788fb3f9c356058e51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=2E=20=C3=81rkosi=20R=C3=B3bert?= Date: Fri, 12 Jul 2024 23:19:05 +0200 Subject: [PATCH 034/173] Remove `esp8266_restore_from_flash` reference (#4043) --- components/sensor/rotary_encoder.rst | 2 -- 1 file changed, 2 deletions(-) diff --git a/components/sensor/rotary_encoder.rst b/components/sensor/rotary_encoder.rst index 476b4319c6..c5c9aa5e04 100644 --- a/components/sensor/rotary_encoder.rst +++ b/components/sensor/rotary_encoder.rst @@ -76,8 +76,6 @@ Configuration variables: "unknown" value at first. If you set this option to true, the value is published once after boot and when it changes. Defaults to ``false``. - **restore_mode** (*Optional*): Control how the Rotary Encoder attempts to restore state on bootup. - For restoring on ESP8266s, also see ``esp8266_restore_from_flash`` in the - :doc:`esphome section `. - ``RESTORE_DEFAULT_ZERO`` - (Default) Attempt to restore state and default to zero (0) if not possible to restore. - ``ALWAYS_ZERO`` - Always initialize the counter with value zero (0). From 5536a2c58f15a2ceb9b5a4267a6af7bb5255ecbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=2E=20=C3=81rkosi=20R=C3=B3bert?= Date: Fri, 12 Jul 2024 23:19:42 +0200 Subject: [PATCH 035/173] Bump HeatpumpIR - add protocols (#3996) Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/climate/climate_ir.rst | 314 +++++++++++------------------- 1 file changed, 113 insertions(+), 201 deletions(-) diff --git a/components/climate/climate_ir.rst b/components/climate/climate_ir.rst index 7013e66929..8cf167f221 100644 --- a/components/climate/climate_ir.rst +++ b/components/climate/climate_ir.rst @@ -10,17 +10,15 @@ control signal, just as the unit's handheld remote controller would. .. figure:: images/climate-ui.png :align: center - :width: 60.0% + :width: 40.0% There is a growing list of compatible units. If your unit is not listed below you should submit a feature request (see FAQ). +---------------------------------------+---------------------+----------------------+ -| Name | Platform name | Supports receiver | +| Supported units | Platform name | Supports receiver | | | | | +=======================================+=====================+======================+ -| :ref:`Arduino-HeatpumpIR` | ``heatpumpir`` | | -+---------------------------------------+---------------------+----------------------+ | Ballu | ``ballu`` | yes | +---------------------------------------+---------------------+----------------------+ | Coolix | ``coolix`` | yes | @@ -39,7 +37,7 @@ submit a feature request (see FAQ). +---------------------------------------+---------------------+----------------------+ | :ref:`GREE` | ``gree`` | | +---------------------------------------+---------------------+----------------------+ -| Hitachi | ``hitachi_ac344`` | yes | +| Hitachi | ``hitachi_ac344``, | yes | | | ``hitachi_ac424`` | | +---------------------------------------+---------------------+----------------------+ | :ref:`LG` | ``climate_ir_lg`` | yes | @@ -62,11 +60,15 @@ submit a feature request (see FAQ). +---------------------------------------+---------------------+----------------------+ | :ref:`ZH/LT-01` | ``zhlt01`` | yes | +---------------------------------------+---------------------+----------------------+ +| :ref:`Arduino-HeatpumpIR` | ``heatpumpir`` | | +| library | | | ++---------------------------------------+---------------------+----------------------+ This component requires that you have configured a :doc:`/components/remote_transmitter`. Due to the unidirectional nature of IR remote controllers, this component cannot determine the actual state of the device and will assume the state of the device is the latest state requested. +The assumed state can be restored at boot. However, when receiver is supported, you can optionally add a :doc:`/components/remote_receiver` component so the climate state will be tracked when it is operated with the original remote @@ -80,7 +82,7 @@ controller unit. carrier_duty_percent: 50% climate: - - platform: coolix # adjust to match your AC unit! + - platform: REPLACEME name: "Living Room AC" Configuration Variables: @@ -95,98 +97,16 @@ Configuration Variables: receiver. see: :ref:`ir-receiver_id`. - All other options from :ref:`Climate `. -Advanced Options ----------------- +**Advanced Options** - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **transmitter_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the remote transmitter. -.. _heatpumpir: - -Arduino-HeatpumpIR ------------------- - -The ``heatpumpir`` platform supports dozens of manufacturers and hundreds of AC units by utilising the `Arduino-HeatpumpIR library `__. - -This platform should only be used if your AC unit is not supported by any of the other (native) platforms. No support can be provided for Arduino-HeatpumpIR, because it is a third party library. - -This platform utilises the library's generic one-size-fits-all API, which might not line up perfectly with all of the supported AC units. For example, some AC units have more fan speed options than what the generic API supports. - -Additional configuration must be specified for this platform: - -- **protocol** (**Required**, string): Choose one of Arduino-HeatpumpIR's supported protcols: - ``aux``, ``ballu``, ``carrier_mca``, ``carrier_nqv``, ``carrier_qlima_1``, ``carrier_qlima_1``, ``daikin``, ``daikin_arc417``, - ``daikin_arc480``, ``electroluxyal``, ``fuego``, ``fujitsu_awyz``, ``gree``, ``greeyaa``, ``greeyac``, ``greeyan``, ``greeyap``, - ``greeyt``, ``hisense_aud``, ``hitachi``, ``hyundai``, ``ivt``, ``midea``, ``mitsubishi_fa``, ``mitsubishi_fd``, - ``mitsubishi_fe``, ``mitsubishi_heavy_fdtc``, ``mitsubishi_heavy_zj``, ``mitsubishi_heavy_zm``, ``mitsubishi_heavy_zmp``, - ``mitsubishi_kj``, ``mitsubishi_msc``, ``mitsubishi_msy``, ``mitsubishi_sez``, ``nibe``, ``panasonic_ckp``, ``panasonic_dke``, - ``panasonic_jke``, ``panasonic_lke``, ``panasonic_nke``, ``samsung_aqv``, ``samsung_aqv12msan``, - ``samsung_fjm``, ``sharp``, ``toshiba``, ``toshiba_daiseikai``, ``zhjg01``, ``zhlt01``. - - -- **horizontal_default** (**Required**, string): What to default to when the AC unit's horizontal direction is *not* set to swing. Options are: ``left``, ``mleft``, ``middle``, ``mright``, ``right``, ``auto``. -- **vertical_default** (**Required**, string): What to default to when the AC unit's vertical direction is *not* set to swing. Options are: ``down``, ``mdown``, ``middle``, ``mup``, ``up``, ``auto``. -- **max_temperature** (**Required**, float): The maximum temperature that the AC unit supports being set to. -- **min_temperature** (**Required**, float): The minimum temperature that the AC unit supports being set to. -- **sensor** (*Optional*, :ref:`config-id`): The sensor that is used to measure the ambient temperature. - -.. note:: - - - The ``greeyac`` protocol supports a feature Gree calls "I-Feel". The handheld remote control - has a built-in temperature sensor and it will periodically transmit the temperature from this sensor to the - AC unit. If a ``sensor`` is provided in the configuration with this model, the sensor's temperature will be - transmitted to the ``greeyac`` device in the same manner as the original remote controller. How often the - temperature is transmitted is determined by the ``update_interval`` assigned to the ``sensor``. Note that - ``update_interval`` must be less than 10 minutes or the ``greeyac`` device will revert to using its own - internal temperature sensor; a value of 2 minutes seems to work well. See :doc:`/components/sensor/index` - for more information. - - - The ``zhlt01`` protocol supports multiple AC brands: Eurom, Chigo, Tristar, Tecnomaster, Elgin, Geant, Tekno, Topair, Proma, Sumikura, JBS, Turbo Air, Nakatomy, Celestial Air, Ager, Blueway, Airlux, etc. - -.. _ir-receiver_id: - -Using a Receiver ----------------- - -.. note:: - - This is only supported with select climate devices, see "Supports receiver" in the table at the top of the page. - -Optionally, some platforms can listen to data the climate device sends over infrared to update their state ( -for example what mode the device is in). By setting up a :doc:`remote_receiver ` -and passing its ID to the climate platform you can enable this mode. - -When using a receiver it is recommended to put the IR receiver as close as possible to the equipment's -IR receiver. - -.. code-block:: yaml - - # Example configuration entry - remote_receiver: - id: rcvr - pin: - number: GPIOXX - inverted: true - mode: - input: true - pullup: true - # high 55% tolerance is recommended for some remote control units - tolerance: 55% - - climate: - - platform: coolix - name: "Living Room AC" - receiver_id: rcvr +**Specific configuration variables:** .. _climate_ir_lg: -``climate_ir_lg`` Climate -------------------------- - -Additional configuration is available for this platform - - -Configuration variables: +``climate_ir_lg`` **Climate**: - **header_high** (*Optional*, :ref:`config-time`): time for the high part of the header for the LG protocol. Defaults to ``8000us`` - **header_low** (*Optional*, :ref:`config-time`): time for the low part of the header for the LG protocol. Defaults to ``4000us`` @@ -204,31 +124,12 @@ Configuration variables: header_high: 3265us # AC Units from LG in Brazil, for example use these timings header_low: 9856us -.. _daikin_arc: - -``daikin_arc`` Climate -------------------------- - -The Daikin ARC remotes are used by the japanese model of Daikin. - -.. code-block:: yaml - - # Example configuration entry - climate: - - platform: daikin_arc - name: "AC" - sensor: room_temperature - .. _daikin_brc: -``daikin_brc`` Climate -------------------------- +``daikin_brc`` **Climate**: The Daikin BRC remotes are used by the ceiling cassette model of Daikin heatpumps. - -Configuration variables: - - **use_fahrenheit** (*Optional*, boolean): U.S. models of the Daikin BRC remote send the temperature in Fahrenheit, if your remote shows Fahrenheit and can not be changed to Celsius then set this to true. Defaults to ``false``. .. code-block:: yaml @@ -240,29 +141,44 @@ Configuration variables: sensor: room_temperature use_fahrenheit: true - .. _delonghi_ir: -``delonghi`` Climate -------------------------- +``delonghi`` **Climate**: -Currently supports the protocol used by some Delonghi portable units +The ``delonghi`` climate currently supports the protocol used by some Delonghi portable units, known working with Delonghi PAC WE 120HP. -Known working with: +.. _daikin_arc: -- Delonghi PAC WE 120HP +``daikin_arc`` **Climate**: -.. _midea_ir: +The Daikin ARC remotes (``daikin_arc`` climate, ``daikin_arc417``, ``daikin_arc480`` protocols of :ref:`Arduino-HeatpumpIR`) are used by the japanese model of Daikin. -``midea_ir`` Climate -------------------------- +.. _gree_ir: -These air conditioners support two protocols: Midea and Coolix. Therefore, when using an IR receiver, it considers both protocols and publishes the received states. +``gree`` **Climate**: -Additional configuration is available for this platform +- **model** (*Required*, string): GREE has a few different protocols depending on model. One of these will work for you. + - ``generic`` + - ``yan`` + - ``yaa`` + - ``yac`` + - ``yac1fb9`` + +.. code-block:: yaml + + # Example configuration entry + climate: + - platform: gree + name: "AC" + sensor: room_temperature + model: yan + +.. _midea_ir: -Configuration variables: +``midea_ir`` **Climate**: + +These air conditioners support two protocols: Midea and Coolix. Therefore, when using an IR receiver, it considers both protocols and publishes the received states. - **use_fahrenheit** (*Optional*, boolean): Allows you to transfer the temperature to the air conditioner in degrees Fahrenheit. The air conditioner display also shows the temperature in Fahrenheit. Defaults to ``false``. @@ -282,17 +198,12 @@ Configuration variables: .. _mitsubishi: -``mitsubishi`` Climate ------------------------- - -Additonal configurations available for this platform. - -Configuration variables: +``mitsubishi`` **Climate**: - **set_fan_mode** (*Optional*, string): Select the fan modes desired or that are supported on your remote. Defaults to ``3levels`` - - Options are: ``3levels`` , ``4levels``, ``quiet_4levels``. - + - Options are: ``3levels`` , ``4levels``, ``quiet_4levels``. + - ``3levels``; Low [fan speed 1], Medium [2], High [3] - ``4levels``; Low [1], Middle [2], Medium [3], High [4] - ``quiet_4levels``; Low [1], Middle [2], Medium [3], High [4], Quiet [5] @@ -300,10 +211,10 @@ Configuration variables: - **supports_dry** (*Optional*, boolean): Enables setting dry mode for this unit. Defaults to ``false``. - **supports_fan_only** (*Optional*, boolean): Enables setting fan only mode for this unit. Confirm that mode is supported on your remote. Defaults to ``false``. -- **horizontal_default** (*Optional*, string): What to default to when the AC unit's horizontal direction is *not* set to swing. Defaults to ``middle``. +- **horizontal_default** (*Optional*, string): What to default to when the AC unit's horizontal direction is *not* set to swing. Defaults to ``middle``. - Options are: ``left``, ``middle-left``, ``middle``, ``middle-right``, ``right``, ``auto`` -- **vertical_default** (*Optional*, string): What to default to when the AC unit's vertical direction is *not* set to swing. Defaults to ``middle``. +- **vertical_default** (*Optional*, string): What to default to when the AC unit's vertical direction is *not* set to swing. Defaults to ``middle``. - Options are: ``down``, ``middle-down``, ``middle``, ``middle-up``, ``up``, ``auto`` @@ -325,13 +236,7 @@ Configuration variables: .. _toshiba: -``toshiba`` Climate -------------------- - -Additional configuration is available for this model. - - -Configuration variables: +``toshiba`` **Climate**: - **model** (*Optional*, string): There are two valid models @@ -357,32 +262,18 @@ Configuration variables: - This climate IR component is also known to work with Midea model MAP14HS1TBL and may work with other similar models, as well. (Midea acquired Toshiba's product line and re-branded it.) - .. _whirlpool: +``whirlpool`` **Climate**: -``whirlpool`` Climate ---------------------- - -Additional configuration is available for this model. - - -Configuration variables: - -- **model** (*Optional*, string): There are two valid models +- **model** (*Optional*, string): There are two valid models to choose from: - ``DG11J1-3A``: Temperature range is from 18 to 32 (default) - ``DG11J1-91``: Temperature range is from 16 to 30 .. _whynter: -``whynter`` Climate -------------------------- - -Additional configuration is available for this platform - - -Configuration variables: +``whynter`` **Climate**: - **use_fahrenheit** (*Optional*, boolean): Allows you to transfer the temperature to the air conditioner in degrees Fahrenheit. The air conditioner display also shows the temperature in Fahrenheit. Defaults to ``false``. @@ -396,64 +287,84 @@ Configuration variables: use_fahrenheit: true supports_heat: true +.. _zhlt01: -.. _gree_ir: - +``zhlt01`` **Climate**: -``gree`` Climate ---------------------- +The ``zhlt01`` climate and protocol, based on the ZH/LT-01 remote controller, is used with many locally branded airconditioners, like: Eurom, Chigo, Tristar, Tecnomaster, Elgin, Geant, Tekno, Topair, Proma, Sumikura, JBS, Turbo Air, Nakatomy, Celestial Air, Ager, Blueway, Airlux, etc. -Additional configuration is available for this model. +.. _ir-receiver_id: +Using a Receiver +---------------- -Configuration variables: +.. note:: -- **model** (*Required*, string): GREE has a few different protocols depending on model. One of these will work for you. + This is only supported with select climate devices, see "Supports receiver" in the table at the top of the page. - - ``generic`` - - ``yan`` - - ``yaa`` - - ``yac`` - - ``yac1fb9`` +Optionally, some platforms can listen to data the climate device sends over infrared to update their state ( +for example what mode the device is in). By setting up a :doc:`remote_receiver ` +and passing its ID to the climate platform you can enable this mode. +When using a receiver it is recommended to put the IR receiver as close as possible to the equipment's +IR receiver. .. code-block:: yaml # Example configuration entry + remote_receiver: + id: rcvr + pin: + number: GPIOXX + inverted: true + mode: + input: true + pullup: true + # high 55% tolerance is recommended for some remote control units + tolerance: 55% + climate: - - platform: gree - name: "AC" - sensor: room_temperature - model: yan + - platform: REPLACEME + name: "Living Room AC" + receiver_id: rcvr -.. _zhlt01: +.. _heatpumpir: + +Arduino-HeatpumpIR +------------------ + +The ``heatpumpir`` platform supports dozens of manufacturers and hundreds of AC units by utilising the `Arduino-HeatpumpIR library `__. + +This platform compiles only under ``arduino`` framework or LibreTiny, and should only be used if your AC unit is not supported by any of the other (native) platforms from above. No support can be provided for Arduino-HeatpumpIR, because it is a third party library. + +This platform utilises the library's generic one-size-fits-all API, which might not line up perfectly with all of the supported AC units. For example, some AC units have more fan speed options than what the generic API supports. +Additional configuration must be specified for this platform: -``zhlt01`` Climate ---------------------- - -ZH/LT-01 is a remote control that is used with many locally branded split airconditioners. -Supported brands include: - -- Eurom -- Chigo -- Tristar -- Tecnomaster -- Elgin -- Geant -- Tekno -- Topair -- Proma -- Sumikura -- JBS -- Turbo Air -- Nakatomy -- Celestial Air -- Ager -- Blueway -- Airlux - -No additional configuration is required for this model. +- **protocol** (**Required**, string): Choose one of Arduino-HeatpumpIR's supported protcols: + ``airway``, ``aux``, ``ballu``, ``bgh_aud``, ``carrier_mca``, ``carrier_nqv``, ``carrier_qlima_1``, ``carrier_qlima_1``, ``daikin``, + ``daikin_arc417``, ``daikin_arc480``, ``electroluxyal``, ``fuego``, ``fujitsu_awyz``, ``gree``, ``greeyaa``, ``greeyac``, ``greeyan``, + ``greeyap``, ``greeyt``, ``hisense_aud``, ``hitachi``, ``hyundai``, ``ivt``, ``midea``, ``mitsubishi_fa``, ``mitsubishi_fd``, + ``mitsubishi_fe``, ``mitsubishi_heavy_fdtc``, ``mitsubishi_heavy_zj``, ``mitsubishi_heavy_zm``, ``mitsubishi_heavy_zmp``, ``mitsubishi_kj``, + ``mitsubishi_msc``, ``mitsubishi_msy``, ``mitsubishi_sez``, ``nibe``, ``panasonic_altdke``, ``panasonic_ckp``, ``panasonic_dke``, + ``panasonic_jke``, ``panasonic_lke``, ``panasonic_nke``, ``r51m``, ``samsung_aqv``, ``samsung_aqv12msan``, ``samsung_fjm``, ``sharp``, + ``toshiba``, ``toshiba_daiseikai``, ``vaillantvai8``, ``zhjg01``, ``zhlt01`` +- **horizontal_default** (**Required**, string): What to default to when the AC unit's horizontal direction is *not* set to swing. Options are: ``left``, ``mleft``, ``middle``, ``mright``, ``right``, ``auto`` +- **vertical_default** (**Required**, string): What to default to when the AC unit's vertical direction is *not* set to swing. Options are: ``down``, ``mdown``, ``middle``, ``mup``, ``up``, ``auto`` +- **max_temperature** (**Required**, float): The maximum temperature that the AC unit supports being set to. +- **min_temperature** (**Required**, float): The minimum temperature that the AC unit supports being set to. +- **sensor** (*Optional*, :ref:`config-id`): The sensor that is used to measure the ambient temperature. + +.. note:: + + The ``greeyac`` protocol in ``heatpumpir`` supports a feature Gree calls "I-Feel". The handheld remote control + has a built-in temperature sensor and it will periodically transmit the temperature from this sensor to the + AC unit. If a ``sensor`` is provided in the configuration with this model, the sensor's temperature will be + transmitted to the ``greeyac`` device in the same manner as the original remote controller. How often the + temperature is transmitted is determined by the ``update_interval`` assigned to the ``sensor``. Note that + ``update_interval`` must be less than 10 minutes or the ``greeyac`` device will revert to using its own + internal temperature sensor; a value of 2 minutes seems to work well. See :doc:`/components/sensor/index` + for more information. See Also -------- @@ -463,14 +374,15 @@ See Also - :doc:`/components/remote_transmitter` - :doc:`/components/sensor/index` - :apiref:`ballu.h `, -- :apiref:`coolix.h `, + :apiref:`climate_ir_lg.h ` + :apiref:`coolix.h `, :apiref:`daikin.h ` :apiref:`fujitsu_general.h `, + :apiref:`gree.h `, :apiref:`hitachi_ac344.h `, :apiref:`midea_ir.h `, :apiref:`mitsubishi.h `, :apiref:`tcl112.h `, :apiref:`yashima.h ` :apiref:`whirlpool.h ` - :apiref:`climate_ir_lg.h ` - :ghedit:`Edit` From 30ae8e56988534cbd7bda5e3f0d36030a7aff1e6 Mon Sep 17 00:00:00 2001 From: Anton Viktorov Date: Fri, 12 Jul 2024 21:42:48 +0000 Subject: [PATCH 036/173] LTR390 separate ALS and UV gain and resolution (#4012) --- components/sensor/ltr390.rst | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/components/sensor/ltr390.rst b/components/sensor/ltr390.rst index 4b6933d75e..d80ed21177 100644 --- a/components/sensor/ltr390.rst +++ b/components/sensor/ltr390.rst @@ -44,6 +44,28 @@ Configuration variables: - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. It is recommended that the update interval is at least 1 second since updates can take up to 800ms when using a high resolution value. +Granular control over gain and resolution +......................................... +By default, the ``gain`` and ``resolution`` parameters set same values for both ALS and UV measurements. In real life scenarios there might be significant +differences in the light intensity and UV index, so it is recommended to use different gain and resolution values for ALS and for UV sensor to avoid saturation. +See the example below, where the gain and resolution are set to different values for ALS and UV sensors.: + +.. code-block:: yaml + + sensor: + - platform: ltr390 + uv: + name: "UV Sensor Counts" + ambient_light: + name: "Light Sensor Counts" + gain: + ambient_light: X9 + uv: X3 + resolution: + ambient_light: 18 + uv: 13 + + Lux and UVI Formulas -------------------- From 32144f422f150759b20651546fb623125ae00f17 Mon Sep 17 00:00:00 2001 From: Tomi Junnila Date: Thu, 11 Jul 2024 23:33:27 +0300 Subject: [PATCH 037/173] Add yac1fb9 model for the gree climate_ir component (#4029) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: H. Árkosi Róbert --- components/climate/climate_ir.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/components/climate/climate_ir.rst b/components/climate/climate_ir.rst index 6f67f8f9c5..7013e66929 100644 --- a/components/climate/climate_ir.rst +++ b/components/climate/climate_ir.rst @@ -414,6 +414,7 @@ Configuration variables: - ``yan`` - ``yaa`` - ``yac`` + - ``yac1fb9`` .. code-block:: yaml From 74f738a31cf1426261b20cdf6aa12f49abd0377b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=2E=20=C3=81rkosi=20R=C3=B3bert?= Date: Fri, 12 Jul 2024 23:19:42 +0200 Subject: [PATCH 038/173] Bump HeatpumpIR - add protocols (#3996) Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/climate/climate_ir.rst | 314 +++++++++++------------------- 1 file changed, 113 insertions(+), 201 deletions(-) diff --git a/components/climate/climate_ir.rst b/components/climate/climate_ir.rst index 7013e66929..8cf167f221 100644 --- a/components/climate/climate_ir.rst +++ b/components/climate/climate_ir.rst @@ -10,17 +10,15 @@ control signal, just as the unit's handheld remote controller would. .. figure:: images/climate-ui.png :align: center - :width: 60.0% + :width: 40.0% There is a growing list of compatible units. If your unit is not listed below you should submit a feature request (see FAQ). +---------------------------------------+---------------------+----------------------+ -| Name | Platform name | Supports receiver | +| Supported units | Platform name | Supports receiver | | | | | +=======================================+=====================+======================+ -| :ref:`Arduino-HeatpumpIR` | ``heatpumpir`` | | -+---------------------------------------+---------------------+----------------------+ | Ballu | ``ballu`` | yes | +---------------------------------------+---------------------+----------------------+ | Coolix | ``coolix`` | yes | @@ -39,7 +37,7 @@ submit a feature request (see FAQ). +---------------------------------------+---------------------+----------------------+ | :ref:`GREE` | ``gree`` | | +---------------------------------------+---------------------+----------------------+ -| Hitachi | ``hitachi_ac344`` | yes | +| Hitachi | ``hitachi_ac344``, | yes | | | ``hitachi_ac424`` | | +---------------------------------------+---------------------+----------------------+ | :ref:`LG` | ``climate_ir_lg`` | yes | @@ -62,11 +60,15 @@ submit a feature request (see FAQ). +---------------------------------------+---------------------+----------------------+ | :ref:`ZH/LT-01` | ``zhlt01`` | yes | +---------------------------------------+---------------------+----------------------+ +| :ref:`Arduino-HeatpumpIR` | ``heatpumpir`` | | +| library | | | ++---------------------------------------+---------------------+----------------------+ This component requires that you have configured a :doc:`/components/remote_transmitter`. Due to the unidirectional nature of IR remote controllers, this component cannot determine the actual state of the device and will assume the state of the device is the latest state requested. +The assumed state can be restored at boot. However, when receiver is supported, you can optionally add a :doc:`/components/remote_receiver` component so the climate state will be tracked when it is operated with the original remote @@ -80,7 +82,7 @@ controller unit. carrier_duty_percent: 50% climate: - - platform: coolix # adjust to match your AC unit! + - platform: REPLACEME name: "Living Room AC" Configuration Variables: @@ -95,98 +97,16 @@ Configuration Variables: receiver. see: :ref:`ir-receiver_id`. - All other options from :ref:`Climate `. -Advanced Options ----------------- +**Advanced Options** - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **transmitter_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the remote transmitter. -.. _heatpumpir: - -Arduino-HeatpumpIR ------------------- - -The ``heatpumpir`` platform supports dozens of manufacturers and hundreds of AC units by utilising the `Arduino-HeatpumpIR library `__. - -This platform should only be used if your AC unit is not supported by any of the other (native) platforms. No support can be provided for Arduino-HeatpumpIR, because it is a third party library. - -This platform utilises the library's generic one-size-fits-all API, which might not line up perfectly with all of the supported AC units. For example, some AC units have more fan speed options than what the generic API supports. - -Additional configuration must be specified for this platform: - -- **protocol** (**Required**, string): Choose one of Arduino-HeatpumpIR's supported protcols: - ``aux``, ``ballu``, ``carrier_mca``, ``carrier_nqv``, ``carrier_qlima_1``, ``carrier_qlima_1``, ``daikin``, ``daikin_arc417``, - ``daikin_arc480``, ``electroluxyal``, ``fuego``, ``fujitsu_awyz``, ``gree``, ``greeyaa``, ``greeyac``, ``greeyan``, ``greeyap``, - ``greeyt``, ``hisense_aud``, ``hitachi``, ``hyundai``, ``ivt``, ``midea``, ``mitsubishi_fa``, ``mitsubishi_fd``, - ``mitsubishi_fe``, ``mitsubishi_heavy_fdtc``, ``mitsubishi_heavy_zj``, ``mitsubishi_heavy_zm``, ``mitsubishi_heavy_zmp``, - ``mitsubishi_kj``, ``mitsubishi_msc``, ``mitsubishi_msy``, ``mitsubishi_sez``, ``nibe``, ``panasonic_ckp``, ``panasonic_dke``, - ``panasonic_jke``, ``panasonic_lke``, ``panasonic_nke``, ``samsung_aqv``, ``samsung_aqv12msan``, - ``samsung_fjm``, ``sharp``, ``toshiba``, ``toshiba_daiseikai``, ``zhjg01``, ``zhlt01``. - - -- **horizontal_default** (**Required**, string): What to default to when the AC unit's horizontal direction is *not* set to swing. Options are: ``left``, ``mleft``, ``middle``, ``mright``, ``right``, ``auto``. -- **vertical_default** (**Required**, string): What to default to when the AC unit's vertical direction is *not* set to swing. Options are: ``down``, ``mdown``, ``middle``, ``mup``, ``up``, ``auto``. -- **max_temperature** (**Required**, float): The maximum temperature that the AC unit supports being set to. -- **min_temperature** (**Required**, float): The minimum temperature that the AC unit supports being set to. -- **sensor** (*Optional*, :ref:`config-id`): The sensor that is used to measure the ambient temperature. - -.. note:: - - - The ``greeyac`` protocol supports a feature Gree calls "I-Feel". The handheld remote control - has a built-in temperature sensor and it will periodically transmit the temperature from this sensor to the - AC unit. If a ``sensor`` is provided in the configuration with this model, the sensor's temperature will be - transmitted to the ``greeyac`` device in the same manner as the original remote controller. How often the - temperature is transmitted is determined by the ``update_interval`` assigned to the ``sensor``. Note that - ``update_interval`` must be less than 10 minutes or the ``greeyac`` device will revert to using its own - internal temperature sensor; a value of 2 minutes seems to work well. See :doc:`/components/sensor/index` - for more information. - - - The ``zhlt01`` protocol supports multiple AC brands: Eurom, Chigo, Tristar, Tecnomaster, Elgin, Geant, Tekno, Topair, Proma, Sumikura, JBS, Turbo Air, Nakatomy, Celestial Air, Ager, Blueway, Airlux, etc. - -.. _ir-receiver_id: - -Using a Receiver ----------------- - -.. note:: - - This is only supported with select climate devices, see "Supports receiver" in the table at the top of the page. - -Optionally, some platforms can listen to data the climate device sends over infrared to update their state ( -for example what mode the device is in). By setting up a :doc:`remote_receiver ` -and passing its ID to the climate platform you can enable this mode. - -When using a receiver it is recommended to put the IR receiver as close as possible to the equipment's -IR receiver. - -.. code-block:: yaml - - # Example configuration entry - remote_receiver: - id: rcvr - pin: - number: GPIOXX - inverted: true - mode: - input: true - pullup: true - # high 55% tolerance is recommended for some remote control units - tolerance: 55% - - climate: - - platform: coolix - name: "Living Room AC" - receiver_id: rcvr +**Specific configuration variables:** .. _climate_ir_lg: -``climate_ir_lg`` Climate -------------------------- - -Additional configuration is available for this platform - - -Configuration variables: +``climate_ir_lg`` **Climate**: - **header_high** (*Optional*, :ref:`config-time`): time for the high part of the header for the LG protocol. Defaults to ``8000us`` - **header_low** (*Optional*, :ref:`config-time`): time for the low part of the header for the LG protocol. Defaults to ``4000us`` @@ -204,31 +124,12 @@ Configuration variables: header_high: 3265us # AC Units from LG in Brazil, for example use these timings header_low: 9856us -.. _daikin_arc: - -``daikin_arc`` Climate -------------------------- - -The Daikin ARC remotes are used by the japanese model of Daikin. - -.. code-block:: yaml - - # Example configuration entry - climate: - - platform: daikin_arc - name: "AC" - sensor: room_temperature - .. _daikin_brc: -``daikin_brc`` Climate -------------------------- +``daikin_brc`` **Climate**: The Daikin BRC remotes are used by the ceiling cassette model of Daikin heatpumps. - -Configuration variables: - - **use_fahrenheit** (*Optional*, boolean): U.S. models of the Daikin BRC remote send the temperature in Fahrenheit, if your remote shows Fahrenheit and can not be changed to Celsius then set this to true. Defaults to ``false``. .. code-block:: yaml @@ -240,29 +141,44 @@ Configuration variables: sensor: room_temperature use_fahrenheit: true - .. _delonghi_ir: -``delonghi`` Climate -------------------------- +``delonghi`` **Climate**: -Currently supports the protocol used by some Delonghi portable units +The ``delonghi`` climate currently supports the protocol used by some Delonghi portable units, known working with Delonghi PAC WE 120HP. -Known working with: +.. _daikin_arc: -- Delonghi PAC WE 120HP +``daikin_arc`` **Climate**: -.. _midea_ir: +The Daikin ARC remotes (``daikin_arc`` climate, ``daikin_arc417``, ``daikin_arc480`` protocols of :ref:`Arduino-HeatpumpIR`) are used by the japanese model of Daikin. -``midea_ir`` Climate -------------------------- +.. _gree_ir: -These air conditioners support two protocols: Midea and Coolix. Therefore, when using an IR receiver, it considers both protocols and publishes the received states. +``gree`` **Climate**: -Additional configuration is available for this platform +- **model** (*Required*, string): GREE has a few different protocols depending on model. One of these will work for you. + - ``generic`` + - ``yan`` + - ``yaa`` + - ``yac`` + - ``yac1fb9`` + +.. code-block:: yaml + + # Example configuration entry + climate: + - platform: gree + name: "AC" + sensor: room_temperature + model: yan + +.. _midea_ir: -Configuration variables: +``midea_ir`` **Climate**: + +These air conditioners support two protocols: Midea and Coolix. Therefore, when using an IR receiver, it considers both protocols and publishes the received states. - **use_fahrenheit** (*Optional*, boolean): Allows you to transfer the temperature to the air conditioner in degrees Fahrenheit. The air conditioner display also shows the temperature in Fahrenheit. Defaults to ``false``. @@ -282,17 +198,12 @@ Configuration variables: .. _mitsubishi: -``mitsubishi`` Climate ------------------------- - -Additonal configurations available for this platform. - -Configuration variables: +``mitsubishi`` **Climate**: - **set_fan_mode** (*Optional*, string): Select the fan modes desired or that are supported on your remote. Defaults to ``3levels`` - - Options are: ``3levels`` , ``4levels``, ``quiet_4levels``. - + - Options are: ``3levels`` , ``4levels``, ``quiet_4levels``. + - ``3levels``; Low [fan speed 1], Medium [2], High [3] - ``4levels``; Low [1], Middle [2], Medium [3], High [4] - ``quiet_4levels``; Low [1], Middle [2], Medium [3], High [4], Quiet [5] @@ -300,10 +211,10 @@ Configuration variables: - **supports_dry** (*Optional*, boolean): Enables setting dry mode for this unit. Defaults to ``false``. - **supports_fan_only** (*Optional*, boolean): Enables setting fan only mode for this unit. Confirm that mode is supported on your remote. Defaults to ``false``. -- **horizontal_default** (*Optional*, string): What to default to when the AC unit's horizontal direction is *not* set to swing. Defaults to ``middle``. +- **horizontal_default** (*Optional*, string): What to default to when the AC unit's horizontal direction is *not* set to swing. Defaults to ``middle``. - Options are: ``left``, ``middle-left``, ``middle``, ``middle-right``, ``right``, ``auto`` -- **vertical_default** (*Optional*, string): What to default to when the AC unit's vertical direction is *not* set to swing. Defaults to ``middle``. +- **vertical_default** (*Optional*, string): What to default to when the AC unit's vertical direction is *not* set to swing. Defaults to ``middle``. - Options are: ``down``, ``middle-down``, ``middle``, ``middle-up``, ``up``, ``auto`` @@ -325,13 +236,7 @@ Configuration variables: .. _toshiba: -``toshiba`` Climate -------------------- - -Additional configuration is available for this model. - - -Configuration variables: +``toshiba`` **Climate**: - **model** (*Optional*, string): There are two valid models @@ -357,32 +262,18 @@ Configuration variables: - This climate IR component is also known to work with Midea model MAP14HS1TBL and may work with other similar models, as well. (Midea acquired Toshiba's product line and re-branded it.) - .. _whirlpool: +``whirlpool`` **Climate**: -``whirlpool`` Climate ---------------------- - -Additional configuration is available for this model. - - -Configuration variables: - -- **model** (*Optional*, string): There are two valid models +- **model** (*Optional*, string): There are two valid models to choose from: - ``DG11J1-3A``: Temperature range is from 18 to 32 (default) - ``DG11J1-91``: Temperature range is from 16 to 30 .. _whynter: -``whynter`` Climate -------------------------- - -Additional configuration is available for this platform - - -Configuration variables: +``whynter`` **Climate**: - **use_fahrenheit** (*Optional*, boolean): Allows you to transfer the temperature to the air conditioner in degrees Fahrenheit. The air conditioner display also shows the temperature in Fahrenheit. Defaults to ``false``. @@ -396,64 +287,84 @@ Configuration variables: use_fahrenheit: true supports_heat: true +.. _zhlt01: -.. _gree_ir: - +``zhlt01`` **Climate**: -``gree`` Climate ---------------------- +The ``zhlt01`` climate and protocol, based on the ZH/LT-01 remote controller, is used with many locally branded airconditioners, like: Eurom, Chigo, Tristar, Tecnomaster, Elgin, Geant, Tekno, Topair, Proma, Sumikura, JBS, Turbo Air, Nakatomy, Celestial Air, Ager, Blueway, Airlux, etc. -Additional configuration is available for this model. +.. _ir-receiver_id: +Using a Receiver +---------------- -Configuration variables: +.. note:: -- **model** (*Required*, string): GREE has a few different protocols depending on model. One of these will work for you. + This is only supported with select climate devices, see "Supports receiver" in the table at the top of the page. - - ``generic`` - - ``yan`` - - ``yaa`` - - ``yac`` - - ``yac1fb9`` +Optionally, some platforms can listen to data the climate device sends over infrared to update their state ( +for example what mode the device is in). By setting up a :doc:`remote_receiver ` +and passing its ID to the climate platform you can enable this mode. +When using a receiver it is recommended to put the IR receiver as close as possible to the equipment's +IR receiver. .. code-block:: yaml # Example configuration entry + remote_receiver: + id: rcvr + pin: + number: GPIOXX + inverted: true + mode: + input: true + pullup: true + # high 55% tolerance is recommended for some remote control units + tolerance: 55% + climate: - - platform: gree - name: "AC" - sensor: room_temperature - model: yan + - platform: REPLACEME + name: "Living Room AC" + receiver_id: rcvr -.. _zhlt01: +.. _heatpumpir: + +Arduino-HeatpumpIR +------------------ + +The ``heatpumpir`` platform supports dozens of manufacturers and hundreds of AC units by utilising the `Arduino-HeatpumpIR library `__. + +This platform compiles only under ``arduino`` framework or LibreTiny, and should only be used if your AC unit is not supported by any of the other (native) platforms from above. No support can be provided for Arduino-HeatpumpIR, because it is a third party library. + +This platform utilises the library's generic one-size-fits-all API, which might not line up perfectly with all of the supported AC units. For example, some AC units have more fan speed options than what the generic API supports. +Additional configuration must be specified for this platform: -``zhlt01`` Climate ---------------------- - -ZH/LT-01 is a remote control that is used with many locally branded split airconditioners. -Supported brands include: - -- Eurom -- Chigo -- Tristar -- Tecnomaster -- Elgin -- Geant -- Tekno -- Topair -- Proma -- Sumikura -- JBS -- Turbo Air -- Nakatomy -- Celestial Air -- Ager -- Blueway -- Airlux - -No additional configuration is required for this model. +- **protocol** (**Required**, string): Choose one of Arduino-HeatpumpIR's supported protcols: + ``airway``, ``aux``, ``ballu``, ``bgh_aud``, ``carrier_mca``, ``carrier_nqv``, ``carrier_qlima_1``, ``carrier_qlima_1``, ``daikin``, + ``daikin_arc417``, ``daikin_arc480``, ``electroluxyal``, ``fuego``, ``fujitsu_awyz``, ``gree``, ``greeyaa``, ``greeyac``, ``greeyan``, + ``greeyap``, ``greeyt``, ``hisense_aud``, ``hitachi``, ``hyundai``, ``ivt``, ``midea``, ``mitsubishi_fa``, ``mitsubishi_fd``, + ``mitsubishi_fe``, ``mitsubishi_heavy_fdtc``, ``mitsubishi_heavy_zj``, ``mitsubishi_heavy_zm``, ``mitsubishi_heavy_zmp``, ``mitsubishi_kj``, + ``mitsubishi_msc``, ``mitsubishi_msy``, ``mitsubishi_sez``, ``nibe``, ``panasonic_altdke``, ``panasonic_ckp``, ``panasonic_dke``, + ``panasonic_jke``, ``panasonic_lke``, ``panasonic_nke``, ``r51m``, ``samsung_aqv``, ``samsung_aqv12msan``, ``samsung_fjm``, ``sharp``, + ``toshiba``, ``toshiba_daiseikai``, ``vaillantvai8``, ``zhjg01``, ``zhlt01`` +- **horizontal_default** (**Required**, string): What to default to when the AC unit's horizontal direction is *not* set to swing. Options are: ``left``, ``mleft``, ``middle``, ``mright``, ``right``, ``auto`` +- **vertical_default** (**Required**, string): What to default to when the AC unit's vertical direction is *not* set to swing. Options are: ``down``, ``mdown``, ``middle``, ``mup``, ``up``, ``auto`` +- **max_temperature** (**Required**, float): The maximum temperature that the AC unit supports being set to. +- **min_temperature** (**Required**, float): The minimum temperature that the AC unit supports being set to. +- **sensor** (*Optional*, :ref:`config-id`): The sensor that is used to measure the ambient temperature. + +.. note:: + + The ``greeyac`` protocol in ``heatpumpir`` supports a feature Gree calls "I-Feel". The handheld remote control + has a built-in temperature sensor and it will periodically transmit the temperature from this sensor to the + AC unit. If a ``sensor`` is provided in the configuration with this model, the sensor's temperature will be + transmitted to the ``greeyac`` device in the same manner as the original remote controller. How often the + temperature is transmitted is determined by the ``update_interval`` assigned to the ``sensor``. Note that + ``update_interval`` must be less than 10 minutes or the ``greeyac`` device will revert to using its own + internal temperature sensor; a value of 2 minutes seems to work well. See :doc:`/components/sensor/index` + for more information. See Also -------- @@ -463,14 +374,15 @@ See Also - :doc:`/components/remote_transmitter` - :doc:`/components/sensor/index` - :apiref:`ballu.h `, -- :apiref:`coolix.h `, + :apiref:`climate_ir_lg.h ` + :apiref:`coolix.h `, :apiref:`daikin.h ` :apiref:`fujitsu_general.h `, + :apiref:`gree.h `, :apiref:`hitachi_ac344.h `, :apiref:`midea_ir.h `, :apiref:`mitsubishi.h `, :apiref:`tcl112.h `, :apiref:`yashima.h ` :apiref:`whirlpool.h ` - :apiref:`climate_ir_lg.h ` - :ghedit:`Edit` From 6c773d1526125a50bd8d883276761a6414cceb80 Mon Sep 17 00:00:00 2001 From: Anton Viktorov Date: Fri, 12 Jul 2024 21:42:48 +0000 Subject: [PATCH 039/173] LTR390 separate ALS and UV gain and resolution (#4012) --- components/sensor/ltr390.rst | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/components/sensor/ltr390.rst b/components/sensor/ltr390.rst index 4b6933d75e..d80ed21177 100644 --- a/components/sensor/ltr390.rst +++ b/components/sensor/ltr390.rst @@ -44,6 +44,28 @@ Configuration variables: - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. It is recommended that the update interval is at least 1 second since updates can take up to 800ms when using a high resolution value. +Granular control over gain and resolution +......................................... +By default, the ``gain`` and ``resolution`` parameters set same values for both ALS and UV measurements. In real life scenarios there might be significant +differences in the light intensity and UV index, so it is recommended to use different gain and resolution values for ALS and for UV sensor to avoid saturation. +See the example below, where the gain and resolution are set to different values for ALS and UV sensors.: + +.. code-block:: yaml + + sensor: + - platform: ltr390 + uv: + name: "UV Sensor Counts" + ambient_light: + name: "Light Sensor Counts" + gain: + ambient_light: X9 + uv: X3 + resolution: + ambient_light: 18 + uv: 13 + + Lux and UVI Formulas -------------------- From d701f48ab95c233bcf01ae362e3c5e40ca57edd9 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Sat, 13 Jul 2024 09:46:15 +1200 Subject: [PATCH 040/173] Bump version to 2024.7.0b2 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index 698aee7ff6..81cf799076 100644 --- a/Doxygen +++ b/Doxygen @@ -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.7.0b1 +PROJECT_NUMBER = 2024.7.0b2 # 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 diff --git a/Makefile b/Makefile index cd252d445f..35fd42e7ba 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = 2024.7.0b1 +ESPHOME_REF = 2024.7.0b2 PAGEFIND_VERSION=1.1.0 PAGEFIND=pagefind NET_PAGEFIND=../pagefindbin/pagefind diff --git a/_static/version b/_static/version index 2bda8aa02e..548910a1c7 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2024.7.0b1 \ No newline at end of file +2024.7.0b2 \ No newline at end of file diff --git a/conf.py b/conf.py index 280d91fa51..ed0c6b8781 100644 --- a/conf.py +++ b/conf.py @@ -69,7 +69,7 @@ # The short X.Y version. version = "2024.7" # The full version, including alpha/beta/rc tags. -release = "2024.7.0b1" +release = "2024.7.0b2" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 29b410a46c58e83bae12aceade1941726d458a47 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Sat, 13 Jul 2024 09:51:03 +1200 Subject: [PATCH 041/173] Update changelog for 2024.7.0b2 --- changelog/2024.7.0.rst | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/changelog/2024.7.0.rst b/changelog/2024.7.0.rst index 8b3edca170..d182e7d73f 100644 --- a/changelog/2024.7.0.rst +++ b/changelog/2024.7.0.rst @@ -22,6 +22,25 @@ Breaking Changes - [modbus_text_sensor] new default ANSI encoding type :esphomepr:`6975` by :ghuser:`dudanov` (breaking-change) - [micro_wake_word] Version 2 :esphomepr:`7032` by :ghuser:`kahrendt` (breaking-change) +Beta Changes +^^^^^^^^^^^^ + +- helpers.cpp: Fix GLIBCXX_RELEASE check < 8 :esphomepr:`7062` by :ghuser:`ferbar` +- Fix pmsa003i cold boot marked as failed on ESP32 et al :esphomepr:`7064` by :ghuser:`z3liff` +- [http_request] Fix follow_redirects on arduino :esphomepr:`7054` by :ghuser:`guillempages` +- [ethernet] Fix compile warning for IPv6 :esphomepr:`7048` by :ghuser:`HeMan` +- Update webserver local assets to 20240704-081526 :esphomepr:`7041` by :ghuser:`esphomebot` +- Add braces to if statement to avoid compiler warning. :esphomepr:`7036` by :ghuser:`colmbuckley` +- [mitsubishi] Fix current temperature :esphomepr:`6909` by :ghuser:`ttaborda` +- [climate] fix dump output of unsupported features :esphomepr:`7005` by :ghuser:`dudanov` +- [climate-traits] improved performance :esphomepr:`7006` by :ghuser:`dudanov` +- Add default icon to restart button :esphomepr:`7076` by :ghuser:`leejoow` +- Add support for the Gree YAC1FB9 in climate_ir :esphomepr:`7056` by :ghuser:`topeju` +- add ESP32-C6 support to esp32_can :esphomepr:`7063` by :ghuser:`Adminius` +- Fix voice assistant crash when no speaker configured :esphomepr:`7075` by :ghuser:`kevdliu` +- Bump HeatpumpIR, add protocols, remove IRremoteESP8266 :esphomepr:`6996` by :ghuser:`nagyrobi` +- LTR390 separate ALS and UV gain and resolution :esphomepr:`7026` by :ghuser:`latonita` + All changes ^^^^^^^^^^^ From db688296f6e6d160b22d0434705319cb23c20c8c Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Sat, 13 Jul 2024 09:51:46 +1200 Subject: [PATCH 042/173] Update supporters for 2024.7.0b2 --- guides/supporters.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index b12964913d..b1c57b1cba 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -1881,6 +1881,7 @@ Contributors - `Jevgeni Kiski (@yozik04) `__ - `YuanL.Lee (@yuanl) `__ - `Yuval Aboulafia (@yuvalabou) `__ +- `Z3LIFF (@z3liff) `__ - `ZabojnikM (@ZabojnikM) `__ - `Björn Stenberg (@zagor) `__ - `zaluthar (@zaluthar) `__ @@ -1903,4 +1904,4 @@ Contributors - `Christian Zufferey (@zuzu59) `__ - `Zynth-dev (@Zynth-dev) `__ -*This page was last updated July 11, 2024.* +*This page was last updated July 13, 2024.* From cdd4605dd9fc7102c9e70eccec86bdf2e4d38fea Mon Sep 17 00:00:00 2001 From: Olivier ARCHER Date: Sun, 14 Jul 2024 22:52:49 +0200 Subject: [PATCH 043/173] [http_request] fix response (#4049) --- components/http_request.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/components/http_request.rst b/components/http_request.rst index c483275dea..545d203387 100644 --- a/components/http_request.rst +++ b/components/http_request.rst @@ -88,8 +88,8 @@ This :ref:`action ` sends a GET request. - logger.log: format: 'Response status: %d, Duration: %u ms' args: - - status_code - - duration_ms + - response->status_code + - response->duration_ms # Short form - http_request.get: https://esphome.io @@ -159,7 +159,7 @@ This :ref:`action ` sends a request. This automation will be triggered when the HTTP request is complete. The following variables are available for use in :ref:`lambdas `: -- ``response`` as a ``HttpContainer`` object which contains ``content_length``, ``status_code`` and ``duration_ms``. +- ``response`` as a pointer to ``HttpContainer`` object which contains ``content_length``, ``status_code`` and ``duration_ms``. - ``body`` as ``std::string`` which contains the response body when ``capture_response`` (see :ref:`http_request-get_action`) is set to ``true``. @@ -174,8 +174,8 @@ The following variables are available for use in :ref:`lambdas `: - logger.log: format: "Response status: %d, Duration: %u ms" args: - - response.status_code - - response.duration_ms + - response->status_code + - response->duration_ms .. _http_request-examples: From a31efd3c0bf3baed1e222dcde1f5cd25b471cd66 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Mon, 15 Jul 2024 11:40:55 +1200 Subject: [PATCH 044/173] Replace mac addresses in docs with XX:XX:XX:XX:XX:XX (#4050) --- components/binary_sensor/ble_presence.rst | 6 +-- components/ble_client.rst | 32 +++++++-------- components/button/wake_on_lan.rst | 2 +- components/climate/anova.rst | 2 +- components/climate/bedjet.rst | 2 +- components/cover/am43.rst | 2 +- components/display/pvvx_mithermometer.rst | 12 +++--- components/esp32_ble_tracker.rst | 20 +++++----- components/output/ble_client.rst | 6 +-- components/sensor/airthings_ble.rst | 6 +-- components/sensor/am43.rst | 2 +- components/sensor/b_parasite.rst | 2 +- components/sensor/ble_client.rst | 4 +- components/sensor/ble_rssi.rst | 4 +- components/sensor/inkbird_ibsth1_mini.rst | 10 ++--- components/sensor/mopeka_pro_check.rst | 14 +++---- components/sensor/mopeka_std_check.rst | 16 ++++---- components/sensor/radon_eye_ble.rst | 7 ++-- components/sensor/ruuvitag.rst | 6 +-- components/sensor/xiaomi_ble.rst | 48 +++++++++++------------ components/sensor/xiaomi_hhccjcy10.rst | 2 +- components/sensor/xiaomi_miscale.rst | 4 +- components/switch/ble_client.rst | 4 +- components/text_sensor/ble_client.rst | 2 +- components/text_sensor/ble_scanner.rst | 4 +- 25 files changed, 109 insertions(+), 110 deletions(-) diff --git a/components/binary_sensor/ble_presence.rst b/components/binary_sensor/ble_presence.rst index b9fdd1f007..412049a504 100644 --- a/components/binary_sensor/ble_presence.rst +++ b/components/binary_sensor/ble_presence.rst @@ -10,7 +10,7 @@ The ``ble_presence`` binary sensor platform lets you track the presence of a Blu .. warning:: The BLE software stack on the ESP32 consumes a significant amount of RAM on the device. - + **Crashes are likely to occur** if you include too many additional components in your device's configuration. Memory-intensive components such as :doc:`/components/voice_assistant` and other audio components are most likely to cause issues. @@ -27,7 +27,7 @@ The ``ble_presence`` binary sensor platform lets you track the presence of a Blu binary_sensor: # Presence based on MAC address - platform: ble_presence - mac_address: AC:37:43:77:5F:4C + mac_address: XX:XX:XX:XX:XX:XX name: "ESP32 BLE Tracker Google Home Mini" min_rssi: -80dB # Presence based on Identity Resolving Key (IRK) @@ -96,7 +96,7 @@ the logs to see discovered Bluetooth Low Energy devices. Using the configuration above, first you should see a ``Starting scan...`` debug message at boot-up. Then, when a BLE device is discovered, you should see messages like -``Found device AC:37:43:77:5F:4C`` together with some information about their +``Found device XX:XX:XX:XX:XX:XX`` together with some information about their address type and advertised name. If you don't see these messages, your device is unfortunately currently not supported. diff --git a/components/ble_client.rst b/components/ble_client.rst index 98697f8407..4198f3b549 100644 --- a/components/ble_client.rst +++ b/components/ble_client.rst @@ -12,7 +12,7 @@ connections to them for use by other components. .. warning:: The BLE software stack on the ESP32 consumes a significant amount of RAM on the device. - + **Crashes are likely to occur** if you include too many additional components in your device's configuration. Memory-intensive components such as :doc:`/components/voice_assistant` and other audio components are most likely to cause issues. @@ -36,7 +36,7 @@ to discover available client devices. esp32_ble_tracker: ble_client: - - mac_address: FF:FF:20:00:0F:15 + - mac_address: XX:XX:XX:XX:XX:XX id: itag_black auto_connect: true @@ -73,7 +73,7 @@ This automation is triggered when the client connects to the BLE device. .. code-block:: yaml ble_client: - - mac_address: 11:22:33:44:55:66 + - mac_address: XX:XX:XX:XX:XX:XX id: ble_itag on_connect: then: @@ -90,7 +90,7 @@ This automation is triggered when the client disconnects from a BLE device. .. code-block:: yaml ble_client: - - mac_address: 11:22:33:44:55:66 + - mac_address: XX:XX:XX:XX:XX:XX id: ble_itag on_disconnect: then: @@ -108,7 +108,7 @@ This automation is triggered when the BLE device requests a passkey for authenti .. code-block:: yaml ble_client: - - mac_address: 11:22:33:44:55:66 + - mac_address: XX:XX:XX:XX:XX:XX id: ble_itag on_passkey_request: then: @@ -126,7 +126,7 @@ This automation is triggered when a passkey is received from the BLE device. .. code-block:: yaml ble_client: - - mac_address: 11:22:33:44:55:66 + - mac_address: XX:XX:XX:XX:XX:XX id: ble_itag on_passkey_notification: then: @@ -144,7 +144,7 @@ This automation is triggered when a numeric comparison is requested by the BLE d .. code-block:: yaml ble_client: - - mac_address: 11:22:33:44:55:66 + - mac_address: XX:XX:XX:XX:XX:XX id: ble_itag on_numeric_comparison_request: then: @@ -174,10 +174,10 @@ on, hence the stop and start of the scan during connect. ble_client: - id: ble_clock - mac_address: 17:75:BC:F2:94:4D + mac_address: XX:XX:XX:XX:XX:XX auto_connect: false - id: other_device - mac_address: 0D:33:12:66:00:D4 + mac_address: XX:XX:XX:XX:XX:XX interval: - interval: 60min @@ -222,7 +222,7 @@ Example usage: .. code-block:: yaml ble_client: - - mac_address: 11:22:33:44:55:66 + - mac_address: XX:XX:XX:XX:XX:XX id: my_ble_client switch: @@ -308,7 +308,7 @@ Example usage: .. code-block:: yaml ble_client: - - mac_address: 11:22:33:44:55:66 + - mac_address: XX:XX:XX:XX:XX:XX id: my_ble_client on_connect: then: @@ -391,9 +391,9 @@ display them in the log: .. code-block:: text - [18:24:56][D][ble_client:043]: Found device at MAC address [FC:58:FA:B1:F8:93] - [18:24:56][I][ble_client:072]: Attempting BLE connection to fc:58:fa:b1:f8:93 - [18:24:56][I][ble_client:097]: [fc:58:fa:b1:f8:93] ESP_GATTC_OPEN_EVT + [18:24:56][D][ble_client:043]: Found device at MAC address [XX:XX:XX:XX:XX:XX] + [18:24:56][I][ble_client:072]: Attempting BLE connection to XX:XX:XX:XX:XX:XX + [18:24:56][I][ble_client:097]: [XX:XX:XX:XX:XX:XX] ESP_GATTC_OPEN_EVT [18:24:57][I][ble_client:143]: Service UUID: 0x1800 [18:24:57][I][ble_client:144]: start_handle: 0x1 end_handle: 0x5 [18:24:57][I][ble_client:305]: characteristic 0x2A00, handle 0x3, properties 0x2 @@ -445,7 +445,7 @@ Secure connection with a fixed passkey: esp32_ble_tracker: ble_client: - - mac_address: A4:C1:38:B1:CD:7F + - mac_address: XX:XX:XX:XX:XX:XX id: pvvx_ble_display on_passkey_request: then: @@ -483,7 +483,7 @@ Secure connection with a dynamically generated passkey: esp32_ble_tracker: ble_client: - - mac_address: AA:BB:CC:DD:EE:FF + - mac_address: XX:XX:XX:XX:XX:XX id: my_ble_client on_passkey_request: then: diff --git a/components/button/wake_on_lan.rst b/components/button/wake_on_lan.rst index 3d702036ac..10b510201c 100644 --- a/components/button/wake_on_lan.rst +++ b/components/button/wake_on_lan.rst @@ -14,7 +14,7 @@ by specifying its MAC address. button: - platform: wake_on_lan name: "Start the Server" - target_mac_address: E9:48:B8:CA:58:A1 + target_mac_address: XX:XX:XX:XX:XX:XX Configuration variables: ------------------------ diff --git a/components/climate/anova.rst b/components/climate/anova.rst index 0cfa3eac71..fe0e4d4654 100644 --- a/components/climate/anova.rst +++ b/components/climate/anova.rst @@ -36,7 +36,7 @@ need to do conversion again within the frontend if you use Fahrenheit. .. code-block:: yaml ble_client: - - mac_address: 11:22:33:aa:bb:cc + - mac_address: XX:XX:XX:XX:XX:XX id: my_anova climate: diff --git a/components/climate/bedjet.rst b/components/climate/bedjet.rst index e9cf9d5347..d20c370e62 100644 --- a/components/climate/bedjet.rst +++ b/components/climate/bedjet.rst @@ -31,7 +31,7 @@ and delegates status updates to individual platform components. esp32_ble_tracker: ble_client: - - mac_address: C4:4F:33:00:00:01 + - mac_address: XX:XX:XX:XX:XX:XX id: bedjet_ble_id1 bedjet: diff --git a/components/cover/am43.rst b/components/cover/am43.rst index c1f05f5056..227b1afd18 100644 --- a/components/cover/am43.rst +++ b/components/cover/am43.rst @@ -27,7 +27,7 @@ and state of the motor. esp32_ble_tracker: ble_client: - - mac_address: AA:BB:CC:DD:EE:FF + - mac_address: XX:XX:XX:XX:XX:XX id: am43_kitchen cover: diff --git a/components/display/pvvx_mithermometer.rst b/components/display/pvvx_mithermometer.rst index 799b25333c..05cc787231 100644 --- a/components/display/pvvx_mithermometer.rst +++ b/components/display/pvvx_mithermometer.rst @@ -29,7 +29,7 @@ The firmware configuration can be changed via browser using `TelinkMiFlasher.htm esp32_ble_tracker: ble_client: - - mac_address: "A4:C1:38:B1:CD:7F" + - mac_address: XX:XX:XX:XX:XX:XX id: pvvx_ble_display display: @@ -139,12 +139,12 @@ The following example display the sensor states of a MiFlora sensor on a pvvx di esp32_ble_tracker: ble_client: - - mac_address: "A4:C1:38:B1:CD:7F" + - mac_address: XX:XX:XX:XX:XX:XX id: pvvx_ble_display sensor: - platform: pvvx_mithermometer - mac_address: "A4:C1:38:B1:CD:7F" + mac_address: XX:XX:XX:XX:XX:XX temperature: name: "PVVX Temperature" humidity: @@ -154,7 +154,7 @@ The following example display the sensor states of a MiFlora sensor on a pvvx di battery_voltage: name: "PVVX Battery-Voltage" - platform: xiaomi_hhccjcy01 - mac_address: '94:2B:FF:5C:91:61' + mac_address: XX:XX:XX:XX:XX:XX temperature: name: "Xiaomi HHCCJCY01 Temperature" id: miflora_temperature @@ -199,12 +199,12 @@ The following example will synchronized the time of the pvvx device once a day. esp32_ble_tracker: ble_client: - - mac_address: "A4:C1:38:B1:CD:7F" + - mac_address: XX:XX:XX:XX:XX:XX id: pvvx_ble_display sensor: - platform: pvvx_mithermometer - mac_address: "A4:C1:38:B1:CD:7F" + mac_address: XX:XX:XX:XX:XX:XX temperature: name: "PVVX Temperature" humidity: diff --git a/components/esp32_ble_tracker.rst b/components/esp32_ble_tracker.rst index 818f8d513c..1474e429a0 100644 --- a/components/esp32_ble_tracker.rst +++ b/components/esp32_ble_tracker.rst @@ -14,7 +14,7 @@ the MAC address of a device and track it using ESPHome. .. warning:: The BLE software stack on the ESP32 consumes a significant amount of RAM on the device. - + **Crashes are likely to occur** if you include too many additional components in your device's configuration. Memory-intensive components such as :doc:`/components/voice_assistant` and other audio components are most likely to cause issues. @@ -26,15 +26,15 @@ the MAC address of a device and track it using ESPHome. binary_sensor: - platform: ble_presence - mac_address: AC:37:43:77:5F:4C + mac_address: XX:XX:XX:XX:XX:XX name: "ESP32 BLE Presence Google Home Mini" sensor: - platform: ble_rssi - mac_address: AC:37:43:77:5F:4C + mac_address: XX:XX:XX:XX:XX:XX name: "BLE Google Home Mini RSSI value" - platform: xiaomi_hhccjcy01 - mac_address: 94:2B:FF:5C:91:61 + mac_address: XX:XX:XX:XX:XX:XX temperature: name: "Xiaomi MiFlora Temperature" moisture: @@ -46,7 +46,7 @@ the MAC address of a device and track it using ESPHome. battery_level: name: "Xiaomi MiFlora Battery Level" - platform: xiaomi_lywsdcgq - mac_address: 7A:80:8E:19:36:BA + mac_address: XX:XX:XX:XX:XX:XX temperature: name: "Xiaomi MiJia Temperature" humidity: @@ -116,9 +116,9 @@ This automation will be triggered when a Bluetooth advertising is received. A va esp32_ble_tracker: on_ble_advertise: - - mac_address: - - 11:11:11:11:11:11 - - 22:22:22:22:22:22 + - mac_address: + - XX:XX:XX:XX:XX:XX + - XX:XX:XX:XX:XX:XX then: - lambda: |- ESP_LOGD("ble_adv", "New BLE device"); @@ -159,7 +159,7 @@ variable ``x`` of type ``std::vector`` is passed to the automation for esp32_ble_tracker: on_ble_manufacturer_data_advertise: - - mac_address: 11:22:33:44:55:66 + - mac_address: XX:XX:XX:XX:XX:XX manufacturer_id: 0590 then: - lambda: |- @@ -190,7 +190,7 @@ variable ``x`` of type ``std::vector`` is passed to the automation for esp32_ble_tracker: on_ble_service_data_advertise: - - mac_address: 11:22:33:44:55:66 + - mac_address: XX:XX:XX:XX:XX:XX service_uuid: 181A then: - lambda: 'id(ble_sensor).publish_state(x[0]);' diff --git a/components/output/ble_client.rst b/components/output/ble_client.rst index 3aed40ed78..53c1f4452c 100644 --- a/components/output/ble_client.rst +++ b/components/output/ble_client.rst @@ -12,7 +12,7 @@ For more information on BLE services and characteristics, see :doc:`/components/ .. warning:: The BLE software stack on the ESP32 consumes a significant amount of RAM on the device. - + **Crashes are likely to occur** if you include too many additional components in your device's configuration. Memory-intensive components such as :doc:`/components/voice_assistant` and other audio components are most likely to cause issues. @@ -22,7 +22,7 @@ For more information on BLE services and characteristics, see :doc:`/components/ esp32_ble_tracker: ble_client: - - mac_address: FF:FF:20:00:0F:15 + - mac_address: XX:XX:XX:XX:XX:XX id: itag_black output: @@ -39,7 +39,7 @@ Configuration variables: - **service_uuid** (**Required**, UUID): UUID of the service on the device. - **characteristic_uuid** (**Required**, UUID): UUID of the service's characteristic to write to. - **id** (*Optional*, :ref:`config-id`): The ID to use for code generation, and for reference by dependent components. -- **require_response** (*Optional*, boolean): Control whether to require a remote response from the device when writing. +- **require_response** (*Optional*, boolean): Control whether to require a remote response from the device when writing. Whether or not this is required will vary by device. Defaults to ``false`` - All other options from :ref:`Output `. diff --git a/components/sensor/airthings_ble.rst b/components/sensor/airthings_ble.rst index e6fad15e7d..697dd7bad6 100644 --- a/components/sensor/airthings_ble.rst +++ b/components/sensor/airthings_ble.rst @@ -29,7 +29,7 @@ The device will then listen for nearby devices, and display a message like this .. code-block:: text [D][airthings_ble:019]: - Found AirThings device Serial: 123456789 (MAC: 01:02:03:04:05:06) + Found AirThings device Serial: 123456789 (MAC: XX:XX:XX:XX:XX:XX) Once the device is found, remove the ``airthings_ble`` device tracker from your configuration and take note of the device MAC address, and use it when configuring a sensor below. @@ -75,7 +75,7 @@ Configuration example: name: "WavePlus Battery Voltage" ble_client: - - mac_address: 01:02:03:04:05:06 + - mac_address: XX:XX:XX:XX:XX:XX id: airthings01 esp32_ble_tracker: @@ -110,7 +110,7 @@ Configuration example: name: "WaveMini Battery Voltage" ble_client: - - mac_address: 01:02:03:04:05:06 + - mac_address: XX:XX:XX:XX:XX:XX id: airthingsmini esp32_ble_tracker: diff --git a/components/sensor/am43.rst b/components/sensor/am43.rst index 108c75f5e2..79637cda15 100644 --- a/components/sensor/am43.rst +++ b/components/sensor/am43.rst @@ -25,7 +25,7 @@ to the device over the ESP32's BLE peripheral. esp32_ble_tracker: ble_client: - - mac: AA:BB:CC:DD:EE:FF + - mac: XX:XX:XX:XX:XX:XX id: am43_device sensor: diff --git a/components/sensor/b_parasite.rst b/components/sensor/b_parasite.rst index ce738a98a4..42089f036a 100644 --- a/components/sensor/b_parasite.rst +++ b/components/sensor/b_parasite.rst @@ -24,7 +24,7 @@ The ``b_parasite`` sensor platform tracks b-parasite's Bluetooth Low Energy (BLE sensor: - platform: b_parasite - mac_address: F0:CA:F0:CA:01:01 + mac_address: XX:XX:XX:XX:XX:XX humidity: name: 'b-parasite Air Humidity' temperature: diff --git a/components/sensor/ble_client.rst b/components/sensor/ble_client.rst index 469c810992..963cfefd35 100644 --- a/components/sensor/ble_client.rst +++ b/components/sensor/ble_client.rst @@ -13,7 +13,7 @@ For more information on BLE services and characteristics, see :doc:`/components/ .. warning:: The BLE software stack on the ESP32 consumes a significant amount of RAM on the device. - + **Crashes are likely to occur** if you include too many additional components in your device's configuration. Memory-intensive components such as :doc:`/components/voice_assistant` and other audio components are most likely to cause issues. @@ -23,7 +23,7 @@ For more information on BLE services and characteristics, see :doc:`/components/ esp32_ble_tracker: ble_client: - - mac_address: FF:FF:20:00:0F:15 + - mac_address: XX:XX:XX:XX:XX:XX id: itag_black sensor: diff --git a/components/sensor/ble_rssi.rst b/components/sensor/ble_rssi.rst index d169f49f5c..4590f368ce 100644 --- a/components/sensor/ble_rssi.rst +++ b/components/sensor/ble_rssi.rst @@ -13,7 +13,7 @@ instructions for setting up this platform. .. warning:: The BLE software stack on the ESP32 consumes a significant amount of RAM on the device. - + **Crashes are likely to occur** if you include too many additional components in your device's configuration. Memory-intensive components such as :doc:`/components/voice_assistant` and other audio components are most likely to cause issues. @@ -26,7 +26,7 @@ instructions for setting up this platform. sensor: # RSSI based on MAC address - platform: ble_rssi - mac_address: AC:37:43:77:5F:4C + mac_address: XX:XX:XX:XX:XX:XX name: "BLE Google Home Mini RSSI value" # RSSI based on Identity Resolving Key (IRK) - platform: ble_rssi diff --git a/components/sensor/inkbird_ibsth1_mini.rst b/components/sensor/inkbird_ibsth1_mini.rst index 530fc4e5a3..ac82f8eff7 100644 --- a/components/sensor/inkbird_ibsth1_mini.rst +++ b/components/sensor/inkbird_ibsth1_mini.rst @@ -38,7 +38,7 @@ many IBS-TH1/TH2 devices at once as you want. sensor: - platform: inkbird_ibsth1_mini - mac_address: 38:81:D7:0A:9C:11 + mac_address: XX:XX:XX:XX:XX:XX temperature: name: "Inkbird IBS-TH1 Temperature" external_temperature: @@ -88,21 +88,21 @@ like so: esp32_ble_tracker: -After uploading the ESP32 will immediately try to scan for BLE devices such as the Inkbird IBS-TH1/TH2. +After uploading the ESP32 will immediately try to scan for BLE devices such as the Inkbird IBS-TH1/TH2. When it detects these sensors, it will automatically parse the BLE message print a message like this one: .. code:: - [13:36:43][D][esp32_ble_tracker:544]: Found device 38:81:D7:0A:9C:11 RSSI=-53 + [13:36:43][D][esp32_ble_tracker:544]: Found device XX:XX:XX:XX:XX:XX RSSI=-53 [13:36:43][D][esp32_ble_tracker:565]: Address Type: PUBLIC [13:36:43][D][esp32_ble_tracker:567]: Name: 'sps' Note that it can sometimes take some time for the first BLE broadcast to be received. Please note that address type -should say 'PUBLIC' and the device name should be 'sps', this is how you find the Inkbird IBS-TH1/TH2 among all the +should say 'PUBLIC' and the device name should be 'sps', this is how you find the Inkbird IBS-TH1/TH2 among all the other devices. -Then just copy the address (``38:81:D7:0A:9C:11``) into a new ``sensor.inkbird_ibsth1_mini`` platform +Then just copy the address (``XX:XX:XX:XX:XX:XX``) into a new ``sensor.inkbird_ibsth1_mini`` platform entry like in the configuration example at the top. .. note:: diff --git a/components/sensor/mopeka_pro_check.rst b/components/sensor/mopeka_pro_check.rst index ec003a832a..6647cb0c2c 100644 --- a/components/sensor/mopeka_pro_check.rst +++ b/components/sensor/mopeka_pro_check.rst @@ -9,7 +9,7 @@ Mopeka Pro Check BLE Sensor The ``mopeka_pro_check`` sensor platform lets you track the output of Mopeka Pro Check LP, Mopeka Pro Plus, Mopeka Pro Universal or Lippert Propane Tank Sensors, Bluetooth Low Energy devices using the :doc:`/components/esp32_ble_tracker`. This component -will track the tank level, distance, temperature, and battery percentage of a +will track the tank level, distance, temperature, and battery percentage of a device every time the sensor sends out a BLE broadcast. .. warning:: @@ -21,7 +21,7 @@ device every time the sensor sends out a BLE broadcast. + Lippert Propane Tank Sensor, part number 2021130655 Sensors are calibrated for propane only. - + See :doc:`/components/sensor/mopeka_std_check` for original Mopeka Check sensors support. .. figure:: images/mopeka_pro_check.jpg @@ -32,7 +32,7 @@ device every time the sensor sends out a BLE broadcast. .. figure:: images/mopeka_pro_check_lippert.jpg :align: center - Lippert™ Propane Tank Sensor + Lippert™ Propane Tank Sensor The original Mopeka Check sensors are not supported. @@ -46,7 +46,7 @@ Mopeka Pro Check LP over BLE: sensor: # Example using 20lb vertical propane tank. - platform: mopeka_pro_check - mac_address: D3:75:F2:DC:16:91 + mac_address: XX:XX:XX:XX:XX:XX tank_type: 20LB_V temperature: name: "Propane test temp" @@ -59,7 +59,7 @@ Mopeka Pro Check LP over BLE: # Custom example - user defined empty / full points - platform: mopeka_pro_check - mac_address: D3:75:F2:DC:16:91 + mac_address: XX:XX:XX:XX:XX:XX tank_type: CUSTOM custom_distance_full: 40cm custom_distance_empty: 10mm @@ -137,9 +137,9 @@ For all sensors found the ``mopeka_ble`` component will print a message like thi .. code:: - [20:43:26][I][mopeka_ble:074]: MOPEKA PRO (NRF52) SENSOR FOUND: D3:75:F2:DC:16:91 + [20:43:26][I][mopeka_ble:074]: MOPEKA PRO (NRF52) SENSOR FOUND: XX:XX:XX:XX:XX:XX -Then just copy the address (``D3:75:F2:DC:16:91``) into a new +Then just copy the address (``XX:XX:XX:XX:XX:XX``) into a new ``sensor.mopeka_pro_check`` platform entry like in the configuration example at the top. .. note:: diff --git a/components/sensor/mopeka_std_check.rst b/components/sensor/mopeka_std_check.rst index e9f7f6f6de..84c6c594e4 100644 --- a/components/sensor/mopeka_std_check.rst +++ b/components/sensor/mopeka_std_check.rst @@ -7,9 +7,9 @@ Mopeka Standard Check BLE Sensor :keywords: Mopeka, Mopeka Standard Check, Mopeka Std Check, BLE, Bluetooth The ``mopeka_std_check`` sensor platform lets you track the output of Mopeka -Standard Check LP Bluetooth Low Energy devices using the -:doc:`/components/esp32_ble_tracker`. This component will track the tank level, -distance, temperature, and battery percentage of a Mopeka Standard Check LP BLE +Standard Check LP Bluetooth Low Energy devices using the +:doc:`/components/esp32_ble_tracker`. This component will track the tank level, +distance, temperature, and battery percentage of a Mopeka Standard Check LP BLE device every time the sensor sends out a BLE broadcast. .. warning:: @@ -29,7 +29,7 @@ device every time the sensor sends out a BLE broadcast. sensor: # Example using 11kg 100% propane tank. - platform: mopeka_std_check - mac_address: D3:75:F2:DC:16:91 + mac_address: XX:XX:XX:XX:XX:XX tank_type: Europe_11kg temperature: name: "Propane test temp" @@ -42,7 +42,7 @@ device every time the sensor sends out a BLE broadcast. # Custom example - user defined empty / full points and 80% butane and 20% propane. - platform: mopeka_std_check - mac_address: D3:75:F2:DC:16:91 + mac_address: XX:XX:XX:XX:XX:XX tank_type: CUSTOM custom_distance_full: 40cm custom_distance_empty: 32mm @@ -125,15 +125,15 @@ and the ``mopeka_ble`` component like so: mopeka_ble: -After uploading, the ESP32 will immediately try to scan for BLE devices. For Mopeka Standard devices you must press and hold the green sync button for it to be identified. +After uploading, the ESP32 will immediately try to scan for BLE devices. For Mopeka Standard devices you must press and hold the green sync button for it to be identified. Or alternativly set the configuration flag ``show_sensors_without_sync: true`` to see all devices. For all sensors found the ``mopeka_ble`` component will print a message like this one: .. code:: - [20:43:26][I][mopeka_ble:056]: MOPEKA STD (CC2540) SENSOR FOUND: D3:75:F2:DC:16:91 + [20:43:26][I][mopeka_ble:056]: MOPEKA STD (CC2540) SENSOR FOUND: XX:XX:XX:XX:XX:XX -Then just copy the address (``D3:75:F2:DC:16:91``) into a new +Then just copy the address (``XX:XX:XX:XX:XX:XX``) into a new ``sensor.mopeka_std_check`` platform entry like in the configuration example at the top. .. note:: diff --git a/components/sensor/radon_eye_ble.rst b/components/sensor/radon_eye_ble.rst index cbf7356661..eea0374b84 100644 --- a/components/sensor/radon_eye_ble.rst +++ b/components/sensor/radon_eye_ble.rst @@ -29,7 +29,7 @@ The device will then listen for nearby devices, and display a message like this .. code-block:: text [D][radon_eye_ble:017]: - Found Radon Eye RD200 device Name: FR:R20:SN1234 (MAC: 01:02:03:04:05:06) + Found Radon Eye RD200 device Name: FR:R20:SN1234 (MAC: XX:XX:XX:XX:XX:XX) Once the device is found, remove the ``radon_eye_ble`` device tracker from your configuration and take note of the device MAC address, and use it when configuring a sensor below. @@ -61,7 +61,7 @@ Configuration example: esp32_ble_tracker: ble_client: - - mac_address: 01:02:03:04:05:06 + - mac_address: XX:XX:XX:XX:XX:XX id: radon_eye_ble_id sensor: @@ -80,7 +80,7 @@ Here is an example to use pCi/L (to match the value on the device display): esp32_ble_tracker: ble_client: - - mac_address: 01:02:03:04:05:06 + - mac_address: XX:XX:XX:XX:XX:XX id: radon_eye_ble_id sensor: @@ -99,4 +99,3 @@ Here is an example to use pCi/L (to match the value on the device display): accuracy_decimals: 2 filters: - lambda: return x / 37; - diff --git a/components/sensor/ruuvitag.rst b/components/sensor/ruuvitag.rst index b38f807408..b69d7a3dd4 100644 --- a/components/sensor/ruuvitag.rst +++ b/components/sensor/ruuvitag.rst @@ -30,7 +30,7 @@ movement count and measurement sequence number are also tracked. sensor: - platform: ruuvitag - mac_address: FF:56:D3:2F:7D:E8 + mac_address: XX:XX:XX:XX:XX:XX humidity: name: "RuuviTag Humidity" temperature: @@ -167,11 +167,11 @@ print a message like this one: .. code:: - Got ruuvi RuuviTag (FF:56:D3:2F:7D:E8): Humidity: 67.5%, Temperature: 22.97°C, + Got ruuvi RuuviTag (XX:XX:XX:XX:XX:XX): Humidity: 67.5%, Temperature: 22.97°C, Pressure: 977.09hPa, Acceleration X: 0.005G, Acceleration Y: 0.017G, Acceleration Z: 1.066G, Battery Voltage: 3.223V -Then just copy the address (``FF:56:D3:2F:7D:E8``) into a new +Then just copy the address (``XX:XX:XX:XX:XX:XX``) into a new ``sensor.ruuvitag`` platform entry like in the configuration example at the top. .. note:: diff --git a/components/sensor/xiaomi_ble.rst b/components/sensor/xiaomi_ble.rst index cee4a1a6af..cf88a30bf3 100644 --- a/components/sensor/xiaomi_ble.rst +++ b/components/sensor/xiaomi_ble.rst @@ -32,7 +32,7 @@ Configuration example: sensor: - platform: xiaomi_hhccjcy01 - mac_address: '94:2B:FF:5C:91:61' + mac_address: XX:XX:XX:XX:XX:XX temperature: name: "Xiaomi HHCCJCY01 Temperature" moisture: @@ -64,7 +64,7 @@ Configuration example: sensor: - platform: xiaomi_gcls002 - mac_address: "94:2B:FF:5C:91:61" + mac_address: XX:XX:XX:XX:XX:XX temperature: name: "GCLS02 Temperature" moisture: @@ -89,7 +89,7 @@ Configuration example: sensor: - platform: xiaomi_hhccpot002 - mac_address: "94:2B:FF:5C:91:61" + mac_address: XX:XX:XX:XX:XX:XX moisture: name: "HHCCPOT002 Moisture" conductivity: @@ -110,7 +110,7 @@ Configuration example: sensor: - platform: xiaomi_lywsdcgq - mac_address: "7A:80:8E:19:36:BA" + mac_address: XX:XX:XX:XX:XX:XX temperature: name: "LYWSDCGQ Temperature" humidity: @@ -135,7 +135,7 @@ Configuration example: sensor: - platform: xiaomi_lywsd02 - mac_address: "3F:5B:7D:82:58:4E" + mac_address: XX:XX:XX:XX:XX:XX temperature: name: "LYWSD02 Temperature" humidity: @@ -160,7 +160,7 @@ Configuration example: sensor: - platform: xiaomi_cgg1 - mac_address: "7A:80:8E:19:36:BA" + mac_address: XX:XX:XX:XX:XX:XX temperature: name: "CGG1 Temperature" humidity: @@ -168,7 +168,7 @@ Configuration example: battery_level: name: "CGG1 Battery Level" - platform: xiaomi_cgg1 - mac_address: "7A:80:8E:28:39:CD" + mac_address: XX:XX:XX:XX:XX:XX bindkey: "00112233445566778899aabbccddeeff" temperature: name: "CGG1 (New) Temperature" @@ -200,7 +200,7 @@ Configuration example for Xiaomi stock firmware or ATC MiThermometer firmware se sensor: - platform: xiaomi_lywsd03mmc - mac_address: "A4:C1:38:B1:CD:7F" + mac_address: XX:XX:XX:XX:XX:XX bindkey: "eef418daf699a0c188f3bfd17e4565d9" temperature: name: "LYWSD03MMC Temperature" @@ -215,7 +215,7 @@ Configuration example for PVVX MiThermometer firmware set to "Custom" advertisem sensor: - platform: pvvx_mithermometer - mac_address: "A4:C1:38:B1:CD:7F" + mac_address: XX:XX:XX:XX:XX:XX temperature: name: "PVVX Temperature" humidity: @@ -233,7 +233,7 @@ Configuration example for ATC MiThermometer firmware set to "Custom" advertiseme sensor: - platform: atc_mithermometer - mac_address: "A4:C1:38:B1:CD:7F" + mac_address: XX:XX:XX:XX:XX:XX temperature: name: "ATC Temperature" humidity: @@ -263,7 +263,7 @@ Configuration example: sensor: - platform: xiaomi_mhoc303 - mac_address: "E7:50:59:32:A0:1C" + mac_address: XX:XX:XX:XX:XX:XX temperature: name: "MHO-C303 Climate Temperature" humidity: @@ -296,7 +296,7 @@ Configuration example for Xiaomi stock firmware: sensor: - platform: xiaomi_mhoc401 - mac_address: "A4:C1:38:B1:CD:7F" + mac_address: XX:XX:XX:XX:XX:XX bindkey: "eef418daf699a0c188f3bfd17e4565d9" temperature: name: "MHOC401 Temperature" @@ -311,7 +311,7 @@ Configuration example for PVVX MiThermometer firmware set to "Custom" advertisem sensor: - platform: pvvx_mithermometer - mac_address: "A4:C1:38:B1:CD:7F" + mac_address: XX:XX:XX:XX:XX:XX temperature: name: "PVVX Temperature" humidity: @@ -337,7 +337,7 @@ Configuration example: sensor: - platform: xiaomi_cgd1 - mac_address: "A4:C1:38:8C:34:B7" + mac_address: XX:XX:XX:XX:XX:XX bindkey: "fe39106baeedb7c801e3d63c4396f97e" temperature: name: "CGD1 Temperature" @@ -362,7 +362,7 @@ Configuration example: sensor: - platform: xiaomi_cgdk2 - mac_address: "58:2D:34:11:34:B7" + mac_address: XX:XX:XX:XX:XX:XX bindkey: "fe39106baeedb7c801e3d63c4396f97e" temperature: name: "CGDK2 Temperature" @@ -386,7 +386,7 @@ Configuration example: sensor: - platform: xiaomi_jqjcy01ym - mac_address: "7A:80:8E:19:36:BA" + mac_address: XX:XX:XX:XX:XX:XX temperature: name: "JQJCY01YM Temperature" humidity: @@ -413,7 +413,7 @@ Configuration example: binary_sensor: - platform: xiaomi_wx08zm - mac_address: "74:a3:4a:b5:07:34" + mac_address: XX:XX:XX:XX:XX:XX tablet: name: "WX08ZM Mosquito Tablet" battery_level: @@ -437,7 +437,7 @@ Configuration example: binary_sensor: - platform: xiaomi_mue4094rt name: "MUE4094RT Night Light" - mac_address: "7A:80:8E:19:36:BA" + mac_address: XX:XX:XX:XX:XX:XX timeout: "5s" MJYD02YL-A @@ -458,7 +458,7 @@ Configuration example: binary_sensor: - platform: xiaomi_mjyd02yla name: "MJYD02YL-A Night Light" - mac_address: "50:EC:50:CD:32:02" + mac_address: XX:XX:XX:XX:XX:XX bindkey: "48403ebe2d385db8d0c187f81e62cb64" idle_time: name: "MJYD02YL-A Idle Time" @@ -485,7 +485,7 @@ Configuration example: binary_sensor: - platform: xiaomi_cgpr1 name: "CGPR1 Motion detector" - mac_address: 58:2D:34:60:32:A2 + mac_address: XX:XX:XX:XX:XX:XX bindkey: "ff1ae526b23b4aebeadcaaad86f59055" idle_time: name: "CGPR1 Idle Time" @@ -510,7 +510,7 @@ Configuration example: xiaomi_rtcgq02lm: - id: motion_one - mac_address: 01:23:45:67:89:AB + mac_address: XX:XX:XX:XX:XX:XX bindkey: fe39106baeedb7c801e3d63c4396f97e binary_sensor: @@ -567,11 +567,11 @@ After uploading, the ESP32 will immediately try to scan for BLE devices. When it .. code:: - Found device A4:C1:38:4E:16:78 RSSI=-78 + Found device XX:XX:XX:XX:XX:XX RSSI=-78 Address Type: PUBLIC Name: 'LYWSD03MMC' -It can sometimes take some time for the first BLE broadcast to be received. Once the device has been found, copy the address ``A4:C1:38:4E:16:78`` into a new platform entry like shown in the example configurations. +It can sometimes take some time for the first BLE broadcast to be received. Once the device has been found, copy the address ``XX:XX:XX:XX:XX:XX`` into a new platform entry like shown in the example configurations. .. _obtaining_the_bindkey: @@ -621,7 +621,7 @@ Another option is to use a SSL packet sniffer. It can be setup on either an Andr packet: POST /app/device/bltbind - "data" = "{"did":"blt.3.129q4nasgeg00","token":"20c665a7ff82a5bfb5eefc36","props":[{"type":"prop","key":"bind_key","value":"cfc7cc892f4e32f7a733086cf3443cb0"}, {"type":"prop","key":"smac","value":"A4:C1:38:8C:34:B7"}]}" + "data" = "{"did":"blt.3.129q4nasgeg00","token":"20c665a7ff82a5bfb5eefc36","props":[{"type":"prop","key":"bind_key","value":"cfc7cc892f4e32f7a733086cf3443cb0"}, {"type":"prop","key":"smac","value":XX:XX:XX:XX:XX:XX}]}" The ``bind_key`` is the 32 digits "value" item in the above output which needs to be inserted into the config file. diff --git a/components/sensor/xiaomi_hhccjcy10.rst b/components/sensor/xiaomi_hhccjcy10.rst index d70aad5e8f..54328bc17f 100644 --- a/components/sensor/xiaomi_hhccjcy10.rst +++ b/components/sensor/xiaomi_hhccjcy10.rst @@ -16,7 +16,7 @@ MiFlora, tuya (pink) version, measures temperature, moisture, ambient light and sensor: - platform: xiaomi_hhccjcy10 - mac_address: '94:2B:FF:5C:91:61' + mac_address: XX:XX:XX:XX:XX:XX temperature: name: "Xiaomi HHCCJCY10 Temperature" moisture: diff --git a/components/sensor/xiaomi_miscale.rst b/components/sensor/xiaomi_miscale.rst index c054788d98..61dbba5aba 100644 --- a/components/sensor/xiaomi_miscale.rst +++ b/components/sensor/xiaomi_miscale.rst @@ -26,7 +26,7 @@ Miscale (left) measures weight only. Miscale2 (right) measures weight and impeda sensor: - platform: xiaomi_miscale - mac_address: '5C:CA:D3:70:D4:A2' + mac_address: XX:XX:XX:XX:XX:XX weight: name: "Xiaomi Mi Scale Weight" impedance: @@ -59,7 +59,7 @@ You have to replace the numbers in the lambdas to determine your weight which is sensor: - platform: xiaomi_miscale - mac_address: '5C:CA:D3:70:D4:A2' + mac_address: XX:XX:XX:XX:XX:XX weight: name: "Xiaomi Mi Scale Weight" id: weight_miscale diff --git a/components/switch/ble_client.rst b/components/switch/ble_client.rst index 96b3599b9c..13ab0cabf2 100644 --- a/components/switch/ble_client.rst +++ b/components/switch/ble_client.rst @@ -13,7 +13,7 @@ For more information on BLE services and characteristics, see :doc:`/components/ .. warning:: The BLE software stack on the ESP32 consumes a significant amount of RAM on the device. - + **Crashes are likely to occur** if you include too many additional components in your device's configuration. Memory-intensive components such as :doc:`/components/voice_assistant` and other audio components are most likely to cause issues. @@ -23,7 +23,7 @@ For more information on BLE services and characteristics, see :doc:`/components/ esp32_ble_tracker: ble_client: - - mac_address: FF:FF:20:00:0F:15 + - mac_address: XX:XX:XX:XX:XX:XX id: itag_black switch: diff --git a/components/text_sensor/ble_client.rst b/components/text_sensor/ble_client.rst index f3ba0cd37e..1ea20be7cd 100644 --- a/components/text_sensor/ble_client.rst +++ b/components/text_sensor/ble_client.rst @@ -16,7 +16,7 @@ For more information on BLE services and characteristics, see esp32_ble_tracker: ble_client: - - mac_address: FF:FF:20:00:0F:15 + - mac_address: XX:XX:XX:XX:XX:XX id: itag_black text_sensor: diff --git a/components/text_sensor/ble_scanner.rst b/components/text_sensor/ble_scanner.rst index 6b4c0873e4..c577d4d08e 100644 --- a/components/text_sensor/ble_scanner.rst +++ b/components/text_sensor/ble_scanner.rst @@ -19,7 +19,7 @@ the data in JSON format. .. warning:: The BLE software stack on the ESP32 consumes a significant amount of RAM on the device. - + **Crashes are likely to occur** if you include too many additional components in your device's configuration. Memory-intensive components such as :doc:`/components/voice_assistant` and other audio components are most likely to cause issues. @@ -39,7 +39,7 @@ Example json log: { "timestamp":1578254525, - "address":"D7:E7:E7:66:DD:33", + "address": "XX:XX:XX:XX:XX:XX", "rssi":"-80", "name":"MI Band 2" } From c34865a27e29eff78d53872676376eaa807f4cd7 Mon Sep 17 00:00:00 2001 From: Keith Burzinski Date: Mon, 15 Jul 2024 22:48:18 -0500 Subject: [PATCH 045/173] [canbus] Break out platforms (#4038) --- components/canbus.rst | 498 ------------------ components/canbus/esp32_can.rst | 83 +++ .../{ => canbus}/images/canbus_esp32_3v3.png | Bin .../{ => canbus}/images/canbus_esp32_5v.png | Bin .../images/canbus_mcp2515_resistor.png | Bin .../images/canbus_mcp2515_txs0108e.png | Bin components/canbus/index.rst | 369 +++++++++++++ components/canbus/mcp2515.rst | 79 +++ components/index.rst | 1 + images/mcp2515.svg | 1 + index.rst | 11 +- 11 files changed, 543 insertions(+), 499 deletions(-) delete mode 100644 components/canbus.rst create mode 100644 components/canbus/esp32_can.rst rename components/{ => canbus}/images/canbus_esp32_3v3.png (100%) rename components/{ => canbus}/images/canbus_esp32_5v.png (100%) rename components/{ => canbus}/images/canbus_mcp2515_resistor.png (100%) rename components/{ => canbus}/images/canbus_mcp2515_txs0108e.png (100%) create mode 100644 components/canbus/index.rst create mode 100644 components/canbus/mcp2515.rst create mode 100644 images/mcp2515.svg diff --git a/components/canbus.rst b/components/canbus.rst deleted file mode 100644 index 8c562f6263..0000000000 --- a/components/canbus.rst +++ /dev/null @@ -1,498 +0,0 @@ -.. _canbus: - -CAN bus -======= - -.. seo:: - :description: Instructions for setting up an CAN bus in ESPHome - :image: canbus.svg - :keywords: CAN - -Controller Area Network (CAN bus) is a serial bus protocol to connect individual systems and sensors -as an alternative to conventional multi-wire looms. -It allows automotive components to communicate on a single or dual-wire networked data bus up to 1Mbps. -CAN is an International Standardization Organization (ISO) defined serial communications bus originally -developed for the automotive industry to replace the complex wiring harness with a two-wire bus. The -specification calls for high immunity to electrical interference and the ability to self-diagnose and repair -data errors. These features have led to CAN’s popularity in a variety of industries including building -automation, medical, and manufacturing. - -The current ESPHome implementation supports single frame data transfer. In this way you may send and -receive data frames up to 8 bytes. -With this you can transmit the press of a button or the feedback from a sensor on the bus. -All other devices on the bus will be able to get this data to switch on/off a light or display the -transmitted data. - -The CAN bus itself has only two wires named Can High and Can Low or CanH and CanL. For the ESPHome -CAN bus to work you need to select the device that has the physical CAN bus implemented. -You can configure multiple buses. - -Any can bus node can transmit data at any time, and any node can send any ``can_id`` value and any -node can receive any can_id too. Is up to you how to organize the can_id values. You can setup a can -bus network where each node has a can id which will use to broadcast data about itself, if a node -should, e.g. turn on a light, it can listen for can messages with the can id assigned to it. -So you can have several nodes being able to control a light in e.g. node 20. - -Base CAN Bus Configuration --------------------------- - -Each canbus platform extends this configuration schema. - -.. code-block:: yaml - - # Example configuration entry - canbus: - - platform: ... - can_id: 4 - on_frame: - - can_id: 500 - use_extended_id: false - then: - - lambda: |- - std::string b(x.begin(), x.end()); - ESP_LOGD("can id 500", "%s", &b[0] ); - -.. _config-canbus: - -Configuration variables: -************************ - -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **can_id** (**Required**, int): default *can id* used for transmitting frames. -- **use_extended_id** (*Optional*, boolean): default *false* identifies the type of *can_id*: - *false*: Standard 11 bits IDs, *true*: Extended 29 bits ID -- **bit_rate** (*Optional*, enum): One of the supported bitrates. Defaults to ``125KBPS``. - - - ``1KBPS`` - Support by ``esp32_can`` depends on ESP32 variant - - ``5KBPS`` - Support by ``esp32_can`` depends on ESP32 variant - - ``10KBPS`` - Support by ``esp32_can`` depends on ESP32 variant - - ``12K5BPS`` - Support by ``esp32_can`` depends on ESP32 variant - - ``16KBPS`` - Support by ``esp32_can`` depends on ESP32 variant - - ``20KBPS`` - Support by ``esp32_can`` depends on ESP32 variant - - ``25KBPS`` - - ``31K25BPS`` - Not supported by ``esp32_can`` - - ``33KBPS`` - Not supported by ``esp32_can`` - - ``40KBPS`` - Not supported by ``esp32_can`` - - ``50KBPS`` - - ``80KBPS`` - Not supported by ``esp32_can`` - - ``83K3BPS`` - Not supported by ``esp32_can`` - - ``95KBPS`` - Not supported by ``esp32_can`` - - ``100KBPS`` - - ``125KBPS`` - (Default) - - ``200KBPS`` - Not supported by ``esp32_can`` - - ``250KBPS`` - - ``500KBPS`` - - ``1000KBPS`` - - See :ref:`this table ` for a list of supported bit rates by the internal CAN (TWAI) controllers of different ESP32 variants. - - -Automations: ------------- - -- **on_frame** (*Optional*, :ref:`Automation `): An automation to perform when a - CAN frame is received. See :ref:`canbus-on-frame`. - -.. _canbus-on-frame: - -``on_frame`` Trigger -******************** - -This automation will be triggered when a CAN frame is received. The variables ``x`` (of type -``std::vector``) containing the frame data, ``can_id`` (of type ``uint32_t``) containing the actual -received CAN id and ``remote_transmission_request`` (of type ``bool``) containing the corresponding field -from the CAN frame are passed to the automation for use in lambdas. - -.. note:: - - Messages this node sends to the same ID will not show up as received messages. - -.. code-block:: yaml - - canbus: - - platform: ... - on_frame: - - can_id: 43 # the received can_id - then: - - if: - condition: - lambda: 'return (x.size() > 0) ? x[0] == 0x11 : false;' - then: - light.toggle: light1 - - can_id: 0b00000000000000000000001000000 - can_id_mask: 0b11111000000000011111111000000 - use_extended_id: true - remote_transmission_request: false - then: - - lambda: |- - auto pdo_id = can_id >> 14; - switch (pdo_id) - { - case 117: - ESP_LOGD("canbus", "exhaust_fan_duty"); - break; - case 118: - ESP_LOGD("canbus", "supply_fan_duty"); - break; - case 119: - ESP_LOGD("canbus", "supply_fan_flow"); - break; - // to be continued... - } - - -Configuration variables: -************************ - -- **can_id** (**Required**, int): The received CAN id to trigger this automation on. -- **can_id_mask** (*Optional*, int): The bit mask to apply to the received CAN id before trying to match it - with *can_id*, defaults to ``0x1fffffff`` (all bits of received CAN id are compared with *can_id*). -- **use_extended_id** (*Optional*, boolean): Identifies the type of *can_id* to match on, defaults to *false*. -- **remote_transmission_request** (*Optional*, boolean): Whether to run for CAN frames with the "remote - transmission request" bit set or not set, defaults to not checking, i.e. to run for both cases. - -``canbus.send`` Action -********************** - -The can bus can transmit frames by means of the ``canbus.send`` action. -There are several forms to use it: - -.. code-block:: yaml - - on_...: - - canbus.send: - data: [ 0x10, 0x20, 0x30 ] - canbus_id: my_mcp2515 # optional if you only have 1 canbus device - can_id: 23 # override the can_id configured in the can bus - - on_...: - - canbus.send: [ 0x11, 0x22, 0x33 ] - - - canbus.send: 'hello' - - # Templated, return type is std::vector - - canbus.send: !lambda return {0x00, 0x20, 0x42}; - -Configuration variables: - -- **data** (**Required**, binary data, :ref:`templatable `): Data to transmit, up to 8 bytes or - characters are supported by can bus per frame. -- **canbus_id** (*Optional*): Optionally set the can bus id to use for transmitting - the frame. Not needed if you are using only 1 can bus. -- **can_id** (*Optional*, int): Allows to override the can id configured in - the can bus device. -- **use_extended_id** (*Optional*, boolean): default *false* identifies the type of *can_id*: - *false*: Standard 11 Bit IDs, *true*: Extended 29Bit ID -- **remote_transmission_request** (*Optional*, boolean): Set to send CAN bus frame to request data from another node - (defaults to *false*). If a certain data length code needs to be sent, provide as many (dummy) bytes in *data*. - -ESP32 CAN Component -------------------- - -The ESP32 has an integrated CAN controller and therefore doesn't need an external controller necessarily. -You only need to specify the RX and TX pins. Any GPIO will work. - -.. code-block:: yaml - - # Example configuration entry - canbus: - - platform: esp32_can - tx_pin: GPIOXX - rx_pin: GPIOXX - can_id: 4 - bit_rate: 50kbps - on_frame: - ... - - -.. _esp32-can-bit-rate: - -The table lists the specific bit rates supported by the component for ESP32 variants: - =================== ======= ========== ========== ========== ========== ========== - bit_rate ESP32 ESP32-S2 ESP32-S3 ESP32-C3 ESP32-C6 ESP32-H2 - =================== ======= ========== ========== ========== ========== ========== - 1KBPS x x x x x - 5KBPS x x x x x - 10KBPS x x x x x - 12K5BPS x x x x x - 16KBPS x x x x x - 20KBPS x x x x x - 25KBPS x x x x x x - 31K25BPS - 33KBPS - 40KBPS - 50KBPS x x x x x x - 80KBPS - 83K38BPS - 95KBPS - 100KBPS x x x x x x - 125KBPS (Default) x x x x x x - 250KBPS x x x x x x - 500KBPS x x x x x x - 800KBPS x x x x x x - 1000KBPS x x x x x x - =================== ======= ========== ========== ========== ========== ========== - - -Wiring options -************** - -5V CAN transceivers are cheap and generate compliant levels. If you power your -board with 5V this is the preferred option. R501 is important to reduce the 5V -logic level down to 3.3V, to avoid damaging the ESP32. You can alternatively -use a voltage divider here instead. - -.. figure:: images/canbus_esp32_5v.png - :align: center - :target: ../_images/canbus_esp32_5v.png - -If you prefer to only have a 3.3V power supply, special 3.3V CAN transceivers are available. - -.. figure:: images/canbus_esp32_3v3.png - :align: center - :target: ../_images/canbus_esp32_3v3.png - - -Configuration variables: -************************ - -- **rx_pin** (**Required**, :ref:`Pin `): Receive pin. -- **tx_pin** (**Required**, :ref:`Pin `): Transmit pin. -- All other options from :ref:`Canbus `. - -MCP2515 Component ------------------ - -The MCP2515 is a spi device and therefore you must first add the configuration for the spi bus to your file. -You need to have an :ref:`SPI bus ` in your configuration with both the **mosi_pin** and **miso_pin** set. - -For wiring up the MSP2515 please refer to the section below. - -.. code-block:: yaml - - # Example configuration entry - canbus: - - platform: mcp2515 - cs_pin: GPIOXX - can_id: 4 - bit_rate: 50kbps - on_frame: - - can_id: 500 - then: - - lambda: |- - std::string b(x.begin(), x.end()); - ESP_LOGD("canid 500", "%s", &b[0] ); - - light.turn_off: light_1 - - can_id: 501 - then: - - light.turn_on: - id: light_1 - brightness: !lambda "return (x.size() > 0) ? (float) x[0]/255 : 0;" - -Configuration variables: -************************ - -- **cs_pin** (**Required**, :ref:`Pin Schema `): Is used to tell the receiving SPI device - when it should listen for data on the SPI bus. Each device has an individual ``CS`` line. - Sometimes also called ``SS``. -- **clock** (*Optional*): One of ``8MHZ``, ``12MHz``, ``16MHZ`` or ``20MHZ``. Clock crystal used on the MCP2515 device. - Defaults to ``8MHZ``. -- **mode** (*Optional*): Operation mode. Default to ``NORMAL`` - - - ``NORMAL``: Normal operation - - ``LOOPBACK``: Loopback mode can be used to just test you spi connections to the device - - ``LISTENONLY``: only receive data - -- All other options from :ref:`Canbus `. - -Note that not all combinations of clock and bitrate are supported. An unsupported -combination will not be flagged at compile time, check the runtime log for a message like -``Invalid frequency/bitrate combination`` if you suspect this is an issue. - -Wiring options -************** - -Easiest approach is to just use fully assembled boards and just add one resistor in the MISO line. -This runs MOSI, SCK and CS out of specification which is nearly never a problem. - -.. figure:: images/canbus_mcp2515_resistor.png - :align: center - :target: ../_images/canbus_mcp2515_resistor.png - -A more advanced option is to fully convert the 5V and 3.3V logic levels with a level shifter. - -.. figure:: images/canbus_mcp2515_txs0108e.png - :align: center - :target: ../_images/canbus_mcp2515_txs0108e.png - -Extended ID ------------ -Standard IDs and Extended IDs can coexist on the same segment. - -.. note:: - - It is important to know that for example Standard 0x123 and Extended 0x123 are different addresses. - This example shows how the different ID types are used in the configuration for transmission and receiving. - For the IDs decimal or hexadecimal notation is possible: - 0x000 - 0x7ff / 0-2047 for Standard IDs only. - 0x00000000 - 0x1fffffff / 0-536870911 for Extended IDs. - -.. code-block:: yaml - - # Transmission of extended and standard ID 0x100 every second - time: - - platform: sntp - on_time: - - seconds: /1 - then: - - canbus.send: - # Extended ID explicit - use_extended_id: true - can_id: 0x100 - data: [0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08] - - canbus.send: - # Standard ID by default - can_id: 0x100 - data: [0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08] - - canbus: - - platform: mcp2515 - id: my_mcp2515 - spi_id: McpSpi - cs_pin: GPIOXX - can_id: 0x1fff - use_extended_id: true - bit_rate: 125kbps - on_frame: - - can_id: 0x123 - use_extended_id: true - then: - - lambda: |- - std::string b(x.begin(), x.end()); - ESP_LOGD("can extended id 0x123", "%s", &b[0] ); - - can_id: 0x123 - then: - - lambda: |- - std::string b(x.begin(), x.end()); - ESP_LOGD("can standard id 0x123", "%s", &b[0] ); - -Binary Sensor Example ---------------------- -Example for the following application: -Button is connected on a can node which sends an A message on ID 0x100 with payload 0x01 for contact closed and 0x00 for contact open. - -.. code-block:: yaml - - spi: - id: McpSpi - clk_pin: GPIOXX - mosi_pin: GPIOXX - miso_pin: GPIOXX - - binary_sensor: - - platform: template - name: "CAN Bus Button" - id: "can_bus_button" - - canbus: - - platform: mcp2515 - id: my_mcp2515 - spi_id: McpSpi - cs_pin: GPIOXX - can_id: 4 - bit_rate: 125kbps - on_frame: - - can_id: ${0x100} - then: - - lambda: |- - if(x.size() > 0) { - switch(x[0]) { - case 0x0: id(can_bus_button).publish_state(false); break; // button release - case 0x1: id(can_bus_button).publish_state(true); break; // button down - } - } - -Cover Example -------------- -Example for following application: -Buttons are connected on the CAN-Node and also the motor is connected via CAN. - -.. epigraph:: - - | **Button 1:** ID 0x50B - 1 byte payload - | (0: Button release, 1: Button down, 2: long down, 3: long release, 4 double click) - | **Button 2:** ID 0x50C - 1 byte payload - | (0: Button release, 1: Button down, 2: long down, 3: long release, 4 double click) - | **Motor:** ID 0x51A - 1 byte payload - | (0: off, 1: open, 2: close) - -.. code-block:: yaml - - spi: - id: McpSpi - clk_pin: GPIOXX - mosi_pin: GPIOXX - miso_pin: GPIOXX - - canbus: - - platform: mcp2515 - id: my_mcp2515 - spi_id: McpSpi - cs_pin: GPIOXX - can_id: 4 - bit_rate: 125kbps - on_frame: - - can_id: 0x50c - then: - - lambda: |- - if(x.size() > 0) { - auto call = id(TestCover).make_call(); - switch(x[0]) { - case 0x2: call.set_command_open(); call.perform(); break; // long pressed - case 0x1: // button down - case 0x3: call.set_command_stop(); call.perform(); break; // long released - case 0x4: call.set_position(1.0); call.perform(); break; // double click - } - } - - can_id: 0x50b - then: - - lambda: |- - if(x.size() > 0) { - auto call = id(TestCover).make_call(); - switch(x[0]) { - case 0x2: call.set_command_close(); call.perform(); break; // long pressed - case 0x1: // button down - case 0x3: call.set_command_stop(); call.perform(); break; // long released - case 0x4: call.set_position(0.0); call.perform(); break; // double click - } - } - - cover: - - platform: time_based - name: "MyCanbusTestCover" - id: TestCover - device_class: shutter - has_built_in_endstop: true - open_action: - - canbus.send: - data: [ 0x01 ] - canbus_id: my_mcp2515 - can_id: 0x51A - open_duration: 2min - close_action: - - canbus.send: - data: [ 0x02 ] - canbus_id: my_mcp2515 - can_id: 0x51A - close_duration: 2min - stop_action: - - canbus.send: - data: [ 0x00 ] - canbus_id: my_mcp2515 - can_id: 0x51A - -See Also --------- - -- :apiref:`spi/spi.h` -- :ghedit:`Edit` diff --git a/components/canbus/esp32_can.rst b/components/canbus/esp32_can.rst new file mode 100644 index 0000000000..bc973f08e2 --- /dev/null +++ b/components/canbus/esp32_can.rst @@ -0,0 +1,83 @@ +ESP32 CAN +========= + +.. seo:: + :description: Instructions for setting up the ESP32 CAN bus platform in ESPHome + :image: canbus.svg + :keywords: CAN, ESP32 + +The ESP32 has an integrated CAN controller and therefore doesn't necessarily need an external controller. +You only need to specify the RX and TX pins. Any GPIO will work. + +.. code-block:: yaml + + # Example configuration entry + canbus: + - platform: esp32_can + tx_pin: GPIOXX + rx_pin: GPIOXX + can_id: 4 + bit_rate: 50kbps + on_frame: + ... + +Configuration variables: +------------------------ + +- **rx_pin** (**Required**, :ref:`Pin `): Receive pin. +- **tx_pin** (**Required**, :ref:`Pin `): Transmit pin. +- All other options from :ref:`Canbus `. + +.. _esp32-can-bit-rate: + +The following table lists the bit rates supported by the component for ESP32 variants: + +=================== ======= ========== ========== ========== ========== ========== +bit_rate ESP32 ESP32-S2 ESP32-S3 ESP32-C3 ESP32-C6 ESP32-H2 +=================== ======= ========== ========== ========== ========== ========== +1KBPS x x x x x +5KBPS x x x x x +10KBPS x x x x x +12K5BPS x x x x x +16KBPS x x x x x +20KBPS x x x x x +25KBPS x x x x x x +31K25BPS +33KBPS +40KBPS +50KBPS x x x x x x +80KBPS +83K38BPS +95KBPS +100KBPS x x x x x x +125KBPS (Default) x x x x x x +250KBPS x x x x x x +500KBPS x x x x x x +800KBPS x x x x x x +1000KBPS x x x x x x +=================== ======= ========== ========== ========== ========== ========== + +Wiring options +-------------- + +5V CAN transceivers are cheap and generate compliant levels. If you power your +board with 5V this is the preferred option. R501 is important to reduce the 5V +logic level down to 3.3V, to avoid damaging the ESP32. You can alternatively +use a voltage divider here instead. + +.. figure:: images/canbus_esp32_5v.png + :align: center + :target: ../_images/canbus_esp32_5v.png + +If you prefer to only have a 3.3V power supply, special 3.3V CAN transceivers are available. + +.. figure:: images/canbus_esp32_3v3.png + :align: center + :target: ../_images/canbus_esp32_3v3.png + +See Also +-------- + +- :doc:`index` +- :apiref:`canbus/canbus.h` +- :ghedit:`Edit` diff --git a/components/images/canbus_esp32_3v3.png b/components/canbus/images/canbus_esp32_3v3.png similarity index 100% rename from components/images/canbus_esp32_3v3.png rename to components/canbus/images/canbus_esp32_3v3.png diff --git a/components/images/canbus_esp32_5v.png b/components/canbus/images/canbus_esp32_5v.png similarity index 100% rename from components/images/canbus_esp32_5v.png rename to components/canbus/images/canbus_esp32_5v.png diff --git a/components/images/canbus_mcp2515_resistor.png b/components/canbus/images/canbus_mcp2515_resistor.png similarity index 100% rename from components/images/canbus_mcp2515_resistor.png rename to components/canbus/images/canbus_mcp2515_resistor.png diff --git a/components/images/canbus_mcp2515_txs0108e.png b/components/canbus/images/canbus_mcp2515_txs0108e.png similarity index 100% rename from components/images/canbus_mcp2515_txs0108e.png rename to components/canbus/images/canbus_mcp2515_txs0108e.png diff --git a/components/canbus/index.rst b/components/canbus/index.rst new file mode 100644 index 0000000000..a16a727085 --- /dev/null +++ b/components/canbus/index.rst @@ -0,0 +1,369 @@ +CAN Bus +======= + +.. seo:: + :description: Instructions for setting up an CAN bus in ESPHome + :image: canbus.svg + :keywords: CAN + +The Controller Area Network (CAN) bus is a serial bus protocol to connect individual systems and sensors +as an alternative to conventional multi-wire looms. It allows automotive components to communicate on a +single or dual-wire data bus at speeds up to 1Mbps. + +CAN is an International Standardization Organization (ISO) defined serial communications bus originally +developed for the automotive industry to replace the complex wiring harness with a two-wire bus. The +specification calls for high immunity to electrical interference and the ability to self-diagnose and repair +data errors. These features have led to CAN’s popularity in a variety of industries including building +automation, medical, and manufacturing. + +The current ESPHome implementation supports single frame data transfer. In this way you may send and +receive data frames up to 8 bytes. +With this you can transmit the press of a button or the feedback from a sensor on the bus. +All other devices on the bus will be able to get this data to switch on/off a light or display the +transmitted data. + +The CAN bus itself has only two wires named Can High and Can Low or CanH and CanL. For the ESPHome +CAN bus to work, you need to select the device that has the physical CAN bus implemented. +You can configure multiple buses. + +Any CAN bus node can transmit data at any time; any node can both send and/or receive any ``can_id`` value. +You must determine how to organize the ``can_id`` values; for example, you can set up a CAN bus network where +each node has a ``can_id`` it will use to broadcast data about itself. If a given node should (for example) turn +on a light, it can listen to the CAN bus for messages containing its specific ``can_id`` and react accodingly. +With this architecture, you can have multiple nodes able to control a light connected to a single, specific node. + +Base CAN Bus Configuration +-------------------------- + +Each ``canbus`` platform extends the following configuration schema: + +.. code-block:: yaml + + # Example configuration entry + canbus: + - platform: ... + can_id: 4 + on_frame: + - can_id: 500 + use_extended_id: false + then: + - lambda: |- + std::string b(x.begin(), x.end()); + ESP_LOGD("can id 500", "%s", &b[0] ); + +.. _config-canbus: + +**Configuration variables:** + +- **platform** (**Required**, :ref:`platform`): One of the supported CAN bus :ref:`platforms-canbus`. +- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. +- **can_id** (**Required**, int): default *CAN ID* used for transmitting frames. +- **use_extended_id** (*Optional*, boolean): Identifies the type of ``can_id``: + + - ``false``: Standard 11-bit IDs *(default)* + - ``true``: Extended 29-bit IDs + +- **bit_rate** (*Optional*, enum): One of the supported bit rates. See :ref:`this table ` for a + list of supported bit rates by the internal CAN (TWAI) controllers of different ESP32 variants. Defaults to ``125KBPS``. + + - ``1KBPS`` - Support by ``esp32_can`` depends on ESP32 variant + - ``5KBPS`` - Support by ``esp32_can`` depends on ESP32 variant + - ``10KBPS`` - Support by ``esp32_can`` depends on ESP32 variant + - ``12K5BPS`` - Support by ``esp32_can`` depends on ESP32 variant + - ``16KBPS`` - Support by ``esp32_can`` depends on ESP32 variant + - ``20KBPS`` - Support by ``esp32_can`` depends on ESP32 variant + - ``25KBPS`` + - ``31K25BPS`` - Not supported by ``esp32_can`` + - ``33KBPS`` - Not supported by ``esp32_can`` + - ``40KBPS`` - Not supported by ``esp32_can`` + - ``50KBPS`` + - ``80KBPS`` - Not supported by ``esp32_can`` + - ``83K3BPS`` - Not supported by ``esp32_can`` + - ``95KBPS`` - Not supported by ``esp32_can`` + - ``100KBPS`` + - ``125KBPS`` - *Default* + - ``200KBPS`` - Not supported by ``esp32_can`` + - ``250KBPS`` + - ``500KBPS`` + - ``1000KBPS`` + +- **on_frame** (*Optional*, :ref:`Automation `): An automation to perform when a + CAN frame is received. See :ref:`canbus-on-frame`. + +.. _platforms-canbus: + +Platforms +--------- + +.. toctree:: + :maxdepth: 1 + :glob: + + * + +Automations +----------- + +.. _canbus-on-frame: + +``on_frame`` Trigger +******************** + +This automation will be triggered when a CAN frame is received. The variables ``x`` (of type +``std::vector``) containing the frame data, ``can_id`` (of type ``uint32_t``) containing the actual +received CAN ID and ``remote_transmission_request`` (of type ``bool``) containing the corresponding field +from the CAN frame are passed to the automation for use in lambdas. + +.. note:: + + Messages this node sends to the same ID will not show up as received messages. + +.. code-block:: yaml + + canbus: + - platform: ... + on_frame: + - can_id: 43 # the received can_id + then: + - if: + condition: + lambda: 'return (x.size() > 0) ? x[0] == 0x11 : false;' + then: + light.toggle: light1 + - can_id: 0b00000000000000000000001000000 + can_id_mask: 0b11111000000000011111111000000 + use_extended_id: true + remote_transmission_request: false + then: + - lambda: |- + auto pdo_id = can_id >> 14; + switch (pdo_id) + { + case 117: + ESP_LOGD("canbus", "exhaust_fan_duty"); + break; + case 118: + ESP_LOGD("canbus", "supply_fan_duty"); + break; + case 119: + ESP_LOGD("canbus", "supply_fan_flow"); + break; + // to be continued... + } + + +**Configuration variables:** + +- **can_id** (**Required**, int): The CAN ID which, when received, will trigger this automation. +- **can_id_mask** (*Optional*, int): The bit mask to apply to the received CAN ID before trying to match it + with *can_id*. Defaults to ``0x1fffffff`` (all bits of received CAN ID are compared with *can_id*). +- **use_extended_id** (*Optional*, boolean): Identifies the type of ``can_id`` to match on. Defaults to ``false``. +- **remote_transmission_request** (*Optional*, boolean): Whether to run for CAN frames with the "remote + transmission request" bit set or not set. Defaults to not checking (the automation will run for both cases). + +``canbus.send`` Action +********************** + +The CAN bus can transmit frames by means of the ``canbus.send`` action. There are several ways to use it: + +.. code-block:: yaml + + on_...: + - canbus.send: + data: [ 0x10, 0x20, 0x30 ] + canbus_id: my_mcp2515 # optional if you only have 1 canbus device + can_id: 23 # override the can_id configured in the can bus + + on_...: + - canbus.send: [ 0x11, 0x22, 0x33 ] + + - canbus.send: 'hello' + + # Templated; return type must be std::vector + - canbus.send: !lambda return {0x00, 0x20, 0x42}; + +**Configuration variables:** + +- **data** (**Required**, binary data, :ref:`templatable `): Data to transmit, up to eight + bytes/characters are supported by CAN bus per frame. +- **canbus_id** (*Optional*): Sets the CAN bus ID to use for transmitting the frame. Required if you are have multiple + CAN bus platforms defined in your configuration. +- **can_id** (*Optional*, int): Allows overriding the ``can_id`` configured for the CAN bus device. +- **use_extended_id** (*Optional*, boolean): Identifies the type of ``can_id``: + + - ``false``: Standard 11-bit IDs *(default)* + - ``true``: Extended 29-bit IDs + +- **remote_transmission_request** (*Optional*, boolean): Set to send CAN bus frame to request data from another node. + If a certain data length code needs to be sent, include the necessary (dummy) bytes in ``data``. Defaults to ``false``. + +Extended ID +----------- + +Standard IDs and Extended IDs can coexist on the same segment. + +.. note:: + + It is important to know that "standard" and "extended" addresses denote different addresses. For example, + Standard ``0x123`` and Extended ``0x123`` are, in fact, different addresses. + +Decimal or hexadecimal notation may be used for IDs: + +- Standard IDs use ``0x000`` to ``0x7ff`` (hexadecimal) or ``0`` to ``2047`` (decimal) +- Extended IDs use ``0x00000000`` to ``0x1fffffff`` (hexadecimal) or ``0`` to ``536870911`` (decimal) + +This example illustrates how different ID types may be used in your configuration for both transmitting and receiving. + +.. code-block:: yaml + + # Transmission of extended and standard ID 0x100 every second + time: + - platform: sntp + on_time: + - seconds: /1 + then: + - canbus.send: + # Extended ID explicit + use_extended_id: true + can_id: 0x100 + data: [0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08] + - canbus.send: + # Standard ID by default + can_id: 0x100 + data: [0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08] + + canbus: + - platform: ... + can_id: 0x1fff + use_extended_id: true + bit_rate: 125kbps + on_frame: + - can_id: 0x123 + use_extended_id: true + then: + - lambda: |- + std::string b(x.begin(), x.end()); + ESP_LOGD("CAN extended ID 0x123", "%s", &b[0]); + - can_id: 0x123 + then: + - lambda: |- + std::string b(x.begin(), x.end()); + ESP_LOGD("CAN standard ID 0x123", "%s", &b[0]); + +Binary Sensor Example +--------------------- + +Given that we have a button connected to a remote CAN node which will send a message to ID ``0x100`` with the payload +``0x1`` for contact closed and ``0x0`` for contact open, this example will look for this message and update the state +of its ``binary_sensor`` accordingly. + +.. code-block:: yaml + + binary_sensor: + - platform: template + name: CAN Bus Button + id: can_bus_button + + canbus: + - platform: ... + can_id: 4 + bit_rate: 125kbps + on_frame: + - can_id: ${0x100} + then: + - lambda: |- + if(x.size() > 0) { + switch(x[0]) { + case 0x0: // button release + id(can_bus_button).publish_state(false); + break; + case 0x1: // button press + id(can_bus_button).publish_state(true); + break; + } + } + +Cover Example +------------- + +In this example, three nodes are connected to the CAN bus: + +- Node 1 sends a one-byte payload to ID ``0x50B`` +- Node 2 sends a one-byte payload to ID ``0x50C`` + + These nodes send the following one-byte payload which is based on the state of a button connected to each of them: + + - 0: Button release + - 1: Button press + - 2: Long press + - 3: Long release + - 4: Double-click + +- Node 3 controls a motor connected to it. It expects a message to ID ``0x51A`` where the one-byte payload is: + + - 0: Off + - 1: Open + - 2: Close + +.. code-block:: yaml + + canbus: + - platform: ... + id: my_canbus + can_id: 4 + bit_rate: 125kbps + on_frame: + - can_id: 0x50c + then: + - lambda: |- + if(x.size() > 0) { + auto call = id(TestCover).make_call(); + switch(x[0]) { + case 0x2: call.set_command_open(); call.perform(); break; // long press + case 0x1: // button press + case 0x3: call.set_command_stop(); call.perform(); break; // long release + case 0x4: call.set_position(1.0); call.perform(); break; // double-click + } + } + - can_id: 0x50b + then: + - lambda: |- + if(x.size() > 0) { + auto call = id(TestCover).make_call(); + switch(x[0]) { + case 0x2: call.set_command_close(); call.perform(); break; // long press + case 0x1: // button press + case 0x3: call.set_command_stop(); call.perform(); break; // long release + case 0x4: call.set_position(0.0); call.perform(); break; // double-click + } + } + + cover: + - platform: time_based + name: Canbus Test Cover + id: TestCover + device_class: shutter + has_built_in_endstop: true + open_action: + - canbus.send: + data: [ 0x01 ] + canbus_id: my_canbus + can_id: 0x51A + open_duration: 2min + close_action: + - canbus.send: + data: [ 0x02 ] + canbus_id: my_canbus + can_id: 0x51A + close_duration: 2min + stop_action: + - canbus.send: + data: [ 0x00 ] + canbus_id: my_canbus + can_id: 0x51A + +See Also +-------- + +- :apiref:`canbus/canbus.h` +- :ghedit:`Edit` diff --git a/components/canbus/mcp2515.rst b/components/canbus/mcp2515.rst new file mode 100644 index 0000000000..eab97d2ebe --- /dev/null +++ b/components/canbus/mcp2515.rst @@ -0,0 +1,79 @@ +MCP2515 +======= + +.. seo:: + :description: Instructions for setting up the MCP2515 CAN bus platform in ESPHome + :image: canbus.svg + :keywords: CAN, MCP2515 + +The MCP2515 communicates with ESPHome via the :ref:`SPI bus `; to use it, you must have at least one +:ref:`SPI bus ` with both the ``mosi_pin`` and ``miso_pin`` defined in your ESPHome configuration. + +The :ref:`mcp2515-wiring` section below illustrates how to wire up your MCP2515. + +.. code-block:: yaml + + # Example configuration entry + canbus: + - platform: mcp2515 + cs_pin: GPIOXX + can_id: 4 + bit_rate: 50kbps + on_frame: + - can_id: 500 + then: + - lambda: |- + std::string b(x.begin(), x.end()); + ESP_LOGD("canid 500", "%s", &b[0] ); + - light.turn_off: light_1 + - can_id: 501 + then: + - light.turn_on: + id: light_1 + brightness: !lambda "return (x.size() > 0) ? (float) x[0]/255 : 0;" + +Configuration variables: +------------------------ + +- **cs_pin** (**Required**, :ref:`Pin Schema `): Is used to signal to a SPI device when it should + listen for data on the SPI bus. Each SPI device has its own ``CS`` line. Sometimes also called ``SS``. +- **clock** (*Optional*, frequency): The frequency of the clock crystal used on the MCP2515 device. One of ``8MHZ``, + ``12MHz``, ``16MHZ`` or ``20MHZ``. Defaults to ``8MHZ``. +- **mode** (*Optional*, enum): Operating mode. One of: + + - ``NORMAL``: Normal operation. *(default)* + - ``LOOPBACK``: Loopback mode is useful for testing your connections to/from the device. + - ``LISTENONLY``: Receive data only. + +- All other options from :ref:`Canbus `. + +.. note:: + + Not all combinations of clock and bitrate are supported. An unsupported combination will not be flagged at + compile time. Check your ESPHome device's logs for a message like ``Invalid frequency/bitrate combination`` + if you suspect this is an issue. + +.. _mcp2515-wiring: + +Wiring options +-------------- + +The easiest approach is to use fully assembled boards and just add one resistor on the MISO line. This runs MOSI, SCK +and CS out of specification which is rarely a problem. + +.. figure:: images/canbus_mcp2515_resistor.png + :align: center + :target: ../_images/canbus_mcp2515_resistor.png + +A more complex option is to properly convert the 3.3V and 5V logic levels with a level shifter. + +.. figure:: images/canbus_mcp2515_txs0108e.png + :align: center + :target: ../_images/canbus_mcp2515_txs0108e.png + +See Also +-------- + +- :doc:`index` +- :apiref:`canbus/canbus.h` +- :ghedit:`Edit` diff --git a/components/index.rst b/components/index.rst index 5ccbbb4b1a..f937b80a23 100644 --- a/components/index.rst +++ b/components/index.rst @@ -6,6 +6,7 @@ Components :glob: binary_sensor/index + canbus/index climate/index cover/index fan/index diff --git a/images/mcp2515.svg b/images/mcp2515.svg new file mode 100644 index 0000000000..a656b7ef19 --- /dev/null +++ b/images/mcp2515.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/index.rst b/index.rst index 88edddeffd..970ace46e9 100644 --- a/index.rst +++ b/index.rst @@ -243,7 +243,7 @@ Hardware Peripheral Interfaces/Busses .. imgtable:: - CAN Bus, components/canbus, canbus.svg + CAN Bus, components/canbus/index, canbus.svg I²C Bus, components/i2c, i2c.svg I²S Audio, components/i2s_audio, i2s_audio.svg SPI Bus, components/spi, spi.svg @@ -268,6 +268,15 @@ I/O Expanders/Multiplexers WeiKai SPI/I²C UART/IO Expander, components/weikai, wk2168.jpg XL9535, components/xl9535, xl9535.svg +CAN Bus +------- + +.. imgtable:: + + CAN Bus, components/canbus/index, canbus.svg + ESP32 CAN, components/canbus/esp32_can, esp32.svg + MCP2515, components/canbus/mcp2515, mcp2515.svg + Sensor Components ----------------- From f80a0613055b69a95ca6a044fe2e67bc8a9c666e Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Tue, 16 Jul 2024 16:28:47 +1200 Subject: [PATCH 046/173] [i2s_audio] Microphone i2s mode (#4053) --- components/microphone/i2s_audio.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/components/microphone/i2s_audio.rst b/components/microphone/i2s_audio.rst index 7e84843f9b..dc44ccbe1b 100644 --- a/components/microphone/i2s_audio.rst +++ b/components/microphone/i2s_audio.rst @@ -46,6 +46,7 @@ Configuration variables: will be scaled down to 16bit before being forwarded. One of ``16bit`` or ``32bit``. Defaults to ``16bit``. - **use_apll** (*Optional*, boolean): I2S using APLL as main I2S clock, enable it to get accurate clock. Defaults to ``false``. +- **i2s_mode** (*Optional*, enum): The I²S mode to use. One of ``primary`` or ``secondary``. Defaults to ``primary``. - **i2s_audio_id** (*Optional*, :ref:`config-id`): The ID of the :ref:`I²S Audio ` you wish to use for this microphone. - All other options from :ref:`Microphone ` From 057fa9a09a7739f07bd1a4e7b960aba33356c201 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Tue, 16 Jul 2024 16:28:47 +1200 Subject: [PATCH 047/173] [i2s_audio] Microphone i2s mode (#4053) --- components/microphone/i2s_audio.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/components/microphone/i2s_audio.rst b/components/microphone/i2s_audio.rst index 7e84843f9b..dc44ccbe1b 100644 --- a/components/microphone/i2s_audio.rst +++ b/components/microphone/i2s_audio.rst @@ -46,6 +46,7 @@ Configuration variables: will be scaled down to 16bit before being forwarded. One of ``16bit`` or ``32bit``. Defaults to ``16bit``. - **use_apll** (*Optional*, boolean): I2S using APLL as main I2S clock, enable it to get accurate clock. Defaults to ``false``. +- **i2s_mode** (*Optional*, enum): The I²S mode to use. One of ``primary`` or ``secondary``. Defaults to ``primary``. - **i2s_audio_id** (*Optional*, :ref:`config-id`): The ID of the :ref:`I²S Audio ` you wish to use for this microphone. - All other options from :ref:`Microphone ` From 9173c6b484b879eeb71136421e1724adc113919a Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Tue, 16 Jul 2024 16:51:16 +1200 Subject: [PATCH 048/173] Bump version to 2024.7.0b3 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index 81cf799076..3db70c4103 100644 --- a/Doxygen +++ b/Doxygen @@ -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.7.0b2 +PROJECT_NUMBER = 2024.7.0b3 # 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 diff --git a/Makefile b/Makefile index 35fd42e7ba..48427d8267 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = 2024.7.0b2 +ESPHOME_REF = 2024.7.0b3 PAGEFIND_VERSION=1.1.0 PAGEFIND=pagefind NET_PAGEFIND=../pagefindbin/pagefind diff --git a/_static/version b/_static/version index 548910a1c7..8ee29ab819 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2024.7.0b2 \ No newline at end of file +2024.7.0b3 \ No newline at end of file diff --git a/conf.py b/conf.py index ed0c6b8781..d7b59e0c9b 100644 --- a/conf.py +++ b/conf.py @@ -69,7 +69,7 @@ # The short X.Y version. version = "2024.7" # The full version, including alpha/beta/rc tags. -release = "2024.7.0b2" +release = "2024.7.0b3" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 33951506bef3c58c6bab756aa1e81cf595f9cbaa Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Tue, 16 Jul 2024 16:51:48 +1200 Subject: [PATCH 049/173] Update changelog for 2024.7.0b3 --- changelog/2024.7.0.rst | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/changelog/2024.7.0.rst b/changelog/2024.7.0.rst index d182e7d73f..7d1aaf59c8 100644 --- a/changelog/2024.7.0.rst +++ b/changelog/2024.7.0.rst @@ -40,6 +40,9 @@ Beta Changes - Fix voice assistant crash when no speaker configured :esphomepr:`7075` by :ghuser:`kevdliu` - Bump HeatpumpIR, add protocols, remove IRremoteESP8266 :esphomepr:`6996` by :ghuser:`nagyrobi` - LTR390 separate ALS and UV gain and resolution :esphomepr:`7026` by :ghuser:`latonita` +- [improv_serial] Fix linker error created in #6998 :esphomepr:`7082` by :ghuser:`kbx81` +- [i2s_audio] Allow config for primary/secondary i2s mode :esphomepr:`7092` by :ghuser:`jesserockz` +- [micro_wake_word] Allow simpler model config :esphomepr:`7094` by :ghuser:`jesserockz` All changes ^^^^^^^^^^^ @@ -105,6 +108,24 @@ All changes - [micro_wake_word] Version 2 :esphomepr:`7032` by :ghuser:`kahrendt` (breaking-change) - UART component support added for host platform :esphomepr:`6912` by :ghuser:`paveldn` - Configure ap ip for RP2040 :esphomepr:`7065` by :ghuser:`HeMan` +- helpers.cpp: Fix GLIBCXX_RELEASE check < 8 :esphomepr:`7062` by :ghuser:`ferbar` +- Fix pmsa003i cold boot marked as failed on ESP32 et al :esphomepr:`7064` by :ghuser:`z3liff` +- [http_request] Fix follow_redirects on arduino :esphomepr:`7054` by :ghuser:`guillempages` +- [ethernet] Fix compile warning for IPv6 :esphomepr:`7048` by :ghuser:`HeMan` +- Update webserver local assets to 20240704-081526 :esphomepr:`7041` by :ghuser:`esphomebot` +- Add braces to if statement to avoid compiler warning. :esphomepr:`7036` by :ghuser:`colmbuckley` +- [mitsubishi] Fix current temperature :esphomepr:`6909` by :ghuser:`ttaborda` +- [climate] fix dump output of unsupported features :esphomepr:`7005` by :ghuser:`dudanov` +- [climate-traits] improved performance :esphomepr:`7006` by :ghuser:`dudanov` +- Add default icon to restart button :esphomepr:`7076` by :ghuser:`leejoow` +- Add support for the Gree YAC1FB9 in climate_ir :esphomepr:`7056` by :ghuser:`topeju` +- add ESP32-C6 support to esp32_can :esphomepr:`7063` by :ghuser:`Adminius` +- Fix voice assistant crash when no speaker configured :esphomepr:`7075` by :ghuser:`kevdliu` +- Bump HeatpumpIR, add protocols, remove IRremoteESP8266 :esphomepr:`6996` by :ghuser:`nagyrobi` +- LTR390 separate ALS and UV gain and resolution :esphomepr:`7026` by :ghuser:`latonita` +- [improv_serial] Fix linker error created in #6998 :esphomepr:`7082` by :ghuser:`kbx81` +- [i2s_audio] Allow config for primary/secondary i2s mode :esphomepr:`7092` by :ghuser:`jesserockz` +- [micro_wake_word] Allow simpler model config :esphomepr:`7094` by :ghuser:`jesserockz` Past Changelogs --------------- From 3d6eca6e8cd969feb3ff1117a63237de0fa6dd74 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Tue, 16 Jul 2024 16:52:31 +1200 Subject: [PATCH 050/173] Update supporters for 2024.7.0b3 --- guides/supporters.rst | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index b1c57b1cba..80ce6f3078 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -47,6 +47,7 @@ Contributors - `Attila Darazs (@adarazs) `__ - `ADeadPixel (@ADeadPixel) `__ - `adezerega (@adezerega) `__ +- `Eugen (@Adminius) `__ - `Andrea Donno (@adonno) `__ - `Adrian Cuzman (@adriancuzman) `__ - `Adrian Fretwell (@AdrianFretwell) `__ @@ -940,6 +941,7 @@ Contributors - `Kenny Stier (@KennyStier) `__ - `Robert Kiss (@kepten) `__ - `kernelpanic85 (@kernelpanic85) `__ +- `kevdliu (@kevdliu) `__ - `Kevin O'Rourke (@kevinior) `__ - `Kevin Reilly (@kevireilly) `__ - `kevlar10 (@kevlar10) `__ @@ -1313,6 +1315,7 @@ Contributors - `Chris Nussbaum (@nuttytree) `__ - `Michał Sochoń (@nvtkaszpir) `__ - `Nathaniel Wesley Filardo (@nwf) `__ +- `Olivier ARCHER (@oarcher) `__ - `obrain17 (@obrain17) `__ - `Ockert Marais (@OckertM) `__ - `Dave Walker (@oddsockmachine) `__ @@ -1759,6 +1762,7 @@ Contributors - `Tom Price (@tomtom5152) `__ - `Anthony Bourguignon (@Toniob) `__ - `tony (@tony-fav) `__ +- `Tomi Junnila (@topeju) `__ - `David Kiliani (@torfbolt) `__ - `Aleksandra M (@tort32) `__ - `Torwag (@torwag) `__ @@ -1778,6 +1782,7 @@ Contributors - `Trevor North (@trvrnrth) `__ - `Trygve Laugstøl (@trygvis) `__ - `Gediminas Šaltenis (@trylika) `__ +- `ttaborda (@ttaborda) `__ - `Tuan (@tuanpmt) `__ - `tubalainen (@tubalainen) `__ - `tube0013 (@tube0013) `__ @@ -1904,4 +1909,4 @@ Contributors - `Christian Zufferey (@zuzu59) `__ - `Zynth-dev (@Zynth-dev) `__ -*This page was last updated July 13, 2024.* +*This page was last updated July 16, 2024.* From ceb68656c4397dfb208a934eb3074330814f7c23 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 17 Jul 2024 11:15:20 +1200 Subject: [PATCH 051/173] Bump version to 2024.7.0b4 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index 3db70c4103..54d41bc1bd 100644 --- a/Doxygen +++ b/Doxygen @@ -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.7.0b3 +PROJECT_NUMBER = 2024.7.0b4 # 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 diff --git a/Makefile b/Makefile index 48427d8267..8a6916eb3c 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = 2024.7.0b3 +ESPHOME_REF = 2024.7.0b4 PAGEFIND_VERSION=1.1.0 PAGEFIND=pagefind NET_PAGEFIND=../pagefindbin/pagefind diff --git a/_static/version b/_static/version index 8ee29ab819..2e4ab430a2 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2024.7.0b3 \ No newline at end of file +2024.7.0b4 \ No newline at end of file diff --git a/conf.py b/conf.py index d7b59e0c9b..3bbe57d852 100644 --- a/conf.py +++ b/conf.py @@ -69,7 +69,7 @@ # The short X.Y version. version = "2024.7" # The full version, including alpha/beta/rc tags. -release = "2024.7.0b3" +release = "2024.7.0b4" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 296a65a402d009fd1fcd6350f09ebcccfb48665a Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 17 Jul 2024 11:18:29 +1200 Subject: [PATCH 052/173] Update changelog for 2024.7.0b4 --- changelog/2024.7.0.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/changelog/2024.7.0.rst b/changelog/2024.7.0.rst index 7d1aaf59c8..f8ff569734 100644 --- a/changelog/2024.7.0.rst +++ b/changelog/2024.7.0.rst @@ -43,6 +43,7 @@ Beta Changes - [improv_serial] Fix linker error created in #6998 :esphomepr:`7082` by :ghuser:`kbx81` - [i2s_audio] Allow config for primary/secondary i2s mode :esphomepr:`7092` by :ghuser:`jesserockz` - [micro_wake_word] Allow simpler model config :esphomepr:`7094` by :ghuser:`jesserockz` +- [ota] Print Arduino update errors :esphomepr:`7096` by :ghuser:`jesserockz` All changes ^^^^^^^^^^^ @@ -126,6 +127,7 @@ All changes - [improv_serial] Fix linker error created in #6998 :esphomepr:`7082` by :ghuser:`kbx81` - [i2s_audio] Allow config for primary/secondary i2s mode :esphomepr:`7092` by :ghuser:`jesserockz` - [micro_wake_word] Allow simpler model config :esphomepr:`7094` by :ghuser:`jesserockz` +- [ota] Print Arduino update errors :esphomepr:`7096` by :ghuser:`jesserockz` Past Changelogs --------------- From 914bb92f5319065afb03cc057e43d3fda44e70fc Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 17 Jul 2024 11:19:10 +1200 Subject: [PATCH 053/173] Update supporters for 2024.7.0b4 --- guides/supporters.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index 80ce6f3078..2b7e6f54b7 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -1909,4 +1909,4 @@ Contributors - `Christian Zufferey (@zuzu59) `__ - `Zynth-dev (@Zynth-dev) `__ -*This page was last updated July 16, 2024.* +*This page was last updated July 17, 2024.* From d8fa6e6f606d452e94ce63e2a8bf92aae2ffb369 Mon Sep 17 00:00:00 2001 From: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com> Date: Wed, 17 Jul 2024 10:31:51 +1000 Subject: [PATCH 054/173] Update host-related docs (#4058) --- components/display/sdl.rst | 15 ++++----------- components/host.rst | 8 +++++++- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/components/display/sdl.rst b/components/display/sdl.rst index c075dfc773..3e30ad60c8 100644 --- a/components/display/sdl.rst +++ b/components/display/sdl.rst @@ -17,14 +17,13 @@ than compiling for and flashing a microcontroller target system. .. code-block:: yaml # Example configuration entry + esphome: + name: sdl + host: - mac_address: "62:23:45:AF:B3:DD" display: - platform: sdl - id: sdl_display - update_interval: 1s - auto_clear_enabled: false show_test_card: true dimensions: width: 450 @@ -95,13 +94,7 @@ Linux instructions above. See https://learn.microsoft.com/en-us/windows/wsl/inst Build and run ------------- -The ``esphome`` command will not automatically run the build file on the ``host`` platform. Instead use ``esphome compile yourfile.yaml`` -then locate the executable file called ``program`` within the ``.esphome`` build tree: - -.. code-block:: sh - - `find .esphome -name program` - +The ``esphome run yourfile.yaml`` command will compile and automatically run the build file on the ``host`` platform. See Also -------- diff --git a/components/host.rst b/components/host.rst index 38897cd87f..1013bdd30a 100644 --- a/components/host.rst +++ b/components/host.rst @@ -23,17 +23,23 @@ configure wifi - network will automatically be available using the host computer # Example configuration entry host: - mac_address: "98:35:69:ab:f6:79" + mac_address: "06:35:69:ab:f6:79" Configuration variables: ------------------------ - **mac_address** (**Optional**, MAC address): A dummy MAC address to use when communicating with HA. +Build and run +------------- + +The ``esphome run yourfile.yaml`` command will compile and automatically run the build file on the ``host`` platform. + See Also -------- +- :ref:`SDL display ` - :doc:`esphome` - :doc:`/components/time/host` - :ghedit:`Edit` From c5f1e561e26f172292faa86282b187c1362a380a Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 17 Jul 2024 14:54:44 +1200 Subject: [PATCH 055/173] Bump version to 2024.7.0 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index 54d41bc1bd..f93e347055 100644 --- a/Doxygen +++ b/Doxygen @@ -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.7.0b4 +PROJECT_NUMBER = 2024.7.0 # 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 diff --git a/Makefile b/Makefile index 8a6916eb3c..e45f0641ce 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = 2024.7.0b4 +ESPHOME_REF = 2024.7.0 PAGEFIND_VERSION=1.1.0 PAGEFIND=pagefind NET_PAGEFIND=../pagefindbin/pagefind diff --git a/_static/version b/_static/version index 2e4ab430a2..ce9bbeb891 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2024.7.0b4 \ No newline at end of file +2024.7.0 \ No newline at end of file diff --git a/conf.py b/conf.py index 3bbe57d852..2896a6508e 100644 --- a/conf.py +++ b/conf.py @@ -69,7 +69,7 @@ # The short X.Y version. version = "2024.7" # The full version, including alpha/beta/rc tags. -release = "2024.7.0b4" +release = "2024.7.0" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 682f0ec1fe54ff90d3c03fd1d32c2769a535e9df Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 17 Jul 2024 15:17:41 +1200 Subject: [PATCH 056/173] Update supporters for 2024.7.0 --- guides/supporters.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/guides/supporters.rst b/guides/supporters.rst index 2b7e6f54b7..9512a2d9c7 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -1769,6 +1769,7 @@ Contributors - `Teemu Simola (@tpssim) `__ - `tracestep (@tracestep) `__ - `Trent Houliston (@TrentHouliston) `__ +- `Trevor Schirmer (@TrevorSchirmer) `__ - `Felix Eckhofer (@tribut) `__ - `Trick van Staveren (@trickv) `__ - `TripitakaBC (@TripitakaBC) `__ From d88b20456efb537bee53678989dbec01c8e221b5 Mon Sep 17 00:00:00 2001 From: GermanFab Date: Wed, 17 Jul 2024 12:06:09 +0200 Subject: [PATCH 057/173] Update esphome.rst: Add Removing a Password section (#4026) --- components/ota/esphome.rst | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/components/ota/esphome.rst b/components/ota/esphome.rst index 0d782521b1..ed97c343e7 100644 --- a/components/ota/esphome.rst +++ b/components/ota/esphome.rst @@ -66,6 +66,7 @@ won't work. This issue can be worked around by executing the operations separate id: my_ota password: "Old password" +The "id: my_ota" in the OTA block is important. This is referenced in the lambda. After this trick has been used to change the password, the ``on_boot`` trigger may be removed and the old password replaced with the new password in the ``ota:`` section. @@ -74,6 +75,16 @@ Adding a Password If OTA is already enabled without a password, simply add a ``password:`` line to the existing ``ota:`` config block. +Removing a Password +******************* + +- If you know your password but want to remove it, enter an empty string: ``id(my_ota).set_auth_password("");`` instead of changing. +- If you no longer know your password and the web server has been activated: + + - Remove the OTA password from the configuration + - Build a new image locally. + - Execute the OTA update directly via the ESP web server. + See Also -------- From 3f810badb58e1f6e54d241ed91ad2a70013f8df9 Mon Sep 17 00:00:00 2001 From: Roeland Lutters Date: Wed, 17 Jul 2024 12:08:37 +0200 Subject: [PATCH 058/173] Component TOF10120: Fix broken link to datasheet (#4051) --- components/sensor/tof10120.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/sensor/tof10120.rst b/components/sensor/tof10120.rst index 8badc342b9..9b7a7f748a 100644 --- a/components/sensor/tof10120.rst +++ b/components/sensor/tof10120.rst @@ -6,7 +6,7 @@ TOF10120 Time Of Flight Distance Sensor :image: tof10120.jpg :keywords: TOF10120 -The ``tof10120`` sensor platform allows you to use TOF10120 optical time of flight sensor (`datasheet `__) +The ``tof10120`` sensor platform allows you to use TOF10120 optical time of flight sensor (`datasheet `__) with ESPHome to measure distances. The sensor works optically by emitting short infrared pulses and measuring the time it takes the light to be reflected back. From 026d58ddcd92c213238e54322ce8f330ce242ca1 Mon Sep 17 00:00:00 2001 From: babuckin <4bucks@gmail.com> Date: Wed, 17 Jul 2024 06:11:32 -0400 Subject: [PATCH 059/173] Update actions.rst (#4047) --- automations/actions.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/automations/actions.rst b/automations/actions.rst index 1db6d04360..57f635f163 100644 --- a/automations/actions.rst +++ b/automations/actions.rst @@ -258,7 +258,7 @@ For example, the automation below will flash the light five times. Configuration variables: -- **count** (**Required**, int): The number of times the action should be repeated. +- **count** (**Required**, int): The number of times the action should be repeated. The counter is available to lambdas using the reserved word "iteration". - **then** (**Required**, :ref:`Action `): The action to repeat. .. _wait_until_action: From 766ca444a37fa10a487b63350be8962084039831 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20BOU=C3=89?= Date: Wed, 17 Jul 2024 12:15:41 +0200 Subject: [PATCH 060/173] Fix Modbus Example Server doc (#4037) --- components/modbus_controller.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/components/modbus_controller.rst b/components/modbus_controller.rst index 82601c6f9a..f2975f2ac8 100644 --- a/components/modbus_controller.rst +++ b/components/modbus_controller.rst @@ -68,7 +68,7 @@ Configuration variables: responds to a command, it'll be marked online again. - **server_registers** (*Optional*): A list of registers that are responded to when acting as a server. - - **start_address** (**Required**, integer): start address of the first register in a range + - **address** (**Required**, integer): start address of the first register in a range - **value_type** (*Optional*): datatype of the mod_bus register data. The default data type for ModBUS is a 16 bit integer in big endian format (MSB first) - ``U_WORD``: unsigned 16 bit integer from 1 register = 16bit @@ -86,7 +86,7 @@ Configuration variables: Defaults to ``U_WORD``. - - **lambda** (**Required**, :ref:`lambda `): + - **read_lambda** (**Required**, :ref:`lambda `): Lambda that returns the value of this register. @@ -175,9 +175,9 @@ The following code allows a ModBUS client to read a sensor value from your ESPHo - modbus_id: modbus_server address: 0x4 server_registers: - - start_address: 0x0002 + - address: 0x0002 value_type: S_DWORD_R - lambda: |- + read_lambda: |- return id(evse_voltage_l1).state; sensor: From 8b340ea071ae9701b0229afe6b876a3e0a929536 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 17 Jul 2024 22:23:05 +1200 Subject: [PATCH 061/173] Add mWW breaking change note (#4060) --- changelog/2024.7.0.rst | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/changelog/2024.7.0.rst b/changelog/2024.7.0.rst index f8ff569734..be76b5310a 100644 --- a/changelog/2024.7.0.rst +++ b/changelog/2024.7.0.rst @@ -7,6 +7,30 @@ ESPHome 2024.7.0 - 17th July 2024 :author_twitter: @jesserockz +microWakeWord +------------- + +The `micro_wake_word` component has been updated to "version 2". +This brings the capability to configure multiple models per device and has a ``vad`` model for +voice activity detection. + +The configuration has a breaking change to support these new features. + +.. code-block:: yaml + + micro_wake_word: + model: okay_nabu + +needs to be changed to the following: + +.. code-block:: yaml + + micro_wake_word: + models: + - okay_nabu + +Please see the :doc:`Documentation ` for the full configuration. + Full list of changes -------------------- From fde5bdd6599f400becb8a58def7d67029f855218 Mon Sep 17 00:00:00 2001 From: "Andrew J.Swan" Date: Wed, 17 Jul 2024 13:35:29 +0300 Subject: [PATCH 062/173] Add `on_response Trigger` lambda example (#3987) Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/http_request.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/components/http_request.rst b/components/http_request.rst index 545d203387..4b5a18dabc 100644 --- a/components/http_request.rst +++ b/components/http_request.rst @@ -176,6 +176,8 @@ The following variables are available for use in :ref:`lambdas `: args: - response->status_code - response->duration_ms + - lambda: |- + ESP_LOGD(TAG, "Response status: %d, Duration: %u ms", response->status_code, response->duration_ms); .. _http_request-examples: From ab387eedb5f457cce69af38340e0b38e8ae481ac Mon Sep 17 00:00:00 2001 From: David Martin <51385971+3ative@users.noreply.github.com> Date: Wed, 17 Jul 2024 11:37:57 +0100 Subject: [PATCH 063/173] Corrected an incidence of "servo" to "stepper motor" (#4024) --- components/stepper/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/stepper/index.rst b/components/stepper/index.rst index ea3225b3c1..7c513cc401 100644 --- a/components/stepper/index.rst +++ b/components/stepper/index.rst @@ -153,7 +153,7 @@ Configuration options: .. warning:: - This turns the stepper to an absolute position! To have the servo move *relative* to the current + This turns the stepper to an absolute position! To have the stepper motor move *relative* to the current position, first reset the current position and then set the target to the relative value. .. code-block:: yaml From 96f4b2e2314128a2923694af96c15bb08d510d28 Mon Sep 17 00:00:00 2001 From: RFDarter Date: Wed, 17 Jul 2024 12:40:02 +0200 Subject: [PATCH 064/173] [web_server] v3-features (#4001) --- .../number-slider-popup-input-field.png | Bin 0 -> 11096 bytes .../images/web_server/number-slider-popup.png | Bin 0 -> 19249 bytes .../web_server/sensor-history-graph.png | Bin 0 -> 44240 bytes .../web_server/tab-header-expand-cloapsed.png | Bin 0 -> 189216 bytes .../tab-header-expand-controls-expanded.png | Bin 0 -> 72198 bytes .../tab-header-expand-logs-expanded.png | Bin 0 -> 156242 bytes components/web_server.rst | 54 ++++++++++++++++++ 7 files changed, 54 insertions(+) create mode 100644 components/images/web_server/number-slider-popup-input-field.png create mode 100644 components/images/web_server/number-slider-popup.png create mode 100644 components/images/web_server/sensor-history-graph.png create mode 100644 components/images/web_server/tab-header-expand-cloapsed.png create mode 100644 components/images/web_server/tab-header-expand-controls-expanded.png create mode 100644 components/images/web_server/tab-header-expand-logs-expanded.png diff --git a/components/images/web_server/number-slider-popup-input-field.png b/components/images/web_server/number-slider-popup-input-field.png new file mode 100644 index 0000000000000000000000000000000000000000..d694a024f784ad15b5251a3634ed45256fd02895 GIT binary patch literal 11096 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 literal 0 HcmV?d00001 diff --git a/components/images/web_server/number-slider-popup.png b/components/images/web_server/number-slider-popup.png new file mode 100644 index 0000000000000000000000000000000000000000..2db20fb930d1218c7ca66393a188e341a7c62e61 GIT binary patch literal 19249 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 literal 0 HcmV?d00001 diff --git a/components/images/web_server/tab-header-expand-cloapsed.png b/components/images/web_server/tab-header-expand-cloapsed.png new file mode 100644 index 0000000000000000000000000000000000000000..2249933f633266cbbe43890f06a380505212dff4 GIT binary patch literal 189216 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

89jZp!?Ia`eDB5bFv&t$hu6%ZnQPk+Bx&Zl>XcP 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%0Aw(ROIW?-W)T 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 z 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 literal 0 HcmV?d00001 diff --git a/components/images/web_server/tab-header-expand-controls-expanded.png b/components/images/web_server/tab-header-expand-controls-expanded.png new file mode 100644 index 0000000000000000000000000000000000000000..f37b5b5d028dde68e4021bc9270c17af843b0fbd GIT binary patch literal 72198 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 HqcZ*m`$nvW literal 0 HcmV?d00001 diff --git a/components/images/web_server/tab-header-expand-logs-expanded.png b/components/images/web_server/tab-header-expand-logs-expanded.png new file mode 100644 index 0000000000000000000000000000000000000000..22d98d4d857c2d1c6b2a4e807559900a556d6c98 GIT binary patch literal 156242 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%0ATDwO64I+Hw1qio?PbhRT2r{Ak} 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 literal 0 HcmV?d00001 diff --git a/components/web_server.rst b/components/web_server.rst index 2017ca752b..198d49c81a 100644 --- a/components/web_server.rst +++ b/components/web_server.rst @@ -140,8 +140,62 @@ V2 embeds the css within the js file so is not required, however you could inclu js_url: "" version: 2 + Copy https://oi.esphome.io/v2/www.js to a V2 folder in your yaml folder. + +.. _config-webserver-version-3-options: + +Version 3 features +--------------------------- + +Number in slider mode +********************* +.. figure:: /components/images/web_server/number-slider-popup.png + :align: left + :width: 100.0% + + +You can change the value by moving the slider. +If you wish to enter a precise number you can click and hold the current value. A popup input field will appear where you can enter a number and confirm your input by pressing the enter key. + +.. figure:: /components/images/web_server/number-slider-popup-input-field.png + :align: left + :width: 100.0% + + +Expand Controls and Logs +************************ +.. figure:: /components/images/web_server/tab-header-expand-cloapsed.png + :align: left + :width: 100.0% + + +By double-clicking on any group header you can expand the controls to fill up the whole screen. +You can do the same for the logs. + +.. figure:: /components/images/web_server/tab-header-expand-controls-expanded.png + :align: center + :width: 100.0% + + Expanded Controls + + +.. figure:: /components/images/web_server/tab-header-expand-logs-expanded.png + :align: center + :width: 100.0% + + Expanded Logs + + +Sensor value graph +****************** +.. figure:: /components/images/web_server/sensor-history-graph.png + :align: left + :width: 100.0% + +By clicking on any sensor it will expand a graph with the historical values for that sensor. + .. _config-webserver-sorting: Entity sorting From 15d6c5765a1fd60288d8d23a7dfe0dec04c02876 Mon Sep 17 00:00:00 2001 From: BigBobbas <150487209+BigBobbas@users.noreply.github.com> Date: Wed, 17 Jul 2024 11:40:42 +0100 Subject: [PATCH 065/173] update board information (#3982) --- components/esp32.rst | 4 ---- 1 file changed, 4 deletions(-) diff --git a/components/esp32.rst b/components/esp32.rst index 5fae8a97af..da12e7bebd 100644 --- a/components/esp32.rst +++ b/components/esp32.rst @@ -32,10 +32,6 @@ Configuration variables: ``esp32s2``, ``esp32s3``, ``esp32c3`` and ``esp32h2``. Defaults to the variant that is detected from the board; if a board that's unknown to ESPHome is used, this option is mandatory. -.. note:: - - Support for ESP32 variants such as the S2, S3 and C3 is still in development and there could be issues. - GPIO Pin Numbering ------------------ From b7f488fce2144d4aad4879edb0e9394f5769a523 Mon Sep 17 00:00:00 2001 From: tronikos Date: Wed, 17 Jul 2024 03:42:30 -0700 Subject: [PATCH 066/173] Fix default address in qmc5883l (#3764) --- components/sensor/qmc5883l.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/sensor/qmc5883l.rst b/components/sensor/qmc5883l.rst index 5157490aef..803d4d2d28 100644 --- a/components/sensor/qmc5883l.rst +++ b/components/sensor/qmc5883l.rst @@ -44,7 +44,7 @@ configuration for this sensor to work. Configuration variables: ------------------------ -- **address** (*Optional*, int): Manually specify the I²c address of the sensor. Defaults to ``0x1E``. +- **address** (*Optional*, int): Manually specify the I²c address of the sensor. Defaults to ``0x0D``. - **field_strength_x** (*Optional*): The field strength in microtesla along the X-Axis. All options from :ref:`Sensor `. - **field_strength_y** (*Optional*): The field strength in microtesla along the Y-Axis. All options from From c4df478c7f509405daef40ba3fbcd8f9ab475584 Mon Sep 17 00:00:00 2001 From: Samuel Tardieu Date: Wed, 17 Jul 2024 12:46:34 +0200 Subject: [PATCH 067/173] Fix method name for time-based cover last operation (#3854) From 733fa771f2e3b16292c0511edfe5865c32e71063 Mon Sep 17 00:00:00 2001 From: Olaf van Zandwijk Date: Wed, 17 Jul 2024 12:56:55 +0200 Subject: [PATCH 068/173] Update documentation about `restore_mode` for valves (#3878) Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/valve/template.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/components/valve/template.rst b/components/valve/template.rst index f3d3ffb5c2..ddb517a580 100644 --- a/components/valve/template.rst +++ b/components/valve/template.rst @@ -52,6 +52,12 @@ Configuration variables: requests the valve to be stopped. - **optimistic** (*Optional*, boolean): Whether to operate in optimistic mode - when in this mode, any command sent to the template valve will immediately update the reported state and no lambda needs to be used. Defaults to ``false``. +- **restore_mode** (*Optional*, enum): Control how the valve attempts to restore state on bootup. + + - ``NO_RESTORE`` (Default): Do not save or restore state. + - ``RESTORE``: Attempts to restore the state on startup, but doesn't instruct the valve to return to that state. + - ``RESTORE_AND_CALL``: Attempts to restore the state on startup and instructs the valve to return to the restored state. + - **assumed_state** (*Optional*, boolean): Whether the true state of the valve is not known. This will make the Home Assistant frontend show buttons for both OPEN and CLOSE actions, instead of hiding one of them. Defaults to ``false``. - **has_position** (*Optional*, boolean): Whether this valve will publish its position as a floating point number. From 75f5ee832a6799b9abc093390bf58e93a55dab61 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Thu, 18 Jul 2024 07:24:29 +1200 Subject: [PATCH 069/173] Update changelog redirect (#4062) --- changelog/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog/index.rst b/changelog/index.rst index 4696979742..a6600f9381 100644 --- a/changelog/index.rst +++ b/changelog/index.rst @@ -2,7 +2,7 @@ Changelog ========= .. redirect:: - :url: /changelog/2024.6.0.html + :url: /changelog/2024.7.0.html .. toctree:: :glob: From c78d2a407101da46630b3c04f2492ce8c06d63b8 Mon Sep 17 00:00:00 2001 From: Daniel <50146+themorgantown@users.noreply.github.com> Date: Thu, 18 Jul 2024 11:42:14 -0400 Subject: [PATCH 070/173] Update Datasheet URL (#4066) Previous URL was dead. --- components/sensor/scd4x.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/sensor/scd4x.rst b/components/sensor/scd4x.rst index ff52756a72..f2d32ecaf7 100644 --- a/components/sensor/scd4x.rst +++ b/components/sensor/scd4x.rst @@ -6,7 +6,7 @@ SCD4X CO₂, Temperature and Relative Humidity Sensor :image: scd4x.jpg The ``scd4x`` sensor platform allows you to use your Sensirion SCD4X CO₂ -(`datasheet `__) sensors with ESPHome. +(`datasheet `__) sensors with ESPHome. The :ref:`I²C Bus ` is required to be set up in your configuration for this sensor to work. .. figure:: images/scd4x.jpg From 7f4ba3b9b53a4208c1692a765c9153829ae091e7 Mon Sep 17 00:00:00 2001 From: lyj <2457395722@qq.com> Date: Fri, 19 Jul 2024 14:53:15 +0800 Subject: [PATCH 071/173] Update datasheet ref (#4067) --- components/sensor/ens160.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/sensor/ens160.rst b/components/sensor/ens160.rst index bbc5ac08fb..5325bf9f16 100644 --- a/components/sensor/ens160.rst +++ b/components/sensor/ens160.rst @@ -6,7 +6,7 @@ ENS160 Sensor :keywords: ENS160 The ``ens160`` sensor platform allows you to use your ENS160 -(`datasheet `__) air-quality sensors with ESPHome. +(`datasheet `__) air-quality sensors with ESPHome. The :ref:`I²C ` or :ref:`SPI ` is required to be set up in your configuration for this sensor to work. .. note:: From d56bfd410276b3b033c6b5dab96a277bc90acda0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sa=C5=A1o=20Domadenik?= Date: Fri, 19 Jul 2024 18:51:49 +0200 Subject: [PATCH 072/173] Fix example for overriding libraries (#3922) --- components/esphome.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/esphome.rst b/components/esphome.rst index ec0217c502..21837971a3 100644 --- a/components/esphome.rst +++ b/components/esphome.rst @@ -239,12 +239,12 @@ custom components. - Wire # use the git version of a library used by a component - - esphome/Improv=https://github.com/improv-wifi/sdk-cpp.git#v1.0.0 + - Improv=https://github.com/improv-wifi/sdk-cpp.git#v1.0.0 The most common usage of this option is to include third-party libraries that are available in the `PlatformIO registry `__. They can be added by listing their name under this option. It is also possible to use specific versions, or to fetch libraries from a file or git repository. ESPHome accepts the same syntax as the -`pio lib install `__ command. +`lib_deps `__ option. Using ``=`` syntax, it is possible to override the version used for libraries that are automatically added by one of ESPHome's components. This can be useful during development to make ESPHome use a custom fork of a library. From 48f030f6b456ca9a97e048087a3fee0bb697b2ec Mon Sep 17 00:00:00 2001 From: Markus <974709+Links2004@users.noreply.github.com> Date: Sun, 21 Jul 2024 23:36:50 +0200 Subject: [PATCH 073/173] update MQTT docs to include discover_ip option (#3809) Co-authored-by: Keith Burzinski --- components/mqtt.rst | 105 +++++++++++++++++++++++++++++++++++++++----- guides/cli.rst | 2 +- 2 files changed, 96 insertions(+), 11 deletions(-) diff --git a/components/mqtt.rst b/components/mqtt.rst index c255d8ef27..6ec0cd291c 100644 --- a/components/mqtt.rst +++ b/components/mqtt.rst @@ -41,7 +41,9 @@ Configuration variables: authentication. Empty (the default) means no authentication. - **client_id** (*Optional*, string): The client id to use for opening connections. See :ref:`mqtt-defaults` for more information. -- **discovery** (*Optional*, boolean): If Home Assistant automatic +- **discover_ip** (*Optional*, boolean): If Home Assistant automatic device + discovery should be enabled. Defaults to ``true``. +- **discovery** (*Optional*, boolean): If Home Assistant automatic entity discovery should be enabled. Defaults to ``true``. - **discovery_retain** (*Optional*, boolean): Whether to retain MQTT discovery messages so that entities are added automatically on Home @@ -137,10 +139,93 @@ Configuration options: - **retain** (*Optional*, boolean): If the published message should have a retain flag on or not. Defaults to ``true``. -.. _mqtt-using_with_home_assistant: -Using with Home Assistant -------------------------- +.. _mqtt-device_discovery: + +MQTT device discovery +--------------------- + +The ESPHome device will respond to the following MQTT topics if ``mqtt.discover_ip`` is enabled. + +- ``esphome/discover`` (All ESPHome device will answer) +- ``esphome/ping/`` + +The response will be sent to ``esphome/discover/`` and is a JSON encoded message. + +The MQTT device discovery is currently used for: + +- ESPHome dashboard (online / offline status) +- ESPHome CLI (IP discovery; used to view logs and perform OTA uploads) +- Home Assistant device discovery + +Example Payload: + +.. code-block:: json + + { + "ip": "192.168.0.122", + "name": "esp32-test", + "friendly_name": "Test Device", + "port": 6053, + "version": "2024.4.1", + "mac": "84fce6123456", + "platform": "ESP32", + "board": "esp32-c3-devkitm-1", + "network": "wifi", + "api_encryption": "Noise_NNpsk0_25519_ChaChaPoly_SHA256" + } + + +JSON keys: + +- **ip** (**Required**, ip): The IP address of the ESPHome device. +- **name** (**Required**, string): Name of the device (``esphome.name``). +- **mac** (**Required**, string): MAC address of the device. +- **board** (**Required**, string): Board used for the device. +- **version** (**Required**, string): ESPHome version. +- **port** (*Optional*, port): Port of the ESPHome API (if enabled). +- **ipX** (*Optional*, ip): Additional IP addresses (X is a number starting at 1). +- **friendly_name** (*Optional*, string): Friendly name of the device (``esphome.friendly_name``). +- **platform** (*Optional*, string): Platform of the device (e.g. ESP32 or ESP8266) +- **network** (*Optional*, string): Network type. +- **project_name** (*Optional*, string): ``esphome.project.name``. +- **project_version** (*Optional*, string): ``esphome.project.version``. +- **project_version** (*Optional*, string): ``dashboard_import.package_import_url``. +- **api_encryption** (*Optional*, string): API encryption type. + +.. _mqtt-using_device_discovery_with_home_assistant: + +Using device discovery with Home Assistant +------------------------------------------ + +MQTT can be used to automatically discover the ESPHome devices in Home Assistant. +This allows Home Assistant to find the ESPHome device and connect +to it via the ESPHome API which allows the usage +of more features then MQTT entity discovery alone (e.g. Bluetooth Proxy, Voice Assistant). + +This can be achieved by enabling ``api`` and ``mqtt`` with ``mqtt.discover_ip`` enabled. +It may makes sense to disable ``mqtt.discovery`` since there will be no need to use the +MQTT entity discovery if Home Assistant will connect to the ESPHome API. + +Example configuration: + +.. code-block:: yaml + + api: + encryption: + key: "" + + mqtt: + broker: 10.0.0.2 + username: livingroom + password: !secret mqtt_password + discovery: False # disable entity discovery + discover_ip: True # enable device discovery + +.. _mqtt-using_with_home_assistant_entities: + +Using with Home Assistant MQTT entities +--------------------------------------- Using ESPHome with Home Assistant is easy, simply setup an MQTT broker (like `mosquitto `__) and point both your @@ -377,16 +462,16 @@ Configuration variables: - **state_topic** (*Optional*, string): The topic to publish state updates to. Defaults to ``///state``. - - ESPHome will always publish a manually configured state topic, even if - the component is internal. Use ``null`` to disable publishing the + + ESPHome will always publish a manually configured state topic, even if + the component is internal. Use ``null`` to disable publishing the component's state. - **command_topic** (*Optional*, string): The topic to subscribe to for commands from the remote. Defaults to ``///command``. - - ESPHome will always subscribe to a manually configured command topic, - even if the component is internal. Use ``null`` to disable subscribing + + ESPHome will always subscribe to a manually configured command topic, + even if the component is internal. Use ``null`` to disable subscribing to the component's command topic. - **command_retain** (*Optional*, boolean): Whether MQTT command messages sent to the device should be retained or not. Default to ``false``. diff --git a/guides/cli.rst b/guides/cli.rst index 68e600eb22..37910334ca 100644 --- a/guides/cli.rst +++ b/guides/cli.rst @@ -140,7 +140,7 @@ The ``esphome upload `` validates the configuration and uploads the most .. program:: esphome clean-mqtt The ``esphome clean-mqtt `` cleans retained MQTT discovery messages from the MQTT broker. -See :ref:`mqtt-using_with_home_assistant`. +See :ref:`mqtt-using_with_home_assistant_entities`. .. option:: --topic TOPIC From 662447151b9125cecb1ea949049475ed9e45d480 Mon Sep 17 00:00:00 2001 From: rnauber <7414650+rnauber@users.noreply.github.com> Date: Sun, 21 Jul 2024 23:58:03 +0200 Subject: [PATCH 074/173] Document m5angle8 input device (#3866) Co-authored-by: Richard Nauber Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/sensor/images/m5stack_8angle.jpg | Bin 0 -> 102177 bytes components/sensor/m5stack_8angle.rst | 145 ++++++++++++++++++++ images/m5stack_8angle.png | Bin 0 -> 20010 bytes index.rst | 1 + 4 files changed, 146 insertions(+) create mode 100644 components/sensor/images/m5stack_8angle.jpg create mode 100644 components/sensor/m5stack_8angle.rst create mode 100644 images/m5stack_8angle.png diff --git a/components/sensor/images/m5stack_8angle.jpg b/components/sensor/images/m5stack_8angle.jpg new file mode 100644 index 0000000000000000000000000000000000000000..20b444cb498da2bf4fd8d2766080c9811ac9c5cb GIT binary patch literal 102177 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 literal 0 HcmV?d00001 diff --git a/components/sensor/m5stack_8angle.rst b/components/sensor/m5stack_8angle.rst new file mode 100644 index 0000000000..659d05458b --- /dev/null +++ b/components/sensor/m5stack_8angle.rst @@ -0,0 +1,145 @@ +M5Stack Unit 8 Angle +==================== + +.. seo:: + :description: Setting up the M5Stack Unit 8 Angle input device with 8 knobs. + :image: m5stack_8angle.png + +Component/Hub +------------- + +The ``m5stack_8angle`` platform allows to use the [m5angle](https://docs.m5stack.com/en/unit/UNIT%208Angle) input device with ESPHome. +It has 8 knobs, a switch and can individually drive 9 RGB LEDs. + +.. figure:: images/m5stack_8angle.jpg + :align: center + :width: 75.0% + + The m5stack_8angle unit. + +The ``m5stack_8angle`` component communicates through an :ref:`I²C ` bus and uses a default address of 0x43. + +.. code-block:: yaml + + # Example configuration entry + m5stack_8angle: + id: m5stack_8angle_base + +Configuration variables: +************************ + +- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. +- **i2c_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`I²C Component ` if you need +- **address** (*Optional*, int): Manually specify the I²C address of the device. Defaults to ``0x43``. + + +Knob's position sensor +---------------------- + +The position of the 8 knobs can be made available as sensors with values between 0-1 (with 0 being the leftmost position). + +.. code-block:: yaml + + sensor: + - platform: m5stack_8angle + m5stack_8angle_id: m5stack_8angle_base + channel: 1 + name: "Knob 1" + bit_depth: 12 bit + - platform: m5stack_8angle + m5stack_8angle_id: m5stack_8angle_base + channel: 2 + name: "Knob 2" + +Configuration variables: +************************ + +- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``10s``. +- **bit_depth** (*Optional*, one of ``12 bit`` or ``8 bit``) determines the precision of the analog readout, defaults to ``8bit``. +- **raw** (*Optional*, boolean) if true, the sensor returns the raw readout value of the knob. +- All other options from :ref:`Sensor `. + + +Input switch binary sensor +-------------------------- + + A binary sensor indicating the state of the switch on the device. + +.. code-block:: yaml + + binary_sensor: + - platform: m5stack_8angle + m5stack_8angle_id: m5stack_8angle_base + name: "Switch" + +Configuration variables: +************************ + +- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``10s``. +- All other options from :ref:`Binary Sensor `. + + +Lights +------ +The 9 LEDs can be used a addressable light output. + +.. code-block:: yaml + + light: + - platform: m5stack_8angle + m5stack_8angle_id: m5stack_8angle_base + id: m8_angle_leds + name: "Lights" + effects: + - addressable_rainbow: + +Configuration variables: +************************ +- All options from :ref:`Light `. + + +Read knob's positions and switch state in Lambdas +------------------------------------------------- + +You can trigger the readout of the position of an individual knob through ``float value = id(...)->read_knob_pos(index);`` and of the switch through ``int value = id(...)->read_switch();``. +A negative return value indicates a failure to read the state. + +.. code-block:: yaml + + # Example configuration entry for having the LEDs indicate the knobs' position + light: + - platform: m5stack_8angle + m5stack_8angle_id: m5stack_8angle_base + id: m8_angle_leds + name: "Lights" + effects: + - addressable_lambda: + name: "Indicate Values" + update_interval: 200ms + lambda: |- + ESPHSVColor hsv; + hsv.value = 255; + hsv.saturation = 240; + auto parent = id(m5stack_8angle_base); + for (int i=0; i < 8; i++) { + auto kpos = parent->read_knob_pos(i); + if (kpos >= 0){ + hsv.hue = kpos * 200; + it[i] = hsv; + } + } + if (parent->read_switch() > 0) + hsv.hue = 200; + else + hsv.hue = 0; + it[8] = hsv; + +See Also +-------- + +- :ref:`sensor-filters` +- :doc:`/components/binary_sensor/index` +- :doc:`/components/light/index` +- :doc:`template` +- :apiref:`m5stack_8angle/m5stack_8angle.h` +- :ghedit:`Edit` diff --git a/images/m5stack_8angle.png b/images/m5stack_8angle.png new file mode 100644 index 0000000000000000000000000000000000000000..1a37ed3cb9cdaa58458bcfa1c760cd51dc3c032d GIT binary patch literal 20010 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 FV1gwisR;l8 literal 0 HcmV?d00001 diff --git a/index.rst b/index.rst index 970ace46e9..32419b9b60 100644 --- a/index.rst +++ b/index.rst @@ -535,6 +535,7 @@ Miscellaneous Havells Solar, components/sensor/havells_solar, havellsgti5000d_s.jpg, Solar rooftop Integration, components/sensor/integration, sigma.svg, dark-invert Kuntze pool sensor, components/sensor/kuntze, kuntze.jpg + M5Stack Unit 8 Angle, components/sensor/m5stack_8angle, m5stack_8angle.png MicroNova pellet stove, components/micronova, pellet.svg Modbus Sensor, components/sensor/modbus_controller, modbus.png Nextion, components/sensor/nextion, nextion.jpg, Sensors from display From 023d2fdf4f0d6f369726b535d3006ca2dc1f3864 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Mon, 22 Jul 2024 12:35:07 +1200 Subject: [PATCH 075/173] Bump version to 2024.7.1 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index f93e347055..9126899d08 100644 --- a/Doxygen +++ b/Doxygen @@ -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.7.0 +PROJECT_NUMBER = 2024.7.1 # 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 diff --git a/Makefile b/Makefile index e45f0641ce..88a8295c88 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = 2024.7.0 +ESPHOME_REF = 2024.7.1 PAGEFIND_VERSION=1.1.0 PAGEFIND=pagefind NET_PAGEFIND=../pagefindbin/pagefind diff --git a/_static/version b/_static/version index ce9bbeb891..558c932114 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2024.7.0 \ No newline at end of file +2024.7.1 \ No newline at end of file diff --git a/conf.py b/conf.py index 2896a6508e..ce46e5ebd4 100644 --- a/conf.py +++ b/conf.py @@ -69,7 +69,7 @@ # The short X.Y version. version = "2024.7" # The full version, including alpha/beta/rc tags. -release = "2024.7.0" +release = "2024.7.1" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 7c75256fd4261f13ee0044f6381b0272dd74a0ec Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Mon, 22 Jul 2024 12:38:23 +1200 Subject: [PATCH 076/173] Update changelog for 2024.7.1 --- changelog/2024.7.0.rst | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/changelog/2024.7.0.rst b/changelog/2024.7.0.rst index be76b5310a..a95d970337 100644 --- a/changelog/2024.7.0.rst +++ b/changelog/2024.7.0.rst @@ -31,6 +31,15 @@ needs to be changed to the following: Please see the :doc:`Documentation ` for the full configuration. +Release 2024.7.1 - July 22 +-------------------------- + +- Prevent rename from deleting new config :esphomepr:`7104` by :ghuser:`acortelyou` +- [i2s_microphone] Partially revert #7092 so microphone volume doesn't change :esphomepr:`7109` by :ghuser:`kahrendt` +- [heatpumpir] Fix BK72XX Compile error with IRremoteESP8266 :esphomepr:`6955` by :ghuser:`dianlight` +- [http_request] allow basic auth for idf :esphomepr:`7086` by :ghuser:`oarcher` +- Fixes sml parser to process extended length lists with a number of items that is dividable by 16 :esphomepr:`6148` by :ghuser:`irgendwienet` + Full list of changes -------------------- From d0145b12f1b605b77d2dbf19e841d72d75e9c1d0 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Mon, 22 Jul 2024 12:39:06 +1200 Subject: [PATCH 077/173] Update supporters for 2024.7.1 --- guides/supporters.rst | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index 9512a2d9c7..47daa843c1 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -40,6 +40,7 @@ Contributors - `Antonio (@acarvajalperez) `__ - `aceindy (@aceindy) `__ - `Avula Chandra Kiran Reddy (@ackr-8) `__ +- `Alex Cortelyou (@acortelyou) `__ - `acshef (@acshef) `__ - `Zhenyu Wu (@Adam5Wu) `__ - `adamgreg (@adamgreg) `__ @@ -495,6 +496,7 @@ Contributors - `DrRob (@DrRob) `__ - `drug123 (@drug123) `__ - `Drzony (@drzony) `__ +- `Dmitry Savinkin (@dsavinkin) `__ - `Dmitrii Shcherbakov (@dshcherb) `__ - `Daniel Müller (@dtmuller) `__ - `Tom Soer (@dtx3k) `__ @@ -1551,10 +1553,12 @@ Contributors - `Jan Čermák (@sairon) `__ - `samnewman86 (@samnewman86) `__ - `Sam Turner (@samturner3) `__ +- `Samuel Tardieu (@samueltardieu) `__ - `Sender (@sanderlv) `__ - `Sanjay Govind (@sanjay900) `__ - `Marcin (@Santanachia) `__ - `sascha lammers (@sascha432) `__ +- `Sašo Domadenik (@sasodoma) `__ - `Davide Perini (@sblantipodi) `__ - `sbur83 (@sbur83) `__ - `Søren Christian Aarup (@scaarup) `__ @@ -1709,6 +1713,7 @@ Contributors - `TheJulianJES (@TheJulianJES) `__ - `Jozef Zuzelka (@TheKuko) `__ - `Mateusz Soszyński (@TheLastGimbus) `__ +- `Daniel (@themorgantown) `__ - `Bart (@TheNameIsBart) `__ - `Andrew Quested (@thenameiwantedwastaken) `__ - `Zixuan Wang (@TheNetAdmin) `__ @@ -1910,4 +1915,4 @@ Contributors - `Christian Zufferey (@zuzu59) `__ - `Zynth-dev (@Zynth-dev) `__ -*This page was last updated July 17, 2024.* +*This page was last updated July 22, 2024.* From cfca1bcb523148d4082dd7c4207eb83c3ed157ad Mon Sep 17 00:00:00 2001 From: leejoow Date: Mon, 22 Jul 2024 03:33:14 +0200 Subject: [PATCH 078/173] [modbus_controller] on command sent trigger (#4039) Co-authored-by: Leo Schelvis --- components/modbus_controller.rst | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/components/modbus_controller.rst b/components/modbus_controller.rst index 82601c6f9a..6e32a63894 100644 --- a/components/modbus_controller.rst +++ b/components/modbus_controller.rst @@ -89,6 +89,9 @@ Configuration variables: - **lambda** (**Required**, :ref:`lambda `): Lambda that returns the value of this register. +Automations: + +- **on_command_sent** (*Optional*, :ref:`Automation `): An automation to perform when a modbus command has been sent. See :ref:`modbus_controller-on_command_sent` Example Client -------------- @@ -721,6 +724,28 @@ The response is mapped to the sensor based on ``register_count`` and offset in b .. _modbusseealso: +.. _modbus_controller-automations: + +Automation +---------- + +.. _modbus_controller-on_command_sent: + +``on_command_sent`` +******************* + +This automation will be triggered when a command has been sent by the `modbus_controller`. In :ref:`Lambdas ` +you can get the function code in ``function_code`` and the register address in ``address``. + +.. code-block:: yaml + + modbus_controller: + - id: modbus_con + # ... + on_command_sent: + then: + - number.increment: modbus_commands + See Also -------- From b783ccbcb73a167a01e5b54e5f6d0ba7f8db81dc Mon Sep 17 00:00:00 2001 From: "imgbot[bot]" <31301654+imgbot[bot]@users.noreply.github.com> Date: Mon, 22 Jul 2024 16:32:39 +1200 Subject: [PATCH 079/173] [ImgBot] Optimize images (#4063) Co-authored-by: ImgBotApp --- components/climate/images/climate-ui.png | Bin 26206 -> 19054 bytes .../number-slider-popup-input-field.png | Bin 11096 -> 8528 bytes .../images/web_server/number-slider-popup.png | Bin 19249 -> 15191 bytes .../web_server/sensor-history-graph.png | Bin 44240 -> 34250 bytes .../web_server/tab-header-expand-cloapsed.png | Bin 189216 -> 140986 bytes .../tab-header-expand-controls-expanded.png | Bin 72198 -> 56694 bytes .../tab-header-expand-logs-expanded.png | Bin 156242 -> 108077 bytes 7 files changed, 0 insertions(+), 0 deletions(-) diff --git a/components/climate/images/climate-ui.png b/components/climate/images/climate-ui.png index 10a49b62a317dd8f8dbb84bf6764557d8a603c27..3ecabbd87ea59ab9545ca26a2d1c11ad9ccbfd6a 100644 GIT binary patch literal 19054 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

}`iEMf=9(7VYJMQls_4rmH5Avc2 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 CHwqE} literal 26206 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 aStu7SS4_9!#NU2l(cf>puW*mU<^KXNB2aVy diff --git a/components/images/web_server/number-slider-popup-input-field.png b/components/images/web_server/number-slider-popup-input-field.png index d694a024f784ad15b5251a3634ed45256fd02895..8f3d939b0eaaed545d5e4386c6be69dec4ca4af9 100644 GIT binary patch literal 8528 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 C4NdI; literal 11096 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 diff --git a/components/images/web_server/number-slider-popup.png b/components/images/web_server/number-slider-popup.png index 2db20fb930d1218c7ca66393a188e341a7c62e61..825a794dda3ed2d3d413dea928dfca9e5932ebb9 100644 GIT binary patch literal 15191 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

    Po@N0ipqzRJ!AH8y8l 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%0DTAH?9AA3$6&Kiw1`W~NTxWz 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%0DMaw6qc>I0I+ix`!5zq{GQFT+ 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 literal 189216 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

    89jZp!?Ia`eDB5bFv&t$hu6%ZnQPk+Bx&Zl>XcP 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%0Aw(ROIW?-W)T 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 z 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 diff --git a/components/images/web_server/tab-header-expand-controls-expanded.png b/components/images/web_server/tab-header-expand-controls-expanded.png index f37b5b5d028dde68e4021bc9270c17af843b0fbd..f16b267d36dcb66639117a6b72daf8b1346aed07 100644 GIT binary patch literal 56694 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 HqcZ*m`$nvW diff --git a/components/images/web_server/tab-header-expand-logs-expanded.png b/components/images/web_server/tab-header-expand-logs-expanded.png index 22d98d4d857c2d1c6b2a4e807559900a556d6c98..807f1d895615a60ba96acf25737babd328242939 100644 GIT binary patch literal 108077 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≻6HQJe>~Lc5EZX0H`#kf&AO=2~Ly{29*F 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 EKbTse3IG5A literal 156242 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%0ATDwO64I+Hw1qio?PbhRT2r{Ak} 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 From 0a28e6d58c04dc2acd6a3e0c226bfa95fb538652 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aodren=20Auffr=C3=A9dou-Heinicke?= <54121510+aodrenah@users.noreply.github.com> Date: Sun, 21 Jul 2024 22:29:58 -0700 Subject: [PATCH 080/173] APDS9306 Ambient Light Sensor Documentation (#3826) Co-authored-by: Keith Burzinski Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/images/apds9306.png | Bin 0 -> 15142 bytes components/sensor/apds9306.rst | 70 ++++++++++++++++++++++++++ components/sensor/images/apds9306.png | Bin 0 -> 41129 bytes images/apds9306.png | Bin 0 -> 15142 bytes index.rst | 1 + 5 files changed, 71 insertions(+) create mode 100644 components/images/apds9306.png create mode 100644 components/sensor/apds9306.rst create mode 100644 components/sensor/images/apds9306.png create mode 100644 images/apds9306.png diff --git a/components/images/apds9306.png b/components/images/apds9306.png new file mode 100644 index 0000000000000000000000000000000000000000..07fbc1d37afe00c0fb226c0f84822c2a2c585a1c GIT binary patch literal 15142 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 UEqo|8?EnA(07*qoM6N<$g70|~&;S4c literal 0 HcmV?d00001 diff --git a/components/sensor/apds9306.rst b/components/sensor/apds9306.rst new file mode 100644 index 0000000000..a86bbbb12d --- /dev/null +++ b/components/sensor/apds9306.rst @@ -0,0 +1,70 @@ +APDS9306 Sensor +=============== + +.. seo:: + :description: Instructions for setting up APDS9306 sensors. + :image: apds9306.png + + +.. _apds9306-component: + +Component +--------- + +The ``apds9306`` sensor component allows you to use APDS9306 ambient light sensors (`datasheet `__, `Broadcom`_) with ESPHome. +The :ref:`I²C ` is required to be set up in your configuration for this sensor to work. + +.. figure:: images/apds9306.png + :align: center + :width: 80.0% + + Image by `Broadcom`_ + + +.. code-block:: yaml + + # Example configuration entry + sensor: + - platform: apds9306 + name: "APDS9306 Light Level" # below are optional + gain: 1 + bit_width: 18 + measurement_rate: 100ms + update_interval: 60s + +.. _Broadcom: https://www.broadcom.com/products/optical-sensors/ambient-light-photo-sensors/apds-9306-065 + +Configuration variables: +------------------------ + +The ``apds9306`` sensor allows you to use your :doc:`apds9306` to perform ambient light measurements. + +- **address** (*Optional*, int): The I²C address of the sensor. Should be ``0x52`` according to datasheet ("Contact factory for other addressing options"). +- **gain** (*Optional*, int): The gain of the ambient light sensor. One of 1, 3, 6, 9, 18. Defaults to ``1``. +- **bit\_width** (*Optional*, int): The bit width/resolution of the ambient light sensor. One of: + + - 20 - takes 400ms + - 19 - takes 200ms + - 18 - takes 100ms (``default``) + - 17 - takes 50ms + - 16 - takes 25ms + - 13 - takes 3.125ms + +- **measurement\_rate** (*Optional*, int): The measurement rate of the ambient light sensor in milliseconds. One of: + + - 25 + - 50 + - 100 (``default``); + - 200 + - 500 + - 1000 + +- **update\_interval** (*Optional*, :ref:`config-time`): The interval at which the sensor reading will be updated. Defaults to ``60s``. +- All opther options from :ref:`Sensor `. + +See Also +-------- + +- :ref:`sensor-filters` +- :apiref:`apds9306/apds9306.h` +- :ghedit:`Edit` diff --git a/components/sensor/images/apds9306.png b/components/sensor/images/apds9306.png new file mode 100644 index 0000000000000000000000000000000000000000..521acbfc8b8dc02aa90a71979b0890bf1c8d2f3f GIT binary patch literal 41129 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 literal 0 HcmV?d00001 diff --git a/images/apds9306.png b/images/apds9306.png new file mode 100644 index 0000000000000000000000000000000000000000..07fbc1d37afe00c0fb226c0f84822c2a2c585a1c GIT binary patch literal 15142 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 UEqo|8?EnA(07*qoM6N<$g70|~&;S4c literal 0 HcmV?d00001 diff --git a/index.rst b/index.rst index 32419b9b60..2bd2a1caa2 100644 --- a/index.rst +++ b/index.rst @@ -488,6 +488,7 @@ Light .. imgtable:: AM43, components/sensor/am43, am43.jpg, Lux + APDS9306, components/sensor/apds9306, apds9306.png, Lux APDS9960, components/sensor/apds9960, apds9960.jpg, Colour & Gesture AS7341, components/sensor/as7341, as7341.jpg, Spectral Color Sensor BH1750, components/sensor/bh1750, bh1750.jpg, Lux From 170f770b719040c5fa178aa68fee2a10ee7b0c9b Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Tue, 23 Jul 2024 11:45:29 +1200 Subject: [PATCH 081/173] [http_request] Simplify component examples (#4076) --- components/http_request.rst | 2 -- cookbook/http_request_sensor.rst | 2 -- 2 files changed, 4 deletions(-) diff --git a/components/http_request.rst b/components/http_request.rst index 4b5a18dabc..c7dfe400c1 100644 --- a/components/http_request.rst +++ b/components/http_request.rst @@ -13,8 +13,6 @@ The ``http_request`` component lets you make HTTP/HTTPS requests. To do so, you # Example configuration entry http_request: - useragent: esphome/device - timeout: 10s .. _http_request-configuration_variables: diff --git a/cookbook/http_request_sensor.rst b/cookbook/http_request_sensor.rst index 7ddfaa6dbd..b12e2d7e3f 100644 --- a/cookbook/http_request_sensor.rst +++ b/cookbook/http_request_sensor.rst @@ -23,8 +23,6 @@ On the client nodes we need an :doc:`/components/http_request` with an ``id`` se .. code-block:: yaml http_request: - useragent: esphome/device - id: http_request_id sensor: - platform: template From 6e9a0181eb87fd66759cd5abc7d5b32dbcce0c91 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Tue, 23 Jul 2024 13:51:37 +1200 Subject: [PATCH 082/173] [http_request] Change default timeout to 4.5s (#4077) --- components/http_request.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/http_request.rst b/components/http_request.rst index c7dfe400c1..18fa0fe835 100644 --- a/components/http_request.rst +++ b/components/http_request.rst @@ -22,7 +22,7 @@ Configuration variables: - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **follow_redirects** (*Optional*, boolean): Enable following HTTP redirects. Defaults to ``true``. - **redirect_limit** (*Optional*, integer): Maximum amount of redirects to follow when enabled. Defaults to ``3``. -- **timeout** (*Optional*, :ref:`config-time`): Timeout for request. Defaults to ``5s``. +- **timeout** (*Optional*, :ref:`config-time`): Timeout for request. Defaults to ``4.5s``. - **useragent** (*Optional*, string): User-Agent header for requests. Defaults to ``ESPHome/ (https://esphome.io)`` where ```` is the version of ESPHome the device is running. For example: ``ESPHome/2024.6.0 (https://esphome.io)`` From 3802a8133c583c69343a2af0655d8eda6a571bd3 Mon Sep 17 00:00:00 2001 From: dentra Date: Wed, 24 Jul 2024 06:51:01 +0300 Subject: [PATCH 083/173] [http_request] Allow configure buffer size on ESP-IDF (#4078) Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/http_request.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/components/http_request.rst b/components/http_request.rst index 18fa0fe835..54e1dc803e 100644 --- a/components/http_request.rst +++ b/components/http_request.rst @@ -36,6 +36,11 @@ Configuration variables: experiencing device reboots due to watchdog timeouts;** doing so may prevent the device from rebooting due to a legitimate problem. **Only available on ESP32 and RP2040**. +**For the ESP32 when using ESP-IDF:** + +- **buffer_size_rx** (*Optional*, integer): Change HTTP receive buffer size. Defaults to ``512``. +- **buffer_size_tx** (*Optional*, integer): Change HTTP transmit buffer size. Defaults to ``512``. + **For the ESP8266:** - **esp8266_disable_ssl_support** (*Optional*, boolean): Determines whether to include HTTPS/SSL support in the From 49ee0d6002b62a691d5e8e447debbd53aab243bf Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Tue, 23 Jul 2024 13:51:37 +1200 Subject: [PATCH 084/173] [http_request] Change default timeout to 4.5s (#4077) --- components/http_request.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/http_request.rst b/components/http_request.rst index c7dfe400c1..18fa0fe835 100644 --- a/components/http_request.rst +++ b/components/http_request.rst @@ -22,7 +22,7 @@ Configuration variables: - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **follow_redirects** (*Optional*, boolean): Enable following HTTP redirects. Defaults to ``true``. - **redirect_limit** (*Optional*, integer): Maximum amount of redirects to follow when enabled. Defaults to ``3``. -- **timeout** (*Optional*, :ref:`config-time`): Timeout for request. Defaults to ``5s``. +- **timeout** (*Optional*, :ref:`config-time`): Timeout for request. Defaults to ``4.5s``. - **useragent** (*Optional*, string): User-Agent header for requests. Defaults to ``ESPHome/ (https://esphome.io)`` where ```` is the version of ESPHome the device is running. For example: ``ESPHome/2024.6.0 (https://esphome.io)`` From 9cca0718d2902de0e6c879e675fadfb45d54c813 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Thu, 25 Jul 2024 09:13:08 +1200 Subject: [PATCH 085/173] Bump version to 2024.7.2 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index 9126899d08..c2e9d4db9d 100644 --- a/Doxygen +++ b/Doxygen @@ -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.7.1 +PROJECT_NUMBER = 2024.7.2 # 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 diff --git a/Makefile b/Makefile index 88a8295c88..0dfaf4ac94 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = 2024.7.1 +ESPHOME_REF = 2024.7.2 PAGEFIND_VERSION=1.1.0 PAGEFIND=pagefind NET_PAGEFIND=../pagefindbin/pagefind diff --git a/_static/version b/_static/version index 558c932114..2ab8391a63 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2024.7.1 \ No newline at end of file +2024.7.2 \ No newline at end of file diff --git a/conf.py b/conf.py index ce46e5ebd4..ec3ae4c4b5 100644 --- a/conf.py +++ b/conf.py @@ -69,7 +69,7 @@ # The short X.Y version. version = "2024.7" # The full version, including alpha/beta/rc tags. -release = "2024.7.1" +release = "2024.7.2" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From c4754bd8b2b8d8717394bf97dd77328d7a13eaff Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Thu, 25 Jul 2024 10:30:51 +1200 Subject: [PATCH 086/173] Update changelog for 2024.7.2 --- changelog/2024.7.0.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/changelog/2024.7.0.rst b/changelog/2024.7.0.rst index a95d970337..3db9f32404 100644 --- a/changelog/2024.7.0.rst +++ b/changelog/2024.7.0.rst @@ -40,6 +40,12 @@ Release 2024.7.1 - July 22 - [http_request] allow basic auth for idf :esphomepr:`7086` by :ghuser:`oarcher` - Fixes sml parser to process extended length lists with a number of items that is dividable by 16 :esphomepr:`6148` by :ghuser:`irgendwienet` +Release 2024.7.2 - July 25 +-------------------------- + +- [http_request] Change default timeout to 4.5s :esphomepr:`7123` by :ghuser:`jesserockz` +- [http_request] Fix ESP-IDF follow redirect :esphomepr:`7101` by :ghuser:`dentra` + Full list of changes -------------------- From d5ff971be90ba6bf2d028a8e2c8651fd069ad2e9 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Thu, 25 Jul 2024 10:31:35 +1200 Subject: [PATCH 087/173] Update supporters for 2024.7.2 --- guides/supporters.rst | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index 47daa843c1..b4d563da38 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -126,6 +126,7 @@ Contributors - `Anthony (@AnthonyMaiorani) `__ - `Rémi K. (@antibill51) `__ - `Antonio Fiol (@antonio-fiol) `__ +- `Aodren Auffrédou-Heinicke (@aodrenah) `__ - `Andy Barratt (@apbarratt) `__ - `Andrey Bodrov (@apbodrov) `__ - `Adriaan Peeters (@apeeters) `__ @@ -454,6 +455,7 @@ Contributors - `dgtal1 (@dgtal1) `__ - `Dan Halbert (@dhalbert) `__ - `Dustin L. Howett (@DHowett) `__ +- `Lucio Tarantino (@dianlight) `__ - `diesel437 (@diesel437) `__ - `Alain Turbide (@Dilbert66) `__ - `Mark (@Diramu) `__ @@ -524,6 +526,7 @@ Contributors - `Eduardo Pérez (@eduperez) `__ - `Edward Firmo (@edwardtfn) `__ - `Eenoo (@Eenoo) `__ +- `IDuzTheGamez (@eff3ry) `__ - `Eli Fidler (@efidler) `__ - `egandro (@egandro) `__ - `Erwin Kooi (@egeltje) `__ @@ -782,6 +785,7 @@ Contributors - `Ingurum (@Ingurum) `__ - `Marc J (@InvncibiltyCloak) `__ - `IoT-devices LLC (@iotdevicesdev) `__ +- `irgendwienet (@irgendwienet) `__ - `Ivo Roefs (@ironirc) `__ - `irtimaled (@irtimaled) `__ - `Ingo Theiss (@itn3rd77) `__ @@ -1604,6 +1608,7 @@ Contributors - `SiliconAvatar (@SiliconAvatar) `__ - `sillyfrog (@sillyfrog) `__ - `Mark Lopez (@Silvenga) `__ +- `simonjowett (@simonjowett) `__ - `James Chaloupka (@SirGoodenough) `__ - `Maximilian Ertl (@Sirs0ri) `__ - `SirSydom (@SirSydom) `__ @@ -1915,4 +1920,4 @@ Contributors - `Christian Zufferey (@zuzu59) `__ - `Zynth-dev (@Zynth-dev) `__ -*This page was last updated July 22, 2024.* +*This page was last updated July 25, 2024.* From 2bdb8a781b025fb76ce14ce6e625d8cef74a9c8b Mon Sep 17 00:00:00 2001 From: Illia Khovanskyi Date: Fri, 26 Jul 2024 15:20:01 +0200 Subject: [PATCH 088/173] Added Electrolux AC into supported list (#3873) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: H. Árkosi Róbert --- components/climate/climate_ir.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/climate/climate_ir.rst b/components/climate/climate_ir.rst index 8cf167f221..653688120a 100644 --- a/components/climate/climate_ir.rst +++ b/components/climate/climate_ir.rst @@ -48,7 +48,7 @@ submit a feature request (see FAQ). +---------------------------------------+---------------------+----------------------+ | Noblex | ``noblex`` | yes | +---------------------------------------+---------------------+----------------------+ -| TCL112, Fuego | ``tcl112`` | yes | +| Electrolux, TCL, Fuego | ``tcl112`` | yes | +---------------------------------------+---------------------+----------------------+ | :ref:`Toshiba` | ``toshiba`` | yes | +---------------------------------------+---------------------+----------------------+ From ba23ee9c4e27ee4096e71594d8eec75b7c5dbb5b Mon Sep 17 00:00:00 2001 From: RubyBailey <60991881+RubyBailey@users.noreply.github.com> Date: Mon, 29 Jul 2024 16:20:26 -0700 Subject: [PATCH 089/173] Fix for Mitsubishi units that only support cooling (#4088) --- components/climate/climate_ir.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/components/climate/climate_ir.rst b/components/climate/climate_ir.rst index 8cf167f221..b5a8c3623c 100644 --- a/components/climate/climate_ir.rst +++ b/components/climate/climate_ir.rst @@ -200,6 +200,10 @@ These air conditioners support two protocols: Midea and Coolix. Therefore, when ``mitsubishi`` **Climate**: +.. note:: + + - When using this component with Mitsubishi units that only support cooling mode, the Off command may not work. Set **supports_heat** to ``false`` to resolve that issue. + - **set_fan_mode** (*Optional*, string): Select the fan modes desired or that are supported on your remote. Defaults to ``3levels`` - Options are: ``3levels`` , ``4levels``, ``quiet_4levels``. From a658adf4093a8c6a5bf8ea7ece8d294070422f28 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Tue, 30 Jul 2024 16:50:22 +1200 Subject: [PATCH 090/173] [touchscreen] Add ``pages`` config item (#4072) --- components/touchscreen/index.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/components/touchscreen/index.rst b/components/touchscreen/index.rst index b1c2d0e6fe..bf2c19af51 100644 --- a/components/touchscreen/index.rst +++ b/components/touchscreen/index.rst @@ -300,6 +300,9 @@ Configuration variables: - **y_min** (**Required**, int): Top coordinate of the screen area to be detected as the virtual button. - **y_max** (**Required**, int): Bottom coordinate of the screen area to be detected as the virtual button. - **page_id** (*Optional*, :ref:`config-id`): Only trigger this binary sensor if the display is showing this page. + Cannot be used with ``pages``. +- **pages** (*Optional*, list of :ref:`config-id`): Only trigger this binary sensor if the display is showing one of these pages. + Cannot be used with ``page_id``. - All other options from :ref:`Binary Sensor `. From 08a5bb66701c96e2b2cda2097e7369ef087938f2 Mon Sep 17 00:00:00 2001 From: Keith Burzinski Date: Tue, 30 Jul 2024 01:06:13 -0500 Subject: [PATCH 091/173] Add deprecation notice for ESP32 Hall sensor (#3883) --- components/sensor/esp32_hall.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/components/sensor/esp32_hall.rst b/components/sensor/esp32_hall.rst index 436b8610a0..12592170fd 100644 --- a/components/sensor/esp32_hall.rst +++ b/components/sensor/esp32_hall.rst @@ -11,6 +11,12 @@ The ``esp32_hall`` sensor platform allows you to use the integrated ESP32 chip to measure the magnitude and direction of magnetic field around the chip (with quite poor accuracy). +.. warning:: + + Espressif has `removed support `__ + for the ESP32's Hall sensor in IDF 5; for this reason, support for this component is + likely to be removed in a future release. + Please make sure that nothing is connected to pins ``GPIO36`` and ``GPIO39`` if this component is enabled, as those pins are used for the internal low-noise amplifier used by the hall sensor. From 15032c2892f09771f8b802024e1b91ef094983a6 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 30 Jul 2024 15:58:32 +0200 Subject: [PATCH 092/173] Fix example YAML for Haier climate component (#4096) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix example YAML for Haier climate component The valid value is `hon` and not `h0n`. Did same PR for source component https://github.com/paveldn/haier-esphome/pull/48 * Update haier.rst - Consequently replace `h0n` with `hon` in all the examples - Put values in text fields to conform docs site styling --------- Co-authored-by: H. Árkosi Róbert --- components/climate/haier.rst | 60 ++++++++++++++++++------------------ 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/components/climate/haier.rst b/components/climate/haier.rst index 8849a406f4..c14b14c6cd 100644 --- a/components/climate/haier.rst +++ b/components/climate/haier.rst @@ -61,7 +61,7 @@ This component requires a :ref:`uart` to be setup. climate: - platform: haier id: haier_ac - protocol: hOn + protocol: hon name: Haier AC uart_id: ac_port wifi_signal: true @@ -113,23 +113,23 @@ Configuration variables: - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **uart_id** (*Optional*, :ref:`config-id`): ID of the UART port to communicate with AC. -- **protocol** (*Optional*, string): Defines communication protocol with AC. Possible values: hon or smartair2. The default value is smartair2. +- **protocol** (*Optional*, string): Defines communication protocol with AC. Possible values: ``hon`` or ``smartair2``. The default value is ``smartair2``. - **name** (**Required**, string): The name of the climate device. -- **wifi_signal** (*Optional*, boolean): If true - send wifi signal level to AC. -- **answer_timeout** (*Optional*, :ref:`config-time`): Responce timeout. The default value is 200ms. -- **alternative_swing_control** (*Optional*, boolean): (supported by smartAir2 only) If true - use alternative values to control swing mode. Use only if the original control method is not working for your AC. -- **status_message_header_size** (*Optional*, int): (supported only by hOn) Define the header size of the status message. Can be used to handle some protocol variations. Use only if you are sure what you are doing. The default value: 0. -- **control_packet_size** (*Optional*, int): (supported only by hOn) Define the size of the control packet. Can help with some newer models of ACs that use bigger packets. The default value: 10. -- **sensors_packet_size** (*Optional*, int): (supported only by hOn) Define the size of the sensor packet of the status message. Can help with some models of ACs that have bigger sensor packet. The default value: 22, minimum value: 18. -- **control_method** (*Optional*, list): (supported only by hOn) Defines control method (should be supported by AC). Supported values: MONITOR_ONLY - no control, just monitor status, SET_GROUP_PARAMETERS - set all AC parameters with one command (default method), SET_SINGLE_PARAMETER - set each parameter individually (this method is supported by some new ceiling ACs like AD71S2SM3FA) +- **wifi_signal** (*Optional*, boolean): If ``true`` - send wifi signal level to AC. +- **answer_timeout** (*Optional*, :ref:`config-time`): Responce timeout. The default value is ``200ms``. +- **alternative_swing_control** (*Optional*, boolean): (supported by smartAir2 only) If ``true`` - use alternative values to control swing mode. Use only if the original control method is not working for your AC. +- **status_message_header_size** (*Optional*, int): (supported only by hOn) Define the header size of the status message. Can be used to handle some protocol variations. Use only if you are sure what you are doing. The default value: ``0``. +- **control_packet_size** (*Optional*, int): (supported only by hOn) Define the size of the control packet. Can help with some newer models of ACs that use bigger packets. The default value: ``10``. +- **sensors_packet_size** (*Optional*, int): (supported only by hOn) Define the size of the sensor packet of the status message. Can help with some models of ACs that have bigger sensor packet. The default value: ``22``, minimum value: ``18``. +- **control_method** (*Optional*, list): (supported only by hOn) Defines control method (should be supported by AC). Supported values: ``MONITOR_ONLY`` - no control, just monitor status, ``SET_GROUP_PARAMETERS`` - set all AC parameters with one command (default method), ``SET_SINGLE_PARAMETER`` - set each parameter individually (this method is supported by some new ceiling ACs like AD71S2SM3FA) - **display** (*Optional*, boolean): Can be used to set the AC display off. - **beeper** (*Optional*, boolean): Can be used to disable beeping on commands from AC. Supported only by hOn protocol. -- **supported_modes** (*Optional*, list): Can be used to disable some of AC modes. Possible values: 'OFF', HEAT_COOL, COOL, HEAT, DRY, FAN_ONLY -- **supported_swing_modes** (*Optional*, list): Can be used to disable some swing modes if your AC does not support it. Possible values: 'OFF', VERTICAL, HORIZONTAL, BOTH -- **supported_presets** (*Optional*, list): Can be used to disable some presets. Possible values for smartair2 are: AWAY, BOOST, COMFORT. Possible values for hOn are: AWAY, ECO, BOOST, SLEEP. AWAY preset can be enabled only in HEAT mode, it is disabled by default -- **on_alarm_start** (*Optional*, :ref:`Automation `): (supported only by hOn) Automation to perform when AC activates a new alarm. See :ref:`haier-on_alarm_start` -- **on_alarm_end** (*Optional*, :ref:`Automation `): (supported only by hOn) Automation to perform when AC deactivates a new alarm. See :ref:`haier-on_alarm_end` -- **on_status_message** (*Optional*, :ref:`Automation `): Automation to perform when status message received from AC. See :ref:`haier-on_status_message` +- **supported_modes** (*Optional*, list): Can be used to disable some of AC modes. Possible values: ``'OFF'``, ``HEAT_COOL``, ``COOL``, ``HEAT``, ``DRY``, ``FAN_ONLY``. +- **supported_swing_modes** (*Optional*, list): Can be used to disable some swing modes if your AC does not support it. Possible values: ``'OFF'``, ``VERTICAL``, ``HORIZONTAL``, ``BOTH``. +- **supported_presets** (*Optional*, list): Can be used to disable some presets. Possible values for smartair2 are: ``AWAY``, ``BOOST``, ``COMFORT``. Possible values for hOn are: ``AWAY``, ``ECO``, ``BOOST``, ``SLEEP``. ``AWAY`` preset can be enabled only in ``HEAT`` mode, it is disabled by default. +- **on_alarm_start** (*Optional*, :ref:`Automation `): (supported only by hOn) Automation to perform when AC activates a new alarm. See :ref:`haier-on_alarm_start`. +- **on_alarm_end** (*Optional*, :ref:`Automation `): (supported only by hOn) Automation to perform when AC deactivates a new alarm. See :ref:`haier-on_alarm_end`. +- **on_status_message** (*Optional*, :ref:`Automation `): Automation to perform when status message received from AC. See :ref:`haier-on_status_message`. - All other options from :ref:`Climate `. Automations @@ -140,12 +140,12 @@ Automations ``on_alarm_start`` Trigger ************************** -This automation will be triggered when a new alarm is activated by AC. The error code of the alarm will be given in the variable ``code`` (``uint8_t``), error message in the variable ``message`` (``const char *``). Those variables can be used in :ref:`lambdas ` +This automation will be triggered when a new alarm is activated by AC. The error code of the alarm will be given in the variable ``code`` (``uint8_t``), error message in the variable ``message`` (``const char *``). Those variables can be used in :ref:`lambdas `. .. code-block:: yaml climate: - - protocol: hOn + - protocol: hon on_alarm_start: then: - logger.log: @@ -158,12 +158,12 @@ This automation will be triggered when a new alarm is activated by AC. The error ``on_alarm_end`` Trigger ************************ -This automation will be triggered when a previously activated alarm is deactivated by AC. The error code of the alarm will be given in the variable ``code`` (``uint8_t``), error message in the variable ``message`` (``const char *``). Those variables can be used in :ref:`lambdas ` +This automation will be triggered when a previously activated alarm is deactivated by AC. The error code of the alarm will be given in the variable ``code`` (``uint8_t``), error message in the variable ``message`` (``const char *``). Those variables can be used in :ref:`lambdas `. .. code-block:: yaml climate: - - protocol: hOn + - protocol: hon on_alarm_end: then: - logger.log: @@ -176,13 +176,13 @@ This automation will be triggered when a previously activated alarm is deactivat ``on_status_message`` Trigger ***************************** -This automation will be triggered when component receives new status packet from AC. Raw message binary (without header and checksum) will be provided in the variable ``data`` (``const char *``), message length in the variable ``data_size`` (``uint8_t``). Those variables can be used in :ref:`lambdas ` +This automation will be triggered when component receives new status packet from AC. Raw message binary (without header and checksum) will be provided in the variable ``data`` (``const char *``), message length in the variable ``data_size`` (``uint8_t``). Those variables can be used in :ref:`lambdas `. This trigger can be used to support some features that unique for the model and not supported by others. .. code-block:: yaml climate: - - protocol: hOn + - protocol: hon on_status_message: then: - logger.log: @@ -226,7 +226,7 @@ This action toggles AC power ``climate.haier.display_on`` Action *********************************** -This action turns the AC display on +This action turns the AC display on. .. code-block:: yaml @@ -237,7 +237,7 @@ This action turns the AC display on ``climate.haier.display_off`` Action ************************************ -This action turns the AC display off +This action turns the AC display off. .. code-block:: yaml @@ -248,7 +248,7 @@ This action turns the AC display off ``climate.haier.health_on`` Action ********************************** -Turn on health mode (`UV light sterilization `__) +Turn on health mode (`UV light sterilization `__). .. code-block:: yaml @@ -259,7 +259,7 @@ Turn on health mode (`UV light sterilization `__ +(supported only by hOn) Start `self-cleaning `__. .. code-block:: yaml @@ -329,7 +329,7 @@ Turn off health mode ``climate.haier.start_steri_cleaning`` Action ********************************************* -(supported only by hOn) Start 56°C steri-cleaning +(supported only by hOn) Start 56°C steri-cleaning. .. code-block:: yaml From 2f4c7279bd277816eddd5f188d0737d21209779d Mon Sep 17 00:00:00 2001 From: Samuel Sieb Date: Tue, 30 Jul 2024 15:56:25 -0700 Subject: [PATCH 093/173] fix pipsolar example (#4087) --- components/pipsolar.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/pipsolar.rst b/components/pipsolar.rst index 89b63d2f68..466be5ab39 100644 --- a/components/pipsolar.rst +++ b/components/pipsolar.rst @@ -320,7 +320,7 @@ target level of the output. then: - output.pipsolar.set_level: id: my_pipsolar_output - level: 48.0 + value: 48.0 Configuration options: From 4a47ef5aae86fd52992c6ecd5a62042318b510f5 Mon Sep 17 00:00:00 2001 From: Samuel Sieb Date: Tue, 30 Jul 2024 15:56:40 -0700 Subject: [PATCH 094/173] fix SMS example (#4094) --- components/sim800l.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/sim800l.rst b/components/sim800l.rst index 4babcb9e61..1f993dc372 100644 --- a/components/sim800l.rst +++ b/components/sim800l.rst @@ -340,7 +340,7 @@ Relay management commands received from an authorized sender: sim800l: on_sms_received: - lambda: |- - if ( (id(sms_sender).state == "+79991234567") && ( (id(sms_message).state == "relay_1_on") OR (id(sms_message).state == "Relay_1_on") ) ) { + if ( (id(sms_sender).state == "+79991234567") && ( (id(sms_message).state == "relay_1_on") || (id(sms_message).state == "Relay_1_on") ) ) { id(relay_1).turn_on(); } switch: From cc923164b3bfbb26a38ec3732d912a9a48d2e15e Mon Sep 17 00:00:00 2001 From: Chris Nesbitt-Smith Date: Wed, 31 Jul 2024 03:03:30 +0100 Subject: [PATCH 095/173] add chrisns/childrens-clock to diy.rst (#3892) Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- guides/diy.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/guides/diy.rst b/guides/diy.rst index 07c1311d43..9611c994db 100644 --- a/guides/diy.rst +++ b/guides/diy.rst @@ -59,6 +59,7 @@ Blog Posts & Videos - `Automated Coffee Bean Roaster `__ by `brooksben11 `__ - `Droplet Smart Irrigation System `__ by `PricelessToolkit `__ - `Garage door opener controller for devices with optical encoder `__ by :ghuser:`serg987` +- `An IoT clock designed for children `__ by :ghuser:`chrisns` Custom Components & Code ------------------------ From 838ade7afaafd7d4d22b16b0d227f25baa72ce35 Mon Sep 17 00:00:00 2001 From: Kevin Ahrendt Date: Tue, 30 Jul 2024 22:15:41 -0400 Subject: [PATCH 096/173] [micro_wake_word] Update documentation to discuss how voice activity is detected (#4097) --- components/micro_wake_word.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/micro_wake_word.rst b/components/micro_wake_word.rst index 3f69ffd33d..be541b796f 100644 --- a/components/micro_wake_word.rst +++ b/components/micro_wake_word.rst @@ -55,7 +55,7 @@ Configuration variables: - **probability_cutoff** (*Optional*, percentage): The probability cutoff for voice activity detection. If the probability is below this value, then no wake word will be accepted. A larger value reduces the number of false accepts but increases the number of false rejections. - - **sliding_window_size** (*Optional*, int): The size of the sliding window for voice activity detection. The maximum of the probabilities in the sliding window is compared to ``probability_cutoff`` to determine if voice activity is detected. + - **sliding_window_size** (*Optional*, int): The size of the sliding window average for voice activity detection. The average probability is compared to ``probability_cutoff`` to determine if voice activity is detected. The ``probability_cutoff`` and ``sliding_window_size`` are provided by the JSON file but can be overridden in YAML. A default VAD model is provided with the ``vad`` configuration variables, but a different model can be overridden in YAML. From 67e2b0b31b90551cc03cbf03119108fc325b7bbb Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 31 Jul 2024 16:16:30 +1200 Subject: [PATCH 097/173] [update] Add automation documentation (#4098) * [update] Add automation documentation * Fix underline * Fix --- components/update/index.rst | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/components/update/index.rst b/components/update/index.rst index d4ac6a4c02..5e8b1f8f63 100644 --- a/components/update/index.rst +++ b/components/update/index.rst @@ -33,6 +33,31 @@ Configuration variables: - **internal** (*Optional*, boolean): Mark this component as internal. Internal components will not be exposed to the frontend (like Home Assistant). Specifying an ``id`` without a ``name`` will implicitly set this to true. +- **on_update_available** (*Optional*, :ref:`Action `): An automation to perform when an update is available. + +Automations +----------- + +``update.perform`` Action +~~~~~~~~~~~~~~~~~~~~~~~~~ + +This action allows you to trigger the update entity to start the update process. + +Configuration variables: + +- **id** (**Required**, :ref:`config-id`): The ID of the update entity. +- **force_update** (*Optional*, boolean): Perform the update even if the device is already running the same version. + Defaults to ``false``. + +``update.is_available`` Condition +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This condition checks if an update is available for the device. + +Configuration variables: + +- **id** (**Required**, :ref:`config-id`): The ID of the update entity. + See Also -------- From 9a977067aba9e97d1fcf65da7ac7fc321c393566 Mon Sep 17 00:00:00 2001 From: RubyBailey <60991881+RubyBailey@users.noreply.github.com> Date: Mon, 29 Jul 2024 16:20:26 -0700 Subject: [PATCH 098/173] Fix for Mitsubishi units that only support cooling (#4088) --- components/climate/climate_ir.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/components/climate/climate_ir.rst b/components/climate/climate_ir.rst index 653688120a..4c54f97bb9 100644 --- a/components/climate/climate_ir.rst +++ b/components/climate/climate_ir.rst @@ -200,6 +200,10 @@ These air conditioners support two protocols: Midea and Coolix. Therefore, when ``mitsubishi`` **Climate**: +.. note:: + + - When using this component with Mitsubishi units that only support cooling mode, the Off command may not work. Set **supports_heat** to ``false`` to resolve that issue. + - **set_fan_mode** (*Optional*, string): Select the fan modes desired or that are supported on your remote. Defaults to ``3levels`` - Options are: ``3levels`` , ``4levels``, ``quiet_4levels``. From 88d352c16894307c3b585f77ffe6f2963bd015b3 Mon Sep 17 00:00:00 2001 From: Kevin Ahrendt Date: Tue, 30 Jul 2024 22:15:41 -0400 Subject: [PATCH 099/173] [micro_wake_word] Update documentation to discuss how voice activity is detected (#4097) --- components/micro_wake_word.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/micro_wake_word.rst b/components/micro_wake_word.rst index 3f69ffd33d..be541b796f 100644 --- a/components/micro_wake_word.rst +++ b/components/micro_wake_word.rst @@ -55,7 +55,7 @@ Configuration variables: - **probability_cutoff** (*Optional*, percentage): The probability cutoff for voice activity detection. If the probability is below this value, then no wake word will be accepted. A larger value reduces the number of false accepts but increases the number of false rejections. - - **sliding_window_size** (*Optional*, int): The size of the sliding window for voice activity detection. The maximum of the probabilities in the sliding window is compared to ``probability_cutoff`` to determine if voice activity is detected. + - **sliding_window_size** (*Optional*, int): The size of the sliding window average for voice activity detection. The average probability is compared to ``probability_cutoff`` to determine if voice activity is detected. The ``probability_cutoff`` and ``sliding_window_size`` are provided by the JSON file but can be overridden in YAML. A default VAD model is provided with the ``vad`` configuration variables, but a different model can be overridden in YAML. From 53074a6a65c9ad8bb9c4db8dfe5a22607a786402 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Thu, 1 Aug 2024 07:51:28 +1200 Subject: [PATCH 100/173] Bump version to 2024.7.3 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index c2e9d4db9d..4a3fd03794 100644 --- a/Doxygen +++ b/Doxygen @@ -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.7.2 +PROJECT_NUMBER = 2024.7.3 # 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 diff --git a/Makefile b/Makefile index 0dfaf4ac94..826fd12ae1 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = 2024.7.2 +ESPHOME_REF = 2024.7.3 PAGEFIND_VERSION=1.1.0 PAGEFIND=pagefind NET_PAGEFIND=../pagefindbin/pagefind diff --git a/_static/version b/_static/version index 2ab8391a63..dc87a07fb8 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2024.7.2 \ No newline at end of file +2024.7.3 \ No newline at end of file diff --git a/conf.py b/conf.py index ec3ae4c4b5..c901e2bd04 100644 --- a/conf.py +++ b/conf.py @@ -69,7 +69,7 @@ # The short X.Y version. version = "2024.7" # The full version, including alpha/beta/rc tags. -release = "2024.7.2" +release = "2024.7.3" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From f84ae448e6fc300238fd30b731e8d9a209eb78cb Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Thu, 1 Aug 2024 07:51:53 +1200 Subject: [PATCH 101/173] Update changelog for 2024.7.3 --- changelog/2024.7.0.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/changelog/2024.7.0.rst b/changelog/2024.7.0.rst index 3db9f32404..fbb645854a 100644 --- a/changelog/2024.7.0.rst +++ b/changelog/2024.7.0.rst @@ -46,6 +46,13 @@ Release 2024.7.2 - July 25 - [http_request] Change default timeout to 4.5s :esphomepr:`7123` by :ghuser:`jesserockz` - [http_request] Fix ESP-IDF follow redirect :esphomepr:`7101` by :ghuser:`dentra` +Release 2024.7.3 - August 1 +--------------------------- + +- [pmwcs3] Add delay after sending REG_READ_START :esphomepr:`7130` by :ghuser:`thevogoncoder` +- Fix for Mitsubishi units that only support cooling :esphomepr:`7143` by :ghuser:`RubyBailey` +- [micro_wake_word] Fix VAD detection and modify detection computation :esphomepr:`7164` by :ghuser:`kahrendt` + Full list of changes -------------------- From ca18d98e8efca45bb2914aa12b0ec4d238378d8a Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Thu, 1 Aug 2024 07:52:35 +1200 Subject: [PATCH 102/173] Update supporters for 2024.7.3 --- guides/supporters.rst | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index b4d563da38..92c41703f3 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -307,6 +307,7 @@ Contributors - `Paweł Dembicki (@CHKDSK88) `__ - `chris-jennings (@chris-jennings) `__ - `Chris (@chrismaki) `__ +- `Chris Nesbitt-Smith (@chrisns) `__ - `Christiaan de Ridder (@christiaanderidder) `__ - `Christoph Wagner (@Christoph-Wagner) `__ - `Christian Taedcke (@chrta) `__ @@ -462,6 +463,7 @@ Contributors - `Dirk Heinke (@DirkHeinke) `__ - `Dirk Jahnke (@dirkj) `__ - `Dennis (@dirrgang) `__ +- `Andrea Casini (@ditadipolvere08) `__ - `Johann V. (@divinitas) `__ - `dj-bauer (@dj-bauer) `__ - `Dominic Pearman (@djpearman) `__ @@ -720,6 +722,7 @@ Contributors - `Alex Griffith (@halomademeapc) `__ - `Aniket (@HandyHat) `__ - `Harrison Jones (@harrisonhjones) `__ +- `HarvsG (@HarvsG) `__ - `Charles Thompson (@haryadoon) `__ - `Ha Thach (@hathach) `__ - `Cong Hoang Nguyen (@HcNguyen111) `__ @@ -995,6 +998,7 @@ Contributors - `Kyle Manna (@kylemanna) `__ - `Kyle Hill (@kylhill) `__ - `Kalashnikov Ilya (@l1bbcsg) `__ +- `l3d00m (@l3d00m) `__ - `la7dja (@la7dja) `__ - `Limor "Ladyada" Fried (@ladyada) `__ - `Stefan Lässer (@Laess3r) `__ @@ -1920,4 +1924,4 @@ Contributors - `Christian Zufferey (@zuzu59) `__ - `Zynth-dev (@Zynth-dev) `__ -*This page was last updated July 25, 2024.* +*This page was last updated August 1, 2024.* From e85bcac26010657bf708d51f8bc4759f204318b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=2E=20=C3=81rkosi=20R=C3=B3bert?= Date: Thu, 1 Aug 2024 04:38:57 +0200 Subject: [PATCH 103/173] `remote_transmitter` documentation clarification and refactoring (#4080) * refactor remote_transmitter.rst - declutter the TOC by removing the undistinguishable actions - change `switch` in examples to `button` (at the time this doc was originally created `button` didn't exist yet) - move the **Setting up** guides above the actions list - remove the IRRemoteESP8266 seealso link as it's not currently supported in any way * fix test 1 * oops * Fix links * examples correction * Update remote_transmitter.rst * Update remote_transmitter.rst * Update remote_transmitter.rst --- components/remote_receiver.rst | 28 ++- components/remote_transmitter.rst | 348 ++++++------------------------ components/rf_bridge.rst | 2 + guides/setting_up_rmt_devices.rst | 192 +++++++++++++++++ index.rst | 1 - 5 files changed, 273 insertions(+), 298 deletions(-) create mode 100644 guides/setting_up_rmt_devices.rst diff --git a/components/remote_receiver.rst b/components/remote_receiver.rst index 20ef6b3245..490b635cce 100644 --- a/components/remote_receiver.rst +++ b/components/remote_receiver.rst @@ -32,7 +32,7 @@ Configuration variables: - **dump** (*Optional*, list): Decode and dump these remote codes in the logs (at log.level=DEBUG). Set to ``all`` to dump all available codecs: - - **abbwelcome**: Decode and dump ABB-Welcome codes. Messages are sent via copper wires. See :ref:`remote_transmitter-transmit_abbwelcome` + - **abbwelcome**: Decode and dump ABB-Welcome codes. Messages are sent via copper wires. See :ref:`transmitter description ` for more details. - **aeha**: Decode and dump AEHA infrared codes. - **byronsx**: Decode and dump Byron SX doorbell RF codes. - **canalsat**: Decode and dump CanalSat infrared codes. @@ -242,17 +242,14 @@ Configuration variables: Remote code selection (exactly one of these has to be included): -- **abbwelcome**: Trigger on a decoded ABB-Welcome code with the given data. +- **abbwelcome**: Trigger on a decoded ABB-Welcome code with the given data, see the :ref:`transmitter description ` for more info. - - **source_address** (**Required**, int): The source address to trigger on, see :ref:`remote_transmitter-transmit_abbwelcome` - for more info. - - **destination_address** (**Required**, int): The destination address to trigger on, see - :ref:`remote_transmitter-transmit_abbwelcome` for more info. + - **source_address** (**Required**, int): The source address to trigger on. + - **destination_address** (**Required**, int): The destination address to trigger on. - **three_byte_address** (**Optional**, boolean): The length of the source and destination address. ``false`` means two bytes and ``true`` means three bytes. Defaults to ``false``. - **retransmission** (**Optional**, boolean): ``true`` if the message was re-transmitted. Defaults to ``false``. - - **message_type** (**Required**, int): The message type to trigger on, see :ref:`remote_transmitter-transmit_abbwelcome` - for more info. + - **message_type** (**Required**, int): The message type to trigger on. - **message_id** (**Optional**, int): The random message ID to trigger on, see dumper output for more info. Defaults to any ID. - **data** (**Optional**, 0-7 bytes list): The code to listen for. Usually you only need to copy this directly from the dumper output. Defaults to ``[]`` @@ -260,7 +257,7 @@ Remote code selection (exactly one of these has to be included): - **aeha**: Trigger on a decoded AEHA remote code with the given data. - **address** (**Required**, int): The address to trigger on, see dumper output for more info. - - **data** (**Required**, 3-35 bytes list): The code to listen for, see :ref:`remote_transmitter-transmit_aeha` + - **data** (**Required**, 3-35 bytes list): The code to listen for, see :ref:`transmitter description ` for more info. Usually you only need to copy this directly from the dumper output. - **byronsx**: Trigger on a decoded Byron SX Doorbell RF remote code with the given data. @@ -317,7 +314,7 @@ Remote code selection (exactly one of these has to be included): - **haier**: Trigger on a Haier remote code with the given code. - - **code** (**Required**, 13-bytes list): The code to listen for, see :ref:`remote_transmitter-transmit_haier` + - **code** (**Required**, 13-bytes list): The code to listen for, see :ref:`transmitter description ` for more info. Usually you only need to copy this directly from the dumper output. - **lg**: Trigger on a decoded LG remote code with the given data. @@ -332,7 +329,7 @@ Remote code selection (exactly one of these has to be included): - **midea**: Trigger on a Midea remote code with the given code. - - **code** (**Required**, 5-bytes list): The code to listen for, see :ref:`remote_transmitter-transmit_midea` + - **code** (**Required**, 5-bytes list): The code to listen for, see :ref:`transmitter description ` for more info. Usually you only need to copy first 5 bytes directly from the dumper output. - **nec**: Trigger on a decoded NEC remote code with the given data. @@ -359,14 +356,14 @@ Remote code selection (exactly one of these has to be included): - **pronto**: Trigger on a Pronto remote code with the given code. - - **data** (**Required**, string): The code to listen for, see :ref:`remote_transmitter-transmit_raw` + - **data** (**Required**, string): The code to listen for, see :ref:`transmitter description ` for more info. Usually you only need to copy this directly from the dumper output. - **delta** (**Optional**, integer): This parameter allows you to manually specify the allowed difference between what Pronto code is specified, and what IR signal has been sent by the remote control. - **raw**: Trigger on a raw remote code with the given code. - - **code** (**Required**, list): The code to listen for, see :ref:`remote_transmitter-transmit_raw` + - **code** (**Required**, list): The code to listen for, see :ref:`transmitter description ` for more info. Usually you only need to copy this directly from the dumper output. - **rc5**: Trigger on a decoded RC5 remote code with the given data. @@ -440,7 +437,7 @@ Remote code selection (exactly one of these has to be included): - **mirage**: Trigger on a Mirage remote code with the given code. - - **code** (**Required**, 14-bytes list): The code to listen for, see :ref:`remote_transmitter-transmit_mirage` + - **code** (**Required**, 14-bytes list): The code to listen for, see :ref:`transmitter description ` for more info. Usually you only need to copy this directly from the dumper output. .. note:: @@ -495,8 +492,9 @@ See Also - :doc:`index` - :doc:`/components/remote_transmitter` +- :ref:`remote-setting-up-infrared` +- :ref:`remote-setting-up-rf` - :doc:`/components/rf_bridge` - `RCSwitch `__ by `Suat Özgür `__ -- `IRRemoteESP8266 `__ by `Mark Szabo-Simon `__ - :apiref:`remote/remote_receiver.h` - :ghedit:`Edit` diff --git a/components/remote_transmitter.rst b/components/remote_transmitter.rst index 1774a35d01..8f47bd2230 100644 --- a/components/remote_transmitter.rst +++ b/components/remote_transmitter.rst @@ -2,9 +2,9 @@ Remote Transmitter ================== .. seo:: - :description: Instructions for setting up switches that send out pre-defined sequences of IR or RF signals + :description: Instructions for setting up configurations that send out pre-defined sequences of IR or RF signals :image: remote.svg - :keywords: Infrared, IR, RF, Remote, TX + :keywords: Infrared, IR, RF, Remote, TX, 433, Blaster The ``remote_transmitter`` component lets you send digital packets to control devices in your home. For example this includes infrared data or 433MHz RF signals. @@ -71,8 +71,8 @@ Configuration variables: - **repeat** (*Optional*): Optionally set the code to be repeated a number of times. Defaults to sending the code only once. - - **times** (int): The number of times to repeat the code. - - **wait_time** (:ref:`config-time`): The time to wait between repeats. + - **times** (:ref:`templatable `, int): The number of times to repeat the code. + - **wait_time** (:ref:`templatable `, :ref:`config-time`): The time to wait between repeats (in µs as a result of a :ref:`lambda `). - **transmitter_id** (*Optional*, :ref:`config-id`): The remote transmitter to send the remote code with. Defaults to the first one defined in the configuration. @@ -82,8 +82,7 @@ Home Assistant, you'll want to set the **times** to 10 and the **wait_time** to .. _remote_transmitter-transmit_abbwelcome: -``remote_transmitter.transmit_abbwelcome`` Action -************************************************* +``remote_transmitter.transmit_abbwelcome`` **Action** This :ref:`action ` sends a ABB-Welcome message to the intercom bus. The message type, addresses, address length and data can vary a lot between ABB-Welcome @@ -123,6 +122,7 @@ Configuration variables: Defaults to a randomly generated ID if this message is not a reply or retransmission. - **data** (**Optional**, 0-7 bytes list): The code to send. Usually you only need to copy this directly from the dumper output. Defaults to ``[]`` +- All other options from :ref:`remote_transmitter-transmit_action`. .. note:: @@ -132,8 +132,7 @@ Configuration variables: .. _remote_transmitter-transmit_aeha: -``remote_transmitter.transmit_aeha`` Action -********************************************* +``remote_transmitter.transmit_aeha`` **Action** This :ref:`action ` sends a AEHA code to a remote transmitter. @@ -150,13 +149,13 @@ Configuration variables: - **data** (**Required**, list): The command to send, A length of 2-35 bytes can be specified for one packet. - **carrier_frequency** (*Optional*, float): Set a frequency to send the signal with for infrared signals. Defaults to ``38000Hz``. +- All other options from :ref:`remote_transmitter-transmit_action`. AEHA refers to the Association for Electric Home Appliances in Japan, a format used by Panasonic and many other companies. .. _remote_transmitter-transmit_byronsx: -``remote_transmitter.transmit_byronsx`` Action -********************************************** +``remote_transmitter.transmit_byronsx`` **Action** This :ref:`action ` sends a Byron Doorbell RF protocol code to a remote transmitter. @@ -171,10 +170,11 @@ Configuration variables: - **address** (**Required**, int): The 8-bit ID to send, see dumper output for more info. - **command** (**Required**, int): The command to send, see dumper output for more info. -- All other options from :ref:`remote_transmitter-transmit_action`... _remote_transmitter-transmit_canalsat: +- All other options from :ref:`remote_transmitter-transmit_action`. + +.. _remote_transmitter-transmit_canalsat: -``remote_transmitter.transmit_canalsat`` Action -*********************************************** +``remote_transmitter.transmit_canalsat`` **Action** This :ref:`action ` sends a CanalSat infrared remote code to a remote transmitter. @@ -200,8 +200,7 @@ Configuration variables: .. _remote_transmitter-transmit_canalsatld: -``remote_transmitter.transmit_canalsatld`` Action -************************************************* +``remote_transmitter.transmit_canalsatld`` **Action** This :ref:`action ` sends a CanalSatLD infrared remote code to a remote transmitter. @@ -227,8 +226,7 @@ Configuration variables: .. _remote_transmitter-transmit_coolix: -``remote_transmitter.transmit_coolix`` Action -********************************************* +``remote_transmitter.transmit_coolix`` **Action** This :ref:`action ` sends one or two (stricted or not) 24-bit Coolix infrared remote codes to a remote transmitter. @@ -243,11 +241,11 @@ Configuration variables: - **first** (**Required**, :ref:`templatable `, uint32_t): The first 24-bit Coolix code to send, see dumper output for more info. - **second** (*Optional*, :ref:`templatable `, uint32_t): The second 24-bit Coolix code to send, see dumper output for more info. +- All other options from :ref:`remote_transmitter-transmit_action`. .. _remote_transmitter-transmit_dish: -``remote_transmitter.transmit_dish`` Action -******************************************* +``remote_transmitter.transmit_dish`` **Action** This :ref:`action ` sends a Dish Network infrared remote code to a remote transmitter. @@ -268,8 +266,7 @@ You can find a list of commands in the `LIRC project ` sends a Dooya RF remote code to a remote transmitter. @@ -292,8 +289,7 @@ Configuration variables: .. _remote_transmitter-transmit_drayton: -``remote_transmitter.transmit_drayton`` Action -********************************************** +``remote_transmitter.transmit_drayton`` **Action** This :ref:`action ` sends a Draton Digistat RF remote code to a remote transmitter. @@ -314,8 +310,7 @@ Configuration variables: .. _remote_transmitter-transmit_jvc: -``remote_transmitter.transmit_jvc`` Action -****************************************** +``remote_transmitter.transmit_jvc`` **Action** This :ref:`action ` sends a JVC infrared remote code to a remote transmitter. @@ -328,11 +323,11 @@ This :ref:`action ` sends a JVC infrared remote code to a remote Configuration variables: - **data** (**Required**, int): The JVC code to send, see dumper output for more info. +- All other options from :ref:`remote_transmitter-transmit_action`. .. _remote_transmitter-transmit_keeloq: -``remote_transmitter.transmit_keeloq`` Action -********************************************** +``remote_transmitter.transmit_keeloq`` **Action** This :ref:`action ` sends KeeLoq RF remote code to a remote transmitter. @@ -358,8 +353,7 @@ Configuration variables: .. _remote_transmitter-transmit_haier: -``remote_transmitter.transmit_haier`` Action -******************************************** +``remote_transmitter.transmit_haier`` **Action** This :ref:`action ` sends a 104-bit Haier code to a remote transmitter. 8-bits of checksum added automatically. @@ -376,8 +370,7 @@ Configuration variables: .. _remote_transmitter-transmit_lg: -``remote_transmitter.transmit_lg`` Action -***************************************** +``remote_transmitter.transmit_lg`` **Action** This :ref:`action ` sends an LG infrared remote code to a remote transmitter. @@ -396,8 +389,7 @@ Configuration variables: .. _remote_transmitter-transmit_magiquest: -``remote_transmitter.transmit_magiquest`` Action -************************************************ +``remote_transmitter.transmit_magiquest`` **Action** This :ref:`action ` sends a MagiQuest wand code to a remote transmitter. @@ -416,8 +408,7 @@ Configuration variables: .. _remote_transmitter-transmit_midea: -``remote_transmitter.transmit_midea`` Action -******************************************** +``remote_transmitter.transmit_midea`` **Action** This :ref:`action ` sends a 40-bit Midea code to a remote transmitter. 8-bits of checksum added automatically. @@ -438,8 +429,7 @@ Configuration variables: - **code** (**Required**, list, :ref:`templatable `): The 40-bit Midea code to send as a list of hex or integers. - All other options from :ref:`remote_transmitter-transmit_action`. -``remote_transmitter.transmit_nec`` Action -****************************************** +``remote_transmitter.transmit_nec`` **Action** This :ref:`action ` sends an NEC infrared remote code to a remote transmitter. @@ -466,8 +456,7 @@ Configuration variables: - **command_repeats** (*Optional*, int): The number of times the command bytes are sent in one transmission. Defaults to `1`. - All other options from :ref:`remote_transmitter-transmit_action`. -``remote_transmitter.transmit_nexa`` Action -******************************************* +``remote_transmitter.transmit_nexa`` **Action** This :ref:`action ` a Nexa RF remote code to a remote transmitter. @@ -492,8 +481,7 @@ Configuration variables: .. _remote_transmitter-transmit_panasonic: -``remote_transmitter.transmit_panasonic`` Action -************************************************ +``remote_transmitter.transmit_panasonic`` **Action** This :ref:`action ` sends a Panasonic infrared remote code to a remote transmitter. @@ -512,8 +500,7 @@ Configuration variables: .. _remote_transmitter-transmit_pioneer: -``remote_transmitter.transmit_pioneer`` Action -********************************************** +``remote_transmitter.transmit_pioneer`` **Action** This :ref:`action ` sends a Pioneer infrared remote code to a remote transmitter. @@ -543,8 +530,7 @@ are largely shared among devices within a given class. .. _remote_transmitter-transmit_pronto: -``remote_transmitter.transmit_pronto`` Action -********************************************* +``remote_transmitter.transmit_pronto`` **Action** This :ref:`action ` sends a raw code to a remote transmitter specified in Pronto format. @@ -562,8 +548,7 @@ Configuration variables: .. _remote_transmitter-transmit_raw: -``remote_transmitter.transmit_raw`` Action -****************************************** +``remote_transmitter.transmit_raw`` **Action** This :ref:`action ` sends a raw code to a remote transmitter. @@ -590,8 +575,7 @@ Configuration variables: .. _remote_transmitter-transmit_rc5: -``remote_transmitter.transmit_rc5`` Action -****************************************** +``remote_transmitter.transmit_rc5`` **Action** This :ref:`action ` sends an RC5 infrared remote code to a remote transmitter. @@ -610,8 +594,7 @@ Configuration variables: .. _remote_transmitter-transmit_rc6: -``remote_transmitter.transmit_rc6`` Action -****************************************** +``remote_transmitter.transmit_rc6`` **Action** This :ref:`action ` sends an RC6 infrared remote code to a remote transmitter. @@ -630,8 +613,7 @@ Configuration variables: .. _remote_transmitter-transmit_rc_switch_raw: -``remote_transmitter.transmit_rc_switch_raw`` Action -**************************************************** +``remote_transmitter.transmit_rc_switch_raw`` **Action** This :ref:`action ` sends a raw RC-Switch code to a remote transmitter. @@ -650,28 +632,9 @@ Configuration variables: for more information. - All other options from :ref:`remote_transmitter-transmit_action`. -.. _remote_transmitter-rc_switch-protocol: - -RC Switch Protocol -^^^^^^^^^^^^^^^^^^ - -All RC Switch ``protocol`` settings have these settings: - -- Either the value is an integer, then the inbuilt protocol definition with the given number - is used. -- Or a key-value mapping is given, then there are these settings: - - - **pulse_length** (**Required**, int): The pulse length of the protocol - how many microseconds - one pulse should last for. - - **sync** (*Optional*): The number of high/low pulses for the sync header, defaults to ``[1, 31]`` - - **zero** (*Optional*): The number of high/low pulses for a zero bit, defaults to ``[1, 3]`` - - **one** (*Optional*): The number of high/low pulses for a one bit, defaults to ``[3, 1]`` - - **inverted** (*Optional*, boolean): If this protocol is inverted. Defaults to ``false``. - .. _remote_transmitter-transmit_rc_switch_type_a: -``remote_transmitter.transmit_rc_switch_type_a`` Action -******************************************************* +``remote_transmitter.transmit_rc_switch_type_a`` **Action** This :ref:`action ` sends a type A RC-Switch code to a remote transmitter. @@ -696,8 +659,7 @@ Configuration variables: .. _remote_transmitter-transmit_rc_switch_type_b: -``remote_transmitter.transmit_rc_switch_type_b`` Action -******************************************************* +``remote_transmitter.transmit_rc_switch_type_b`` **Action** This :ref:`action ` sends a type B RC-Switch code to a remote transmitter. @@ -722,8 +684,7 @@ Configuration variables: .. _remote_transmitter-transmit_rc_switch_type_c: -``remote_transmitter.transmit_rc_switch_type_c`` Action -******************************************************* +``remote_transmitter.transmit_rc_switch_type_c`` **Action** This :ref:`action ` sends a type C RC-Switch code to a remote transmitter. @@ -750,8 +711,7 @@ Configuration variables: .. _remote_transmitter-transmit_rc_switch_type_d: -``remote_transmitter.transmit_rc_switch_type_d`` Action -******************************************************* +``remote_transmitter.transmit_rc_switch_type_d`` **Action** This :ref:`action ` sends a type D RC-Switch code to a remote transmitter. @@ -776,8 +736,7 @@ Configuration variables: .. _remote_transmitter-transmit_roomba: -``remote_transmitter.transmit_roomba`` Action -********************************************* +``remote_transmitter.transmit_roomba`` **Action** This :ref:`action ` sends a Roomba infrared remote code to a remote transmitter. @@ -799,8 +758,7 @@ Configuration variables: .. _remote_transmitter-transmit_samsung: -``remote_transmitter.transmit_samsung`` Action -********************************************** +``remote_transmitter.transmit_samsung`` **Action** This :ref:`action ` sends a Samsung infrared remote code to a remote transmitter. It transmits codes up to 64 bits in length in a single packet. @@ -823,8 +781,7 @@ Configuration variables: .. _remote_transmitter-transmit_samsung36: -``remote_transmitter.transmit_samsung36`` Action -************************************************ +``remote_transmitter.transmit_samsung36`` **Action** This :ref:`action ` sends a Samsung36 infrared remote code to a remote transmitter. It transmits the ``address`` and ``command`` in two packets separated by a "space". @@ -844,8 +801,7 @@ Configuration variables: .. _remote_transmitter-transmit_sony: -``remote_transmitter.transmit_sony`` Action -******************************************* +``remote_transmitter.transmit_sony`` **Action** This :ref:`action ` a Sony infrared remote code to a remote transmitter. @@ -864,8 +820,7 @@ Configuration variables: .. _remote_transmitter-transmit_toshiba_ac: -``remote_transmitter.transmit_toshiba_ac`` Action -************************************************* +``remote_transmitter.transmit_toshiba_ac`` **Action** This :ref:`action ` sends a Toshiba AC infrared remote code to a remote transmitter. @@ -885,13 +840,11 @@ Configuration variables: - **rc_code_1** (**Required**, int): The remote control code to send, see dumper output for more details. - **rc_code_2** (*Optional*, int): The secondary remote control code to send; some codes are sent in two parts. - - All other options from :ref:`remote_transmitter-transmit_action`. .. _remote_transmitter-transmit_mirage: -``remote_transmitter.transmit_mirage`` Action -********************************************* +``remote_transmitter.transmit_mirage`` **Action** This :ref:`action ` sends a 112-bit Mirage code to a remote transmitter. 8-bits of checksum added automatically. @@ -906,6 +859,24 @@ Configuration variables: - **code** (**Required**, list): The 14 byte Mirage code to send. - All other options from :ref:`remote_transmitter-transmit_action`. +.. _remote_transmitter-rc_switch-protocol: + +RC Switch Protocol +****************** + +All RC Switch ``protocol`` settings have these settings: + +- Either the value is an integer, then the inbuilt protocol definition with the given number + is used. +- Or a key-value mapping is given, then there are these settings: + + - **pulse_length** (**Required**, int): The pulse length of the protocol - how many microseconds + one pulse should last for. + - **sync** (*Optional*): The number of high/low pulses for the sync header, defaults to ``[1, 31]`` + - **zero** (*Optional*): The number of high/low pulses for a zero bit, defaults to ``[1, 3]`` + - **one** (*Optional*): The number of high/low pulses for a one bit, defaults to ``[3, 1]`` + - **inverted** (*Optional*, boolean): If this protocol is inverted. Defaults to ``false``. + Lambda calls ************ @@ -924,202 +895,15 @@ See the full API Reference for more info. call.set_send_times(2); call.perform(); - -.. _remote-setting-up-infrared: - -Setting up Infrared Devices ---------------------------- - -In this guide an infrared device will be set up with ESPHome. First, the remote code -will be captured with an IR receiver module (like `this one `__). -We will use ESPHome's dumping ability to output the decoded remote code directly. - -Then we will set up a new remote transmitter with an infrared LED (like -`this one `__) to transmit the -code when a switch is triggered. - -First, connect the infrared receiver module to a pin on your board and set up a -remote_receiver instance: - -.. code-block:: yaml - - remote_receiver: - pin: GPIOXX - dump: all - -Compile and upload the code. While viewing the log output from the ESP, -press a button on an infrared remote you want to capture (one at a time). - -You should see log output like below: - -.. code-block:: text - - # If the codec is known: - [D][remote.panasonic] Received Panasonic: address=0x4004 command=0x8140DFA2 - - # Or raw output if it's not known yet - # The values may fluctuate a bit, but as long as they're similar it's ok - [D][remote.raw] Received Raw: 4088, -1542, 1019, -510, 513, -1019, 510, -509, 511, -510, 1020, - [D][remote.raw] -1020, 1022, -1019, 510, -509, 511, -510, 511, -509, 511, -510, - [D][remote.raw] 1020, -1019, 510, -511, 1020, -510, 512, -508, 510, -1020, 1022 - -If the codec is already implemented in ESPHome, you will see the decoded value directly - -otherwise you will see the raw data dump (which you can use just as well). You have -just successfully captured your first infrared code. - -Now let's use this information to emulate a button press from the ESP. First, wire up the -IR diode to a new pin on the ESP and configure a global ``remote_transmitter`` instance: - -.. code-block:: yaml - - remote_transmitter: - pin: GPIOXX - # Infrared remotes use a 50% carrier signal - carrier_duty_percent: 50% - -This will allow us to send any data we want via the IR LED. To replicate the codes we decoded -earlier, create a new template switch that sends the infrared code when triggered: - -.. code-block:: yaml - - switch: - - platform: template - name: Panasonic Power Button - turn_on_action: - - remote_transmitter.transmit_panasonic: - address: 0x4004 - command: 0x8140DFA2 - - # Or for raw code - switch: - - platform: template - name: Raw Code Power Button - turn_on_action: - - remote_transmitter.transmit_raw: - carrier_frequency: 38kHz - code: [4088, -1542, 1019, -510, 513, -1019, 510, -509, 511, -510, 1020, - -1020, 1022, -1019, 510, -509, 511, -510, 511, -509, 511, -510, - 1020, -1019, 510, -511, 1020, -510, 512, -508, 510, -1020, 1022] - -Recompile again, when you power up the device the next time you will see a new switch -in the frontend. Click on it and you should see the remote signal being transmitted. Done! - -.. _remote-setting-up-rf: - -Setting Up RF Devices ---------------------- - -The ``remote_transmitter`` and ``remote_receiver`` components can also be used to send -and receive 433MHz RF signals. This guide will discuss setting up a 433MHz receiver to -capture a device's remote codes. After that we will set up a 433MHz transmitter to replicate -the remote code with the press of a switch in the frontend. - -First, connect the RF module to a pin on the ESP and set up a remote_receiver instance: - -.. code-block:: yaml - - remote_receiver: - pin: GPIOXX - dump: all - # Settings to optimize recognition of RF devices - tolerance: 50% - filter: 250us - idle: 4ms - buffer_size: 2kb - -Compile and upload the code. While viewing the log output from the ESP, -press a button on an RF remote you want to capture (one at a time). - -You should see log output like below: - -.. code-block:: text - - # If the codec is known: - [D][remote.rc_switch] Received RCSwitch: protocol=2 data='100010000000000010111110' - - # Or raw output if it's not known yet - # The values may fluctuate a bit, but as long as they're similar it's ok - [D][remote.raw] Received Raw: 4088, -1542, 1019, -510, 513, -1019, 510, -509, 511, -510, 1020, - [D][remote.raw] -1020, 1022, -1019, 510, -509, 511, -510, 511, -509, 511, -510, - [D][remote.raw] 1020, -1019, 510, -511, 1020, -510, 512, -508, 510, -1020, 1022 - -.. note:: - - If the log output is flooded with "Received Raw" messages, you can also disable raw - remote code reporting and rely on rc_switch to decode the values. - - .. code-block:: yaml - - remote_receiver: - pin: GPIOXX - dump: - - rc_switch - tolerance: 50% - filter: 250us - idle: 4ms - buffer_size: 2kb - -If the codec is already implemented in ESPHome, you will see the decoded value directly - -otherwise you will see the raw data dump (which you can use just as well). You have -just successfully captured your first RF code. - -Now let's use this information to emulate a button press from the ESP. First, wire up the -RF transmitter to a new pin on the ESP and configure a global ``remote_transmitter`` instance: - -.. code-block:: yaml - - remote_transmitter: - pin: GPIOXX - # RF uses a 100% carrier signal - carrier_duty_percent: 100% - -This will allow us to send any data we want via the RF transmitter. To replicate the codes we decoded -earlier, create a new template switch that sends the RF code when triggered: - -.. code-block:: yaml - - switch: - - platform: template - name: RF Power Button - optimistic: true - turn_on_action: - - remote_transmitter.transmit_rc_switch_raw: - code: '100010000000000010111110' - protocol: 2 - repeat: - times: 10 - wait_time: 0s - - - # Or for raw code - switch: - - platform: template - name: Raw Code Power Button - turn_on_action: - - remote_transmitter.transmit_raw: - code: [4088, -1542, 1019, -510, 513, -1019, 510, -509, 511, -510, 1020, - -1020, 1022, -1019, 510, -509, 511, -510, 511, -509, 511, -510, - 1020, -1019, 510, -511, 1020, -510, 512, -508, 510, -1020, 1022] - -Recompile again, when you power up the device the next time you will see a new switch -in the frontend. Click on it and you should see the remote signal being transmitted. Done! - -.. note:: - - Some devices require that the transmitted code be repeated for the signal to be picked up - as valid. Also the interval between repetitions can be important. Check that the pace of - repetition logs are consistent between the remote controller and the transmitter node. - You can adjust the ``repeat:`` settings accordingly. - - - See Also -------- - :doc:`index` - :doc:`/components/remote_receiver` +- :ref:`remote-setting-up-infrared` +- :ref:`remote-setting-up-rf` +- :doc:`/components/rf_bridge` - :ref:`lambda_magic_rf_queues` - `RCSwitch `__ by `Suat Özgür `__ -- `IRRemoteESP8266 `__ by `Mark Szabo-Simon `__ - :apiref:`remote_transmitter/remote_transmitter.h` - :ghedit:`Edit` diff --git a/components/rf_bridge.rst b/components/rf_bridge.rst index 0ab8e3b73a..a9db79269b 100644 --- a/components/rf_bridge.rst +++ b/components/rf_bridge.rst @@ -21,6 +21,8 @@ which is 19200bps. :align: center :width: 60.0% + Sonoff RF Bridge 433, version R1 or R2 V1.0 + .. code-block:: yaml # Example configuration entry diff --git a/guides/setting_up_rmt_devices.rst b/guides/setting_up_rmt_devices.rst new file mode 100644 index 0000000000..9441614992 --- /dev/null +++ b/guides/setting_up_rmt_devices.rst @@ -0,0 +1,192 @@ +.. seo:: + :description: Set up guide for configuring IR and RF devices in ESPHome. + :image: remote.svg + +.. _remote-setting-up-infrared: + +Setting up IR Devices +===================== + +In this guide an infrared device will be set up with ESPHome. First, the remote code +will be captured with an IR receiver module (like `this one `__). +We will use ESPHome's dumping ability to output the decoded remote code directly. + +Then we will set up a new remote transmitter with an infrared LED (like +`this one `__) to transmit the +code when a button is pressed. + +First, connect the infrared receiver module to a pin on your board and set up a +remote_receiver instance: + +.. code-block:: yaml + + remote_receiver: + pin: GPIOXX + dump: all + +Compile and upload the code. While viewing the log output from the ESP, +press a button on an infrared remote you want to capture (one at a time). + +You should see log output like below: + +.. code-block:: text + + # If the codec is known: + [D][remote.panasonic] Received Panasonic: address=0x4004 command=0x8140DFA2 + + # Or raw output if it's not known yet + # The values may fluctuate a bit, but as long as they're similar it's ok + [D][remote.raw] Received Raw: 4088, -1542, 1019, -510, 513, -1019, 510, -509, 511, -510, 1020, + [D][remote.raw] -1020, 1022, -1019, 510, -509, 511, -510, 511, -509, 511, -510, + [D][remote.raw] 1020, -1019, 510, -511, 1020, -510, 512, -508, 510, -1020, 1022 + +If the codec is already implemented in ESPHome, you will see the decoded value directly - +otherwise you will see the raw data dump (which you can use just as well). You have +just successfully captured your first infrared code. + +Now let's use this information to emulate a button press from the ESP. First, wire up the +IR diode to a new pin on the ESP and configure a global ``remote_transmitter`` instance: + +.. code-block:: yaml + + remote_transmitter: + pin: GPIOXX + # Infrared remotes use a 50% carrier signal + carrier_duty_percent: 50% + +This will allow us to send any data we want via the IR LED. To replicate the codes we decoded +earlier, create a new template button that sends the infrared code when triggered: + +.. code-block:: yaml + + button: + - platform: template + name: Panasonic Power Button + on_press: + - remote_transmitter.transmit_panasonic: + address: 0x4004 + command: 0x8140DFA2 + + # Or for raw code + button: + - platform: template + name: Raw Code Power Button + on_press: + - remote_transmitter.transmit_raw: + carrier_frequency: 38kHz + code: [4088, -1542, 1019, -510, 513, -1019, 510, -509, 511, -510, 1020, + -1020, 1022, -1019, 510, -509, 511, -510, 511, -509, 511, -510, + 1020, -1019, 510, -511, 1020, -510, 512, -508, 510, -1020, 1022] + +Recompile again, when you power up the device the next time you will see a new button +in the frontend. Click on it and you should see the remote signal being transmitted. Done! + +.. _remote-setting-up-rf: + +Setting up RF Devices +===================== + +The ``remote_transmitter`` and ``remote_receiver`` components can also be used to send +and receive 433MHz Radio Frequency (RF) signals. This guide will discuss setting up a 433MHz +receiver to capture a device's remote codes. After that we will set up a 433MHz transmitter +to replicate the remote code with the press of a button in the frontend. + +First, connect the RF module to a pin on the ESP and set up a remote_receiver instance: + +.. code-block:: yaml + + remote_receiver: + pin: GPIOXX + dump: all + # Settings to optimize recognition of RF devices + tolerance: 50% + filter: 250us + idle: 4ms + buffer_size: 2kb # only for ESP8266 + +Compile and upload the code. While viewing the log output from the ESP, +press a button on an RF remote you want to capture (one at a time). + +You should see log output like below: + +.. code-block:: text + + # If the codec is known: + [D][remote.rc_switch] Received RCSwitch: protocol=2 data='100010000000000010111110' + + # Or raw output if it's not known yet + # The values may fluctuate a bit, but as long as they're similar it's ok + [D][remote.raw] Received Raw: 4088, -1542, 1019, -510, 513, -1019, 510, -509, 511, -510, 1020, + [D][remote.raw] -1020, 1022, -1019, 510, -509, 511, -510, 511, -509, 511, -510, + [D][remote.raw] 1020, -1019, 510, -511, 1020, -510, 512, -508, 510, -1020, 1022 + +.. note:: + + If the log output is flooded with "Received Raw" messages, you can also disable raw + remote code reporting and rely on rc_switch to decode the values. + + .. code-block:: yaml + + remote_receiver: + pin: GPIOXX + dump: + - rc_switch + ... + +If the codec is already implemented in ESPHome, you will see the decoded value directly - +otherwise you will see the raw data dump (which you can use just as well). You have +just successfully captured your first RF code. + +Now let's use this information to emulate a button press from the ESP. First, wire up the +RF transmitter to a new pin on the ESP and configure a global ``remote_transmitter`` instance: + +.. code-block:: yaml + + remote_transmitter: + pin: GPIOXX + # RF uses a 100% carrier signal + carrier_duty_percent: 100% + +This will allow us to send any data we want via the RF transmitter. To replicate the codes we decoded +earlier, create a new template button that sends the RF code when triggered: + +.. code-block:: yaml + + button: + - platform: template + name: RF Power Button + optimistic: true + on_press: + - remote_transmitter.transmit_rc_switch_raw: + code: '100010000000000010111110' + protocol: 2 + repeat: + times: 10 + wait_time: 0s + + + # Or for raw code + button: + - platform: template + name: Raw Code Power Button + on_press: + - remote_transmitter.transmit_raw: + code: [4088, -1542, 1019, -510, 513, -1019, 510, -509, 511, -510, 1020, + -1020, 1022, -1019, 510, -509, 511, -510, 511, -509, 511, -510, + 1020, -1019, 510, -511, 1020, -510, 512, -508, 510, -1020, 1022] + +Recompile again, when you power up the device the next time you will see a new button +in the frontend. Click on it and you should see the remote signal being transmitted. Done! + +.. note:: + + Some devices require that the transmitted code be repeated for the signal to be picked up + as valid. Also the interval between repetitions can be important. Check that the pace of + repetition logs are consistent between the remote controller and the transmitter node. + You can adjust the ``repeat:`` settings accordingly. + +See Also +-------- + +- :doc:`/components/remote_receiver` +- :doc:`/components/remote_transmitter` diff --git a/index.rst b/index.rst index 970ace46e9..3435d9268d 100644 --- a/index.rst +++ b/index.rst @@ -673,7 +673,6 @@ Miscellaneous PipSolar - compatible PV Inverter, components/pipsolar, pipsolar.jpg Pylontech Batteries, components/pylontech, pylontech.jpg Qwiic PIR Motion, components/binary_sensor/qwiic_pir, qwiic_pir.jpg - Remote Receiver, components/remote_receiver, remote.svg, dark-invert Resol VBus, components/vbus, resol_deltasol_bs_plus.jpg Tuya Binary Sensor, components/binary_sensor/tuya, tuya.png WireGuard, components/wireguard, wireguard_custom_logo.svg From aa041a93fae0ceb925cd69474c2c563b8a070ae3 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Thu, 1 Aug 2024 22:38:39 +1200 Subject: [PATCH 104/173] [api] Update ``service`` -> ``action`` (#4104) --- changelog/v1.12.0.rst | 2 +- components/api.rst | 69 ++++++++++++++--------------- components/ble_client.rst | 6 +-- components/dfplayer.rst | 38 ++++++++-------- components/display/nextion.rst | 10 ++--- components/fingerprint_grow.rst | 14 +++--- components/rf_bridge.rst | 8 ++-- components/rtttl.rst | 4 +- components/sensor/ld2410.rst | 8 ++-- components/sensor/mhz19.rst | 6 +-- components/sensor/pulse_counter.rst | 6 +-- components/sensor/pulse_meter.rst | 4 +- components/sensor/scd4x.rst | 10 ++--- components/sim800l.rst | 16 +++---- components/sprinkler.rst | 16 +++---- components/tm1651.rst | 6 +-- cookbook/infostrip.rst | 6 +-- cookbook/power_meter.rst | 6 +-- custom/custom_component.rst | 4 +- guides/configuration-types.rst | 6 +-- guides/index.rst | 1 + 21 files changed, 123 insertions(+), 123 deletions(-) diff --git a/changelog/v1.12.0.rst b/changelog/v1.12.0.rst index 67a2059dea..5ebdc124a5 100644 --- a/changelog/v1.12.0.rst +++ b/changelog/v1.12.0.rst @@ -23,7 +23,7 @@ It's release day! 🎉 Today I'm happy to release ESPHome 1.12.0. What's new? A stuff got added! Let me walk you through it: Before 1.12, it was only possible to transfer data from ESPHome to Home Assistant (with the -``homeassistant.service`` call). With 1.12 you get :ref:`User-defined services `, +``homeassistant.service`` call). With 1.12 you get :ref:`User-defined services `, just define a service in your ESPHome file and call it like any other service from HA. All the rest (like variables, data validation, etc) are handled automatically! diff --git a/components/api.rst b/components/api.rst index 96d819ee6e..398c46b146 100644 --- a/components/api.rst +++ b/components/api.rst @@ -60,7 +60,7 @@ Configuration variables: document.getElementById("api-key").value = bytesArrToBase64(array); -- **services** (*Optional*, list): A list of user-defined services. See :ref:`api-services`. +- **actions** (*Optional*, list): A list of user-defined actions. See :ref:`api-device-actions`. - **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. @@ -79,7 +79,7 @@ Actions ------- Before using any of the actions below, you'll need to tell Home Assistant to allow your device to -make service calls. +perform actions. Open the ESPHome integration page on your Home Assistant instance: @@ -91,7 +91,7 @@ Then: #. Find your device in the device list #. Click the "configure" button next to it -#. Check the "Allow the device to make Home Assistant service calls" box +#. Check the "Allow the device to perform Home Assistant actions" box #. Then click "submit". .. _api-homeassistant_event_action: @@ -102,7 +102,7 @@ Then: .. note:: Be sure to :ref:`follow the instructions above ` to tell Home Assistant to allow - your device to make service calls. + your device to perform actions. When using the native API with Home Assistant, you can create events in the Home Assistant event bus straight from ESPHome :ref:`Automations `. @@ -127,31 +127,30 @@ Configuration variables: - **variables** (*Optional*, mapping): Optional variables that can be used in the ``data_template``. Values are :ref:`lambdas ` and will be evaluated before sending the request. -.. _api-homeassistant_service_action: +.. _api-homeassistant_action-action: -``homeassistant.service`` Action +``homeassistant.action`` Action ******************************** .. note:: Be sure to :ref:`follow the instructions above ` to tell Home Assistant to allow - your device to make service calls. + your device to perform actions. -When using the native API with Home Assistant, you can create Home Assistant service -calls straight from ESPHome :ref:`Automations `. +When using the native API with Home Assistant, you can perform Home Assistant actions straight from ESPHome :ref:`Automations `. .. code-block:: yaml # In some trigger on_...: # Simple - - homeassistant.service: - service: notify.html5 + - homeassistant.action: + action: notify.html5 data: message: Button was pressed # With templates and variables - - homeassistant.service: - service: notify.html5 + - homeassistant.action: + action: notify.html5 data: title: New Humidity data_template: @@ -163,10 +162,10 @@ calls straight from ESPHome :ref:`Automations `. Configuration variables: ```````````````````````` -- **service** (**Required**, string): The Home Assistant `Service `__ - to call. -- **data** (*Optional*, mapping): Optional *static* data to pass along with the service call. -- **data_template** (*Optional*, mapping): Optional template data to pass along with the service call. +- **action** (**Required**, string): The Home Assistant `Action `__ + to perform. +- **data** (*Optional*, mapping): Optional *static* data to perform the action with. +- **data_template** (*Optional*, mapping): Optional template data to perform the action with. This is evaluated on the Home Assistant side with Home Assistant's templating engine. - **variables** (*Optional*, mapping): Optional variables that can be used in the ``data_template``. Values are :ref:`lambdas ` and will be evaluated before sending the request. @@ -182,7 +181,7 @@ the parameters in plain format. set_light_rgb: alias: 'ESPHome RGB light set' sequence: - - service: light.turn_on + - action: light.turn_on data_template: entity_id: '{{ light_name }}' rgb_color: @@ -196,8 +195,8 @@ Then, in ESPHome: # In some trigger on_...: - - homeassistant.service: - service: script.set_light_rgb + - homeassistant.action: + action: script.set_light_rgb data: light_name: 'my_light' red: '255' @@ -212,7 +211,7 @@ Then, in ESPHome: .. note:: Be sure to :ref:`follow the instructions above ` to tell Home Assistant to allow - your device to make service calls. + your device to make action calls. When using the native API with Home Assistant, you can push tag_scanned to Home Assistant straight from ESPHome :ref:`Automations `. @@ -289,27 +288,27 @@ if logs are shown remotely. then: - logger.log: API is connected! -.. _api-services: +.. _api-device-actions: -User-defined Services ---------------------- +User-defined Actions +-------------------- -It is also possible to get data from Home Assistant to ESPHome with user-defined services. -When you declare services in your ESPHome YAML file, they will automatically show up in +It is also possible to get data from Home Assistant to ESPHome with user-defined actions. +When you declare actions in your ESPHome YAML file, they will automatically show up in Home Assistant and you can call them directly. .. code-block:: yaml # Example configuration entry api: - services: - - service: start_laundry + actions: + - action: start_laundry then: - switch.turn_on: relay - delay: 3h - switch.turn_off: relay -For example with the configuration seen above, after uploading you will see a service +For example with the configuration seen above, after uploading you will see an action called ``esphome.livingroom_start_laundry`` (livingroom is the node name) which you can then call. @@ -319,8 +318,8 @@ Additionally, you can also transmit data from Home Assistant to ESPHome with thi # Example configuration entry api: - services: - - service: start_effect + actions: + - action: start_effect variables: my_brightness: int my_effect: string @@ -331,18 +330,18 @@ Additionally, you can also transmit data from Home Assistant to ESPHome with thi effect: !lambda 'return my_effect;' Using the ``variables`` key you can tell ESPHome which variables to expect from Home Assistant. -For example the service seen above would be executed with something like this: +For example the action seen above would be executed with something like this: .. code-block:: yaml - # Example Home Assistant Service Call - service: esphome.livingroom_start_effect + # Example Home Assistant Action + action: esphome.livingroom_start_effect data_template: my_brightness: "{{ states.brightness.state }}" my_effect: "Rainbow" Then each variable you define in the ``variables`` section is accessible in the automation -triggered by the user-defined service through the name you gave it in the variables section +triggered by the user-defined action through the name you gave it in the variables section (note: this is a local variable, so do not wrap it in ``id(...)`` to access it). There are currently 4 types of variables: diff --git a/components/ble_client.rst b/components/ble_client.rst index 4198f3b549..06f08c193c 100644 --- a/components/ble_client.rst +++ b/components/ble_client.rst @@ -459,8 +459,8 @@ Secure connection with a dynamically generated passkey: .. code-block:: yaml api: - services: - - service: passkey_reply + actions: + - action: passkey_reply variables: passkey: int then: @@ -468,7 +468,7 @@ Secure connection with a dynamically generated passkey: - ble_client.passkey_reply: id: my_ble_client passkey: !lambda return passkey; - - service: numeric_comparison_reply + - action: numeric_comparison_reply variables: accept: bool then: diff --git a/components/dfplayer.rst b/components/dfplayer.rst index 672cc46157..512559c1e7 100644 --- a/components/dfplayer.rst +++ b/components/dfplayer.rst @@ -345,19 +345,19 @@ Sample code logger.log: 'Playback finished event' api: - services: - - service: dfplayer_next + actions: + - action: dfplayer_next then: - dfplayer.play_next: - - service: dfplayer_previous + - action: dfplayer_previous then: - dfplayer.play_previous: - - service: dfplayer_play + - action: dfplayer_play variables: file: int then: - dfplayer.play: !lambda 'return file;' - - service: dfplayer_play_loop + - action: dfplayer_play_loop variables: file: int loop_: bool @@ -365,7 +365,7 @@ Sample code - dfplayer.play: file: !lambda 'return file;' loop: !lambda 'return loop_;' - - service: dfplayer_play_folder + - action: dfplayer_play_folder variables: folder: int file: int @@ -374,7 +374,7 @@ Sample code folder: !lambda 'return folder;' file: !lambda 'return file;' - - service: dfplayer_play_loop_folder + - action: dfplayer_play_loop_folder variables: folder: int then: @@ -382,54 +382,54 @@ Sample code folder: !lambda 'return folder;' loop: true - - service: dfplayer_set_device_tf + - action: dfplayer_set_device_tf then: - dfplayer.set_device: TF_CARD - - service: dfplayer_set_device_usb + - action: dfplayer_set_device_usb then: - dfplayer.set_device: USB - - service: dfplayer_set_volume + - action: dfplayer_set_volume variables: volume: int then: - dfplayer.set_volume: !lambda 'return volume;' - - service: dfplayer_set_eq + - action: dfplayer_set_eq variables: preset: int then: - dfplayer.set_eq: !lambda 'return static_cast(preset);' - - service: dfplayer_sleep + - action: dfplayer_sleep then: - dfplayer.sleep - - service: dfplayer_reset + - action: dfplayer_reset then: - dfplayer.reset - - service: dfplayer_start + - action: dfplayer_start then: - dfplayer.start - - service: dfplayer_pause + - action: dfplayer_pause then: - dfplayer.pause - - service: dfplayer_stop + - action: dfplayer_stop then: - dfplayer.stop - - service: dfplayer_random + - action: dfplayer_random then: - dfplayer.random - - service: dfplayer_volume_up + - action: dfplayer_volume_up then: - dfplayer.volume_up - - service: dfplayer_volume_down + - action: dfplayer_volume_down then: - dfplayer.volume_down diff --git a/components/display/nextion.rst b/components/display/nextion.rst index 09d8a85f92..d551f6c9f5 100644 --- a/components/display/nextion.rst +++ b/components/display/nextion.rst @@ -115,8 +115,8 @@ The developer tools in Home Assistant can be used to trigger the update. The bel .. code-block:: yaml api: - services: - - service: update_nextion + actions: + - action: update_nextion then: - lambda: 'id(nextion1)->upload_tft();' @@ -151,8 +151,8 @@ The developer tools in Home Assistant can be used to trigger the update. The bel # Enable Home Assistant API api: - services: - - service: set_nextion_sensor + actions: + - action: set_nextion_sensor variables: nextion_type: int name: string @@ -160,7 +160,7 @@ The developer tools in Home Assistant can be used to trigger the update. The bel then: - lambda: |- id(nextion1).set_nextion_sensor_state(nextion_type,name,state); - - service: set_nextion_text + - action: set_nextion_text variables: name: string state: string diff --git a/components/fingerprint_grow.rst b/components/fingerprint_grow.rst index cdba660740..453a6dd511 100644 --- a/components/fingerprint_grow.rst +++ b/components/fingerprint_grow.rst @@ -475,8 +475,8 @@ All actions Test setup ---------- -With the following code you can quickly setup a node and use Home Assistant's service in the developer tools. -E.g. for calling ``fingerprint_grow.enroll`` select the service ``esphome.test_node_enroll`` and in service data enter +With the following code you can quickly setup a node and use Home Assistant's action in the developer tools. +E.g. for calling ``fingerprint_grow.enroll`` select the action ``esphome.test_node_enroll`` and in action data enter .. code-block:: json @@ -527,8 +527,8 @@ Sample code finger_id: !lambda 'return finger_id;' api: - services: - - service: enroll + actions: + - action: enroll variables: finger_id: int num_scans: int @@ -536,16 +536,16 @@ Sample code - fingerprint_grow.enroll: finger_id: !lambda 'return finger_id;' num_scans: !lambda 'return num_scans;' - - service: cancel_enroll + - action: cancel_enroll then: - fingerprint_grow.cancel_enroll: - - service: delete + - action: delete variables: finger_id: int then: - fingerprint_grow.delete: finger_id: !lambda 'return finger_id;' - - service: delete_all + - action: delete_all then: - fingerprint_grow.delete_all: diff --git a/components/rf_bridge.rst b/components/rf_bridge.rst index 0ab8e3b73a..6aa4bc6e17 100644 --- a/components/rf_bridge.rst +++ b/components/rf_bridge.rst @@ -345,8 +345,8 @@ Home Assistant as events and will also setup a service so you can send codes wit .. code-block:: yaml api: - services: - - service: send_rf_code + actions: + - action: send_rf_code variables: sync: int low: int @@ -358,7 +358,7 @@ Home Assistant as events and will also setup a service so you can send codes wit low: !lambda 'return low;' high: !lambda 'return high;' code: !lambda 'return code;' - - service: learn + - action: learn then: - rf_bridge.learn @@ -391,7 +391,7 @@ To trigger the automation from Home Assistant you can invoke the service with th automation: # ... action: - - service: esphome.rf_bridge_send_rf_code + - action: esphome.rf_bridge_send_rf_code data: sync: 0x700 low: 0x800 diff --git a/components/rtttl.rst b/components/rtttl.rst index b502a649e0..dd0872e17e 100644 --- a/components/rtttl.rst +++ b/components/rtttl.rst @@ -174,8 +174,8 @@ Sample code - logger.log: 'Song ended!' api: - services: - - service: play_rtttl + actions: + - action: play_rtttl variables: song_str: string then: diff --git a/components/sensor/ld2410.rst b/components/sensor/ld2410.rst index acc4b48231..1f897b69e6 100644 --- a/components/sensor/ld2410.rst +++ b/components/sensor/ld2410.rst @@ -156,7 +156,7 @@ Configuration variables: - **detection_distance** (*Optional*, int): Distance in cm of target. All options from :ref:`Sensor `. - **gX** (*Optional*): Energies for the Xth gate (X => 0 to 8). - + - **move_energy** (*Optional*, int): When in :ref:`engineering mode`, the move energy of the gate, otherwise ``unknown``. Value between ``0`` and ``100`` inclusive. All options from :ref:`Sensor `. @@ -276,7 +276,7 @@ Configuration variables: Value between ``2`` and ``8`` inclusive. Defaults to ``8``. All options from :ref:`Number `. - **gX** (*Optional*): Thresholds for the Xth gate (X => 0 to 8). - + - **move_threshold** (**Required**, int): Threshold for the gate for motion detection. Above this level for the considered gate (distance), movement detection will be triggered. Value between ``0`` and ``100`` inclusive. See default values below. @@ -435,8 +435,8 @@ To change the password from HA you can use the following example config: id: my_ld2410 api: - services: - - service: set_ld2410_bluetooth_password + actions: + - action: set_ld2410_bluetooth_password variables: password: string then: diff --git a/components/sensor/mhz19.rst b/components/sensor/mhz19.rst index 0d3c8f3138..a62065672c 100644 --- a/components/sensor/mhz19.rst +++ b/components/sensor/mhz19.rst @@ -82,13 +82,13 @@ for over 20 minutes and you execute this function. then: - mhz19.calibrate_zero: my_mhz19_id -You can provide :ref:`service ` to call it from Home Assistant +You can provide an :ref:`action ` to perform from Home Assistant .. code-block:: yaml api: - services: - - service: mhz19_calibrate_zero + actions: + - action: mhz19_calibrate_zero then: - mhz19.calibrate_zero: my_mhz19_id diff --git a/components/sensor/pulse_counter.rst b/components/sensor/pulse_counter.rst index 9486bd4dee..8eecc593be 100644 --- a/components/sensor/pulse_counter.rst +++ b/components/sensor/pulse_counter.rst @@ -111,10 +111,10 @@ trying to match. .. code-block:: yaml - # Set pulse counter total from home assistant using this service call: + # Set pulse counter total from home assistant using this action: api: - services: - - service: set_pulse_total + actions: + - action: set_pulse_total variables: new_pulse_total: int then: diff --git a/components/sensor/pulse_meter.rst b/components/sensor/pulse_meter.rst index 785f299c54..4c060a4536 100644 --- a/components/sensor/pulse_meter.rst +++ b/components/sensor/pulse_meter.rst @@ -91,8 +91,8 @@ trying to match. .. code-block:: yaml api: - services: - - service: set_total + actions: + - action: set_total variables: new_total: int then: diff --git a/components/sensor/scd4x.rst b/components/sensor/scd4x.rst index f2d32ecaf7..a43eab724b 100644 --- a/components/sensor/scd4x.rst +++ b/components/sensor/scd4x.rst @@ -105,13 +105,13 @@ As of April 2022 the average fresh air Co² concentration is 419 ppm. value: 419 # outside average April 2022 id: my_scd41 -value can also be a template, for example to define a Home Assistant calibration service: +value can also be a template, for example to define a Home Assistant calibration action: .. code-block:: yaml api: - services: - - service: calibrate_co2_value + actions: + - action: calibrate_co2_value variables: co2_ppm: int then: @@ -166,8 +166,8 @@ This example creates a service `set_ambient_pressure` that can be called from Ho .. code-block:: yaml api: - services: - - service: set_ambient_pressure + actions: + - action: set_ambient_pressure variables: pressure_mbar: int then: diff --git a/components/sim800l.rst b/components/sim800l.rst index 1f993dc372..273bea533d 100644 --- a/components/sim800l.rst +++ b/components/sim800l.rst @@ -249,8 +249,8 @@ on Home Assistant and will also setup a service so you can send messages and dia .. code-block:: yaml api: - services: - - service: send_sms + actions: + - action: send_sms variables: recipient: string message: string @@ -258,19 +258,19 @@ on Home Assistant and will also setup a service so you can send messages and dia - sim800l.send_sms: recipient: !lambda 'return recipient;' message: !lambda 'return message;' - - service: dial + - action: dial variables: recipient: string then: - sim800l.dial: recipient: !lambda 'return recipient;' - - service: connect + - action: connect then: - sim800l.connect - - service: disconnect + - action: disconnect then: - sim800l.disconnect - - service: send_ussd + - action: send_ussd variables: ussdCode: string then: @@ -324,11 +324,11 @@ To trigger the automation from Home Assistant you can invoke the service with th automation: # ... action: - - service: esphome.livingroom_send_sms + - action: esphome.livingroom_send_sms data: recipient: "+15551234567" message: "Hello World!" - - service: esphome.livingroom_dial + - action: esphome.livingroom_dial data: recipient: "+15551234567" diff --git a/components/sprinkler.rst b/components/sprinkler.rst index 0221411f93..7e9d1706da 100644 --- a/components/sprinkler.rst +++ b/components/sprinkler.rst @@ -1087,38 +1087,38 @@ memory use. Expose Sprinkler Controller Actions via user-API ************************************************ -This configuration snippet illustrates how user-defined ESPHome API services may be used to expose +This configuration snippet illustrates how user-defined ESPHome API actions may be used to expose various sprinkler controller actions to the front end. This could be useful to change settings and/or trigger sprinkler controller actions using automations. .. code-block:: yaml api: - services: - - service: set_multiplier + actions: + - action: set_multiplier variables: multiplier: float then: - sprinkler.set_multiplier: id: lawn_sprinkler_ctrlr multiplier: !lambda 'return multiplier;' - - service: start_full_cycle + - action: start_full_cycle then: - sprinkler.start_full_cycle: lawn_sprinkler_ctrlr - - service: start_single_valve + - action: start_single_valve variables: valve: int then: - sprinkler.start_single_valve: id: lawn_sprinkler_ctrlr valve_number: !lambda 'return valve;' - - service: next_valve + - action: next_valve then: - sprinkler.next_valve: lawn_sprinkler_ctrlr - - service: previous_valve + - action: previous_valve then: - sprinkler.previous_valve: lawn_sprinkler_ctrlr - - service: shutdown + - action: shutdown then: - sprinkler.shutdown: lawn_sprinkler_ctrlr diff --git a/components/tm1651.rst b/components/tm1651.rst index 51dc85144c..c439e348e3 100644 --- a/components/tm1651.rst +++ b/components/tm1651.rst @@ -133,14 +133,14 @@ You also can control this component with lambda expressions .. code-block:: yaml api: - services: - - service: battery_level + actions: + - action: battery_level variables: level: int then: - lambda: |- id(tm1651_battery).set_level(level); - - service: battery_brightness + - action: battery_brightness variables: brightness: int then: diff --git a/cookbook/infostrip.rst b/cookbook/infostrip.rst index e20060aa8a..c0bf5e80cd 100644 --- a/cookbook/infostrip.rst +++ b/cookbook/infostrip.rst @@ -111,7 +111,7 @@ The automation to show the CO2 warning light (e.g. red if CO2 > 1000 ppm) is don above: 1000 condition: [] action: - - service: light.turn_on + - action: light.turn_on data: color_name: red entity_id: light.pl2 @@ -125,7 +125,7 @@ The automation to show the CO2 warning light (e.g. red if CO2 > 1000 ppm) is don below: 800 condition: [] action: - - service: light.turn_off + - action: light.turn_off entity_id: light.pl2 mode: single - alias: "State Light Mapping" @@ -134,7 +134,7 @@ The automation to show the CO2 warning light (e.g. red if CO2 > 1000 ppm) is don # You can also match on interval. This will match every 5 minutes minutes: "/5" action: - - service: light.turn_on + - action: light.turn_on data_template: entity_id: light.pl1 brightness_pct: 30 diff --git a/cookbook/power_meter.rst b/cookbook/power_meter.rst index 0411666e2c..9e9205d47f 100644 --- a/cookbook/power_meter.rst +++ b/cookbook/power_meter.rst @@ -108,8 +108,8 @@ Using this action, you are able to reset/set the total pulse count. This can be .. code-block:: yaml api: - services: - - service: set_total + actions: + - action: set_total variables: new_total: int then: @@ -137,7 +137,7 @@ Additionally you can also calculate the total daily energy generated, for which filters: # Multiplication factor from W to kW is 0.001 - multiply: 0.001 - + time: - platform: homeassistant id: homeassistant_time diff --git a/custom/custom_component.rst b/custom/custom_component.rst index 72e23baf94..a87dcb1040 100644 --- a/custom/custom_component.rst +++ b/custom/custom_component.rst @@ -86,8 +86,8 @@ Native API Custom Component --------------------------- If you want to communicate directly with Home Assistant via the :doc:`native API ` -you can use the :apiclass:`api::CustomAPIDevice` class to declare services that can be executed from -Home Assistant, as well as starting services in Home Assistant. +you can use the :apiclass:`api::CustomAPIDevice` class to declare actions that can be performed from +Home Assistant, as well as performing actions in Home Assistant. .. code-block:: cpp diff --git a/guides/configuration-types.rst b/guides/configuration-types.rst index c50fef15d3..4b39a4b3e9 100644 --- a/guides/configuration-types.rst +++ b/guides/configuration-types.rst @@ -358,7 +358,7 @@ Consider the following example where the author put common pieces of configurati I²C into base files and extends it with some device specific configurations in the main config. Note how the piece of configuration describing ``api`` component in ``device_base.yaml`` gets -merged with the services definitions from main config file. +merged with the actions definitions from main config file. .. code-block:: yaml @@ -372,8 +372,8 @@ merged with the services definitions from main config file. device_base: !include common/device_base.yaml api: - services: - - service: start_laundry + actions: + - action: start_laundry then: - switch.turn_on: relay - delay: 3h diff --git a/guides/index.rst b/guides/index.rst index 1dd6ba9d76..e51c0fd51f 100644 --- a/guides/index.rst +++ b/guides/index.rst @@ -3,5 +3,6 @@ Guides .. toctree:: :glob: + :maxdepth: 1 * From 9d1692a663d27c1722151b96c769124b8cd4788c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Ebbinghaus?= Date: Fri, 2 Aug 2024 01:59:08 +0200 Subject: [PATCH 105/173] Add docs for `round_to_multiple_of` filter (#4085) --- components/sensor/index.rst | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/components/sensor/index.rst b/components/sensor/index.rst index 4d5ca3b605..177b952852 100644 --- a/components/sensor/index.rst +++ b/components/sensor/index.rst @@ -296,6 +296,27 @@ Rounds the value to the given decimal places. - round: 1 # will round to 1 decimal place + +``round_to_multiple_of`` +************************ + +Rounds the value to the nearest multiple. Takes a float greater than zero. + +.. code-block:: yaml + + - platform: ... + filters: + - round_to_multiple_of: 10 + # 123 -> 120 + # 126 -> 130 + + - platform: ... + filters: + - round_to_multiple_of: 0.25 + # 3.1415 -> 3.25 + # 1.6180 -> 1.5 + + ``quantile`` ************ From 308918d0b7151ecbf2f884577c805616c04cdd7e Mon Sep 17 00:00:00 2001 From: myhomeiot <70070601+myhomeiot@users.noreply.github.com> Date: Mon, 5 Aug 2024 17:36:12 +0300 Subject: [PATCH 106/173] Fix 11db attenuation (#4068) https://github.com/esphome/esphome/pull/6749 --- components/display/inkplate6.rst | 2 +- components/sensor/adc.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/components/display/inkplate6.rst b/components/display/inkplate6.rst index 0ef6d520d2..5d1b7741ab 100644 --- a/components/display/inkplate6.rst +++ b/components/display/inkplate6.rst @@ -180,7 +180,7 @@ Wi-Fi, API, and OTA configuration. - platform: adc id: battery_voltage update_interval: never - attenuation: 11db + attenuation: 12db pin: 35 - platform: template name: "Inkplate Battery Voltage" diff --git a/components/sensor/adc.rst b/components/sensor/adc.rst index a95c690e16..d5fe6c2efa 100644 --- a/components/sensor/adc.rst +++ b/components/sensor/adc.rst @@ -63,7 +63,7 @@ ESP32 Attenuation ----------------- On the ESP32 the voltage measured with the ADC caps out at ~1.1V by default as the sensing range (attenuation of the ADC) is set to ``0db`` by default. -Measuring higher voltages requires setting ``attenuation`` to one of the following values: ``0db``, ``2.5db``, ``6db``, ``11db``. +Measuring higher voltages requires setting ``attenuation`` to one of the following values: ``0db``, ``2.5db``, ``6db``, ``12db``. There's more information `at the manufacturer's website `__. To simplify this, we provide the setting ``attenuation: auto`` for an automatic/seamless transition among scales. `Our implementation From 8620a20f836086a5eef48d27d641074af5627a8e Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Tue, 6 Aug 2024 07:18:43 +1200 Subject: [PATCH 107/173] Update esp32 board link to current version used (#4109) --- components/esp32.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/esp32.rst b/components/esp32.rst index da12e7bebd..e714b21de8 100644 --- a/components/esp32.rst +++ b/components/esp32.rst @@ -18,7 +18,7 @@ Configuration variables: - **board** (**Required**, string): The PlatformIO board ID that should be used. Choose the appropriate board from - `this list `__ (the icon next to the name + `this list `__ (the icon next to the name can be used to copy the board ID). *This only affects pin aliases, flash size and some internal settings*, if unsure choose a generic board from Espressif such as ``esp32dev``. - **framework** (*Optional*): Options for the underlying framework used by ESPHome. From c049dfef3765eb7de0029b8c8fc3b772c5e09316 Mon Sep 17 00:00:00 2001 From: Nate Clark Date: Mon, 5 Aug 2024 23:53:56 -0400 Subject: [PATCH 108/173] MQTT enabled Alarm Control Panel (#4107) --- components/alarm_control_panel/index.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/components/alarm_control_panel/index.rst b/components/alarm_control_panel/index.rst index da0e8d8a86..a895863224 100644 --- a/components/alarm_control_panel/index.rst +++ b/components/alarm_control_panel/index.rst @@ -49,6 +49,7 @@ Configuration variables: - **on_chime** (*Optional*, :ref:`Action `): An automation to perform when a zone has been marked as chime in the configuration, and it changes from closed to open. See :ref:`alarm_control_panel_on_chime_trigger`. +- If MQTT enabled, all other options from :ref:`MQTT Component `. - If Webserver enabled, ``web_server_sorting_weight`` can be set. See :ref:`Webserver Entity Sorting `. From 6c4e581ec344da5c0407b99bd64d587502a3d843 Mon Sep 17 00:00:00 2001 From: Keith Burzinski Date: Mon, 5 Aug 2024 23:43:32 -0500 Subject: [PATCH 109/173] Break out packages + substitutions docs (#4095) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Co-authored-by: H. Árkosi Róbert --- changelog/v1.10.0.rst | 2 +- components/index.rst | 2 + components/packages/index.rst | 203 ++++++++++++++ components/substitutions/index.rst | 162 +++++++++++ guides/configuration-types.rst | 417 ----------------------------- guides/faq.rst | 4 +- index.rst | 11 + 7 files changed, 381 insertions(+), 420 deletions(-) create mode 100644 components/packages/index.rst create mode 100644 components/substitutions/index.rst diff --git a/changelog/v1.10.0.rst b/changelog/v1.10.0.rst index 66bdd66904..b31f917101 100644 --- a/changelog/v1.10.0.rst +++ b/changelog/v1.10.0.rst @@ -134,7 +134,7 @@ Other notable changes: (:ref:`wifi-networks`) - GPIO Switches have a new option ``restore_mode`` to configure how their values should be restored on boot. (:doc:`/components/switch/gpio`) -- Added :ref:`substitutions ` to reduce repeating across configs. +- Added :doc:`/components/substitutions/index` to reduce repeating across configs. - Validation error messages are now displayed even better. Now all errors are shown with the exact context where the error appeared. Try it, it's so much better. Next step will be to upgrade to a better YAML reader to provide better error messages when the YAML syntax is invalid. diff --git a/components/index.rst b/components/index.rst index f937b80a23..fb1f9a27a1 100644 --- a/components/index.rst +++ b/components/index.rst @@ -34,4 +34,6 @@ Components text/index update/index valve/index + packages/index + substitutions/index * diff --git a/components/packages/index.rst b/components/packages/index.rst new file mode 100644 index 0000000000..1973730aad --- /dev/null +++ b/components/packages/index.rst @@ -0,0 +1,203 @@ +Packages +======== + +.. seo:: + :description: How to use packages in ESPHome + :image: settings.svg + +When you have many ESPHome devices (or are producing and distributing them at scale), a common need tends to surface: +configuration modularization. You'll likely want to break your configuration into common (groups of) elements, building +it into reusable pieces which can subsequently be used by many/all devices. Only unique pieces of your configuration +remain in any given device's YAML configuration file. + +This can be accomplished with ESPHome's ``packages`` feature. + +All definitions from packages will be merged with your device's main configuration in a non-destructive way. This +allows overriding (parts of) configuration contained in the package(s). Substitutions in your main configuration will +override substitutions with the same name in a package. + +Dictionaries are merged key-by-key. Lists of components are merged by component ID (if specified). Other lists are +merged by concatenation. All other configuration values are replaced with the later value. + +ESPHome uses ``!include`` to "bring in" packages; this is a syntax brought over from +`Home Assistant's YAML configuration directives `__. + +Local Packages +-------------- + +Consider the following example where the author put common pieces of configuration (like Wi-Fi and API) into base files +and then extends it with some device-specific configuration in the main configuration. + +Note how the piece of configuration describing ``api`` component in ``device_base.yaml`` gets merged with the services +definitions from main configuration file. + +.. code-block:: yaml + + # In config.yaml + packages: + wifi: !include common/wifi.yaml + device_base: !include common/device_base.yaml + + api: + services: + - service: start_laundry + then: + - switch.turn_on: relay + + # any additional configuration... + +.. code-block:: yaml + + # In wifi.yaml + wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password + +.. code-block:: yaml + + # In device_base.yaml + esphome: + name: ${node_name} + + esp32: + board: wemos_d1_mini32 + + logger: + + api: + encryption: + key: !secret api_encryption_key + +.. _config-git_packages: + +Remote/Git Packages +------------------- + +Packages can also be loaded from a Git repository by utilizing the correct configuration syntax. +:doc:`/components/substitutions/index` can be used inside the remote packages which allows users to override +them locally with their own substitution value. + +.. note:: + + Remote packages cannot have ``secret`` lookups in them. They should instead make use of substitutions with an + optional default in the packaged YAML, which the local device YAML can set using values from the local secrets. + +.. code-block:: yaml + + # Git repo examples + packages: + # shorthand form github://username/repository/[folder/]file-path.yml[@branch-or-tag] + remote_package_shorthand: github://esphome/non-existant-repo/file1.yml@main + + remote_package_files: + url: https://github.com/esphome/non-existant-repo + files: [file1.yml, file2.yml] # optional; if not specified, all files will be included + ref: main # optional + refresh: 1d # optional + +Configuration variables: +------------------------ + +For each package: + +- **url** (**Required**, string): The URL for the repository. +- **username** (*Optional*, string): Username to be used for authentication, if required. +- **password** (*Optional*, string): Password to be used for authentication, if required. +- **files** (**Required**, list of strings): List of files to include. +- **ref** (*Optional*, string): The Git ref(erence) to be used when pulling content from the repository. +- **refresh** (*Optional*, :ref:`config-time`): The interval at which the content from the repository should be refreshed. + +Packages as Templates +--------------------- + +Since packages are incorporated using the ``!include`` system, variables can be provided to them. This means that +packages can be used as *templates*, allowing complex or repetitive configurations to be stored in a package file +and then incorporated into the configuration more than once. + +Packages may also contain a ``defaults`` block which provides subsitutions for variables not provided by the +``!include`` block. + +As an example, if the configuration needed to support three garage doors using the ``gpio`` switch platform and the +``time_based`` cover platform, it could be constructed like this: + +.. code-block:: yaml + + # In config.yaml + packages: + left_garage_door: !include + file: garage-door.yaml + vars: + door_name: Left + vars: + door_name: Middle + vars: + door_name: Right + + +.. code-block:: yaml + + # In garage-door.yaml + switch: + - name: ${door_name} Garage Door Switch + platform: gpio + # ... + +Extend +------ + +To make changes or add additional configuration to included configurations, ``!extend config_id`` can be used, where +``config_id`` is the ID of the configuration to modify. + +For example, to set a specific update interval on a common uptime sensor that is shared between configurations: + +.. code-block:: yaml + + # In common.yaml + captive_portal: + + sensor: + - platform: uptime + id: uptime_sensor + update_interval: 1min + +.. code-block:: yaml + + packages: + common: !include common.yaml + + sensor: + - id: !extend uptime_sensor + update_interval: 10s + +Remove +------ + +To remove existing entries from included configurations, ``!remove [config_id]`` can be used, where ``config_id`` is +the ID of the entry to modify. + +For example, to remove a common uptime sensor that is shared between configurations: + +.. code-block:: yaml + + packages: + common: !include common.yaml # see above + + sensor: + - id: !remove uptime_sensor + +To remove captive portal for a specific device: + +.. code-block:: yaml + + packages: + common: !include common.yaml # see above + + captive_portal: !remove + +See Also +-------- + +- :doc:`ESPHome index ` +- :doc:`/guides/getting_started_command_line` +- :doc:`/guides/faq` +- :ghedit:`Edit` diff --git a/components/substitutions/index.rst b/components/substitutions/index.rst new file mode 100644 index 0000000000..ab83615eef --- /dev/null +++ b/components/substitutions/index.rst @@ -0,0 +1,162 @@ +Substitutions +============= + +.. seo:: + :description: How to use substitutions in ESPHome + :image: settings.svg + +ESPHome has a powerful way to reduce repetition in configuration files: substitutions. +With substitutions, you can have a single generic source file for all nodes of one kind and +substitute expressions in as required. + +.. code-block:: yaml + + substitutions: + bme280_temperature_offset: "-1.0" + + sensor: + - platform: bme280_i2c + temperature: + name: BME280 Temperature + filters: + - offset: ${bme280_temperature_offset} + + +In the top-level ``substitutions`` section, you can put as many key-value pairs as you want. Before +validating your configuration, ESPHome will automatically replace all occurrences of substitutions +by their value. The syntax for a substitution is based on bash and is case-sensitive: ``$substitution_key`` or +``${substitution_key}`` (same). + +Two substitution passes are performed allowing compound replacements. + +.. code-block:: yaml + + substitutions: + foo: yellow + bar_yellow_value: !secret yellow_secret + bar_green_value: !secret green_secret + + something: + test: ${bar_${foo}_value} + +.. _substitute-include-variables: + +Substitute !include variables +----------------------------- + +ESPHome's ``!include`` accepts a list of variables that can be substituted within the included file. + +.. code-block:: yaml + + binary_sensor: + - platform: gpio + id: button1 + pin: GPIOXX + on_multi_click: !include { file: on-multi-click.yaml, vars: { id: 1 } } # inline syntax + - platform: gpio + id: button2 + pin: GPIOXX + on_multi_click: !include + # multi-line syntax + file: on-multi-click.yaml + vars: + id: 2 + +``on-multi-click.yaml``: + +.. code-block:: yaml + + - timing: !include click-single.yaml + then: + - mqtt.publish: + topic: ${device_name}/button${id}/status + payload: single + - timing: !include click-double.yaml + then: + - mqtt.publish: + topic: ${device_name}/button${id}/status + payload: double + +.. _command-line-substitutions: + +Command line substitutions +-------------------------- + +You can define or override substitutions from the command line by adding the ``-s`` switch with arguments ``KEY`` and +``VALUE``. This will override the substitution ``KEY`` and assign it the value ``VALUE``. This switch can be included +multiple times. Consider the following ``example.yaml`` file: + +.. code-block:: yaml + + substitutions: + name: my_default_name + + esphome: + name: $name + +...and the following command: + +.. code-block:: bash + + esphome -s name my_device01 config example.yaml + +You will get something like the following output: + +.. code-block:: yaml + + substitutions: + name: my_device01 + + esphome: + name: my_device01 + # ... + +Command line substitutions take precedence over those in your configuration file. This can be used to create generic +"template" configuration files (like ``example.yaml`` above) which can be used by multiple devices, leveraging +substitutions which are provided on the command line. + +.. _YAML-insertion-operator: + +Bonus: YAML insertion operator +------------------------------ + +Additionally, you can use the YAML insertion operator ``<<`` syntax to create a single YAML file from which a number +of nodes inherit: + +.. code-block:: yaml + + # In common.yaml + esphome: + name: $devicename + # ... + + sensor: + - platform: dht + # ... + temperature: + name: Temperature + humidity: + name: Humidity + +.. code-block:: yaml + + # In nodemcu1.yaml + substitutions: + devicename: nodemcu1 + + <<: !include common.yaml + +.. tip:: + + To hide these base files from the dashboard, you can + + - Place them in a subdirectory (dashboard only shows files in top-level directory) + - Prepend a dot to the filename, like ``.base.yaml`` + +See Also +-------- + +- :doc:`ESPHome index ` +- :doc:`/guides/getting_started_command_line` +- :doc:`/guides/faq` +- :ghedit:`Edit` diff --git a/guides/configuration-types.rst b/guides/configuration-types.rst index c50fef15d3..23a9436681 100644 --- a/guides/configuration-types.rst +++ b/guides/configuration-types.rst @@ -163,423 +163,6 @@ There are several ways of doing this. See below examples to see how you can spec update_interval: never # never update update_interval: 0ms # update in every loop() iteration -.. _config-substitutions: - -Substitutions -------------- - -ESPHome has a powerful new way to reduce repetition in configuration files: Substitutions. -With substitutions, you can have a single generic source file for all nodes of one kind and -substitute expressions in. - -.. code-block:: yaml - - substitutions: - devicename: livingroom - upper_devicename: Livingroom - - esphome: - name: $devicename - # ... - - sensor: - - platform: dht - # ... - temperature: - name: ${upper_devicename} Temperature - humidity: - name: ${upper_devicename} Humidity - -In the top-level ``substitutions`` section, you can put as many key-value pairs as you want. Before -validating your configuration, ESPHome will automatically replace all occurrences of substitutions -by their value. The syntax for a substitution is based on bash and is case-sensitive: ``$substitution_key`` or -``${substitution_key}`` (same). - -Two substitution passes are performed allowing compound replacements. - -.. code-block:: yaml - - substitutions: - foo: yellow - bar_yellow_value: !secret yellow_secret - bar_green_value: !secret green_secret - - something: - test: ${bar_${foo}_value} - -.. _YAML-insertion-operator: - -YAML insertion operator -*********************** - -Additionally, you can use the YAML insertion operator ``<<`` syntax to create a single YAML file from which a number -of nodes inherit: - -.. code-block:: yaml - - # In common.yaml - esphome: - name: $devicename - # ... - - sensor: - - platform: dht - # ... - temperature: - name: ${upper_devicename} Temperature - humidity: - name: ${upper_devicename} Humidity - -.. code-block:: yaml - - # In nodemcu1.yaml - substitutions: - devicename: nodemcu1 - upper_devicename: NodeMCU 1 - - <<: !include common.yaml - -.. tip:: - - To hide these base files from the dashboard, you can - - - Place them in a subdirectory (dashboard only shows files in top-level directory) - - Prepend a dot to the filename, like ``.base.yaml`` - -.. _substitute-include-variables: - -Substitute !include variables -***************************** - -ESPHome's ``!include`` accepts a list of variables that can be substituted within the included file. - -.. code-block:: yaml - - binary_sensor: - - platform: gpio - id: button1 - pin: GPIOXX - on_multi_click: !include { file: on-multi-click.yaml, vars: { id: 1 } } # inline syntax - - platform: gpio - id: button2 - pin: GPIOXX - on_multi_click: !include - # multi-line syntax - file: on-multi-click.yaml - vars: - id: 2 - -``on-multi-click.yaml``: - -.. code-block:: yaml - - - timing: !include click-single.yaml - then: - - mqtt.publish: - topic: ${device_name}/button${id}/status - payload: single - - timing: !include click-double.yaml - then: - - mqtt.publish: - topic: ${device_name}/button${id}/status - payload: double - -.. _command-line-substitutions: - -Command line substitutions -************************** - -You can define or override substitutions from the command line by adding e.g. ``-s KEY VALUE`` -which overrides substitution KEY and gives it value VALUE. This can be issued multiple times, -so e.g. with the following ``example.yaml`` file: - -.. code-block:: yaml - - substitutions: - name: default - platform: ESP8266 - - esphome: - name: $name - platform: $platform - board: $board - -and the following command: - -.. code-block:: bash - - esphome -s name device01 -s board esp01_1m example.yaml config - -You will get something like the following output (please note the unchanged ``platform``, -added ``board``, and overridden ``name`` substitutions): - -.. code-block:: yaml - - substitutions: - name: device01 - platform: ESP8266 - board: esp01_1m - esphome: - name: device01 - platform: ESP8266 - board: esp01_1m - includes: [] - libraries: [] - esp8266_restore_from_flash: false - build_path: device01 - platformio_options: {} - arduino_version: espressif8266@2.2.3 - -We can observe here that command line substitutions take precedence over the ones in -your configuration file. This can be used to create generic 'template' configuration -files (like the ``example.yaml`` above) which can be used for multiple devices, -using substitutions which are provided on the command line. - -.. _config-packages: - -Packages --------- - -Another way to modularize and reuse your configuration is to use packages. This feature allows -you to put common pieces of configuration in separate files and keep only unique pieces of your -config in the main yaml file. All definitions from packages will be merged with your main -config in non-destructive way so you could always override some bits and pieces of package -configuration. Substitutions in your main config will override substitutions with the same -name in a package. - -Dictionaries are merged key-by-key. Lists of components are merged by component -ID if specified. Other lists are merged by concatenation. All other config -values are replaced with the later value. - -Local packages -************** - -Consider the following example where the author put common pieces of configuration like WiFi and -I²C into base files and extends it with some device specific configurations in the main config. - -Note how the piece of configuration describing ``api`` component in ``device_base.yaml`` gets -merged with the services definitions from main config file. - -.. code-block:: yaml - - # In config.yaml - substitutions: - node_name: mydevice - device_verbose_name: "My Device" - - packages: - wifi: !include common/wifi.yaml - device_base: !include common/device_base.yaml - - api: - services: - - service: start_laundry - then: - - switch.turn_on: relay - - delay: 3h - - switch.turn_off: relay - - sensor: - - platform: mhz19 - co2: - name: "CO2" - temperature: - name: "Temperature" - update_interval: 60s - automatic_baseline_calibration: false - -.. code-block:: yaml - - # In wifi.yaml - wifi: - ssid: !secret wifi_ssid - password: !secret wifi_password - domain: .yourdomain.lan - fast_connect: true - -.. code-block:: yaml - - # In device_base.yaml - esphome: - name: ${node_name} - platform: ESP32 - board: wemos_d1_mini32 - build_path: ./build/${node_name} - - # I²C Bus - i2c: - sda: GPIOXX - scl: GPIOXX - scan: true - frequency: 100kHz - - # Enable logging - logger: - level: ${log_level} - - api: - encryption: - key: !secret api_encryption_key - reboot_timeout: 1h - - sensor: - - <<: !include common/sensor/uptime.config.yaml - - <<: !include common/sensor/wifi_signal.config.yaml - binary_sensor: - - <<: !include common/binary_sensor/connection_status.config.yaml - - switch: - - <<: !include common/switch/restart_switch.config.yaml - -.. _config-git_packages: - -Remote/git Packages -******************* - -Packages can also be loaded from a git repository by utilizing the correct config syntax. -:ref:`config-substitutions` can be used inside the remote packages which allows users to override -them locally with their own subsitution value. - -.. note:: - - Remote packages cannot have ``secret`` lookups in them. They should instead make use of substitutions with an - optional default in the packaged YAML, which the local device YAML can set using values from the local secrets. - -.. code-block:: yaml - - packages: - # Git repo examples - remote_package: - url: https://github.com/esphome/non-existant-repo - ref: main # optional - files: [file1.yml, file2.yml] - refresh: 1d # optional - - # A single file can be expressed using `file` or `files` as a string - remote_package_two: - url: https://github.com/esphome/non-existant-repo - file: file1.yml # cannot be combined with `files` - # files: file1.yml - - # shorthand form github://username/repository/[folder/]file-path.yml[@branch-or-tag] - remote_package_three: github://esphome/non-existant-repo/file1.yml@main - -Packages as Templates -********************* - -Since packages are incorporated using the ``!include`` system, -variables can be provided to them. This means that packages can be -used as `templates`, allowing complex or repetitive configurations to -be stored in a package file and then incorporated into the -configuration more than once. -Additionally packages could contain a ``defaults`` block which provides -subsitutions for variables not provided by the ``!include`` block. - -As an example, if the configuration needed to support three garage -doors using the ``gpio`` switch platform and the ``time_based`` cover -platform, it could be constructed like this: - -.. code-block:: yaml - - # In config.yaml - packages: - left_garage_door: !include - file: garage-door.yaml - vars: - door_name: Left - door_location: left - open_switch_gpio: 25 - close_switch_gpio: 26 - middle_garage_door: !include - file: garage-door.yaml - vars: - door_name: Middle - door_location: middle - open_switch_gpio: 27 - close_switch_gpio: 29 - right_garage_door: !include - file: garage-door.yaml - vars: - door_name: Right - door_location: right - open_switch_gpio: 15 - close_switch_gpio: 18 - open_duration: "1min" - close_duration: "50s" - - -.. code-block:: yaml - - # In garage-door.yaml - defaults: - open_duration: "2.1min" - close_duration: "2min" - - switch: - - id: open_${door_location}_door_switch - name: ${door_name} Garage Door Open Switch - platform: gpio - pin: ${open_switch_gpio} - - - id: close_${door_location}_door_switch - name: ${door_name} Garage Door Close Switch - platform: gpio - pin: ${close_switch_gpio} - - cover: - - platform: time_based - name: ${door_name} Garage Door - - open_action: - - switch.turn_on: open_${door_location}_door_switch - open_duration: ${open_duration} - - close_action: - - switch.turn_on: close_${door_location}_door_switch - close_duration: ${close_duration} - - stop_action: - - switch.turn_off: open_${door_location}_door_switch - - switch.turn_off: close_${door_location}_door_switch - -Extend ------- - -To make changes or add additional configuration to included configurations ``!extend config_id`` can be used, where ``config_id`` is the ID of the configuration to modify. -For example to set a specific update interval on a common uptime sensor that is shared between configurations: - -.. code-block:: yaml - - packages: - common: !include common.yaml - - sensor: - - id: !extend uptime_sensor - update_interval: 10s - -Remove ------- - -To remove existing entries from included configurations ``!remove [config_id]`` can be used, where ``config_id`` is the ID of the entry to modify. -For example to remove a common uptime sensor that is shared between configurations: - -.. code-block:: yaml - - packages: - common: !include common.yaml - - sensor: - - id: !remove uptime_sensor - -To remove captive portal for a specific device: - -.. code-block:: yaml - - packages: - common: !include common.yaml - - captive_portal: !remove - See Also -------- diff --git a/guides/faq.rst b/guides/faq.rst index 722ffdde27..69044a2b32 100644 --- a/guides/faq.rst +++ b/guides/faq.rst @@ -48,7 +48,7 @@ Tips for using ESPHome payload: double - For even more configuration templating, take a look at :ref:`config-substitutions`. + For even more configuration templating, take a look at :doc:`/components/substitutions/index`. 2. If you want to see how ESPHome interprets your configuration, run @@ -66,7 +66,7 @@ Tips for using ESPHome 5. You can view the full list of command line interface options here: :doc:`/guides/cli` -6. Use :ref:`substitutions ` to reduce repetition in your configuration files. +6. Use :doc:`/components/substitutions/index` to reduce repetition in your configuration files. .. |secret| replace:: ``!secret`` .. _secret: https://www.home-assistant.io/docs/configuration/secrets/ diff --git a/index.rst b/index.rst index 3435d9268d..01d4d46fbf 100644 --- a/index.rst +++ b/index.rst @@ -174,6 +174,17 @@ ESPHome-specific components or components supporting ESPHome device provisioning Interval, components/interval, description.svg, dark-invert Script, components/script, description.svg, dark-invert +ESPHome Configuration +--------------------- + +Streamline your ESPHome configuration and/or use components provided by other contributors. + +.. imgtable:: + + External Components, components/external_components, external_components.svg, dark-invert + Packages, components/packages/index, description.svg, dark-invert + Substitutions, components/substitutions/index, description.svg, dark-invert + Network Hardware ---------------- From 2ffcef1815beffe9c55e61ddd61cd57bb8319b4e Mon Sep 17 00:00:00 2001 From: guillempages Date: Tue, 6 Aug 2024 07:06:57 +0200 Subject: [PATCH 110/173] Split display widgets documentation (#4101) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: H. Árkosi Róbert Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/animation.rst | 86 +++++ components/display/index.rst | 362 +----------------- components/{display => }/fonts.rst | 0 components/graph.rst | 119 ++++++ components/images.rst | 124 ++++++ .../images/display_rendering_graph.png | Bin components/qr_code.rst | 50 +++ images/chart-line.svg | 1 + images/image-multiple-outline.svg | 1 + images/image-outline.svg | 1 + index.rst | 7 +- lint.py | 2 +- 12 files changed, 392 insertions(+), 361 deletions(-) create mode 100644 components/animation.rst rename components/{display => }/fonts.rst (100%) create mode 100644 components/graph.rst create mode 100644 components/images.rst rename components/{display => }/images/display_rendering_graph.png (100%) create mode 100644 components/qr_code.rst create mode 100644 images/chart-line.svg create mode 100644 images/image-multiple-outline.svg create mode 100644 images/image-outline.svg diff --git a/components/animation.rst b/components/animation.rst new file mode 100644 index 0000000000..1a8d282fe0 --- /dev/null +++ b/components/animation.rst @@ -0,0 +1,86 @@ +.. _display-animation: + +Animation +========= + +Allows to use animated images on displays. Animation inherits all options from the image component. +It adds additional lambda methods: ``next_frame()``, ``prev_frame()`` and ``set_frame()`` to change the shown picture of a gif. + +.. code-block:: yaml + + animation: + - file: "animation.gif" + id: my_animation + resize: 100x100 + +The animation can be rendered just like the image component with the ``image()`` function of the display component. + +To show the next frame of the animation call ``id(my_animation).next_frame()``, to show the previous picture use ``id(my_animation).prev_frame()``. To show a specific picture use ``id(my_animation).set_frame(int frame)``. +This can be combined with all Lambdas: + +.. code-block:: yaml + + display: + - platform: ... + # ... + lambda: |- + //Ingress shown animation Frame. + id(my_animation).next_frame(); + // Draw the animation my_animation at position [x=0,y=0] + it.image(0, 0, id(my_animation), COLOR_ON, COLOR_OFF); + +Additionally, you can use the ``animation.next_frame``, ``animation.prev_frame`` or ``animation.set_frame`` actions. + +.. note:: + + To draw the next animation independent of Display draw cycle use an interval: + + .. code-block:: yaml + + interval: + - interval: 5s + then: + animation.next_frame: my_animation + +Configuration variables: +------------------------ + +- **file** (**Required**, string): The path (relative to where the .yaml file is) of the gif file. +- **id** (**Required**, :ref:`config-id`): The ID with which you will be able to reference the animation later + in your display code. +- **resize** (*Optional*, string): If set, this will resize all the frames to fit inside the given dimensions ``WIDTHxHEIGHT`` + and preserve the aspect ratio. +- **type** (*Optional*): Specifies how to encode each frame internally. Defaults to ``BINARY``. + + - ``BINARY``: Two colors, suitable for 1 color displays or 2 color image in color displays. Uses 1 bit + per pixel, 8 pixels per byte. + - ``TRANSPARENT_BINARY``: One color, any pixel that is fully transparent will not be drawn, and any other pixel + will be the on color. Uses 1 bit per pixel, 8 pixels per byte. + - ``GRAYSCALE``: Full scale grey. Uses 8 bits per pixel, 1 pixel per byte. + - ``RGB565``: Lossy RGB color stored. Uses 2 bytes per pixel. + - ``RGB24``: Full RGB color stored. Uses 3 bytes per pixel. + - ``RGBA``: Full RGB color stored. Uses 4 bytes per pixel. Any pixel with an alpha value < 127 will not be drawn. + +- **use_transparency** (*Optional*): If set the alpha channel of the input image will be taken into account, and pixels with alpha < 127 will not be drawn. For image types without explicit alpha channel, the color (0, 0, 1) (very dark blue) will be mapped to black, to be able to store transparency information within the image. Explicitly transparent types (``TRANSPARENT_BINARY`` and ``RGBA``) default to ``True`` and cannot be set to ``False``; other types default to ``False``. +- **loop** (*Optional*): If you want to loop over a subset of your animation (e.g. a fire animation where the fire "starts", then "burns" and "dies") you can specify some frames to loop over. + + - **start_frame** (*Optional*, int): The frame to loop back to when ``end_frame`` is reached. Defaults to the first frame in the animation. + - **end_frame** (*Optional*, int): The last frame to show in the loop; when this frame is reached it will loop back to ``start_frame``. Defaults to the last frame in the animation. + - **repeat** (*Optional*, int): Specifies how many times the loop will run. When the count is reached, the animation will continue with the next frame after ``end_frame``, or restart from the beginning if ``end_frame`` was the last frame. Defaults to "loop forever". + +Actions: +-------- + +- **animation.next_frame**: Moves the animation to the next frame. This is equivalent to the ``id(my_animation).next_frame();`` lambda call. + + - **id** (**Required**, :ref:`config-id`): The ID of the animation to animate. + +- **animation.prev_frame**: Moves the animation to the previous frame. This is equivalent to the ``id(my_animation).prev_frame();`` lambda call. + + - **id** (**Required**, :ref:`config-id`): The ID of the animation to animate. + +- **animation.set_frame**: Moves the animation to a specific frame. This is equivalent to the ``id(my_animation).set_frame(frame);`` lambda call. + + - **id** (**Required**, :ref:`config-id`): The ID of the animation to animate. + - **frame** (**Required**, int): The frame index to show next. + diff --git a/components/display/index.rst b/components/display/index.rst index 4db857c2c1..dc305ca4f0 100644 --- a/components/display/index.rst +++ b/components/display/index.rst @@ -459,364 +459,6 @@ Configuration variables: RGB displays use red, green, and blue, while grayscale displays may use white. -.. _display-graphs: - -Graph Component ---------------- - -You can display a graph of a sensor value(s) using this component. The states used for the graph are stored in -memory at the time the sensor updates and will be lost when the device reboots. - -Examples: - -.. figure:: images/display_rendering_graph.png - :align: center - -Graph component with options for grids, border and line-types. - -.. code-block:: yaml - - graph: - # Show bare-minimum auto-ranged graph - - id: single_temperature_graph - sensor: my_temperature - duration: 1h - width: 151 - height: 51 - # Show multi-trace graph - - id: multi_temperature_graph - duration: 1h - x_grid: 10min - y_grid: 1.0 # degC/div - width: 151 - height: 51 - traces: - - sensor: my_inside_temperature - line_type: DASHED - line_thickness: 2 - color: my_red - - sensor: my_outside_temperature - line_type: SOLID - continuous: true - line_thickness: 3 - color: my_blue - - sensor: my_beer_temperature - line_type: DOTTED - line_thickness: 2 - color: my_green - -Configuration variables: - -- **id** (**Required**, :ref:`config-id`): The ID with which you will be able to reference the graph later - in your display code. -- **width** (**Required**, int): The graph width in pixels -- **height** (**Required**, int): The graph height in pixels -- **duration** (**Required**, :ref:`config-time`): The total graph history duration. -- **border** (*Optional*, boolean): Specifies if a border will be drawn around the graph. Default is True. -- **x_grid** (*Optional*): Specifies the time per division. If not specified, no vertical grid will be drawn. -- **y_grid** (*Optional*, float): Specifies the number of units per division. If not specified, no horizontal grid will be drawn. -- **max_range** (*Optional*): Specifies the maximum Y-axis range. -- **min_range** (*Optional*): Specifies the minimum Y-axis range. -- **max_value** (*Optional*): Specifies the maximum Y-axis value. -- **min_value** (*Optional*): Specifies the minimum Y-axis value. -- **traces** (*Optional*): Use this to specify more than a single trace. - -Trace specific fields: - -- **sensor** (*Optional*, :ref:`config-id`): The sensor value to plot -- **line_thickness** (*Optional*): Defaults to 3 -- **line_type** (*Optional*): Specifies the plot line-type. Can be one of the following: ``SOLID``, ``DOTTED``, ``DASHED``. Defaults to ``SOLID``. -- **continuous** (*Optional*): connects the individual points to make a continuous line. Defaults to ``false``. -- **color** (*Optional*): Sets the color of the sensor trace. - -And then later in code: - -.. code-block:: yaml - - display: - - platform: ... - # ... - pages: - - id: page1 - lambda: |- - // Draw the graph at position [x=10,y=20] - it.graph(10, 20, id(single_temperature_graph)); - - id: page2 - lambda: |- - // Draw the graph at position [x=10,y=20] - it.graph(10, 20, id(multi_temperature_graph), my_yellow); - - color: - - id: my_red - red: 100% - green: 0% - blue: 0% - - id: my_green - red: 0% - green: 100% - blue: 0% - - id: my_blue - red: 0% - green: 0% - blue: 100% - - id: my_yellow - red: 100% - green: 100% - blue: 0% -.. note:: - - Here are some things to note: - - Setting ``y_grid`` will expand any specified range to the nearest multiple of grid spacings. - - Axis labels are currently not possible without manually placing them. - - The grid and border color is set with it.graph(), while the traces are defined separately. - - -.. _display-qrcode: - -QR Code Component ------------------ - -Use this component to generate a QR-code containing a string on the device, which can then be drawn on compatible displays. - -.. code-block:: yaml - - qr_code: - - id: homepage_qr - value: esphome.io - -Configuration variables: - -- **id** (**Required**, :ref:`config-id`): The ID with which you will be able to reference the QR-code later - in your display code. -- **value** (**Required**, string): The string which you want to encode in the QR-code. -- **ecc** (*Optional*, string): The error correction code level you want to use. Defaults to ``LOW``. You can use one of the following values: - - - ``LOW``: The QR Code can tolerate about 7% erroneous codewords - - ``MEDIUM``: The QR Code can tolerate about 15% erroneous codewords - - ``QUARTILE``: The QR Code can tolerate about 25% erroneous codewords - - ``HIGH``: The QR Code can tolerate about 30% erroneous codewords - -To draw the QR-code, call the ``it.qr_code`` function from your render lambda: - -.. code-block:: yaml - - display: - - platform: ... - # ... - pages: - - id: page1 - lambda: |- - // Draw the QR-code at position [x=50,y=0] with white color and a 2x scale - it.qr_code(50, 0, id(homepage_qr), Color(255,255,255), 2); - - // Draw the QR-code in the center of the screen with white color and a 2x scale - auto size = id(homepage_qr).get_size() * 2; // Multiply by scale - auto x = (it.get_width() / 2) - (size / 2); - auto y = (it.get_height() / 2) - (size / 2); - it.qr_code(x, y, id(homepage_qr), Color(255,255,255), 2); - - -.. _display-image: - -Images ------- - -Use this component to store graphical images on the device, you can then draw the images on compatible displays. - -.. code-block:: yaml - - image: - - file: "image.png" - id: my_image - resize: 100x100 - -.. code-block:: yaml - - image: - - file: mdi:alert-outline - id: alert - resize: 80x80 - -.. code-block:: yaml - - image: - - file: https://esphome.io/_images/logo.png - id: esphome_logo - resize: 200x162 - -Configuration variables: - -- **file** (**Required**, string): - - - **Local files**: The path (relative to where the .yaml file is) of the image file. - - **Material Design Icons**: Specify the `Material Design Icon `_ - id in the format ``mdi:icon-name``, and that icon will automatically be downloaded and added to the configuration. - - **Remote files**: The URL of the image file. - -- **id** (**Required**, :ref:`config-id`): The ID with which you will be able to reference the image later - in your display code. -- **resize** (*Optional*, string): If set, this will resize the image to fit inside the given dimensions ``WIDTHxHEIGHT`` - and preserve the aspect ratio. -- **type** (*Optional*): Specifies how to encode image internally. Defaults to ``BINARY`` for local images and ``TRANSPARENT_BINARY`` for MDIs. - - - ``BINARY``: Two colors, suitable for 1 color displays or 2 color image in color displays. Uses 1 bit - per pixel, 8 pixels per byte. - - ``TRANSPARENT_BINARY``: One color, any pixel that is fully transparent will not be drawn, and any other pixel - will be the on color. Uses 1 bit per pixel, 8 pixels per byte. - - ``GRAYSCALE``: Full scale grey. Uses 8 bits per pixel, 1 pixel per byte. - - ``RGB565``: Lossy RGB color stored. Uses 2 bytes per pixel. - - ``RGB24``: Full RGB color stored. Uses 3 bytes per pixel. - - ``RGBA``: Full RGB color stored. Uses 4 bytes per pixel. Any pixel with an alpha value < 127 will not be drawn. - -- **use_transparency** (*Optional*): If set the alpha channel of the input image will be taken into account, and pixels with alpha < 127 will not be drawn. For image types without explicit alpha channel, the color (0, 0, 1) (very dark blue) will be mapped to black, to be able to store transparency information within the image. Explicitly transparent types (``TRANSPARENT_BINARY`` and ``RGBA``) default to ``True`` and cannot be set to ``False``; other types default to ``False``. - -- **dither** (*Optional*): Specifies which dither method used to process the image, only used in GRAYSCALE and BINARY type image. Defaults to ``NONE``. You can read more about it `here `__ and `here `__. - - - ``NONE``: Every pixel convert to its nearest color. - - ``FLOYDSTEINBERG``: Uses Floyd-Steinberg dither to approximate the original image luminosity levels. - -.. note:: - - To use images you will need to have the python ``pillow`` package installed. - If you're running this as a Home Assistant add-on or with the official ESPHome docker image, it should already be - installed. Otherwise you need to install it using ``pip install pillow``. - Additionally, if you want to use SVG images (including MDI images), you will additionally need to have the python ``cairosvg`` package installed. - If you're running this as a Home Assistant add-on or with the official ESPHome docker image, it should also already be - installed. Otherwise you need to install it using ``pip install cairosvg``. - -And then later in code: - -.. code-block:: yaml - - display: - - platform: ... - # ... - lambda: |- - // Draw the image my_image at position [x=0,y=0] - it.image(0, 0, id(my_image)); - -By default, ESPHome will *align* the image at the top left. That means if you enter the coordinates -``[0,10]`` for your image, the top left of the image will be at ``[0,10]``. If you want to draw some -image at the right side of the display, it is however sometimes useful to choose a different **image alignment**. -When you enter ``[0,10]`` you're really telling ESPHome that it should position the **anchor point** of the image -at ``[0,10]``. When using a different alignment, like ``TOP_RIGHT``, the image will be positioned left of the anchor -pointed, so that, as the name implies, the anchor point is a the *top right* corner of the image. - -.. code-block:: yaml - - display: - - platform: ... - # ... - lambda: |- - // Aligned on left by default - it.image(0, 0, id(my_image)); - - // Aligned on right edge - it.image(it.get_width(), 0, id(my_image), ImageAlign::TOP_RIGHT); - -For binary images the ``image`` method accepts two additional color parameters which can -be supplied to modify the color used to represent the on and off bits respectively. e.g. - -.. code-block:: yaml - - display: - - platform: ... - # ... - lambda: |- - // Draw the image my_image at position [x=0,y=0] - // with front color red and back color blue - it.image(0, 0, id(my_image), id(red), id(blue)); - - // Aligned on right edge - it.image(it.get_width(), 0, id(my_image), ImageAlign::TOP_RIGHT, id(red), id(blue)); - -You can also use this to invert images in two colors display, use ``COLOR_OFF`` then ``COLOR_ON`` -as the additional parameters. - -Animation ---------- - -Allows to use animated images on displays. Animation inherits all options from the image component. -It adds additional lambda methods: ``next_frame()``, ``prev_frame()`` and ``set_frame()`` to change the shown picture of a gif. - -.. code-block:: yaml - - animation: - - file: "animation.gif" - id: my_animation - resize: 100x100 - -The animation can be rendered just like the image component with the ``image()`` function of the display component. - -To show the next frame of the animation call ``id(my_animation).next_frame()``, to show the previous picture use ``id(my_animation).prev_frame()``. To show a specific picture use ``id(my_animation).set_frame(int frame)``. -This can be combined with all Lambdas: - -.. code-block:: yaml - - display: - - platform: ... - # ... - lambda: |- - //Ingress shown animation Frame. - id(my_animation).next_frame(); - // Draw the animation my_animation at position [x=0,y=0] - it.image(0, 0, id(my_animation), COLOR_ON, COLOR_OFF); - -Additionally, you can use the ``animation.next_frame``, ``animation.prev_frame`` or ``animation.set_frame`` actions. - -.. note:: - - To draw the next animation independent of Display draw cycle use an interval: - - .. code-block:: yaml - - interval: - - interval: 5s - then: - animation.next_frame: my_animation - - -Configuration variables: -^^^^^^^^^^^^^^^^^^^^^^^^ - -- **file** (**Required**, string): The path (relative to where the .yaml file is) of the gif file. -- **id** (**Required**, :ref:`config-id`): The ID with which you will be able to reference the animation later - in your display code. -- **resize** (*Optional*, string): If set, this will resize all the frames to fit inside the given dimensions ``WIDTHxHEIGHT`` - and preserve the aspect ratio. -- **type** (*Optional*): Specifies how to encode each frame internally. Defaults to ``BINARY``. - - - ``BINARY``: Two colors, suitable for 1 color displays or 2 color image in color displays. Uses 1 bit - per pixel, 8 pixels per byte. - - ``TRANSPARENT_BINARY``: One color, any pixel that is fully transparent will not be drawn, and any other pixel - will be the on color. Uses 1 bit per pixel, 8 pixels per byte. - - ``GRAYSCALE``: Full scale grey. Uses 8 bits per pixel, 1 pixel per byte. - - ``RGB565``: Lossy RGB color stored. Uses 2 bytes per pixel. - - ``RGB24``: Full RGB color stored. Uses 3 bytes per pixel. - - ``RGBA``: Full RGB color stored. Uses 4 bytes per pixel. Any pixel with an alpha value < 127 will not be drawn. - -- **use_transparency** (*Optional*): If set the alpha channel of the input image will be taken into account, and pixels with alpha < 127 will not be drawn. For image types without explicit alpha channel, the color (0, 0, 1) (very dark blue) will be mapped to black, to be able to store transparency information within the image. Explicitly transparent types (``TRANSPARENT_BINARY`` and ``RGBA``) default to ``True`` and cannot be set to ``False``; other types default to ``False``. -- **loop** (*Optional*): If you want to loop over a subset of your animation (e.g. a fire animation where the fire "starts", then "burns" and "dies") you can specify some frames to loop over. - - - **start_frame** (*Optional*, int): The frame to loop back to when ``end_frame`` is reached. Defaults to the first frame in the animation. - - **end_frame** (*Optional*, int): The last frame to show in the loop; when this frame is reached it will loop back to ``start_frame``. Defaults to the last frame in the animation. - - **repeat** (*Optional*, int): Specifies how many times the loop will run. When the count is reached, the animation will continue with the next frame after ``end_frame``, or restart from the beginning if ``end_frame`` was the last frame. Defaults to "loop forever". - -Actions: -^^^^^^^^ - -- **animation.next_frame**: Moves the animation to the next frame. This is equivalent to the ``id(my_animation).next_frame();`` lambda call. - - - **id** (**Required**, :ref:`config-id`): The ID of the animation to animate. - -- **animation.prev_frame**: Moves the animation to the previous frame. This is equivalent to the ``id(my_animation).prev_frame();`` lambda call. - - - **id** (**Required**, :ref:`config-id`): The ID of the animation to animate. - -- **animation.set_frame**: Moves the animation to a specific frame. This is equivalent to the ``id(my_animation).set_frame(frame);`` lambda call. - - - **id** (**Required**, :ref:`config-id`): The ID of the animation to animate. - - **frame** (**Required**, int): The frame index to show next. .. _display-pages: @@ -964,6 +606,10 @@ See Also - :apiref:`display/display_buffer.h` - :ref:`Fonts ` +- :ref:`Graph Component ` +- :ref:`QR Code Component ` +- :ref:`Image Component ` +- :ref:`Animation Component ` - :ghedit:`Edit` .. toctree:: diff --git a/components/display/fonts.rst b/components/fonts.rst similarity index 100% rename from components/display/fonts.rst rename to components/fonts.rst diff --git a/components/graph.rst b/components/graph.rst new file mode 100644 index 0000000000..a2df8b6b68 --- /dev/null +++ b/components/graph.rst @@ -0,0 +1,119 @@ +.. _display-graphs: + +Graph Component +=============== + +.. seo:: + :description: Instructions for displaying graphs in ESPHome. + :image: chart-line.svg + +You can display a graph of a sensor value(s) using this component. The states used for the graph are stored in +memory at the time the sensor updates and will be lost when the device reboots. + +Examples: + +.. figure:: images/display_rendering_graph.png + :align: center + +Graph component with options for grids, border and line-types. + +.. code-block:: yaml + + graph: + # Show bare-minimum auto-ranged graph + - id: single_temperature_graph + sensor: my_temperature + duration: 1h + width: 151 + height: 51 + # Show multi-trace graph + - id: multi_temperature_graph + duration: 1h + x_grid: 10min + y_grid: 1.0 # degC/div + width: 151 + height: 51 + traces: + - sensor: my_inside_temperature + line_type: DASHED + line_thickness: 2 + color: my_red + - sensor: my_outside_temperature + line_type: SOLID + continuous: true + line_thickness: 3 + color: my_blue + - sensor: my_beer_temperature + line_type: DOTTED + line_thickness: 2 + color: my_green + +Configuration variables: +------------------------ + +- **id** (**Required**, :ref:`config-id`): The ID with which you will be able to reference the graph later + in your display code. +- **width** (**Required**, int): The graph width in pixels +- **height** (**Required**, int): The graph height in pixels +- **duration** (**Required**, :ref:`config-time`): The total graph history duration. +- **border** (*Optional*, boolean): Specifies if a border will be drawn around the graph. Default is True. +- **x_grid** (*Optional*): Specifies the time per division. If not specified, no vertical grid will be drawn. +- **y_grid** (*Optional*, float): Specifies the number of units per division. If not specified, no horizontal grid will be drawn. +- **max_range** (*Optional*): Specifies the maximum Y-axis range. +- **min_range** (*Optional*): Specifies the minimum Y-axis range. +- **max_value** (*Optional*): Specifies the maximum Y-axis value. +- **min_value** (*Optional*): Specifies the minimum Y-axis value. +- **traces** (*Optional*): Use this to specify more than a single trace. + +Trace specific fields: + +- **sensor** (*Optional*, :ref:`config-id`): The sensor value to plot +- **line_thickness** (*Optional*): Defaults to 3 +- **line_type** (*Optional*): Specifies the plot line-type. Can be one of the following: ``SOLID``, ``DOTTED``, ``DASHED``. Defaults to ``SOLID``. +- **continuous** (*Optional*): connects the individual points to make a continuous line. Defaults to ``false``. +- **color** (*Optional*): Sets the color of the sensor trace. + +And then later in code: + +.. code-block:: yaml + + display: + - platform: ... + # ... + pages: + - id: page1 + lambda: |- + pages: + - id: page1 + lambda: |- + // Draw the graph at position [x=10,y=20] + it.graph(10, 20, id(single_temperature_graph)); + - id: page2 + lambda: |- + // Draw the graph at position [x=10,y=20] + it.graph(10, 20, id(multi_temperature_graph), my_yellow); + + color: + - id: my_red + red: 100% + green: 0% + blue: 0% + - id: my_green + red: 0% + green: 100% + blue: 0% + - id: my_blue + red: 0% + green: 0% + blue: 100% + - id: my_yellow + red: 100% + green: 100% + blue: 0% +.. note:: + + Here are some things to note: + - Setting ``y_grid`` will expand any specified range to the nearest multiple of grid spacings. + - Axis labels are currently not possible without manually placing them. + - The grid and border color is set with it.graph(), while the traces are defined separately. + diff --git a/components/images.rst b/components/images.rst new file mode 100644 index 0000000000..c9962db99e --- /dev/null +++ b/components/images.rst @@ -0,0 +1,124 @@ +.. _display-image: + +Images +====== + +.. seo:: + :description: Instructions to display static images on ESPHome + :image: image-outline.svg + +Use this component to store graphical images on the device, you can then draw the images on compatible displays. + +.. code-block:: yaml + + image: + - file: "image.png" + id: my_image + resize: 100x100 + +.. code-block:: yaml + + image: + - file: mdi:alert-outline + id: alert + resize: 80x80 + +.. code-block:: yaml + + image: + - file: https://esphome.io/_images/logo.png + id: esphome_logo + resize: 200x162 + +Configuration variables: +------------------------ + +- **file** (**Required**, string): + + - **Local files**: The path (relative to where the .yaml file is) of the image file. + - **Material Design Icons**: Specify the `Material Design Icon `_ + id in the format ``mdi:icon-name``, and that icon will automatically be downloaded and added to the configuration. + - **Remote files**: The URL of the image file. + +- **id** (**Required**, :ref:`config-id`): The ID with which you will be able to reference the image later + in your display code. +- **resize** (*Optional*, string): If set, this will resize the image to fit inside the given dimensions ``WIDTHxHEIGHT`` + and preserve the aspect ratio. +- **type** (*Optional*): Specifies how to encode image internally. Defaults to ``BINARY`` for local and remote images and ``TRANSPARENT_BINARY`` for MDIs. + + - ``BINARY``: Two colors, suitable for 1 color displays or 2 color image in color displays. Uses 1 bit + per pixel, 8 pixels per byte. + - ``TRANSPARENT_BINARY``: One color, any pixel that is fully transparent will not be drawn, and any other pixel + will be the on color. Uses 1 bit per pixel, 8 pixels per byte. + - ``GRAYSCALE``: Full scale grey. Uses 8 bits per pixel, 1 pixel per byte. + - ``RGB565``: Lossy RGB color stored. Uses 2 bytes per pixel. + - ``RGB24``: Full RGB color stored. Uses 3 bytes per pixel. + - ``RGBA``: Full RGB color stored. Uses 4 bytes per pixel. Any pixel with an alpha value < 127 will not be drawn. + +- **use_transparency** (*Optional*): If set the alpha channel of the input image will be taken into account, and pixels with alpha < 127 will not be drawn. For image types without explicit alpha channel, the color (0, 0, 1) (very dark blue) will be mapped to black, to be able to store transparency information within the image. Explicitly transparent types (``TRANSPARENT_BINARY`` and ``RGBA``) default to ``True`` and cannot be set to ``False``; other types default to ``False``. + +- **dither** (*Optional*): Specifies which dither method used to process the image, only used in GRAYSCALE and BINARY type image. Defaults to ``NONE``. You can read more about it `here `__ and `here `__. + + - ``NONE``: Every pixel convert to its nearest color. + - ``FLOYDSTEINBERG``: Uses Floyd-Steinberg dither to approximate the original image luminosity levels. + +.. note:: + + To use images you will need to have the python ``pillow`` package installed. + Additionally, if you want to use SVG images (including MDI images), you will + additionally need to have the python ``cairosvg`` package installed. + + If you're running this as a Home Assistant add-on or with the official ESPHome docker image, it should already be installed. + + Use ``pip install "esphome[displays]"`` to install these optional dependencies with + the versions that ESPHome requires. + +And then later in code: + +.. code-block:: yaml + + display: + - platform: ... + # ... + lambda: |- + // Draw the image my_image at position [x=0,y=0] + it.image(0, 0, id(my_image)); + +By default, ESPHome will *align* the image at the top left. That means if you enter the coordinates +``[0,10]`` for your image, the top left of the image will be at ``[0,10]``. If you want to draw some +image at the right side of the display, it is however sometimes useful to choose a different **image alignment**. +When you enter ``[0,10]`` you're really telling ESPHome that it should position the **anchor point** of the image +at ``[0,10]``. When using a different alignment, like ``TOP_RIGHT``, the image will be positioned left of the anchor +pointed, so that, as the name implies, the anchor point is a the *top right* corner of the image. + +.. code-block:: yaml + + display: + - platform: ... + # ... + lambda: |- + // Aligned on left by default + it.image(0, 0, id(my_image)); + + // Aligned on right edge + it.image(it.get_width(), 0, id(my_image), ImageAlign::TOP_RIGHT); + +For binary images the ``image`` method accepts two additional color parameters which can +be supplied to modify the color used to represent the on and off bits respectively. e.g. + +.. code-block:: yaml + + display: + - platform: ... + # ... + lambda: |- + // Draw the image my_image at position [x=0,y=0] + // with front color red and back color blue + it.image(0, 0, id(my_image), id(red), id(blue)); + + // Aligned on right edge + it.image(it.get_width(), 0, id(my_image), ImageAlign::TOP_RIGHT, id(red), id(blue)); + +You can also use this to invert images in two color displays, use ``COLOR_OFF`` then ``COLOR_ON`` +as the additional parameters. + diff --git a/components/display/images/display_rendering_graph.png b/components/images/display_rendering_graph.png similarity index 100% rename from components/display/images/display_rendering_graph.png rename to components/images/display_rendering_graph.png diff --git a/components/qr_code.rst b/components/qr_code.rst new file mode 100644 index 0000000000..fb178b0339 --- /dev/null +++ b/components/qr_code.rst @@ -0,0 +1,50 @@ +.. _display-qrcode: + +QR Code Component +================= + +.. seo:: + :description: Instructions for displaying a QR Code in ESPHome + :image: qr-code.svg + +Use this component to generate a QR-code containing a string on the device, which can then be drawn on compatible displays. + +.. code-block:: yaml + + qr_code: + - id: homepage_qr + value: esphome.io + +Configuration variables: +------------------------ + +- **id** (**Required**, :ref:`config-id`): The ID with which you will be able to reference the QR-code later + in your display code. +- **value** (**Required**, string): The string which you want to encode in the QR-code. +- **ecc** (*Optional*, string): The error correction code level you want to use. Defaults to ``LOW``. You can use one of the following values: + + - ``LOW``: The QR Code can tolerate about 7% erroneous codewords + - ``MEDIUM``: The QR Code can tolerate about 15% erroneous codewords + - ``QUARTILE``: The QR Code can tolerate about 25% erroneous codewords + - ``HIGH``: The QR Code can tolerate about 30% erroneous codewords + +To draw the QR-code, call the ``it.qr_code`` function from your render lambda: + +.. code-block:: yaml + + display: + - platform: ... + # ... + pages: + - id: page1 + lambda: |- + // Draw the QR-code at position [x=50,y=0] with white color and a 2x scale + it.qr_code(50, 0, id(homepage_qr), Color(255,255,255), 2); + + // Draw the QR-code in the center of the screen with white color and a 2x scale + auto size = id(homepage_qr).get_size() * 2; // Multiply by scale + auto x = (it.get_width() / 2) - (size / 2); + auto y = (it.get_height() / 2) - (size / 2); + it.qr_code(x, y, id(homepage_qr), Color(255,255,255), 2); + + diff --git a/images/chart-line.svg b/images/chart-line.svg new file mode 100644 index 0000000000..eeb7259fd0 --- /dev/null +++ b/images/chart-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/image-multiple-outline.svg b/images/image-multiple-outline.svg new file mode 100644 index 0000000000..d89398cb5a --- /dev/null +++ b/images/image-multiple-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/image-outline.svg b/images/image-outline.svg new file mode 100644 index 0000000000..cc75caa65d --- /dev/null +++ b/images/image-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/index.rst b/index.rst index 01d4d46fbf..a125265a0a 100644 --- a/index.rst +++ b/index.rst @@ -816,9 +816,12 @@ Display Components .. imgtable:: Display Core, components/display/index, folder-open.svg, dark-invert + Font Renderer, components/fonts, format-font.svg, dark-invert + Graph, components/graph, chart-line.svg, dark-invert + QR Code, components/qr_code, qr-code.svg, dark-invert + Image, components/images, image-outline.svg, dark-invert + Animation, components/animation, image-multiple-outline.svg, dark-invert Display Menu Core, components/display_menu/index, folder-open.svg, dark-invert - Font Renderer, components/display/fonts, format-font.svg, dark-invert - Graphical Display Menu, components/display_menu/graphical_display_menu, graphical_display_menu.png LCD Menu, components/display_menu/lcd_menu, lcd_menu.png diff --git a/lint.py b/lint.py index e0d3e4c3f6..0d2b1a08ab 100644 --- a/lint.py +++ b/lint.py @@ -395,7 +395,7 @@ def lint_directive_formatting(fname, content): include=["*.rst"], exclude=[ "components/web_server.rst", - "components/display/index.rst", + "components/images.rst", ], ) def lint_esphome_io_link(fname, match): From f363b22477f4dc4134b1fbd92ce7482bc4f4114e Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Tue, 6 Aug 2024 17:16:59 +1200 Subject: [PATCH 111/173] Move packages and substitutions out of folders (#4112) * Move packages and substitutions out of folders * Fix --- changelog/v1.10.0.rst | 2 +- components/index.rst | 2 -- components/{packages/index.rst => packages.rst} | 2 +- components/{substitutions/index.rst => substitutions.rst} | 0 guides/faq.rst | 4 ++-- index.rst | 4 ++-- 6 files changed, 6 insertions(+), 8 deletions(-) rename components/{packages/index.rst => packages.rst} (98%) rename components/{substitutions/index.rst => substitutions.rst} (100%) diff --git a/changelog/v1.10.0.rst b/changelog/v1.10.0.rst index b31f917101..95cf07b88c 100644 --- a/changelog/v1.10.0.rst +++ b/changelog/v1.10.0.rst @@ -134,7 +134,7 @@ Other notable changes: (:ref:`wifi-networks`) - GPIO Switches have a new option ``restore_mode`` to configure how their values should be restored on boot. (:doc:`/components/switch/gpio`) -- Added :doc:`/components/substitutions/index` to reduce repeating across configs. +- Added :doc:`/components/substitutions` to reduce repeating across configs. - Validation error messages are now displayed even better. Now all errors are shown with the exact context where the error appeared. Try it, it's so much better. Next step will be to upgrade to a better YAML reader to provide better error messages when the YAML syntax is invalid. diff --git a/components/index.rst b/components/index.rst index fb1f9a27a1..f937b80a23 100644 --- a/components/index.rst +++ b/components/index.rst @@ -34,6 +34,4 @@ Components text/index update/index valve/index - packages/index - substitutions/index * diff --git a/components/packages/index.rst b/components/packages.rst similarity index 98% rename from components/packages/index.rst rename to components/packages.rst index 1973730aad..1a23253c0d 100644 --- a/components/packages/index.rst +++ b/components/packages.rst @@ -74,7 +74,7 @@ Remote/Git Packages ------------------- Packages can also be loaded from a Git repository by utilizing the correct configuration syntax. -:doc:`/components/substitutions/index` can be used inside the remote packages which allows users to override +:doc:`/components/substitutions` can be used inside the remote packages which allows users to override them locally with their own substitution value. .. note:: diff --git a/components/substitutions/index.rst b/components/substitutions.rst similarity index 100% rename from components/substitutions/index.rst rename to components/substitutions.rst diff --git a/guides/faq.rst b/guides/faq.rst index 69044a2b32..105bb011ee 100644 --- a/guides/faq.rst +++ b/guides/faq.rst @@ -48,7 +48,7 @@ Tips for using ESPHome payload: double - For even more configuration templating, take a look at :doc:`/components/substitutions/index`. + For even more configuration templating, take a look at :doc:`/components/substitutions`. 2. If you want to see how ESPHome interprets your configuration, run @@ -66,7 +66,7 @@ Tips for using ESPHome 5. You can view the full list of command line interface options here: :doc:`/guides/cli` -6. Use :doc:`/components/substitutions/index` to reduce repetition in your configuration files. +6. Use :doc:`/components/substitutions` to reduce repetition in your configuration files. .. |secret| replace:: ``!secret`` .. _secret: https://www.home-assistant.io/docs/configuration/secrets/ diff --git a/index.rst b/index.rst index a125265a0a..3aea2682da 100644 --- a/index.rst +++ b/index.rst @@ -182,8 +182,8 @@ Streamline your ESPHome configuration and/or use components provided by other co .. imgtable:: External Components, components/external_components, external_components.svg, dark-invert - Packages, components/packages/index, description.svg, dark-invert - Substitutions, components/substitutions/index, description.svg, dark-invert + Packages, components/packages, description.svg, dark-invert + Substitutions, components/substitutions, description.svg, dark-invert Network Hardware ---------------- From 2c7a185f85954033a0433fe74c89a50cf28c02fc Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Tue, 6 Aug 2024 17:22:00 +1200 Subject: [PATCH 112/173] ``service`` -> ``action`` take 2 (#4113) --- components/packages.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/components/packages.rst b/components/packages.rst index 1a23253c0d..6acc58a3e4 100644 --- a/components/packages.rst +++ b/components/packages.rst @@ -28,7 +28,7 @@ Local Packages Consider the following example where the author put common pieces of configuration (like Wi-Fi and API) into base files and then extends it with some device-specific configuration in the main configuration. -Note how the piece of configuration describing ``api`` component in ``device_base.yaml`` gets merged with the services +Note how the piece of configuration describing ``api`` component in ``device_base.yaml`` gets merged with the actions definitions from main configuration file. .. code-block:: yaml @@ -39,8 +39,8 @@ definitions from main configuration file. device_base: !include common/device_base.yaml api: - services: - - service: start_laundry + actions: + - action: start_laundry then: - switch.turn_on: relay From afe9f3ced5b3142a01e2bdf6bf8cfd1c2fee9ad1 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Tue, 6 Aug 2024 17:54:00 +1200 Subject: [PATCH 113/173] Rename files to match component name (#4114) --- components/{fonts.rst => font.rst} | 0 components/{images.rst => image.rst} | 0 index.rst | 4 ++-- lint.py | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) rename components/{fonts.rst => font.rst} (100%) rename components/{images.rst => image.rst} (100%) diff --git a/components/fonts.rst b/components/font.rst similarity index 100% rename from components/fonts.rst rename to components/font.rst diff --git a/components/images.rst b/components/image.rst similarity index 100% rename from components/images.rst rename to components/image.rst diff --git a/index.rst b/index.rst index 3aea2682da..4f5f26e0a8 100644 --- a/index.rst +++ b/index.rst @@ -816,10 +816,10 @@ Display Components .. imgtable:: Display Core, components/display/index, folder-open.svg, dark-invert - Font Renderer, components/fonts, format-font.svg, dark-invert + Font Renderer, components/font, format-font.svg, dark-invert Graph, components/graph, chart-line.svg, dark-invert QR Code, components/qr_code, qr-code.svg, dark-invert - Image, components/images, image-outline.svg, dark-invert + Image, components/image, image-outline.svg, dark-invert Animation, components/animation, image-multiple-outline.svg, dark-invert Display Menu Core, components/display_menu/index, folder-open.svg, dark-invert Graphical Display Menu, components/display_menu/graphical_display_menu, graphical_display_menu.png diff --git a/lint.py b/lint.py index 0d2b1a08ab..106a4017aa 100644 --- a/lint.py +++ b/lint.py @@ -395,7 +395,7 @@ def lint_directive_formatting(fname, content): include=["*.rst"], exclude=[ "components/web_server.rst", - "components/images.rst", + "components/image.rst", ], ) def lint_esphome_io_link(fname, match): From 07ce2a7dde9976ab66bffb038e81a088fd8be6c3 Mon Sep 17 00:00:00 2001 From: guillempages Date: Tue, 6 Aug 2024 13:08:13 +0200 Subject: [PATCH 114/173] Add online_image documentation (#2076) Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/display/index.rst | 1 + components/image.rst | 3 +- components/online_image.rst | 152 ++++++++++++++++++++++++++++++++++ images/image-sync-outline.svg | 1 + index.rst | 1 + 5 files changed, 157 insertions(+), 1 deletion(-) create mode 100644 components/online_image.rst create mode 100644 images/image-sync-outline.svg diff --git a/components/display/index.rst b/components/display/index.rst index dc305ca4f0..7b4512f6fa 100644 --- a/components/display/index.rst +++ b/components/display/index.rst @@ -610,6 +610,7 @@ See Also - :ref:`QR Code Component ` - :ref:`Image Component ` - :ref:`Animation Component ` +- :ref:`Online Image ` - :ghedit:`Edit` .. toctree:: diff --git a/components/image.rst b/components/image.rst index c9962db99e..2a27138ae5 100644 --- a/components/image.rst +++ b/components/image.rst @@ -9,6 +9,8 @@ Images Use this component to store graphical images on the device, you can then draw the images on compatible displays. +For showing images downloaded at runtime, take a look at the :ref:`Online Image ` component. + .. code-block:: yaml image: @@ -121,4 +123,3 @@ be supplied to modify the color used to represent the on and off bits respective You can also use this to invert images in two color displays, use ``COLOR_OFF`` then ``COLOR_ON`` as the additional parameters. - diff --git a/components/online_image.rst b/components/online_image.rst new file mode 100644 index 0000000000..7ac693fd54 --- /dev/null +++ b/components/online_image.rst @@ -0,0 +1,152 @@ +.. _online_image: + +Online Image Component +====================== + +.. seo:: + :description: Instructions for displaying images downloaded at runtime in ESPHome. + :image: image-sync-outline.svg + +With this component you can define images that will be downloaded, decoded and drawn at runtime. + +.. note:: + + Currently only images in PNG format are supported. + +.. warning:: + + This component requires a fair amount of RAM; both for downloading the image, and for storing the decoded image. It might work on devices without PSRAM, but there is no guarantee. + +This component has a dependency to :doc:`/components/http_request`; the configuration options you set to the ``http_request`` component will also apply here. + +.. code-block:: yaml + + online_image: + - url: "https://example.com/example.png" + format: png + id: my_online_image + +Configuration variables +----------------------- + +- **url** (**Required**, url): The URL where the image will be downloaded from. +- **id** (**Required**, :ref:`config-id`): The ID with which you will be able to reference the image later + in your display code. +- **format** (**Required**): The format that the image is encoded with. + + - ``PNG``: The image on the server is encoded in PNG format. +- **resize** (*Optional*, string): If set, this will resize the image to fit inside the given dimensions ``WIDTHxHEIGHT`` + and preserve the aspect ratio. +- **type** (*Optional*): Specifies how to encode image internally. Defaults to ``BINARY``. + + - ``BINARY``: Two colors, suitable for 1 color displays or 2 color image in color displays. Uses 1 bit + per pixel, 8 pixels per byte. + - ``TRANSPARENT_BINARY``: One color, any pixel that is fully transparent will not be drawn, and any other pixel + will be the on color. Uses 1 bit per pixel, 8 pixels per byte. + - ``GRAYSCALE``: Full scale grey. Uses 8 bits per pixel, 1 pixel per byte. + - ``RGB565``: Lossy RGB color stored. Uses 2 bytes per pixel. + - ``RGB24``: Full RGB color stored. Uses 3 bytes per pixel. + - ``RGBA``: Full RGB color stored. Uses 4 bytes per pixel. Any pixel with an alpha value < 127 will not be drawn. +- **use_transparency** (*Optional*, boolean): If set the alpha channel of the input image will be taken into account, + and pixels with alpha < 127 will not be drawn. For image types without explicit alpha channel, + the color (0, 0, 1) (very dark blue) will be mapped to black, to be able to store transparency information + within the image. Explicitly transparent types (``TRANSPARENT_BINARY`` and ``RGBA``) default to ``true`` and cannot be set to ``false``; other types default to ``false``. +- **update_interval** (*Optional*, int): Redownload the image when the specified time has elapsed. Defaults to ``never`` (i.e. the update component action needs to be called manually). + +Automations +----------- + +- **on_download_finished** (*Optional*, :ref:`Automation `): An automation to perform when the image has been successfully downloaded. + +A good example for that is to update the display component after the download succeeded. + +- **on_error** (*Optional*, :ref:`Automation `): An automation to perform when an error happened during download or decode. + +Actions +------- + +**online_image.set_url**: Change the URL where the image is downloaded from. The image needs to be manually updated afterwards. + +Configuration variables: + +- **id** (**Required**, :ref:`config-id`): The image to update the URL for. +- **url** (**Required**, url): The new URL to download the image from. + +.. code-block:: yaml + + on_...: + - online_image.set_url: + id: my_online_image + url: "https://www.example.com/new_image.png" + - component.update: my_online_image + +**online_image.release**: Release the memory currently used by an image. Can be used if different display pages need different images, to avoid wasting memory on an image that is currently not being displayed. + +Configuration variables: + +- **id** (**Required**, :ref:`config-id`): The image to update the URL for. + +.. code-block:: yaml + + on_...: + - online_image.release: my_online_image + +Examples +-------- + +.. code-block:: yaml + + online_image: + - url: "https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/PNG_transparency_demonstration_1.png/280px-PNG_transparency_demonstration_1.png" + format: png + id: my_online_image + on_download_finished: + component.update: my_display + +And then later in code: + +.. code-block:: yaml + + display: + - platform: ... + id: my_display + # ... + lambda: |- + // Draw the image my_online_image at position [x=0,y=0] + it.image(0, 0, id(my_online_image)); + +For monochrome displays the ``image`` method accepts two additional color parameters which can +be supplied to specify the color used to draw bright and dark pixels respectively. +In this case the image will be internally converted to a grayscale image and then to monochrome +based on an internally defined threshold. + +.. code-block:: yaml + + display: + - platform: ... + id: my_display + # ... + lambda: |- + // Draw the image my_image at position [x=0,y=0] + // with front color "OFF" and back color "ON" + it.image(0, 0, id(my_online_image), COLOR_OFF, COLOR_ON); + +By default ``online_image`` is configured to not automatically update/download the image; in order to do the initial download, you can either: + - Add a ``component.update `` in the ``on_connect:`` action on the :doc:`/components/wifi` component. + - Explicitly set an ``update_interval``. + - Call ``component.update `` in an :doc:`/components/interval` block. + - Call ``component.update `` where you need the image to be downloaded/updated. + +.. code-block:: yaml + + wifi: + on_connect: + - component.update: my_online_image + +See Also +-------- + +- :apiref:`online_image/online_image.h` +- :doc:`Image Component ` +- :doc:`Animation Component ` +- :ghedit:`Edit` diff --git a/images/image-sync-outline.svg b/images/image-sync-outline.svg new file mode 100644 index 0000000000..7415eee7a2 --- /dev/null +++ b/images/image-sync-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/index.rst b/index.rst index 54c49ec689..48e810f7e7 100644 --- a/index.rst +++ b/index.rst @@ -823,6 +823,7 @@ Display Components QR Code, components/qr_code, qr-code.svg, dark-invert Image, components/image, image-outline.svg, dark-invert Animation, components/animation, image-multiple-outline.svg, dark-invert + Online Image, components/online_image, image-sync-outline.svg, dark-invert Display Menu Core, components/display_menu/index, folder-open.svg, dark-invert Graphical Display Menu, components/display_menu/graphical_display_menu, graphical_display_menu.png LCD Menu, components/display_menu/lcd_menu, lcd_menu.png From db2fda75c33e04662622e996ebcfa5b580ba4f85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=2E=20=C3=81rkosi=20R=C3=B3bert?= Date: Mon, 12 Aug 2024 00:39:48 +0200 Subject: [PATCH 115/173] Initial LVGL doc for ESPHome (#3678) Co-authored-by: Keith Burzinski Co-authored-by: clydebarrow <2366188+clydebarrow@users.noreply.github.com> Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/binary_sensor/lvgl.rst | 39 + components/display/index.rst | 25 +- components/font.rst | 4 +- components/index.rst | 1 + components/key_collector.rst | 18 +- components/light/lvgl.rst | 44 + components/lvgl/images/lvgl_align.png | Bin 0 -> 15911 bytes components/lvgl/images/lvgl_animimg.gif | Bin 0 -> 7025 bytes components/lvgl/images/lvgl_arc.png | Bin 0 -> 2738 bytes components/lvgl/images/lvgl_bar.png | Bin 0 -> 374 bytes components/lvgl/images/lvgl_baseobj.png | Bin 0 -> 730 bytes components/lvgl/images/lvgl_boxmodel.png | Bin 0 -> 9051 bytes components/lvgl/images/lvgl_button.png | Bin 0 -> 1062 bytes components/lvgl/images/lvgl_buttonmatrix.png | Bin 0 -> 2739 bytes components/lvgl/images/lvgl_checkbox.png | Bin 0 -> 1420 bytes components/lvgl/images/lvgl_dropdown.png | Bin 0 -> 2959 bytes components/lvgl/images/lvgl_image.png | Bin 0 -> 10371 bytes components/lvgl/images/lvgl_keyboard.png | Bin 0 -> 8996 bytes components/lvgl/images/lvgl_label.png | Bin 0 -> 1123 bytes components/lvgl/images/lvgl_led.png | Bin 0 -> 1123 bytes components/lvgl/images/lvgl_line.png | Bin 0 -> 1775 bytes .../lvgl/images/lvgl_main_screenshot.png | Bin 0 -> 134021 bytes components/lvgl/images/lvgl_meter.png | Bin 0 -> 7065 bytes components/lvgl/images/lvgl_msgbox.png | Bin 0 -> 4971 bytes components/lvgl/images/lvgl_roller.png | Bin 0 -> 2677 bytes components/lvgl/images/lvgl_slider.png | Bin 0 -> 521 bytes components/lvgl/images/lvgl_spinbox.png | Bin 0 -> 799 bytes components/lvgl/images/lvgl_spinner.gif | Bin 0 -> 36060 bytes components/lvgl/images/lvgl_switch.png | Bin 0 -> 737 bytes components/lvgl/images/lvgl_symbols.png | Bin 0 -> 30832 bytes components/lvgl/images/lvgl_tabview.png | Bin 0 -> 7993 bytes components/lvgl/images/lvgl_textarea.png | Bin 0 -> 4749 bytes components/lvgl/index.rst | 690 +++++++ components/lvgl/widgets.rst | 1788 +++++++++++++++++ components/number/lvgl.rst | 47 + components/select/lvgl.rst | 44 + components/sensor/lvgl.rst | 46 + components/switch/lvgl.rst | 42 + components/text/lvgl.rst | 43 + components/text_sensor/lvgl.rst | 44 + images/lvgl.png | Bin 0 -> 3401 bytes images/lvgl_c_bns.png | Bin 0 -> 1688 bytes images/lvgl_c_lig.png | Bin 0 -> 1658 bytes images/lvgl_c_num.png | Bin 0 -> 998 bytes images/lvgl_c_sel.png | Bin 0 -> 2622 bytes images/lvgl_c_swi.png | Bin 0 -> 1437 bytes images/lvgl_c_txt.png | Bin 0 -> 1623 bytes index.rst | 11 + 48 files changed, 2867 insertions(+), 19 deletions(-) create mode 100644 components/binary_sensor/lvgl.rst create mode 100644 components/light/lvgl.rst create mode 100644 components/lvgl/images/lvgl_align.png create mode 100644 components/lvgl/images/lvgl_animimg.gif create mode 100644 components/lvgl/images/lvgl_arc.png create mode 100644 components/lvgl/images/lvgl_bar.png create mode 100644 components/lvgl/images/lvgl_baseobj.png create mode 100644 components/lvgl/images/lvgl_boxmodel.png create mode 100644 components/lvgl/images/lvgl_button.png create mode 100644 components/lvgl/images/lvgl_buttonmatrix.png create mode 100644 components/lvgl/images/lvgl_checkbox.png create mode 100644 components/lvgl/images/lvgl_dropdown.png create mode 100644 components/lvgl/images/lvgl_image.png create mode 100644 components/lvgl/images/lvgl_keyboard.png create mode 100644 components/lvgl/images/lvgl_label.png create mode 100644 components/lvgl/images/lvgl_led.png create mode 100644 components/lvgl/images/lvgl_line.png create mode 100644 components/lvgl/images/lvgl_main_screenshot.png create mode 100644 components/lvgl/images/lvgl_meter.png create mode 100644 components/lvgl/images/lvgl_msgbox.png create mode 100644 components/lvgl/images/lvgl_roller.png create mode 100644 components/lvgl/images/lvgl_slider.png create mode 100644 components/lvgl/images/lvgl_spinbox.png create mode 100644 components/lvgl/images/lvgl_spinner.gif create mode 100644 components/lvgl/images/lvgl_switch.png create mode 100644 components/lvgl/images/lvgl_symbols.png create mode 100644 components/lvgl/images/lvgl_tabview.png create mode 100644 components/lvgl/images/lvgl_textarea.png create mode 100644 components/lvgl/index.rst create mode 100644 components/lvgl/widgets.rst create mode 100644 components/number/lvgl.rst create mode 100644 components/select/lvgl.rst create mode 100644 components/sensor/lvgl.rst create mode 100644 components/switch/lvgl.rst create mode 100644 components/text/lvgl.rst create mode 100644 components/text_sensor/lvgl.rst create mode 100644 images/lvgl.png create mode 100644 images/lvgl_c_bns.png create mode 100644 images/lvgl_c_lig.png create mode 100644 images/lvgl_c_num.png create mode 100644 images/lvgl_c_sel.png create mode 100644 images/lvgl_c_swi.png create mode 100644 images/lvgl_c_txt.png diff --git a/components/binary_sensor/lvgl.rst b/components/binary_sensor/lvgl.rst new file mode 100644 index 0000000000..e56b9c196c --- /dev/null +++ b/components/binary_sensor/lvgl.rst @@ -0,0 +1,39 @@ +LVGL Binary Sensor +================== + +.. seo:: + :description: Instructions for setting up an LVGL widget binary sensor. + :image: ../images/lvgl_c_bns.png + +The ``lvgl`` binary sensor platform creates a binary sensor from an LVGL widget +and requires :doc:`LVGL ` to be configured. + +Supported widget is :ref:`lvgl-widget-button`. A single binary sensor supports only a single widget; in other words, it's not possible to have multiple widgets associated with a single ESPHome binary sensor component. + +Configuration variables: +------------------------ + +- **widget** (**Required**): The ID of a supported widget configured in LVGL, which will reflect the state of the binary sensor. +- All other variables from :ref:`Binary Sensor `. + +Example: + +.. code-block:: yaml + + binary_sensor: + - platform: lvgl + widget: btn_id + name: LVGL push button + +See Also +-------- +- :doc:`LVGL Main component ` +- :ref:`Button widget ` +- :doc:`/components/sensor/lvgl` +- :doc:`/components/number/lvgl` +- :doc:`/components/switch/lvgl` +- :doc:`/components/select/lvgl` +- :doc:`/components/light/lvgl` +- :doc:`/components/text/lvgl` +- :doc:`/components/text_sensor/lvgl` +- :ghedit:`Edit` diff --git a/components/display/index.rst b/components/display/index.rst index 7b4512f6fa..5d5c02af12 100644 --- a/components/display/index.rst +++ b/components/display/index.rst @@ -8,14 +8,25 @@ Display Component The ``display`` component houses ESPHome's powerful rendering and display engine. Fundamentally, there are these types of displays: -- Text based displays like :doc:`7-Segment displays ` or +- Character displays like :doc:`7-Segment displays ` or :doc:`LCD displays `. -- Graphical serial displays like :doc:`nextion` that have their own processors for rendering. +- Serial displays like :doc:`nextion` that have their own processors for graphics rendering. - Graphical binary displays which can toggle ON/OFF any pixel, like :doc:`E-Paper `, + :doc:`OLED ` or :doc:`TFT ` displays. -For the last type, ESPHome has a powerful rendering engine that can do -many things like draw some basic shapes, print text with any font you want, or even show images. +For graphical displays, which offer the greatest flexibility, there are two options: + +- ESPHome's :ref:`own rendering engine ` +- :doc:`LVGL ` - Light and Versatile Graphics Library + +.. _display-engine: + +Display Rendering Engine +------------------------ + +ESPHome's own powerful rendering engine can handle many common tasks such as drawing basic shapes, +printing text with fonts of your choice, or even rendering images. To achieve all this flexibility displays tie in directly into ESPHome's :ref:`lambda system `. So when you want to write some text or sensor values to the screen you will be writing in C++ code @@ -24,11 +35,6 @@ using an API that is designed to - be simple and to be used without programming experience - but also be flexible enough to work with more complex tasks like displaying an analog clock. -.. _display-engine: - -Display Rendering Engine ------------------------- - In this section we will be discussing how to use ESPHome's display rendering engine from ESPHome and some basic commands. Please note that this only applies to displays that can control each pixel individually. @@ -605,6 +611,7 @@ See Also -------- - :apiref:`display/display_buffer.h` +- :doc:`LVGL ` - :ref:`Fonts ` - :ref:`Graph Component ` - :ref:`QR Code Component ` diff --git a/components/font.rst b/components/font.rst index 47ab89461f..8f215822c1 100644 --- a/components/font.rst +++ b/components/font.rst @@ -9,7 +9,7 @@ Font Renderer Component ESPHome's graphical rendering engine also has a powerful font drawer which integrates seamlessly into the system. You have the option to use **any** OpenType/TrueType (``.ttf``, ``.otf``, ``.woff``) font file at **any** size, as well as fixed-size `PCF `_ and `BDF `_ bitmap fonts. -These fonts can be used in ESPHome's :ref:`own rendering engine `. +These fonts can be used in ESPHome's :ref:`own rendering engine ` or in the :doc:`LVGL Graphics ` component. To use fonts you can either - Just grab a ``.ttf``, ``.otf``, ``.woff``, ``.pcf``, or ``.bdf`` file from somewhere on the internet and place it, for example, inside a ``fonts`` folder next to your configuration file. @@ -83,6 +83,7 @@ Next, create a ``font:`` section in your configuration: display: # ... + Configuration variables: ------------------------ @@ -155,6 +156,7 @@ See Also - :apiref:`display/display_buffer.h` - :ref:`display-engine` +- :doc:`/components/lvgl/index` - `MDI cheatsheet `_ - `MDI font repository `_ - :ghedit:`Edit` diff --git a/components/index.rst b/components/index.rst index f937b80a23..df4c68c255 100644 --- a/components/index.rst +++ b/components/index.rst @@ -26,6 +26,7 @@ Components touchscreen/index lock/index display_menu/index + lvgl/index media_player/index microphone/index speaker/index diff --git a/components/key_collector.rst b/components/key_collector.rst index 552522b5bf..0976caf060 100644 --- a/components/key_collector.rst +++ b/components/key_collector.rst @@ -6,12 +6,12 @@ Key collector component .. seo:: :description: Key collector component -The ``key_collector`` component collects key presses from -components like :ref:`matrix_keypad` or ``wiegand``. It allows you to process -key sequences and treat them as one, for example to allow inputting of -a PIN code or a passkey. The component outputs the result of the keypress -sequence as a variable usable in automations. - +The ``key_collector`` component collects key presses from components +like :ref:`matrix_keypad`, :doc:`Wiegand keypad ` +or LVGL :ref:`Button Matrix `, :ref:`Keyboard ` +widgets. It allows you to process key sequences and treat them as one, for +example to allow inputting of a PIN code or a passkey. The component outputs +the result of the keypress sequence as a variable usable in automations. Component --------- @@ -92,7 +92,7 @@ See Also -------- - :doc:`/components/matrix_keypad` - -.. - :doc:`/components/wiegand` - +- :doc:`/components/wiegand` +- :ref:`LVGL Button Matrix widget ` +- :ref:`LVGL Keyboard widget ` - :ghedit:`Edit` diff --git a/components/light/lvgl.rst b/components/light/lvgl.rst new file mode 100644 index 0000000000..a4e1d1d3bf --- /dev/null +++ b/components/light/lvgl.rst @@ -0,0 +1,44 @@ +LVGL Light +========== + +.. seo:: + :description: Instructions for setting up an LVGL widget light. + :image: ../images/lvgl_c_lig.png + +The ``lvgl`` light platform creates a light from an LVGL widget +and requires :doc:`LVGL ` to be configured. + +Supported widget is :ref:`lvgl-widget-led`. A single light supports only a single widget; in other words, it's not possible to have multiple widgets associated with a single ESPHome light component. + +Configuration variables: +------------------------ + +- **widget** (**Required**): The ID of a ``led`` widget configured in LVGL, which will reflect the state of the light. +- All other options from :ref:`light `. + + +Example: + +.. code-block:: yaml + + light: + - platform: lvgl + widget: led_id + name: LVGL light + +.. note:: + + To have linear brightness control, ``gamma_correct`` of the light is set by default to ``0``. + +See Also +-------- +- :doc:`LVGL Main component ` +- :ref:`LED widget ` +- :doc:`/components/binary_sensor/lvgl` +- :doc:`/components/sensor/lvgl` +- :doc:`/components/number/lvgl` +- :doc:`/components/switch/lvgl` +- :doc:`/components/select/lvgl` +- :doc:`/components/text/lvgl` +- :doc:`/components/text_sensor/lvgl` +- :ghedit:`Edit` diff --git a/components/lvgl/images/lvgl_align.png b/components/lvgl/images/lvgl_align.png new file mode 100644 index 0000000000000000000000000000000000000000..e7a1381ca6e132dea3ac5302df356af8131d754e GIT binary patch literal 15911 zcmd73byOVPwmq7JBm@W+f=dDfcXtS+ad(FVcY-@45J=+?+}$m>LqgET8@DD%1C6`O zD{{W?oO92;@Ba11`~AjXbTy-@VAra>*P3h2xr3DyB+*fcP#-*afG#ZsQhD&;Q5W!i z`Pn1jlP-g412{Z&R#8v|j&~34ZUpBK9z1ycKpG^f=AOE<;AcUs31hh(Hn{BB$bK@| z^#q;sx5qv{#nEHNMJ_#rw#e(a_*#E7hG-ERpZcgm6i&yZJZr8fEf`!l8b@mTWu3+& zm$HL3x+k|c!^MhC(udzi0#c^WZ+-C)RQ3f^7C#@>& zg`H-II3i@i<=|Z|pV2wseAxcV`-0FBlEULE&k|qd;Mo(6@PNl>0>IGzIr?2UXMrUb zPlVmuc^v1kA){&!5uql5EziZxwhadbkKD-7aH);Zt`iX|F@~QTW9sVs{1Rt_)glS` zh8}R##$i2&P%rzdZufgP@)!)@_+GLZ>eJOlE-wP-Lp%A2}j)~exV=2 zh;Q{I!b$@*lsWFST{$ZE5TmDr$TK<4V?;(++}Z(-gjH`geI(a_SWZ zrbdA5#MJuvDBV;nV{|K@9_}dIXd)`z2XdaFeLJuSjLSO?^dWB}JkdX46wzJ}(}N#3 zD*+>{@nuet7mR$e_gJg-r=Xd78D)zC@|yRgL-Tr-=732DgD6wVyrSeW;(mnUlVbc5 z_1EwZ*F%^|kDP>;T$&EWQ$&Y}g0v{u3HVevhfm7&xZHjzqC*#NIYspAsNh%ZGqw>)47x3uGzbOwvD3Jfe~aZ;7^NH{@5ghzi|B&qd2G^=f#{tMIm8tA=!7S zlcCsamcq#>jjF6&M&raNwCS8rgT*`frUMzsYUj9cx&9Fn-NK+KQ{Cr{h4RSC| zrUS(3vA_>?GGUF+j`Mkk{L+o7Ttr;4FO&0OGAwJMr-r$=Q z`3JIWH_JfkCM+V0%JIk75y$msL54coTy>sHJc;5pnB?gju3al>tzF*He6X0ApYw31 z$2mL}i0M)v!8N*3^Ef-Q>P> z#}bkQaUAfl`Q-p5<`ndSi&Z}r(*B)mx=dRjn_pCnfj!XHD9Z_ ztN6`+8J&708c)$$;pGb!yn$UWVCrC=cNOV)(fft$fkZ!3W3i zsq7`>^X+}pqR_*gldk9;hht;3i{5(^g=0_vk91TihL?^`hbH6>Le1lt*&?;ky2P@y z2uQ2d3{+)g=pI5tGG^Y5QmggG}oA$b8yfYNN#|6w#UTJ9X`(I#zqWTeVDN z-8hUD6&#(&6^NE~L;5N38Jgrk8Z%@hOuPU#!xYN@8>Ec9= zBotnRsooD~(<@K~ChY*f-SACR2@xGc;1`gowvqfIg+ESL#7Tkbq|J{J#exZS^kb5S zPXpW@fj9-(i<8YsFJX!sJ+B1xpVAti=C>p4g>Efol>+#PZG_s!<$2?!+m0X1)s6 zfqBiR>t#w59t(ex`I7!={U6C4h<3%F?_i|D>*F2owy8QUR|r{@d_>|i`f098`*Ui zb5Ap9BE~xV0@a?=+tXdZ7aA)1bjwfXi-!MbK}oT*bJ%W*xgT>%*8nb$ zUr0dpeTK@nUiwD>*`CLEiLc$PI{oGLI10#TEz1d24s6Wv^%lWI;uXFOg1D zQ?n4AFs`16S4+J!I_WMp0B$QGvx_=|?XR;NnJ}edb2tj6b#igp*3Sgf0#kWb!76Fk z&{wtslwKxYo66znVyg22UYx>co~BR$EE}UX+P&z04<2l6j<4?@J-EymQn*XaS?+Lz z-H5n+<#4Ghn}|~AYP8`#5X5W2d4CcFZ4?chLi|V_=C?c3I}J&abEld6iZQ!3@b zM}i^^=Wl)7G?F4r4wQTCsuP$E?_?PdPc}DY3TtY{@LAM*iE6Z(NNKN9>Wwh54R*?f zb$QYRJl6}pvozc;3=uZk$DmLoUyR6u`V}?Q5xPBPuwk<}!!JR#joo?ee3a|0d|Qcv z-l*@iM?o(`d;HxJR^?hV1_`y|A!+KXR5Z3-^~29wgjZ-wWo2h4t$GWLjuN?Q(?V|8 zbchrMFWGxBKB`dKQX3u1?JK+;0LLw|j~z_r+RhRwzFBcdS+3<#vCXT)@ewSs)=#lv zPXg1X^kGHk5Rhl5X=)7j81&=@fWGrOn<}HaatvX}$U*xMRF|7~p)5LL~>X&}@&cd^Wy~`$6Hr2wK z18Zn$%NS1MWGhncV(M-A1uq50%+^+S=bdx~=p8l}-X%wlRzoMMRW9KXd*6D5m-Y=Z z2Dd|hdZ87|ZOw+HX&#+sh?91K-wL`EPOv7){Z+U%@Vf1sRw1oTt>Q#>^0WD62cRsi z_a|YFC;~r%ZA&9hORQs@W*D*AJdv=qZwV>0!+0&;Ytup3VZqjJASPNgI?Rbc{76Nh&I+N$xu47LTu;UMMSCKrCM zifu#87aBw1$-M2H>lL#DZ`F574}KB7shZmkcBi;>ZskmW2Gd;*OC?Dl(CYRZq}fJ` zGwzA0qo@^<0>%4vKR#6Ys)PQ)@IAVzZ;V)F=4MFLSGyX~UuDvBHC}?$PS?2gf8c^` zzfdKvY>VG?AeSIJ{i25ovzy*WFJ_*j4|PO5+5_OMxYq(dq_0Xi=Rk1DcR9q$>*F=o z%KSq(x_wo)?K3tM6bD{epWPpMs*Rmt-EM#1x6-tucbu^?V)&Us%Dh(WR??K8kM9>s z7@|{>xBfV0hVhwKUcYKlEW2t?uI#-1b(I!Bg05iB(y0XdpSXjCehyoD%xi_nT7GuT zS%{^W#I5N0d~CmVPGy?7%C7(R1I;OmF|oGyyksCJ3Faf8Bs+eJ7nqKq&RDdjEJH3I zOhT>{_C>VH@WS=t1n`StV~`1Hy;|EAIa~VD#-J%qjg;&#ivRbXR{b^4`Y4uW&1v(m*vd$!SESOe>qIg_`uPIgCFwBca+~wi0Dh6 z)^6MO&+7*LLWCFC7#e+P?O*O0Oj}1-t*FMo6AvNtqvYn)4;?~TqABSp(I1{@TE|dM zr+OnOqNRztW671PTKS#jFSvvDi?Fc^IZKb5I8h*({@p}GO?DKMt$dBOwP2R9b8(8$ z3{o^lyvQruIRVyM@nSni*>{BS=mEk;_#%({mJZ*piU(JYUU}2o&*@5gWZwpHN$~aB zWXTZuUXBdHZdV$YrcEbQfop~J-Re`%506Mqr7^Fh{E&U?Y0FB9YImC1RW(1)O5xIgj7oXlkP9PsDqdjX_oxohxow1s5A`0rqh501uOmG1 zhW;)sX?*3_v6W*@&4)JOIBCJTp(~J{c}Q)YJGQ0fCeamUp>~Xu*(w6psrjnaZCg1= zU_GMUv&EYrZG6m1(vX*IuyTmQpM@Mr5&13;)2)!5D~%YQ%n!=9Eejg3a}vDtrmMoE z4=2v;7|?SND3~vWVR;bc<2`Q@l$OikBm8w)d#-7_ZTdi82sJ7pqf|CJ->OkCBHxAHzDgqALD!j*epm`8^c6;gwZ`Sh z7BEO&=7zP3L4xC_dxJBZ*6r9Ap0(xYNJJw|PX6ngc`@ma)Ji}#$r*j-%M=d|Pdyse?C7li{iFJagE;$$sn^qi34@Ktd&jc9r z#N?hiq{jNT_HRLIwjtk8Q}p<@id%TRD+f0QzS{LXF=y6&4%7V}pMVpEfBeVXgcLK3J}K5u<8A0WQEG1R;gf;nDW4s zqouDup$(#taV`g#)5(h*bIQnfpiWHgo#NJ;vYdsU2$y-HhUSPqHr+B8E(Op~5n>`P>JPmA-AZ-G^$J_Nr>t0drdd)m?MHJl ztNa1Ztz90yNOe>q~>NMR{+SkvjT|cv#Qqyq=o>8NRtl zH^zv!EM|aE{nz*ABiZ=YEzCc!LScqJ5+JmU;jD=f=4;*t=Vp2PCtFLmC>8^Udz$Li zgs$sxkDXCZqsE?cVaSiRxl>#>MDr+%jvbi0i`8?aKKJUi9INGu(8#H;p-Z>W^^;vp zyy_7v2n9$QHVZCK41n=y{(TcK82H2o3Ai?Z=$$Ch%!0mXYk)X!AH-uhIrm!at~^g`6Y?I|oH2<^vYSzq!&ubVp+;6 zZ!bBUiFEKK5!**oX#VwH>(a1kXRi(~rP=B%f3UUHtX(yZvWYE#VOw0WN}VLiPi>RZn$#y<09xXkZ1ZsT$!?aO?33D*>ui#9{N z6~xv?Ll7(+CVchc5HUd=xcD-KfRM-ii&lI55S{gUTVT@2h z3-Ad;IhYlt_|^f08+)#^-(DhdeexTP)& z^5jDWqEAel=4Q4?4N^YMKoY~eXU^ooor`N87Eyyw9U~1xrCL&-&3-nu&HeQ%y8!pe z#;9v9(!cc&eIj}l97%Hg5;SM>J2o_kK{h2^bIupa%o(=&2b=6x+=yfT#vb+qK?%^L zgDle`SNal|Hen~;mX8Yc!v7#GCnn;vX}dgiv4J+b=dZlT))J;f=v%DQhI({)MLY;U zVv2bcZC;=!nPOPoo?%zKZaHi;`c!NhUkgdMsYQvgu!$m7HC9Ue}bW z1Nd|CUPcV@?swmf?ioX0@_#Uf6-CT=DNJ!Pd<9@IK$T4%T=ILNom{^J$~mo{y8%$g zBZCa-;+t8#h|&qW*$`4UT%ww-pqF!DGc+XX?b)$|>qPzdMEPSG)4mxs^;psC#b=|x z-p?q%M9-y05z)pq*zqhkS_^iyIG@s(%=xm8Ow267FhpQ$$C6Eq?V$J(R(SF@icS|R zI6kv1ZAYrwnL2%g5#Asx;c%$VY#!d-{o;S7AJzF&iStQtdT1Y6!5t^^q<5+s{a5_^ z-TEjOJ}KIDt=lciw98pDayUbzy+T2o*@Z&symVaZjG^lSI>qINx}LLQmje6E;+Ccp z4LXZ)NkM31W9H8%PI9lkCAFbrc+f={u`h5Ed>gpPDco+Ja=-B81eFD0xIi$IR)lnz z)UVtJx)Xa!0fM_a&EzCVtnz(5pFfLL^08XTpbHSh+Q=T8um!UzgiG)`o5V2Q;ggEXCcHb0agd#BJ>I?lIt_r@mvvF&8n1YNvSq%VJICQNxvjT%A&aGv=p7;eB z`qVL#t$HU!>|T~^R&tJ%$^sGGv1D15eB)=-yFPcDy^U5jCTo|Ned~yN$&}g+ys~hnw$|gG(wQE;alv zZ9657uF%}#PkF1VWjhJFw%G7m_Koqu|A3=7-ILyZ!jUVn10|fBIND5c~AYNPwh~gx;+Xb%sSfBC>VMdaJF(py!Du zTZVoEpMA#1-e%B5YuAse-Tri_HgNOFE- z>B{LmW@B-5h+g7S^ym!oZOr8X02$!FW)4A)0LUgNS*ub6S~0x|DRJhozwz~)Vw31D zfXka#m%>t=taL6c6q&q2*NyGN4?s*szzoyW6oU<~ZNgp@W?WmBV5nPG0EEb);SqMU z%Y1P%ZZjg;z1u?9E6XIsSt6qx;$&HZdbH91eqZ4e7)WmF)kZw}PIJ*3S132<#&hf` ztqA+eD|3-#S5wRg7dh#@6$?9N+abX=~^x@*}e zyXx;+L7JW0r;m*=nWgA&H)L9iKsV~}YI*ScjgU|GMzN}!CT>2Rr*Qi3FcRhFD_8z+ zmZAIR?j7MM4+`ZKGuWCo#~0KCEkiH_{~%4D{Dm8wrJg}Q$+v!Ju%2o6LKN3HRXC>_ z&ul0RItgI-=KpsL|9saC&^`Z;insq8X8%hnhHW}O%>0)3^``=U7V?1a_Kq`lGD=)I zH1s4?X1wF7L?Ph;k-vNPoQL1emNRyf&i<_tpzwMZI&1Gu01>NE^=vRc`80;Hqs+r#Tkx?x2f2ZI2q0|# zP^Y)k0ykN@w^Kl~dUxWnG*PZl;UveuX7}n8k9h&3wET;jG*GnH$DL>30E(^`vvOq9 z$S6x03WuNpMCZw#>rk&xikup)$S@|eu+pA4Wak^BFzSr$DHIM+mf~#&OuE~M&;$iY zeZh%np5_g}K-p2~_*SWcGXdKG>Bzkopm^3`t6}15rt~mWs91zvnYsOJt<)Gw<)b!9 ziruwb`Fnwi&u!1#>1lkPV^3SlYVP3n6y+u7TftG{T#i!rC|O^8{p+$t8*b@>rymSI z`u$!W#<-_*cFoCzo`)=kLPd8krneHEv6MGH&^F@U(O-whzC6P)boGFbn~a7R9+tkG z16wUJ1KoO+6`x;_h^3R!Vpq+}%oJeAQzznMDKWc9i2>gO7*mBAzw&DsI z+y8K|t||Jp3jd9S&1+2H50rFXWO$_rfLTC+T29Y2cE(E?yh4onFiu@*oQX#|K`4E~ z>_B3MjOBN9*g7Z@8O3g|Npr5&W-|KC*qpisGnUNPk@EVxghU%V+rL|oRmU?M`c{!G zfX7pcQlAO@;47GqkT#zv6Sf=!s14Lc&2#iTBSzt80Ndk{m56OF>|BX7ueo#r{l?)L z05Gq?0R1k>lYLl3e$5JC*-4)EIE@u~>P0F=VEn-O&!%~@k9X5(>5{D|_$@sG$5&m9 zh?U_!gX4yZEe%D1HTt!TKy)t8x5tp<45sig>(Bn3&ZTx~H>d!aUf>*njuD=gg4iwf zorHXiI2}LOZ>@zt7#5OXO!|WA3xrg-(Z>>mTvOg%^7{D%f$bLbRfO#Y+9r>jT@gIFsa5E^+HFbM>@x4sz$MFVKw-5+#)t``jtdv?TpnQBrI*h_C2l7M4mf0FPxP_zPQ^c}~Q^DpDi++v{xydt%7iP^(iZ zgBT=_Zg!H4E+uH(mHxEH!cy>HqyL^jPs1{!kQfGdTL8ZhHcsN^f1NF2KLD|l)zf)u z<}Py9rj5LyaBg3-bD0=#5H*;`Stb3uZ@DmP)8hU)ZRQ*+B51UbAOr~|NV}cJ9wL~w zDIa;8WGy%NABY=$UA(8h|DJ7zxp;diuE!YrC?SZ>;%$UAr!MsiF#(0&w~D@H_C&AD z%kdeU<@M6V&)IfZ^l7gNJIa-*k-(C=jy6H_V01sYj6tG^*}ecWP_IvmrzMo5*MafT z$jh&m8*B#x)Oc@}?~S_pTwF1IxyH_pi=+3R1vPW+Nr$b?>JxyBg$;X`Fl1@9a0EOB zkT+aN(ujdvpO?CR`4r`3aJ;E^uJ+Q#$CX^kwXp!XK+-0}pyD`xkEykAia|N#sf35` zLA~#pY2-cF?r3{mCI~qi4gYnu1u^zGnel|nUZ{{-Mt<@6ECgGm#FtR_U5_n*F%`?& z*Q&yMjM+U;&n4G#-E(nY=vH=KeWfBJBaE|Or%e!GZiq``4X4^|_^lD-GPtl=T%`S9 zybuheu)}lESmWr1gc=`x@yBbT^2GkCpl-^u;-VQ_*EE9!cQWH+8*;;sa!o3I-Rlqk zI2Fc`<6!&vp%;wUm6zU5M;BS7W+#ZLE8-oHAEq#D<6FE+NNy)}(EAuZzd6FcWs6i2w0eP^Zr-lnP^nM|j3Lwt>n1PAQNUp#ZJI$r(>lEwXhi^hx05U1jIh3o+qhKJ zoOJJpq8tB#kS-$JN114ZCj4%X*c($L`+7uv<7ZCqiW1@%Y4N=Lx3KpUs(Wmg$8*{R&{H?~Wv6yjFQWf~>xGZhcjc$jPc7U{oDW2M zy?!Zz?i-xIrTYda%5Q1f;)N+%7iLn;%PPsaBKDg<{mrWwAuK-Qi}z*S)ZYaFUi4zW z(7L3gn2qZwk?KV7=SI>Jw##DMTZwe`(xvb2UEa($j$grm#0aFfv&$ttMHq1#un5=Q z)vx$-BrrYQW76s=LtmsTWaIi5RIi0$B=oaHkEt=O!B?R6K{^9gtKdn*bP zNjOvmLa0e^@6u`|H+YLCX(f;}t1u(etwXa|g%ce;7b8qv_X1E$fgeC5+w((SHR$<8 z9Dmn)QE}mahDQ>E!KC_NB0brs;{$2^Bwo^Tt3i8lHK*N^g2elh5LXqgx4h1nK~m-SBzEZv}q%wzH`xd0W&JWFSY zC>(upp)kslkqqbTv4@g5ysTU^yeO%sG|(tZi7_mq$cs8B%!&UMnNZ4W3Xj?5D!FwD zh6+}%F~d`j{;Gb4+vA6m`2x8u1=2?D?RGzF_3T4`HcGwt*&dS*9P4yf}q_AN~X<%%OxXgbMbEwe+ zm>D+WTxIg)04;~`FD+;2C*nV~9JpGh%ZyLuO0y^DbN7qBr5q5@8CfLcN8u!(vh*0m z)i)W`7MPLNulx4KJ(W{VlkFw;@CowWA5)yD{^nKyU#uw3pZmo@5K^zCr2fD7jC6s^0TLtQ&{p_V7X@vY7l zm&W48=%qLncQ#hebu-A>;BGy42*$IctoSnjp^8AB9`x`p-Nlc!3H`{%_03qm?B;gx zI`@`T>fs(#WZg3_;n9OkJCXCEhPR+#{JK@IvL^4%;{2=<)UlULku|j5F9Y0ClaO_fa-s?l|Dhxgic?HS1QWt=#^uR^VBB-{DQ@% zC;`K>LVd!&OF7GJ0$=U+H_ z!c8}Bjw(7olup0x+C-=cn@-oJhb83*Lw($s=|t-!6rexA8)GHxT%z8MR8dm5+42 zYNqo@3(#a^`rf2D)4%-vHzJ)$)e>A&PTl+FARpN)Ge_kYJDgh#PmLC^bo!<%?=DWb zS$XPNx)lmNMZFU9=GbiBj9%Zaz~0R3_Ee4+ai{sQiJmvci~1kLxl(`ROzaBA?DGSV zW@u@kbC}&l|F843SL{#LygRm>;ajW$>0Hk%K_;w@YICX9&}PrzUcgM+y>cjBAoh@c z)e(BA!%agN*~ijOo~=f&Ub|mwqY0QhY!y_8tP6W)w<^n7AbW{*b0i#^^O(CVYPLUO zl~}kYL#wWfcGR{bN1^V^qX~d*Glrjh02G#v0z&~4Ryux}g5D2mg{Dd89xOIV@5d$+oniO>YlA+DQ!s3!3Guh>Vj|nI8+C~e>+qk-8)n>{&uL|)c}i@vRYe1|^05pGSbN$7SRIZ#E17a_fL!>o51l zQQuuI|FX^j<+~oh4{LSL#wG#YO#rQg1{evsMKJsx-am9NX+l*}zprnMMe8UM!$1?q z9j{z3Dl{4AYiu}R3Zh`&=%1ezK>;RuEPUO9!n!27V5usN0WuG0;QC0~nIi86%``dw z0T`5tikV&w6#vvPk}yF|X1xR^$f|Bi9GX%Ek!tl_NA#>hew}Jv@KeRog{LQ4nwQ}| zfKqAu`lD#;c-LRNXlEh48*ku<$mqoXSi$Yyt;Y%+cTt$H0&)`2*3E@^3LmH|?7#U# zi*f>d1)GCnR1b{?^IIn#Ni(u)ypTY#N>+ZeqWbF>eDe2xi_)#jT5Y9BmpsEO{Jb69 z)4<+YtJAlordCC>JdaOQAb(pZREAoL27J~+=J?=dCqcbqtRF_;bOAuNk#?g<_y=8y zv+eqV@WWi7>+5_VUEPG<`_3_ z)gC_=_wWL+iTSJZEgydD6X;uJ=$FMqz1iaVSO4@#6k6HYZ+P98)NNdB?(`Yim$`QaZnLhmQ!?6(lj`$UGhWTb<(PCo07ykcxwbfQYwuopg>{ zw~lNXs?3P8lCK6Ve$~g9dm~$L5$Oth&5DFq{1^wFbRC3z*<|VEBz*rq-oMTclbUg{)zgnkSonN+FPd&g4Dn%i@>XYT=D^P%<{}@6`G@Uq@zIvg6zpBRCK3{7i;nJvAfcD7r<@2D`FO)8J z4P#F}YXBbQqwRylF|+kiBNr-BELt+z!}R-GzS~Ib7;D^;lAtX}of~8h(k=%J1J+xi z$UakSIcKKy^--5`?j}8qpP;Gb#Ub2j^hYEJnBG~&uK!ZhAeKE{EFbF_ z`_&$h68nNk_GxAkg*7>_Az@pj5mqn3LlI83XpH-0Z`>Np&AgknzE(U5UR(UyA0&_h~ba^?f zOR{cbG4oP;-?>f3wj22prw4_7hY9GX^%J`#0L%Pr9gy-AyfRd&O?C>vucz`_P@YmR4EFqK*Ao+l%W=8i-Kf62P01h%M=1FfGy| zLf#_NNIevJ*s@oAmiy=`eWYD4Ysp%YhgU83O!$l6$i-czU!&OiT>xG>v|V3B@0LZA zw!!0Ek;9P8ho?b$={&d{_n0599|RzE00HE-J6&u8`%|W_CIQz^rMsGeA0mG7r0wMH z=J&#g%y-V(ULC1jN7}11$uVX`DDd>zikj8P*;_s(iP(7)U#6OYI#_;ICR=|^gX?Y? z<8emjc6*dVOtQ(OGJl2TbUbSOtNE-Ul8iWZ;rSkHr9)ccvfx5QZFAtG5GUxid+o5v zZO>sj<*hjV{dIYRIeS4da;xGTSK^s&ge*p$bt_w6CAHaLM zoD+3c-3Ua6eJE<5IwleO-o%-An;dnga5q)nXQNTxNOUvF1z!%Ezce(uPWtup0+3qD zi!2xKFgm$&OnX$$)0K|xk0)qW@2CRXa-^yt8Uudv9S@ld-kk9Uwh5dn%KE)N<9(7( zds&}DK#`Q+xoCYInCZuO)8oyZpzn=UHN6d}*F}ApzGQ$Y?glM%ETI+fVMBP|bzmk{ zAsaDgPyq;n>W--ePmVgqaj=V}9S}&SAKG2?@td#a238K9QU2aGw^-T(usji4Kg;n@oOSmbmSvzoR=&bx90`omB--*#z>wc4k{YpDGnK zJYTEoB?N>09jF2ObIQPwyqR$Y0blO)Mfy)#swiMu)2kH48bd$u^YD9(?Ik7t9AUS3WL1`IkJj^ z08t8oxuCKv;3pp&Pv0teYxwPkM1Bs;p>%mAlM;3H`9($Vovfpd#jHg7S;S4rx=?c6 zXia#jd8858-dDa~)9S(_v*K9=)HMabWFE|3JAeQOYytr^=ws6gj{(3O2S{<Uv!w=GakJ9-XBbY575B{vF?}RNum(M^OZ_m zrgy6(bVSF2HCmQ9j^Z*q2*JAS8=Fx+73bUS=@rOOhG`n5_`1}npjIIkG68`R0R_eG z;Iok4MJ+n{tC{Q`jj-FP4~bRoA>7xE;C^?bc%$C5l0E~Ed_ z>}V+v-*58Gb?ZP=yr98Shp&YFC2bc#t`6bQsLbK8sJ}a0!n7~z>cdTwGi-tG2U3Og*%nW zjYqNqFXv_)0~AVKUETBYu85K%TSmaA9Egg=W>nDp!E=}A*yQI=xjJ!_7Up-v0U_iw zU;ExS^OG5VPq z-k9@PUKA$M^LPPzp(FqV_RQ3N<0$V(s{MheR1@KP>r%qXd&}SuOA}5)L&#bc0Jb+0 zsoZIz+{uWAeXDamv~eL}`?#?65IU-7EZNw-QRbE}LVNrbxA3l3ljJzZUe0Rg3G=ga)hADBtGcaXF0 zaBYCCZJ}#zpbJc+RLhV4ARY4eTpWEpjF|{4GyS0puqC`UEg|w0g8) zYhGY}TmB@+?rHo4!sU4F>DLJ}eM8;#NKChck9+$@5@B7&P}(6K*5~5iOh!~W#f{K0 zVYqax`qI*fPJ1#ISH)<4J} zLjarTFq6Q&{C1cXU%=oAVqi}nQCRAF)g_x*K>7q5zo%2cFF~^i+YsoKIxl5{5SHp3 ziseglro?*G(S)$wGNa`^Ip&HI@Ad%jK){oWnNeUV2ed8kXXAWigdaAoZl#)n!Mz6+ zGfJs!thrt#1YsNzeuFY;cuQ}7ZAkI8ASo~%EB?ru34CDu-X}q@qon4ryb~~E2KU~4 zW^lLvd6lGSb%_7!aT)hk$Djuw9I<6M-9q%a<@*~3*?p&}Q<(5PkLJII7()T0{Hgw- z)Nt&i(FHpS;pGMz1;v&&ghb77F_UJ|7}ZBIB12vA)o|!(eMx(|@v+?dq58A4`+oz+OOKEcc4}CfxWK5d!ztM z@kh~nqFjp*u|@1(Bnt1Jj8w>V11~rzsX}|L%%AhKdSDzM64z3+#)D2ApG=GQPegxT zP|IzO^bB}k*?pu%@mFFzV`Zul`}rQL4gcIt;i~dIJ9IgaMA@yCT<+X}mSA5_O5`1Y zKaIErx{L>25s|n&VN&P(UYYz#=VACa9E{np%{JBHujmVz?^)l_kfbp`sln4xD=+Ev^767klsj{{X&GnnC~o literal 0 HcmV?d00001 diff --git a/components/lvgl/images/lvgl_animimg.gif b/components/lvgl/images/lvgl_animimg.gif new file mode 100644 index 0000000000000000000000000000000000000000..9f6bce8bee17d7b8d415e4436d93d16152327b82 GIT binary patch literal 7025 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

    YrQaDu@zRonb)p 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 literal 0 HcmV?d00001 diff --git a/components/lvgl/images/lvgl_baseobj.png b/components/lvgl/images/lvgl_baseobj.png new file mode 100644 index 0000000000000000000000000000000000000000..5fe7294ce66f7e61a72fe4a3f18a876e81800fc5 GIT binary patch literal 730 zcmeAS@N?(olHy`uVBq!ia0vp^`+&Hfg9%99TlD@m0|V1SPZ!6KinzBo4rV5}4? za@!BS)%knB-}_zF6u;_PRJLqf``07k`uu$-*KWOhJJa@5UeEDDiFa%z=5s6O{r`*7aVCdjI$H;`z&7zSa%D{qoMP$_)_&3@@WIpU+5 zKM5ZGUZ4JMN$}FcSA`CLE)nyyymO~J(OR~`%c^CGv&TpzGOXubyH(Y(cbE8KtGQ9x znoGa$lS3>D`cm2SI*miZiD-Fp1j06Yc6Xp?K!@2%BAyv z?|Jvl%~-1&eQwf`Q*Ks=4X!xrE}e7F@7uh)v!4I_Ql_=^inDCn*J;6Cl{;hfUT+NY z()?_5-_Pc2K=$3Z^ZJ*gUhl21`*PW&cJI?yc~(oOT)TBi_P2@LarWOw7ng{=-TU=k y?Yj5wYqwte^*3hECmY!tTMB*J=1<^TSnv2`%R|Sb!Iyw(mci52&t;ucLK6UZ)mUHv literal 0 HcmV?d00001 diff --git a/components/lvgl/images/lvgl_boxmodel.png b/components/lvgl/images/lvgl_boxmodel.png new file mode 100644 index 0000000000000000000000000000000000000000..98251f41698f40b98077c1fdb5907c6e0a83eb10 GIT binary patch literal 9051 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 AumAu6 literal 0 HcmV?d00001 diff --git a/components/lvgl/images/lvgl_button.png b/components/lvgl/images/lvgl_button.png new file mode 100644 index 0000000000000000000000000000000000000000..c80d07f2d16b54fcc0b841b1e9d703cec2db3ecf GIT binary patch literal 1062 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 Q4Wj@X%hRYTq|fz#16OP$v;Y7A literal 0 HcmV?d00001 diff --git a/components/lvgl/images/lvgl_checkbox.png b/components/lvgl/images/lvgl_checkbox.png new file mode 100644 index 0000000000000000000000000000000000000000..31b63cc7f5eeecdcfb2f5b39df9a530a6e7496b1 GIT binary patch literal 1420 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 literal 0 HcmV?d00001 diff --git a/components/lvgl/images/lvgl_keyboard.png b/components/lvgl/images/lvgl_keyboard.png new file mode 100644 index 0000000000000000000000000000000000000000..a9b009d310b9e2617b9205df246dae67333a710a GIT binary patch literal 8996 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 WlPM2Y`?diK4+c+HKbLh*2~7ZgofS|3 literal 0 HcmV?d00001 diff --git a/components/lvgl/images/lvgl_led.png b/components/lvgl/images/lvgl_led.png new file mode 100644 index 0000000000000000000000000000000000000000..0349f1b9cde81373ffe8919880e8e8f01e2de1ab GIT binary patch literal 1123 zcmV-p1f2VcP)CEO5QWcMQj9tYQpm8y22vzl{{L@S*w-aRAc0-5ihxx-&?y4hVkB9Xof}{0F61OF#o^}je@DW%#r#x#F9q8|qwY6(EjZIwuE9^gCAp^Tysi)R7= zF+c$l0ifV#VeJL#QAjYAMq`pl`7zb1v#@rBY^EU*Cv8w0X$52iB4S-8tBrk3Uptgi z<3yYgBbhKo#0VzD$OcG6U@gSZMmQ^CKvt%-gXt7dZ%mAg6Q+nT=5_^51OOu}ArtFh zE&Tu{Az>}7!;bKs0sCx#I*B1XK=Z}AGS7S@U%U>#iqDNOXt6vd~{Oxgz8rg?oq z2$&{5zaWI{N~d?=E#fWmp8)UW_68)G1R$`7X#;3Zoi)uk^63$8v43YR60fiP73J<8 zg=WDdl2TeTZ2$o^bt2-9w@8Mqc9?jm?l0QqEV52dMpz#FH{hLANroaZ|#S64J1>Z z;Zx-E%dWgRp|{BA7fdAwnr&yXRd+yH+Ev%$7&W!~J_i&+Ha@RmW%XKW1w?{Lm%eOI z7&qTMTO`AnP09;>T93Q}LUAa&nh?JitX8`H&4c$e=z&UHk%(Aay)aN2Q_F-E)(kW! z7m2b%k!*K{@9G`%unkI^*Q=0e?WgK$or_5ApFb|97&d@Zen@zf#xM#E3EqbWHCRYE6l@|-2=-r)LsfxEVHdz0<)gVd0TboJ1dLqPsloP{6Y2RJ8p z_nZIFE{Vw9J)A3}72~(m&uL>!UJ$Jlk^_Z_x=23oNYN;QhkFbIych2=c(JY?9e3B% z>Zi3r>Io*-=U1|~$X8ukxhph(+~gdnlYdJaK*pGq5=7M1N~6w*$f;vcl}J7YIXBY` zLr!fGtg30%1`w8kL(3!vn(x04n+HWK4~m+F;(brE6)e>@5H^{N=66@brKbVfO@sYFsvc{8CIEABw|wqIQJn{*TAVdodsK=7 p;7kj-vNS77XZ4f{slH09W%Z?{pkPz002ovPDHLkV1ihd@-+Ye literal 0 HcmV?d00001 diff --git a/components/lvgl/images/lvgl_line.png b/components/lvgl/images/lvgl_line.png new file mode 100644 index 0000000000000000000000000000000000000000..6d85c445b4d1abcd49c9ac4f5737c40c9a234036 GIT binary patch literal 1775 zcmZ8iX;_k36sD%d-AbE46Du}T)AZ981JhgpMay=le6&%-78lGECG07;C=ex58d1kW zZF0<9A|o|RLj}VLOVdnD#z_WqW!#9GZ~o4Y_nzn6d(ZZs^W4ik6pS}DvND1|Af`lu z?_p5tK%6jG39dnMVH79~69}OfArQ0n|FGh=gPAo1vZjpa>wT0a_)@$-W;5PWqJ(Y4 z9P(PT5zXIn)oL$#9l?TdZ^WK&xyIc!v24Vj$$i;qaN}@0l{~bE`ywJG*@94Mmltt~ zxc*VmuZY_QtDGM81vMTyvv~OZ=2^eAx%r-nraP(oMUN()y^GQJ4y7wqjb;#6)`dMA z(^h1^v5#)b-}HaPshq>hf^$4<#Fxvn{()wPdtA2NzqH2Y8~sm>;ou^-MK4)+VA8f} z2!3Trsu5efF&3w0v@8#5xF&6gA-Ga4SZrVieNeOQe&e5xt=zpW3rJ7RqE`^ZEvi;s z8wq%LD~Z;LQ^v*HPk-IpywpeYADnvgG|S6aYSI)PyP`RUsC!Qlm;^5n(3aFmyJ zexFu#aO;me*raZ8*tVgz3)d=ienkoYqn^^CZ!;Dzy2L7D>9~OvFzcc%qq*#$Pj~8~ z&wrr8n2*vnW_XWhRor|_<7*!e46F`nWMf{AuD0|WACt7rN~<)YrqT2SL)95Yf5h{g zNgiRLuww!{PcPe4U2+$y^c5e;t>gi4Gy`>GW&Io~$yWavH*DOT^h&E654OGdak03i zVP>Z~&=oqOHxJN!`IO$Qo3sc*n~flxg`p>l1!Vlhgoo3KxfFKVhca;LiA{fwfo)ilK==?$h?C(=5g+N8>dUyQ zswlNnIzAIk_URSeeba6cSkiJol?PblGSbeU;*sah>})MZJ()bOxm)iZ2_7P*bq!HD z$=QGuEenX7zn-8GX*1a{^O37?}r!85(CB&2y4Q@?X9wa zXp;MtTAURJD~x|2$j?hIh&?B1SM}3`PK^37RwlCkLOp3-0=#qIB{($1i z5jo-dZrO5?%S^*LEH|&^b)x?PR%oAw#jK1~t$(WhQV0eJ5^)_hbV<8KE6vw|(F$I% z3>9U;EDl0d>&vt+Kw_lz7xsZZBP0lW^=%%oAt`!b7lnk~%En_An(Y*1jI3@)51+Qu zngbQ~AD0`1aLFG^U1lQX%Qk2F(k|6>Oi3Qc)t*kTc*!WmA z@E=cg6Ys0;a=}*oF1eSj1(}7JY_7??=kt!m#QdxZA*MM{q@&$+gJ6wRYYtbjpd0$4 z){=5TU(xS{U{w~)GwTB5$4EBw^p4YR;0%{ovT{hE+24RT+u1tharr)# zu5&l5T;AsWlxPzfclF!y#jnmig7Pch%xbNCRxqs(`rZPcTH2o)CsU(e1STRl!m(@k z9Sdr9Hg)V>Y2gV2pI+Q~g;HgzvQtmZWK%7H;ZEcK;pTUU{{DopBA~1f{J|hZzhK{o I2O_Th3;G^#zyJUM literal 0 HcmV?d00001 diff --git a/components/lvgl/images/lvgl_main_screenshot.png b/components/lvgl/images/lvgl_main_screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..a8c971a901e5a2623316069fdd7d6615ebd4520d GIT binary patch literal 134021 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 `-gHYpC9M8$NJbjIk>De*TFYhU9LE=axSr5) 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 literal 0 HcmV?d00001 diff --git a/components/lvgl/images/lvgl_meter.png b/components/lvgl/images/lvgl_meter.png new file mode 100644 index 0000000000000000000000000000000000000000..1283126cccb54041511b0ec5e9084869e81a5eef GIT binary patch literal 7065 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 literal 0 HcmV?d00001 diff --git a/components/lvgl/images/lvgl_msgbox.png b/components/lvgl/images/lvgl_msgbox.png new file mode 100644 index 0000000000000000000000000000000000000000..101a40c8b4f71430581d95d0cdfc91a562c905e3 GIT binary patch literal 4971 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 literal 0 HcmV?d00001 diff --git a/components/lvgl/images/lvgl_roller.png b/components/lvgl/images/lvgl_roller.png new file mode 100644 index 0000000000000000000000000000000000000000..3eab1039c096540a7710312f2ba2b9f9dfc3b3a7 GIT binary patch literal 2677 zcmb7`X*|?x8^`|&W63sTnXwFI3u6r#+c5SBAv;Zyt&qVfll54$RhH0Ljx8Y}M@Yz) ztP{f++p#tV*@*_voOjQQ=Q+>kd2wI&=W|`xi~Ih4uKWAD6D=)_*jOMe006L=7^AFd zyE|alQj6|zE6pW{fD@5Uax zce-b7yLPeQ?_a357tQJuuDXybm4Tk*XxKrQ>=jAHmeq+s6kpd;-xz^$xtR1^YnO9+6 zD5iyxyKKPTJx6KVE14`IRTXDW&F=M+ej(6DID4fUhXa^t#rDAKw2#)tlHz(0p^b4X zcsA<|mRQMHy&}ugBIg31sFu0eU=3VjT_dr3#(y)nqP?ko>8NjJW+u;V2BU#%sF|F3 zvbXf?8c{H${c7hbW|m6ve6kcPb!G|YVOej=?q|F4@y{;uFrn#A{gj8pTWP<{)7kJt zfzX}$5|8ZZd($VaC*xeYXL%>Uw|?)lmjwn&{Q`hFD3twSbUHU`V&Aj^t*IQqvf^0D z{3hdy>G|p@?j%iohrSKT{FB9u9E3 zBqFlZMsz0}naKk5!E>G!FN*BCHDO|1?1RF(R?uI)#e*-|Qa_Q^mlMKyY)OsdL>X;q( zVEfkka+-3m+B*B$(#n~xrhEmwi>%v3z3aa$Zq8LpGr6(!uH2zqyZT6L6}oGnos99a z3khK)6l)QHFCl9kI!>4ilW>q^^om?9w{oTW#WN8qDXR=4L(0l>HSOg^ucN|#^Rmxc zB4Vq!p=W^uFqesX-^q%@a=~)J27^YU5IKZ~66Hs5OW4d!zB0heiQu5BqVBm>dThH6}3kzrFOij)o+Z)Kn`5{ zNcp(`Iu{+suGgCk<(}P2nYQn&e)&%`Gu{Y^m!$IQ`4gJe$r(Q4&aE-ib~A<91>+2K zBhpVc{RzIS^wCz+YT{@D3+}`8Pi==A`30t_HW9#FjVSkXg4a?3!I<^^ zeGV}frhU40(kz(u0Jh6XQA)waoW4jnV+W?e;7gbHf#RnsJ8ZxRZUqV8ktj`ChN3j6 ziSkRJ|Mi9=T$d%1WF{DL{YlEm72C@tkh#J(PNQ6;k|@bT|MIr{*L-N?Up{gV)?rr- z0m?%_SBV42V^o3wDr_3-mSHAdnRQdsyn8~B?R1ZP;q-HWZuuDXM_OF{K{{PqFc^(QVuH$t}# z*al{!2IKnA6R`y!N>@5gj8%QRmLhrdeS#$fZAZeF-~c%Y&=pHVS2P#B91$wnyhIJ% zi(oV_kD6WSphf`gw<_DCH`Rc5-hvrEi0Y)7PHIh-MSC#VM?P`34A?OMnD)eS;+^#N za1@0$)+k}wQ)o9>FhokpWV+ZqrWjp7TiZJ@~3yf2S|u zXGg^Wx|(ALuI6-718!10|A#ht>mMODu2xAZX%IiGGz_eqPm@41{zvQuR7E>JfZCkJ z%IO&UVo;U~j%bWWMld^#cIPWgxO4;r_ZZvN; zzh|w1RUClWptO_u#fw`JHVB4V3-MXenyXfz+83FGiy<47AVMSk*DB9}ir!a$GnFnn zwfw0if!Eu4-lFEh{PhOgX-5!^BIc)r^cw^Sh9%vS^W2}+h zv9C&Sc{E!CZ}1u?zgs8!%Me??Tkpv#-E$kFUz??yvz+`9)P4k$uYZ~@u!`a<3K@a{ z_(^hD)L~o%VqIr#6EO;cg-T{S3&V_wgV%%6 z9uBS!F1O`dS4&lZ&BE+o=q?4PbK*MYU0QAS`6w8hSwo?|9_VCZ{6|D zcM9O{pgki~i}%)kBDkj#I_9~J>&5xhh`pe+2jNyDBGT>+*4>`E+&1&c^A z7JjgGc6PjALEp*Oxlt`amRjE;c~-7rYFmts${)^~6m6BfYi+&H$T2*yo?O{`m$`>K zuzd8<;Z)1IY5-i}q(cSzNG8lTG<4!HY>w7)?G*pQ=vVKJ2!#zw;5FP(-|ma4sVTL# z=2d|$b)3a;WV{wrXL8G9XTOphjmxysfbLOwoj}zfY)7NRgnu~Mw8FZIN4#Zh$3}_S zJkDCpy6?vGlZiLqmuc!%V$hlF&fmWXPVtId{S)K_W`?IS3LFXR7vO+ zQ(aOH&3CtA1Ad~3%4EE-?<8Tp&1_GthB literal 0 HcmV?d00001 diff --git a/components/lvgl/images/lvgl_slider.png b/components/lvgl/images/lvgl_slider.png new file mode 100644 index 0000000000000000000000000000000000000000..d2de4030d2fc6ddbf12efd85046016cfbc97f645 GIT binary patch literal 521 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 H#$XKq@`m>x literal 0 HcmV?d00001 diff --git a/components/lvgl/images/lvgl_switch.png b/components/lvgl/images/lvgl_switch.png new file mode 100644 index 0000000000000000000000000000000000000000..9864b2b79bb7768789c766ac5f2c10deb94eace9 GIT binary patch literal 737 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 literal 0 HcmV?d00001 diff --git a/components/lvgl/images/lvgl_tabview.png b/components/lvgl/images/lvgl_tabview.png new file mode 100644 index 0000000000000000000000000000000000000000..ae18acf31a59a254690b250414f57bdadb3fc6b4 GIT binary patch literal 7993 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 literal 0 HcmV?d00001 diff --git a/components/lvgl/images/lvgl_textarea.png b/components/lvgl/images/lvgl_textarea.png new file mode 100644 index 0000000000000000000000000000000000000000..1382f7e10061ed79797ee3b8ef067dd5b6a9b662 GIT binary patch literal 4749 zcmZvgcQ~8h-^XulkXlKJEkc*QYQ+d@RJBD*Q`H(()uPjgMq`(th*6_eVng3)mb+uDkcprB>QEH;0rqZb^q4IWGPnIpG6| z6qgq*Ly`EFZpA>^pYt)uI|wOeOh?HUblsy)i865n^1ONYTD>OKmE>4|zjQP<`k|~k zCcorU`-owQ+25!0GeG-(E|X2jv6!e%R0%+InxWCs0-Y0(-fd+3gEIUGsm6!E;^HZq@+KzO7Z~K z{8bsA&b+xu70Z51#Ra0i1caiQ=;;9Tv2Llm^!oLq^CpH5sb}7NysC#Rcz6I zC!V#A@+UO)C3ylkivE;{%e?iO(>?2ch;;bC#d)J=zs~+Se+;7$0~H?3Arl5Y3^J$a z!es4LMNqgFxS-eFu~XVB#9t;HHYmMQE~OA`6g+TD21G3>?3G{5S@`v2kfcz$UQ86R zK~=mYvQTWq*aw_}#>T1RiS~puu4!^$P73L|G3sZ8R#(@i{*-?;2zxcBIHThAHv z&#I9#S0vzs*(Tz%FDazI3+c?lPN5?u#p(z89T_S}m$k4`;*Qq4#SnQDNyHwjVfmya z`&%;q@XUQ3qvuKXAGEcf(HrUXz7y7|oIx*pS2lA_2cscsEZz)jypVUa_WQs}?@HTL zWN%A)$a&eV8=rsXRLwOkE0~&;1*s3vds|=+@ciMTqf2np&g(Z{eJ}8)vm!hLu;vLX z)^)F(9cIUiV!`rhY3`jB*;1_%$1vq{z7rR(ZT@^+xekuMCo;aPxiG1%E!kXG`7`j_ z2JwD4dobMH0<3habEP+M;$q>6`U`{Yjne_4{$pRhKWBIGf%ZLe;`Kq_l=TuLY8<(H z^tiSpnXUkT>fTAKqVcFhuHQJm^a*L$`L%8cW=h`Ln0{b-umAJM{=>`M&+Ot|2ywZG zHrUInXUJoFYa>Gp2BUsqG>xpa6yH#Z{IrJsqh(`rL?n#7=fhOmRdi386!E*Vn^o;D zydNKnhtJ8|P8vUd{(PC+0IS!~*!UM4#CDk}TIQB?atnT){cC7wi1W6?JST}+pIU8w z8)LXeOk!Iaa~j|3c}o99=j6c-r)k4wr3fyBlz_kmx50MaG1TJL4x|-l=FnlMm3nr5 zFtQ=PNGq0L%Z)RQ%`tsI+#VU}OM*IFghij*Ma#z1^RyTBYvQuSJAOX8BKCULdL1XIpFO&LNiKqcv~xi7OxLS>S^14XDk* zL6Dbgfwoale#rS7sF%G*sV6=EZv8#{uEU%+z|>MB)Ob(fmx2bdrEPC{BgBNfm2tZ0 zdU!r4w@`XDkh#qY9_hB2HWzUe!Gxo7Vgn3LOK)tMZp&&^{TM5q8vA7aP7ZSlfCNo`{+B~1Zeyn(7l9e>--Tv{OpVT8zizMX)h$~!UY^sP7=2we z*I(tHFcQbTFY;D+^V?f@bc60CH3a7O&%qmxr!?oPs)}L}$>Apma;q+kN=Sh#cs;hX zl!UQ>a9hk~8*1sMHe}T7MDa1AhE+Io_O-4pjJgrC(K`amEhw#52tw(Z7^u6ai*u&; z0@8hy`sLTG&B&SYKOgrgaVoNnMg|-G#Rhb%KI5#3k27HNnR}+&l{GGLdq>@H0kzUv zX(yN&v{uO{xUPqBE7qh^5`P!B|KH}j!_QmSXtyHGp zPh0cC*fSo*rtS5t+3a#(-~7Yfr!2N;@0CFEIw%9R*9ZPC^pw3*`bjytd6>YT_?z*Y z{TsV%_e1rWLu`6emQ=IhDFR*tuQqae)P}?)6$>euNG7``qc584m-;F%Ow#s@-F~?| zaC$I*^7cbtL#%pSc%V=Fj>lKZh)heo+NaOgm01ls)?+W2e;J>4*?wJ-`U(jN2{?cI zqRTy>hCWfLRPk?abTL171L9wrV^t&W7Uwrh?8@r)TTEN9!t?T;W^0}~wlL|bf6aQ0 zv`Z-ED!Zk;S+iqkIMXybGGZIH8;Romri=@Fg`sx>)8m8@l*@Czwtyw9*_h0*#gFx# z#>U}cmO+{0Agj}!hqtM79|6`>rLb@WZJU9cDw;0}ZjgC|7K<>!CMb8Rub+(g5Q!E8 zLiW)dk<2!Y{7(Tv0Hyp z{&9M4vuQGiuSD!`r!MrzaO7n>Ed0bVe>;L2x$CS2}?sl7R#J z;RjFHrF=kjP)pX8At++70H49tH93U+teyR+&B@rp7kE0<@MoczRHAup zq?0pp@6Fs)oU#9k!*AiBT?&G-<1rDJy=#(WpF*k&_vUrW8m%z4+!K`H!v)yq5)?U$ zpgp<0GrRDm;*C$ms2{}Zc^49nzBv4$4X?&mvc`vTMKl{C+3t_xyAFJ%sI^`$h99LV z&@wPnREqeKqlPfXMx6pVU0+XN;tSJ`k$R-jo zqL7AMOOAN#vKzehacDanaS(6ea+fgrI`E7@+*?KdtWioVC$RQuyy9c(HNS_xQt}giSIt_Q&3}5$x!1vA=V-&2~9S`putkc*h z#C^#N4v{nY-4?-y0&LLL42*HaugRJSga3<{loRqKAK7L&a3A(UX4?qXt|?&tvF_!g zS73l3j9v7UznTMc*cSuX^2u(aMcaw$Waz3Qc?krp9XLK84?QGs-~8;ERmv6Ff8c&y+1MP&SUi$6(PJ$Behco+GrJO|uzX(?02Clu zTKC4vdTQh3Ao(_n4_o>szA^a9#1g=Og0$goj@?)RlojfX(!_DtU2@G5{E?KhJo(yq z(aq)`e$Q)d883$N!1n1VWhBEf4W&Xx(0rdVnQc0TgYN%de!sgl!?gke3|8}IJ*4+F zoSz;l)o@calG^#@=)sBv= zx;(lQHBb|?l2-LnxvAg*Zxdutfd2bOggJEL+hRui2GzJ#tL%=qH@}~ZLQow0!c%k#P^It0C zJvao~wDXkj&u}08yGC24f#G3u_!vde`$>F1nlW<|2PP z<-4Xpv`HepCvJMfH{K-A-ue7uV6^9r5R<&}vP<%_O`UK2Nj{m=yhLm8(oO8!81%)A zWSo2_HiVS%?AEL=ebL(+A$|Yvqd^qr zCf6*kbF;*sps2pm*#q*|CYR!9?7@&uUuP%1N%--tko=S)dy5LyAZoWK}d6(Bt7+38tc3K+-Mln&5;<&%7x3T{ynm-~`8j(#&?UdhlINgB%%Rj;AREZ0Zhl(y~p*a_M@)qk0o zO_RXa?p);$<0_Sy@$8krJr*78aw?e?|I>%*Q+dbRq8kQ_X&alT`T@>U3KZ` zl0h$(X}$`G^&M9c(24MB6_qJ!Vjby4cIOrr@39!r#u>e*m#RuL952F_H?KCw{WzUH zpmZp@W{Emg=;e%MRaV~Wt2$S!$~g_7W)!~h@{_rFTcXoYwU)po$mqS}lg|A!R@GS^`|7~XP4f-&EOdBDD8=_0YUpTPi=}sa`jr%m^OnstKO`XF1@UI zEf$>hieO?y~CBWTwfDG2*aDvd<4LW7*~vYc{J%dCQtG?tBNaTH+r)Ui+d6AkRwRJtXj>*+T`__ (Light and Versatile Graphics Library) is a free and open-source +embedded graphics library to create beautiful UIs for any MCU, MPU and display type. ESPHome supports `LVGL version 8 `__. + +.. figure:: /components/lvgl/images/lvgl_main_screenshot.png + +To use LVGL with a :ref:`display ` in ESPHome, you'll need an ESP32 or supported ESP32 variant. PSRAM is not a strict requirement but it is generally recommended, especially for color displays with resolutions larger than approximately 240x240 pixels. + +The graphic display should be configured with ``auto_clear_enabled: false`` and ``update_interval: never``, and should not have any ``lambda`` set. + +For interactivity, a :doc:`Touchscreen ` (capacitive highly preferred), a :doc:`/components/sensor/rotary_encoder` or a custom keypad made up from discrete :doc:`Binary Sensors ` can be used. + + +Basics +------ + +In LVGL, graphical elements like buttons, labels, sliders, etc. are called widgets or objects. See :doc:`/components/lvgl/widgets` for a complete list of widgets supported within ESPHome. Not all LVGL widgets are implemented, just those commonly used to support home automation needs/tasks. + +Every widget has a parent object where it is created. For example, if a label is created on a button, the button is the parent of the label. Complex widgets internally consist of several smaller/simpler widgets; these are known as parts, each of which can have separate properties from the main widget. + +Pages in ESPHome are implemented as LVGL screens, which are special objects which have no parent. There is always one active page on a display. + +Widgets can be assigned with an :ref:`config-id` so that they can be referenced in :ref:`automations `. + +Some widgets integrate also as native ESPHome components: + +.. list-table:: + :header-rows: 1 + :widths: 1 1 + + * - LVGL Widget + - ESPHome component + + * - ``button`` + - :doc:`Switch `, :doc:`Binary Sensor ` + + * - ``switch``, ``checkbox`` + - :doc:`Switch ` + + * - ``slider``, ``arc``, ``spinbox`` + - :doc:`Number `, :doc:`Sensor ` + + * - ``dropdown``, ``roller`` + - :doc:`Select ` + + * - ``label``, ``textarea`` + - :doc:`Text `, :doc:`Text Sensor ` + + * - ``led`` + - :doc:`Light ` + +These are useful with `Home Assistant automations `__ interacting directly with the widgets. + +Main Configuration +------------------ + +Although LVGL is a complex matrix of objects-parts-states-styles, ESPHome simplifies this into a hierarchy. + +At the highest level of the LVGL object hierarchy is the display (represented by the hardware driver). A display can have one or more pages associated with it. Each page contains a hierarchy of objects for graphical widgets representing a layout to be presented on the display. + +The following configuration variables apply to the main ``lvgl`` component, in order to establish the principal operating conditions. Some :ref:`styling options ` can be set at this level too, but only for inheritance purposes. + +**Configuration variables:** + +- **displays** (*Optional*, list, :ref:`config-id`): A list of display IDs where LVGL should perform rendering based on its configuration. This may be omitted if there is a single display configured, which will be used automatically. +- **touchscreens** (*Optional*, list): A list of touchscreens interacting with the LVGL widgets on the display. + - **touchscreen_id** (**Required**, :ref:`config-id`): ID of a touchscreen configuration related to a display. + - **long_press_time** (*Optional*, :ref:`Time `): For the touchscreen, delay after which the ``on_long_pressed`` :ref:`interaction trigger ` will be called. Defaults to ``400ms``. + - **long_press_repeat_time** (*Optional*, :ref:`Time `): For the touchscreen, repeated interval after ``long_press_time``, when ``on_long_pressed_repeat`` :ref:`interaction trigger ` will be called. Defaults to ``100ms``. +- **encoders** (*Optional*, list): A list of rotary encoders interacting with the LVGL widgets on the display. + - **group** (*Optional*, string): A name for a group of widgets which will interact with the the input device. See the :doc:`common properties ` of the widgets for more information on groups. + - **enter_button** (**Required**, :ref:`config-id`): The ID of a :doc:`Binary Sensor `, to be used as ``ENTER`` key. + - **sensor** (*Optional*, :ref:`config-id`): The ID of a :doc:`/components/sensor/rotary_encoder`; or a list with buttons for left/right interaction with the widgets: + - **left_button** (*Optional*, :ref:`config-id`): The ID of a :doc:`Binary Sensor `, to be used as ``LEFT`` key. + - **right_button** (*Optional*, :ref:`config-id`): The ID of a :doc:`Binary Sensor `, to be used as ``RIGHT`` key. + - **long_press_time** (*Optional*, :ref:`Time `): For the rotary encoder, delay after which the ``on_long_pressed`` :ref:`interaction trigger ` will be called. Defaults to ``400ms``. Can be disabled with ``never``. + - **long_press_repeat_time** (*Optional*, :ref:`Time `): For the rotary encoder, repeated interval after ``long_press_time``, when ``on_long_pressed_repeat`` :ref:`interaction trigger ` will be called. Defaults to ``100ms``. Can be disabled with ``never``. +- **keypads** (*Optional*, list): A list of keypads interacting with the LVGL widgets on the display. + - **group** (*Optional*, string): A name for a group of widgets which will interact with the the input device. See the :doc:`common properties ` of the widgets for more information on groups. + - **up** (*Optional*, :ref:`config-id`): The ID of a :doc:`Binary Sensor `, to be used as ``UP`` key. + - **down** (*Optional*, :ref:`config-id`): The ID of a :doc:`Binary Sensor `, to be used as ``DOWN`` key. + - **right** (*Optional*, :ref:`config-id`): The ID of a :doc:`Binary Sensor `, to be used as ``RIGHT`` key. + - **left** (*Optional*, :ref:`config-id`): The ID of a :doc:`Binary Sensor `, to be used as ``LEFT`` key. + - **esc** (*Optional*, :ref:`config-id`): The ID of a :doc:`Binary Sensor `, to be used as ``ESC`` key. + - **del** (*Optional*, :ref:`config-id`): The ID of a :doc:`Binary Sensor `, to be used as ``DEL`` key. + - **backspace** (*Optional*, :ref:`config-id`): The ID of a :doc:`Binary Sensor `, to be used as ``BACKSPACE`` key. + - **enter** (*Optional*, :ref:`config-id`): The ID of a :doc:`Binary Sensor `, to be used as ``ENTER`` key. + - **next** (*Optional*, :ref:`config-id`): The ID of a :doc:`Binary Sensor `, to be used as ``NEXT`` key. + - **prev** (*Optional*, :ref:`config-id`): The ID of a :doc:`Binary Sensor `, to be used as ``PREV`` key. + - **home** (*Optional*, :ref:`config-id`): The ID of a :doc:`Binary Sensor `, to be used as ``HOME`` key. + - **end** (*Optional*, :ref:`config-id`): The ID of a :doc:`Binary Sensor `, to be used as ``END`` key. + - **long_press_time** (*Optional*, :ref:`Time `): For the keypad, delay after which the ``on_long_pressed`` :ref:`interaction trigger ` will be called. Defaults to ``400ms``. Can be disabled with ``never``. + - **long_press_repeat_time** (*Optional*, :ref:`Time `): For the keypad, repeated interval after ``long_press_time``, when ``on_long_pressed_repeat`` :ref:`interaction trigger ` will be called. Defaults to ``100ms``. Can be disabled with ``never``. + + .. tip:: + + When using binary sensors (from physical keys) to interact with LVGL, if there are only three keys available, they are best used when configured as a rotary encoder, where ``LEFT`` and ``RIGHT`` act like the rotary wheel, and ``ENTER`` generates an ``on_press`` :ref:`trigger `. With four or more keys, a keypad configuration is generally more appropriate. For example, a keypad consisting of five keys might use ``PREV``, ``NEXT``, ``UP``, ``DOWN`` and ``ENTER``; ``PREV``/``NEXT`` are used to select a widget within the group, ``UP``/``DOWN`` changes the selected value and ``ENTER`` generates an ``on_press`` :ref:`trigger `. + + The ``long_press_time`` and ``long_press_repeat_time`` can be fine-tuned also by setting them to ``never`` and using the ``autorepeat`` filter on each binary sensor separately. + +- **color_depth** (*Optional*, string): The color deph at which the contents are generated. Currently only ``16`` is supported (RGB565, 2 bytes/pixel), which is the default value. +- **buffer_size** (*Optional*, percentage): The percentage of screen size to allocate buffer memory. Default is ``100%`` (or ``1.0``). For devices without PSRAM, the recommended value is ``25%``. +- **log_level** (*Optional*, string): Set the logger level specifically for the messages of the LVGL library: ``TRACE``, ``INFO``, ``WARN``, ``ERROR``, ``USER``, ``NONE``. Defaults to ``WARN``. +- **byte_order** (*Optional*, int16): The byte order of the data LVGL outputs; either ``big_endian`` or ``little_endian``. Defaults to ``big_endian``. +- **disp_bg_color** (*Optional*, :ref:`color `): Solid color used to fill the background. Can be changed at runtime with the ``lvgl.update`` action. +- **disp_bg_image** (*Optional*, :ref:`image `): The ID of an existing image configuration, to be used as background wallpaper. To change the image at runtime use the ``lvgl.update`` action. Also see :ref:`lvgl-widget-image` for a note regarding supported image formats. +- **default_font** (*Optional*, ID): The ID of the :ref:`font ` used by default to render the text or symbols. Defaults to LVGL's internal ``montserrat_14`` if not specified. +- **style_definitions** (*Optional*, list): A batch of style definitions to use in LVGL widget's ``styles`` configuration. See :ref:`below ` for more details. +- **theme** (*Optional*, list): A list of styles to be applied to all widgets. See :ref:`below ` for more details. +- **widgets** (*Optional*, list): A list of :doc:`/components/lvgl/widgets` to be drawn on the root display. May not be used if ``pages`` (below) is configured. +- **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: + - **skip** (*Optional*, boolean): Option to skip this page when navigating between them with :ref:`lvgl-page-next-previous-action`. + - **layout** (*Optional*): See :ref:`lvgl-layouts` for details. Defaults to ``NONE``. + - **widgets** (*Optional*, list): A list of :doc:`/components/lvgl/widgets` to be drawn on the page. + - All other options from :ref:`lvgl-styling` to be applied to this page. +- **page_wrap** (*Optional*, boolean): Wrap from the last to the first page when navigating between them with :ref:`lvgl-page-next-previous-action`. Defaults to ``true``. +- **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. + - **layout** (*Optional*): See :ref:`lvgl-layouts` for details. Defaults to ``NONE``. + - **widgets** (*Optional*, list): A list of :doc:`/components/lvgl/widgets` to be drawn on the page. + - All other options from :ref:`lvgl-styling` to be applied to this page. +- **layout** (*Optional*): See :ref:`lvgl-layouts` for details. Defaults to ``NONE``. +- All other options from :ref:`lvgl-styling` to be applied to all widgets directly. + +**Example:** + +.. code-block:: yaml + + # Example configuration entry + lvgl: + displays: + - my_display + touchscreens: + - my_touch + pages: + - id: main_page + widgets: + - label: + align: CENTER + text: 'Hello World!' + + +.. _lvgl-color: + +Colors +****** + +Colors can be specified anywhere in the LVGL configuration either by referencing a preconfigured :ref:`ESPHome color ` ID or by representing the color in the common hexadecimal notation. For example, ``0xFF0000`` would be red. + +.. _lvgl-opacity: + +Opacity +******* + +Various parts of the widgets (like background, borders etc.) support opacity. It can be overridden with a string: ``TRANSP`` for fully transparent, ``COVER`` for fully opaque, or percentage between ``0%`` and ``100%``. Actual default values depend on widget specifics. + +.. _lvgl-fonts: + +Fonts +***** + +Two font choices are available: + +**ESPHome fonts** + +You can use :ref:`fonts configured normally`, the glyphs will be rendered while building the binary. This has the advantage that you can define custom sets of glyphs of any size, with icons or diacritic characters of your choice, for any language, from any TrueType/OpenType font, allowing a more optimal flash space usage because you don't need to include all glyphs for all sizes you wish to use. + +.. tip:: + + For best results, set ``bpp: 4`` to get the glyphs rendered with proper anti-aliasing. + + +**Library fonts** + +The LVGL library offers by default prerendered sets with ASCII characters (``0x20-0x7F``), the degree symbol (``0xB0``), the bullet symbol (``0x2022``) from `Montserrat Medium `__, and 60 symbols from `FontAwesome `__ (see below). You can use the IDs below when specifying the ``text_font`` parameter: + +- ``montserrat_8``: 8px font +- ``montserrat_10``: 10px font +- ``montserrat_12``: 12px font +- ``montserrat_14``: 14px font (**default**, included if ``default_font`` option is missing) +- ``montserrat_16``: 16px font +- ``montserrat_18``: 18px font +- ``montserrat_20``: 20px font +- ``montserrat_22``: 22px font +- ``montserrat_24``: 24px font +- ``montserrat_26``: 26px font +- ``montserrat_28``: 28px font +- ``montserrat_30``: 30px font +- ``montserrat_32``: 32px font +- ``montserrat_34``: 34px font +- ``montserrat_36``: 36px font +- ``montserrat_38``: 38px font +- ``montserrat_40``: 40px font +- ``montserrat_42``: 42px font +- ``montserrat_44``: 44px font +- ``montserrat_46``: 46px font +- ``montserrat_48``: 48px font + +The binary will only include any of the above if used in the configuration. + +You can display the embedded symbols among the text by their codepoint address preceded by ``\u``. For example: ``\uF00C``: + +.. figure:: /components/lvgl/images/lvgl_symbols.png + :align: center + +.. note:: + + The ``text_font`` parameter affects the size of symbols, since all the built-in font arrays based on Montserrat include these symbols at the respective sizes. If you set ``text_font`` on a widget to a custom ESPHome font, these symbols will likely not display, unless you include them manually from a FontAwesome OpenType file. + + For escape sequences to work, you have to put them in strings enclosed in double quotes. + +In addition to the above, the following special fonts are available from LVGL as built-in: + +- ``unscii_8``: 8 px pixel perfect font with only ASCII characters. +- ``unscii_16``: 16 px pixel perfect font with only ASCII characters. +- ``simsun_16_cjk``: 16 px font with normal range + 1000 most common `CJK Radicals `__. +- ``dejavu_16_persian_hebrew``: 16 px font with normal range + Hebrew, Arabic, Persian letters and all their forms. + +.. _lvgl-styling: + +Style properties +**************** + +LVGL follows CSS's `border-box model `__. A widget's *box* is built from the following parts: + +.. figure:: /components/lvgl/images/lvgl_boxmodel.png + :align: center + +- *bounding box*: the box defined with ``width`` and ``height`` of the widgets (pixels or parent content area percentage; not drawn, just for calculations). +- *border*: the border line, drawn on the inner side of the bounding box (pixels). +- *outline*: the outline, drawn on the outer side of the bounding box (pixels). +- *padding*: space to keep between the border of the widget and its content or children (*I don't want my children too close to my sides, so keep this space*). +- *content*: the content area which is the size of the bounding box reduced by the border width and padding (it's what's referenced as the ``SIZE_CONTENT`` option of certain widgets). + +You can adjust the appearance of widgets by changing their foreground, background, border color and/or font. Some widgets allow for more complex styling, effectively changing all or part of their appearance. + +**Styling variables:** + +- **bg_color** (*Optional*, :ref:`color `): Color for the background of the widget. Defaults to ``0xFFFFFF`` (white). +- **bg_grad_color** (*Optional*, :ref:`color `): Color to make the background gradually fade to. Defaults to ``0`` (black). +- **bg_dither_mode** (*Optional*, dict): Set dithering of the background gradient. One of ``NONE``, ``ORDERED``, ``ERR_DIFF``. Defaults to ``NONE``. +- **bg_grad_dir** (*Optional*, dict): Choose the direction of the background gradient: ``NONE``, ``HOR``, ``VER``. Defaults to ``NONE``. +- **bg_main_stop** (*Optional*, 0-255): Specify where the gradient should start: ``0`` = upper left, ``128`` = in the center, ``255`` = lower right. Defaults to ``0``. +- **bg_grad_stop** (*Optional*, 0-255): Specify where the gradient should stop: ``0`` = upper left, ``128`` = in the center, ``255`` = lower right. Defaults to ``255``. +- **opa** (*Optional*, :ref:`opacity `): Opacity of the entire widget. Inherited from parent. Defaults to ``COVER``. +- **bg_opa** (*Optional*, :ref:`opacity `): Opacity of the widget background. +- **opa_layered** (*Optional*, :ref:`opacity `): Opacity of the entire layer the widget is on. Inherited from parent. Defaults to ``COVER``. +- **bg_image_src** (*Optional*, :ref:`image `): The ID of an existing image configuration, to show as the background of the widget. +- **bg_image_opa** (*Optional*, :ref:`opacity `): Opacity of the background image of the widget. +- **bg_image_recolor** (*Optional*, :ref:`color `): Color to mix with every pixel of the background image of the widget. +- **bg_image_recolor_opa** (*Optional*, :ref:`opacity `): Opacity of the recoloring of the background image of the widget. +- **border_width** (*Optional*, int16): Set the width of the border in pixels. Defaults to ``0``. +- **border_color** (*Optional*, :ref:`color `): Color to draw borders of the widget. Defaults to ``0`` (black). +- **border_opa** (*Optional*, :ref:`opacity `): Opacity of the borders of the widget. Defaults to ``COVER``. +- **border_post** (*Optional*, boolean): If ``true`` the border will be drawn after all children of the widget have been drawn. Defaults to ``false``. +- **border_side** (*Optional*, list): Select which borders of the widgets to show (multiple can be specified as a YAML list, defaults to ``NONE``): + - ``NONE`` + - ``TOP`` + - ``BOTTOM`` + - ``LEFT`` + - ``RIGHT`` + - ``INTERNAL`` +- **radius** (*Optional*, uint16): The radius to be used to form the widget's rounded corners. 0 = no radius (square corners); 65535 = pill shaped widget (true circle if it has same width and height). +- **clip_corner** (*Optional*, boolean): If set to ``true``, overflowing content will be clipped off by the widget's rounded corners (``radius`` > ``0``). +- **outline_width** (*Optional*, int16): Set the width of the outline in pixels. Defaults to ``0``. +- **outline_color** (*Optional*, :ref:`color `): Color used to draw an outline around the widget. Defaults to ``0`` (black). +- **outline_opa** (*Optional*, :ref:`opacity `): Opacity of the outline of the widget. Defaults to ``COVER``. +- **outline_pad** (*Optional*, int16): Distance between the outline and the widget itself. Defaults to ``0``. +- **pad_all** (*Optional*, int16): Set the padding in all directions, in pixels. +- **pad_top** (*Optional*, int16): Set the padding on the top, in pixels. +- **pad_bottom** (*Optional*, int16): Set the padding on the bottom, in pixels. +- **pad_left** (*Optional*, int16): Set the padding on the left, in pixels. +- **pad_right** (*Optional*, int16): Set the padding on the right, in pixels. +- **pad_row** (*Optional*, int16): Set the padding between the rows of the children elements, in pixels. +- **pad_column** (*Optional*, int16): Set the padding between the columns of the children elements, in pixels. +- **shadow_color** (*Optional*, :ref:`color `): Color used to create a drop shadow under the widget. Defaults to ``0`` (black). +- **shadow_ofs_x** (*Optional*, int16): Horizontal offset of the shadow, in pixels. Defaults to ``0``. +- **shadow_ofs_y** (*Optional*, int16): Vertical offset of the shadow, in pixels. Defaults to ``0``. +- **shadow_opa** (*Optional*, :ref:`opacity `): Opacity of the shadow. Defaults to ``COVER``. +- **shadow_spread** (*Optional*, int16): Spread of the shadow, in pixels. Defaults to ``0``. +- **shadow_width** (*Optional*, int16): Width of the shadow, in pixels. Defaults to ``0``. +- **transform_angle** (*Optional*, 0-360): Transformation angle of the widget (eg. rotation) +- **transform_height** (*Optional*, int16 or percentage): Transformation height of the widget (eg. stretching) +- **transform_pivot_x** (*Optional*, int16): Horizontal anchor point of the transformation. Relative to the widget's top left corner. +- **transform_pivot_y** (*Optional*, int16): Vertical anchor point of the transformation. Relative to the widget's top left corner. +- **transform_zoom** (*Optional*, 0.1-10): Transformation zoom of the widget (eg. resizing) +- **translate_x** (*Optional*, int16 or percentage): Movement of the widget with this value in horizontal direction. +- **translate_y** (*Optional*, int16 or percentage): Movement of the widget with this value in vertical direction. + +.. _lvgl-theme: + +Themes +****** + +The widgets support lots of :ref:`lvgl-styling` to customize their appearance and behavior. + +You can configure a global theme for all widgets at the top level with the ``theme`` configuration variable. In the example below, all the ``arc``, ``slider`` and ``button`` widgets will, by default, use the styles and properties defined here. A combination of styles and :ref:`states ` can be chosen for every widget. + +.. code-block:: yaml + + lvgl: + theme: + arc: + scroll_on_focus: true + group: general + slider: + scroll_on_focus: true + group: general + button: + scroll_on_focus: true + group: general + border_width: 2 + outline_pad: 6 + pressed: + border_color: 0xFF0000 + checked: + border_color: 0xFFFF00 + focused: + border_color: 0x00FF00 + +Naturally, you can override these at the individual configuration level of each widget. This can be done in batches, using the ``style_definitions`` configuration variable of the main component. +In the example below, you defined ``date_style``: + +.. code-block:: yaml + + lvgl: + style_definitions: + - id: date_style # choose an ID for your definition + text_font: unscii_8 + align: center + text_color: 0x000000 + bg_opa: cover + radius: 4 + pad_all: 2 + +And then you apply these selected styles to two labels, and only change very specific style ``y`` locally: + +.. code-block:: yaml + + widgets: + - label: + id: day_label + styles: date_style # apply the definition here by the ID chosen above + y: -20 + - label: + id: date_label + styles: date_style + y: +20 + +Additionally, you can change the styles based on the :ref:`state ` property of the widgets or their parts. If you want to set a property for all states (e.g. red background color) just set it for the default state at the root of the widget. If the widget can't find a property for its current state it will fall back to this. + +In the example below, you have an ``arc`` with some styles set here. Note how you change the ``arc_color`` of the ``indicator`` part, based on state changes: + +.. code-block:: yaml + + - arc: + id: my_arc + value: 75 + min_value: 1 + max_value: 100 + indicator: + arc_color: 0xF000FF + pressed: + arc_color: 0xFFFF00 + focused: + arc_color: 0x808080 + +So the precedence happens like this: state based styles override the locally specified styles, which override the style definitions, which override the theme, which overrides the top level styles. The value precedence of states is quite intuitive and it's something the user would expect naturally. For example, if a widget is focused the user will still want to see if it's pressed, therefore the pressed state has a higher precedence. (If the focused state had a higher precedence it would override the *pressed* color, defeating its purpose.) + +Feel free to experiment to discover inheritance and precedence of the styles based on states between the nested widgets. + + +.. _lvgl-layouts: + +Layouts +******* + +Layouts aim to position widgets automatically, eliminating the need to specify ``x`` and ``y`` coordinates to position each widget. This is a great way to simplify your configuration as it allows you to omit alignment options. + +The layout configuration options are applied to any parent widget or page, influencing the appearance of the children. The position and size calculated by the layout overwrites the *normal* ``x``, ``y``, ``width``, and ``height`` settings of the children. + + +The ``hidden``, ``ignore_layout`` and ``floating`` :ref:`flags ` can be used on widgets to ignore them in layout calculations. + +**Configuration variables:** + +- **layout** (*Optional*, dict): A dictionary describing the layout configuration: + - **type** (*Optional*, string): ``FLEX``, ``GRID`` or ``NONE``. Defaults to ``NONE``. + - Further options from below depending on the chosen type. + +**Flex** + +The Flex layout in LVGL is a subset implementation of `CSS Flexbox `__. + +It can arrange items into rows or columns (tracks), handle wrapping, adjust spacing between items and tracks and even handle growing the layout to make the item(s) fill the remaining space with respect to minimum/maximum width and height. + +**Terms used:** + +- *track*: the rows or columns *main* direction flow: row or column in the direction in which the items are placed one after the other. +- *cross direction*: perpendicular to the main direction. +- *wrap*: if there is no more space in the track a new track is started. +- *gap*: the space between the rows and columns or the items on a track. +- *grow*: if set on an item it will grow to fill the remaining space on the track. The available space will be distributed among items respective to their grow value (larger value means more space). It dictates what amount of the available space the widget should take up. For example if all items on the track have a ``grow`` set to ``1``, the space in the track will be distributed equally to all of 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 others. + +**Configuration variables:** + + - **flex_flow** (*Optional*, string): Select the arrangement of the children widgets: + - ``ROW``: place the children in a row without wrapping. + - ``COLUMN``: place the children in a column without wrapping. + - ``ROW_WRAP``: place the children in a row with wrapping (default). + - ``COLUMN_WRAP``: place the children in a column with wrapping. + - ``ROW_REVERSE``: place the children in a row without wrapping but in reversed order. + - ``COLUMN_REVERSE``: place the children in a column without wrapping but in reversed order. + - ``ROW_WRAP_REVERSE``: place the children in a row with wrapping but in reversed order. + - ``COLUMN_WRAP_REVERSE``: place the children in a column with wrapping but in reversed order. + + - **flex_align_main** (*Optional*, string): Determines how to distribute the items in their track on the *main* axis. For example, flush the items to the right on with ``flex_flow: ROW_WRAP`` (known as *justify-content* in CSS). Possible options below. + - **flex_align_cross** (*Optional*, string): Determines how to distribute the items in their track on the *cross* axis. For example, if the items have different height place them to the bottom of the track (known as *align-items* in CSS). Possible options below. + - **flex_align_track** (*Optional*, string): Determines how to distribute the tracks (known as *align-content* in CSS). Possible options below. + + Values for use with ``flex_align_main``, ``flex_align_cross``, ``flex_align_track``: + + - ``START``: means left horizontally and top vertically (default). + - ``END``: means right horizontally and bottom vertically. + - ``CENTER``: simply center. + - ``SPACE_EVENLY``: items are distributed so that the spacing between any two items (and the space to the edges) is equal. Does not apply to ``flex_align_track``. + - ``SPACE_AROUND``: items are evenly distributed in the track with equal space around them. Note that visually the spaces aren’t equal, since all the items have equal space on both sides. The first item will have one unit of space against the container edge, but two units of space between the next item because that next item has its own spacing that applies. Does not apply to ``flex_align_track``. + - ``SPACE_BETWEEN``: items are evenly distributed in the track: first item is on the start line, last item on the end line. Does not apply to ``flex_align_track``. + + - **pad_row** (*Optional*, int16): Set the padding between the rows, in pixels. + - **pad_column** (*Optional*, int16): Set the padding between the columns, in pixels. + - **flex_grow** (*Optional*, int16): Flex grow can be used to make one or more children fill the available space on the track. When more children have grow parameters, the available space will be distributed proportionally to the grow values. Defaults to ``0``, which disables growing. + +**Grid** + +The Grid layout in LVGL is a subset implementation of `CSS Flexbox `__. + +It can arrange items into a 2D "table" that has rows or columns (tracks). The item(s) can span through multiple columns or rows. The track's size can be set in pixels, to the largest item of the track (``CONTENT``) or in "free units" to distribute the free space proportionally. + +**Terms used:** + +- *tracks*: the rows or the columns. +- *gap*: the space between the rows and columns or the items on a track. +- *free unit (FR)*: a proportional distribution unit for the space available on the track. It accepts a unitless integer value that serves as a proportion. It dictates what amount of the available space the widget should take up. For example if all items on the track have a ``FR`` set to ``1``, the space in the track will be distributed equally to all of 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 others. + +**Configuration variables:** + + - **grid_rows** (**Required**): The number of rows in the grid, expressed a list of values in pixels, ``CONTENT`` or ``FR(n)`` (free units, where ``n`` is a proportional integer value). + - **grid_columns** (**Required**): The number of columns in the grid, expressed a list of values in pixels, ``CONTENT`` or ``FR(n)`` (free units, where ``n`` is a proportional integer value). + - **grid_row_align** (*Optional*, string): How to align the row. Works only when ``grid_rows`` is given in pixels. Possible options below. + - **grid_column_align** (*Optional*, string): How to align the column. Works only when ``grid_columns`` is given in pixels. Possible options below. + - **pad_row** (*Optional*, int16): Set the padding between the rows, in pixels. + - **pad_column** (*Optional*, int16): Set the padding between the columns, in pixels. + +In a grid layout, *all the widgets placed on the grid* will get some additional configuration variables to help with placement: + + - **grid_cell_row_pos** (**Required**, int16): Position of the widget, in which row to appear (0 based count). + - **grid_cell_column_pos** (**Required**, int16): Position of the widget, in which column to appear (0 based count). + - **grid_cell_x_align** (*Optional*, string): How to align the widget horizontally within the cell. Can also be applied through :ref:`lvgl-styling`. Possible options below. + - **grid_cell_y_align** (*Optional*, string): How to align the widget vertically within the cell. Can also be applied through :ref:`lvgl-styling`. Possible options below. + - **grid_cell_row_span** (*Optional*, int16): How many rows to span across the widget. Defaults to ``1``. + - **grid_cell_column_span** (*Optional*, int16): How many columns to span across the widget. . Defaults to ``1``. + + .. note:: + + These ``grid_cell_`` variables apply to widget configuations! + +Values for use with ``grid_column_align``, ``grid_row_align``, ``grid_cell_x_align``, ``grid_cell_y_align``: + + - ``START``: means left horizontally and top vertically (default). + - ``END``: means right horizontally and bottom vertically. + - ``CENTER``: simply center. + - ``STRETCH``: stretch the widget to the cell in the respective direction. Does not apply to ``grid_column_align``, ``grid_row_align``. + - ``SPACE_EVENLY``: items are distributed so that the spacing between any two items (and the space to the edges) is equal. + - ``SPACE_AROUND``: items are evenly distributed in the track with equal space around them. Note that visually the spaces aren’t equal, since all the items have equal space on both sides. The first item will have one unit of space against the container edge, but two units of space between the next item because that next item has its own spacing that applies. + - ``SPACE_BETWEEN``: items are evenly distributed in the track: first item is on the start line, last item on the end line. + +.. tip:: + + To visualize real, calculated sizes of transparent widgets you can temporarily set ``outline_width: 1`` on them. + +Widgets +******* + +LVGL supports a list of :doc:`/components/lvgl/widgets` which can be used to draw interactive objects on the screen. + +Actions +------- + +Widgets support :ref:`general or specific ` actions. +Several actions are available for LVGL, these are outlined below. + +.. _lvgl-redraw-action: + +``lvgl.widget.redraw`` +********************** + +This :ref:`action ` redraws the entire screen, or optionally only a widget on it. + +- **id** (*Optional*): The ID of a widget configured in LVGL which you want to redraw; if omitted, the entire screen will be redrawn. + +.. code-block:: yaml + + on_...: + then: + - lvgl.widget.redraw: + +.. _lvgl-pause-action: + +``lvgl.pause`` +************** + +This :ref:`action ` pauses the activity of LVGL, including rendering. + +- **show_snow** (*Optional*, boolean): When paused, display random colored pixels across the entire screen in order to minimize screen burn-in, to relief the tension put on each individual pixel. + +.. code-block:: yaml + + on_...: + then: + - lvgl.pause: + show_snow: true + +.. _lvgl-resume-action: + +``lvgl.resume`` +*************** + +This :ref:`action ` resumes the activity of LVGL, including rendering. + +.. code-block:: yaml + + on_...: + then: + - lvgl.resume: + +``lvgl.update`` +*************** + +This :ref:`action ` allows changing/updating the ``disp_bg_color`` or ``disp_bg_image`` configuration variables of the main component, making it possible to change the background color or wallpaper at any time. + +.. code-block:: yaml + + # Examples: + on_...: + then: + - lvgl.update: + disp_bg_color: 0x0000FF + - lvgl.update: + disp_bg_image: cat_image + +.. _lvgl-page-next-previous-action: + +``lvgl.page.next``, ``lvgl.page.previous`` +****************************************** + +This :ref:`action ` changes the page to the next/previous based on the configuration (pages with their ``skip`` option enabled are...skipped). Page changes will wrap around at the end. + +- **animation** (*Optional*): Animate page changes as specified. One of: ``NONE``, ``OVER_LEFT``, ``OVER_RIGHT``, ``OVER_TOP``, ``OVER_BOTTOM``, ``MOVE_LEFT``, ``MOVE_RIGHT``, ``MOVE_TOP``, ``MOVE_BOTTOM``, ``FADE_IN``, ``FADE_OUT``, ``OUT_LEFT``, ``OUT_RIGHT``, ``OUT_TOP``, ``OUT_BOTTOM``. Defaults to ``NONE``. +- **time** (*Optional*, :ref:`Time `): Duration of the page change animation. Defaults to ``50ms``. + +.. code-block:: yaml + + on_...: + then: + - lvgl.page.next: + animation: OUT_LEFT + time: 300ms + + on_...: + then: + - lvgl.page.previous: + animation: OUT_RIGHT + time: 300ms + +.. _lvgl-page-show-action: + +``lvgl.page.show`` +****************** + +This :ref:`action ` shows a specific page (including pages with their ``skip`` option enabled). + +- **id** (**Required**): The ID of the page to be shown. +- **animation** (*Optional*): Animate page changes as specified. One of: ``NONE``, ``OVER_LEFT``, ``OVER_RIGHT``, ``OVER_TOP``, ``OVER_BOTTOM``, ``MOVE_LEFT``, ``MOVE_RIGHT``, ``MOVE_TOP``, ``MOVE_BOTTOM``, ``FADE_IN``, ``FADE_OUT``, ``OUT_LEFT``, ``OUT_RIGHT``, ``OUT_TOP``, ``OUT_BOTTOM``. Defaults to ``NONE``. +- **time** (*Optional*, :ref:`Time `): Duration of the page change animation. Defaults to ``50ms``. + +.. code-block:: yaml + + on_...: + then: + - lvgl.page.show: + id: secret_page + + on_...: + then: + - lvgl.page.show: secret_page # shorthand version + +.. _lvgl-conditions: + +Conditions +---------- + +.. _lvgl-is-idle-condition: + +``lvgl.is_idle`` +**************** + +This :ref:`condition ` checks if the amount of time specified has passed since the last touch event. + +- **timeout** (**Required**, :ref:`templatable `, int): Amount of :ref:`time ` expected since the last touch event. + +.. code-block:: yaml + + # In some trigger: + on_...: + then: + - if: + condition: lvgl.is_idle + timeout: 5s + then: + - light.turn_off: + id: display_backlight + transition_length: 3s + +.. _lvgl-is-paused-condition: + +``lvgl.is_paused`` +****************** + +This :ref:`condition ` checks if LVGL is in the paused state or not. + +.. code-block:: yaml + + # In some trigger: + on_...: + then: + - if: + condition: lvgl.is_paused + then: + - lvgl.resume: + +Triggers +-------- + +Widget level :ref:`interaction triggers ` can be configured universally, or depending on the widtget functionality. + +.. _lvgl-on-idle-trigger: + +``lvgl.on_idle`` +**************** + +LVGL has a notion of screen inactivity -- in other words, the time since the last user interaction with the screen is tracked. This can be used to dim the display backlight or turn it off after a moment of inactivity (like a screen saver). Every use of an input device (touchscreen, rotary encoder) counts as an activity and resets the inactivity counter. + +The ``on_idle`` :ref:`triggers ` are activated when inactivity time becomes longer than the specified ``timeout``. You can configure any desired number of timeouts with different actions. + +- **timeout** (**Required**, :ref:`templatable `, int): :ref:`Time ` that has elapsed since the last touch event, after which you want your actions to be performed. + +.. code-block:: yaml + + lvgl: + ... + on_idle: + - timeout: 30s + then: + - lvgl.page.show: main_page + - timeout: 60s + then: + - light.turn_off: display_backlight + - lvgl.pause: + + +See Also +-------- + +.. toctree:: + :maxdepth: 1 + :glob: + + * + +- :doc:`/components/display/index` +- :doc:`/components/touchscreen/index` +- :doc:`/components/sensor/rotary_encoder` +- `LVGL docs `__ +- :ghedit:`Edit` diff --git a/components/lvgl/widgets.rst b/components/lvgl/widgets.rst new file mode 100644 index 0000000000..1700ee2b38 --- /dev/null +++ b/components/lvgl/widgets.rst @@ -0,0 +1,1788 @@ +LVGL Widgets +============ + +At the next level of the LVGL object hierarchy are the widgets, which support styling directly. They can have sub-parts, which may be styled separately. Usually styles are inherited, but this depends on widget specifics or functionality. The widget and its parts have states, and different styling can be set for different states. + +Widgets can have children, which can be any other widgets. Think of this as a nested structure. The child widgets move with the parent and, if the parent is hidden, its children will also be hidden. + +By default, LVGL draws new widgets on top of old widgets, including their children. When widgets have children, property inheritance takes place. Some properties (typically those related to text and opacity) can be inherited from the parent widgets's styles. When the property is inheritable, the parent will be searched for an object which specifies a value for the property. The parents will use their own :ref:`state ` to determine the value. For example, if a button is pressed and the text color is defined by the "pressed" state, this "pressed" text color will be used. + +Common properties +----------------- + +The properties below are common to all widgets. + +**Configuration variables:** + +- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. +- **x** (*Optional*, int16 or percentage): Horizontal position of the widget. +- **y** (*Optional*, int16 or percentage): Vertical position of the widget. + +.. note:: + + By default, the ``x`` and ``y`` coordinates are measured from the *top left corner* of the parent's content area. :ref:`Important `: 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. + + If specifying ``align``, ``x`` and ``y`` can be used as an offset to the calculated position (can also be negative). They are ignored if :ref:`lvgl-layouts` are used on the parent. + +- **height** (*Optional*): Height of the widget in pixels or a percentage, or ``SIZE_CONTENT``. +- **width** (*Optional*): Width of the widget in pixels or a percentage, or ``SIZE_CONTENT``. + +.. note:: + + The size settings support a special value: ``SIZE_CONTENT``. It means the widget's size in the respective direction will be set to the size of its children. Note that only children on the right and bottom sides will be considered and children on the top and left remain cropped. This limitation makes the behavior more predictable. Widgets with ``hidden`` or ``floating`` flags will be ignored by the ``SIZE_CONTENT`` calculation. + + Similarly to CSS, LVGL also supports ``min_width``, ``max_width``, ``min_height`` and ``max_height``. These are limits preventing a widget's size from becoming smaller/larger than these values. They are especially useful if the size is set by percentage or ``SIZE_CONTENT``. + +- **min_width**, **max_width**, **min_height**, **max_height** (*Optional*, int16 or percentage): Sets a minimal/maximal width or a minimal/maximal height. Pixel and percentage values can be used. Percentage values are relative to the dimensions of the parent's content area. Defaults to ``0%``. +- **scrollbar_mode** (*Optional*, string): If a child widget is outside its parent content area (the size without padding), the parent can become scrollable (see the ``scrollable`` :ref:`flag `). The widget can either be scrolled horizontally or vertically in one stroke. Scroll bars can appear depending on the setting: + - ``"OFF"``: Never show the scroll bars (use the double quotes!). + - ``"ON"``: Always show the scroll bars (use the double quotes!). + - ``"ACTIVE"``: Show scroll bars while a widget is being scrolled. + - ``"AUTO"``: Show scroll bars when the content is large enough to be scrolled (default). + +- **align** (*Optional*, dict): Alignment of the of the widget relative to the parent. A child widget is clipped to its parent boundaries. One of the values *not* starting with ``OUT_`` (see picture below). +- **align_to** (*Optional*, list): Alignment of the of the widget relative to another widget on the same level: + - **id** (**Required**): The ID of a widget *to* which you want to align. + - **align** (**Required**, string): Desired alignment (one of the values starting with ``OUT_``). + - **x** (*Optional*, int16 or percentage): Horizontal offset position. Default ``0``. + - **y** (*Optional*, int16 or percentage): Vertical offset position. Default ``0``. + +.. figure:: /components/lvgl/images/lvgl_align.png + :align: center + +- **group** (*Optional*, string): The name of the group of widgets which will interact with a :doc:`/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. +- **layout** (*Optional*): See :ref:`lvgl-layouts` for details. Defaults to ``NONE``. +- **styles** (*Optional*, :ref:`config-id`): The ID of a *style definition* from the main component configuration to override the theme styles. +- **theme** (*Optional*, list): A list of styles to apply to the widget and children. Same configuration option as at the main component. +- **widgets** (*Optional*, list): A list of LVGL widgets to be drawn as children of this widget. Same configuration option as at the main component. + +.. _lvgl-widgetproperty-state: + +- **state** (*Optional*, dict): Widgets or their (sub)parts can have have states, which support separate styling. These state styles inherit from the theme, but can be locally set or overridden within style definitions. Can be one of: + - **checked** (*Optional*, boolean): Toggled or checked state. + - **default** (*Optional*, boolean): Normal, released state. + - **disabled** (*Optional*, boolean): Disabled state (also usable with :ref:`shorthand ` actions ``lvgl.widget.enable`` and ``lvgl.widget.disable``). + - **edited** (*Optional*, boolean): Edit by an encoder. + - **focus_key** (*Optional*, boolean): Focused via keypad or encoder but *not* via touch screen. + - **focused** (*Optional*, boolean): Focused via keypad or encoder or clicked via touch screen. + - **pressed** (*Optional*, boolean): Being pressed. + - **scrolled** (*Optional*, boolean): Being scrolled. + - **user_1**, **user_2**, **user_3**, **user_4** (*Optional*, boolean): Custom states. + +By default, states are all ``false``, and they are templatable. +To apply styles to the states, you need to specify them one level above, for example: + +.. code-block:: yaml + + - button: + checkable: true + state: + checked: true # here you activate the state to be used at boot + checked: + bg_color: 0x00FF00 # here you apply styles to be used when in the respective state + +The state itself can be can be changed by interacting with the widget, or through :ref:`actions ` with ``lvgl.widget.update``. + +.. _lvgl-widget-flags: + +In addition to visual styling, each widget supports some boolean **flags** to influence the behavior: + +- **adv_hittest** (*Optional*, boolean): allow performing more accurate hit (click) test. For example, may help by accounting for rounded corners. +- **checkable** (*Optional*, boolean): toggle checked state when the widget is clicked. +- **click_focusable** (*Optional*, boolean): add focused state to the widget when clicked. +- **clickable** (*Optional*, boolean): make the widget clickable by input devices. Defaults to ``true``. If ``false``, it will pass the click to the widgets behind it (clicking through). +- **event_bubble** (*Optional*, boolean): propagate the events to the parent. +- **floating** (*Optional*, boolean): do not scroll the widget when the parent scrolls and ignore layout. +- **gesture_bubble** (*Optional*, boolean): propagate the gestures to the parent. +- **hidden** (*Optional*, boolean): make the widget hidden (like it wasn't there at all), also usable with :ref:`shorthand ` actions ``lvgl.widget.show`` and ``lvgl.widget.hide``. Hidden objects are ignored in layout calculations. Defaults to ``false``. +- **ignore_layout** (*Optional*, boolean): the widget is simply ignored by the layouts. Its coordinates can be set as usual. +- **layout_1**, **layout_2** (*Optional*, boolean): custom flags, free to use by layouts. +- **overflow_visible** (*Optional*, boolean): do not clip the children's content to the parent's boundary. +- **press_lock** (*Optional*, boolean): keep the widget pressed even if the press slid from the widget. +- **scroll_chain simple** (*Optional*, boolean): packaging for (``scroll_chain_hor | scroll_chain_ver``). +- **scroll_chain_hor** (*Optional*, boolean): allow propagating the horizontal scroll to a parent. +- **scroll_chain_ver** (*Optional*, boolean): allow propagating the vertical scroll to a parent. +- **scroll_elastic** (*Optional*, boolean): allow scrolling inside but with slower speed. +- **scroll_momentum** (*Optional*, boolean): make the widget scroll further when "thrown". +- **scroll_on_focus** (*Optional*, boolean): automatically scroll widget to make it visible when focused. +- **scroll_one** (*Optional*, boolean): allow scrolling only on ``snappable`` children. +- **scroll_with_arrow** (*Optional*, boolean): allow scrolling the focused widget with arrow keys. +- **scrollable** (*Optional*, boolean): the widget can become scrollable. Defaults to ``true`` (also see the ``scrollbar_mode`` property). +- **snappable** (*Optional*, boolean): if scroll snap is enabled on the parent it can snap to this widget. +- **user_1**, **user_2**, **user_3**, **user_4** (*Optional*, boolean): custom flags, free to use by user. +- **widget_1**, **widget_2** (*Optional*, boolean): custom flags, free to use by widget. + +.. note:: + + LVGL only supports **integers** for numeric ``value``. Visualizer widgets can't display floats directly, but they allow scaling by 10s. + +.. _lvgl-widget-animimg: + +``animimg`` +----------- + +The animation image is similar to the normal ``image`` widget. The main difference is that instead of one source image, you set a list of multiple source images. You can also specify a duration and a repeat count. + +.. figure:: /components/lvgl/images/lvgl_animimg.gif + :align: center + +**Configuration variables:** + +- **src** (**Required**, list of :ref:`images `): A list of IDs of existing image configurations to be loaded as frames of the animation. +- **auto_start** (*Optional*, boolean): Start the animation playback automatically at boot and when updating the widget. Defaults to ``true``. +- **duration** (**Required**, :ref:`Time `): Total duration of a playback cycle (each frame is displayed for an equal amount of time). +- **repeat_count** (*Optional*, int16 or *forever*): The number of times playback should be repeated. Defaults to ``forever``. +- Some style options from :ref:`lvgl-styling` for the background rectangle that uses the typical background style properties and the image itself using the image style properties. + +**Actions:** + +- ``lvgl.animimg.start`` :ref:`action ` starts the animation playback if it was displayed with ``auto_start`` false or after ``repeat_count`` expired. + - **id** (**Required**): The ID or a list of IDs of animimg widgets which you want start. + +- ``lvgl.animimg.stop`` :ref:`action ` stops the animation playback. + - **id** (**Required**): The ID or a list of IDs of animimg widgets which you want stop. + +- ``lvgl.animimg.update`` :ref:`action ` can be used to change ``repeat_count`` and ``duration``, just like the :ref:`lvgl.widget.update ` action is used for the common styles, states or flags. ``src`` and ``auto_start`` cannot be updated at runtime. + - **id** (**Required**): The ID or a list of IDs of animimg widgets which you want update. + - Widget styles or properties from the specific options above, which you want update. + +**Triggers:** + +- :ref:`interaction ` LVGL event triggers. + +**Example:** + +.. code-block:: yaml + + # Example widget: + - animimg: + align: CENTER + id: anim_id + src: [ cat_image, cat_image_bowtie ] + duration: 1000ms + + # Example actions: + on_...: + then: + - lvgl.animimg.update: + id: anim_id + repeat_count: 100 + duration: 300ms + +.. _lvgl-widget-arc: + +``arc`` +------- + +The arc consists of a background and a foreground arc. The indicator foreground can be touch-adjusted with a knob. + +.. figure:: /components/lvgl/images/lvgl_arc.png + :align: center + +**Configuration variables:** + +- **adjustable** (*Optional*, boolean): Add a knob that the user can move to change the value. Defaults to ``false``. +- **arc_color** (*Optional*, :ref:`color `): Color used to draw the arc. +- **arc_opa** (*Optional*, :ref:`opacity `): Opacity of the arc. +- **arc_rounded** (*Optional*, boolean): Make the end points of the arcs rounded. ``true`` rounded, ``false`` perpendicular line ending. +- **arc_width** (*Optional*, int16): Set the width of the arcs in pixels. +- **change_rate** (*Optional*, int8): If the arc is pressed the current value will set with a limited speed according to the set change rate. The change rate is defined in degree/second. Defaults to ``720``. +- **end_angle** (*Optional*, 0-360): end angle of the arc background (see note). Defaults to ``45``. +- **indicator** (*Optional*, list): Settings for the indicator *part* to show the value. Supports a list of :ref:`styles ` and state-based styles to customize. Draws *another arc using the arc style* properties. Its padding values are interpreted relative to the background arc. +- **knob** (*Optional*, list): Settings for the knob *part* to control the value. Supports a list of :ref:`styles ` and state-based styles to customize. Draws a handle on the end of the indicator using all background properties and padding values. With zero padding the knob size is the same as the indicator's width. Larger padding makes it larger, smaller padding makes it smaller. +- **max_value** (*Optional*, int8): Maximum value of the indicator. Defaults to ``100``. +- **min_value** (*Optional*, int8): Minimum value of the indicator. Defaults to ``0``. +- **mode** (*Optional*, string): ``NORMAL``: the indicator is drawn from the minimum value to the current. ``REVERSE``: the indicator is drawn counter-clockwise from the maximum value to the current. ``SYMMETRICAL``: the indicator is drawn from the middle point to the current value. Defaults to ``NORMAL``. +- **rotation** (*Optional*, 0-360): Offset to the 0 degree position. Defaults to ``0.0``. +- **start_angle** (*Optional*, 0-360): start angle of the arc background (see note). Defaults to ``135``. +- **value** (**Required**, int8): Actual value of the indicator at start, in ``0``-``100`` range. Defaults to ``0``. +- Any :ref:`Styling ` and state-based option to override styles inherited from parent. The arc's size and position will respect the padding style properties. + +If the ``adv_hittest`` :ref:`flag ` is enabled the arc can be clicked through in the middle. Clicks are recognized only on the ring of the background arc. + +.. note:: + + The zero degree position is at the middle right (3 o'clock) of the widget and the degrees increase in a clockwise direction from there. Angles are specified in the ``0``-``360`` range. + +**Actions:** + +- ``lvgl.arc.update`` :ref:`action ` updates the widget styles and properties from the specific options above, just like the :ref:`lvgl.widget.update ` action is used for the common styles, states or flags. + - **id** (**Required**): The ID or a list of IDs of arc widgets which you want update. + - Widget styles or properties from the specific options above, which you want update. + +**Triggers:** + +- ``on_value`` :ref:`trigger ` is activated when the knob changes the value of the arc. The new value is returned in the variable ``x``. +- :ref:`interaction ` LVGL event triggers which also return the value in ``x``. + +**Example:** + +.. code-block:: yaml + + # Example widget: + - arc: + x: 10 + y: 10 + id: arc_id + value: 75 + min_value: 0 + max_value: 100 + adjustable: true + + # Example action: + on_...: + then: + - lvgl.arc.update: + id: arc_id + knob: + bg_color: 0x00FF00 + value: 55 + + # Example trigger: + - arc: + ... + on_value: + - logger.log: + format: "Arc value is: %.0f" + args: [ 'x' ] + +.. note:: + + The ``on_value`` trigger is sent as the arc knob is dragged or changed with keys. The event is sent *continuously* while the arc knob is being dragged; this generally has a negative effect on performance. To mitigate this, consider using a :ref:`universal interaction trigger ` like ``on_release``, to get the ``x`` variable once after the interaction has completed. + +The ``arc`` can be also integrated as :doc:`Number ` or :doc:`Sensor ` component. + +.. _lvgl-widget-bar: + +``bar`` +------- + +The bar widget has a background and an indicator foreground on it. The size of the indicator is set according to the current ``value`` of the bar. + +.. figure:: /components/lvgl/images/lvgl_bar.png + :align: center + +Vertical bars can be created if the width is smaller than the height. + +Not only the end, but also the start value of the bar can be set, which changes the start position of the indicator. + +**Configuration variables:** + +- **anim_time** (*Optional*, :ref:`Time `): Sets the animation time if the value is set with ``animated: true``. +- **animated** (*Optional*, boolean): Animate the indicator when the bar changes value. Defaults to ``true``. +- **indicator** (*Optional*, list): Settings for the indicator *part* to show the value. Supports a list of :ref:`styles ` and state-based styles to customize, all the typical background properties. +- **max_value** (*Optional*, int8): Maximum value of the indicator. Defaults to ``100``. +- **min_value** (*Optional*, int8): Minimum value of the indicator. Defaults to ``0``. +- **mode** (*Optional*, string): ``NORMAL``: the indicator is drawn from the minimum value to the current. ``REVERSE``: the indicator is drawn counter-clockwise from the maximum value to the current. ``SYMMETRICAL``: the indicator is drawn from the middle point to the current value. Defaults to ``NORMAL``. +- **value** (**Required**, int8): Actual value of the indicator at start, in ``0``-``100`` range. Defaults to ``0``. +- Style options from :ref:`lvgl-styling`. The background of the bar and it uses the typical background style properties. Adding padding will make the indicator smaller or larger. + +**Actions:** + +- ``lvgl.bar.update`` :ref:`action ` updates the widget styles and properties from the specific options above, just like the :ref:`lvgl.widget.update ` action is used for the common styles, states or flags. + - **id** (**Required**): The ID or a list of IDs of bar widgets which you want update. + - Widget styles or properties from the specific options above, which you want update. + +**Triggers:** + +- :ref:`interaction ` LVGL event triggers. + +**Example:** + +.. code-block:: yaml + + # Example widget: + - bar: + x: 10 + y: 100 + id: bar_id + value: 75 + min_value: 1 + max_value: 100 + + # Example action: + on_...: + then: + - lvgl.bar.update: + id: bar_id + value: 55 + +The ``bar`` can be also integrated as :doc:`Number ` or :doc:`Sensor ` component. + +.. _lvgl-widget-button: + +``button`` +---------- + +Simple push (momentary) or toggle (two-states) button. + +.. figure:: /components/lvgl/images/lvgl_button.png + :align: center + +**Configuration variables:** + +- **checkable** (*Optional*, boolean): A significant :ref:`flag ` to make a toggle button (which remains pressed in ``checked`` state). Defaults to ``false``. +- Style options from :ref:`lvgl-styling` for the background of the button. Uses the typical background style properties. + +A notable state is ``checked`` (boolean) which can have different styles applied. + +**Triggers:** + +- ``on_value`` :ref:`trigger ` is activated after clicking. If ``checkable`` is ``true``, the boolean variable ``x``, representing the checked state, may be used by lambdas within this trigger. +- :ref:`interaction ` LVGL event triggers. + +**Example:** + +.. code-block:: yaml + + # Example widget: + - button: + x: 10 + y: 10 + width: 50 + height: 30 + id: btn_id + +To have a button with a text label on it, add a child :ref:`lvgl-widget-label` widget to it: + +.. code-block:: yaml + + # Example toggle button with text: + - button: + x: 10 + y: 10 + width: 70 + height: 30 + id: btn_id + checkable: true + widgets: + - label: + align: center + text: "Light" + + # Example trigger: + - button: + ... + on_value: + then: + - logger.log: + format: "Button checked state: %d" + args: [ x ] + +The ``button`` can be also integrated as a :doc:`Binary Sensor ` or as a :doc:`Switch ` component. + +.. _lvgl-widget-buttonmatrix: + +``buttonmatrix`` +---------------- + +The button matrix widget is a lightweight way to display multiple buttons in rows and columns. It's lightweight because the buttons are not actually created but instead simply drawn on the fly. This reduces the memory footprint of each button from approximately 200 bytes (for both the button and its label widget) down to only eight bytes. + +.. figure:: /components/lvgl/images/lvgl_buttonmatrix.png + :align: center + +**Configuration variables:** + +- **rows** (**Required**, list): A list for the button rows: + - **buttons** (**Required**, list): A list of buttons in a row: + - **id** (*Optional*): An ID for the button in the matrix. + - **key_code** (*Optional*, string): One character be sent as the key code to a :ref:`key_collector` instead of ``text`` when the button is pressed. + - **selected** (*Optional*, boolean): Set the button as the most recently released or focused. Defaults to ``false``. + - **text** (*Optional*): Text (or built-in :ref:`symbol ` codepoint) to display on the button. + - **width** (*Optional*): Width relative to the other buttons in the same row. Must be a value between ``1`` and ``15``; the default is ``1`` (for example, given a line with two buttons, one with ``width: 1`` and another one with ``width: 2``, the first will be ``33%`` wide while the second will be ``66%`` wide). + - **control** (*Optional*): Binary flags to control behavior of the buttons (all ``false`` by default): + - **checkable** (*Optional*, boolean): Enable toggling of a button, ``checked`` state will be added/removed as the button is clicked. + - **checked** (*Optional*, boolean): Make the button checked. Apply ``checked`` styles to the button. + - **click_trig** (*Optional*, boolean): Control how to :ref:`trigger ` ``on_value`` : if ``true`` on *click*, if ``false`` on *press*. + - **custom_1** and **custom_2** (*Optional*, boolean): Custom, free to use flags. + - **disabled** (*Optional*, boolean): Apply ``disabled`` styles to the button. + - **hidden** (*Optional*, boolean): Make a button hidden (hidden buttons still take up space in the layout, they are just not visible or clickable). + - **no_repeat** (*Optional*, boolean): Disable repeating when the button is long pressed. + - **popover** (*Optional*, boolean): Show the button label in a popover when pressing this button. + - **recolor** (*Optional*, boolean): Enable recoloring of button text with ``#``. For example: ``It's #FF0000 red#`` + +- **items** (*Optional*, list): Settings for the items *part*, the buttons all use the text and typical background style properties except translations and transformations. +- **one_checked** (*Optional*, boolean): Allow only one button to be checked at a time (aka. radio buttons). Defaults to ``false``. +- Style options from :ref:`lvgl-styling` for the background of the button matrix, uses the typical background style properties. ``pad_row`` and ``pad_column`` set the space between the buttons. + +**Actions:** + +- ``lvgl.buttonmatrix.update`` :ref:`action ` updates the item styles and properties specified in the specific ``state``, ``items`` options. + - **id** (**Required**): The ID or a list of IDs of buttonmatrix widgets which you want update. + - Widget styles or properties from ``state``, ``items`` options above, which you want update. + +- ``lvgl.matrix.button.update`` :ref:`action ` updates the button styles and properties specified in the specific ``control``, ``width`` and ``selected`` options. + - **id** (**Required**): The ID or a list of IDs of matrix buttons which you want update. + - Widget styles or properties from ``control``, ``width`` and ``selected`` options above, which you want update. + +**Triggers:** + +- ``on_value`` and :ref:`interaction ` triggers can be configured for each button, is activated after clicking. If ``checkable`` is ``true``, the boolean variable ``x``, representing the checked state, may be used by lambdas within this trigger. +- The :ref:`interaction ` LVGL event triggers can be configured for the main widget, they pass the ID of the pressed button (or null if nothing pressed) as variable ``x`` (a pointer to a ``uint16_t`` which holds the index number of the button). + +**Example:** + +.. code-block:: yaml + + # Example widget: + - buttonmatrix: + x: 10 + y: 40 + width: 220 + items: + pressed: + bg_color: 0xFFFF00 + id: matrix_id + rows: + - buttons: + - id: button_1 + text: "\uF04B" + control: + checkable: true + - id: button_2 + text: "\uF04C" + control: + checkable: true + - buttons: + - id: button_3 + text: "A" + control: + popover: true + - id: button_4 + text: "B" + control: + disabled: true + - buttons: + - id: button_5 + text: "It's #ff0000 red#" + width: 2 + control: + recolor: true + + # Example action: + on_...: + then: + - lvgl.matrix.button.update: + id: button_1 + width: 1 + selected: true + control: + checkable: false + - lvgl.buttonmatrix.update: + id: matrix_id + state: + disabled: true + items: + bg_color: 0xf0f0f0 + + # Example trigger: + - buttonmatrix: + ... + rows: + - buttons: + ... + - id: button_2 + ... + control: + checkable: true + on_value: # Trigger for the individual button, returning the checked state + then: + - logger.log: + format: "Button 2 checked: %d" + args: [ x ] + on_press: # Triggers for the matrix, to determine which button was pressed. + logger.log: + format: "Matrix button pressed: %d" + args: ["x"] # If x is 65535, it was the container, (or through a disabled button). + on_click: + logger.log: + format: "Matrix button clicked: %d, is button_2 = %u" + args: ["x", "id(button_2) == x"] + +.. tip:: + + The Button Matrix widget supports the :ref:`key_collector` to collect the button presses as key press sequences for further automations. + +.. _lvgl-widget-checkbox: + +``checkbox`` +------------ + +The checkbox widget is made internally from a *tick box* and a label. When the checkbox is clicked the tick box's ``checked`` state will be toggled. + +.. figure:: /components/lvgl/images/lvgl_checkbox.png + :align: center + +**Configuration variables:** + +- **indicator** (*Optional*, list): Settings for the indicator *part* to show the value. Supports a list of :ref:`styles ` and state-based styles to customize. The "tick box" is a square that uses all the typical background style properties. By default, its size is equal to the height of the main part's font. Padding properties make the tick box larger in the respective directions. +- Style options from :ref:`lvgl-styling` for the background of the widget and it uses the text and all the typical background style properties. ``pad_column`` adjusts the spacing between the tick box and the label. + +**Actions:** + +- ``lvgl.checkbox.update`` :ref:`action ` updates the widget styles and properties from the specific options above, just like the :ref:`lvgl.widget.update ` action is used for the common styles, states or flags. + - **id** (**Required**): The ID or a list of IDs of checkbox widgets which you want update. + - **text** (**Required**, :ref:`templatable `, string): The ``text`` option in this action can contain static text, a :ref:`lambda ` outputting a string or can be formatted using ``printf``-style formatting (see :ref:`display-printf`). + - **format** (*Optional*, string): The format for the message in :ref:`printf-style `. + - **args** (*Optional*, list of :ref:`lambda `): The optional arguments for the format message. + - Widget styles or properties from the specific options above, which you want update. + +**Triggers:** + +``on_value`` :ref:`trigger ` is activated when toggling the checkbox. The boolean variable ``x``, representing the checkbox's state, may be used by lambdas within this trigger. +- :ref:`interaction ` LVGL event triggers which also return the value in ``x``. + +**Example:** + +.. code-block:: yaml + + # Example widget: + - checkbox: + x: 10 + y: 10 + id: checkbox_id + text: Checkbox + + # Example action: + on_...: + then: + - lvgl.checkbox.update: + id: checkbox_id + state: + checked: true + text: Checked + + # Example trigger: + - checkbox: + ... + on_value: + then: + - logger.log: + format: "Checkbox state: %d" + args: [ x ] + +.. note:: + + In case you configure ``default_font`` in the main section to a custom font, the checkmark will not be shown correctly when the checkbox is in the checked state. + +The ``checkbox`` can be also integrated as a :doc:`Switch ` component. + +.. _lvgl-widget-dropdown: + +``dropdown`` +------------ + +The dropdown widget allows the user to select one value from a list. + +The dropdown list is closed by default and displays a single value. When activated (by clicking on the drop-down list), a list is drawn from which the user may select one option. When the user selects a new value, the list is deleted from the screen. + +.. figure:: /components/lvgl/images/lvgl_dropdown.png + :align: center + +The Dropdown widget is built internally from a *button* part and a *list* part (both not related to the actual widgets with the same name). + +**Configuration variables:** + +- **dir** (*Optional*, dict): Where the list part of the dropdown gets created relative to the button part. ``LEFT``, ``RIGHT``, ``BOTTOM``, ``TOP``, defaults to ``BOTTOM``. +- **dropdown_list** (*Optional*, list): Settings for the dropdown_list *part*, the list with items. Supports a list of :ref:`styles ` to customize. Notable are ``text_line_space`` and ``pad_all`` for spacing of list items, and ``text_font`` to separately change the font in the list. +- **indicator** (*Optional*, list): Settings for the the parent of ``symbol``. Supports a list of :ref:`styles ` to customize. +- **options** (**Required**, list): The list of available options in the drop-down. +- **scrollbar** (*Optional*, list): Settings for the scrollbar *part*. Supports a list of :ref:`styles ` to customize. The scrollbar background, border, shadow properties and width (for its own width) and right padding for the spacing on the right. +- **selected_index** (*Optional*, int8): The index of the item you wish to be selected. +- **selected** (*Optional*, list): Settings for the selected item in the list. Supports a list of :ref:`styles ` to customize. +- **symbol** (*Optional*, dict): A symbol (typically an chevron) is shown in dropdown list. If ``dir`` of the drop-down list is ``LEFT`` the symbol will be shown on the left, otherwise on the right. Choose a different :ref:`symbol ` from those built-in or from your own customized font. +- Style options from :ref:`lvgl-styling` for the background of the button and the list. Uses the typical background properties and :ref:`lvgl-widget-label` text properties for the text on it. ``max_height`` can be used to limit the height of the list. ``text_font`` can be used to set the font of the button part, including the symbol. + +**Actions:** + +- ``lvgl.dropdown.update`` :ref:`action ` updates the widget styles and properties from the specific options above, just like the :ref:`lvgl.widget.update ` action is used for the common styles, states or flags. + - **id** (**Required**): The ID or a list of IDs of dropdown widgets which you want update. + - Widget styles or properties from the specific options above, which you want update. + +**Triggers:** + +- ``on_value`` :ref:`trigger ` is activated only when you select an item from the list. The new selected index is returned in the variable ``x``. The :ref:`interaction ` LVGL event triggers also apply, and they also return the selected index in ``x``. +- ``on_cancel`` :ref:`trigger ` is also activated when you close the dropdown without selecting an item from the list. The currently selected index is returned in the variable ``x``. +- :ref:`interaction ` LVGL event triggers which also return the value in ``x``. + +**Example:** + +.. code-block:: yaml + + # Example widget: + - dropdown: + id: dropdown_id + width: 90 + align: CENTER + options: + - Violin + - Piano + - Bassoon + - Chello + - Drums + selected_index: 2 + + # Example action: + on_...: + then: + - lvgl.dropdown.update: + id: dropdown_id + selected_index: 4 + + # Example trigger: + - dropdown: + ... + on_value: + - logger.log: + format: "Selected index is: %d" + args: [ x ] + on_cancel: + - logger.log: + format: "Dropdown closed. Selected index is: %d" + args: [ x ] + +The ``dropdown`` can be also integrated as :doc:`Select ` component. + +.. _lvgl-widget-image: + +``image`` +--------- + +Images are the basic widgets used to display images. + +.. figure:: /components/lvgl/images/lvgl_image.png + :align: center + +**Configuration variables:** + +- **angle** (*Optional*, 0-360): Rotation of the image. Defaults to ``0.0``. Needs ``pivot_x`` and ``pivot_y`` to be specified. +- **antialias** (*Optional*): The quality of the angle or scale transformation. When anti-aliasing is enabled, the transformations are higher quality but slower. Defaults to ``false``. +- **mode** (*Optional*): Either ``REAL`` or ``VIRTUAL``. With ``VIRTUAL``, when the image is scaled or rotated, the real coordinates of the image object are not changed. The larger content simply overflows the object's boundaries. It also means the layouts are not affected the by the transformations. With ``REAL``, if the width/height of the object is set to ``SIZE_CONTENT``, the object's size will be set to the scaled and rotated size. If an explicit size is set, the overflowing content will be cropped. Defaults to ``VIRTUAL``. +- **offset_x** (*Optional*): Add a horrizontal offset to the image position. +- **offset_y** (*Optional*): Add a vertical offset to the image position. +- **pivot_x** (*Optional*): Horizontal position of the pivot point of rotation, in pixels, relative to the top left corner of the image. +- **pivot_y** (*Optional*): Vertical position of the pivot point of rotation, in pixels, relative to the top left corner of the image. +- **scale** (*Optional*, 0.1-10): Zoom of the image. +- **src** (**Required**, :ref:`image `): The ID of an existing image configuration. +- Some style options from :ref:`lvgl-styling` for the background rectangle that uses the typical background style properties and the image itself using the image style properties. + +**Actions:** + +- ``lvgl.image.update`` :ref:`action ` updates the widget styles and properties from the specific options above, just like the :ref:`lvgl.widget.update ` action is used for the common styles, states or flags. Updating the ``src`` option changes the image at runtime. + - **id** (**Required**): The ID or a list of IDs of image widgets which you want update. + - Widget styles or properties from the specific options above, which you want update. + +**Triggers:** + +- :ref:`interaction ` LVGL event triggers. + +**Example:** + +.. code-block:: yaml + + # Example widget: + - image: + align: CENTER + src: cat_image + id: img_id + radius: 11 + clip_corner: true + + # Example action: + on_...: + then: + - lvgl.image.update: + id: img_id + src: cat_image_bowtie + +.. note:: + + Currently ``RGB565`` type images are supported, with transparency using the optional parameter ``use_transparency`` set to ``true``. See :ref:`display-image` for how to load an image for rendering in ESPHome. + +.. tip:: + + ``offset_x`` and ``offset_y`` can be useful when the widget size is set to be smaller than the image source size. A "running image" effect can be created by animating these values. + +.. _lvgl-widget-keyboard: + +``keyboard`` +------------ + +The keyboard widget is a special Button matrix with predefined keymaps and other features to show an on-screen keyboard usable to type text into a :ref:`lvgl-widget-textarea`. + +.. figure:: /components/lvgl/images/lvgl_keyboard.png + :align: center + +For styling, the ``keyboard`` widget uses the same settings as :ref:`lvgl-widget-buttonmatrix`. + +**Configuration variables:** + +- **textarea** (*Optional*): The ID of the ``textarea`` from which to receive the keystrokes. +- **mode** (*Optional*, dict): Keyboard layout to use. Each ``TEXT_`` layout contains a button to allow the user to iterate through the ``TEXT_`` layouts. + - ``TEXT_LOWER``: Display lower case letters (default). + - ``TEXT_UPPER``: Display upper case letters. + - ``TEXT_SPECIAL``: Display special characters. + - ``NUMBER``: Display numbers, +/- sign, and decimal dot. + +**Actions:** + +- ``lvgl.keyboard.update`` :ref:`action ` updates the widget styles and properties from the specific options above, just like the :ref:`lvgl.widget.update ` action is used for the common styles, states or flags. + - **id** (**Required**): The ID or a list of IDs of keyboard widgets which you want update. + - Widget styles or properties from the specific options above, which you want update. + +**Triggers:** + +- ``on_ready`` :ref:`trigger ` is activated when the checkmark key is pressed. +- ``on_cancel`` :ref:`trigger ` is activated when the key containing the keyboard icon is pressed. + +**Example:** + +.. code-block:: yaml + + # Example widget: + - keyboard: + id: keyboard_id + textarea: textarea_1 + mode: TEXT_UPPER + + # Example actions: + on_focus: + then: + - lvgl.keyboard.update: + id: keyboard_id + mode: number + textarea: textarea_2 + + # Example trigger: + - keyboard: + ... + on_ready: + then: + - logger.log: Keyboard is ready + on_cancel: + then: + - logger.log: Keyboard cancelled + +.. tip:: + + The Keyboard widget supports the :ref:`key_collector` to collect the button presses as key press sequences for further automations. + +.. note:: + + The Keyboard widget in ESPHome doesn't support popovers or custom layouts. + +.. _lvgl-widget-label: + +``label`` +--------- + +A label is the basic widget type that is used to display text. + +.. figure:: /components/lvgl/images/lvgl_label.png + :align: center + +**Configuration variables:** + +- **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 :ref:`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. + - ``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). + - ``DOT``: Replaces the last 3 characters from bottom right corner of the label with dots. + - ``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. + - ``SCROLL_CIRCULAR``: If the text is wider than the label, continuously scroll the text horizontally. If it's higher, scroll vertically. Text will scroll in only one direction; horizontal scrolling has higher precedence. + - ``CLIP``: Simply clip the parts of the text outside the label. +- **recolor** (*Optional*, boolean): Enable recoloring of button text with ``#``. This makes it possible to set the color of characters in the text individually by prefixing the text to be re-colored with a ``#RRGGBB`` hexadecimal color code followed by a *space*, and finally closed with a single hash ``#`` tag. For example: ``Write a #FF0000 red# word``. +- **scrollbar** (*Optional*, list): Settings for the indicator *part* to show the value. Supports a list of :ref:`styles ` and state-based styles to customize. The scroll bar that is shown when the text is larger than the widget's size. +- **selected** (*Optional*, list): Settings for the the style of the selected text. Only ``text_color`` and ``bg_color`` style properties can be used. +- **text_align** (*Optional*, dict): Alignment of the text in the widget - it doesn't align the object itself, only the lines inside the object. One of ``LEFT``, ``CENTER``, ``RIGHT``, ``AUTO``. Inherited from parent. Defaults to ``AUTO``, which detects the text base direction and uses left or right alignment accordingly. +- **text_color** (*Optional*, :ref:`color `): Color to render the text in. Inherited from parent. Defaults to ``0`` (black). +- **text_decor** (*Optional*, list): Choose decorations for the text: ``NONE``, ``UNDERLINE``, ``STRIKETHROUGH`` (multiple can be specified as YAML list). Inherited from parent. Defaults to ``NONE``. +- **text_font**: (*Optional*, :ref:`font `): The ID of the font used to render the text or symbol. Inherited from parent. +- **text_letter_space** (*Optional*, int16): Extra character spacing of the text. Inherited from parent. Defaults to ``0``. +- **text_line_space** (*Optional*, int16): Line spacing of the text. Inherited from parent. Defaults to ``0``. +- **text_opa** (*Optional*, :ref:`opacity `): Opacity of the text. Inherited from parent. Defaults to ``COVER``. +- **text** (**Required**, string): The text (or built-in :ref:`symbol ` codepoint) to display. To display an empty label, specify ``""``. +- Style options from :ref:`lvgl-styling`. Uses all the typical background properties and the text properties. The padding values can be used to add space between the text and the background. + +.. note:: + + Newline escape sequences are handled automatically by the label widget. You can use ``\n`` to make a line break. For example: ``"line1\nline2\n\nline4"``. For escape sequences like newline to be translated, *enclose the string in double quotes*. + +**Actions:** + +- ``lvgl.label.update`` :ref:`action ` updates the widget styles and properties from the specific options above, just like the :ref:`lvgl.widget.update ` action is used for the common styles, states or flags. + - **id** (**Required**): The ID or a list of IDs of label widgets which you want update. + - **text** (**Required**, :ref:`templatable `, string): The ``text`` option in this action can contain static text, a :ref:`lambda ` outputting a string or can be formatted using ``printf``-style formatting (see :ref:`display-printf`). + - **format** (*Optional*, string): The format for the message in :ref:`printf-style `. + - **args** (*Optional*, list of :ref:`lambda `): The optional arguments for the format message. + - Widget styles or properties from the specific options above, which you want update. + +**Triggers:** + +- :ref:`interaction ` LVGL event triggers. + +**Example:** + +.. code-block:: yaml + + # Example widget: + - label: + align: CENTER + id: lbl_id + recolor: true + text: "#FF0000 write# #00FF00 colored# #0000FF text#" + + - label: + align: TOP_MID + id: lbl_symbol + text_font: montserrat_28 + text: "\uF013" + + # Example action (update label with a value from a sensor): + on_...: + then: + - lvgl.label.update: + id: lbl_id + text: + format: "%.0fdBm" + args: [ 'id(wifi_signal_db).get_state()' ] + +The ``label`` can be also integrated as :doc:`Text ` or :doc:`Text Sensor ` component. + +.. _lvgl-widget-led: + +``led`` +------- + +The LED widgets are either circular or rectangular widgets whose brightness can be adjusted. As their brightness decreases, the colors become darker. + +.. figure:: /components/lvgl/images/lvgl_led.png + :align: center + +**Configuration variables:** + +- **brightness** (*Optional*, percentage): The brightness of the LED color, where ``0%`` corresponds to black, and ``100%`` corresponds to the full brightness of the color specified above. +- **color** (*Optional*, :ref:`color `): Color for the background, border, and shadow of the widget. +- Style options from :ref:`lvgl-styling`, using all the typical background style properties. + +**Actions:** + +- ``lvgl.led.update`` :ref:`action ` updates the widget styles and properties from the specific options above, just like the :ref:`lvgl.widget.update ` action is used for the common styles, states or flags. + - **id** (**Required**): The ID or a list of IDs of led widgets which you want update. + - Widget styles or properties from the specific options above, which you want update. + +**Triggers:** + +- :ref:`interaction ` LVGL event triggers. + +**Example:** + +.. code-block:: yaml + + # Example widget: + - led: + id: led_id + align: CENTER + color: 0xFF0000 + brightness: 70% + + # Example action: + on_...: + then: + - lvgl.led.update: + id: led_id + color: 0x00FF00 + +The ``led`` can be also integrated as :doc:`Light ` component. + +.. note:: + + If configured as a light component, ``color`` and ``brightness`` are overridden by the light at startup, according to its ``restore_mode`` setting. + +.. _lvgl-widget-line: + +``line`` +-------- + +The line widget is capable of drawing straight lines between a set of points. + +.. figure:: /components/lvgl/images/lvgl_line.png + :align: center + +**Configuration variables:** + +- **line_color** (*Optional*, :ref:`color `): Color for the line. +- **line_dash_gap** (*Optional*, int16): Set the width of the gap between the dashes in the line (in pixels). +- **line_dash_width** (*Optional*, int16): Set the width of the dashes in the line (in pixels). +- **line_rounded** (*Optional*, boolean): Make the end points of the line rounded. ``true`` rounded, ``false`` perpendicular line ending. +- **line_width** (*Optional*, int16): Set the width of the line in pixels. +- **points** (**Required**, list): A list of ``x, y`` integer pairs for point coordinates (origin from top left of parent) +- Style options from :ref:`lvgl-styling`, all the typical background properties and line style properties. + +By default, the Line widget width and height dimensions are set to ``SIZE_CONTENT``. This means it will automatically set its size to fit all the points. If the size is set explicitly, parts of the line may not be visible. + +**Example:** + +.. code-block:: yaml + + # Example widget: + - line: + points: + - 5, 5 + - 70, 70 + - 120, 10 + - 180, 60 + - 230, 15 + line_width: 8 + line_color: 0x0000FF + line_rounded: true + +.. _lvgl-widget-meter: + +``meter`` +--------- + +The meter widget can visualize data in very flexible ways. It can use arcs, needles, ticks, lines and/or labels. + +.. figure:: /components/lvgl/images/lvgl_meter.png + :align: center + +**Configuration variables:** + +- **scales** (**Required**, list): A list with (any number of) scales to be added to the meter. + - **angle_range** (**Required**): The angle between start and end of the tick scale. Defaults to ``270``. + - **indicators** (**Required**, list): A list with indicators to be added to the scale. Multiple of each can be added. Their values are interpreted in the range of the scale: + - **arc** (*Optional*): Add a background arc the scale: + - **color**: :ref:`Color ` to draw the arc. Defaults to ``0`` (black). + - **end_value**: The value in the scale range to end drawing the arc to. + - **r_mod**: Adjust the position of the arc from the scale radius with this amount (can be negative). Defaults to ``0``. + - **start_value**: The value in the scale range to start drawing the arc from. + - **width**: Arc width in pixels. Defaults to ``4``. + - Style options for the *arc* using the :ref:`lvgl-widget-arc` style properties. + - **image** (*Optional*): Add a rotating needle image to the scale: + - **id**: Manually specify the :ref:`config-id` used for updating the indicator value at runtime. + - **pivot_x**: Horizontal position of the pivot point of rotation, in pixels, relative to the top left corner of the image. + - **pivot_y**: Vertical position of the pivot point of rotation, in pixels, relative to the top left corner of the image. + - **src**: The ID of an existing image configuration, representing a needle pointing to the right like ``-o--->``. + - **value**: The value in the scale range to show at start. + - **line** (*Optional*): Add a needle line to the scale. By default, the length of the line is the same as the scale's radius: + - **color**: :ref:`Color ` for the needle line. Defaults to ``0`` (black). + - **id**: Manually specify the :ref:`config-id` used for updating the indicator value at runtime. + - **r_mod**: Adjust the length of the needle from the scale radius with this amount (can be negative). Defaults to ``0``. + - **value**: The value in the scale range to show at start. + - **width**: Needle line width in pixels. Defaults to ``4``. + - Style options for the *needle line* using the :ref:`lvgl-widget-line` style properties, as well as the background properties from :ref:`lvgl-styling` to draw a square (or circle) on the pivot of the needles. Padding makes the square larger. + - **tick_style** (**Optional**): Add tick style modifications: + - **color_end**: :ref:`Color ` for the gradient end of the ticks. + - **color_start**: :ref:`Color ` for the gradient start of the ticks. + - **end_value**: The value in the scale range to modify the ticks to. + - **local**: If ``true`` the ticks' color will be faded from ``color_start`` to ``color_end`` in the start and end values specified above. If ``false``, ``color_start`` and ``color_end`` will be mapped to the entire scale range (and only a *slice* of that color gradient will be visible in the indicator's start and end value range). Defaults to ``false``. + - **start_value**: The value in the scale range to modify the ticks from. + - **width**: Modifies the ``width`` of the tick lines. + - **range_from** (**Required**): The minimum value of the tick scale. Defaults to ``0``. + - **range_to** (**Required**): The maximum value of the tick scale. Defaults to ``100``. + - **rotation** (*Optional*): The rotation angle offset of the tick scale. + - **ticks** (**Required**, list): A scale can have minor and major ticks and labels on the major ticks. To add the minor ticks: + - **color** (*Optional*, :ref:`color `): Color to draw the ticks. Required if ``count`` is greater than ``0``. Defaults to ``0x808080``. + - **count** (**Required**): How many ticks to be on the scale. Defaults to ``12``. + - **length** (*Optional*): Tick line length in pixels. Required if ``count`` is greater than ``0``. Defaults to ``10``. + - **width** (*Optional*): Tick line width in pixels. Required if ``count`` is greater than ``0``. Defaults to ``2``. + - **major** (*Optional*, list): If you want major ticks and value labels displayed: + - **color**: :ref:`Color ` to draw the major ticks. Defaults to ``0`` (black). + - **label_gap**: Label distance from the ticks with text proportional to the values of the tick line. Defaults to ``4``. + - **length**: Tick line length in pixels or percentage. Defaults to ``15%``. + - **stride**: How many minor ticks to skip when adding major ticks. Defaults to ``3``. + - **width**: Tick line width in pixels. Defaults to ``5``. + - Style options from :ref:`lvgl-styling` for the tick *lines* and *labels* using the :ref:`lvgl-widget-line` and :ref:`lvgl-widget-label` text style properties. +- Style options from :ref:`lvgl-styling` for the background of the meter, using the typical background properties. + +.. note:: + + The zero degree position is at the middle right (3 o'clock) of the widget and the degrees increase in a clockwise direction from there. Angles are specified in the ``0``-``360`` range. + +**Actions:** + +- ``lvgl.indicator.update`` :ref:`action ` updates indicator options except ``src``, which cannot be updated at runtime. :ref:`lvgl.widget.update ` action can be used for the common styles, states or flags of the meter widget (not the indicators). + - **id** (**Required**): The ID or a list of IDs of line or image indicators which you want update. + +**Triggers:** + +- :ref:`interaction ` LVGL event triggers. + +**Example:** + +.. code-block:: yaml + + # Example widget: + - meter: + align: center + scales: + range_from: -10 + range_to: 40 + angle_range: 240 + rotation: 150 + ticks: + count: 51 + length: 3 + major: + stride: 5 + length: 13 + label_gap: 13 + indicators: + - line: + id: temperature_needle + width: 2 + color: 0xFF0000 + r_mod: -4 + - tick_style: + start_value: -10 + end_value: 40 + color_start: 0x0000bd #FF0000 + color_end: 0xbd0000 #0000FF + + # Example action: + on_...: + then: + - lvgl.indicator.update: + id: temperature_needle + value: 3 + +.. _lvgl-widget-msgbox: + +``msgboxes`` +------------ + +The message boxes act as pop-ups. They are built from a background container, a title, an optional close button, a text and optional buttons. + +.. figure:: /components/lvgl/images/lvgl_msgbox.png + :align: center + +The text will be broken into multiple lines automatically and the height will be set automatically to include the text and the buttons. The message box is modal (blocks clicks on the rest of the screen until closed). + +**Configuration variables:** + +- **msgboxes** (*Optional*, dict): A list of message boxes to use. This option has to be added to the top level of the LVGL component configuration. + - **body** (**Required**, dict): The content of the body of the message box: + - **text** (**Required**, string): The string to be displayed in the body of the message box. Can be shorthanded if no further options are specified. + - Style options from :ref:`lvgl-styling`. Uses all the typical background properties and the text properties. + - **buttons** (**Required**, dict): A list of buttons to show at the bottom of the message box: + - **text** (**Required**, string): The text (or built-in :ref:`symbol ` codepoint) to display on the button. + - **close_button** (**Required**, boolean): Controls the appearance of the close button to the top right of the message box. + - **title** (**Required**, string): A string to display at the top of the message box. + +**Actions:** + +The configured message boxes are hidden by default. One can show them with ``lvgl.widget.show`` and ``lvgl.widget.hide`` :ref:`actions `. + +**Example:** + +.. code-block:: yaml + + # Example widget: + lvgl: + ... + msgboxes: + - id: message_box + close_button: true + title: Message box + body: + text: "This is a sample message box." + bg_color: 0x808080 + buttons: + - id: msgbox_apply + text: "Apply" + - id: msgbox_close + text: "\uF00D" + on_click: + then: + - lvgl.widget.hide: message_box + +.. tip:: + + You can create your own more complex dialogs with a full-screen sized, half-opaque ``obj`` with any child widgets on it, and the ``hidden`` flag set to ``true`` by default. For non-modal dialogs, simply set the ``clickable`` flag to ``false`` on it. + +.. _lvgl-widget-obj: + +``obj`` +------- + +The base object is just a simple, empty widget. By default, it's nothing more than a rounded rectangle: + +.. figure:: /components/lvgl/images/lvgl_baseobj.png + :align: center + +You can use it as a parent container for other widgets. By default, it catches touches. + +**Configuration variables:** + +- Style options from :ref:`lvgl-styling`. + +**Triggers:** + +- :ref:`interaction ` LVGL event triggers. + +**Example:** + +.. code-block:: yaml + + # Example widget: + - obj: + x: 10 + y: 10 + width: 220 + height: 300 + widgets: + - ... + +.. _lvgl-widget-roller: + +``roller`` +---------- + +Roller allows you to simply select one option from a list by scrolling. + +.. figure:: /components/lvgl/images/lvgl_roller.png + :align: center + +**Configuration variables:** + +- **anim_time** (*Optional*, :ref:`Time `): When the Roller is scrolled and doesn't stop exactly on an option it will scroll to the nearest valid option automatically in this amount of time. +- **mode** (*Optional*, dict): Option to make the roller circular. ``NORMAL`` or ``INFINITE``, defaults to ``NORMAL``. +- **options** (**Required**, list): The list of available options in the roller. +- **selected_index** (*Optional*, int8): The index of the item you wish to be selected. +- **selected** (*Optional*, list): Settings for the selected *part* to show the value. Supports a list of :ref:`styles ` and state-based styles to customize. The selected option in the middle. Besides the typical background properties it uses the :ref:`lvgl-widget-label` text style properties to change the appearance of the text in the selected area. +- **visible_row_count** (*Optional*, int8): The number of visible rows. +- Style options from :ref:`lvgl-styling`. The background of the roller uses all the typical background properties and :ref:`lvgl-widget-label` style properties. ``text_line_space`` adjusts the space between the options. + +**Actions:** + +- ``lvgl.roller.update`` :ref:`action ` updates the widget styles and properties from the specific options above, just like the :ref:`lvgl.widget.update ` action is used for the common styles, states or flags. + - **id** (**Required**): The ID or a list of IDs of roller widgets which you want update. + - Widget styles or properties from the specific options above, which you want update. + +**Triggers:** + +- ``on_value`` :ref:`trigger ` is activated when you select an item from the list. The new selected index is returned in the variable ``x``. +- :ref:`interaction ` LVGL event triggers which also return the selected index in ``x``. + +**Example:** + +.. code-block:: yaml + + # Example widget: + - roller: + align: CENTER + id: roller_id + options: + - Violin + - Piano + - Bassoon + - Chello + - Drums + + # Example action: + on_...: + then: + - lvgl.roller.update: + id: roller_id + selected_index: 4 + + # Example trigger: + - roller: + ... + on_value: + - logger.log: + format: "Selected index is: %d" + args: [ x ] + +The ``roller`` can be also integrated as :doc:`Select ` component. + +.. _lvgl-widget-slider: + +``slider`` +---------- + +The slider widget looks like a bar supplemented with a knob. The user can drag the knob to set a value. Just like bar, slider can be vertical or horizontal. The size of the indicator foreground and the knob position is set according to the current ``value`` of the slider. + +.. figure:: /components/lvgl/images/lvgl_slider.png + :align: center + +**Configuration variables:** + +- **anim_time** (*Optional*, :ref:`Time `): Sets the animation time if the value is set with ``animated: true``. +- **animated** (*Optional*, boolean): Animate the indicator when the bar changes value. Defaults to ``true``. +- **indicator** (*Optional*, list): Settings for the indicator *part* to show the value. Supports a list of :ref:`styles ` and state-based styles to customize. The indicator shows the current state of the slider. Also uses all the typical background style properties. +- **knob** (*Optional*, list): Settings for the knob *part* to control the value. Supports a list of :ref:`styles ` and state-based styles to customize. A rectangle (or circle) is drawn at the current value. Also uses all the typical background properties to describe the knob. By default, the knob is square (with an optional corner radius) with side length equal to the smaller side of the slider. The knob can be made larger with the padding values. Padding values can be asymmetric. +- **max_value** (*Optional*, int8): Maximum value of the indicator. Defaults to ``100``. +- **min_value** (*Optional*, int8): Minimum value of the indicator. Defaults to ``0``. +- **value** (**Required**, int8): Actual value of the indicator at start, in ``0``-``100`` range. Defaults to ``0``. +- Any :ref:`Styling ` and state-based option for the background of the slider. Uses all the typical background style properties. Padding makes the indicator smaller in the respective direction. + +Normally, the slider can be adjusted either by dragging the knob, or by clicking on the slider bar. In the latter case the knob moves to the point clicked and slider value changes accordingly. In some cases it is desirable to set the slider to react on dragging the knob only. This feature is enabled by enabling the ``adv_hittest`` flag. + +**Actions:** + +- ``lvgl.slider.update`` :ref:`action ` updates the widget styles and properties from the specific options above, just like the :ref:`lvgl.widget.update ` action is used for the common styles, states or flags. + - **id** (**Required**): The ID or a list of IDs of slider widgets which you want update. + - Widget styles or properties from the specific options above, which you want update. + +**Triggers:** + +- ``on_value`` :ref:`trigger ` is activated when the knob changes the value of the slider. The new value is returned in the variable ``x``. +- :ref:`interaction ` LVGL event triggers which also return the value in ``x``. + +**Example:** + +.. code-block:: yaml + + # Example widget: + - slider: + x: 10 + y: 10 + width: 220 + id: slider_id + value: 75 + min_value: 0 + max_value: 100 + + # Example action: + on_...: + then: + - lvgl.slider.update: + id: slider_id + knob: + bg_color: 0x00FF00 + value: 55 + + # Example trigger: + - slider: + ... + on_value: + - logger.log: + format: "Slider value is: %.0f" + args: [ 'x' ] + +.. note:: + + The ``on_value`` trigger is sent as the slider is dragged or changed with keys. The event is sent *continuously* while the slider is being dragged; this generally has a negative effect on performance. To mitigate this, consider using a :ref:`universal interaction trigger ` like ``on_release``, to get the ``x`` variable once after the interaction has completed. + +The ``slider`` can be also integrated as :doc:`Number ` or :doc:`Sensor ` component. + +.. _lvgl-widget-spinbox: + +``spinbox`` +----------- + +The spinbox contains a numeric value (as text) which can be increased or decreased through actions. You can, for example, use buttons labeled with plus and minus to call actions which increase or decrease the value as required. + +.. figure:: /components/lvgl/images/lvgl_spinbox.png + :align: center + +**Configuration variables:** + +- **anim_time** (*Optional*, :ref:`Time `): Sets the cursor's blink time. +- **decimal_places** (*Optional*, 0..6): The number of digits after the decimal point. If ``0``, no decimal point is displayed. Defaults to ``0``. +- **digits** (*Optional*, 1..10): The number of digits (excluding the decimal separator and the sign characters). Defaults to ``4``. +- **range_from** (*Optional*, float): The minimum value allowed to set the spinbox to. Defaults to ``0``. +- **range_to** (*Optional*, float): The maximum value allowed to set the spinbox to. Defaults to ``100``. +- **rollover** (*Optional*, boolean): While increasing or decreasing the value, if either the minimum or maximum value is reached with this option enabled, the value will change to the other limit. If disabled, the value will remain at the minimum or maximum value. Defaults to ``false``. +- **step** (*Optional*, float): The granularity with which the value can be set. Defaults to ``1.0``. +- **value** (**Required**, float): Actual value to be shown by the spinbox at start. + +.. note:: + + The sign character will only be shown if the set range contains negatives. + +**Actions:** + +- ``lvgl.spinbox.update`` :ref:`action ` updates the widget styles and properties from the specific options above, just like the :ref:`lvgl.widget.update ` action is used for the common styles, states or flags. + - **id** (**Required**): The ID or a list of IDs of spinbox widgets which you want update. + - Widget styles or properties from the specific options above, which you want update. + +- ``lvgl.spinbox.increment`` :ref:`action ` increases the value by one ``step`` configured above. + - **id** (**Required**): The ID of the spinbox widget which you want to increment. + +- ``lvgl.spinbox.decrement`` :ref:`action ` decreases the value by one ``step`` configured above. + - **id** (**Required**): The ID of the spinbox widget which you want to decrement. + +**Triggers:** + +- ``on_value`` :ref:`trigger ` is activated when the knob changes the value of the arc. The new value is returned in the variable ``x``. +- :ref:`interaction ` LVGL event triggers which also return the value in ``x``. + +**Example:** + +.. code-block:: yaml + + # Example widget: + - spinbox: + id: spinbox_id + text_align: center + range_from: -10 + range_to: 40 + step: 0.5 + digits: 3 + decimal_places: 1 + + # Example actions: + on_...: + then: + - lvgl.spinbox.decrement: spinbox_id + on_...: + then: + - lvgl.spinbox.update: + id: spinbox_id + value: 25.5 + + # Example trigger: + - spinbox: + ... + on_value: + then: + - logger.log: + format: "Spinbox value is %f" + args: [ x ] + +The ``spinbox`` can be also integrated as :doc:`Number ` or :doc:`Sensor ` component. + +.. _lvgl-widget-spinner: + +``spinner`` +----------- + +The Spinner widget is a spinning arc over a ring. + +.. figure:: /components/lvgl/images/lvgl_spinner.gif + :align: center + +**Configuration variables:** + +- **arc_color** (*Optional*, :ref:`color `): Color to draw the arcs. +- **arc_length** (**Required**, 0-360): Length of the spinning arc in degrees. +- **arc_opa** (*Optional*, :ref:`opacity `): Opacity of the arc. +- **arc_rounded** (*Optional*, boolean): Make the end points of the arcs rounded. ``true`` rounded, ``false`` perpendicular line ending. +- **arc_width** (*Optional*, int16): Set the width of the arcs in pixels. +- **indicator** (*Optional*, list): Settings for the indicator *part* to show the value. Supports a list of :ref:`styles ` and state-based styles to customize. Draws *another arc using the arc style* properties. Its padding values are interpreted relative to the background arc. +- **spin_time** (**Required**, :ref:`Time `): Duration of one cycle of the spin. + +**Actions:** + +- ``lvgl.spinner.update`` :ref:`action ` updates the widget styles and properties for the *indicator* part (anything other than the properties that apply commonly to all widgets), just like the :ref:`lvgl.widget.update ` action is used for the common styles, states or flags. + - **id** (**Required**): The ID or a list of IDs of spinner widgets which you want update. + - Widget styles or properties from the specific options above, which you want update. + +**Triggers:** + +- :ref:`interaction ` LVGL event triggers. + +**Example:** + +.. code-block:: yaml + + # Example widget: + - spinner: + align: center + spin_time: 2s + arc_length: 60deg + id: spinner_id + indicator: + arc_color: 0xd4d4d4 + + # Example action: + on_...: + then: + - lvgl.spinner.update: + id: spinner_id + arc_color: 0x31de70 + +.. _lvgl-widget-switch: + +``switch`` +---------- + +The switch looks like a little slider and can be used to turn something on and off. + +.. figure:: /components/lvgl/images/lvgl_switch.png + :align: center + +**Configuration variables:** + +- **indicator** (*Optional*, list): Settings for the indicator *part*, the foreground area underneath the knob shown when the switch is in ``checked`` state. Supports a list of :ref:`styles ` and state-based styles to customize. +- **knob** (*Optional*, list): Settings for the knob *part* to control the value. Supports a list of :ref:`styles ` and state-based styles to customize. +- Style options from :ref:`lvgl-styling`. + +**Triggers:** + +- ``on_value`` :ref:`trigger ` is activated when toggling the switch. The boolean variable ``x``, representing the switch's state, may be used by lambdas within this trigger. +- :ref:`interaction ` LVGL event triggers which also return the value in ``x``. + +**Example:** + +.. code-block:: yaml + + # Example widget: + - switch: + x: 10 + y: 10 + id: switch_id + + # Example trigger: + - switch: + ... + on_value: + then: + - logger.log: + format: "Switch state: %d" + args: [ x ] + +The ``switch`` can be also integrated as a :doc:`Switch ` component. + +.. _lvgl-widget-tabview: + +``tabview`` +----------- + +The tab view object can be used to organize content in tabs. The tab buttons are internally generated with a :ref:`lvgl-widget-buttonmatrix`. + +.. figure:: /components/lvgl/images/lvgl_tabview.png + :align: center + +The tabs are indexed (zero-based) in the order they appear in the configuration file. A new tab can be selected either by clicking on a tab button, by sliding horizontally on the content or via the ``lvgl.tabview.select`` :ref:`action `, specifying the tab's index. + +**Configuration variables:** + +- **position** (*Optional*, string): Position of the tab selector buttons. One of ``TOP``, ``BOTTOM``, ``LEFT``, ``RIGHT``. Defaults to ``TOP``. +- **size** (*Optional*, percentage): The height (in case of ``TOP``, ``BOTTOM``) or width (in case of ``LEFT``, ``RIGHT``) tab buttons. Defaults to ``10%``. +- **tabs** (**Required**, list): A list with (any number of) tabs to be added to tabview. + - **name** (**Required**): The text to be shown on the button corresponding to the tab. + - **id** (*Optional*): An ID for the tab itself. + - **widgets** (**Required**, list): A list of :doc:`/components/lvgl/widgets` to be drawn on the tab, as children. +- **tab_style** (*Optional*): Style settings for the tabs. + - **items** (*Optional*, list): Settings for the items *part*, the buttons all use the text and typical background style properties except translations and transformations. + +**Actions:** + +- ``lvgl.tabview.select`` :ref:`action ` jumps the view to the desired tab: + - **id** (**Required**): The ID of the tabview which receives this action. + - **index** (**Required**): The (zero-based) index of the tab to which to jump. + - **animated** (*Optional*, boolean): To animate the movement. Defaults to ``false``. + +**Triggers:** + +- ``on_value`` :ref:`trigger ` is activated when displayed tab changes. The new value is returned in the variable ``tab`` as the ID of the now-visible tab. +- :ref:`interaction ` LVGL event triggers. + +**Example:** + +.. code-block:: yaml + + # Example widget: + - tabview: + id: tabview_id + position: top + tab_style: + border_color: 0x00FF00 + border_width: 6 + items: + text_color: 0x0000FF + tabs: + - name: Dog + id: tabview_tab_1 + widgets: + - image: + src: dog_img + ... + ... + + # Example action: + on_...: + then: + - lvgl.tabview.select: + id: tabview_id + index: 1 + animated: true + + # Example trigger: + - tabview: + ... + on_value: + then: + - if: + condition: + lambda: return tab == id(tabview_tab_1); + then: + - logger.log: "Dog tab is now showing" + +.. _lvgl-widget-textarea: + +``textarea`` +------------ + +The textarea is an extended label widget which displays a cursor and allows the user to input text. Long lines are wrapped and when the text becomes long enough the text area can be scrolled. It supports one line mode and password mode, where typed characters are replaced visually with bullets or asterisks. + +.. figure:: /components/lvgl/images/lvgl_textarea.png + :align: center + +**Configuration variables:** + +- **accepted_chars** (*Optional*, string): You can set a list of accepted characters, so other characters will be ignored. +- **max_length** (*Optional*, int): Limit the maximum number of characters to this value. +- **one_line** (*Optional*, boolean): The text area can be limited to only allow a single line of text. In this case the height will set automatically to fit only one line, line break characters will be ignored, and word wrap will be disabled. +- **password_mode** (*Optional*, boolean): The text area supports password mode. By default, if the ``•`` (bullet, ``0x2022``) glyph exists in the font, the entered characters are converted to it after some time or when a new character is entered. If ``•`` is missing from the font, ``*`` (asterisk) will be used. +- **placeholder_text** (*Optional*, string): A placeholder text can be specified, which is displayed when the Text area is empty. +- any :ref:`Styling ` and state-based option for the background of the textarea. Uses all the typical background style properties and the text/label related style properties for the text. + +**Actions:** + +- ``lvgl.textarea.update`` :ref:`action ` updates the widget's ``text`` property, to replace the entire text content. + - **id** (**Required**): The ID or a list of IDs of textarea widgets which you want update. + - **text** (**Required**): The new text content to be displayed. + +**Triggers:** + +- ``on_value`` :ref:`trigger ` is activated on every keystroke. +- ``on_ready`` :ref:`trigger ` is activated when ``one_line`` is configured as ``true`` and the newline character is received (Enter/Ready key on the keyboard). +- :ref:`interaction ` LVGL event triggers. + +For both triggers above, when triggered, the variable ``text`` (``std::string`` type) is available for use in lambdas within these triggers and it will contain the entire contents of the textarea. + +**Example:** + +.. code-block:: yaml + + # Example widget: + - textarea: + id: textarea_id + one_line: true + placeholder_text: "Enter text here" + + # Example action: + on_...: + then: + - lvgl.textarea.update: + id: textarea_id + text: "Hello World!" + + # Example trigger: + - textarea: + ... + on_value: + then: + - logger.log: + format: "Textarea changed to: %s" + args: [ text.c_str() ] + on_ready: + then: + - logger.log: + format: "Textarea ready: %s" + args: [ text.c_str() ] + +The ``textarea`` can be also integrated as :doc:`Text ` or :doc:`Text Sensor ` component. + +.. _lvgl-widget-tileview: + +``tileview`` +------------ + +The tileview is a container object whose elements, called tiles, can be arranged in grid form. A user can navigate between the tiles by dragging or swiping. Any direction can be disabled on the tiles individually to not allow moving from one tile to another. + +If the Tile view is screen sized, the user interface resembles what you may have seen on smartwatches. + +**Configuration variables:** + +- **tiles** (**Required**, list): A list with (any number of) tiles to be added to tileview. + - **column** (**Required**): Vertical position of the tile in the tileview grid. + - **row** (**Required**): Horizontal position of the tile in the tileview grid. + - **dir** (*Optional*): Enable moving to adjacent tiles in the given direction by swiping/dragging. One (or multiple as YAML list) of ``LEFT``, ``RIGHT``, ``TOP``, ``BOTTOM``, ``HOR``, ``VER``, ``ALL``. Defaults to ``ALL``. + - **id** (*Optional*): A tile ID to be used with the ``lvgl.tileview.select`` action. + - **widgets** (*Optional*, list): A list of :doc:`/components/lvgl/widgets` to be drawn on the tile, as children. + +**Actions:** + +- ``lvgl.tileview.select`` :ref:`action ` jumps the ``tileview`` to the desired tile: + - **animated** (*Optional*, boolean): To animate the movement. Defaults to ``false``. + - **column** (*Optional*): Vertical position of the tile to which to jump. Required if not specifying ``tile_id``. + - **row** (*Optional*): Horizontal position of the tile to which to jump. Required if not specifying ``tile_id``. + - **id** (**Required**): The ID of the tileview which receives this action. + - **tile_id** (*Optional*): The ID of the tile (from within the tileview) to which to jump. Required if not specifying ``row`` and ``column``. + +**Triggers:** + +- ``on_value`` :ref:`trigger ` is activated when displayed tile changes. The new value is returned in the variable ``tile`` as the ID of the now-visible tile. +- :ref:`interaction ` LVGL event triggers. + +**Example:** + +.. code-block:: yaml + + # Example widget: + - tileview: + id: tiv_id + tiles: + - id: cat_tile + row: 0 + column: 0 + dir: VER + widgets: + - image: + src: cat_image + - ... + - ... + + # Example action: + on_...: + then: + - lvgl.tileview.select: + id: tiv_id + tile_id: cat_tile + animated: true + + # Example trigger: + - tileview: + ... + on_value: + - if: + condition: + lambda: return tile == id(cat_tile); + then: + - logger.log: "Cat tile is now showing" + +.. _lvgl-automations: + +Automations +----------- + +.. _lvgl-automation-actions: + +Actions +******* + +As outlined in the sections above, each widget type supports several of its own, unique actions. +Several universal actions are also available for all widgets, these are outlined below. + +``lvgl.widget.update`` +^^^^^^^^^^^^^^^^^^^^^^ + +This powerful :ref:`action ` allows changing/updating any widget's common :ref:`style property `, state (templatable) or :ref:`flag ` on the fly. + +- **id** (**Required**): The ID or a list of IDs of widgets configured in LVGL which you want update. +- The widget's common :ref:`style property `, state (templatable) or :ref:`flag `. + +.. code-block:: yaml + + # Example for updating styles (in states): + on_...: + then: + - lvgl.widget.update: + id: my_button_id + bg_color: 0xFF0000 + state: + disabled: true + + # Example for updating flag: + on_...: + then: + - lvgl.widget.update: + id: my_label_id + hidden: true + + +.. _lvgl-automation-shorthands: + +``lvgl.widget.hide``, ``lvgl.widget.show`` +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +These :ref:`actions ` are shorthands for toggling the ``hidden`` :ref:`flag ` of any widget. + +- **id** (**Required**): The ID or a list of IDs of widgets configured in LVGL which you want to hide or show. + +.. code-block:: yaml + + on_...: + then: + - lvgl.widget.hide: my_label_id # a single widget + - lvgl.widget.show: [my_button_1, my_button_2] # a list of widgets + - delay: 0.5s + - lvgl.widget.show: + -id: my_label_id + - lvgl.widget.hide: + - id: [my_button_1, my_button_2] + +``lvgl.widget.disable``, ``lvgl.widget.enable`` +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +These :ref:`actions ` are shorthands for toggling the ``disabled`` state of any widget (which controls the appearance of the corresponding *disabled* style set of the theme): + +- **id** (**Required**): The ID or a list of IDs of widgets configured in LVGL which you want to disable or enable. + +.. code-block:: yaml + + - on_...: + then: + - lvgl.widget.disable: + - my_button_1 + - my_button_2 + + - on_...: + then: + - lvgl.widget.enable: + - id: my_button_1 + - id: my_button_2 + +.. _lvgl-automation-triggers: + +Triggers +******** + +Specific triggers like ``on_value`` are available for certain widgets; they are described above in their respective section. +Some universal triggers are also available for all of the widgets: + +ESPHome implements as universal triggers the following interaction events generated by LVGL: + +- ``on_press``: The widget has been pressed. +- ``on_long_press``: The widget has been pressed for at least the ``long_press_time`` specified in the input device configuration. Not called if scrolled. +- ``on_long_press_repeat``: Called after ``long_press_time`` in every ``long_press_repeat_time`` ms. Not called if scrolled. +- ``on_short_click``: The widget was pressed for a short period of time, then released. Not called if scrolled or long pressed. +- ``on_click``: Called on release if a widget did not scroll (regardless of long press). +- ``on_release``: Called in every case when a widget has been released. +- ``on_scroll_begin``: Scrolling of the widget begins. +- ``on_scroll_end``: Scrolling of the widget ends. +- ``on_scroll``: The widget was scrolled. +- ``on_focus``: The widget is focused. +- ``on_defocus``: The widget is unfocused. + +These triggers can be applied directly to any widget in the LVGL configuration, *given that the widget itself supports generating such events*. For the widgets having a value, the triggers return the current value in variable ``x``; this variable may be used in lambdas defined within those triggers. + +.. code-block:: yaml + + # Example triggers: + - button: + ... + on_short_click: + then: + lvgl.page.show: main_page + on_long_press: + then: + light.toggle: display_backlight + + - slider: + ... + on_release: + then: + - light.turn_on: + id: display_backlight + transition_length: 0ms + brightness: !lambda return x / 100; + +See Also +-------- + +- :doc:`LVGL Main component ` +- :doc:`/components/binary_sensor/lvgl` +- :doc:`/components/sensor/lvgl` +- :doc:`/components/number/lvgl` +- :doc:`/components/switch/lvgl` +- :doc:`/components/select/lvgl` +- :doc:`/components/light/lvgl` +- :doc:`/components/text/lvgl` +- :doc:`/components/text_sensor/lvgl` +- `LVGL docs `__ +- :ghedit:`Edit` diff --git a/components/number/lvgl.rst b/components/number/lvgl.rst new file mode 100644 index 0000000000..0183592ccf --- /dev/null +++ b/components/number/lvgl.rst @@ -0,0 +1,47 @@ +LVGL Number +=========== + +.. seo:: + :description: Instructions for setting up an LVGL widget number component. + :image: ../images/lvgl_c_num.png + +The ``lvgl`` number platform creates a number component from an LVGL widget +and requires :doc:`LVGL ` to be configured. + +Supported widgets are :ref:`lvgl-widget-arc`, :ref:`lvgl-widget-bar`, :ref:`lvgl-widget-slider` and :ref:`lvgl-widget-spinbox`. A single number supports only a single widget; in other words, it's not possible to have multiple widgets associated with a single ESPHome number component. + +Configuration variables: +------------------------ + +- **widget** (**Required**): The ID of a supported widget configured in LVGL, which will reflect the state of the number. +- **animated** (*Optional*, boolean): Whether to set the value of the widget with an animation (if supported by the widget). Defaults to ``true``. +- All other variables from :ref:`Number `. + +Example: + +.. code-block:: yaml + + number: + - platform: lvgl + widget: slider_id + name: LVGL Slider + +.. note:: + + Widget-specific actions (``lvgl.arc.update``, ``lvgl.bar.update``, ``lvgl.slider.update``, ``lvgl.spinbox.update``, ``lvgl.spinbox.decrement``, ``lvgl.spinbox.increment``) will trigger correspponding component updates to be sent to Home Assistant. + +See Also +-------- +- :doc:`LVGL Main component ` +- :ref:`Arc widget ` +- :ref:`Bar widget ` +- :ref:`Slider widget ` +- :ref:`Spinbox widget ` +- :doc:`/components/binary_sensor/lvgl` +- :doc:`/components/sensor/lvgl` +- :doc:`/components/switch/lvgl` +- :doc:`/components/select/lvgl` +- :doc:`/components/light/lvgl` +- :doc:`/components/text/lvgl` +- :doc:`/components/text_sensor/lvgl` +- :ghedit:`Edit` diff --git a/components/select/lvgl.rst b/components/select/lvgl.rst new file mode 100644 index 0000000000..711c2509da --- /dev/null +++ b/components/select/lvgl.rst @@ -0,0 +1,44 @@ +LVGL Select +=========== + +.. seo:: + :description: Instructions for setting up an LVGL widget select. + :image: ../images/lvgl_c_sel.png + +The ``lvgl`` select platform creates a select from an LVGL widget +and requires :doc:`LVGL ` to be configured. + +Supported widgets are :ref:`lvgl-widget-dropdown` and :ref:`lvgl-widget-roller`. A single select supports only a single widget; in other words, it's not possible to have multiple widgets associated with a single ESPHome select component. + +Configuration variables: +------------------------ + +- **widget** (**Required**): The ID of a supported widget configured in LVGL, which will reflect the state of the select. +- All other variables from :ref:`Select `. + +Example: + +.. code-block:: yaml + + select: + - platform: lvgl + widget: dropdown_id + name: LVGL Dropdown + +.. note:: + + Widget-specific actions (``lvgl.dropdown.update``, ``lvgl.roller.update``) will trigger correspponding component updates to be sent to Home Assistant. + +See Also +-------- +- :doc:`LVGL Main component ` +- :ref:`Roller widget ` +- :ref:`Dropdown widget ` +- :doc:`/components/binary_sensor/lvgl` +- :doc:`/components/sensor/lvgl` +- :doc:`/components/number/lvgl` +- :doc:`/components/switch/lvgl` +- :doc:`/components/light/lvgl` +- :doc:`/components/text/lvgl` +- :doc:`/components/text_sensor/lvgl` +- :ghedit:`Edit` diff --git a/components/sensor/lvgl.rst b/components/sensor/lvgl.rst new file mode 100644 index 0000000000..b7c13e252b --- /dev/null +++ b/components/sensor/lvgl.rst @@ -0,0 +1,46 @@ +LVGL Sensor +=========== + +.. seo:: + :description: Instructions for setting up an LVGL widget sensor component. + :image: ../images/lvgl_c_num.png + +The ``lvgl`` sensor platform creates a semsor component from an LVGL widget +and requires :doc:`LVGL ` to be configured. + +Supported widgets are :ref:`lvgl-widget-arc`, :ref:`lvgl-widget-bar`, :ref:`lvgl-widget-slider` and :ref:`lvgl-widget-spinbox`. A single sensor supports only a single widget; in other words, it's not possible to have multiple widgets associated with a single ESPHome sensor. + +Configuration variables: +------------------------ + +- **widget** (**Required**): The ID of a supported widget configured in LVGL, which will reflect the state of the sensor. +- All other variables from :ref:`Sensor `. + +Example: + +.. code-block:: yaml + + sensor: + - platform: lvgl + widget: slider_id + name: LVGL Slider + +.. note:: + + Widget-specific actions (``lvgl.arc.update``, ``lvgl.bar.update``, ``lvgl.slider.update``, ``lvgl.spinbox.update``, ``lvgl.spinbox.decrement``, ``lvgl.spinbox.increment``) will trigger correspponding component updates to be sent to Home Assistant. + +See Also +-------- +- :doc:`LVGL Main component ` +- :ref:`Arc widget ` +- :ref:`Bar widget ` +- :ref:`Slider widget ` +- :ref:`Spinbox widget ` +- :doc:`/components/binary_sensor/lvgl` +- :doc:`/components/switch/lvgl` +- :doc:`/components/select/lvgl` +- :doc:`/components/light/lvgl` +- :doc:`/components/number/lvgl` +- :doc:`/components/text/lvgl` +- :doc:`/components/text_sensor/lvgl` +- :ghedit:`Edit` diff --git a/components/switch/lvgl.rst b/components/switch/lvgl.rst new file mode 100644 index 0000000000..37a0478c27 --- /dev/null +++ b/components/switch/lvgl.rst @@ -0,0 +1,42 @@ +LVGL Switch +=========== + +.. seo:: + :description: Instructions for setting up an LVGL widget switch. + :image: ../images/lvgl_c_swi.png + +The ``lvgl`` switch platform creates a switch from an LVGL widget +and requires :doc:`LVGL ` to be configured. + +Supported widgets are :ref:`lvgl-widget-button` (with ``checkable`` option enabled), :ref:`lvgl-widget-switch` and :ref:`lvgl-widget-checkbox`. A single switch supports only a single widget; in other words, it's not possible to have multiple widgets associated with a single ESPHome switch component. + +Configuration variables: +------------------------ + +- **widget** (**Required**): The ID of a supported widget configured in LVGL, which will reflect the state of the switch. +- All other variables from :ref:`Switch `. + +Example: + +.. code-block:: yaml + + switch: + - platform: lvgl + widget: checkbox_id + name: LVGL switch + +See Also +-------- +- :doc:`LVGL Main component ` +- :ref:`Button widget ` +- :ref:`Switch widget ` +- :ref:`Checkbox widget ` +- :doc:`/components/binary_sensor/lvgl` +- :doc:`/components/sensor/lvgl` +- :doc:`/components/number/lvgl` +- :doc:`/components/select/lvgl` +- :doc:`/components/light/lvgl` +- :doc:`/components/text/lvgl` +- :doc:`/components/text_sensor/lvgl` +- :doc:`/components/output/index` +- :ghedit:`Edit` diff --git a/components/text/lvgl.rst b/components/text/lvgl.rst new file mode 100644 index 0000000000..78b16e11e3 --- /dev/null +++ b/components/text/lvgl.rst @@ -0,0 +1,43 @@ +LVGL Text +========= + +.. seo:: + :description: Instructions for setting up an LVGL Text component. + :image: ../images/lvgl_c_txt.png + +The ``lvgl`` text platform creates an editable text component from an LVGL textual widget and requires :doc:`LVGL ` to be configured. + +Supported widgets are :ref:`lvgl-widget-label` and :ref:`lvgl-widget-textarea`. A single text supports only a single widget; in other words, it's not possible to have multiple widgets associated with a single ESPHome text component. + +Configuration variables: +------------------------ + +- **widget** (**Required**): The ID of a ``textarea`` widget configured in LVGL, which will reflect the state of the text component. +- All other variables from :ref:`Text `. + +Example: + +.. code-block:: yaml + + text: + - platform: lvgl + widget: textarea_id + name: "Textarea 1 text" + +.. note:: + + Widget-specific actions (``lvgl.label.update``, ``lvgl.textarea.update``) will trigger correspponding component updates to be sent to Home Assistant. + +See Also +-------- +- :doc:`LVGL Main component ` +- :ref:`Label widget ` +- :ref:`Textarea widget ` +- :doc:`/components/binary_sensor/lvgl` +- :doc:`/components/sensor/lvgl` +- :doc:`/components/number/lvgl` +- :doc:`/components/switch/lvgl` +- :doc:`/components/light/lvgl` +- :doc:`/components/select/lvgl` +- :doc:`/components/text_sensor/lvgl` +- :ghedit:`Edit` diff --git a/components/text_sensor/lvgl.rst b/components/text_sensor/lvgl.rst new file mode 100644 index 0000000000..61610f4230 --- /dev/null +++ b/components/text_sensor/lvgl.rst @@ -0,0 +1,44 @@ +LVGL Text Sensor +================ + +.. seo:: + :description: Instructions for setting up an LVGL Text Sensor. + :image: ../images/lvgl_c_txt.png + +The ``lvgl`` text sensor platform creates a Text Sensor from an LVGL textual widget +and requires :doc:`LVGL ` to be configured. + +Supported widgets are :ref:`lvgl-widget-label` and :ref:`lvgl-widget-textarea`. A single text sensor supports only a single widget; in other words, it's not possible to have multiple widgets associated with a single ESPHome text sensor component. + +Configuration variables: +------------------------ + +- **widget** (**Required**): The ID of a ``textarea`` widget configured in LVGL, which will reflect the state of the text sensor. +- All other variables from :ref:`Text Sensor `. + +Example: + +.. code-block:: yaml + + text_sensor: + - platform: lvgl + widget: textarea_id + name: "Textarea 1 text" + +.. note:: + + Widget-specific actions (``lvgl.label.update``, ``lvgl.textarea.update``) will trigger correspponding component updates to be sent to Home Assistant. + +See Also +-------- +- :doc:`LVGL Main component ` +- :ref:`Label widget ` +- :ref:`Textarea widget ` +- :doc:`/components/binary_sensor/lvgl` +- :doc:`/components/sensor/lvgl` +- :doc:`/components/number/lvgl` +- :doc:`/components/switch/lvgl` +- :doc:`/components/light/lvgl` +- :doc:`/components/select/lvgl` +- :doc:`/components/text/lvgl` +- :ghedit:`Edit` diff --git a/images/lvgl.png b/images/lvgl.png new file mode 100644 index 0000000000000000000000000000000000000000..a48dd7c4f8f569bb154d6365c0bd6d792e578b6d GIT binary patch literal 3401 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 literal 0 HcmV?d00001 diff --git a/images/lvgl_c_txt.png b/images/lvgl_c_txt.png new file mode 100644 index 0000000000000000000000000000000000000000..72f1d05113a88968343a9c2f48a9c14ffc658a7f GIT binary patch literal 1623 zcma)-e>f8e7{^zR6H`RD{Qgm+2&=n($Q{MVa9h@@GZSIUjfL|ohf-@y+fGW!uV~#u zWPXI1q5Rm&5}TCTQqdSKEH(`1cF%LqbN4*=&;9Yf-{*PX=Y5~|{p0<-*+=0=^mI&g z004j<%m<28D_dRj>Xx9*WaN6fyS z4e`}To(0ZW5s!ySi5s)6^-~(qAlZYxeP28tCrLv+@8tSqR+zKVf`J{BT%=E|4nej{ zusIyNV@GIh1GvP)nzWyV^3+&(v}yWqX2Q8E^U*E!&)q&DR#yFmE;Azq%TsAHZG#e{ zwsb#0$x_)Xy^O<`SQ(j{7C5CR?addnYwc(k-H_p^df9R@PZ!ZM;gs{czovCV!Pd>e zF&6WnmTjKy;`(8%0O&cFBj6w_tsZ6(A~eZ9zzwOxaLo@KB&`#N5nk+%<|5`+erM1Q z|4j|IE((nr?{-3fp4FqWecY|#)J^7mHh3;Bz;}tcN?bEH%aIfjlo? zV=aXNDUiAw$LSf!MA`$pDs)#~osT4W+`@dp?Qx=2Lns9VZ~{60xr<%E3gTr`Ci-6J0bdIAv)m)vc}^Q(!UlnO zab~>9Hl(+#D(~(uQ^*WrM1%Kvs8lU}oMR527{pYl9W1U?_e7(a8y25`4cBBYwjPS-8OBLchS5X1CBRgnQjTg*v_6N1lS)E=DzjtUNs=Xb^R96eSyzji zJ(Ut4((fhdY4u9x{s^?|&EXHx@Tgnug*Da3znP;*coKQGoU}xm8pLz%_oBh8!R)R( zQSaWU#}*s!pCe?FIRs{G)lrPSjFY0aHymC}#h5o3uj3`asn+8eG+T=?FOKIvR;3br3sP~8gr zliCaE=>+vs3)hOa!i~O=Haet*C~(ulr7WaYeIMeL!zV#GXK3w)CA}#!CD(EhS%`UZ zfUJs|7Piz;!l9_ZDsr+^o6_*+g)QS5h9A+uSerssbgyxo*tj{i$|}9U1ToYUwLj*qINsnz%f3cz&6#UYBUJcblW@wx zes{;WI~mM-L85pM?~)P!M9?^B6g*8$egE*$YHzwy7N|tu3=#(>Ue+h2J$Ct2z0y>l z7E=(ErY?>R%$5ZOO~NO8D4-(KBIx$ZKRt8CF|j;5F3*YD*fcRvZei88X86AJGdgU0 z91D#X?X|&QScJ8D3EU4(mMF6>%uf#=E@?f4_~)9XBR33eTV~c#oys0ZV1VZnP5pO^ zcH&0ElvTfkUVZI+%Y^2a!J02o{pOm!C7%nAL^h>n0E1sjHy#TbGA?R0WZ2@;IZ-y-^_BLzS(2pSRUAp?(A6P Date: Mon, 12 Aug 2024 04:20:53 +0200 Subject: [PATCH 116/173] Feature improv serial project identity (#4125) --- components/improv_serial.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/components/improv_serial.rst b/components/improv_serial.rst index 206df451a6..6d76b1c40f 100644 --- a/components/improv_serial.rst +++ b/components/improv_serial.rst @@ -10,6 +10,8 @@ for configuring Wi-Fi on an ESPHome device by using a serial connection to the d The ``improv_serial`` component requires the serial ``logger`` to be configured. +The ``improv_serial`` component will use the project name and version instead of ESPHomes version whenever it's available. + .. code-block:: yaml From 2c0848f91f560d64db53608760f9147feedef187 Mon Sep 17 00:00:00 2001 From: Keith Burzinski Date: Sun, 11 Aug 2024 23:15:04 -0500 Subject: [PATCH 117/173] [bme68x_bsec2_i2c] Add docs (#4018) * Add docs for new `bme68x_bsec2_i2c` component * Linting * Fix link name * Add note about BSEC2 to BME680 component doc * Organize examples better Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> * Fix up example * Update sensor platform name --------- Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/sensor/bme680_bsec.rst | 8 +- components/sensor/bme68x_bsec2.rst | 285 +++++++++++++++++++++++++++++ index.rst | 1 + 3 files changed, 291 insertions(+), 3 deletions(-) create mode 100644 components/sensor/bme68x_bsec2.rst diff --git a/components/sensor/bme680_bsec.rst b/components/sensor/bme680_bsec.rst index 2b3e0780b5..ec5c1073b9 100644 --- a/components/sensor/bme680_bsec.rst +++ b/components/sensor/bme680_bsec.rst @@ -18,9 +18,11 @@ for CO₂ and Breath Volatile Organic Compounds (b-VOC) using a correlation betw .. note:: - The BSEC library is only available for use after accepting its software license agreement. By enabling this component, - you are explicitly agreeing to the terms of the `BSEC license agreement`_. You must not distribute any compiled firmware - binaries that include this component. + - The BSEC library is only available for use after accepting its software license agreement. By enabling this component, + you are explicitly agreeing to the terms of the `BSEC license agreement`_. You must not distribute any compiled firmware + binaries that include this component. + + - We recommend using the newer :doc:`bme68x_bsec2 ` component whenever possible. The :ref:`I²C ` is required to be set up in your configuration for this sensor to work. diff --git a/components/sensor/bme68x_bsec2.rst b/components/sensor/bme68x_bsec2.rst new file mode 100644 index 0000000000..6b51359142 --- /dev/null +++ b/components/sensor/bme68x_bsec2.rst @@ -0,0 +1,285 @@ +BME68x Temperature, Humidity, Pressure & Gas Sensor via BSEC2 +============================================================= + +.. seo:: + :description: Instructions for setting up BME68x temperature, humidity, pressure, and gas sensors via BSEC2. + :image: bme680.jpg + :keywords: BME680, BME688, BME68X, BSEC2 + +Component/Hub +------------- + +The ``bme68x_bsec2_i2c`` sensor platform allows you to use your +`BME680 `__ and +`BME688 `__ +(`Adafruit`_, `Pimoroni`_) temperature, humidity, pressure and gas sensors with ESPHome via the Bosch Sensortec +Environmental Cluster 2 (BSEC2) software library. The use of Bosch's proprietary algorithms provide an Index for Air +Quality (IAQ) measurement derived from the gas resistance sensor's response to specific Volatile Organic Compounds +(VOCs). The BSEC software also provides estimated values for CO₂ and Breath Volatile Organic Compounds (b-VOC) using +a correlation between VOC and CO₂ in a human's exhaled breath. + +The :ref:`I²C ` is required to be set up in your configuration for this sensor to work. + +.. _BSEC license agreement: https://www.bosch-sensortec.com/media/boschsensortec/downloads/software/bme688_development_software/2023_04/license_terms_bme688_bme680_bsec.pdf + +.. _Adafruit: https://www.adafruit.com/product/3660 + +.. _Pimoroni: https://shop.pimoroni.com/products/bme680-breakout + +.. note:: + + The BSEC2 library is only available for use after accepting its software license agreement. By enabling this + component in your configuration, you are explicitly agreeing to the terms of the `BSEC license agreement`_. Note + that the license forbids distribution of any compiled firmware binaries that include this component. + +.. figure:: images/bme680-full.jpg + :align: center + :width: 50.0% + + BME680 Temperature, Pressure, Humidity & Gas Sensor. + +.. figure:: images/bme680-bsec-ui.png + :align: center + :width: 80.0% + + Example UI + +.. code-block:: yaml + + # Minimal example configuration with common sensors + bme68x_bsec2_i2c: + address: 0x76 + model: bme680 + operating_age: 28d + sample_rate: LP + voltage: 3.3V + + + +Configuration variables: +^^^^^^^^^^^^^^^^^^^^^^^^ + +- **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x76``. The sensor can + also be configured to use ``0x77``. +- **model** (*Optional*, string): The model of the connected sensor; either ``BME680`` or ``BME688``. +- **algorithm_output** (*Optional*, string): The output of the BSEC2 algorithm. Either ``classification`` (default) or + ``regression``. *Only valid when model is BME688.* +- **operating_age** (*Optional*, string): The history BSEC2 considers for the automatic background calibration of the + IAQ in days. That means changes in this time period will influence the IAQ value. Either ``4d`` or ``28d``. +- **sample_rate** (*Optional*, string): Sample rate. Default is ``LP`` for low power consumption, sampling every 3 + seconds. Can be ``ULP`` for ultra-low power, sampling every 5 minutes. This controls the sampling rate for + gas-dependent sensors and will govern the interval at which the sensor heater is operated. By default, this rate will + also be used for temperature, humidity and pressure sensors but can be overridden per-sensor if required. +- **supply_voltage** (*Optional*, string): Supply voltage of the sensor. Default is ``3.3V``. Can be set to ``1.8V`` if + your sensor is powerd with 1.8 volts (for example, the Pimoroni PIM357 BME680 breakout module). +- **temperature_offset** (*Optional*, float): Temperature offset if device is in enclosure and reads too high. This + value is subtracted from the reading (for example, if the sensor reads 5°C higher than expected, set this to ``5``) + and also corrects the relative humidity readings. Defaults to ``0``. +- **state_save_interval** (*Optional*, :ref:`config-time`): The minimum interval at which to save the calibrated BSEC2 + algorithm state to flash so that calibration doesn't have to start from scratch on device restart. Defaults to ``6h``. +- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. Use this ID in the sensor + section to refer to the correct BME68x sensor if you have more than one device. This will also be used to refer to + the calibrated BSEC2 algorithm state saved to flash. + +Sensor +------ + +.. code-block:: yaml + + sensor: + - platform: bme68x_bsec2 + temperature: + name: "BME68x Temperature" + pressure: + name: "BME68x Pressure" + humidity: + name: "BME68x Humidity" + iaq: + name: "BME68x IAQ" + id: iaq + co2_equivalent: + name: "BME68x CO2 Equivalent" + breath_voc_equivalent: + name: "BME68x Breath VOC Equivalent" + +Configuration variables: +^^^^^^^^^^^^^^^^^^^^^^^^ + +- **bme68x_bsec2_id** (*Optional*, :ref:`config-id`): The ID of the ``bme68x_bsec2_i2c`` component sensors will refer + to. Useful when multiple devices are present in your configuration. + +- **temperature** (*Optional*): Configuration for the temperature sensor. + + - **sample_rate** (*Optional*, string): Optional sample rate override for this sensor. Can be ``LP`` for low power + consumption, sampling every 3 seconds or ``ULP`` for ultra-low power, sampling every 5 minutes. + - All other options from :ref:`Sensor `. + +- **pressure** (*Optional*): Configuration for the pressure sensor. + + - **sample_rate** (*Optional*, string): Optional sample rate override for this sensor. Can be ``LP`` for low power + consumption, sampling every 3 seconds or ``ULP`` for ultra-low power, sampling every 5 minutes. + - All other options from :ref:`Sensor `. + +- **humidity** (*Optional*): Configuration for the humidity sensor. + + - **sample_rate** (*Optional*, string): Optional sample rate override for this sensor. Can be ``LP`` for low power + consumption, sampling every 3 seconds or ``ULP`` for ultra-low power, sampling every 5 minutes. + - All other options from :ref:`Sensor `. + +- **gas_resistance** (*Optional*): Configuration for the gas sensor. + + - All options from :ref:`Sensor `. + +- **iaq** (*Optional*): Configuration for the IAQ sensor. + + - All options from :ref:`Sensor `. + +- **iaq_static** (*Optional*): Configuration for the IAQ static sensor. + + - All options from :ref:`Sensor `. + +- **iaq_accuracy** (*Optional*): Configuration for the numeric IAQ accuracy sensor. + + - All options from :ref:`Sensor `. + +- **co2_equivalent** (*Optional*): Configuration for the CO₂ equivalent sensor. + + - All options from :ref:`Sensor `. + +- **breath_voc_equivalent** (*Optional*): Configuration for the Breath VOC equivalent humidity sensor. + + - All options from :ref:`Sensor `. + +Text Sensor +----------- + +The sensor's accuracy can be reported in text format. + +.. code-block:: yaml + + text_sensor: + - platform: bme68x_bsec2 + iaq_accuracy: + name: "BME68x IAQ Accuracy" + +Configuration variables: +^^^^^^^^^^^^^^^^^^^^^^^^ + +- **bme68x_bsec2_id** (*Optional*, :ref:`config-id`): The ID of the ``bme68x_bsec2_i2c`` component the text sensor + will refer to. Useful when multiple devices are present in your configuration. +- **iaq_accuracy** (*Optional*): Configuration for the IAQ accuracy sensor. Shows: ``Stabilizing``, ``Uncertain``, + ``Calibrating``, ``Calibrated``. + + - All other options from :ref:`Text Sensor `. + +Index for Air Quality (IAQ) Measurement +--------------------------------------- + +The measurements are expressed with an index scale ranging from 0 to 500. The index itself is deduced from tests using +ethanol gas, as well as important VOC in the exhaled breath of healthy humans. The VOC values themselves are derived +from several publications on breath analysis studies. The BSEC2 software library defines the levels as follows: + ++-----------+---------------------+ +| IAQ Index | Air Quality | ++===========+=====================+ +| 0 - 50 | Excellent | ++-----------+---------------------+ +| 51 - 100 | Good | ++-----------+---------------------+ +| 101 - 150 | Lightly polluted | ++-----------+---------------------+ +| 151 - 200 | Moderately polluted | ++-----------+---------------------+ +| 201 - 250 | Heavily polluted | ++-----------+---------------------+ +| 251 - 350 | Severely polluted | ++-----------+---------------------+ +| > 351 | Extremely polluted | ++-----------+---------------------+ + +This can be represented by a template text sensor such as below + +.. code-block:: yaml + + text_sensor: + - platform: template + name: "BME68x IAQ Classification" + lambda: |- + if ( int(id(iaq).state) <= 50) { + return {"Excellent"}; + } + else if (int(id(iaq).state) >= 51 && int(id(iaq).state) <= 100) { + return {"Good"}; + } + else if (int(id(iaq).state) >= 101 && int(id(iaq).state) <= 150) { + return {"Lightly polluted"}; + } + else if (int(id(iaq).state) >= 151 && int(id(iaq).state) <= 200) { + return {"Moderately polluted"}; + } + else if (int(id(iaq).state) >= 201 && int(id(iaq).state) <= 250) { + return {"Heavily polluted"}; + } + else if (int(id(iaq).state) >= 251 && int(id(iaq).state) <= 350) { + return {"Severely polluted"}; + } + else if (int(id(iaq).state) >= 351) { + return {"Extremely polluted"}; + } + else { + return {"error"}; + } + +The selected b-VOC gasses are as follows: + ++--------------------+----------------+ +| Compound | Molar fraction | ++====================+================+ +| `Ethane`_ | 5 ppm | ++--------------------+----------------+ +| `Isoprene`_ | 10 ppm | ++--------------------+----------------+ +| `Ethanol`_ | 10 ppm | ++--------------------+----------------+ +| `Acetone`_ | 50 ppm | ++--------------------+----------------+ +| `Carbon Monoxide`_ | 15 ppm | ++--------------------+----------------+ + +.. _Ethane: https://en.wikipedia.org/wiki/Ethane +.. _Isoprene: https://en.wikipedia.org/wiki/Isoprene +.. _Ethanol: https://en.wikipedia.org/wiki/Ethanol +.. _Acetone: https://en.wikipedia.org/wiki/Acetone +.. _Carbon Monoxide: https://en.wikipedia.org/wiki/Carbon_monoxide + +.. _bsec2-calibration: + +IAQ Accuracy and Calibration +---------------------------- + +The BSEC2 software automatically calibrates in the background to provide consistent IAQ performance. The calibration +process considers the recent measurement history so that a value of 50 corresponds to a “typical good” level and a +value of 200 to a “typical polluted” level. The IAQ Accuracy sensor will indicate one of the following values: + +- ``Stabilizing``: The device has just started, and the sensor is stabilizing (this typically lasts 5 minutes) +- ``Uncertain``: The background history of BSEC2 is uncertain. This typically means the gas sensor data was too stable + for BSEC2 to clearly define its reference. +- ``Calibrating``: BSEC2 found new calibration data and is currently calibrating. +- ``Calibrated``: BSEC2 calibrated successfully. + +Every ``state_save_interval``, or as soon thereafter when full calibration is reached, the current algorithm state is +saved to flash so that the process does not have to start from scratch on device restart. + +See Also +-------- + +- :ref:`sensor-filters` +- :doc:`absolute_humidity` +- :doc:`bme680` +- :apiref:`bme68x_bsec2_i2c/bme68x_bsec2_i2c.h` +- `BME680 datasheet `__ +- `BME688 datasheet `__ +- `BME680 VOC classification `__ +- `Bosch BSEC2 Library `__ by `Bosch Sensortec `__ +- `Bosch Sensortec Community `__ +- :ghedit:`Edit` diff --git a/index.rst b/index.rst index ebe17387e2..5b7a3f43ad 100644 --- a/index.rst +++ b/index.rst @@ -442,6 +442,7 @@ Environmental AM2320, components/sensor/am2320, am2320.jpg, Temperature & Humidity b-parasite, components/sensor/b_parasite, b_parasite.jpg, Moisture & Temperature & Humidity & Light BME280, components/sensor/bme280, bme280.jpg, Temperature & Humidity & Pressure + BME68x via BSEC2, components/sensor/bme68x_bsec2, bme680.jpg, Temperature & Humidity & Pressure & Gas BME680 via BSEC, components/sensor/bme680_bsec, bme680.jpg, Temperature & Humidity & Pressure & Gas BME680, components/sensor/bme680, bme680.jpg, Temperature & Humidity & Pressure & Gas BMP085, components/sensor/bmp085, bmp180.jpg, Temperature & Pressure From bbc391290297778e67bbc58b65725c3c1aaa413a Mon Sep 17 00:00:00 2001 From: juanluss31 <40864809+juanluss31@users.noreply.github.com> Date: Tue, 13 Aug 2024 03:12:51 +0200 Subject: [PATCH 118/173] Add Xiaomi LYWSD02MMC (#4046) --- components/sensor/xiaomi_ble.rst | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/components/sensor/xiaomi_ble.rst b/components/sensor/xiaomi_ble.rst index cf88a30bf3..9929cc6b11 100644 --- a/components/sensor/xiaomi_ble.rst +++ b/components/sensor/xiaomi_ble.rst @@ -4,7 +4,7 @@ Xiaomi Mijia BLE Sensors .. seo:: :description: Instructions for setting up Xiaomi Mi Home (Mijia) bluetooth-based sensors in ESPHome. :image: xiaomi_mijia_logo.jpg - :keywords: Xiaomi, Mi Home, Mijia, BLE, Bluetooth, HHCCJCY01, GCLS002, HHCCPOT002, LYWSDCGQ, LYWSD02, CGG1, LYWSD03MMC, CGD1, JQJCY01YM, MUE4094RT, WX08ZM, MHO, C401, MHOC401 + :keywords: Xiaomi, Mi Home, Mijia, BLE, Bluetooth, HHCCJCY01, GCLS002, HHCCPOT002, LYWSDCGQ, LYWSD02, LYWSD02MMC, CGG1, LYWSD03MMC, CGD1, JQJCY01YM, MUE4094RT, WX08ZM, MHO, C401, MHOC401 The ``xiaomi_ble`` sensor platform lets you track the output of Xiaomi Bluetooth Low Energy devices using the :doc:`/components/esp32_ble_tracker`. This component will track, for example, the temperature, humidity, moisture, conductivity, illuminance, formaldehyde, mosquito tablet and battery level of the device every time the sensor sends out a BLE broadcast. Contrary to other implementations, ``xiaomi_ble`` listens passively to advertisement packets and does not pair with the device. Hence ESPHome has no impact on battery life. Thus, if you only use such sensors, you can safely set ``scan_parameters.active: false`` in ``esp32_ble_tracker`` configuration, to save from spamming your RF environment with useless scan requests. @@ -143,6 +143,26 @@ Configuration example: battery_level: name: "LYWSD02 Battery Level" +LYWSD02MMC +********** + +Hygro thermometer, rectangular body, e-ink display, broadcasts temperature, humidity and battery level. Encrypted. + +Configuration example: + +.. code-block:: yaml + + sensor: + - platform: xiaomi_lywsd02mmc + mac_address: "A4:C1:38:54:5E:18" + bindkey: "2529d8e0d23150a588675cc54ad48400" + temperature: + name: "LYWSD02MMC Temperature" + humidity: + name: "LYWSD02MMC Humidity" + battery_level: + name: "LYWSD02MMC Battery Level" + CGG1 **** From af3bc031ffe290dfde4c71ed41f6dbff734951f8 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Tue, 13 Aug 2024 17:21:16 +1200 Subject: [PATCH 119/173] Add redirect from /components/images to /components/image (#4130) --- _redirects | 1 + 1 file changed, 1 insertion(+) diff --git a/_redirects b/_redirects index 6964b22428..0b7f37536a 100644 --- a/_redirects +++ b/_redirects @@ -41,3 +41,4 @@ /cookbook/dual-r2-cover.html /cookbook/lambda_magic.html#one-button-cover-control 301 /ready-made/projects /projects/ 301 +/components/images /components/image 301 From 6e51acbfe7d0d0aadb0dc5568c0bed5a93b6a7c0 Mon Sep 17 00:00:00 2001 From: NP v/d Spek Date: Tue, 13 Aug 2024 07:21:58 +0200 Subject: [PATCH 120/173] fixed default *bits_per_sample* value (#4100) --- components/microphone/i2s_audio.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/microphone/i2s_audio.rst b/components/microphone/i2s_audio.rst index dc44ccbe1b..42aa8f3898 100644 --- a/components/microphone/i2s_audio.rst +++ b/components/microphone/i2s_audio.rst @@ -44,7 +44,7 @@ Configuration variables: - **sample_rate** (*Optional*, positive integer): I2S sample rate. Defaults to ``16000``. - **bits_per_sample** (*Optional*, enum): The bit depth of the audio samples. Note that while set to ``32bit``, the samples will be scaled down to 16bit before being forwarded. - One of ``16bit`` or ``32bit``. Defaults to ``16bit``. + One of ``16bit`` or ``32bit``. Defaults to ``32bit``. - **use_apll** (*Optional*, boolean): I2S using APLL as main I2S clock, enable it to get accurate clock. Defaults to ``false``. - **i2s_mode** (*Optional*, enum): The I²S mode to use. One of ``primary`` or ``secondary``. Defaults to ``primary``. - **i2s_audio_id** (*Optional*, :ref:`config-id`): The ID of the :ref:`I²S Audio ` you wish to use for this microphone. From cfdcb53878e79ade1ff4a68a12032e57bb57af8b Mon Sep 17 00:00:00 2001 From: Joeri de Graaf <4146844+jadegraaf@users.noreply.github.com> Date: Tue, 13 Aug 2024 07:24:01 +0200 Subject: [PATCH 121/173] Correct ENS160 default address (#4075) --- components/sensor/ens160.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/sensor/ens160.rst b/components/sensor/ens160.rst index 5325bf9f16..bd79ec2c06 100644 --- a/components/sensor/ens160.rst +++ b/components/sensor/ens160.rst @@ -81,7 +81,7 @@ Configuration variables: frequency of the ENS160 which is up to 1 second. - **address** (*Optional*, int): *I²C only.* Manually specify the I²C address of - the sensor. Defaults to ``0x53``. Another address can be ``0x52``. + the sensor. Defaults to ``0x52``. Another address can be ``0x53``. - **cs_pin** (*Required*, :ref:`Pin Schema `): *SPI only.* The Chip Select pin. From 3c1f1871cf4145bfae47cd793635d44148368227 Mon Sep 17 00:00:00 2001 From: guillempages Date: Tue, 13 Aug 2024 09:44:46 +0200 Subject: [PATCH 122/173] [online_image] Add placeholder documentation (#4102) --- components/online_image.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/components/online_image.rst b/components/online_image.rst index 7ac693fd54..a69fcb68dd 100644 --- a/components/online_image.rst +++ b/components/online_image.rst @@ -37,6 +37,8 @@ Configuration variables - ``PNG``: The image on the server is encoded in PNG format. - **resize** (*Optional*, string): If set, this will resize the image to fit inside the given dimensions ``WIDTHxHEIGHT`` and preserve the aspect ratio. +- **placeholder** (**Optional**, :ref:`config-id`): ID of an :doc:`Image ` to display while the downloaded image is not yet ready. + This placeholder image will **not** be resized; regardless of the ``resize`` option value for the ``online_image``. - **type** (*Optional*): Specifies how to encode image internally. Defaults to ``BINARY``. - ``BINARY``: Two colors, suitable for 1 color displays or 2 color image in color displays. Uses 1 bit From 52a59ad8408bf14673efc6e2ca95cdf856809b85 Mon Sep 17 00:00:00 2001 From: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com> Date: Tue, 13 Aug 2024 18:06:04 +1000 Subject: [PATCH 123/173] [lvgl] Document `initial_focus` for encoders (#4128) --- components/lvgl/index.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/components/lvgl/index.rst b/components/lvgl/index.rst index f47df9e912..402127229f 100644 --- a/components/lvgl/index.rst +++ b/components/lvgl/index.rst @@ -75,6 +75,7 @@ The following configuration variables apply to the main ``lvgl`` component, in o - **long_press_repeat_time** (*Optional*, :ref:`Time `): For the touchscreen, repeated interval after ``long_press_time``, when ``on_long_pressed_repeat`` :ref:`interaction trigger ` will be called. Defaults to ``100ms``. - **encoders** (*Optional*, list): A list of rotary encoders interacting with the LVGL widgets on the display. - **group** (*Optional*, string): A name for a group of widgets which will interact with the the input device. See the :doc:`common properties ` of the widgets for more information on groups. + - **initial_focus** (*Optional*, :ref:`config-id`): An optional ID for a widget to be given focus on startup (especially useful if there is only one focusable widget.) - **enter_button** (**Required**, :ref:`config-id`): The ID of a :doc:`Binary Sensor `, to be used as ``ENTER`` key. - **sensor** (*Optional*, :ref:`config-id`): The ID of a :doc:`/components/sensor/rotary_encoder`; or a list with buttons for left/right interaction with the widgets: - **left_button** (*Optional*, :ref:`config-id`): The ID of a :doc:`Binary Sensor `, to be used as ``LEFT`` key. From c1f0ce57724c3b2cbf94b57a2e48c15483a9dd5f Mon Sep 17 00:00:00 2001 From: PaoloTK <60204407+PaoloTK@users.noreply.github.com> Date: Tue, 13 Aug 2024 23:29:58 +0200 Subject: [PATCH 124/173] Updated documentation for Light dim_relative min/max brightness feature PR (#3984) Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/light/index.rst | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/components/light/index.rst b/components/light/index.rst index 60125554ec..d88af7dd48 100644 --- a/components/light/index.rst +++ b/components/light/index.rst @@ -318,6 +318,15 @@ Configuration variables: - **relative_brightness** (**Required**, :ref:`templatable `, percentage): The relative brightness to dim the light by. - **transition_length** (*Optional*, :ref:`config-time`, :ref:`templatable `): The length of the transition. +- **brightness_limits** (*Optional*): Limits in the brightness range. + - **min_brightness** (*Optional*, percentage): The minimum brightness to dim the light to. Defaults to ``0%``. + - **max_brightness** (*Optional*, percentage): The maximum brightness to dim the light to. Defaults to ``100%``. + - **limit_mode** (*Optional*): What to do when the current brightness is outside of the limit range. Defaults to ``CLAMP``. + Valid limit modes are: + + - ``CLAMP``: Clamp the brightness to the limit range. + - ``DO_NOTHING``: No dimming if the brightness is outside the limit range. + .. note:: @@ -338,6 +347,8 @@ Configuration variables: id: light_1 relative_brightness: 5% transition_length: 0.1s + brightness_limits: + max_brightness: 90% - delay: 0.1s .. _light-addressable_set_action: From 9169262e5fd5ebefd821ee1a39b3ba48cd533a42 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 14 Aug 2024 13:59:54 +1200 Subject: [PATCH 125/173] [switch] Tidy up name/id (#4151) --- components/switch/ble_client.rst | 1 - components/switch/factory_reset.rst | 4 +--- components/switch/index.rst | 3 ++- components/switch/modbus_controller.rst | 4 +--- components/switch/nextion.rst | 1 - components/switch/output.rst | 3 --- components/switch/restart.rst | 4 +--- components/switch/safe_mode.rst | 6 ++---- components/switch/shutdown.rst | 4 +--- components/switch/template.rst | 2 -- components/switch/tuya.rst | 2 -- components/switch/uart.rst | 2 -- 12 files changed, 8 insertions(+), 28 deletions(-) diff --git a/components/switch/ble_client.rst b/components/switch/ble_client.rst index 13ab0cabf2..4e5d05e4f4 100644 --- a/components/switch/ble_client.rst +++ b/components/switch/ble_client.rst @@ -35,7 +35,6 @@ Configuration variables: ------------------------ - **ble_client_id** (**Required**, :ref:`config-id`): ID of the associated BLE client. -- **id** (*Optional*, :ref:`config-id`): The ID to use for code generation, and for reference by dependent components. - All other options from :ref:`Switch `. See Also diff --git a/components/switch/factory_reset.rst b/components/switch/factory_reset.rst index 8c9eb5b001..71c870448a 100644 --- a/components/switch/factory_reset.rst +++ b/components/switch/factory_reset.rst @@ -35,9 +35,7 @@ After reboot all states, parameters and variables will be reinitialized with the Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the switch. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- All other options from :ref:`Switch `. +- All options from :ref:`Switch `. See Also -------- diff --git a/components/switch/index.rst b/components/switch/index.rst index a9c8be4ca7..4cbca2778f 100644 --- a/components/switch/index.rst +++ b/components/switch/index.rst @@ -22,7 +22,8 @@ Base Switch Configuration Configuration variables: -- **name** (**Required**, string): The name of the switch. +- **id** (*Optional*, string): Manually specify the ID for code generation. At least one of **id** and **name** must be specified. +- **name** (*Optional*, string): The name of the switch. At least one of **id** and **name** must be specified. .. note:: diff --git a/components/switch/modbus_controller.rst b/components/switch/modbus_controller.rst index 5114fd47e5..bdbd0f8447 100644 --- a/components/switch/modbus_controller.rst +++ b/components/switch/modbus_controller.rst @@ -11,8 +11,6 @@ and requires :doc:`/components/modbus_controller` to be configured. Configuration variables: ------------------------ -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **name** (**Required**, string): The name of the sensor. - **register_type** (**Required**): type of the modbus register. - ``coil``: Coils are 1-bit registers (on/off values) that are used to control discrete outputs. They may be read and/or written. Modbus *Function Code 1 (Read Coil Status)* will be used. @@ -48,7 +46,7 @@ Configuration variables: See :ref:`modbus_custom_command` how to use ``custom_command`` - **offset** (*Optional*, int): Offset from start address in bytes (only required for uncommon response encodings). If more than one register is written in a command, this value is used to find the start of this datapoint relative to the start address. The component calculates the size of the range based on offset and size of the value type. The value for offset depends on the register type. For holding input registers, the offset is in bytes. For coil and discrete input resisters, the LSB of the first data byte contains the coil addressed in the request. The other coils follow toward the high-order end of this byte and from low order to high order in subsequent bytes. For registers, the offset is the position of the relevant bit. To get the value of the coil register, 2 can be retrieved using ``address: 2`` / ``offset: 0`` or ``address: 0`` / ``offset 2``. - **restore_mode** (*Optional*): See :ref:`Switch `, since this configuration variable is inherited. The default value for this setting is ``DISABLED`` (recommended). - ``DISABLED`` leaves the initial state up to the hardware: usually the state lives in the device and ESPHome does not need to remember it. The switch frontend will show an undetermined + ``DISABLED`` leaves the initial state up to the hardware: usually the state lives in the device and ESPHome does not need to remember it. The switch frontend will show an undetermined state until the real state is retrieved from the device on the next refresh. Use any other setting if a reboot of your ESPHome device is tied to a reboot of the modbus device. diff --git a/components/switch/nextion.rst b/components/switch/nextion.rst index b8055bd364..c7824a702d 100644 --- a/components/switch/nextion.rst +++ b/components/switch/nextion.rst @@ -34,7 +34,6 @@ See :doc:`/components/display/nextion` for setting up the display Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the sensor. - **nextion_id** (*Optional*, :ref:`config-id`): The ID of the Nextion display. - **component_name** (*Optional*, string): The name of the Nextion component. - **variable_name** (*Optional*, string): The name of the Nextion variable. Any value over ``0`` is considered to be **on** diff --git a/components/switch/output.rst b/components/switch/output.rst index 5282f35645..8d0a4a4934 100644 --- a/components/switch/output.rst +++ b/components/switch/output.rst @@ -27,9 +27,6 @@ Configuration variables: ------------------------ - **output** (**Required**, :ref:`config-id`): The ID of the output component to use. -- **name** (**Required**, string): The name for the switch. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - - All other options from :ref:`Switch `. See Also diff --git a/components/switch/restart.rst b/components/switch/restart.rst index e66be7c1e5..b21f60e9b7 100644 --- a/components/switch/restart.rst +++ b/components/switch/restart.rst @@ -22,9 +22,7 @@ through Home Assistant. Configuration variables: ------------------------ -- **name** (**Required**, string): The name for the switch. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- All other options from :ref:`Switch `. +- All options from :ref:`Switch `. See Also -------- diff --git a/components/switch/safe_mode.rst b/components/switch/safe_mode.rst index 9274eeb0e3..e53a627412 100644 --- a/components/switch/safe_mode.rst +++ b/components/switch/safe_mode.rst @@ -5,7 +5,7 @@ Safe Mode Switch :description: Instructions for setting up switches that can remotely reboot the ESP in ESPHome into safe mode. :image: restart.svg -The ``safe_mode`` switch allows you to remotely reboot your node into :doc:`/components/safe_mode`. This is useful in certain situations where a misbehaving component, or low memory state is preventing Over-The-Air updates from completing successfully. +The ``safe_mode`` switch allows you to remotely reboot your node into :doc:`/components/safe_mode`. This is useful in certain situations where a misbehaving component, or low memory state is preventing Over-The-Air updates from completing successfully. This component requires :doc:`/components/safe_mode` to be configured. @@ -23,9 +23,7 @@ This component requires :doc:`/components/safe_mode` to be configured. Configuration variables: ------------------------ -- **name** (**Required**, string): The name for the switch. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- All other options from :ref:`Switch `. +- All options from :ref:`Switch `. See Also -------- diff --git a/components/switch/shutdown.rst b/components/switch/shutdown.rst index f2d331a865..7f1559e804 100644 --- a/components/switch/shutdown.rst +++ b/components/switch/shutdown.rst @@ -24,9 +24,7 @@ pressing the reset button or restarting the power supply. Configuration variables: ------------------------ -- **name** (**Required**, string): The name for the switch. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- All other options from :ref:`Switch `. +- All options from :ref:`Switch `. See Also -------- diff --git a/components/switch/template.rst b/components/switch/template.rst index 6164bbd58b..74aec5b79a 100644 --- a/components/switch/template.rst +++ b/components/switch/template.rst @@ -36,7 +36,6 @@ Possible return values for the optional lambda: Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the switch. - **lambda** (*Optional*, :ref:`lambda `): Lambda to be evaluated repeatedly to get the current state of the switch. - **turn_on_action** (*Optional*, :ref:`Action `): The action that should @@ -49,7 +48,6 @@ Configuration variables: - **assumed_state** (*Optional*, boolean): Whether the true state of the switch is not known. This will make the Home Assistant frontend show buttons for both ON and OFF actions, instead of hiding one of them when the switch is ON/OFF. Defaults to ``false``. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Switch `. .. _switch-template-publish_action: diff --git a/components/switch/tuya.rst b/components/switch/tuya.rst index 8f1136668b..0afff5a007 100644 --- a/components/switch/tuya.rst +++ b/components/switch/tuya.rst @@ -35,8 +35,6 @@ Based on this, you can create the switch as follows: Configuration variables: ------------------------ -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **name** (**Required**, string): The name of the switch. - **switch_datapoint** (**Required**, int): The datapoint id number of the switch. - All other options from :ref:`Switch `. diff --git a/components/switch/uart.rst b/components/switch/uart.rst index 98957a318a..fc8d53c2a4 100644 --- a/components/switch/uart.rst +++ b/components/switch/uart.rst @@ -31,8 +31,6 @@ The ``uart`` switch platform allows you to send a pre-defined sequence of bytes Configuration variables: ------------------------ -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **name** (*Optional*, string): The name for the switch. - **uart_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the UART hub. - **data** (*Optional*, string or list of bytes): The data to send via UART. Either an ASCII string or a list of bytes or one or both of the following nested options (see example above). From 3a5ecc9055fac9fc9cd5738643ab914514f69415 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 14 Aug 2024 14:01:19 +1200 Subject: [PATCH 126/173] [components] Tidy up name/id (#4155) --- components/copy.rst | 11 ----------- components/fingerprint_grow.rst | 4 +--- components/gps.rst | 24 ++++++------------------ components/remote_receiver.rst | 2 -- components/sim800l.rst | 8 ++------ components/sun.rst | 5 ----- components/touchscreen/index.rst | 2 -- 7 files changed, 9 insertions(+), 47 deletions(-) diff --git a/components/copy.rst b/components/copy.rst index 5cc7191c8a..a2c212d933 100644 --- a/components/copy.rst +++ b/components/copy.rst @@ -26,7 +26,6 @@ Configuration variables: ************************ - **source_id** (**Required**, :ref:`config-id`): The binary sensor that should be mirrored. -- **name** (**Required**, string): The name of the binary sensor. - All other options from :ref:`Binary Sensor `. Copy Button @@ -44,7 +43,6 @@ Configuration variables: ************************ - **source_id** (**Required**, :ref:`config-id`): The button that should be mirrored. -- **name** (**Required**, string): The name of the button. - All other options from :ref:`Button `. Copy Cover @@ -62,7 +60,6 @@ Configuration variables: ************************ - **source_id** (**Required**, :ref:`config-id`): The cover that should be mirrored. -- **name** (**Required**, string): The name of the cover. - All other options from :ref:`Cover `. Copy Fan @@ -80,7 +77,6 @@ Configuration variables: ************************ - **source_id** (**Required**, :ref:`config-id`): The fan that should be mirrored. -- **name** (**Required**, string): The name of the fan. - All other options from :ref:`Fan `. Copy Lock @@ -98,7 +94,6 @@ Configuration variables: ************************ - **source_id** (**Required**, :ref:`config-id`): The lock that should be mirrored. -- **name** (**Required**, string): The name of the lock. - All other options from :ref:`Lock `. Copy Number @@ -116,7 +111,6 @@ Configuration variables: ************************ - **source_id** (**Required**, :ref:`config-id`): The number that should be mirrored. -- **name** (**Required**, string): The name of the number. - All other options from :ref:`Number `. Copy Select @@ -134,7 +128,6 @@ Configuration variables: ************************ - **source_id** (**Required**, :ref:`config-id`): The select that should be mirrored. -- **name** (**Required**, string): The name of the select. - All other options from :ref:`Select `. .. _copy-sensor: @@ -154,7 +147,6 @@ Configuration variables: ************************ - **source_id** (**Required**, :ref:`config-id`): The sensor that should be mirrored. -- **name** (**Required**, string): The name of the sensor. - All other options from :ref:`Sensor `. Copy Switch @@ -172,7 +164,6 @@ Configuration variables: ************************ - **source_id** (**Required**, :ref:`config-id`): The switch that should be mirrored. -- **name** (**Required**, string): The name of the switch. - All other options from :ref:`Switch `. Copy Text Sensor @@ -190,7 +181,6 @@ Configuration variables: ************************ - **source_id** (**Required**, :ref:`config-id`): The text sensor that should be mirrored. -- **name** (**Required**, string): The name of the text sensor. - All other options from :ref:`Text Sensor `. Copy Text @@ -208,7 +198,6 @@ Configuration variables: ************************ - **source_id** (**Required**, :ref:`config-id`): The text that should be mirrored. -- **name** (**Required**, string): The name of the number. - All other options from :ref:`Text `. See Also diff --git a/components/fingerprint_grow.rst b/components/fingerprint_grow.rst index cdba660740..9f1357bd85 100644 --- a/components/fingerprint_grow.rst +++ b/components/fingerprint_grow.rst @@ -83,9 +83,7 @@ Binary Sensor Configuration variables: -- **name** (**Required**, string): The name for the enrolling binary sensor. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- All other options from :ref:`Binary Sensor `. +- All options from :ref:`Binary Sensor `. Sensor diff --git a/components/gps.rst b/components/gps.rst index 94a4efbc0e..4a40483f79 100644 --- a/components/gps.rst +++ b/components/gps.rst @@ -49,39 +49,27 @@ Configuration variables: ------------------------ - **latitude** (*Optional*): Include the Latitude as a sensor - - **name** (**Required**, string): The name to give the latitude sensor - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **longitude** (*Optional*): Include the Longitude as a sensor - - **name** (**Required**, string): The name to give the longitude sensor - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **speed** (*Optional*): Include the measured speed as a sensor - - **name** (**Required**, string): The name to give the speed sensor - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **course** (*Optional*): Include the measured course as a sensor - - **name** (**Required**, string): The name to give the course sensor - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **altitude** (*Optional*): Include the measured altitude as a sensor - - **name** (**Required**, string): The name to give the altitude sensor - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **satellites** (*Optional*): Include the number of tracking satellites being used as a sensor - - **name** (**Required**, string): The name to give the tracking satellites sensor - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. See Also -------- diff --git a/components/remote_receiver.rst b/components/remote_receiver.rst index 490b635cce..d2374f7c0b 100644 --- a/components/remote_receiver.rst +++ b/components/remote_receiver.rst @@ -234,8 +234,6 @@ then immediately OFF. Configuration variables: ************************ -- **name** (**Required**, string): The name for the binary sensor. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **receiver_id** (*Optional*, :ref:`config-id`): The remote receiver to receive the remote code with. Required if multiple receivers configured. - All other options from :ref:`Binary Sensor `. diff --git a/components/sim800l.rst b/components/sim800l.rst index 1f993dc372..73b8ea88c2 100644 --- a/components/sim800l.rst +++ b/components/sim800l.rst @@ -76,9 +76,7 @@ Configuration variables: - **rssi** (*Optional*): The informed Received signal strength indication (RSSI) in dBm. - - **name** (**Required**, string): The name for the rssi sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. Binary Sensor @@ -95,9 +93,7 @@ Configuration variables: - **registered** (*Optional*): Indicates if the SIM800L has successfully registered in the cellular network. - - **name** (**Required**, string): The name for the registered binary sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Binary Sensor `. + - All options from :ref:`Binary Sensor `. .. _sim800l-on_sms_received: diff --git a/components/sun.rst b/components/sun.rst index 0e0b7d936b..656621a14b 100644 --- a/components/sun.rst +++ b/components/sun.rst @@ -81,8 +81,6 @@ Configuration variables: - **type** (**Required**, string): The type of value to track. One of ``elevation`` and ``azimuth``. -- **name** (**Required**, string): The name of the sensor. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Sensor `. ``sun`` Text Sensor @@ -109,13 +107,10 @@ Configuration variables: - **type** (**Required**, string): The type of value to track. One of ``sunrise`` and ``sunset``. -- **name** (**Required**, string): The name of the text sensor. - **elevation** (*Optional*, float): The elevation to calculate the next sunrise/sunset event for. Defaults to -0.833° (the horizon, slightly less than 0° to compensate for atmospheric refraction). - **format** (*Optional*, string): The format to format the time value with, see :ref:`strftime` for more information. Defaults to ``%X``. - -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Text Sensor `. .. _sun-is_above_below_horizon-condition: diff --git a/components/touchscreen/index.rst b/components/touchscreen/index.rst index b1c2d0e6fe..2e4bcb8be5 100644 --- a/components/touchscreen/index.rst +++ b/components/touchscreen/index.rst @@ -292,8 +292,6 @@ buttons. Configuration variables: ************************ -- **name** (*Optional*, string): The name for the binary sensor. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **touchscreen_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the touchscreen. - **x_min** (**Required**, int): Left coordinate of the screen area to be detected as the virtual button. - **x_max** (**Required**, int): Right coordinate of the screen area to be detected as the virtual button. From dc2c7aa02f3abf4b16fb5cd0e346aaea4a8f3095 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 14 Aug 2024 14:02:34 +1200 Subject: [PATCH 127/173] [valve] Tidy up name/id (#4154) --- components/valve/index.rst | 3 ++- components/valve/template.rst | 2 -- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/components/valve/index.rst b/components/valve/index.rst index c6f196ac1e..912bc676cc 100644 --- a/components/valve/index.rst +++ b/components/valve/index.rst @@ -30,7 +30,8 @@ All valve config schemas inherit from this schema - you can set these keys for v Configuration variables: -- **name** (**Required**, string): The name for the valve. +- **id** (*Optional*, string): Manually specify the ID for code generation. At least one of **id** and **name** must be specified. +- **name** (*Optional*, string): The name for the valve. At least one of **id** and **name** must be specified. .. note:: diff --git a/components/valve/template.rst b/components/valve/template.rst index ddb517a580..d295920e35 100644 --- a/components/valve/template.rst +++ b/components/valve/template.rst @@ -41,7 +41,6 @@ Possible return values for the optional lambda: Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the valve. - **lambda** (*Optional*, :ref:`lambda `): Lambda to be evaluated repeatedly to get the current state of the valve. - **open_action** (*Optional*, :ref:`Action `): The action that should be performed when the remote @@ -65,7 +64,6 @@ Configuration variables: - **position_action** (*Optional*, :ref:`Action `): The action that should be performed when the remote (like Home Assistant's frontend) requests the valve be set to a specific position. The desired position is available in the lambda in the ``pos`` variable. Requires ``has_position`` (above) to be set to ``true``. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Valve `. .. _valve-template-publish_action: From ed4a4c292c32f4d520e1c58120cdd0204f0708f1 Mon Sep 17 00:00:00 2001 From: Markus <974709+Links2004@users.noreply.github.com> Date: Wed, 14 Aug 2024 04:03:16 +0200 Subject: [PATCH 128/173] Add docu for Homeassistant Switch (#4006) Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/switch/homeassistant.rst | 30 +++++++++++++++++++++++++++++ index.rst | 2 ++ 2 files changed, 32 insertions(+) create mode 100644 components/switch/homeassistant.rst diff --git a/components/switch/homeassistant.rst b/components/switch/homeassistant.rst new file mode 100644 index 0000000000..177adb3af6 --- /dev/null +++ b/components/switch/homeassistant.rst @@ -0,0 +1,30 @@ +Home Assistant Switch +===================== + +.. seo:: + :description: Instructions for setting up Home Assistant Switch with ESPHome that import states and allows control via your Home Assistant instance. + :image: home-assistant.svg + +The ``homeassistant`` Switch platform allows you to create Switch that **import** +states and allow **control** via your Home Assistant instance using the :doc:`native API `. + +.. code-block:: yaml + + # Example configuration entry + switch: + - platform: homeassistant + id: my_cool_switch_from_ha + entity_id: switch.my_cool_switch + +Configuration variables: +------------------------ + +- **entity_id** (**Required**, string): The entity ID to import / control from Home Assistant. +- All other options from :ref:`Switch `. + +See Also +-------- + +- :ref:`automation` +- :apiref:`homeassistant/switch/homeassistant_switch.h` +- :ghedit:`Edit` diff --git a/index.rst b/index.rst index 5b7a3f43ad..b1dc97a308 100644 --- a/index.rst +++ b/index.rst @@ -781,6 +781,7 @@ Switch Components Shutdown Switch, components/switch/shutdown, power_settings.svg, dark-invert Tuya Switch, components/switch/tuya, tuya.png UART Switch, components/switch/uart, uart.svg + Home Assistant, components/switch/homeassistant, home-assistant.svg, dark-invert Button Components ----------------- @@ -1042,6 +1043,7 @@ Components specifically for interacting with Home Assistant. Bluetooth Proxy, components/bluetooth_proxy, bluetooth.svg, dark-invert micro Wake Word, components/micro_wake_word, voice-assistant.svg, dark-invert Sensor, components/sensor/homeassistant, home-assistant.svg, dark-invert + Switch, components/switch/homeassistant, home-assistant.svg, dark-invert Text Sensor, components/text_sensor/homeassistant, home-assistant.svg, dark-invert Voice Assistant, components/voice_assistant, voice-assistant.svg, dark-invert From 9839ac3a5009672f868bacd5a1ffdef45847118e Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 14 Aug 2024 14:03:19 +1200 Subject: [PATCH 129/173] [update] Tidy up name/id (#4153) --- components/update/index.rst | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/components/update/index.rst b/components/update/index.rst index d4ac6a4c02..e1eb18454e 100644 --- a/components/update/index.rst +++ b/components/update/index.rst @@ -21,8 +21,14 @@ install it on its own. Configuration variables: ------------------------ -- **name** (*Optional*, string): The name to use for the update component. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. +- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. At least one of **id** and **name** must be specified. +- **name** (*Optional*, string): The name of the update entity. At least one of **id** and **name** must be specified. + + .. note:: + + If you have a :ref:`friendly_name ` set for your device and + you want the light to use that name, you can set ``name: None``. + - **device_class** (*Optional*, string): The device class for the update entity. See https://www.home-assistant.io/integrations/binary_sensor/#device-class for a list of available options. - **disabled_by_default** (*Optional*, boolean): If true, then this entity should not be added to any client's frontend From c8a20d91f3d79f333b81d0002a5e166b043192e6 Mon Sep 17 00:00:00 2001 From: Landon Rohatensky Date: Tue, 13 Aug 2024 19:04:04 -0700 Subject: [PATCH 130/173] Documentation for Home Assistant Number (#3942) Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/number/home_assistant.rst | 36 ++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 components/number/home_assistant.rst diff --git a/components/number/home_assistant.rst b/components/number/home_assistant.rst new file mode 100644 index 0000000000..3a657c5133 --- /dev/null +++ b/components/number/home_assistant.rst @@ -0,0 +1,36 @@ +Home Assistant Number +===================== + +.. seo:: + :description: Instructions for setting up Home Assistant numbers with ESPHome. + :image: description.svg + +The ``homeassistant`` number platform allows you to create a number that is synchronized +with Home Assistant. Min, Max and Step are not configurable for this platform because they are taken from the Home Assistant entity. + +.. code-block:: yaml + + # Example configuration entry + number: + - platform: homeassistant + id: my_ha_number + entity_id: number.my_number + +Configuration variables: +------------------------ + +- **entity_id** (**Required**, string): The Home Assistant entity ID of the number to synchronize with. +- All other options from :ref:`Number `. + +``number.set`` Action +--------------------- + +You can also set the number for the Home Assistant number from elsewhere in your YAML file +with the :ref:`number-set_action`. + +See Also +-------- + +- :ref:`automation` +- :apiref:`homeassistant/number/homeassistant_number.h` +- :ghedit:`Edit` From 08aaee13a3b67e89c74198e6aabb76f9e1037e48 Mon Sep 17 00:00:00 2001 From: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com> Date: Wed, 14 Aug 2024 12:05:28 +1000 Subject: [PATCH 131/173] [lvgl] Document `update_on_release` for number (#4132) --- components/number/lvgl.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/components/number/lvgl.rst b/components/number/lvgl.rst index 0183592ccf..29b2e5cfd3 100644 --- a/components/number/lvgl.rst +++ b/components/number/lvgl.rst @@ -15,6 +15,7 @@ Configuration variables: - **widget** (**Required**): The ID of a supported widget configured in LVGL, which will reflect the state of the number. - **animated** (*Optional*, boolean): Whether to set the value of the widget with an animation (if supported by the widget). Defaults to ``true``. +- **update_on_release** (*Optional*, boolean): By default the number will publish a new value each time the value of the associated widget changes. If this option is ``true`` then the value will only be published when touch is released. - All other variables from :ref:`Number `. Example: From fcd1f157e601664804d399107f4980a0afb6e80e Mon Sep 17 00:00:00 2001 From: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com> Date: Wed, 14 Aug 2024 12:06:15 +1000 Subject: [PATCH 132/173] Document `color_filter_opa` style property (#4136) --- components/lvgl/index.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/lvgl/index.rst b/components/lvgl/index.rst index 402127229f..50648ea8ae 100644 --- a/components/lvgl/index.rst +++ b/components/lvgl/index.rst @@ -266,8 +266,8 @@ You can adjust the appearance of widgets by changing their foreground, backgroun - ``LEFT`` - ``RIGHT`` - ``INTERNAL`` -- **radius** (*Optional*, uint16): The radius to be used to form the widget's rounded corners. 0 = no radius (square corners); 65535 = pill shaped widget (true circle if it has same width and height). - **clip_corner** (*Optional*, boolean): If set to ``true``, overflowing content will be clipped off by the widget's rounded corners (``radius`` > ``0``). +- **color_filter_opa** (*Optional*, :ref:`opacity `): Opacity of the color filter. Currently color filters are applied only by the default LVGL theme, this option allows the effect of those to be disabled by setting to ``TRANSP``. - **outline_width** (*Optional*, int16): Set the width of the outline in pixels. Defaults to ``0``. - **outline_color** (*Optional*, :ref:`color `): Color used to draw an outline around the widget. Defaults to ``0`` (black). - **outline_opa** (*Optional*, :ref:`opacity `): Opacity of the outline of the widget. Defaults to ``COVER``. @@ -279,6 +279,7 @@ You can adjust the appearance of widgets by changing their foreground, backgroun - **pad_right** (*Optional*, int16): Set the padding on the right, in pixels. - **pad_row** (*Optional*, int16): Set the padding between the rows of the children elements, in pixels. - **pad_column** (*Optional*, int16): Set the padding between the columns of the children elements, in pixels. +- **radius** (*Optional*, uint16): The radius to be used to form the widget's rounded corners. 0 = no radius (square corners); 65535 = pill shaped widget (true circle if it has same width and height). - **shadow_color** (*Optional*, :ref:`color `): Color used to create a drop shadow under the widget. Defaults to ``0`` (black). - **shadow_ofs_x** (*Optional*, int16): Horizontal offset of the shadow, in pixels. Defaults to ``0``. - **shadow_ofs_y** (*Optional*, int16): Vertical offset of the shadow, in pixels. Defaults to ``0``. From 37d65d2eb213541405defd25431cb43badc54676 Mon Sep 17 00:00:00 2001 From: Philippe Wechsler <29612400+MadMonkey87@users.noreply.github.com> Date: Wed, 14 Aug 2024 04:25:50 +0200 Subject: [PATCH 133/173] support illuminance for airthings wave plus device (#3110) --- components/sensor/airthings_ble.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/components/sensor/airthings_ble.rst b/components/sensor/airthings_ble.rst index 697dd7bad6..56267a672b 100644 --- a/components/sensor/airthings_ble.rst +++ b/components/sensor/airthings_ble.rst @@ -71,6 +71,8 @@ Configuration example: name: "WavePlus CO2" tvoc: name: "WavePlus VOC" + illuminance: + name: "WavePlus ambient light" battery_voltage: name: "WavePlus Battery Voltage" From 9892a0fce91793fe1d48bd1002d4892af4930bbc Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 14 Aug 2024 14:33:05 +1200 Subject: [PATCH 134/173] [sensor] Tidy up name/id (#4150) * [sensor] Tidy up name/id * Add missing line * Add missing line to sen5x --- components/sensor/a01nyub.rst | 5 +- components/sensor/a02yyuw.rst | 5 +- components/sensor/absolute_humidity.rst | 1 - components/sensor/adc.rst | 2 - components/sensor/ads1115.rst | 3 +- components/sensor/aht10.rst | 8 +- components/sensor/am2320.rst | 8 +- components/sensor/am43.rst | 9 +- components/sensor/apds9960.rst | 4 - components/sensor/b_parasite.rst | 19 ++- components/sensor/bh1750.rst | 3 - components/sensor/binary_sensor_map.rst | 1 - components/sensor/ble_rssi.rst | 2 - components/sensor/bme680.rst | 12 +- components/sensor/bme680_bsec.rst | 30 +--- components/sensor/bmp085.rst | 9 +- components/sensor/bmp280.rst | 5 - components/sensor/ccs811.rst | 16 +- components/sensor/ct_clamp.rst | 2 - components/sensor/dht.rst | 8 +- components/sensor/dht12.rst | 8 +- components/sensor/dps310.rst | 9 +- components/sensor/dsmr.rst | 180 ++++++--------------- components/sensor/ee895.rst | 12 +- components/sensor/ens160.rst | 32 ++-- components/sensor/ens210.rst | 8 +- components/sensor/esp32_hall.rst | 2 - components/sensor/ezo.rst | 1 - components/sensor/hdc1080.rst | 8 +- components/sensor/hm3301.rst | 14 +- components/sensor/homeassistant.rst | 2 - components/sensor/honeywellabp.rst | 4 +- components/sensor/hte501.rst | 8 +- components/sensor/hx711.rst | 2 - components/sensor/hydreon_rgxx.rst | 24 +-- components/sensor/hyt271.rst | 10 +- components/sensor/inkbird_ibsth1_mini.rst | 16 +- components/sensor/integration.rst | 2 - components/sensor/internal_temperature.rst | 2 - components/sensor/jsn_sr04t.rst | 9 +- components/sensor/max31855.rst | 7 +- components/sensor/max31865.rst | 2 - components/sensor/max44009.rst | 6 +- components/sensor/max6675.rst | 2 - components/sensor/max9611.rst | 12 +- components/sensor/mcp9600.rst | 9 +- components/sensor/mcp9808.rst | 2 - components/sensor/mlx90393.rst | 8 - components/sensor/modbus_controller.rst | 2 - components/sensor/mpl3115a2.rst | 12 +- components/sensor/mqtt_subscribe.rst | 2 - components/sensor/ms5611.rst | 9 +- components/sensor/nextion.rst | 1 - components/sensor/ntc.rst | 2 - components/sensor/pulse_counter.rst | 7 - components/sensor/pulse_meter.rst | 1 - components/sensor/qmp6988.rst | 11 +- components/sensor/resistance.rst | 2 - components/sensor/rotary_encoder.rst | 2 - components/sensor/ruuvitag.rst | 56 ++----- components/sensor/scd30.rst | 14 +- components/sensor/scd4x.rst | 12 +- components/sensor/sdp3x.rst | 2 - components/sensor/sen5x.rst | 28 +--- components/sensor/senseair.rst | 4 +- components/sensor/sgp30.rst | 16 +- components/sensor/sgp4x.rst | 4 - components/sensor/sht3xd.rst | 8 +- components/sensor/sht4x.rst | 8 +- components/sensor/shtcx.rst | 8 +- components/sensor/sm300d2.rst | 30 +--- components/sensor/smt100.rst | 15 +- components/sensor/sps30.rst | 40 ++--- components/sensor/sts3x.rst | 2 - components/sensor/tee501.rst | 2 - components/sensor/template.rst | 2 - components/sensor/tmp102.rst | 2 - components/sensor/tmp1075.rst | 5 +- components/sensor/tmp117.rst | 3 +- components/sensor/tof10120.rst | 2 - components/sensor/total_daily_energy.rst | 2 - components/sensor/tsl2561.rst | 2 - components/sensor/tsl2591.rst | 15 +- components/sensor/tuya.rst | 2 - components/sensor/ultrasonic.rst | 1 - components/sensor/veml7700.rst | 34 ++-- components/sensor/wifi_signal.rst | 4 +- components/sensor/xiaomi_ble.rst | 2 +- components/sensor/xiaomi_miscale.rst | 6 +- components/sensor/zyaura.rst | 12 +- 90 files changed, 242 insertions(+), 705 deletions(-) diff --git a/components/sensor/a01nyub.rst b/components/sensor/a01nyub.rst index 04371bd0a5..be57d228d4 100644 --- a/components/sensor/a01nyub.rst +++ b/components/sensor/a01nyub.rst @@ -6,7 +6,7 @@ A01NYUB Waterproof Ultrasonic Sensor :image: a01nyub.jpg :keywords: ultrasonic, DFRobot, A01NYUB -This sensor allows you to use A01NYUB waterproof ultrasonic sensor by DFRobot +This sensor allows you to use A01NYUB waterproof ultrasonic sensor by DFRobot (`datasheet `__) with ESPHome to measure distances. This sensor can measure ranges between 28 centimeters and 750 centimeters with a resolution of 1 milimeter. @@ -27,12 +27,11 @@ To use the sensor, first set up an :ref:`uart` with a baud rate of 9600 and conn sensor: - platform: "a01nyub" name: "Distance" - + Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the sensor. - **uart_id** (*Optional*, :ref:`config-id`): The ID of the :ref:`UART bus ` you wish to use for this sensor. Use this if you want to use multiple UART buses at once. - All other options from :ref:`Sensor `. diff --git a/components/sensor/a02yyuw.rst b/components/sensor/a02yyuw.rst index 2fc928380d..d090d0a8e4 100644 --- a/components/sensor/a02yyuw.rst +++ b/components/sensor/a02yyuw.rst @@ -6,7 +6,7 @@ A02YYUW Waterproof Ultrasonic Sensor :image: a02yyuw.jpg :keywords: ultrasonic, DFRobot, A02YYUW -This sensor allows you to use A02YYUW waterproof ultrasonic sensor by DFRobot +This sensor allows you to use A02YYUW waterproof ultrasonic sensor by DFRobot (`datasheet `__) with ESPHome to measure distances. This sensor can measure ranges between 3 centimeters and 450 centimeters with a resolution of 1 milimeter. @@ -27,12 +27,11 @@ To use the sensor, first set up an :ref:`uart` with a baud rate of 9600 and conn sensor: - platform: "a02yyuw" name: "Distance" - + Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the sensor. - **uart_id** (*Optional*, :ref:`config-id`): The ID of the :ref:`UART bus ` you wish to use for this sensor. Use this if you want to use multiple UART buses at once. - All other options from :ref:`Sensor `. diff --git a/components/sensor/absolute_humidity.rst b/components/sensor/absolute_humidity.rst index 3ba963a81a..b4a27de868 100644 --- a/components/sensor/absolute_humidity.rst +++ b/components/sensor/absolute_humidity.rst @@ -30,7 +30,6 @@ See the links at the bottom of the page for details on absolute humidity and the Configuration variables: ------------------------ -- **name** (**Required**, string): The name for the absolute humidity sensor. - **temperature** (**Required**, :ref:`config-id`): The sensor that is used to measure the current temperature, in °C. - **humidity** (**Required**, :ref:`config-id`): The sensor that is used to measure the current relative humidity, in %. - **equation** (*Optional*): The saturated vapor pressure equation to use (see below). diff --git a/components/sensor/adc.rst b/components/sensor/adc.rst index d5fe6c2efa..364ba80b71 100644 --- a/components/sensor/adc.rst +++ b/components/sensor/adc.rst @@ -31,14 +31,12 @@ Configuration variables: - **pin** (**Required**, :ref:`config-pin`): The pin to measure the voltage on. Or on the ESP8266 or Raspberry Pi Pico it could alternatively be set to ``VCC``, see :ref:`adc-vcc`. -- **name** (**Required**, string): The name of the voltage sensor. - **attenuation** (*Optional*): Only on ESP32. Specify the ADC attenuation to use. See :ref:`adc-esp32_attenuation`. Defaults to ``0db``. - **raw** (*Optional*): Allows to read the raw ADC output without any conversion or calibration. See :ref:`adc-raw`. Defaults to ``false``. - **samples** (*Optional*): The amount of ADC readings to take per sensor update. On the ESP32 this value is ignored if ``attenuation`` is set to ``auto``. Defaults to ``1``. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Sensor `. .. note:: diff --git a/components/sensor/ads1115.rst b/components/sensor/ads1115.rst index 3e2eb83c4e..eae66c79f9 100644 --- a/components/sensor/ads1115.rst +++ b/components/sensor/ads1115.rst @@ -88,17 +88,16 @@ Configuration variables: - **multiplexer** (**Required**): The multiplexer channel of this sensor. Effectively means between which pins you want to measure voltage. - **gain** (**Required**, float): The gain of this sensor. -- **name** (**Required**, string): The name for this sensor. - **ads1115_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`ADS1115 Hub ` you want to use this sensor. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **resolution** (*Optional*, string): the resolution of this sensor. Defaults to ``16 bits``. - ``16 bits`` - ``12 bits`` +- All other options from :ref:`Sensor `. Multiplexer and Gain -------------------- diff --git a/components/sensor/aht10.rst b/components/sensor/aht10.rst index e3550ce51b..d41fec0cb4 100644 --- a/components/sensor/aht10.rst +++ b/components/sensor/aht10.rst @@ -47,15 +47,11 @@ Configuration variables: - **temperature** (**Required**): The information for the temperature sensor. - - **name** (**Required**, string): The name for the temperature sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **humidity** (**Required**): The information for the humidity sensor - - **name** (**Required**, string): The name for the humidity sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. diff --git a/components/sensor/am2320.rst b/components/sensor/am2320.rst index 9ed04dde96..6670626b24 100644 --- a/components/sensor/am2320.rst +++ b/components/sensor/am2320.rst @@ -40,15 +40,11 @@ Configuration variables: - **temperature** (**Required**): The information for the temperature sensor. - - **name** (**Required**, string): The name for the temperature sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **humidity** (**Required**): The information for the humidity sensor - - **name** (**Required**, string): The name for the humidity sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. diff --git a/components/sensor/am43.rst b/components/sensor/am43.rst index 79637cda15..c057d8d4bf 100644 --- a/components/sensor/am43.rst +++ b/components/sensor/am43.rst @@ -45,14 +45,11 @@ Configuration variables: - **ble_client_id** (**Required**, :ref:`config-id`): The id of the ``ble_client`` entry associated with the device. - **battery_level** (*Optional*): The information for the battery level sensor. - - **name** (**Required**, string): The name for the battery level sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. + - **illuminance** (*Optional*): The information for the light level sensor. - - **name** (**Required**, string): The name for the light level sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. diff --git a/components/sensor/apds9960.rst b/components/sensor/apds9960.rst index 0838841cf1..60883aec6f 100644 --- a/components/sensor/apds9960.rst +++ b/components/sensor/apds9960.rst @@ -69,7 +69,6 @@ measurements. Configuration variables: -- **name** (**Required**, string): The name for the sensor. - **type** (**Required**, string): The type of sensor measurement. One of - ``CLEAR`` @@ -78,7 +77,6 @@ Configuration variables: - ``BLUE`` - ``PROXIMITY`` -- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. Binary Sensor @@ -89,7 +87,6 @@ measurements. Configuration variables: -- **name** (**Required**, string): The name for the binary sensor. - **direction** (**Required**, string): The direction to measure. One of: - ``UP`` @@ -97,7 +94,6 @@ Configuration variables: - ``LEFT`` - ``RIGHT`` -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Binary Sensor `. Troubleshooting: diff --git a/components/sensor/b_parasite.rst b/components/sensor/b_parasite.rst index 42089f036a..6617670933 100644 --- a/components/sensor/b_parasite.rst +++ b/components/sensor/b_parasite.rst @@ -42,24 +42,23 @@ Configuration variables - **mac_address** (**Required**): The MAC address of the device. - **temperature** (*Optional*): Air temperature in Celsius. - - **name** (**Required**): Sensor name. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. + - **humidity** (*Optional*): Relative air humidity in %. - - **name** (**Required**): Sensor name. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. + - **moisture** (*Optional*): Soil moisture in %. - - **name** (**Required**): Sensor name. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. + - **battery_voltage** (*Optional*): Battery voltage in volts. - - **name** (**Required**): Sensor name. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. + - **illuminance** (*Optional*): Illuminance in lux. - - **name** (**Required**): Sensor name. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. See Also -------- diff --git a/components/sensor/bh1750.rst b/components/sensor/bh1750.rst index b571bef6ed..ab2eb8399e 100644 --- a/components/sensor/bh1750.rst +++ b/components/sensor/bh1750.rst @@ -35,14 +35,11 @@ your configuration for this sensor to work. Configuration variables: ------------------------ -- **name** (**Required**, string): The name for the sensor. - **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x23`` (address if address pin is pulled low). If the address pin is pulled high, the address is ``0x5C``. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code - generation. - All other options from :ref:`Sensor `. See Also diff --git a/components/sensor/binary_sensor_map.rst b/components/sensor/binary_sensor_map.rst index e23d0a0144..132800a45f 100644 --- a/components/sensor/binary_sensor_map.rst +++ b/components/sensor/binary_sensor_map.rst @@ -121,7 +121,6 @@ The maximum amount of observations/channels supported is 64. Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the sensor. - **type** (**Required**, string): The sensor type. Should be one of: ``BAYESIAN``, ``GROUP``, or ``SUM``. - **channels** (**Required for GROUP or SUM types**): A list of channels that are mapped to certain values. diff --git a/components/sensor/ble_rssi.rst b/components/sensor/ble_rssi.rst index 4590f368ce..56ebe944b2 100644 --- a/components/sensor/ble_rssi.rst +++ b/components/sensor/ble_rssi.rst @@ -49,7 +49,6 @@ instructions for setting up this platform. Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the sensor. - **mac_address** (*Optional*, MAC Address): The MAC address to track for this sensor. Note that exactly one of ``mac_address``, ``irk``, ``service_uuid`` or ``ibeacon_uuid`` must be present. @@ -67,7 +66,6 @@ Configuration variables: same building. - **ibeacon_minor** (*Optional*, int): The iBeacon minor identifier of the beacon that needs to be tracked. Usually used to identify beacons within an iBeacon group. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Sensor `. See Also diff --git a/components/sensor/bme680.rst b/components/sensor/bme680.rst index b8e5815146..5aaf05a1f2 100644 --- a/components/sensor/bme680.rst +++ b/components/sensor/bme680.rst @@ -41,33 +41,25 @@ Configuration variables: - **temperature** (*Optional*): The information for the temperature sensor. - - **name** (**Required**, string): The name for the temperature sensor. - **oversampling** (*Optional*): The oversampling parameter for the temperature sensor. See :ref:`bme680-oversampling`. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. - **pressure** (*Optional*): The information for the pressure sensor. - - **name** (**Required**, string): The name for the pressure sensor. - **oversampling** (*Optional*): The oversampling parameter for the temperature sensor. See :ref:`bme680-oversampling`. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. - **humidity** (*Optional*): The information for the humidity sensor. - - **name** (**Required**, string): The name for the humidity sensor. - **oversampling** (*Optional*): The oversampling parameter for the temperature sensor. See :ref:`bme680-oversampling`. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. - **gas_resistance** (*Optional*): The information for the gas sensor. - - **name** (**Required**, string): The name for the gas resistance sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x76``. Another address can be ``0x77``. @@ -132,7 +124,7 @@ Add indoor air quality (IAQ) calculation and IAQ label, based on the values in t name: "BME680 Indoor Air Quality" id: iaq icon: "mdi:gauge" - # calculation: comp_gas = log(R_gas[ohm]) + 0.04 log(Ohm)/%rh * hum[%rh] + # calculation: comp_gas = log(R_gas[ohm]) + 0.04 log(Ohm)/%rh * hum[%rh] lambda: |- return log(id(gas_resistance).state) + 0.04 * id(humidity).state; state_class: "measurement" diff --git a/components/sensor/bme680_bsec.rst b/components/sensor/bme680_bsec.rst index 2b3e0780b5..95d73f04cf 100644 --- a/components/sensor/bme680_bsec.rst +++ b/components/sensor/bme680_bsec.rst @@ -125,54 +125,38 @@ Configuration variables: - **temperature** (*Optional*): The information for the temperature sensor. - - **name** (**Required**, string): The name for the temperature sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - **sample_rate** (*Optional*, string): Optional sample rate override for this sensor. Can be ``lp`` for low power consumption, sampling every 3 seconds or ``ulp`` for ultra-low power, sampling every 5 minutes. - All other options from :ref:`Sensor `. - **pressure** (*Optional*): The information for the pressure sensor. - - **name** (**Required**, string): The name for the pressure sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - **sample_rate** (*Optional*, string): Optional sample rate override for this sensor. Can be ``lp`` for low power consumption, sampling every 3 seconds or ``ulp`` for ultra-low power, sampling every 5 minutes. - All other options from :ref:`Sensor `. - **humidity** (*Optional*): The information for the humidity sensor. - - **name** (**Required**, string): The name for the humidity sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - **sample_rate** (*Optional*, string): Optional sample rate override for this sensor. Can be ``lp`` for low power consumption, sampling every 3 seconds or ``ulp`` for ultra-low power, sampling every 5 minutes. - All other options from :ref:`Sensor `. - **gas_resistance** (*Optional*): The information for the gas sensor. - - **name** (**Required**, string): The name for the gas resistance sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **iaq** (*Optional*): The information for the IAQ sensor. - - **name** (**Required**, string): The name for the IAQ sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **iaq_accuracy** (*Optional*): The information for the numeric IAQ accuracy sensor. - - **name** (**Required**, string): The name for the IAQ accuracy sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **co2_equivalent** (*Optional*): The information for the CO₂ equivalent sensor. - - **name** (**Required**, string): The name for the CO₂ equivalent sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **breath_voc_equivalent** (*Optional*): The information for the Breath VOC equivalent humidity sensor. - - **name** (**Required**, string): The name for the Breath VOC equivalent sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. Text Sensor ----------- @@ -186,9 +170,7 @@ Configuration variables: - **iaq_accuracy** (*Optional*): The information for the IAQ accuracy sensor. Shows: Stabilizing, Uncertain, Calibrating, Calibrated. - - **name** (**Required**, string): The name for the IAQ accuracy sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`TextSensor `. + - All options from :ref:`TextSensor `. .. figure:: images/bme680-bsec-ui.png :align: center diff --git a/components/sensor/bmp085.rst b/components/sensor/bmp085.rst index 3f3c6d82a3..f8402f7370 100644 --- a/components/sensor/bmp085.rst +++ b/components/sensor/bmp085.rst @@ -40,16 +40,11 @@ Configuration variables: - **temperature** (*Optional*): The information for the temperature sensor. - - **name** (**Required**, string): The name for the temperature - sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **pressure** (*Optional*): The information for the pressure sensor. - - **name** (**Required**, string): The name for the pressure sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x77``. diff --git a/components/sensor/bmp280.rst b/components/sensor/bmp280.rst index df7bc8041e..ff0c6abbc5 100644 --- a/components/sensor/bmp280.rst +++ b/components/sensor/bmp280.rst @@ -38,19 +38,14 @@ Configuration variables: - **temperature** (*Optional*): The information for the temperature. sensor - - **name** (**Required**, string): The name for the temperature - sensor. - **oversampling** (*Optional*): The oversampling parameter for the temperature sensor. See :ref:`Oversampling Options `. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. - **pressure** (*Optional*): The information for the pressure sensor. - - **name** (**Required**, string): The name for the pressure sensor. - **oversampling** (*Optional*): The oversampling parameter for the pressure sensor. See :ref:`Oversampling Options `. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. - **address** (*Optional*, int): Manually specify the I²C address of diff --git a/components/sensor/ccs811.rst b/components/sensor/ccs811.rst index 95b4bde42b..2eb08eab9e 100644 --- a/components/sensor/ccs811.rst +++ b/components/sensor/ccs811.rst @@ -10,10 +10,10 @@ The ``ccs811`` sensor platform allows you to use CCS811 eCO_2 and volatile organ .. note:: - Most CCS811 modules require the WAK pin to be pulled low to wake up the sensor, as outlined in the data sheets. - Outside low-power scenarios, connecting WAK to ground is the recommended configuration. For low power installations, + Most CCS811 modules require the WAK pin to be pulled low to wake up the sensor, as outlined in the data sheets. + Outside low-power scenarios, connecting WAK to ground is the recommended configuration. For low power installations, pulling WAK low should happen in software prior to taking the measures. - + .. figure:: images/ccs811-full.jpg :align: center :width: 50.0% @@ -46,23 +46,19 @@ Configuration variables: - **eco2** (**Required**): The eCO_2 data from the sensor in parts per million (ppm). - - **name** (**Required**, string): The name for the CO_2 sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **tvoc** (**Required**): The information for the total volatile organic compound sensor in parts per billion (ppb). - - **name** (**Required**, string): The name for the tvoc sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. - **version** (*Optional*): This sensor reports the firmware ('application') version in text, with the internal hex representation of the version number behind it, so version 1.0.0 will be reported as '1.0.0 (0x1000)'. - - **name** (**Required**, string): The name for the version sensor. + - All options from :ref:`Text Sensor `. Advanced: diff --git a/components/sensor/ct_clamp.rst b/components/sensor/ct_clamp.rst index 27f9e5eb19..c21a3921c9 100644 --- a/components/sensor/ct_clamp.rst +++ b/components/sensor/ct_clamp.rst @@ -35,13 +35,11 @@ as an introduction to the working principle of CT clamp sensors and how to hook Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the sensor. - **sensor** (**Required**, :ref:`config-id`): The source sensor to measure voltage values from. - **sample_duration** (*Optional*, :ref:`config-time`): The time duration to sample the current clamp with. Higher values can increase accuracy. Defaults to ``200ms`` which would be 10 whole cycles on a 50Hz system. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. The **update_interval** for ``ct_clamp`` has to be greater than **sample_duration**. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Sensor `. Calibration diff --git a/components/sensor/dht.rst b/components/sensor/dht.rst index f8943d6c08..2b16241ebd 100644 --- a/components/sensor/dht.rst +++ b/components/sensor/dht.rst @@ -51,15 +51,11 @@ Configuration variables: - **pin** (**Required**, :ref:`config-pin`): The pin where the DHT bus is connected. - **temperature** (**Required**): The information for the temperature sensor. - - **name** (**Required**, string): The name for the temperature sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **humidity** (**Required**): The information for the humidity sensor - - **name** (**Required**, string): The name for the humidity sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **model** (*Optional*, int): Manually specify the DHT model, can be diff --git a/components/sensor/dht12.rst b/components/sensor/dht12.rst index 0588bbcf29..53afa28cff 100644 --- a/components/sensor/dht12.rst +++ b/components/sensor/dht12.rst @@ -38,15 +38,11 @@ Configuration variables: - **temperature** (**Required**): The information for the temperature sensor. - - **name** (**Required**, string): The name for the temperature sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **humidity** (**Required**): The information for the humidity sensor - - **name** (**Required**, string): The name for the humidity sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. diff --git a/components/sensor/dps310.rst b/components/sensor/dps310.rst index 4cd5f5baaf..8130925faf 100644 --- a/components/sensor/dps310.rst +++ b/components/sensor/dps310.rst @@ -33,17 +33,12 @@ Configuration variables: - **pressure** (**Required**): The information for the pressure sensor. - - **name** (**Required**, string): The name for the pressure sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **temperature** (**Required**): The information for the temperature. sensor - - **name** (**Required**, string): The name for the temperature - sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x77``. diff --git a/components/sensor/dsmr.rst b/components/sensor/dsmr.rst index 0181270e07..4d5fb1fc2f 100644 --- a/components/sensor/dsmr.rst +++ b/components/sensor/dsmr.rst @@ -71,205 +71,139 @@ Configuration variables: - **energy_delivered_tariff1** (*Optional*): Energy Consumed Tariff 1. - - **name** (**Required**, string): The name for the energy_delivered_tariff1 sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **energy_delivered_tariff2** (*Optional*): Energy Consumed Tariff 2. - - **name** (**Required**, string): The name for the energy_delivered_tariff2 sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **energy_returned_tariff1** (*Optional*): Energy Produced Tariff 1. - - **name** (**Required**, string): The name for the energy_returned_tariff1 sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **energy_returned_tariff2** (*Optional*): Energy Produced Tariff 2. - - **name** (**Required**, string): The name for the energy_returned_tariff2 sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **power_delivered** (*Optional*): Power Consumed. - - **name** (**Required**, string): The name for the power_delivered sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **power_returned** (*Optional*): Power Produced. - - **name** (**Required**, string): The name for the power_returned sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **electricity_failures** (*Optional*): Electricity Failures. - - **name** (**Required**, string): The name for the electricity_failures sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **electricity_long_failures** (*Optional*): Long Electricity Failures. - - **name** (**Required**, string): The name for the electricity_long_failures sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **electricity_sags_l1** (*Optional*): Number of voltage sags in phase L1. - - **name** (**Required**, string): The name for the electricity_sags_l1 sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **electricity_sags_l2** (*Optional*): Number of voltage sags in phase L2. - - **name** (**Required**, string): The name for the electricity_sags_l2 sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **electricity_sags_l3** (*Optional*): Number of voltage sags in phase L3. - - **name** (**Required**, string): The name for the electricity_sags_l3 sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **electricity_swells_l1** (*Optional*): Number of voltage swells in phase L1. - - **name** (**Required**, string): The name for the electricity_swells_l1 sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **electricity_swells_l2** (*Optional*): Number of voltage swells in phase L2. - - **name** (**Required**, string): The name for the electricity_swells_l2 sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **electricity_swells_l3** (*Optional*): Number of voltage swells in phase L3. - - **name** (**Required**, string): The name for the electricity_swells_l3 sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **voltage_l1** (*Optional*): Voltage Phase 1. - - **name** (**Required**, string): The name for the voltage_l1 sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **voltage_l2** (*Optional*): Voltage Phase 2. - - **name** (**Required**, string): The name for the voltage_l2 sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **voltage_l3** (*Optional*): Voltage Phase 3. - - **name** (**Required**, string): The name for the voltage_l3 sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **current_l1** (*Optional*): Current Phase 1. - - **name** (**Required**, string): The name for the current_l1 sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **current_l2** (*Optional*): Current Phase 2. - - **name** (**Required**, string): The name for the current_l2 sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **current_l3** (*Optional*): Current Phase 3. - - **name** (**Required**, string): The name for the current_l3 sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **power_delivered_l1** (*Optional*): Power Consumed Phase 1. - - **name** (**Required**, string): The name for the power_delivered_l1 sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **power_delivered_l2** (*Optional*): Power Consumed Phase 2. - - **name** (**Required**, string): The name for the power_delivered_l2 sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **power_delivered_l3** (*Optional*): Power Consumed Phase 3. - - **name** (**Required**, string): The name for the power_delivered_l3 sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **power_returned_l1** (*Optional*): Power Produced Phase 1. - - **name** (**Required**, string): The name for the power_returned_l1 sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **power_returned_l2** (*Optional*): Power Produced Phase 2. - - **name** (**Required**, string): The name for the power_returned_l2 sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **power_returned_l3** (*Optional*): Power Produced Phase 3. - - **name** (**Required**, string): The name for the power_returned_l3 sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **gas_delivered** (*Optional*): Gas Consumed. - - **name** (**Required**, string): The name for the gas_delivered sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. Belgium - **gas_delivered_be** (*Optional*): Gas Consumed Belgium. - - **name** (**Required**, string): The name for the gas_delivered_be sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **active_energy_import_current_average_demand** (*Optional*): Current Average Quarterly Demand for Peak Tarrif Belgium. - - **name** (**Required**, string): The name for the active_energy_import_current_average_demand sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **active_energy_import_maximum_demand_running_month** (*Optional*): Current Month's Maximum Quarterly Demand for Peak Tarrif Belgium. - - **name** (**Required**, string): The name for the active_energy_import_maximum_demand_running_month sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **active_energy_import_maximum_demand_last_13_months** (*Optional*): 13 Month Maximum Quarterly Demand for Peak Tarrif Belgium. - - **name** (**Required**, string): The name for the active_energy_import_maximum_demand_last_13_months sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. Luxembourg - **energy_delivered_lux** (*Optional*): Energy Consumed Luxembourg - - **name** (**Required**, string): The name for the energy_delivered_lux sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **energy_returned_lux** (*Optional*): Energy Produced Luxembourg - - **name** (**Required**, string): The name for the energy_returned_lux sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. Text Sensor ----------- @@ -278,79 +212,55 @@ Configuration variables: - **identification** (*Optional*): DSMR Identification - - **name** (**Required**, string): The name for the identification text sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Text Sensor `. + - All options from :ref:`Text Sensor `. - **p1_version** (*Optional*): DSMR Version - - **name** (**Required**, string): The name for the p1_version text sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Text Sensor `. + - All options from :ref:`Text Sensor `. - **timestamp** (*Optional*): Timestamp - - **name** (**Required**, string): The name for the timestamp sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Text Sensor `. + - All options from :ref:`Text Sensor `. - **electricity_tariff** (*Optional*): The current tariff. According to the specs value '0001' means 'normal tariff' and value '0002' means 'low tariff'. Your meter may report differently. - - **name** (**Required**, string): The name for the electricity_tariff sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Text Sensor `. + - All options from :ref:`Text Sensor `. - **electricity_failure_log** (*Optional*): Electricity Failure Log - - **name** (**Required**, string): The name for the electricity_failure_log sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Text Sensor `. + - All options from :ref:`Text Sensor `. - **message_short** (*Optional*): Message Short - - **name** (**Required**, string): The name for the message_short sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Text Sensor `. + - All options from :ref:`Text Sensor `. - **message_long** (*Optional*): Message Long - - **name** (**Required**, string): The name for the message_long sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Text Sensor `. + - All options from :ref:`Text Sensor `. - **gas_equipment_id** (*Optional*): Gas Equipment ID. - - **name** (**Required**, string): The name for the gas_equipment_id sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Text Sensor `. + - All options from :ref:`Text Sensor `. - **water_equipment_id** (*Optional*): Water Equipment ID - - **name** (**Required**, string): The name for the water_equipment_id sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Text Sensor `. + - All options from :ref:`Text Sensor `. - **sub_equipment_id** (*Optional*): Sub Equipment ID - - **name** (**Required**, string): The name for the sub_equipment_id sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Text Sensor `. + - All options from :ref:`Text Sensor `. - **gas_delivered_text** (*Optional*): A text sensor which unformatted gas data. You need to apply a custom parsing of this value depending on your meter format. - - **name** (**Required**, string): The name for the p1_version text sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Text Sensor `. + - All options from :ref:`Text Sensor `. Belgium - **p1_version_be** (*Optional*): DSMR Version Belgium - - **name** (**Required**, string): The name for the p1_version_be text sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Text Sensor `. + - All options from :ref:`Text Sensor `. Older DSMR meters support ------------------------- diff --git a/components/sensor/ee895.rst b/components/sensor/ee895.rst index dfb5f2b7dd..ebad7741d5 100644 --- a/components/sensor/ee895.rst +++ b/components/sensor/ee895.rst @@ -38,21 +38,15 @@ Configuration variables: - **temperature** (**Required**): The information for the Temperature sensor. - - **name** (**Required**, string): The name for the temperature sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **co2** (**Required**): The information for the CO₂ sensor. - - **name** (**Required**, string): The name for the CO₂eq sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **pressure** (**Required**): The information for the Pressure sensor. - - **name** (**Required**, string): The name for the Pressure sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x5F``. diff --git a/components/sensor/ens160.rst b/components/sensor/ens160.rst index bd79ec2c06..4693123cdf 100644 --- a/components/sensor/ens160.rst +++ b/components/sensor/ens160.rst @@ -6,15 +6,15 @@ ENS160 Sensor :keywords: ENS160 The ``ens160`` sensor platform allows you to use your ENS160 -(`datasheet `__) air-quality sensors with ESPHome. +(`datasheet `__) air-quality sensors with ESPHome. The :ref:`I²C ` or :ref:`SPI ` is required to be set up in your configuration for this sensor to work. .. note:: On first power-up of the ENS160 sensor, there is a 1 hour initial startup delay before readings will be available. - For subsequent starts or reboots, there is a 3 minute warm up period before readings are available. Also, be aware that the + For subsequent starts or reboots, there is a 3 minute warm up period before readings are available. Also, be aware that the ENS160 can take up to 1 second for sucessive data measurements to be ready. - + .. figure:: images/ens160.jpg :align: center :width: 80.0% @@ -33,7 +33,7 @@ The :ref:`I²C ` or :ref:`SPI ` is required to be set up in your confi aqi: id: ens160_air_quality_index name: "ENS160 Air Quality Index" - update_interval: 60s + update_interval: 60s address: 0x53 compensation: temperature: id_temperature_sensor @@ -48,7 +48,7 @@ The :ref:`I²C ` or :ref:`SPI ` is required to be set up in your confi name: "ENS160 Total Volatile Organic Compounds" aqi: name: "ENS160 Air Quality Index" - update_interval: 60s + update_interval: 60s cs_pin: GPIO5 compensation: temperature: id_temperature_sensor @@ -60,21 +60,15 @@ Configuration variables: - **eco2** (**Required**): Configuration for the eCO2 sensor. - - **name** (**Required**, string): The name for the eCO2 sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **tvoc** (**Required**): Configuration for the TVOC sensor. - - **name** (**Required**, string): The name for the TVOC sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **aqi** (*Optional*): Configuration for the air quality index sensor. - - **name** (**Required**, string): The name for the AQI sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. The update interval should be greater than the measurement @@ -88,20 +82,20 @@ Configuration variables: Advanced: -- **compensation** (*Optional*): The block containing sensors used for compensation. +- **compensation** (*Optional*): The block containing sensors used for compensation. Temperature and humidity compensation improves the accuracy of sensor readings. Without compensation, the ENS160 internally assumes 25°C temperature and 50% humidity, with readings noticeably diverting from real changes without compensation in temperature and humidity. - + - **temperature** (**Required**, :ref:`config-id`): The ID of an external temperature sensor. - **humidity** (**Required**, :ref:`config-id`): The ID of an external humidity sensor. - + Example Text Sensor configuration --------------------------------- The Air Quality Index(AQI) from this sensor is a number between 1 and 5. The ENS160 (`datasheet `__) states that "The AQI-UBA air quality index is derived from a guideline by the German Federal Environmental -Agency based on a TVOC sum signal". The following is an example configuration to convert the numeric ENS160 AQI to the rating text. +Agency based on a TVOC sum signal". The following is an example configuration to convert the numeric ENS160 AQI to the rating text. .. code-block:: yaml @@ -114,7 +108,7 @@ Agency based on a TVOC sum signal". The following is an example configuration to case 2: return {"Good"}; case 3: return {"Moderate"}; case 4: return {"Poor"}; - case 5: return {"Unhealthy"}; + case 5: return {"Unhealthy"}; default: return {"Not Available"}; } diff --git a/components/sensor/ens210.rst b/components/sensor/ens210.rst index 782af1510b..3503a56510 100644 --- a/components/sensor/ens210.rst +++ b/components/sensor/ens210.rst @@ -35,15 +35,11 @@ Configuration variables: - **temperature** (**Required**): The information for the temperature sensor. - - **name** (**Required**, string): The name for the temperature sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **humidity** (**Required**): The information for the humidity sensor - - **name** (**Required**, string): The name for the humidity sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. diff --git a/components/sensor/esp32_hall.rst b/components/sensor/esp32_hall.rst index 436b8610a0..7cbcc5e5e0 100644 --- a/components/sensor/esp32_hall.rst +++ b/components/sensor/esp32_hall.rst @@ -30,10 +30,8 @@ by the hall sensor. Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the hall effect sensor. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Sensor `. .. warning:: diff --git a/components/sensor/ezo.rst b/components/sensor/ezo.rst index 515bb8c961..41508e2fa2 100644 --- a/components/sensor/ezo.rst +++ b/components/sensor/ezo.rst @@ -42,7 +42,6 @@ Configuration variables: - **address** (**Required**, int): Specify the I²C address of the sensor. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. -- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. Automation triggers: diff --git a/components/sensor/hdc1080.rst b/components/sensor/hdc1080.rst index 19bc5a7fdf..b4cd76b652 100644 --- a/components/sensor/hdc1080.rst +++ b/components/sensor/hdc1080.rst @@ -41,15 +41,11 @@ Configuration variables: - **temperature** (**Required**): The information for the temperature sensor. - - **name** (**Required**, string): The name for the temperature sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **humidity** (**Required**): The information for the humidity sensor - - **name** (**Required**, string): The name for the humidity sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. diff --git a/components/sensor/hm3301.rst b/components/sensor/hm3301.rst index d6f71e7f59..ac73b956b7 100644 --- a/components/sensor/hm3301.rst +++ b/components/sensor/hm3301.rst @@ -33,27 +33,19 @@ Configuration variables: - **pm_1_0** (*Optional*): Use the concentration of particulates of size less than 1.0µm in µg per cubic meter. - - **name** (**Required**, string): The name for the temperature sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **pm_2_5** (*Optional*): Use the concentration of particulates of size less than 2.5µm in µg per cubic meter. - - **name** (**Required**, string): The name for the temperature sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **pm_10_0** (*Optional*): Use the concentration of particulates of size less than 10.0µm in µg per cubic meter. - - **name** (**Required**, string): The name for the temperature sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **aqi** (*Optional*): AQI sensor. Requires the ``pm_2_5`` and ``pm_10_0`` sensors defined. See below. - **calculation_type** (**Required**): One of: ``AQI`` or ``CAQI``. - - **name** (**Required**, string): The name for the temperature sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. Air Quality Sensor: diff --git a/components/sensor/homeassistant.rst b/components/sensor/homeassistant.rst index b8d0ea0e94..631615702b 100644 --- a/components/sensor/homeassistant.rst +++ b/components/sensor/homeassistant.rst @@ -39,11 +39,9 @@ Entity state attributes can also be imported: Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the sensor. - **entity_id** (**Required**, string): The entity ID to import from Home Assistant. - **attribute** (*Optional*, string): The name of the state attribute to import from the specified entity. The entity state is used when this option is omitted. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Sensor `. diff --git a/components/sensor/honeywellabp.rst b/components/sensor/honeywellabp.rst index d85582e9a8..5da92211a7 100644 --- a/components/sensor/honeywellabp.rst +++ b/components/sensor/honeywellabp.rst @@ -49,9 +49,7 @@ datasheet indicates that the sensor does not measure temperature. - **temperature** (*Optional*): The information for the temperature sensor. - - **name** (**Required**, string): The name for the temperature sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **cs_pin** (**Required**, :ref:`SPI `): Chip select pin. diff --git a/components/sensor/hte501.rst b/components/sensor/hte501.rst index 4e052de0ea..27c16778cd 100644 --- a/components/sensor/hte501.rst +++ b/components/sensor/hte501.rst @@ -33,15 +33,11 @@ Configuration variables: - **temperature** (**Required**): The information for the temperature sensor. - - **name** (**Required**, string): The name for the temperature sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **humidity** (**Required**): The information for the humidity sensor. - - **name** (**Required**, string): The name for the humidity sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x40``. diff --git a/components/sensor/hx711.rst b/components/sensor/hx711.rst index 8855113a65..8555b7545f 100644 --- a/components/sensor/hx711.rst +++ b/components/sensor/hx711.rst @@ -36,7 +36,6 @@ and ``CLK`` (or ``SCK``) to free GPIO pins. Configuration variables: ------------------------ -- **name** (**Required**, string): The name for the load cell sensor. - **dout_pin** (**Required**, :ref:`Pin Schema `): The DOUT (or DAT) pin. - **clk_pin** (**Required**, :ref:`Pin Schema `): The CLK pin. - **gain** (*Optional*, enum): The gain. Implicitly selects the channel. Defaults to ``128``. @@ -47,7 +46,6 @@ Configuration variables: - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Sensor `. diff --git a/components/sensor/hydreon_rgxx.rst b/components/sensor/hydreon_rgxx.rst index 04e08c06d9..04a919b803 100644 --- a/components/sensor/hydreon_rgxx.rst +++ b/components/sensor/hydreon_rgxx.rst @@ -74,42 +74,30 @@ Configuration variables: - **moisture** (*Optional*): Rain intensity level from 0-7 (`more detail `__). Only on RG-9. - - **name** (**Required**, string): The name for the sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **temperature** (*Optional*): Device internal temperature in Celsius. Accuracy is ±5°C. Only on RG-9 firmware version 1.100-onwards. - - **name** (**Required**, string): The name for the sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **resolution** (*Optional*, string): Specify rain sensor resolution. Must be either ``low`` or ``high``. Default resolution is ``high``. Only applies to RG-15. - **acc** (*Optional*): Amount of rain since last message (see ``update_interval``), in ``mm``. Only on RG-15. - - **name** (**Required**, string): The name for the sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **event_acc** (*Optional*): Amount of rain for this event (i.e. since it last stopped raining), in ``mm``. Only on RG-15. - - **name** (**Required**, string): The name for the sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **total_acc** (*Optional*): Total amount of rain this sensor has ever measured, in ``mm``. Only on RG-15. - - **name** (**Required**, string): The name for the sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **r_int** (*Optional*): Current rain intensity in ``mm/h``. Only on RG-15. - - **name** (**Required**, string): The name for the sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. diff --git a/components/sensor/hyt271.rst b/components/sensor/hyt271.rst index 658b66f830..84693eeefc 100644 --- a/components/sensor/hyt271.rst +++ b/components/sensor/hyt271.rst @@ -6,7 +6,7 @@ HYT271 Temperature & Humidity Sensor :image: hyt271.jpg :keywords: HYT271 -The HYT271 Temperature & Humidity sensors with ESPHome. +The HYT271 Temperature & Humidity sensors with ESPHome. The :ref:`I²C Bus ` is required to be set up in your configuration for this sensor to work. Example sensors: @@ -27,15 +27,11 @@ Configuration variables: - **temperature** (**Required**): The information for the temperature sensor. - - **name** (**Required**, string): The name for the temperature sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **humidity** (**Required**): The information for the humidity sensor. - - **name** (**Required**, string): The name for the humidity sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. diff --git a/components/sensor/inkbird_ibsth1_mini.rst b/components/sensor/inkbird_ibsth1_mini.rst index ac82f8eff7..ac18f2e859 100644 --- a/components/sensor/inkbird_ibsth1_mini.rst +++ b/components/sensor/inkbird_ibsth1_mini.rst @@ -54,27 +54,19 @@ Configuration variables: - **mac_address** (**Required**, MAC Address): The MAC address of the Inkbird IBS-TH1 device. - **temperature** (*Optional*): The information for the temperature sensor. - - **name** (**Required**, string): The name for the temperature sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **external_temperature** (*Optional*): The information for the external temperature sensor. - - **name** (**Required**, string): The name for the external temperature sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **humidity** (*Optional*): The information for the humidity sensor - - **name** (**Required**, string): The name for the humidity sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **battery_level** (*Optional*): The information for the battery level sensor - - **name** (**Required**, string): The name for the battery level sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. Setting Up Devices diff --git a/components/sensor/integration.rst b/components/sensor/integration.rst index de9dc7f447..d2a2534bf3 100644 --- a/components/sensor/integration.rst +++ b/components/sensor/integration.rst @@ -29,7 +29,6 @@ Configuration variables: ------------------------ - **sensor** (**Required**, :ref:`config-id`): The ID of the sensor to integrate over time. -- **name** (**Required**, string): The name of the integration sensor. - **time_unit** (**Required**, string): The time unit to integrate with, one of ``ms``, ``s``, ``min``, ``h`` or ``d``. - **integration_method** (*Optional*, string): The integration method to use. One of @@ -37,7 +36,6 @@ Configuration variables: - **restore** (*Optional*, boolean): Whether to store the intermediate result on the device so that the value can be restored upon power cycle or reboot. Warning: this option can wear out your flash. Defaults to ``false``. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Sensor `. .. _sensor-integration-reset_action: diff --git a/components/sensor/internal_temperature.rst b/components/sensor/internal_temperature.rst index 066aafecf1..38d8679fd0 100644 --- a/components/sensor/internal_temperature.rst +++ b/components/sensor/internal_temperature.rst @@ -28,10 +28,8 @@ temperature sensor of the ESP32, RP2040 and BK72XX chip. Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the temperature sensor. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Sensor `. See Also diff --git a/components/sensor/jsn_sr04t.rst b/components/sensor/jsn_sr04t.rst index 700701255a..c8f3bcb9f1 100644 --- a/components/sensor/jsn_sr04t.rst +++ b/components/sensor/jsn_sr04t.rst @@ -6,7 +6,7 @@ JSN-SR04T Waterproof Ultrasonic Range Finder :image: jsn-sr04t-v3.jpg :keywords: JSN-SR04T -This sensor allows you to use the JSN-SR04T Waterproof Ultrasonic Range Finder **in Mode 1 and 2** +This sensor allows you to use the JSN-SR04T Waterproof Ultrasonic Range Finder **in Mode 1 and 2** with ESPHome to measure distances. This sensor can measure ranges between 25 centimeters and 600 centimeters with a resolution of 1 millimeter. @@ -24,10 +24,10 @@ Configure the JSN-SR04T for mode 2: JSN-SR04T Waterproof Ultrasonic Range Finder Mode Select Pads. -In mode 1 the module continuously takes measurements approximately every 100mS and outputs the distance on the TX pin at 9600 baud. +In mode 1 the module continuously takes measurements approximately every 100mS and outputs the distance on the TX pin at 9600 baud. In this mode :ref:`sensor-filters` are highly recommended. -In mode 2 the module takes a measurement only when a trigger command of 0x55 is sent to the RX pin on the module. +In mode 2 the module takes a measurement only when a trigger command of 0x55 is sent to the RX pin on the module. The module then outputs the distance on its TX pin. The frequency of the measurements can be set with the **update_interval** option. To use the sensor, first set up an :ref:`uart` with a baud rate of 9600 and connect the sensor to the specified pin. @@ -45,12 +45,11 @@ To use the sensor, first set up an :ref:`uart` with a baud rate of 9600 and conn - platform: "jsn_sr04t" name: "Distance" update_interval: 1s - + Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the sensor. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. Not applicable in mode 1. - **uart_id** (*Optional*, :ref:`config-id`): The ID of the :ref:`UART bus ` you wish to use for this sensor. diff --git a/components/sensor/max31855.rst b/components/sensor/max31855.rst index fea7c71bc0..f7749d9af0 100644 --- a/components/sensor/max31855.rst +++ b/components/sensor/max31855.rst @@ -34,12 +34,13 @@ Connect ``GND`` to ``GND``, ``VCC`` to ``3.3V`` and the other three ``MISO`` (or Configuration variables: ------------------------ -- **name** (**Required**, string): The name for the temperature sensor. - **cs_pin** (**Required**, :ref:`Pin Schema `): The Chip Select pin of the SPI interface. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. -- **reference_temperature** (*Optional*, :ref:`config-id`): Access the internal temperature sensor of the MAX31855. Requires a **name** and/or **id**. +- **reference_temperature** (*Optional*, :ref:`config-id`): Access the internal temperature sensor of the MAX31855. + + - All options from :ref:`Sensor `. + - **spi_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`SPI Component ` if you want to use multiple SPI buses. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Sensor `. See Also diff --git a/components/sensor/max31865.rst b/components/sensor/max31865.rst index 1282ec1b75..343892d602 100644 --- a/components/sensor/max31865.rst +++ b/components/sensor/max31865.rst @@ -46,7 +46,6 @@ to have an :ref:`spi bus ` in your configuration with both **miso_pin** and Configuration variables: ------------------------ -- **name** (**Required**, string): The name for the temperature sensor. - **cs_pin** (**Required**, :ref:`Pin Schema `): The Chip Select pin of the SPI interface. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. - **reference_resistance** (**Required**, float): Reference resistor on the PCB. Adafruit's PT100 (#3328) uses 430 Ω, their PT1000 (#3648) uses 4300 Ω. @@ -54,7 +53,6 @@ Configuration variables: - **mains_filter** (*Optional*, string): The mains power frequency to reject (``50 Hz`` or ``60 Hz``). Defaults to ``60 Hz``. - **rtd_wires** (*Optional*, int): The number of RTD wires. Be sure to solder board jumpers to match! Defaults to ``4``. - **spi_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`SPI Component ` if you want to use multiple SPI buses. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Sensor `. See Also diff --git a/components/sensor/max44009.rst b/components/sensor/max44009.rst index b1c41cb7f1..31e04e1487 100644 --- a/components/sensor/max44009.rst +++ b/components/sensor/max44009.rst @@ -8,8 +8,8 @@ MAX44009 Ambient Light Sensor The ``max44009`` sensor platform allows you to use your MAX44009 (`datasheet `__) -ambient light sensor with ESPHome. This sensor features an ultra-wide 22-bit dynamic range -from 0.045 lux to 188,000 lux. The :ref:`I²C bus ` is required to be set up in your +ambient light sensor with ESPHome. This sensor features an ultra-wide 22-bit dynamic range +from 0.045 lux to 188,000 lux. The :ref:`I²C bus ` is required to be set up in your configuration for this sensor to work. The ``max44009`` sensor can operate in two modes: ``low_power`` (default) and ``continuous``: @@ -28,12 +28,10 @@ The ``max44009`` sensor can operate in two modes: ``low_power`` (default) and `` Configuration variables: ------------------------ -- **name** (**Required**, string): The name for the sensor. - **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x4A``. - **mode** (*Optional*, string): Measurement mode. One of ``auto``, ``low_power``, ``continuous``. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Sensor `. See Also diff --git a/components/sensor/max6675.rst b/components/sensor/max6675.rst index 1eef166200..a965ad8b6a 100644 --- a/components/sensor/max6675.rst +++ b/components/sensor/max6675.rst @@ -42,13 +42,11 @@ Connect ``GND`` to ``GND``, ``VCC`` to ``3.3V`` and the other three ``MISO`` (or Configuration variables: ------------------------ -- **name** (**Required**, string): The name for the temperature sensor. - **cs_pin** (**Required**, :ref:`Pin Schema `): The Chip Select pin of the SPI interface. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. - **spi_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`SPI Component ` if you want to use multiple SPI buses. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Sensor `. See Also diff --git a/components/sensor/max9611.rst b/components/sensor/max9611.rst index 5cfbd5ff5f..dd9e2cca67 100644 --- a/components/sensor/max9611.rst +++ b/components/sensor/max9611.rst @@ -47,23 +47,19 @@ Configuration variables: - **voltage** (*Optional*): The information for the voltage sensor - - **name** (**Required**, string): The name for the voltage sensor. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **current** (*Optional*): The information for the current sensor, scaled by the gain factor and multiplied by voltage - - **name** (**Required**, string): The name for the current sensor. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **power** (*Optional*): The information for the power sensor - - **name** (**Required**, string): The name for the power sensor. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **temperature** (*Optional*): The information for the temperature sensor - - **name** (**Required**, string): The name for the temperature sensor. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **address** (*Optional*, int): Manually specify the I²C address of diff --git a/components/sensor/mcp9600.rst b/components/sensor/mcp9600.rst index 5d5a6a809b..5294470ac6 100644 --- a/components/sensor/mcp9600.rst +++ b/components/sensor/mcp9600.rst @@ -41,16 +41,11 @@ Configuration variables: - **hot_junction** (*Optional*): The information for the Hot Junction temperature sensor. - - **name** (**Required**, string): The name for the temperature - sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **cold_junction** (*Optional*): The information for the Cold Junction temperature sensor. - - **name** (**Required**, string): The name for the temperature sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **thermocouple_type** (*Optional*): Set the thermocouple type. Options are: K, J, T, N, S, E, B and R type thermocouple. Defaults to ``K``. diff --git a/components/sensor/mcp9808.rst b/components/sensor/mcp9808.rst index 6bd23f9405..9162f4addc 100644 --- a/components/sensor/mcp9808.rst +++ b/components/sensor/mcp9808.rst @@ -32,8 +32,6 @@ required to be set up in your configuration for this sensor to work. Configuration variables: ------------------------ -- **name** (**Required**, string): The name for the temperature sensor. -- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x18``. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. - All other options from :ref:`Sensor `. diff --git a/components/sensor/mlx90393.rst b/components/sensor/mlx90393.rst index fb4700e247..643456ab19 100644 --- a/components/sensor/mlx90393.rst +++ b/components/sensor/mlx90393.rst @@ -37,8 +37,6 @@ Configuration variables: - **x_axis** (*Optional*): The information for the x-axis. - - **name** (**Required**, string): The name for the x-axis sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - **resolution** (*Optional*, int): Set resolution. Defaults to ``19BIT``. Must be one of: - ``16BIT`` @@ -50,8 +48,6 @@ Configuration variables: - **y_axis** (*Optional*): The information for the y-axis. - - **name** (**Required**, string): The name for the y-axis sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - **resolution** (*Optional*, int): Set resolution. Defaults to ``19BIT``. Must be one of: - ``16BIT`` @@ -63,8 +59,6 @@ Configuration variables: - **z_axis** (*Optional*): The information for the z-axis. - - **name** (**Required**, string): The name for the z-axis sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - **resolution** (*Optional*, int): Set resolution. Defaults to ``16BIT``. Must be one of: - ``16BIT`` @@ -76,8 +70,6 @@ Configuration variables: - **temperature** (*Optional*): Built-in temperature sensor. - - **name** (**Required**, string): The name for the temperature sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - **oversampling** (*Optional*, int): On-chip oversampling for the temperature sensor. Defaults to ``0``. Must be between ``0`` and ``3``. - All other options from :ref:`Sensor `. diff --git a/components/sensor/modbus_controller.rst b/components/sensor/modbus_controller.rst index a0ae94dae8..4d9d7c1835 100644 --- a/components/sensor/modbus_controller.rst +++ b/components/sensor/modbus_controller.rst @@ -11,8 +11,6 @@ and requires :doc:`/components/modbus_controller` to be configured. Configuration variables: ------------------------ -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **name** (**Required**, string): The name of the sensor. - **register_type** (**Required**): type of the modbus register. - ``coil``: Coils are 1-bit registers (ON/OFF values) that are used to control discrete outputs. They may be read and/or written. Modbus *Function Code 1 (Read Coil Status)* will be used. diff --git a/components/sensor/mpl3115a2.rst b/components/sensor/mpl3115a2.rst index 4333ed9c7c..77dcaa1357 100644 --- a/components/sensor/mpl3115a2.rst +++ b/components/sensor/mpl3115a2.rst @@ -37,21 +37,15 @@ sensor is configured. - **pressure** (*Optional*): The information for the pressure sensor. - - **name** (**Required**, string): The name for the pressure sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **altitude** (*Optional*): The information for the altitude sensor. - - **name** (**Required**, string): The name for the altitude sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **temperature** (*Optional*): The information for the temperature sensor. - - **name** (**Required**, string): The name for the temperature sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x60``. diff --git a/components/sensor/mqtt_subscribe.rst b/components/sensor/mqtt_subscribe.rst index ae8e723e01..0db66d45e1 100644 --- a/components/sensor/mqtt_subscribe.rst +++ b/components/sensor/mqtt_subscribe.rst @@ -26,10 +26,8 @@ text sensor for importing arbitrary text into the ESPHome ecosystem. Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the sensor. - **topic** (**Required**, string): The MQTT topic to listen for numeric messages. - **qos** (*Optional*, int): The MQTT QoS to subscribe with. Defaults to ``0``. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Sensor `. See Also diff --git a/components/sensor/ms5611.rst b/components/sensor/ms5611.rst index 4ef9c05a15..9474bb1efa 100644 --- a/components/sensor/ms5611.rst +++ b/components/sensor/ms5611.rst @@ -39,17 +39,12 @@ Configuration variables: - **pressure** (**Required**): The information for the pressure sensor. - - **name** (**Required**, string): The name for the pressure sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **temperature** (**Required**): The information for the temperature. sensor - - **name** (**Required**, string): The name for the temperature - sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x77``. diff --git a/components/sensor/nextion.rst b/components/sensor/nextion.rst index b5d23af9ba..ff8389c3d1 100644 --- a/components/sensor/nextion.rst +++ b/components/sensor/nextion.rst @@ -54,7 +54,6 @@ See :doc:`/components/display/nextion` for setting up the display Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the sensor. - **nextion_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the Nextion display. - **component_name** (*Optional*, string): Manually specify the name of the Nextion component. - **variable_name** (*Optional*, string): Manually specify the name of the Nextion variable. diff --git a/components/sensor/ntc.rst b/components/sensor/ntc.rst index 5977da1d88..c7b90c78b0 100644 --- a/components/sensor/ntc.rst +++ b/components/sensor/ntc.rst @@ -73,12 +73,10 @@ calibration parameter: Configuration variables: ------------------------ -- **name** (**Required**, string): The name for the sensor. - **sensor** (**Required**, :ref:`config-id`): The sensor to read the resistance values from to convert to temperature readings. - **calibration** (**Required**, float): The calibration parameters of the sensor - see above for more details. -- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. Self-Heating diff --git a/components/sensor/pulse_counter.rst b/components/sensor/pulse_counter.rst index 9486bd4dee..2bf6b07c2b 100644 --- a/components/sensor/pulse_counter.rst +++ b/components/sensor/pulse_counter.rst @@ -28,7 +28,6 @@ Configuration variables ------------------------ - **pin** (**Required**, :ref:`config-pin`): The pin to count pulses on. -- **name** (**Required**, string): The name of the sensor. - **count_mode** (*Optional*): Configure how the counter should behave on a detected rising edge/falling edge. @@ -40,18 +39,12 @@ Configuration variables Defaults to ``DISABLE``. - **use_pcnt** (*Optional*, boolean): Use hardware ``PCNT`` pulse counter. Only supported on ESP32. Defaults to ``true``. - - **internal_filter** (*Optional*, :ref:`config-time`): If a pulse shorter than this time is detected, it’s discarded and no pulse is counted. Defaults to ``13us``. On the ESP32, when using the hardware pulse counter this value can not be higher than ``13us``, for the ESP8266 or with ``use_pcnt: false`` you can use larger intervals too. If you enable this, set up the ``count_mode`` to increase on the falling edge, not leading edge. For S0 pulse meters that are used to meter power consumption 50-100 ms is a reasonable value. - - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. - -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - - **total** (*Optional*): Report the total number of pulses. - - All other options from :ref:`Sensor `. .. note:: diff --git a/components/sensor/pulse_meter.rst b/components/sensor/pulse_meter.rst index 785f299c54..2e999846be 100644 --- a/components/sensor/pulse_meter.rst +++ b/components/sensor/pulse_meter.rst @@ -29,7 +29,6 @@ Configuration variables ------------------------ - **pin** (**Required**, :ref:`config-pin`): The pin to count pulses on. -- **name** (**Required**, string): The name of the sensor. - **internal_filter** (*Optional*, :ref:`config-time`): If a pulse shorter than this time is detected, it is discarded. Defaults to ``13us``. diff --git a/components/sensor/qmp6988.rst b/components/sensor/qmp6988.rst index 8d777dfb4d..de6f54ff5f 100644 --- a/components/sensor/qmp6988.rst +++ b/components/sensor/qmp6988.rst @@ -38,19 +38,14 @@ Configuration variables: - **temperature** (*Optional*): The information for the temperature sensor - - **name** (**Required**, string): The name for the temperature - sensor. - **oversampling** (*Optional*): The oversampling parameter for the temperature sensor. See :ref:`Oversampling Options `. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. - **pressure** (*Optional*): The information for the pressure sensor. - - **name** (**Required**, string): The name for the pressure sensor. - **oversampling** (*Optional*): The oversampling parameter for the temperature sensor. See :ref:`Oversampling Options `. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. - **address** (*Optional*, int): Manually specify the I²C address of @@ -73,9 +68,9 @@ configure this amount. Possible oversampling values: - ``2x`` - ``4x`` - ``8x`` (default) -- ``16x`` -- ``32x`` -- ``64x`` +- ``16x`` +- ``32x`` +- ``64x`` See Also -------- diff --git a/components/sensor/resistance.rst b/components/sensor/resistance.rst index cc6ce039ef..85934b41d2 100644 --- a/components/sensor/resistance.rst +++ b/components/sensor/resistance.rst @@ -60,7 +60,6 @@ Some boards like NodeMCUv2 needs to multiply ADC reading by 3.3 to provide accur Configuration variables: ------------------------ -- **name** (**Required**, string): The name for the sensor. - **sensor** (**Required**, :ref:`config-id`): The sensor to read the voltage values from to convert to resistance readings. - **configuration** (**Required**, string): The type of circuit, one of ``DOWNSTREAM`` or @@ -68,7 +67,6 @@ Configuration variables: - **resistor** (**Required**, float): The value of the resistor with a constant value. - **reference_voltage** (*Optional*, float): The reference voltage. Defaults to ``3.3V``. -- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. See Also diff --git a/components/sensor/rotary_encoder.rst b/components/sensor/rotary_encoder.rst index c5c9aa5e04..c29310843a 100644 --- a/components/sensor/rotary_encoder.rst +++ b/components/sensor/rotary_encoder.rst @@ -55,7 +55,6 @@ Configuration variables: The first pin for determining the step value. Must not be a pin from an external I/O expander. - **pin_b** (**Required**, :ref:`Pin Schema `): The second pin for determining the step value. Must not be a pin from an external I/O expander. -- **name** (**Required**, string): The name of the rotary encoder sensor. - **pin_reset** (*Optional*, :ref:`Pin Schema `): An optional pin that resets the step value. This is useful with rotary encoders that have a third pin. Defaults to no reset pin. @@ -66,7 +65,6 @@ Configuration variables: - ``2`` - ``4`` -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **min_value** (*Optional*, int): The minimum value this rotary encoder will go to, turning the knob further will not decrease the number. Defaults to no minimum. - **max_value** (*Optional*, int): The maximum value this rotary encoder will go to, turning diff --git a/components/sensor/ruuvitag.rst b/components/sensor/ruuvitag.rst index b69d7a3dd4..ee6df690ef 100644 --- a/components/sensor/ruuvitag.rst +++ b/components/sensor/ruuvitag.rst @@ -61,91 +61,57 @@ Configuration variables: device. - **humidity** (*Optional*): The information for the humidity sensor - - **name** (**Required**, string): The name for the humidity sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use - in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **temperature** (*Optional*): The information for the temperature sensor. - - **name** (**Required**, string): The name for the temperature sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use - in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **pressure** (*Optional*): The information for the pressure sensor. - - **name** (**Required**, string): The name for the pressure sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use - in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **acceleration** (*Optional*): The information for the acceleration sensor. - - **name** (**Required**, string): The name for the acceleration sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use - in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **acceleration_x** (*Optional*): The information for the acceleration x sensor. - - **name** (**Required**, string): The name for the acceleration x sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use - in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **acceleration_y** (*Optional*): The information for the acceleration y sensor. - - **name** (**Required**, string): The name for the acceleration y sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use - in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **acceleration_z** (*Optional*): The information for the acceleration z sensor. - - **name** (**Required**, string): The name for the acceleration z sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use - in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **battery_voltage** (*Optional*): The information for the battery voltage sensor. - - **name** (**Required**, string): The name for the battery voltage sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use - in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **tx_power** (*Optional*): The information for the transmit power sensor - - **name** (**Required**, string): The name for the transmit power sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use - in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - Only available if RAWv2 protocol is used. - **movement_counter** (*Optional*): The information for the movement count sensor - - **name** (**Required**, string): The name for the movement count sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use - in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - Only available if RAWv2 protocol is used. - **measurement_sequence_number** (*Optional*): The information for the measurement sequence number sensor - - **name** (**Required**, string): The name for the measurement sequence - number sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use - in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - Only available if RAWv2 protocol is used. Setting Up Devices diff --git a/components/sensor/scd30.rst b/components/sensor/scd30.rst index 4081d8a140..3f52b07272 100644 --- a/components/sensor/scd30.rst +++ b/components/sensor/scd30.rst @@ -36,21 +36,15 @@ Configuration variables: - **co2** (*Optional*): The information for the CO₂ sensor. - - **name** (**Required**, string): The name for the CO₂eq sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **temperature** (*Optional*): The information for the Temperature sensor. - - **name** (**Required**, string): The name for the temperature sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **humidity** (*Optional*): The information for the Humidity sensor. - - **name** (**Required**, string): The name for the humidity sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **temperature_offset** (*Optional*, float): Temperature and humidity offsets may occur when operating the sensor in end-customer @@ -90,7 +84,7 @@ Manual calibration: then: - scd30.force_recalibration_with_reference: value: !lambda 'return id(co2_cal).state;' - + number: - platform: template name: "CO2 calibration value" diff --git a/components/sensor/scd4x.rst b/components/sensor/scd4x.rst index f2d32ecaf7..892e5dea00 100644 --- a/components/sensor/scd4x.rst +++ b/components/sensor/scd4x.rst @@ -31,22 +31,16 @@ Configuration variables: - **co2** (*Optional*): The information for the CO₂ sensor. - - **name** (**Required**, string): The name for the CO₂eq sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **temperature** (*Optional*): The information for the Temperature sensor. - - **name** (**Required**, string): The name for the temperature sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **humidity** (*Optional*): The information for the Humidity sensor. - - **name** (**Required**, string): The name for the humidity sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **temperature_offset** (*Optional*, float): The temperature offset can depend on various factors such as the SCD4x measurement mode, self-heating of close diff --git a/components/sensor/sdp3x.rst b/components/sensor/sdp3x.rst index 8944c1b1b2..27f610ee6b 100644 --- a/components/sensor/sdp3x.rst +++ b/components/sensor/sdp3x.rst @@ -32,8 +32,6 @@ To use the sensor, set up an :ref:`I²C Bus ` and connect the sensor to the Configuration variables: ------------------------ -- **name** (**Required**, string): The name for this sensor. -- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for lambdas/multiple sensors. - **address** (*Optional*, int): The I²C address of the sensor. Defaults to ``0x21``. - **measurement_mode** (*Optional*): The measurement mode of the sensor. Valid options are ``differential_pressure`` and ``mass_flow``. Defaults to ``differential_pressure``. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. diff --git a/components/sensor/sen5x.rst b/components/sensor/sen5x.rst index 560943b415..f8385e079c 100644 --- a/components/sensor/sen5x.rst +++ b/components/sensor/sen5x.rst @@ -66,42 +66,31 @@ Configuration variables: - **pm_1_0** (*Optional*): The information for the **Weight Concentration** sensor for fine particles up to 1μm. Readings in µg/m³. - - **name** (**Required**, string): The name for this sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in automation and lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **pm_2_5** (*Optional*): The information for the **Weight Concentration** sensor for fine particles up to 2.5μm. Readings in µg/m³. - - **name** (**Required**, string): The name for this sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in automation and lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **pm_4_0** (*Optional*): The information for the **Weight Concentration** sensor for coarse particles up to 4μm. Readings in µg/m³. - - **name** (**Required**, string): The name for this sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in automation and lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **pm_10_0** (*Optional*): The information for the **Weight Concentration** sensor for coarse particles up to 10μm. Readings in µg/m³. - - **name** (**Required**, string): The name for this sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in automation and lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **auto_cleaning_interval** (*Optional*): Reads/Writes the interval in seconds of the periodic fan-cleaning. - **temperature** (*Optional*): Temperature.Note only available with Sen54 or Sen55. The sensor will be ignored on unsupported models. - - **name** (**Required**, string): The name of the sensor. - - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **humidity** (*Optional*): Relative Humidity. Note only available with Sen54 or Sen55. The sensor will be ignored on unsupported models. -- **voc** (*Optional*): VOC Index. Note only available with Sen54 or Sen55. The sensor will be ignored on unsupported models. + - All options from :ref:`Sensor `. - - **name** (**Required**, string): The name of the sensor. - - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. +- **voc** (*Optional*): VOC Index. Note only available with Sen54 or Sen55. The sensor will be ignored on unsupported models. - **algorithm_tuning** (*Optional*): The VOC algorithm can be customized by tuning 6 different parameters. For more details see `Engineering Guidelines for SEN5x `__ @@ -116,9 +105,6 @@ Configuration variables: - **nox** (*Optional*): NOx Index. Note: Only available with Sen55. The sensor will be ignored on unsupported models. - - **name** (**Required**, string): The name of the sensor. - - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - - **algorithm_tuning** (*Optional*): The NOx algorithm can be customized by tuning 5 different parameters.For more details see `Engineering Guidelines for SEN5x `__ - **index_offset** (*Optional*): NOx index representing typical (average) conditions. Allowed values are in range 1..250. The default value is 100. diff --git a/components/sensor/senseair.rst b/components/sensor/senseair.rst index 11540f1f4a..087cb200ec 100644 --- a/components/sensor/senseair.rst +++ b/components/sensor/senseair.rst @@ -42,9 +42,7 @@ Configuration variables: - **co2** (**Required**): The CO_2 data from the sensor in parts per million (ppm). - - **name** (**Required**, string): The name for the CO_2 sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. diff --git a/components/sensor/sgp30.rst b/components/sensor/sgp30.rst index 341da383b1..6651236835 100644 --- a/components/sensor/sgp30.rst +++ b/components/sensor/sgp30.rst @@ -33,15 +33,11 @@ Configuration variables: - **eco2** (**Required**): The information for the CO₂eq. sensor. - - **name** (**Required**, string): The name for the CO₂eq sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **tvoc** (**Required**): The information for the total Volatile Organic Compounds sensor. - - **name** (**Required**, string): The name for the TVOC sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **store_baseline** (*Optional*, boolean): Store the sensor baselines persistently when calculated or updated. Defaults to yes. @@ -62,15 +58,11 @@ Advanced: - **eco2_baseline** (*Optional*): The information for the CO₂eq. baseline value sensor. Baseline value is published in decimals. - - **name** (**Required**, string): The name for the CO₂eq baseline value sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **tvoc_baseline** (*Optional*): The information for the TVOC baseline value sensor. Baseline value is published in decimals. - - **name** (**Required**, string): The name for the TVOC baseline value sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **compensation** (*Optional*): The block containing sensors used for compensation. Both values must be supplied in order to be able to generate the absolute humidity to be reported to the sensor. diff --git a/components/sensor/sgp4x.rst b/components/sensor/sgp4x.rst index 726d0f40e8..f73612c652 100644 --- a/components/sensor/sgp4x.rst +++ b/components/sensor/sgp4x.rst @@ -39,8 +39,6 @@ Configuration variables: - **voc** (*Optional*): VOC Index - - **name** (**Required**, string): The name of the sensor. - - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **algorithm_tuning** (*Optional*): The VOC algorithm can be customized by tuning 6 different parameters. For more details see `Engineering Guidelines for SEN5x `__ - **index_offset** (*Optional*): VOC index representing typical (average) conditions. Allowed values are in range 1..250. The default value is 100. @@ -55,8 +53,6 @@ Configuration variables: - **nox** (*Optional*): NOx Index. Only available with SGP41. If a SGP40 sensor is detected this sensor will be ignored - - **name** (**Required**, string): The name of the sensor. - - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **algorithm_tuning** (*Optional*): The NOx algorithm can be customized by tuning 5 different parameters.For more details see `Engineering Guidelines for SEN5x `__ - **index_offset** (*Optional*): NOx index representing typical (average) conditions. Allowed values are in range 1..250. The default value is 100. diff --git a/components/sensor/sht3xd.rst b/components/sensor/sht3xd.rst index 73a968f495..beffd66925 100644 --- a/components/sensor/sht3xd.rst +++ b/components/sensor/sht3xd.rst @@ -35,15 +35,11 @@ Configuration variables: - **temperature** (*Optional*): The information for the temperature sensor. - - **name** (**Required**, string): The name for the temperature sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **humidity** (*Optional*): The information for the humidity sensor. - - **name** (**Required**, string): The name for the humidity sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x44``. For SHT3x, an alternate address can be ``0x45`` while SHT85 supports only address ``0x44`` diff --git a/components/sensor/sht4x.rst b/components/sensor/sht4x.rst index 4cb37c1b29..350fde2315 100644 --- a/components/sensor/sht4x.rst +++ b/components/sensor/sht4x.rst @@ -30,15 +30,11 @@ Configuration variables: - **temperature** (*Optional*): Temperature. - - **name** (**Required**, string): The name of the sensor. - - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **humidity** (*Optional*): Relative Humidity. - - **name** (**Required**, string): The name of the sensor. - - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **precision** (*Optional*, string): The measurement precision, either ``High``, ``Med`` or ``Low``. Default is ``High``. - **heater_max_duty** (*Optional*, float): The maximum duty cycle of the heater (limited to ``0.05``). Default is ``0.0``, i.e. heater off. diff --git a/components/sensor/shtcx.rst b/components/sensor/shtcx.rst index a5fce79eb1..d029d19ad9 100644 --- a/components/sensor/shtcx.rst +++ b/components/sensor/shtcx.rst @@ -37,15 +37,11 @@ Configuration variables: - **temperature** (**Required**): The information for the temperature sensor. - - **name** (**Required**, string): The name for the temperature sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **humidity** (**Required**): The information for the humidity sensor. - - **name** (**Required**, string): The name for the humidity sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x70``. diff --git a/components/sensor/sm300d2.rst b/components/sensor/sm300d2.rst index 1e0ac5adef..ab88174618 100644 --- a/components/sensor/sm300d2.rst +++ b/components/sensor/sm300d2.rst @@ -64,45 +64,31 @@ Configuration variables: - **co2** (**Required**): The information for the CO₂ sensor. Readings in parts per million (ppm). - - **name** (**Required**, string): The name of the CO₂ sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **formaldehyde** (**Required**): The information for the formaldehyde sensor. Readings in µg/m³. - - **name** (**Required**, string): The name of the formaldehyde sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **tvoc** (**Required**): The information for the total volatile organic compounds (TVOC) sensor. Readings in µg/m³. - - **name** (**Required**, string): The name of the TVOC sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **pm_2_5** (**Required**): The information for the **Weight Concentration** sensor for fine particles up to 2.5μm. Readings in µg/m³. - - **name** (**Required**, string): The name of the PM2.5 sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **pm_10_0** (**Required**): The information for the **Weight Concentration** sensor for coarse particles up to 10μm. Readings in µg/m³. - - **name** (**Required**, string): The name of the PM10 sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **temperature** (**Required**): The information for the temperature sensor. Readings in degrees celsius (°C). - - **name** (**Required**, string): The name of the temperature sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **humidity** (**Required**): The information for the relative humidity sensor. Readings in %. - - **name** (**Required**, string): The name of the humidity sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. @@ -129,7 +115,7 @@ Configuration variables: to connect the UART ``5V`` pin to the ESP's ``VIN`` and then power everything through either the LCD module or the ESP module, with a single power cable. If you choose to power the ESP separately from the sensor board, leave the UART ``5V`` pin unconnected. - + See Also -------- diff --git a/components/sensor/smt100.rst b/components/sensor/smt100.rst index cfabbd7577..4856a38290 100644 --- a/components/sensor/smt100.rst +++ b/components/sensor/smt100.rst @@ -46,28 +46,23 @@ Configuration variables: - **counts** (*Optional*): Raw measurement data from the sensor electronics (dimensionless quantity). Higher counts mean less moisture. May be used for material specific calibrations. - - **name** (**Required**): Sensor name. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **dielectric_constant** (*Optional*): Dielectric coefficient or permittivity of the material to be measured (dimensionless quantity). Higher permittivity means higher water content. May be used for material specific calibration. - - **name** (**Required**): Sensor name. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **temperature** (*Optional*): Soil temperature in degrees Celsius. Please note that the temperature sensor is inside the black sensor enclosure and requires some time to equilibrate with the soil temperature. - - **name** (**Required**): Sensor name. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **moisture** (*Optional*): Soil moisture (volumetric water content in %). - - **name** (**Required**): Sensor name. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **voltage** (*Optional*): Supply voltage of the sensor in Volt. - - **name** (**Required**): Sensor name. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **uart_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`UART Component ` if you want to use multiple UART buses. diff --git a/components/sensor/sps30.rst b/components/sensor/sps30.rst index bfb0e96409..18d4148a7c 100644 --- a/components/sensor/sps30.rst +++ b/components/sensor/sps30.rst @@ -59,63 +59,43 @@ Configuration variables: - **pm_1_0** (*Optional*): The information for the **Weight Concentration** sensor for fine particles up to 1μm. Readings in µg/m³. - - **name** (**Required**, string): The name for this sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in automation and lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **pm_2_5** (*Optional*): The information for the **Weight Concentration** sensor for fine particles up to 2.5μm. Readings in µg/m³. - - **name** (**Required**, string): The name for this sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in automation and lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **pm_4_0** (*Optional*): The information for the **Weight Concentration** sensor for coarse particles up to 4μm. Readings in µg/m³. - - **name** (**Required**, string): The name for this sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in automation and lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **pm_10_0** (*Optional*): The information for the **Weight Concentration** sensor for coarse particles up to 10μm. Readings in µg/m³. - - **name** (**Required**, string): The name for this sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in automation and lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **pmc_0_5** (*Optional*): The information for the **Number Concentration** sensor for ultrafine particles up to 0.5μm. Readings in particles/cm³. - - **name** (**Required**, string): The name for this sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in automation and lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **pmc_1_0** (*Optional*): The information for the **Number Concentration** sensor for fine particles up to 1μm. Readings in particles/cm³. - - **name** (**Required**, string): The name for this sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in automation and lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **pmc_2_5** (*Optional*): The information for the **Number Concentration** sensor for fine particles up to 2.5μm. Readings in particles/cm³. - - **name** (**Required**, string): The name for this sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in automation and lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **pmc_4_0** (*Optional*): The information for the **Number Concentration** sensor for coarse particles up to 4μm. Readings in particles/cm³. - - **name** (**Required**, string): The name for this sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in automation and lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **pmc_10_0** (*Optional*): The information for the **Number Concentration** sensor for coarse particles up to 10μm. Readings in particles/cm³. - - **name** (**Required**, string): The name for this sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in automation and lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **pm_size** (*Optional*): Typical particle size in μm. - - **name** (**Required**, string): The name for this sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in automation and lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **auto_cleaning_interval** (*Optional*): The interval in seconds of the periodic fan-cleaning. diff --git a/components/sensor/sts3x.rst b/components/sensor/sts3x.rst index b3f1b84be3..0dad70e74d 100644 --- a/components/sensor/sts3x.rst +++ b/components/sensor/sts3x.rst @@ -27,12 +27,10 @@ required to be set up in your configuration for this sensor to work. Configuration variables: ------------------------ -- **name** (**Required**, string): The name for the temperature sensor. - **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x4A``. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. -- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. See Also diff --git a/components/sensor/tee501.rst b/components/sensor/tee501.rst index 6901247f32..94a974b2f3 100644 --- a/components/sensor/tee501.rst +++ b/components/sensor/tee501.rst @@ -27,12 +27,10 @@ required to be set up in your configuration for this sensor to work. Configuration variables: ------------------------ -- **name** (**Required**, string): The name for the temperature sensor. - **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x48``. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. -- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. See Also diff --git a/components/sensor/template.rst b/components/sensor/template.rst index 8c971a0661..60ca1a3901 100644 --- a/components/sensor/template.rst +++ b/components/sensor/template.rst @@ -32,12 +32,10 @@ Possible return values for the lambda: Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the sensor. - **lambda** (*Optional*, :ref:`lambda `): Lambda to be evaluated every update interval to get the new value of the sensor - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Set to ``never`` to disable updates. Defaults to ``60s``. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Sensor `. .. _sensor-template-publish_action: diff --git a/components/sensor/tmp102.rst b/components/sensor/tmp102.rst index 96f0e1ac5d..c8c9f4a0d4 100644 --- a/components/sensor/tmp102.rst +++ b/components/sensor/tmp102.rst @@ -32,11 +32,9 @@ configuration for this sensor to work. Configuration variables: ------------------------ -- **name** (**Required**, string): The name for the temperature sensor. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. - **address** (*Optional*, int): The I²C address of the sensor. Defaults to ``0x48``. See :ref:`I²C Addresses ` for more information. -- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. See Also diff --git a/components/sensor/tmp1075.rst b/components/sensor/tmp1075.rst index d44c482df5..6702a81ff3 100644 --- a/components/sensor/tmp1075.rst +++ b/components/sensor/tmp1075.rst @@ -45,8 +45,6 @@ to the specified pins. Configuration variables: ------------------------ -- **name** (**Required**, string): The name for the temperature sensor. -- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for lambdas/multiple sensors. - **address** (*Optional*, int): The I²C address of the sensor. See :ref:`I²C Addresses ` for more information. Defaults to ``0x48``. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check @@ -57,12 +55,13 @@ Configuration variables: checks the sensor. Possible values are ``27.5ms``, ``55ms``, ``110ms``, and ``220ms``. Defaults to ``27.5ms``. - **alert** (*Optional*): Configure the alert pin behaviour. - + - **function** (*Optional*, enum): Function of the alert pin, either ``comparator`` or ``interrupt``. Defaults to ``comparator``. - **polarity** (*Optional*, enum): Polarity of the alert pin, either ``active_high`` or ``active_low``. Defaults to ``active_high``. - **limit_low** (*Optional*, int): Lower temperature limit, in °C. Defaults to ``-128`` (the lowest possible limit value). - **limit_high** (*Optional*, int): Higher temperature limit, in °C. Defaults to ``127.9375`` (the highest possible limit value). - **fault_count** (*Optional*, int): Number of measurements. required for the alert pin to act. Must be between ``1`` and ``4``, inclusive. Defaults to ``1``. +- All other options from :ref:`Sensor `. .. _tmp1075_i2c_addresses: diff --git a/components/sensor/tmp117.rst b/components/sensor/tmp117.rst index 749df70a4e..42c78ad092 100644 --- a/components/sensor/tmp117.rst +++ b/components/sensor/tmp117.rst @@ -37,11 +37,10 @@ If accuracy is a must, see section 8.2.2.2 of the `datasheet ` for more information. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. The sensor component sets the maximum possible averaging in the sensor based on this. +- All other options from :ref:`Sensor `. .. _tmp117_i2c_addresses: diff --git a/components/sensor/tof10120.rst b/components/sensor/tof10120.rst index 9b7a7f748a..50bb564cba 100644 --- a/components/sensor/tof10120.rst +++ b/components/sensor/tof10120.rst @@ -37,11 +37,9 @@ required to be set up in your configuration for this sensor to work. Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the sensor. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. - **address** (*Optional*, int): Manually specify the I^2C address of the sensor. Defaults to ``0x52``. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Sensor `. See Also diff --git a/components/sensor/total_daily_energy.rst b/components/sensor/total_daily_energy.rst index 3fcd895817..16013bf411 100644 --- a/components/sensor/total_daily_energy.rst +++ b/components/sensor/total_daily_energy.rst @@ -43,8 +43,6 @@ Configuration variables: - **power_id** (**Required**, :ref:`config-id`): The ID of the power sensor to integrate over time. -- **name** (**Required**, string): The name of the sensor. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **restore** (*Optional*, boolean): Whether to store the intermediate result on the device so that the value can be restored upon power cycle or reboot. Defaults to ``true``. diff --git a/components/sensor/tsl2561.rst b/components/sensor/tsl2561.rst index 9e88a8ae0c..1c0afbaf94 100644 --- a/components/sensor/tsl2561.rst +++ b/components/sensor/tsl2561.rst @@ -36,7 +36,6 @@ your configuration for this sensor to work. Configuration variables: ------------------------ -- **name** (**Required**, string): The name for the sensor. - **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x39``. - **integration_time** (*Optional*, :ref:`config-time`): The time the sensor will take for each measurement. Longer means more accurate values. One of @@ -48,7 +47,6 @@ Configuration variables: package. Defaults to ``false``. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Sensor `. See Also diff --git a/components/sensor/tsl2591.rst b/components/sensor/tsl2591.rst index a7df0e95e6..e5f97f1ee6 100644 --- a/components/sensor/tsl2591.rst +++ b/components/sensor/tsl2591.rst @@ -154,28 +154,23 @@ Each configured sensor is reported separately on each ``update_interval``. - **full_spectrum** (*Optional*): The reading for the full spectrum sensor. - - **name** (**Required**, string): The name for the sensor. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **infrared** (*Optional*): The reading for the infrared sensor. - - **name** (**Required**, string): The name for the sensor. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **visible** (*Optional*): The reading for visible light. - - **name** (**Required**, string): The name for the sensor. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **calculated_lux** (*Optional*): The value of the calculated lux. - - **name** (**Required**, string): The name for the sensor. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **actual_gain** (*Optional*): The value of gain used for reported values. Particularly useful when gain is set to "auto". - - **name** (**Required**, string): The name for the sensor. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. Power save mode ............... diff --git a/components/sensor/tuya.rst b/components/sensor/tuya.rst index da036ae6be..470db3c64f 100644 --- a/components/sensor/tuya.rst +++ b/components/sensor/tuya.rst @@ -35,8 +35,6 @@ Based on this, you can create the sensor as follows: Configuration variables: ------------------------ -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **name** (**Required**, string): The name of the sensor. - **sensor_datapoint** (**Required**, int): The datapoint id number of the sensor. - All other options from :ref:`Sensor `. diff --git a/components/sensor/ultrasonic.rst b/components/sensor/ultrasonic.rst index 0fc25fa343..bf36bf2e15 100644 --- a/components/sensor/ultrasonic.rst +++ b/components/sensor/ultrasonic.rst @@ -46,7 +46,6 @@ Configuration variables: periodically send the trigger pulse to. - **echo_pin** (**Required**, :ref:`Pin Schema `): The input pin on which to wait for the echo. -- **name** (**Required**, string): The name of the sensor. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. - All other options from :ref:`Sensor `. diff --git a/components/sensor/veml7700.rst b/components/sensor/veml7700.rst index cacb844ffa..fe92a0099f 100644 --- a/components/sensor/veml7700.rst +++ b/components/sensor/veml7700.rst @@ -7,11 +7,11 @@ VEML7700 and VEML6030 Ambient Light Sensors :keywords: VEML7700, VEML6300 The ``veml7700`` sensor platform allows you to use the Vishay VEML7700 and VEML6030 ambient light sensors with ESPHome. -Communication with the device is over :ref:`I²C `, which must be present in your configuration. VEML7700 and VEML6030 -are basically the same but in different packages. The VEML7700 uses a fixed address of ``0x10``, while the smaller VEML6030 +Communication with the device is over :ref:`I²C `, which must be present in your configuration. VEML7700 and VEML6030 +are basically the same but in different packages. The VEML7700 uses a fixed address of ``0x10``, while the smaller VEML6030 can be configured to use either ``0x10`` or ``0x48``. -The VEML 7700/6030 devices are available on breakout boards from a number of vendors including `Adafruit`_, `SparkFun`_, +The VEML 7700/6030 devices are available on breakout boards from a number of vendors including `Adafruit`_, `SparkFun`_, `DFRobot`_, and others. .. _Adafruit: http://www.adafruit.com/products/4162 @@ -20,7 +20,7 @@ The VEML 7700/6030 devices are available on breakout boards from a number of ven .. figure:: images/veml7700-full.jpg - :align: center + :align: center :width: 70.0% VEML7700 Ambient Light Sensor on a board and standalone sensors. @@ -33,7 +33,7 @@ The VEML 7700/6030 devices are available on breakout boards from a number of ven The sensor is a high accuracy ambient light digital 16-bit resolution sensor with dynamic range from 0 lux to about 120,000 lux. Its wide range of measurements is enabled by four configurable *gain* levels and six different *integration time* options. -Higher gain values are typically used for lower light conditions. +Higher gain values are typically used for lower light conditions. The sensor has two photodiodes with different spectral response represented by two channels: an *ALS* channel and a *WHITE* channel. The *ALS*, or *Ambient light* channel follows a so-called human eye curve very closely. The *WHITE* channel covers a much wider wavelength/spectrum, capturing quite a lot of near-infrared radiance. @@ -50,12 +50,12 @@ taking several measurements. To do so, it follows a process recommended by the Should you desire to manually control those parameters - please note that: -- Gain levels of 1/8 and 1/4 shall be used in most cases. +- Gain levels of 1/8 and 1/4 shall be used in most cases. - Gain levels of 1 an 2 are only intended to be used in low light conditions < 100 lux. For very high illuminations it shows high non-linearity. -- In the range of 0 lux - 1000 lux the sensor measurements are stricly linear for Gain 1/4 and 1/8, after 1000 lux it shows non-linearity. +- In the range of 0 lux - 1000 lux the sensor measurements are stricly linear for Gain 1/4 and 1/8, after 1000 lux it shows non-linearity. -A lux compensation formula is used to get better readings in bright conditions. +A lux compensation formula is used to get better readings in bright conditions. However, it gives quite high error in very bright direct sunlight (instead of 100-120 kilolux it might give 150-200k+). This Wikipedia `article `__ has a table of some lux values for comparison. @@ -63,9 +63,9 @@ This Wikipedia `article `__ has a table of so Automatic measurement mode -------------------------- -In automatic measurement mode the component starts from Gain 1/8 and 100 ms (*default*). +In automatic measurement mode the component starts from Gain 1/8 and 100 ms (*default*). -- If illuminance is higher than 46 lx (100 counts) it gradually reduces integration time to get good reading (best in range 100 - 10,000 counts). +- If illuminance is higher than 46 lx (100 counts) it gradually reduces integration time to get good reading (best in range 100 - 10,000 counts). - In case of low illuminance (less than 46 lx) it tries to gradually increase gain and only then increase integration time. Please note, that in low light conditions measurement process might take several seconds due to long exposure periods and sensor reconfigurations. @@ -119,11 +119,11 @@ Example configuration - platform: veml7700 address: 0x10 update_interval: 60s - + # short variant of sensor definition: ambient_light: "Ambient light" # longer variant of sensor definition: - actual_gain: + actual_gain: name: "Actual gain" @@ -134,24 +134,24 @@ Configuration variables: - **integration_time** (*Optional*, :ref:`config-time`): The amount of time the sensor is exposed. Valid values are ``25ms``, ``50ms``, ``100ms`` *(default)*, ``200ms``, ``400ms``, ``800ms``. *In automatic mode it sets starting value*. -- **gain** (*Optional*, string): The gain the device will use for the internal ADC. Valid values are +- **gain** (*Optional*, string): The gain the device will use for the internal ADC. Valid values are ``1/8x`` *(default)*, ``1/4x``, ``1x``, ``2x``. Higher values are better in low-light conditions. *In automatic mode it sets starting gain value*. - **lux_compensation** (*Optional*, boolean): Lux compensation formula is used as per manufacturer. Defaults to ``True``. -- **glass_attenuation_factor** (*Optional*): The attenuation factor of glass if it's behind some glass +- **glass_attenuation_factor** (*Optional*): The attenuation factor of glass if it's behind some glass or plastic facia. Default is ``1.0`` means ``100%`` transmissivity. ``2`` means ``50%`` transmissivity etc. - **update_interval** (*Optional*, :ref:`config-time`): The interval for checking the sensors. Defaults to ``60s``. -- All other options for I²C devices described at :ref:`I²C Bus `. +- All other options for I²C devices described at :ref:`I²C Bus `. The sensor supports bus modes "standard" and "fast": 10 kHz to 400 kHz. Sensors ....... You can configure all or any subset of the sensors described earlier. -Each configured sensor is reported separately on each ``update_interval``. **name** (**Required**, string) is required for -every sensor. All other options from :ref:`Sensor `. +Each configured sensor is reported separately on each ``update_interval``. +All options from :ref:`Sensor ` are supported. However, if you don't need any other options, you can just use shorthands like this: ``ambient_light: Ambient light``. diff --git a/components/sensor/wifi_signal.rst b/components/sensor/wifi_signal.rst index 63b8ff905a..54933f64a2 100644 --- a/components/sensor/wifi_signal.rst +++ b/components/sensor/wifi_signal.rst @@ -34,7 +34,7 @@ To additionally display signal strength in percentage use the :ref:`copy-sensor` id: wifi_signal_db update_interval: 60s entity_category: "diagnostic" - + - platform: copy # Reports the WiFi signal strength in % source_id: wifi_signal_db name: "WiFi Signal Percent" @@ -47,10 +47,8 @@ To additionally display signal strength in percentage use the :ref:`copy-sensor` Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the WiFi signal sensor. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Sensor `. .. warning:: diff --git a/components/sensor/xiaomi_ble.rst b/components/sensor/xiaomi_ble.rst index cf88a30bf3..6a750dfe09 100644 --- a/components/sensor/xiaomi_ble.rst +++ b/components/sensor/xiaomi_ble.rst @@ -539,7 +539,7 @@ Required: - **mac_address** (MAC Address): The MAC address of the device. - **bindkey** (string, 32 characters, case insensitive): The key to decrypt the BLE advertisements for encrypted sensor types -Optional with **name**, **id** (:ref:`config-id`) and all other options from :ref:`Sensor `: +All options from :ref:`Sensor ` are supported for: - **temperature** - **humidity** diff --git a/components/sensor/xiaomi_miscale.rst b/components/sensor/xiaomi_miscale.rst index 61dbba5aba..4860035b0c 100644 --- a/components/sensor/xiaomi_miscale.rst +++ b/components/sensor/xiaomi_miscale.rst @@ -38,13 +38,11 @@ Configuration variables: - **mac_address** (**Required**, MAC Address): The MAC address of the scale. - **weight** (*Optional*): The information for the weight sensor. - - **name** (**Required**, string): The name for the weight sensor. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **impedance** (*Optional*): The information for the impedance sensor. **Only available on MiScale2** - - **name** (**Required**, string): The name for the impedance sensor. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **clear_impedance** (*Optional*): Clear the impedance information if a weight reading without impedance is received. Defaults to ``false``. **Only available on MiScale2** diff --git a/components/sensor/zyaura.rst b/components/sensor/zyaura.rst index 1f7f81619f..ee6d9441fc 100644 --- a/components/sensor/zyaura.rst +++ b/components/sensor/zyaura.rst @@ -46,21 +46,15 @@ Configuration variables: - **data_pin** (**Required**, :ref:`config-pin`): The pin where the data bus is connected. - **co2** (*Optional*): The information for the CO2 sensor. - - **name** (**Required**, string): The name for the CO2 sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **temperature** (*Optional*): The information for the temperature sensor. - - **name** (**Required**, string): The name for the temperature sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **humidity** (*Optional*): The information for the humidity sensor - - **name** (**Required**, string): The name for the humidity sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. From 7d4690f3625261e819e72a2abbe575691475c53e Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 14 Aug 2024 14:33:14 +1200 Subject: [PATCH 135/173] [select] Tidy up name/id (#4149) --- components/select/index.rst | 3 ++- components/select/modbus_controller.rst | 4 +--- components/select/template.rst | 2 -- components/select/tuya.rst | 2 -- 4 files changed, 3 insertions(+), 8 deletions(-) diff --git a/components/select/index.rst b/components/select/index.rst index 5c05a65b0e..688f4132bc 100644 --- a/components/select/index.rst +++ b/components/select/index.rst @@ -30,7 +30,8 @@ All selects in ESPHome have a name and an optional icon. Configuration variables: -- **name** (**Required**, string): The name for the select. +- **id** (*Optional*, string): Manually specify the ID for code generation. At least one of **id** and **name** must be specified. +- **name** (*Optional*, string): The name for the select. At least one of **id** and **name** must be specified. .. note:: diff --git a/components/select/modbus_controller.rst b/components/select/modbus_controller.rst index 1c90d85266..76cfa56e86 100644 --- a/components/select/modbus_controller.rst +++ b/components/select/modbus_controller.rst @@ -10,7 +10,6 @@ registers. Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the Select. - **address** (**Required**, int): The start address of the first or only register of the Select (can be decimal or hexadecimal). - **optionsmap** (**Required**, Map[str, int]): Provide a mapping from options (str) of @@ -38,7 +37,6 @@ Configuration variables: - **force_new_range** (*Optional*, boolean): If possible sensors with sequential addresses are grouped together and requested in one range. Setting this to ``true`` enforces the start of a new range at that address. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **lambda** (*Optional*, :ref:`lambda `): Lambda to be evaluated every update interval to get the current option of the select. @@ -57,7 +55,7 @@ Configuration variables: - **write_lambda** (*Optional*, :ref:`lambda `): Lambda to be evaluated on every update of the Sensor, before the new value is written to the modbus registers. -- **use_write_multiple** (*Optional*, boolean): By default the modbus command *Function Code 6 (Preset Single Registers)* +- **use_write_multiple** (*Optional*, boolean): By default the modbus command *Function Code 6 (Preset Single Registers)* is used for setting the holding register if only one register is set. If your device only supports *Function Code 16 (Preset Multiple Registers)* set this option to ``true``. - **optimistic** (*Optional*, boolean): Whether to operate in optimistic mode - when in this mode, any command sent to the Modbus Select will immediately update the reported state. Defaults diff --git a/components/select/template.rst b/components/select/template.rst index 39f544a43e..a349358f21 100644 --- a/components/select/template.rst +++ b/components/select/template.rst @@ -25,7 +25,6 @@ using :ref:`lambdas `. Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the Select. - **options** (**Required**, list): The list of options this Select has. - **lambda** (*Optional*, :ref:`lambda `): Lambda to be evaluated every update interval to get the current option of the select. @@ -42,7 +41,6 @@ Configuration variables: - **initial_option** (*Optional*, string): The option to set the option to on setup if not restored with ``restore_value``. Cannot be used with ``lambda``. Defaults to the first option in the ``options`` list. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Select `. .. note:: diff --git a/components/select/tuya.rst b/components/select/tuya.rst index 1b0b9d5e3b..456d70b191 100644 --- a/components/select/tuya.rst +++ b/components/select/tuya.rst @@ -49,8 +49,6 @@ Based on this, you can create the select as follows: Configuration variables: ------------------------ -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **name** (**Required**, string): The name of the switch. - **enum_datapoint** (**Required**, int): The enum datapoint id number for the select. - **options** (**Required**, Map[int, str]): Provide a mapping from values (int) of this Select to options (str) of the *enum_datapoint* and vice versa. All options and From 2d2971af576f0508f685fb9aca9617da5317c971 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 14 Aug 2024 14:34:33 +1200 Subject: [PATCH 136/173] [number] Tidy up name/id (#4148) --- components/number/index.rst | 3 ++- components/number/modbus_controller.rst | 2 -- components/number/template.rst | 2 -- components/number/tuya.rst | 2 -- 4 files changed, 2 insertions(+), 7 deletions(-) diff --git a/components/number/index.rst b/components/number/index.rst index 82ba8e3361..117c170e25 100644 --- a/components/number/index.rst +++ b/components/number/index.rst @@ -30,7 +30,8 @@ All numbers in ESPHome have a name and an optional icon. Configuration variables: -- **name** (**Required**, string): The name for the number. +- **id** (*Optional*, string): Manually specify the ID for code generation. At least one of **id** and **name** must be specified. +- **name** (*Optional*, string): The name for the number. At least one of **id** and **name** must be specified. .. note:: diff --git a/components/number/modbus_controller.rst b/components/number/modbus_controller.rst index 3c5e2042ba..f43b9c883d 100644 --- a/components/number/modbus_controller.rst +++ b/components/number/modbus_controller.rst @@ -10,8 +10,6 @@ When the Number is updated a modbus write command is created sent to the device. Configuration variables: ------------------------ -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **name** (**Required**, string): The name of the sensor. - **address** (**Required**, int): start address of the first register in a range (can be decimal or hexadecimal). - **value_type** (**Required**): datatype of the modbus register data. The default data type for modbus is a 16 bit integer in big endian format (MSB first): diff --git a/components/number/template.rst b/components/number/template.rst index 13cbef2f79..62b52799e3 100644 --- a/components/number/template.rst +++ b/components/number/template.rst @@ -22,7 +22,6 @@ using :ref:`lambdas `. Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the number. - **min_value** (**Required**, float): The minimum value this number can be. - **max_value** (**Required**, float): The maximum value this number can be. - **step** (**Required**, float): The granularity with which the number can be set. @@ -41,7 +40,6 @@ Configuration variables: - **initial_value** (*Optional*, float): The value to set the state to on setup if not restored with ``restore_value``. Cannot be used with ``lambda``. Defaults to ``min_value``. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Number `. ``number.set`` Action diff --git a/components/number/tuya.rst b/components/number/tuya.rst index 8db9bdf5cf..bf05ac960f 100644 --- a/components/number/tuya.rst +++ b/components/number/tuya.rst @@ -64,8 +64,6 @@ For instance, assume we have a pH sensor that reads from 0.00 to 15.00 with a sc Configuration variables: ------------------------ -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **name** (**Required**, string): The name of the switch. - **number_datapoint** (**Required**, int): The datapoint id number of the number. - **min_value** (**Required**, float): The minimum value this number can be. - **max_value** (**Required**, float): The maximum value this number can be. From 5e53c6fed8b0bc6914644b095d2e134480c40d52 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 14 Aug 2024 14:38:05 +1200 Subject: [PATCH 137/173] [text_sensor] Tidy up name/id (#4152) --- components/text_sensor/ble_client.rst | 1 - components/text_sensor/ble_scanner.rst | 3 +-- components/text_sensor/homeassistant.rst | 4 +--- components/text_sensor/index.rst | 3 ++- components/text_sensor/modbus_controller.rst | 4 +--- components/text_sensor/mqtt_subscribe.rst | 2 -- components/text_sensor/nextion.rst | 1 - components/text_sensor/template.rst | 2 -- components/text_sensor/tuya.rst | 2 -- components/text_sensor/version.rst | 4 +--- 10 files changed, 6 insertions(+), 20 deletions(-) diff --git a/components/text_sensor/ble_client.rst b/components/text_sensor/ble_client.rst index 1ea20be7cd..2f45e799a6 100644 --- a/components/text_sensor/ble_client.rst +++ b/components/text_sensor/ble_client.rst @@ -33,7 +33,6 @@ Configuration variables: - **service_uuid** (**Required**, UUID): UUID of the service on the device. - **characteristic_uuid** (**Required**, UUID): UUID of the service's characteristic to query. - **descriptor_uuid** (*Optional*, UUID): UUID of the characteristic's descriptor to query. -- **id** (*Optional*, :ref:`config-id`): The ID to use for code generation, and for reference by dependent components. - **notify** (*Optional*, boolean): Instruct the server to send notifications for this characteristic. Defaults to ``false``. - **update_interval** (*Optional*, :ref:`config-time`): The interval to poll the device. Defaults to ``60s``. diff --git a/components/text_sensor/ble_scanner.rst b/components/text_sensor/ble_scanner.rst index c577d4d08e..142c3cf294 100644 --- a/components/text_sensor/ble_scanner.rst +++ b/components/text_sensor/ble_scanner.rst @@ -47,8 +47,7 @@ Example json log: Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the sensor. -- All other options from :ref:`Text Sensor `. +- All options from :ref:`Text Sensor `. See Also -------- diff --git a/components/text_sensor/homeassistant.rst b/components/text_sensor/homeassistant.rst index 31f332f8ef..f012ced2d2 100644 --- a/components/text_sensor/homeassistant.rst +++ b/components/text_sensor/homeassistant.rst @@ -13,7 +13,7 @@ states from your Home Assistant instance using the :doc:`native API `. See Also diff --git a/components/text_sensor/index.rst b/components/text_sensor/index.rst index e6709e5070..e94f1a1bea 100644 --- a/components/text_sensor/index.rst +++ b/components/text_sensor/index.rst @@ -24,7 +24,8 @@ Base Text Sensor Configuration Configuration variables: -- **name** (**Required**, string): The name for the sensor. +- **id** (*Optional*, string): Manually specify the ID for code generation. At least one of **id** and **name** must be specified. +- **name** (*Optional*, string): The name for the sensor. At least one of **id** and **name** must be specified. .. note:: diff --git a/components/text_sensor/modbus_controller.rst b/components/text_sensor/modbus_controller.rst index f949ac7f22..6e8685808f 100644 --- a/components/text_sensor/modbus_controller.rst +++ b/components/text_sensor/modbus_controller.rst @@ -10,8 +10,6 @@ and requires :doc:`/components/modbus_controller` to be configured. Configuration variables: ------------------------ -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **name** (**Required**, string): The name of the sensor. - **register_type** (**Required**): type of the modbus register. - ``coil``: Coils are 1-bit registers (on/off values) that are used to control discrete outputs. They may be read and/or written. Modbus *Function Code 1 (Read Coil Status)* will be used. @@ -53,7 +51,7 @@ Configuration variables: - ``return ;`` the new value for the sensor. - ``return {};`` uses the parsed value for the state (same as ``return x;``). -- **offset** (*Optional*, int): Offset from start address in bytes (only required for uncommon response encodings). If more than one register is written in a command this value is used to find the start of this datapoint relative to start address. The component calculates the size of the range based on offset and size of the value type. The value for offset depends on the register type. +- **offset** (*Optional*, int): Offset from start address in bytes (only required for uncommon response encodings). If more than one register is written in a command this value is used to find the start of this datapoint relative to start address. The component calculates the size of the range based on offset and size of the value type. The value for offset depends on the register type. - All options from :ref:`Text Sensor `. Example: diff --git a/components/text_sensor/mqtt_subscribe.rst b/components/text_sensor/mqtt_subscribe.rst index 17a6d59666..d0a96574f1 100644 --- a/components/text_sensor/mqtt_subscribe.rst +++ b/components/text_sensor/mqtt_subscribe.rst @@ -22,10 +22,8 @@ in its ``id(mysensor).state``. Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the text sensor. - **topic** (**Required**, string): The MQTT topic to listen for string data. - **qos** (*Optional*, int): The MQTT QoS to subscribe with. Defaults to ``0``. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Text Sensor `. Example Usage for Displays diff --git a/components/text_sensor/nextion.rst b/components/text_sensor/nextion.rst index 619ccb2e36..b50be7c734 100644 --- a/components/text_sensor/nextion.rst +++ b/components/text_sensor/nextion.rst @@ -32,7 +32,6 @@ See :doc:`/components/display/nextion` for setting up the display Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the sensor. - **nextion_id** (*Optional*, :ref:`config-id`): The ID of the Nextion display. - **component_name** (*Optional*, string): The name of the Nextion component. - **update_interval** (*Optional*, :ref:`config-time`): The duration to update the sensor. If using a :ref:`nextion_custom_text_sensor_protocol` this should not be used diff --git a/components/text_sensor/template.rst b/components/text_sensor/template.rst index 5886e5dcf3..abe085a80f 100644 --- a/components/text_sensor/template.rst +++ b/components/text_sensor/template.rst @@ -28,12 +28,10 @@ Possible return values for the lambda: Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the text sensor. - **lambda** (*Optional*, :ref:`lambda `): Lambda to be evaluated every update interval to get the new value of the text sensor - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the text sensor. Set to ``never`` to disable updates. Defaults to ``60s``. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Text Sensor `. .. _text_sensor-template-publish_action: diff --git a/components/text_sensor/tuya.rst b/components/text_sensor/tuya.rst index 49c1a32ad3..deed0760a2 100644 --- a/components/text_sensor/tuya.rst +++ b/components/text_sensor/tuya.rst @@ -21,8 +21,6 @@ You can create the text sensor as follows: Configuration variables: ------------------------ -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **name** (**Required**, string): The name of the sensor. - **sensor_datapoint** (**Required**, int): The datapoint id number of the sensor. - All other options from :ref:`Text Sensor `. diff --git a/components/text_sensor/version.rst b/components/text_sensor/version.rst index dcb78dfd19..6e6a7923ae 100644 --- a/components/text_sensor/version.rst +++ b/components/text_sensor/version.rst @@ -21,15 +21,13 @@ was compiled against as a text sensor. Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the text sensor. - **hide_timestamp** (*Optional*, boolean): Allows you to hide the compilation timestamp from the version string. Defaults to ``false``. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Text Sensor `. Disabling the compilation timestamp: ------------------------------------ -.. code-block:: yaml +.. code-block:: yaml # Example configuration entry text_sensor: From f6b565de768b561135670b7396ed80da50002ced Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 14 Aug 2024 14:38:20 +1200 Subject: [PATCH 138/173] [media_player] Tidy up name/id (#4147) --- components/media_player/index.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/media_player/index.rst b/components/media_player/index.rst index 01a33e595b..f71f32be91 100644 --- a/components/media_player/index.rst +++ b/components/media_player/index.rst @@ -25,7 +25,8 @@ Base Media Player Configuration Configuration variables: -- **name** (**Required**, string): The name of the media player. +- **id** (*Optional*, string): Manually specify the ID for code generation. At least one of **id** and **name** must be specified. +- **name** (*Optional*, string): The name of the media player. At least one of **id** and **name** must be specified. .. note:: From 3b59f2c84795dccbb86fcb2da7a635bfd05a569a Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 14 Aug 2024 14:38:52 +1200 Subject: [PATCH 139/173] [lock] Tidy up name/id (#4146) --- components/lock/index.rst | 3 ++- components/lock/output.rst | 2 -- components/lock/template.rst | 2 -- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/components/lock/index.rst b/components/lock/index.rst index a42f88be48..f88c939780 100644 --- a/components/lock/index.rst +++ b/components/lock/index.rst @@ -21,7 +21,8 @@ Base Lock Configuration Configuration variables: -- **name** (**Required**, string): The name of the lock. +- **id** (*Optional*, string): Manually specify the ID for code generation. At least one of **id** and **name** must be specified. +- **name** (*Optional*, string): The name of the lock. At least one of **id** and **name** must be specified. .. note:: diff --git a/components/lock/output.rst b/components/lock/output.rst index ef07f45181..127ad9a017 100644 --- a/components/lock/output.rst +++ b/components/lock/output.rst @@ -27,8 +27,6 @@ Configuration variables: ------------------------ - **output** (**Required**, :ref:`config-id`): The ID of the output component to use. -- **name** (**Required**, string): The name for the lock. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Lock `. See Also diff --git a/components/lock/template.rst b/components/lock/template.rst index e94a42ffd0..feeff7fde6 100644 --- a/components/lock/template.rst +++ b/components/lock/template.rst @@ -45,7 +45,6 @@ Possible return values for the optional lambda: Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the lock. - **lambda** (*Optional*, :ref:`lambda `): Lambda to be evaluated repeatedly to get the current state of the lock. - **lock_action** (*Optional*, :ref:`Action `): The action that should @@ -58,7 +57,6 @@ Configuration variables: - **assumed_state** (*Optional*, boolean): Whether the true state of the lock is not known. This will make the Home Assistant frontend show buttons for both LOCK and UNLOCK actions, instead of hiding one of them when the lock is LOCKED/UNLOCKED. Defaults to ``false``. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Lock `. .. _lock-template-publish_action: From 391eeda9e384a7593b426614fd64d90a4dd3b070 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 14 Aug 2024 14:41:14 +1200 Subject: [PATCH 140/173] [climate] Tidy up name/id (#4140) * [climate] Tidy up name/id * Fix paste mistake --- components/climate/anova.rst | 2 -- components/climate/bedjet.rst | 4 ---- components/climate/climate_ir.rst | 14 ++++++-------- components/climate/haier.rst | 2 -- components/climate/index.rst | 3 ++- components/climate/midea.rst | 14 +++----------- components/climate/pid.rst | 3 ++- components/climate/tuya.rst | 4 +--- 8 files changed, 14 insertions(+), 32 deletions(-) diff --git a/components/climate/anova.rst b/components/climate/anova.rst index fe0e4d4654..2962f8a671 100644 --- a/components/climate/anova.rst +++ b/components/climate/anova.rst @@ -48,8 +48,6 @@ need to do conversion again within the frontend if you use Fahrenheit. Configuration variables: ------------------------ -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **name** (**Required**, string): The name of the climate device. - **ble_client_id** (**Required**, :ref:`config-id`): The ID of the BLE Client. - **unit_of_measurement** (**Required**, string): Units to use on the device display. 'c' or 'f'. - All other options from :ref:`Climate `. diff --git a/components/climate/bedjet.rst b/components/climate/bedjet.rst index d20c370e62..31b7e442cf 100644 --- a/components/climate/bedjet.rst +++ b/components/climate/bedjet.rst @@ -109,8 +109,6 @@ setting the mode and target temperature. Configuration variables: ************************ -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **name** (**Required**, string): The name of the climate device. - **bedjet_id** (**Required**, :ref:`config-id`): The ID of the Bedjet component. - **heat_mode** (*Optional*, string): The primary heating mode to use for ``HVACMode.HEAT``: @@ -148,8 +146,6 @@ When the BedJet is already on, turning the Fan component off will set the BedJet Configuration variables: ************************ -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **name** (**Required**, string): The name of the fan device. - **bedjet_id** (**Required**, :ref:`config-id`): The ID of the Bedjet component. - Other options from :ref:`Fan `. diff --git a/components/climate/climate_ir.rst b/components/climate/climate_ir.rst index 4c54f97bb9..aaf3cc23fc 100644 --- a/components/climate/climate_ir.rst +++ b/components/climate/climate_ir.rst @@ -88,7 +88,6 @@ controller unit. Configuration Variables: ------------------------ -- **name** (**Required**, string): The name for the climate device. - **sensor** (*Optional*, :ref:`config-id`): The sensor that is used to measure the ambient temperature. This is only for reporting the current temperature in the frontend. - **supports_cool** (*Optional*, boolean): Enables setting cooling mode for this climate device. Defaults to ``true``. @@ -99,7 +98,6 @@ Configuration Variables: **Advanced Options** -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **transmitter_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the remote transmitter. **Specific configuration variables:** @@ -206,8 +204,8 @@ These air conditioners support two protocols: Midea and Coolix. Therefore, when - **set_fan_mode** (*Optional*, string): Select the fan modes desired or that are supported on your remote. Defaults to ``3levels`` - - Options are: ``3levels`` , ``4levels``, ``quiet_4levels``. - + - Options are: ``3levels`` , ``4levels``, ``quiet_4levels``. + - ``3levels``; Low [fan speed 1], Medium [2], High [3] - ``4levels``; Low [1], Middle [2], Medium [3], High [4] - ``quiet_4levels``; Low [1], Middle [2], Medium [3], High [4], Quiet [5] @@ -215,10 +213,10 @@ These air conditioners support two protocols: Midea and Coolix. Therefore, when - **supports_dry** (*Optional*, boolean): Enables setting dry mode for this unit. Defaults to ``false``. - **supports_fan_only** (*Optional*, boolean): Enables setting fan only mode for this unit. Confirm that mode is supported on your remote. Defaults to ``false``. -- **horizontal_default** (*Optional*, string): What to default to when the AC unit's horizontal direction is *not* set to swing. Defaults to ``middle``. +- **horizontal_default** (*Optional*, string): What to default to when the AC unit's horizontal direction is *not* set to swing. Defaults to ``middle``. - Options are: ``left``, ``middle-left``, ``middle``, ``middle-right``, ``right``, ``auto`` -- **vertical_default** (*Optional*, string): What to default to when the AC unit's vertical direction is *not* set to swing. Defaults to ``middle``. +- **vertical_default** (*Optional*, string): What to default to when the AC unit's vertical direction is *not* set to swing. Defaults to ``middle``. - Options are: ``down``, ``middle-down``, ``middle``, ``middle-up``, ``up``, ``auto`` @@ -339,13 +337,13 @@ Arduino-HeatpumpIR The ``heatpumpir`` platform supports dozens of manufacturers and hundreds of AC units by utilising the `Arduino-HeatpumpIR library `__. -This platform compiles only under ``arduino`` framework or LibreTiny, and should only be used if your AC unit is not supported by any of the other (native) platforms from above. No support can be provided for Arduino-HeatpumpIR, because it is a third party library. +This platform compiles only under ``arduino`` framework or LibreTiny, and should only be used if your AC unit is not supported by any of the other (native) platforms from above. No support can be provided for Arduino-HeatpumpIR, because it is a third party library. This platform utilises the library's generic one-size-fits-all API, which might not line up perfectly with all of the supported AC units. For example, some AC units have more fan speed options than what the generic API supports. Additional configuration must be specified for this platform: -- **protocol** (**Required**, string): Choose one of Arduino-HeatpumpIR's supported protcols: +- **protocol** (**Required**, string): Choose one of Arduino-HeatpumpIR's supported protcols: ``airway``, ``aux``, ``ballu``, ``bgh_aud``, ``carrier_mca``, ``carrier_nqv``, ``carrier_qlima_1``, ``carrier_qlima_1``, ``daikin``, ``daikin_arc417``, ``daikin_arc480``, ``electroluxyal``, ``fuego``, ``fujitsu_awyz``, ``gree``, ``greeyaa``, ``greeyac``, ``greeyan``, ``greeyap``, ``greeyt``, ``hisense_aud``, ``hitachi``, ``hyundai``, ``ivt``, ``midea``, ``mitsubishi_fa``, ``mitsubishi_fd``, diff --git a/components/climate/haier.rst b/components/climate/haier.rst index c14b14c6cd..9369f191fd 100644 --- a/components/climate/haier.rst +++ b/components/climate/haier.rst @@ -111,10 +111,8 @@ This component requires a :ref:`uart` to be setup. Configuration variables: ------------------------ -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **uart_id** (*Optional*, :ref:`config-id`): ID of the UART port to communicate with AC. - **protocol** (*Optional*, string): Defines communication protocol with AC. Possible values: ``hon`` or ``smartair2``. The default value is ``smartair2``. -- **name** (**Required**, string): The name of the climate device. - **wifi_signal** (*Optional*, boolean): If ``true`` - send wifi signal level to AC. - **answer_timeout** (*Optional*, :ref:`config-time`): Responce timeout. The default value is ``200ms``. - **alternative_swing_control** (*Optional*, boolean): (supported by smartAir2 only) If ``true`` - use alternative values to control swing mode. Use only if the original control method is not working for your AC. diff --git a/components/climate/index.rst b/components/climate/index.rst index 5385bfa3e6..8badd6d9bb 100644 --- a/components/climate/index.rst +++ b/components/climate/index.rst @@ -46,7 +46,8 @@ All climate platforms in ESPHome inherit from the climate configuration schema. Configuration variables: -- **name** (**Required**, string): The name of the climate device. +- **id** (*Optional*, string): Manually specify the ID for code generation. At least one of **id** and **name** must be specified. +- **name** (*Optional*, string): The name of the climate device. At least one of **id** and **name** must be specified. .. note:: diff --git a/components/climate/midea.rst b/components/climate/midea.rst index cec59359cb..659fddca9a 100644 --- a/components/climate/midea.rst +++ b/components/climate/midea.rst @@ -67,10 +67,8 @@ The ``midea`` component creates a Midea air conditioner climate device. Configuration variables: ------------------------ -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **uart_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :doc:`../uart` if you want to use multiple UART buses. -- **name** (**Required**, string): The name of the climate device. - **transmitter_id** (*Optional*, :ref:`config-id`): Defined and used automatically when using :doc:`../remote_transmitter` component for IR commands transmit. - **period** (*Optional*, :ref:`config-time`): Minimal period between requests to the appliance. Defaults to ``1s``. - **timeout** (*Optional*, :ref:`config-time`): Request response timeout until next request attempt. Defaults to ``2s``. @@ -86,21 +84,15 @@ Configuration variables: - **outdoor_temperature** (*Optional*): The information for the outdoor temperature sensor. - - **name** (**Required**, string): The name of the sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **power_usage** (*Optional*): The information for the current power consumption sensor. - - **name** (**Required**, string): The name of the sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - **humidity_setpoint** (*Optional*): The information for the humidity indoor sensor (experimental). - - **name** (**Required**, string): The name of the sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. + - All options from :ref:`Sensor `. - All other options from :ref:`Climate `. Automations diff --git a/components/climate/pid.rst b/components/climate/pid.rst index c8bdad802c..ec256623e8 100644 --- a/components/climate/pid.rst +++ b/components/climate/pid.rst @@ -409,7 +409,6 @@ the calculated PID parameters to help finding good PID values. Configuration variables: -- **name** (**Required**, string): The name of the sensor - **type** (**Required**, string): The value to monitor. One of - ``RESULT`` - The resulting value (sum of P, I, and D terms). @@ -423,6 +422,8 @@ Configuration variables: - ``KI`` - The current factor for the integral term of the PID controller. - ``KD`` - The current factor for the differential term of the PID controller. +- All other options from :ref:`Sensor `. + Advanced options: - **climate_id** (*Optional*, :ref:`config-id`): The ID of the pid climate to get the values from. diff --git a/components/climate/tuya.rst b/components/climate/tuya.rst index c0bf5f8559..707d27f43a 100644 --- a/components/climate/tuya.rst +++ b/components/climate/tuya.rst @@ -60,14 +60,12 @@ Based on this, you can create the climate device as follows: eco: datapoint: 5 temperature: 28 - + Configuration variables: ------------------------ -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **name** (**Required**, string): The name of the climate device. - **supports_heat** (*Optional*, boolean): Specifies if the device has a heating mode. Defaults to ``true``. - **supports_cool** (*Optional*, boolean): Specifies if the device has a cooling mode. Defaults to ``false``. - **switch_datapoint** (**Required**, int): The datapoint id number of the climate switch (device on/off). From 5e517bb13fc21a33a83fc1ccf80200996afb4484 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 14 Aug 2024 14:46:33 +1200 Subject: [PATCH 141/173] [light] Tidy up name/id (#4145) * [light] Tidy up name/id * Update components/light/shelly_dimmer.rst --------- Co-authored-by: Keith Burzinski --- components/light/binary.rst | 7 +------ components/light/color_temperature.rst | 3 --- components/light/cwww.rst | 3 --- components/light/fastled.rst | 5 ----- components/light/hbridge.rst | 2 -- components/light/index.rst | 3 ++- components/light/monochromatic.rst | 3 --- components/light/neopixelbus.rst | 5 ----- components/light/partition.rst | 6 +----- components/light/rgb.rst | 3 --- components/light/rgbct.rst | 3 --- components/light/rgbw.rst | 3 --- components/light/rgbww.rst | 3 --- components/light/shelly_dimmer.rst | 5 +---- components/light/sonoff_d1.rst | 2 -- components/light/spi_led_strip.rst | 3 --- components/light/status_led.rst | 4 ---- components/light/tuya.rst | 2 -- 18 files changed, 5 insertions(+), 60 deletions(-) diff --git a/components/light/binary.rst b/components/light/binary.rst index 4a3bf44e5e..08fe2f6c92 100644 --- a/components/light/binary.rst +++ b/components/light/binary.rst @@ -24,12 +24,7 @@ The ``binary`` light platform creates a simple ON/OFF-only light from a Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the light. -- **output** (**Required**, :ref:`config-id`): The id of the - binary :ref:`output` to use for this light. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **effects** (*Optional*, list): A list of :ref:`light effects ` to use for this light, though binary lights - only support very few of them. +- **output** (**Required**, :ref:`config-id`): The id of the binary :ref:`output` to use for this light. - All other options from :ref:`Light `. See Also diff --git a/components/light/color_temperature.rst b/components/light/color_temperature.rst index b66a942488..1f674d5513 100644 --- a/components/light/color_temperature.rst +++ b/components/light/color_temperature.rst @@ -23,7 +23,6 @@ and the other channel controls the brightness. Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the light. - **color_temperature** (**Required**, :ref:`config-id`): The id of the float :ref:`output` to use for the color temperature. - **brightness** (**Required**, :ref:`config-id`): The id of the float :ref:`output` to use for the brightness. - **cold_white_color_temperature** (**Required**, float): The coldest color temperature supported by this light. This @@ -32,8 +31,6 @@ Configuration variables: - **warm_white_color_temperature** (**Required**, float): The warmest color temperature supported by this light. This is the highest value when expressed in `mireds `__, or the lowest value when expressed in Kelvin. -- **effects** (*Optional*, list): A list of :ref:`light effects ` to use for this light. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Light `. See Also diff --git a/components/light/cwww.rst b/components/light/cwww.rst index 43127cbc4a..467087c4b1 100644 --- a/components/light/cwww.rst +++ b/components/light/cwww.rst @@ -36,7 +36,6 @@ calculation assumes that both lights have the same illuminance, which might not Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the light. - **cold_white** (**Required**, :ref:`config-id`): The id of the float :ref:`output` to use for the cold white channel. - **warm_white** (**Required**, :ref:`config-id`): The id of the float :ref:`output` to use for the warm white channel. - **cold_white_color_temperature** (*Optional*, float): The color temperature (in `mireds `__ or Kelvin) @@ -44,8 +43,6 @@ Configuration variables: - **warm_white_color_temperature** (*Optional*, float): The color temperature (in `mireds `__ or Kelvin) of the warm white channel. Note that this option is required to control the mixing from Home Assistant. - **constant_brightness** (*Optional*, boolean): When enabled, this will keep the overall brightness of the cold and warm white channels constant by limiting the combined output to 100% of a single channel. This reduces the possible overall brightness but is necessary for some power supplies that are not able to run both channels at full brightness at once. Defaults to ``false``. -- **effects** (*Optional*, list): A list of :ref:`light effects ` to use for this light. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Light `. See Also diff --git a/components/light/fastled.rst b/components/light/fastled.rst index f1799fca06..cc68da4e8d 100644 --- a/components/light/fastled.rst +++ b/components/light/fastled.rst @@ -55,7 +55,6 @@ Clockless FastLED lights differ from the Configuration variables: ************************ -- **name** (**Required**, string): The name of the light. - **chipset** (**Required**, string): Set a chipset to use. See :ref:`fastled_clockless-chipsets` for options. - **pin** (**Required**, :ref:`config-pin`): The pin for the data line of the FastLED light. @@ -67,8 +66,6 @@ Configuration variables: - **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 the default value for the used chipset. -- **effects** (*Optional*, list): A list of :ref:`light effects ` to use for this light. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Light `. .. _fastled_clockless-chipsets: @@ -135,7 +132,6 @@ whereas the clockless lights only need a single pin. Configuration variables: ************************ -- **name** (**Required**, string): The name of the light. - **chipset** (**Required**, string): Set a chipset to use. See :ref:`fastled_spi-chipsets` for options. - **data_pin** (**Required**, :ref:`config-pin`): The pin for the data line of the FastLED light. - **clock_pin** (**Required**, :ref:`config-pin`): The pin for the clock line of the FastLED light. @@ -150,7 +146,6 @@ Configuration variables: - **data_rate** (*Optional*, frequency): The data rate to use for shifting data to the light. Can help if you have long cables or slow level-shifters. - **effects** (*Optional*, list): A list of :ref:`light effects ` to use for this light. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Light `. .. _fastled_spi-chipsets: diff --git a/components/light/hbridge.rst b/components/light/hbridge.rst index 07b8c23cc8..5560c007ce 100644 --- a/components/light/hbridge.rst +++ b/components/light/hbridge.rst @@ -34,8 +34,6 @@ control the colors in the :ref:`light control actions `, y Configuration variables: ------------------------ -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **name** (**Required**, string): The name of the light. - **pin_a** (**Required**, :ref:`config-id`): The id of the first float :ref:`output` to use for this light. - **pin_b** (**Required**, :ref:`config-id`): The id of the second float :ref:`output` to use for this light. - All other options from :ref:`Light `. diff --git a/components/light/index.rst b/components/light/index.rst index 60125554ec..aaee494891 100644 --- a/components/light/index.rst +++ b/components/light/index.rst @@ -26,7 +26,8 @@ All light configuration schemas inherit these options. Configuration variables: -- **name** (**Required**, string): The name of the light. +- **id** (*Optional*, string): Manually specify the ID for code generation. At least one of **id** and **name** must be specified. +- **name** (*Optional*, string): The name of the light. At least one of **id** and **name** must be specified. .. note:: diff --git a/components/light/monochromatic.rst b/components/light/monochromatic.rst index c24a9787a2..164ff7f421 100644 --- a/components/light/monochromatic.rst +++ b/components/light/monochromatic.rst @@ -30,10 +30,7 @@ The ``monochromatic`` light platform creates a simple brightness-only light from Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the light. - **output** (**Required**, :ref:`config-id`): The id of the float :ref:`output` to use for this light. -- **effects** (*Optional*, list): A list of :ref:`light effects ` to use for this light. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Light `. See Also diff --git a/components/light/neopixelbus.rst b/components/light/neopixelbus.rst index 852978677b..69cf514654 100644 --- a/components/light/neopixelbus.rst +++ b/components/light/neopixelbus.rst @@ -37,10 +37,7 @@ Configuration variables: **Base Options:** -- **name** (**Required**, string): The name of the light. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **num_leds** (**Required**, int): The number of LEDs attached. -- **effects** (*Optional*, list): A list of :ref:`light effects ` to use for this light. **Type Options:** @@ -87,8 +84,6 @@ If you have one line, only specify ``pin``, otherwise specify both ``clock_pin`` - **clock_pin** (**Required**, :ref:`config-pin`): The pin for the clock line of the light, for two-wire lights. - **data_pin** (**Required**, :ref:`config-pin`): The pin for the data line of the light, for two-wire lights. -**Advanced Options:** - - All other options from :ref:`Light `. .. warning:: diff --git a/components/light/partition.rst b/components/light/partition.rst index a5544cb45b..50778b13af 100644 --- a/components/light/partition.rst +++ b/components/light/partition.rst @@ -90,9 +90,8 @@ Joining multiple LED lights into one Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the light. - **segments** (**Required**, list): A list of segments included in this partition. - + *For addressable segments:* - **id** (**Required**, :ref:`config-id`): The ID of the addressable light to be controlled by this segment. @@ -106,9 +105,6 @@ Configuration variables: - **single_light_id** (**Required**, :ref:`config-id`): The ID of a single addressable or non-addressable light. If an addressable light is specified, it will be treated as a single light in the partition. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **effects** (*Optional*, list): A list of :ref:`light effects ` to use for this light. - - All other options from :ref:`Light `. .. note:: diff --git a/components/light/rgb.rst b/components/light/rgb.rst index 2c1f4f8374..bfa1b2b327 100644 --- a/components/light/rgb.rst +++ b/components/light/rgb.rst @@ -60,12 +60,9 @@ perceived intensity of different colors will generally vary. This can be done by Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the light. - **red** (**Required**, :ref:`config-id`): The id of the float :ref:`output` to use for the red channel. - **green** (**Required**, :ref:`config-id`): The id of the float :ref:`output` to use for the green channel. - **blue** (**Required**, :ref:`config-id`): The id of the float :ref:`output` to use for the blue channel. -- **effects** (*Optional*, list): A list of :ref:`light effects ` to use for this light. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Light `. See Also diff --git a/components/light/rgbct.rst b/components/light/rgbct.rst index 7e198bbb2a..3447758ea8 100644 --- a/components/light/rgbct.rst +++ b/components/light/rgbct.rst @@ -25,7 +25,6 @@ light from 5 :ref:`float output components ` (one for each channel). Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the light. - **red** (**Required**, :ref:`config-id`): The id of the float :ref:`output` to use for the red channel. - **green** (**Required**, :ref:`config-id`): The id of the float :ref:`output` to use for the green channel. - **blue** (**Required**, :ref:`config-id`): The id of the float :ref:`output` to use for the blue channel. @@ -41,8 +40,6 @@ Configuration variables: expressed in Kelvin. - **color_interlock** (*Optional*, boolean): When enabled, this will prevent white leds being on at the same time as RGB leds. See :ref:`rgbw_color_interlock` for more information. Defaults to ``false``. -- **effects** (*Optional*, list): A list of :ref:`light effects ` to use for this light. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Light `. See Also diff --git a/components/light/rgbw.rst b/components/light/rgbw.rst index ca089b07d0..3cf45f8309 100644 --- a/components/light/rgbw.rst +++ b/components/light/rgbw.rst @@ -64,15 +64,12 @@ the ``color_mode`` option of the :ref:`light control actions ` to use for this light. - **color_interlock** (*Optional*, boolean): When enabled, this will prevent white leds being on at the same time as RGB leds. See :ref:`rgbw_color_interlock` for more information. Defaults to ``false``. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Light `. See Also diff --git a/components/light/rgbww.rst b/components/light/rgbww.rst index 426e45f1b7..c308860e29 100644 --- a/components/light/rgbww.rst +++ b/components/light/rgbww.rst @@ -69,7 +69,6 @@ the ``color_mode`` option of the :ref:`light control actions ` to use for this light. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Light `. See Also diff --git a/components/light/shelly_dimmer.rst b/components/light/shelly_dimmer.rst index d6f9b8c124..7b5899067a 100644 --- a/components/light/shelly_dimmer.rst +++ b/components/light/shelly_dimmer.rst @@ -10,7 +10,6 @@ A detailed analysis of the Shelly Dimmer 2 hardware is given `here `_: ``true`` means leading edge, ``false`` is trailing edge. Defaults to ``false``. - **min_brightness** (*Optional*, int): Minimum brightness value on a scale from 0..1000, the default is 0. - **max_brightness** (*Optional*, int): Maximum brightness value on a scale from 0..1000, the default is 1000. @@ -91,7 +88,7 @@ Configuration variables: firmware: version: "51.6" #<-- set version here update: true - + There is no action required by the user to flash the STM32. There is no way to revert to stock firmware on the STM32 at the time of writing. - All other options from :ref:`Light `. diff --git a/components/light/sonoff_d1.rst b/components/light/sonoff_d1.rst index b2a17cba86..4882f69516 100644 --- a/components/light/sonoff_d1.rst +++ b/components/light/sonoff_d1.rst @@ -94,8 +94,6 @@ This component is useless for devices other than Sonoff D1 dimmer. Configuration variables: ------------------------ -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **name** (**Required**, string): The name of the light. - **use_rm433_remote** (*Optional*, boolean): Set to ``True`` if your setup uses Sonoff RM433 or any other radio remote control. Properly setting this parameter allows the platform to identify what to do with incoming UART commands. RF chip is known to catch random commands diff --git a/components/light/spi_led_strip.rst b/components/light/spi_led_strip.rst index 31b226e093..5626d18c3d 100644 --- a/components/light/spi_led_strip.rst +++ b/components/light/spi_led_strip.rst @@ -35,10 +35,7 @@ perceived intensity of different colors will generally vary. This can be done by Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the light. - **num_leds** (*Optional*, int): The number of LEDs attached. The default is 1. -- **effects** (*Optional*, list): A list of :ref:`light effects ` to use for this light. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **data_rate** (*Optional*): Set the data rate of the SPI interface to the display. One of ``80MHz``, ``40MHz``, ``20MHz``, ``10MHz``, ``5MHz``, ``2MHz``, ``1MHz`` (default), ``200kHz``, ``75kHz`` or ``1kHz``. - All other options from :ref:`Light `. diff --git a/components/light/status_led.rst b/components/light/status_led.rst index 69b315b5f0..1aa2b91c1d 100644 --- a/components/light/status_led.rst +++ b/components/light/status_led.rst @@ -34,12 +34,8 @@ When the device is in OK state, the LED will be restored to the state of the ``b Configuration variables: ------------------------ -- **name** (*Optional*, string): The name of the light. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **pin** (*Optional*, :ref:`Pin Schema `): The GPIO pin to operate the LED on. - **output** (*Optional*, :ref:`config-id`): The id of the binary :ref:`output` to use for this light. -- **effects** (*Optional*, list): A list of :ref:`light effects ` to use for this light, though binary lights - only support very few of them. - All other options from :ref:`Light `. .. note:: diff --git a/components/light/tuya.rst b/components/light/tuya.rst index e0b74872a3..e866828f8b 100644 --- a/components/light/tuya.rst +++ b/components/light/tuya.rst @@ -42,8 +42,6 @@ Now you can create the light. Configuration variables: ------------------------ -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **name** (**Required**, string): The name of the light. - **dimmer_datapoint** (*Optional*, int): The datapoint id number of the dimmer value. - **min_value_datapoint** (*Optional*, int): The datapoint id number of the MCU minimum value setting. If this is set then ESPHome will sync the **min_value** to the MCU on startup. From d24b5602bf306490ca85c3290d273e66e4913e42 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 14 Aug 2024 14:48:08 +1200 Subject: [PATCH 142/173] [event] Tidy up name/id (#4143) * [event] Tidy up name/id * Fix spelling --------- Co-authored-by: Keith Burzinski --- components/event/index.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/event/index.rst b/components/event/index.rst index 3d5d222aa8..b1cc7e4f25 100644 --- a/components/event/index.rst +++ b/components/event/index.rst @@ -48,8 +48,8 @@ Configuration variables: One of ``id`` or ``name`` is required. -- **id** (**Required**, :ref:`config-id`): Manually specify the ID used for code generation, allowing for further customization or interaction with this event within ESPHome scripts or lambda functions. -- **name** (**Required**, string): The name for the event. +- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. At least one of **id** and **name** must be specified. +- **name** (*Optional*, string): The name for the event. At least one of **id** and **name** must be specified. .. note:: From f01798fede521bcf0f276530a03bb1e4eb8737eb Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 14 Aug 2024 14:48:47 +1200 Subject: [PATCH 143/173] [fan] Tidy up name/id (#4144) --- components/fan/binary.rst | 3 --- components/fan/hbridge.rst | 2 -- components/fan/index.rst | 3 ++- components/fan/speed.rst | 2 -- components/fan/template.rst | 2 -- components/fan/tuya.rst | 2 -- 6 files changed, 2 insertions(+), 12 deletions(-) diff --git a/components/fan/binary.rst b/components/fan/binary.rst index c7328c5e7b..69414e3518 100644 --- a/components/fan/binary.rst +++ b/components/fan/binary.rst @@ -27,13 +27,10 @@ Configuration variables: - **output** (**Required**, :ref:`config-id`): The id of the binary output component to use for this fan. -- **name** (**Required**, string): The name for this fan. - **oscillation_output** (*Optional*, :ref:`config-id`): The id of the :ref:`output ` to use for the oscillation state of this fan. Default is empty. - **direction_output** (*Optional*, :ref:`config-id`): The id of the :ref:`output ` to use for the direction state of the fan. Default is empty. -- **id** (*Optional*, :ref:`config-id`): Manually specify - the ID used for code generation. - All other options from :ref:`Fan Component `. See Also diff --git a/components/fan/hbridge.rst b/components/fan/hbridge.rst index 7e4295f8c0..120fcb1733 100644 --- a/components/fan/hbridge.rst +++ b/components/fan/hbridge.rst @@ -46,8 +46,6 @@ Configuration variables: - **speed_count** (*Optional*, int): Set the number of supported discrete speed levels. The value is used to calculate the percentages for each speed. E.g. ``2`` means that you have 50% and 100% while ``100`` will allow 1% increments in the output. Defaults to ``100``. -- **name** (**Required**, string): The name for this fan. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **preset_modes** (*Optional*): A list of preset modes for this fan. Preset modes can be used in automations (i.e. `on_preset_set`). - All other options from :ref:`Fan Component `. diff --git a/components/fan/index.rst b/components/fan/index.rst index 9e68a0d171..c0e34ef058 100644 --- a/components/fan/index.rst +++ b/components/fan/index.rst @@ -26,7 +26,8 @@ Base Fan Configuration Configuration variables: -- **name** (**Required**, string): The name of the fan. +- **id** (*Optional*, string): Manually specify the ID for code generation. At least one of **id** and **name** must be specified. +- **name** (*Optional*, string): The name of the fan. At least one of **id** and **name** must be specified. .. note:: diff --git a/components/fan/speed.rst b/components/fan/speed.rst index e23f0b009b..28af893b8a 100644 --- a/components/fan/speed.rst +++ b/components/fan/speed.rst @@ -23,7 +23,6 @@ supports speed settings. Configuration variables: ------------------------ -- **name** (*Optional*, string): The name for this fan. - **output** (**Required**, :ref:`config-id`): The id of the :ref:`float output ` to use for this fan. - **oscillation_output** (*Optional*, :ref:`config-id`): The id of the :ref:`output ` to use for the oscillation state of this fan. Default is empty. @@ -32,7 +31,6 @@ Configuration variables: - **speed_count** (*Optional*, int): Set the number of supported discrete speed levels. The value is used to calculate the percentages for each speed. E.g. ``2`` means that you have 50% and 100% while ``100`` will allow 1% increments in the output. Defaults to ``100``. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **preset_modes** (*Optional*): A list of preset modes for this fan. Preset modes can be used in automations (i.e. `on_preset_set`). - All other options from :ref:`Fan Component `. diff --git a/components/fan/template.rst b/components/fan/template.rst index 75c36ce8ed..19a9e04a59 100644 --- a/components/fan/template.rst +++ b/components/fan/template.rst @@ -25,8 +25,6 @@ The ``template`` fan platform lets you create a fan interface using only trigger Configuration variables: ------------------------ -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **name** (*Optional*, string): The name for this fan. - **has_direction** (*Optional*, boolean): Indicates if there should be a control for direction. Default is ``false``. - **has_oscillating** (*Optional*, boolean): Indicates if there should be a control for oscillating. Default is ``false``. - **speed_count** (*Optional*, int): Set the number of supported discrete speed levels. Default is only on/off. diff --git a/components/fan/tuya.rst b/components/fan/tuya.rst index 8eb3136f4c..7bfe09cbc6 100644 --- a/components/fan/tuya.rst +++ b/components/fan/tuya.rst @@ -49,8 +49,6 @@ Based on this, you can create the fan as follows: Configuration variables: ------------------------ -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **name** (**Required**, string): The name of the fan. - **speed_datapoint** (**Required**, int): The datapoint id number of the fan speed. - **switch_datapoint** (**Required**, int): The datapoint id number of the fan switch. - **oscillation_datapoint** (*Optional*, int): The datapoint id number of the oscillation From 9cb258b292a38d7598eb945c77c1033e4fba88dc Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 14 Aug 2024 14:49:43 +1200 Subject: [PATCH 144/173] [datetime] Tidy up name/id (#4142) --- components/datetime/index.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/datetime/index.rst b/components/datetime/index.rst index 0580442d76..60ec0001b2 100644 --- a/components/datetime/index.rst +++ b/components/datetime/index.rst @@ -29,7 +29,8 @@ All datetime in ESPHome have a name and an optional icon. Configuration variables: -- **name** (**Required**, string): The name for the datetime. +- **id** (*Optional*, string): Manually specify the ID for code generation. At least one of **id** and **name** must be specified. +- **name** (*Optional*, string): The name for the datetime. At least one of **id** and **name** must be specified. .. note:: From 52542f36080b40b146df8b7cd7634adc32c3911f Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 14 Aug 2024 14:51:21 +1200 Subject: [PATCH 145/173] [cover] Tidy up name/id (#4141) --- components/cover/am43.rst | 2 - components/cover/current_based.rst | 2 - components/cover/endstop.rst | 2 - components/cover/feedback.rst | 67 ++++++++++++++---------------- components/cover/index.rst | 3 +- components/cover/template.rst | 2 - components/cover/time_based.rst | 18 ++++---- components/cover/tuya.rst | 2 - 8 files changed, 42 insertions(+), 56 deletions(-) diff --git a/components/cover/am43.rst b/components/cover/am43.rst index 227b1afd18..efef4b14b2 100644 --- a/components/cover/am43.rst +++ b/components/cover/am43.rst @@ -53,13 +53,11 @@ To make use of the battery and light level sensors, see the Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the cover. - **ble_client_id** (**Required**, :ref:`config-id`): The id of the ``ble_client`` entry associated with the device. - **pin** (*Optional*, int): The pin for the device, as set in the app. The default is usually printed on the device. Defaults to ``8888``. - **invert_position** (*Optional*, boolean): Inverts the position value to and from the device. Set if ESPHome is swapping around the open/close state of the cover. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Cover `. diff --git a/components/cover/current_based.rst b/components/cover/current_based.rst index 48408fe03d..440f82f00d 100644 --- a/components/cover/current_based.rst +++ b/components/cover/current_based.rst @@ -62,7 +62,6 @@ operation circuit (typically caused by welded relays). Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the cover. - **open_sensor** (**Required**, :ref:`config-id`): The open current sensor. - **open_action** (**Required**, :ref:`Action `): The action that should be performed when the remote requests the cover to be opened. @@ -95,7 +94,6 @@ Configuration variables: - **malfunction_action** (*Optional*, :ref:`Action `): The action that should be performed when relay malfunction is detected. Malfunction may require device servicing. You can use this action to notify other systems about this situation -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Cover `. Use with Shelly 2.5 diff --git a/components/cover/endstop.rst b/components/cover/endstop.rst index 1637f8d72a..a116f2f08d 100644 --- a/components/cover/endstop.rst +++ b/components/cover/endstop.rst @@ -47,7 +47,6 @@ current position of the cover. Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the cover. - **open_action** (**Required**, :ref:`Action `): The action that should be performed when the remote requests the cover to be opened. - **open_duration** (**Required**, :ref:`config-time`): The amount of time it takes the cover @@ -66,7 +65,6 @@ Configuration variables: be performed when the remote requests the cover to be closed or an endstop is reached. - **max_duration** (*Optional*, :ref:`config-time`): The maximum duration the cover should be opening or closing. Useful for protecting from dysfunctional endstops. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Cover `. See Also diff --git a/components/cover/feedback.rst b/components/cover/feedback.rst index 2f087be286..0c759eae94 100644 --- a/components/cover/feedback.rst +++ b/components/cover/feedback.rst @@ -4,8 +4,8 @@ Feedback Cover .. seo:: :description: Instructions for setting up feedback covers in ESPHome. -The ``feedback`` cover platform allows you to create covers with position control that -can optionally have feedback from sensors to detect the fully-open and fully-closed states (endstops), +The ``feedback`` cover platform allows you to create covers with position control that +can optionally have feedback from sensors to detect the fully-open and fully-closed states (endstops), and from sensors to detect actual movement (opening/closing). In all the cases the current position is approximated with the time the cover has been moving in a direction. @@ -54,11 +54,11 @@ Endstop Sensors *************** For cases where there are endstops at one or both ends of the cover to detect the fully-open and fully-closed states. -When any of these endstops are reached, an actual state is read and updated and the cover optionally +When any of these endstops are reached, an actual state is read and updated and the cover optionally stopped (via ``stop_action``). The state is not assumed. The extension also handles the case where the cover has builtin endstops, which stops the movement, independently to -the component's logic. In this case, when the cover is fully closed (either if timed based or sensor based) the +the component's logic. In this case, when the cover is fully closed (either if timed based or sensor based) the ``stop_action`` is not triggered. It is a drop-in replacement of :doc:`/components/cover/endstop`. @@ -71,9 +71,9 @@ as soon as an action is triggered) and can also react to commands issued to cove keep states in sync (useful for "smartization" of an existing cover). When there are no specific endstop sensors, and if the cover has builtin endstops and no external control logic, -these movement sensors can optionally be use to infer the endstop state. +these movement sensors can optionally be use to infer the endstop state. When the movement stops (with no stop action being requested) it is assumed that it was caused by -the builtin endstops, and so the close/open state (according to current direction) was reached. +the builtin endstops, and so the close/open state (according to current direction) was reached. This function is activated setting ``infer_endstop`` to True. It can be used to replace a :doc:`/components/cover/current_based`, with some modifications in the yaml. See :ref:`migrating_current_based` @@ -85,16 +85,13 @@ To protect the cover hardware from damage, some safety options are available: - *Max duration*, to protect from faulty endstops - *Direction change wait time*, like an interlock wait time, to protect motors from sudden direction changes -- *Obstacle sensors* and *rollback*, possibility to stop and optionally rollback the cover when some external sensors detects an obstacle +- *Obstacle sensors* and *rollback*, possibility to stop and optionally rollback the cover when some external sensors detects an obstacle (it might be a sensor for high current consumption or an infrared light detecting an obstruction in the path). Configuration variables ----------------------- -- **name** (**Required**, string): The name of the cover. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - - **stop_action** (**Required**, :ref:`Action `): The action that should be performed when the remote requests the cover to be closed or an endstop is reached. @@ -132,23 +129,23 @@ Additional options: detectors. In this configuration the ``stop_action`` is not performed when the open or close time is completed and if the cover is commanded to open or close the corresponding actions will be performed without checking current state. Defaults to ``false``. -- **infer_endstop_from_movement** (*Optional*, boolean): Whether to infer endstop state from the movement sensor. +- **infer_endstop_from_movement** (*Optional*, boolean): Whether to infer endstop state from the movement sensor. Requires movement sensors to be set, no endstop sensors and to have builtin endstops. Defaults to ``false``. - **assumed_state** (*Optional*, boolean): Whether the true state of the cover is not known. This will make the Home Assistant frontend show buttons for both OPEN and CLOSE actions, instead of hiding or disabling one of them. Defaults to ``true`` if no sensor is available to known the actual state of the cover. - **max_duration** (*Optional*, :ref:`config-time`): The maximum duration the cover should be opening - or closing. Useful for protecting from dysfunctional endstops. + or closing. Useful for protecting from dysfunctional endstops. Requires internal, builtin or inferred endstops. - **direction_change_wait_time** (*Optional*, :ref:`config-time`): Stops cover and forces a wait time between changes in direction, - and takes it into account when computing cover position (useful to protect motors). + and takes it into account when computing cover position (useful to protect motors). When this option is set (even at 0s) if an open/close action is invoked while the cover is moving in the opposite direction, - then and intermediate stop action will be invoked to generate the delay. -- **acceleration_wait_time** (*Optional*, :ref:`config-time`): Considers a wait time needed by the cover to actually - start moving after command is issued and takes it into account when computing cover position - (useful for heavy covers with large inertia). - Intended to not accumulate error when doing multiple partial open/close actions). + then and intermediate stop action will be invoked to generate the delay. +- **acceleration_wait_time** (*Optional*, :ref:`config-time`): Considers a wait time needed by the cover to actually + start moving after command is issued and takes it into account when computing cover position + (useful for heavy covers with large inertia). + Intended to not accumulate error when doing multiple partial open/close actions). The open/close duration includes one instance of this delay, as it is the total amount of time from issuing a command to reaching endstop. Defaults to ``0s``. @@ -175,13 +172,13 @@ Most options can be left untouched, but some modifications are needed: If there where any open/close obstacle current threshold defined, a separate binary sensor with that threshold should be defined. The option ``start_sensing_delay`` should be directly replaced by a ``delayed_off`` filter in the movement sensors, or alternatively - hysteresis options could be used to reduce the noise. + hysteresis options could be used to reduce the noise. 2. To have the very same behavior implicit in current based cover, you must always set ``has_built_in_endstop`` and ``infer_endstop_from_movement`` to True. .. code-block:: yaml - # Example original sensor configuration + # Example original sensor configuration cover: - platform: current_based name: "Current Based Cover" @@ -192,7 +189,7 @@ Most options can be left untouched, but some modifications are needed: start_sensing_delay: 0.8s # ...rest of options - # Example converted sensor configuration + # Example converted sensor configuration binary_sensor: - platform: analog_threshold id: open_binary_sensor @@ -216,43 +213,43 @@ Most options can be left untouched, but some modifications are needed: open_obstacle_sensor: open_obstacle_binary_sensor #... rest of options -3. Malfunction detection is not directly supported by Feedback Cover, as the malfunction was very narrowly defined to a specific use case - (while in other hardware configurations, the same situation is perfectly valid). +3. Malfunction detection is not directly supported by Feedback Cover, as the malfunction was very narrowly defined to a specific use case + (while in other hardware configurations, the same situation is perfectly valid). The malfunction alerted specifically when there was current in the opposite direction of the requested operation (possibly due to a relay welded). This detection can still be achieved by putting the logic directly in the switch, (or whatever needed according to your specific use case). .. code-block:: yaml - # Example original malfunction configuration + # Example original malfunction configuration cover: - platform: current_based - close_sensor: close_current + close_sensor: close_current close_action: - switch.turn_on: open_relay - open_sensor: open_current + open_sensor: open_current open_action: - - switch.turn_on: open_relay - + - switch.turn_on: open_relay + malfunction_detection: true malfunction_action: - - logger.log: "Malfunction detected. Relay welded." - #... rest of options + - logger.log: "Malfunction detected. Relay welded." + #... rest of options - # Example converted malfunction configuration + # Example converted malfunction configuration switch: - platform: gpio id: open_relay - #... rest of options + #... rest of options on_turn_off: - delay: 200ms #allow for switching time and any discharge - if: - condition: + condition: binary_sensor.is_on: open_binary_sensor - # alternative can check directly + # alternative can check directly # on sensor.in_range open_current then: - - logger.log: "Malfunction detected. Relay welded." + - logger.log: "Malfunction detected. Relay welded." diff --git a/components/cover/index.rst b/components/cover/index.rst index 28a5efc7f8..3ac2e9b667 100644 --- a/components/cover/index.rst +++ b/components/cover/index.rst @@ -28,7 +28,8 @@ All cover config schemas inherit from this schema - you can set these keys for c Configuration variables: -- **name** (**Required**, string): The name for the cover. +- **id** (*Optional*, string): Manually specify the ID for code generation. At least one of **id** and **name** must be specified. +- **name** (*Optional*, string): The name for the cover. At least one of **id** and **name** must be specified. .. note:: diff --git a/components/cover/template.rst b/components/cover/template.rst index 9d6b82692f..908f860aca 100644 --- a/components/cover/template.rst +++ b/components/cover/template.rst @@ -43,7 +43,6 @@ Possible return values for the optional lambda: Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the cover. - **lambda** (*Optional*, :ref:`lambda `): Lambda to be evaluated repeatedly to get the current state of the cover. - **open_action** (*Optional*, :ref:`Action `): The action that should @@ -71,7 +70,6 @@ Configuration variables: be performed when the remote (like Home Assistant's frontend) requests the cover be set to a specific position. The desired position is available in the lambda in the ``pos`` variable. Useless if `has_position` is not set to ``true``. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Cover `. .. _cover-template-publish_action: diff --git a/components/cover/time_based.rst b/components/cover/time_based.rst index d5888b9233..41c84c84c1 100644 --- a/components/cover/time_based.rst +++ b/components/cover/time_based.rst @@ -37,7 +37,6 @@ of the cover can be restored at node reboot. Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the cover. - **open_action** (**Required**, :ref:`Action `): The action that should be performed when the remote requests the cover to be opened. - **open_duration** (**Required**, :ref:`config-time`): The amount of time it takes the cover @@ -53,17 +52,16 @@ Configuration variables: detectors. In this configuration the ``stop_action`` is not performed when the open or close time is completed and if the cover is commanded to open or close the corresponding actions will be performed without checking current state. Defaults to ``false``. -- **manual_control** (*Optional*, boolean): For covers with manual external controls. With this - configuration if the cover is commanded to open or close the corresponding actions will be - performed even if the current state fully open or fully closed matches desired state, then - ``stop_action`` will be called after the full duration of the action elapses. +- **manual_control** (*Optional*, boolean): For covers with manual external controls. With this + configuration if the cover is commanded to open or close the corresponding actions will be + performed even if the current state fully open or fully closed matches desired state, then + ``stop_action`` will be called after the full duration of the action elapses. The current state will then be relearned upon completion. - It's recommended to set ``assumed_state`` to true so the cover control button aren't disabled - in the interface. Defaults to ``false``. + It's recommended to set ``assumed_state`` to true so the cover control button aren't disabled + in the interface. Defaults to ``false``. - **assumed_state** (*Optional*, boolean): Whether the true state of the cover is not known. This will make the Home Assistant frontend show buttons for both OPEN and CLOSE actions, instead of hiding or disabling one of them. Defaults to ``true``. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Cover `. @@ -79,7 +77,7 @@ This can be handled at the **stop_action** by using the following lambda functio .. code-block:: yaml - stop_action: + stop_action: - lambda: !lambda |- if (id(cover).get_last_operation() == CoverOperation::COVER_OPERATION_OPENING) { // Cover is currently opening @@ -89,7 +87,7 @@ This can be handled at the **stop_action** by using the following lambda functio id(cover_button_up).press(); } -Be aware that ``get_last_operation`` will only return the last opening or closing operation, but not the last idle operation. +Be aware that ``get_last_operation`` will only return the last opening or closing operation, but not the last idle operation. This issue is tracked `here `_. See Also diff --git a/components/cover/tuya.rst b/components/cover/tuya.rst index 33f1fa4793..2cb13faa83 100644 --- a/components/cover/tuya.rst +++ b/components/cover/tuya.rst @@ -31,8 +31,6 @@ Now you can create the cover. Configuration variables: ------------------------ -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **name** (**Required**, string): The name of the cover. - **control_datapoint** (*Optional*, int): The datapoint id number for sending control commands. - **position_datapoint** (**Required**, int): The datapoint id number of the cover position value. - **position_report_datapoint** (*Optional*, int): The datapoint id number of the cover position report value, if separate from position_datapoint. From 4b097030095bc2a45a7798e8f4e6bda7a93940b2 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 14 Aug 2024 14:52:16 +1200 Subject: [PATCH 146/173] [button] Tidy up name/id (#4139) --- components/button/factory_reset.rst | 4 +--- components/button/index.rst | 3 ++- components/button/output.rst | 2 -- components/button/restart.rst | 4 +--- components/button/safe_mode.rst | 4 +--- components/button/shutdown.rst | 4 +--- components/button/template.rst | 4 +--- components/button/uart.rst | 2 -- components/button/wake_on_lan.rst | 2 -- 9 files changed, 7 insertions(+), 22 deletions(-) diff --git a/components/button/factory_reset.rst b/components/button/factory_reset.rst index 03e1bfe097..f8ed5a97a7 100644 --- a/components/button/factory_reset.rst +++ b/components/button/factory_reset.rst @@ -35,9 +35,7 @@ After reboot all states, parameters and variables will be reinitialized with the Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the button. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- All other options from :ref:`Button `. +- All options from :ref:`Button `. See Also -------- diff --git a/components/button/index.rst b/components/button/index.rst index 0151b7c690..921d37848e 100644 --- a/components/button/index.rst +++ b/components/button/index.rst @@ -40,7 +40,8 @@ All buttons in ESPHome have a name and an optional icon. Configuration variables: -- **name** (**Required**, string): The name for the button. +- **id** (*Optional*, string): Manually specify the ID for code generation. At least one of **id** and **name** must be specified. +- **name** (*Optional*, string): The name for the button. At least one of **id** and **name** must be specified. .. note:: diff --git a/components/button/output.rst b/components/button/output.rst index d037730fca..e54d704622 100644 --- a/components/button/output.rst +++ b/components/button/output.rst @@ -29,8 +29,6 @@ momentarily set a GPIO pin using a button. Configuration variables: ------------------------ -- **name** (**Required**, string): The name for the button. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **output** (**Required**, :ref:`config-id`): The ID of the output component to use. - **duration** (**Required**, :ref:`config-time`): How long the output should be set when the button is pressed. - All other options from :ref:`Button `. diff --git a/components/button/restart.rst b/components/button/restart.rst index 03be784b78..0f6d445191 100644 --- a/components/button/restart.rst +++ b/components/button/restart.rst @@ -18,9 +18,7 @@ through Home Assistant. Configuration variables: ------------------------ -- **name** (**Required**, string): The name for the button. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- All other options from :ref:`Button `. +- All options from :ref:`Button `. See Also -------- diff --git a/components/button/safe_mode.rst b/components/button/safe_mode.rst index 45fe8534ab..7342d08e2f 100644 --- a/components/button/safe_mode.rst +++ b/components/button/safe_mode.rst @@ -24,9 +24,7 @@ This component requires :doc:`/components/safe_mode` to be configured. Configuration variables: ------------------------ -- **name** (**Required**, string): The name for the button. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- All other options from :ref:`Button `. +- All options from :ref:`Button `. See Also -------- diff --git a/components/button/shutdown.rst b/components/button/shutdown.rst index 68dadc518c..c6d363b505 100644 --- a/components/button/shutdown.rst +++ b/components/button/shutdown.rst @@ -24,9 +24,7 @@ pressing the reset button or restarting the power supply. Configuration variables: ------------------------ -- **name** (**Required**, string): The name for the button. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- All other options from :ref:`Button `. +- All options from :ref:`Button `. See Also -------- diff --git a/components/button/template.rst b/components/button/template.rst index 11095ab827..cc8d3965a1 100644 --- a/components/button/template.rst +++ b/components/button/template.rst @@ -20,9 +20,7 @@ it will automatically appear in Home Assistant as a button and can be controlled Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the switch. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- All other options from :ref:`Button `. +- All options from :ref:`Button `. See Also -------- diff --git a/components/button/uart.rst b/components/button/uart.rst index 565e42af20..174d7b827f 100644 --- a/components/button/uart.rst +++ b/components/button/uart.rst @@ -22,8 +22,6 @@ The ``uart`` button platform allows you to send a pre-defined sequence of bytes Configuration variables: ------------------------ -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **name** (*Optional*, string): The name for the button. - **data** (**Required**, string or list of bytes): The data to send via UART. Either an ASCII string or a list of bytes. - **uart_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the UART hub. diff --git a/components/button/wake_on_lan.rst b/components/button/wake_on_lan.rst index 10b510201c..b91e5f3ba4 100644 --- a/components/button/wake_on_lan.rst +++ b/components/button/wake_on_lan.rst @@ -19,9 +19,7 @@ by specifying its MAC address. Configuration variables: ------------------------ -- **name** (**Required**, string): The name for the button. - **target_mac_address** (**Required**, MAC Address): The MAC Address of the target computer. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Button `. See Also From 0af60409292b8685fdac44f6443f96b5572bc6d2 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 14 Aug 2024 14:53:49 +1200 Subject: [PATCH 147/173] [binary_sensor] Tidy up name/id (#4138) --- components/binary_sensor/analog_threshold.rst | 2 -- components/binary_sensor/ble_presence.rst | 3 --- components/binary_sensor/cap1188.rst | 2 -- components/binary_sensor/esp32_touch.rst | 2 -- components/binary_sensor/gpio.rst | 2 -- components/binary_sensor/homeassistant.rst | 2 -- components/binary_sensor/hydreon_rgxx.rst | 18 +++--------------- components/binary_sensor/index.rst | 3 ++- components/binary_sensor/modbus_controller.rst | 2 -- components/binary_sensor/mpr121.rst | 2 -- components/binary_sensor/nextion.rst | 1 - components/binary_sensor/pn532.rst | 2 -- components/binary_sensor/rc522.rst | 2 -- components/binary_sensor/rdm6300.rst | 2 -- components/binary_sensor/status.rst | 4 +--- components/binary_sensor/template.rst | 4 ---- components/binary_sensor/ttp229.rst | 4 ---- components/binary_sensor/tuya.rst | 2 -- 18 files changed, 6 insertions(+), 53 deletions(-) diff --git a/components/binary_sensor/analog_threshold.rst b/components/binary_sensor/analog_threshold.rst index 236eed00f2..f006afdfc1 100644 --- a/components/binary_sensor/analog_threshold.rst +++ b/components/binary_sensor/analog_threshold.rst @@ -36,8 +36,6 @@ a binary sensor. Configuration variables ----------------------- -- **name** (**Required**, string): The name of the binary sensor. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **sensor_id** (**Required**, :ref:`config-id`): The ID of the source sensor. - **threshold** (**Required**, float or mapping): Configures the reference for comparison. Accepts either a shorthand float number that will be used as both upper/lower threshold, or a mapping to define different values for each (to diff --git a/components/binary_sensor/ble_presence.rst b/components/binary_sensor/ble_presence.rst index 412049a504..c8a5c6565d 100644 --- a/components/binary_sensor/ble_presence.rst +++ b/components/binary_sensor/ble_presence.rst @@ -54,7 +54,6 @@ The ``ble_presence`` binary sensor platform lets you track the presence of a Blu Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the binary sensor. - **mac_address** (*Optional*, MAC Address): The MAC address to track for this binary sensor. Note that exactly one of ``mac_address``, ``irk``, ``service_uuid`` or ``ibeacon_uuid`` must be present. @@ -72,8 +71,6 @@ Configuration variables: same building. - **ibeacon_minor** (*Optional*, int): The iBeacon minor identifier of the beacon that needs to be tracked. Usually used to identify beacons within an iBeacon group. -- **id** (*Optional*, :ref:`config-id`): Manually specify - the ID used for code generation. - **min_rssi** (*Optional*, int): at which minimum RSSI level would the component report the device be present. - **timeout** (*Optional*, :ref:`config-time`): The delay after last detecting the device before publishing not present state. The default is 5 minutes. diff --git a/components/binary_sensor/cap1188.rst b/components/binary_sensor/cap1188.rst index 016720311f..65f0608cc9 100644 --- a/components/binary_sensor/cap1188.rst +++ b/components/binary_sensor/cap1188.rst @@ -68,9 +68,7 @@ binary sensors for each touch sensor. Configuration variables: -- **name** (*Optional*, string): The name for the binary sensor. - **cap1188_id** (*Optional*, :ref:`config-id`): The ID of the CAP1188 defined above. Useful for multiple CAP1188's on the I²C bus. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **channel** (**Required**, int): The channel number the CAP1188 the touchkey is connected to. - All other options from :ref:`Binary Sensor `. diff --git a/components/binary_sensor/esp32_touch.rst b/components/binary_sensor/esp32_touch.rst index 7c6bc25f3d..72153999a5 100644 --- a/components/binary_sensor/esp32_touch.rst +++ b/components/binary_sensor/esp32_touch.rst @@ -141,8 +141,6 @@ Configuration variables: events on. - **threshold** (**Required**, ``int``): The threshold to use to detect touch events. See :ref:`esp32-finding-thresholds` below for help determining this value. -- **name** (**Required**, string): The name of the binary sensor. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **wakeup_threshold** (*Optional*, ``int``): The threshold to use to detect touch events to wake-up from deep sleep. See :ref:`esp32-finding-thresholds` below for help determining this value. Touch pad sensors that should trigger a wake-up from deep sleep must specify this value. The :ref:`deep_sleep-component` must also be configured to enable diff --git a/components/binary_sensor/gpio.rst b/components/binary_sensor/gpio.rst index 65aefcb127..465cddd28e 100644 --- a/components/binary_sensor/gpio.rst +++ b/components/binary_sensor/gpio.rst @@ -27,8 +27,6 @@ Configuration variables: ------------------------ - **pin** (**Required**, :ref:`Pin Schema `): The pin to periodically check. -- **name** (**Required**, string): The name of the binary sensor. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Binary Sensor `. Activating internal pullups diff --git a/components/binary_sensor/homeassistant.rst b/components/binary_sensor/homeassistant.rst index 2628c5d582..b822a075bd 100644 --- a/components/binary_sensor/homeassistant.rst +++ b/components/binary_sensor/homeassistant.rst @@ -30,11 +30,9 @@ With Home Assistant 2021.6 or newer, entity state attributes can also be importe Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the binary sensor. - **entity_id** (**Required**, string): The entity ID to import from Home Assistant. - **attribute** (*Optional*, string): The name of the state attribute to import from the specified entity. The entity state is used when this option is omitted. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Binary Sensor `. See Also diff --git a/components/binary_sensor/hydreon_rgxx.rst b/components/binary_sensor/hydreon_rgxx.rst index 47a5b7dba4..d49864221f 100644 --- a/components/binary_sensor/hydreon_rgxx.rst +++ b/components/binary_sensor/hydreon_rgxx.rst @@ -34,27 +34,15 @@ Configuration variables: - **too_cold** (*Optional*): ``true`` if the sensor reports being too cold. Hydreon only mentions this feature for the RG-9. - - **name** (**Required**, string): The name for the sensor. - - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - - All other options from :ref:`Binary Sensor `. + - All options from :ref:`Binary Sensor `. - **lens_bad** (*Optional*): ``true`` if the sensor reports the lens being bad. - - **name** (**Required**, string): The name for the sensor. - - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - - All other options from :ref:`Binary Sensor `. + - All options from :ref:`Binary Sensor `. - **em_sat** (*Optional*): ``true`` if the sensor reports the Emitter being saturated. - - **name** (**Required**, string): The name for the sensor. - - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - - All other options from :ref:`Binary Sensor `. + - All options from :ref:`Binary Sensor `. See Also diff --git a/components/binary_sensor/index.rst b/components/binary_sensor/index.rst index fba4b9da68..949a2bf154 100644 --- a/components/binary_sensor/index.rst +++ b/components/binary_sensor/index.rst @@ -27,7 +27,8 @@ you can always override it. Configuration variables: -- **name** (**Required**, string): The name for the binary sensor. +- **id** (*Optional*, string): Manually specify the ID for code generation. At least one of **id** and **name** must be specified. +- **name** (*Optional*, string): The name for the binary sensor. At least one of **id** and **name** must be specified. .. note:: diff --git a/components/binary_sensor/modbus_controller.rst b/components/binary_sensor/modbus_controller.rst index 8e8ecea77a..1ff315fe3c 100644 --- a/components/binary_sensor/modbus_controller.rst +++ b/components/binary_sensor/modbus_controller.rst @@ -12,8 +12,6 @@ and requires :doc:`/components/modbus_controller` to be configured. Configuration variables: ------------------------ -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **name** (**Required**, string): The name of the sensor. - **register_type** (**Required**): type of the modbus register. - ``coil``: Coils are 1-bit registers (ON/OFF values) that are used to control discrete outputs. Read and Write access. Modbus *Function Code 1 (Read Coil Status)* will be used. diff --git a/components/binary_sensor/mpr121.rst b/components/binary_sensor/mpr121.rst index 73fcd743be..4d41a21376 100644 --- a/components/binary_sensor/mpr121.rst +++ b/components/binary_sensor/mpr121.rst @@ -69,9 +69,7 @@ binary sensors for each touch sensor. Configuration variables: -- **name** (*Optional*, string): The name for the binary sensor. - **mpr121_id** (*Optional*, :ref:`config-id`): The ID of the MPR121 defined above. Useful for multiple MPR121's on the I²C bus -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **channel** (**Required**, int): The channel number at the MPR121 the touchkey is connected to. - **touch_threshold** (*Optional*, int): A per-channel override of the global touch_threshold value. If not specified, uses the global value. - **release_threshold** (*Optional*, int): A per-channel override of the global release_threshold value. If not specified, uses the global value. diff --git a/components/binary_sensor/nextion.rst b/components/binary_sensor/nextion.rst index 9825c216f5..2260ddb024 100644 --- a/components/binary_sensor/nextion.rst +++ b/components/binary_sensor/nextion.rst @@ -39,7 +39,6 @@ See :doc:`/components/display/nextion` for setting up the display Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the sensor. - **nextion_id** (*Optional*, :ref:`config-id`): The ID of the Nextion display. - **component_name** (*Optional*, string): The name of the Nextion component. - **variable_name** (*Optional*, string): The name of the Nextion variable. Any value over ``0`` is considered to be **on** diff --git a/components/binary_sensor/pn532.rst b/components/binary_sensor/pn532.rst index fe161c46df..c2db142a97 100644 --- a/components/binary_sensor/pn532.rst +++ b/components/binary_sensor/pn532.rst @@ -208,8 +208,6 @@ Configuration variables: - **uid** (**Required**, string): The unique ID of the NFC/RFID tag. This is a hyphen-separated list of hexadecimal values. For example ``74-10-37-94``. -- **name** (**Required**, string): The name of the binary sensor. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Binary Sensor `. .. _pn532-setting_up_tags: diff --git a/components/binary_sensor/rc522.rst b/components/binary_sensor/rc522.rst index 1c89732b1f..837e797ca7 100644 --- a/components/binary_sensor/rc522.rst +++ b/components/binary_sensor/rc522.rst @@ -189,8 +189,6 @@ Configuration variables: - **uid** (**Required**, string): The unique ID of the NFC/RFID tag. This is a hyphen-separated list of hexadecimal values. For example ``74-10-37-94``. -- **name** (**Required**, string): The name of the binary sensor. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Binary Sensor `. .. _rc522-setting_up_tags: diff --git a/components/binary_sensor/rdm6300.rst b/components/binary_sensor/rdm6300.rst index 11b102e6fc..901a5db17c 100644 --- a/components/binary_sensor/rdm6300.rst +++ b/components/binary_sensor/rdm6300.rst @@ -107,8 +107,6 @@ Configuration variables: ************************ - **uid** (**Required**, int): The unique ID of the NFC/RFID tag. -- **name** (**Required**, string): The name of the binary sensor. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Binary Sensor `. .. _rdm6300-setting_up_tags: diff --git a/components/binary_sensor/status.rst b/components/binary_sensor/status.rst index cdaac910a5..b426031a12 100644 --- a/components/binary_sensor/status.rst +++ b/components/binary_sensor/status.rst @@ -22,9 +22,7 @@ for Home Assistant. Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the binary sensor. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- All other options from :ref:`Binary Sensor `. (Inverted mode is not supported) +- All options from :ref:`Binary Sensor `. (Inverted mode is not supported) See Also -------- diff --git a/components/binary_sensor/template.rst b/components/binary_sensor/template.rst index 85b70513d8..c1c8e645b1 100644 --- a/components/binary_sensor/template.rst +++ b/components/binary_sensor/template.rst @@ -36,12 +36,8 @@ Possible return values of the lambda: Configuration variables: ------------------------ -- **name** (**Required**, string): The name of the binary sensor. - **lambda** (*Optional*, :ref:`lambda `): Lambda to be evaluated repeatedly to get the current state of the binary sensor. -- **id** (*Optional*, - :ref:`config-id`): Manually specify - the ID used for code generation. - All other options from :ref:`Binary Sensor `. .. _binary_sensor-template-publish_action: diff --git a/components/binary_sensor/ttp229.rst b/components/binary_sensor/ttp229.rst index 6910db3b2e..8fbf712fc3 100644 --- a/components/binary_sensor/ttp229.rst +++ b/components/binary_sensor/ttp229.rst @@ -47,9 +47,7 @@ The configuration is made up of two parts: The central component, and individual Configuration variables: -- **name** (**Required**, string): The name of the binary sensor. - **channel** (**Required**, int): The channel number at the TTP229 the touchkey is connected to. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Binary Sensor `. ``ttp229_bsf`` Component @@ -85,9 +83,7 @@ Base Configuration: Configuration variables: -- **name** (**Required**, string): The name of the binary sensor. - **channel** (**Required**, int): The channel number at the TTP229 the touchkey is connected to. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Binary Sensor `. See Also diff --git a/components/binary_sensor/tuya.rst b/components/binary_sensor/tuya.rst index ab6489af27..30c362e692 100644 --- a/components/binary_sensor/tuya.rst +++ b/components/binary_sensor/tuya.rst @@ -20,8 +20,6 @@ You can create the binary sensor as follows: Configuration variables: ------------------------ -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **name** (**Required**, string): The name of the binary sensor. - **sensor_datapoint** (**Required**, int): The datapoint id number of the binary sensor. - All other options from :ref:`Binary Sensor `. From 84b7857577df89d5d1d957d9b5214df897b4f4d0 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 14 Aug 2024 14:54:45 +1200 Subject: [PATCH 148/173] [alarm_control_panel] Tidy up name/id (#4137) --- components/alarm_control_panel/index.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/components/alarm_control_panel/index.rst b/components/alarm_control_panel/index.rst index da0e8d8a86..57ab72b4f2 100644 --- a/components/alarm_control_panel/index.rst +++ b/components/alarm_control_panel/index.rst @@ -19,7 +19,8 @@ Base Alarm Control Panel Configuration Configuration variables: -- **name** (**Required**, string): The name of the alarm control panel. +- **id** (*Optional*, string): Manually specify the ID for code generation. At least one of **id** and **name** must be specified. +- **name** (*Optional*, string): The name of the alarm control panel. At least one of **id** and **name** must be specified. .. note:: @@ -47,7 +48,7 @@ Configuration variables: - **on_ready** (*Optional*, :ref:`Action `): An automation to perform when the logical 'and' of all the zone sensors change state. See :ref:`alarm_control_panel_on_ready_trigger`. - **on_chime** (*Optional*, :ref:`Action `): An automation to perform - when a zone has been marked as chime in the configuration, and it changes from closed to open. + when a zone has been marked as chime in the configuration, and it changes from closed to open. See :ref:`alarm_control_panel_on_chime_trigger`. - If Webserver enabled, ``web_server_sorting_weight`` can be set. See :ref:`Webserver Entity Sorting `. From 11ade94a738eb5297277ff0223a3adf1463b328d Mon Sep 17 00:00:00 2001 From: NP v/d Spek Date: Wed, 14 Aug 2024 05:42:46 +0200 Subject: [PATCH 149/173] Add new Action and Condition. (#3953) Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/speaker/index.rst | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/components/speaker/index.rst b/components/speaker/index.rst index 045d3bab07..aa9279ad9a 100644 --- a/components/speaker/index.rst +++ b/components/speaker/index.rst @@ -60,6 +60,17 @@ Configuration variables: - **id** (*Optional*, :ref:`config-id`): The speaker to control. Defaults to the only one in YAML. +.. _speaker-finish: + +``speaker.finish`` Action +^^^^^^^^^^^^^^^^^^^^^^^^^ + +This action will stop playing audio data from the speaker after all data **is** played. + +Configuration variables: + +- **id** (*Optional*, :ref:`config-id`): The speaker to control. Defaults to the only one in YAML. + .. _speaker-conditions: Speaker Conditions @@ -79,6 +90,21 @@ Configuration variables: - **id** (*Optional*, :ref:`config-id`): The speaker to check. Defaults to the only one in YAML. +.. _speaker-is_stopped: + +``speaker.is_stopped`` Condition +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +This condition will check if the speaker is fully stopped audio data and is in idle mode. + +.. note: + +Between the time ``speaker.is_playing`` is false and ``speaker.is_stopped`` is true the 'speaker' component is closing down structures that where used to play the data correctly. *It better to check if the speaker is stopped then that if it plays.* + +Configuration variables: + +- **id** (*Optional*, :ref:`config-id`): The speaker to check. Defaults to the only one in YAML. + Platforms --------- From b3f5742e25e1ca0757aea193c1eb881c67dcb290 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 14 Aug 2024 16:56:53 +1200 Subject: [PATCH 150/173] Bump version to 2024.8.0b1 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index cdff1cae97..00714ae6f8 100644 --- a/Doxygen +++ b/Doxygen @@ -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.8.0-dev +PROJECT_NUMBER = 2024.8.0b1 # 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 diff --git a/Makefile b/Makefile index aaf14f9512..be8260b944 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = dev +ESPHOME_REF = 2024.8.0b1 PAGEFIND_VERSION=1.1.0 PAGEFIND=pagefind NET_PAGEFIND=../pagefindbin/pagefind diff --git a/_static/version b/_static/version index 092c4094c9..84b6e89688 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2024.8.0-dev \ No newline at end of file +2024.8.0b1 \ No newline at end of file diff --git a/conf.py b/conf.py index d9d29eb021..6b16299acc 100644 --- a/conf.py +++ b/conf.py @@ -69,7 +69,7 @@ # The short X.Y version. version = "2024.8" # The full version, including alpha/beta/rc tags. -release = "2024.8.0-dev" +release = "2024.8.0b1" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From f6d0f3c598f0b1216107f35883d80fff956fba9d Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 14 Aug 2024 16:56:53 +1200 Subject: [PATCH 151/173] Bump version to 2024.9.0-dev --- Doxygen | 2 +- _static/version | 2 +- conf.py | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index cdff1cae97..da27607a96 100644 --- a/Doxygen +++ b/Doxygen @@ -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.8.0-dev +PROJECT_NUMBER = 2024.9.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 diff --git a/_static/version b/_static/version index 092c4094c9..620b3657cd 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2024.8.0-dev \ No newline at end of file +2024.9.0-dev \ No newline at end of file diff --git a/conf.py b/conf.py index d9d29eb021..40c12c45e1 100644 --- a/conf.py +++ b/conf.py @@ -67,9 +67,9 @@ # built documents. # # The short X.Y version. -version = "2024.8" +version = "2024.9" # The full version, including alpha/beta/rc tags. -release = "2024.8.0-dev" +release = "2024.9.0-dev" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 9419f97921cced9f053cf3c2d49abd4b1c1c6671 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 14 Aug 2024 17:26:49 +1200 Subject: [PATCH 152/173] Update changelog for 2024.8.0b1 --- _static/changelog-2024.8.0.png | Bin 0 -> 196992 bytes changelog/2024.8.0.rst | 269 +++++++++++++++++++++++++++++++++ changelog/index.rst | 2 +- 3 files changed, 270 insertions(+), 1 deletion(-) create mode 100644 _static/changelog-2024.8.0.png create mode 100644 changelog/2024.8.0.rst diff --git a/_static/changelog-2024.8.0.png b/_static/changelog-2024.8.0.png new file mode 100644 index 0000000000000000000000000000000000000000..cf40f46b68f6faf18be6562e23085d5663b29878 GIT binary patch literal 196992 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

    n`^y0EVad(Iv?+2JXk4PiJ4??alPlFFD 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 Ce8j8( literal 0 HcmV?d00001 diff --git a/changelog/2024.8.0.rst b/changelog/2024.8.0.rst new file mode 100644 index 0000000000..89ad59882a --- /dev/null +++ b/changelog/2024.8.0.rst @@ -0,0 +1,269 @@ +ESPHome 2024.8.0 - 21st August 2024 +=================================== + +.. seo:: + :description: Changelog for ESPHome 2024.8.0. + :image: /_static/changelog-2024.8.0.png + :author: Jesse Hills + :author_twitter: @jesserockz + +.. imgtable:: + :columns: 3 + + LVGL Graphics, components/lvgl/index, lvgl.png + Online Image, components/online_image, image-sync-outline.svg, dark-invert + APDS9306, components/sensor/apds9306, apds9306.png + + Home Assistant Number, components/number/homeassistant, home-assistant.svg, dark-invert + Home Assistant Switch, components/switch/homeassistant, home-assistant.svg, dark-invert + BME68x via BSEC2, components/sensor/bme68x_bsec2, bme680.jpg + + M5Stack Unit 8 Angle, components/sensor/m5stack_8angle, m5stack_8angle.png + LYWSD02MMC, components/sensor/xiaomi_ble.html#lywsd02mmc, xiaomi_mijia_logo.jpg + +Light and Versitile Embedded Graphics Library +--------------------------------------------- + +Or LVGL for short, has been worked on by :ghuser:`clydebarrow` (and multiple other users doing testing and documentation etc) +for quite some time now and is finally ready for releasing this month. It is a very powerful graphics library that +is able to be configured almost completely in YAML (There are some places that will require lambdas/c++). +The :doc:`documentation ` is very extensive and hopefully we see +some awesome dashboards being made with it. + +Online Image +------------ + +The new :doc:`online_image ` component allows your ESPHome device to download +images from the internet while it is running and show them on your display. This can also be combined with the new LVGL +component to show dynamic images for your dashboard. + +Home Assistant Switch & Number +------------------------------ + +New platforms have been aded for ``switch`` and ``number`` to allow importing of state and controlling +of switches and numbers that exist in Home Assistant (or another device via Home Assistant). +This greatly simplifies controlling remote entities and will hopefully be extended to other platforms. + +Thank you for your support +-------------------------- + +We would like to thank all Home Assistant Cloud subscribers for their support. It allows `Nabu Casa `__ to +employ two developers to maintain and further develop the ESPHome project. + +Full list of changes +-------------------- + +New Features +^^^^^^^^^^^^ + +- [update] Implement ``update.perform`` action and ``update.is_available`` condition :esphomepr:`7165` by :ghuser:`jesserockz` (new-feature) + +New Components +^^^^^^^^^^^^^^ + +- Feature/m5angle8: Add support for m5angle8 input device :esphomepr:`6799` by :ghuser:`rnauber` (new-integration) +- APDS9306 Ambient Light Sensor :esphomepr:`6709` by :ghuser:`aodrenah` (new-integration) +- [lvgl] base implementation :esphomepr:`7116` by :ghuser:`clydebarrow` (new-integration) +- Add runtime online image support :esphomepr:`4710` by :ghuser:`guillempages` (new-integration) +- [bme68x_bsec2_i2c] BME68X Temperature+Pressure+Humidity+Gas Sensor via BSEC2 :esphomepr:`4585` by :ghuser:`neffs` (new-integration) +- Add support for LYWSD02MMC Xiaomi device :esphomepr:`7080` by :ghuser:`juanluss31` (new-integration) + +New Platforms +^^^^^^^^^^^^^ + +- [homeassistant] Native switch entity import and control :esphomepr:`7018` by :ghuser:`Links2004` (new-platform) +- [homeassistant] Native number entity import and control :esphomepr:`6455` by :ghuser:`landonr` (new-platform) +- Correct offset calibration :esphomepr:`7228` by :ghuser:`descipher` (new-platform) + +Breaking Changes +^^^^^^^^^^^^^^^^ + +- Remove deprecated argument parser :esphomepr:`7151` by :ghuser:`jesserockz` (breaking-change) + +All changes +^^^^^^^^^^^ + +- [wifi] Fix EAP for IDF 5.1+, add test :esphomepr:`7061` by :ghuser:`kbx81` +- jsn_sr04t component: AJ_SR04M compatibility mode in checksum calculation :esphomepr:`7044` by :ghuser:`soeffi` +- [CI] compile entire web_server during tests :esphomepr:`7084` by :ghuser:`tomaszduda23` +- [CI] Add more ``improv_serial`` tests :esphomepr:`7081` by :ghuser:`kbx81` +- Bump docker/build-push-action from 6.3.0 to 6.4.0 in /.github/actions/build-image :esphomepr:`7089` by :ghuser:`dependabot[bot]` +- [CI] add web_server v1 test :esphomepr:`7090` by :ghuser:`tomaszduda23` +- [wifi] Hostname may not be set as expected on Arduino platform :esphomepr:`7050` by :ghuser:`NewoPL` +- Add host uart support for MacOS :esphomepr:`7095` by :ghuser:`clydebarrow` +- Bump docker/build-push-action from 6.4.0 to 6.4.1 in /.github/actions/build-image :esphomepr:`7102` by :ghuser:`dependabot[bot]` +- [code-quality] Add some ruff configuration :esphomepr:`7103` by :ghuser:`jesserockz` +- [web_server] move v1 code to separate file :esphomepr:`7091` by :ghuser:`tomaszduda23` +- [validation] Add ``host`` to ``require_framework_version`` :esphomepr:`7107` by :ghuser:`jesserockz` +- [code-quality] Tidy up some duplicate CONFIG_SCHEMA assignments :esphomepr:`7106` by :ghuser:`jesserockz` +- Move MQTT ip discovery to deticated config option. :esphomepr:`6673` by :ghuser:`Links2004` +- Feature/m5angle8: Add support for m5angle8 input device :esphomepr:`6799` by :ghuser:`rnauber` (new-integration) +- use cache to build tests for compoenents :esphomepr:`7059` by :ghuser:`tomaszduda23` +- [modbus_controller] Add on_command_sent trigger :esphomepr:`7078` by :ghuser:`leejoow` +- [ili9xxx] Rework delay handling :esphomepr:`7115` by :ghuser:`clydebarrow` +- Inherit `esp32_ble_beacon` from `esp32_ble` :esphomepr:`6908` by :ghuser:`jpbede` +- APDS9306 Ambient Light Sensor :esphomepr:`6709` by :ghuser:`aodrenah` (new-integration) +- Bump docker/build-push-action from 6.4.1 to 6.5.0 in /.github/actions/build-image :esphomepr:`7119` by :ghuser:`dependabot[bot]` +- Bump docker/setup-qemu-action from 3.1.0 to 3.2.0 :esphomepr:`7120` by :ghuser:`dependabot[bot]` +- Bump docker/login-action from 3.2.0 to 3.3.0 :esphomepr:`7121` by :ghuser:`dependabot[bot]` +- Bump docker/setup-buildx-action from 3.4.0 to 3.5.0 :esphomepr:`7122` by :ghuser:`dependabot[bot]` +- [fan] fix initial FanCall to properly set speed :esphomepr:`7113` by :ghuser:`kr0ner` +- Added ruff to pre-commit hooks :esphomepr:`7124` by :ghuser:`clydebarrow` +- Update webserver local assets to 20240724-013115 :esphomepr:`7126` by :ghuser:`esphomebot` +- [http_request] Allow configure buffer size on ESP-IDF :esphomepr:`7125` by :ghuser:`dentra` +- Give more info on import errors. :esphomepr:`7128` by :ghuser:`clydebarrow` +- [lvgl] base implementation :esphomepr:`7116` by :ghuser:`clydebarrow` (new-integration) +- Bump aioesphomeapi to 24.6.2 and cryptography to 43.0.0 :esphomepr:`7131` by :ghuser:`bdraco` +- [dependabot] Group docker action bumps into single PR :esphomepr:`7133` by :ghuser:`jesserockz` +- Add ``--version`` handler to cli :esphomepr:`7150` by :ghuser:`jesserockz` +- [code-quality] Organise ethernet related imports :esphomepr:`7152` by :ghuser:`jesserockz` +- [code-quality] Organise wifi related imports :esphomepr:`7153` by :ghuser:`jesserockz` +- [code-quality] Organise core imports :esphomepr:`7149` by :ghuser:`jesserockz` +- Remove deprecated argument parser :esphomepr:`7151` by :ghuser:`jesserockz` (breaking-change) +- Move ``CONF_ON_ERROR`` to const.py :esphomepr:`7156` by :ghuser:`jesserockz` +- [code-quality] Organise esp32 imports :esphomepr:`7154` by :ghuser:`jesserockz` +- Add microAmp and milliAmp to defined units :esphomepr:`7157` by :ghuser:`FreeBear-nc` +- Bump docker/setup-buildx-action from 3.5.0 to 3.6.1 in the docker-actions group :esphomepr:`7159` by :ghuser:`dependabot[bot]` +- LVGL stage 2 :esphomepr:`7129` by :ghuser:`clydebarrow` +- [pid] Add get_min_integral() and get_max_integral() :esphomepr:`7162` by :ghuser:`FreeBear-nc` +- [code-quality] Organise bluetooth related imports :esphomepr:`7155` by :ghuser:`jesserockz` +- http_request watchdog as a component :esphomepr:`7161` by :ghuser:`oarcher` (new-integration) +- [touchscreen] Allow binary sensor to have multiple pages in config :esphomepr:`7112` by :ghuser:`jesserockz` +- [matrix_keypad] Add `pin->setup()` to rows and cols :esphomepr:`7163` by :ghuser:`AAllport` +- [update] Implement ``update.perform`` action and ``update.is_available`` condition :esphomepr:`7165` by :ghuser:`jesserockz` (new-feature) +- [lvgl] PR stage 3 :esphomepr:`7160` by :ghuser:`clydebarrow` +- [api] ``homeassistant.action`` replaces ``homeassistant.service`` :esphomepr:`7171` by :ghuser:`jesserockz` +- ade7953_spi wrong size specified in read_array call :esphomepr:`7172` by :ghuser:`SimoPk` +- Bump improv library to 1.2.4 :esphomepr:`7174` by :ghuser:`jesserockz` +- Implement 'round to nearest multiple' filter :esphomepr:`7142` by :ghuser:`MrEbbinghaus` +- git ignore managed_components :esphomepr:`7180` by :ghuser:`oarcher` +- [core] Eliminate nuisance messages from `build_codeowners` :esphomepr:`7185` by :ghuser:`clydebarrow` +- [code-quality] More portable shebangs :esphomepr:`7189` by :ghuser:`jesserockz` +- Add support for doing update entity refresh/check via API. :esphomepr:`7190` by :ghuser:`jesserockz` +- [lvgl] Stage 4 :esphomepr:`7166` by :ghuser:`clydebarrow` +- [esp32_improv] Update Improv library to reference new repo/version :esphomepr:`7195` by :ghuser:`kahrendt` +- hydreon_rgxx: Fix parsing of data line :esphomepr:`7192` by :ghuser:`domob1812` +- Remove outdated version block :esphomepr:`7177` by :ghuser:`tomaszduda23` +- [lvgl] Stage 5 :esphomepr:`7191` by :ghuser:`clydebarrow` +- socket: socket::set_sockaddr() for IPv4 addresses in IPv6 builds :esphomepr:`7196` by :ghuser:`dwmw2` +- Adds MQTT component to Alarm Control panel component :esphomepr:`7188` by :ghuser:`heythisisnate` +- [lvgl] Final stage :esphomepr:`7184` by :ghuser:`clydebarrow` (new-integration) +- Move ``CONF_BACKGROUND_COLOR`` and ``CONF_FOREGROUND_COLOR`` to const.py :esphomepr:`7202` by :ghuser:`jesserockz` +- [helpers] Set default flags of ExternalRAMAllocator to ALLOW_FAILURE :esphomepr:`7201` by :ghuser:`jesserockz` +- Add runtime online image support :esphomepr:`4710` by :ghuser:`guillempages` (new-integration) +- Update i2s_audio_speaker.cppi2s_audio/speaker: Fix fallthrough compiler warning :esphomepr:`7167` by :ghuser:`Mimoja` +- Move CONF_ITEMS/CONF_FONT/CONF_TEXT to const.py :esphomepr:`7204` by :ghuser:`jesserockz` +- [lvgl] Fix compile error when using encoder with buttons only. :esphomepr:`7203` by :ghuser:`clydebarrow` +- Revert "Add null GPIO pin " :esphomepr:`6621` by :ghuser:`jesserockz` +- [remote_transmitter] Change default carrier_frequency to valid value :esphomepr:`7176` by :ghuser:`iannisimo` +- [code-quality] Organise script imports :esphomepr:`7198` by :ghuser:`jesserockz` +- [max31856] Use cv.frequency as validator :esphomepr:`7212` by :ghuser:`jesserockz` +- [code-quality] Organise base entities imports :esphomepr:`7208` by :ghuser:`tomaszduda23` +- [spi] Remove ``SPIDelegateDummy`` :esphomepr:`7215` by :ghuser:`jesserockz` +- [code-quality] Apply ruff linting suggestions :esphomepr:`7206` by :ghuser:`tomaszduda23` +- [code-quality] Organise logger imports :esphomepr:`7205` by :ghuser:`tomaszduda23` +- [code-quality] Apply ruff linting suggestions to core :esphomepr:`7207` by :ghuser:`tomaszduda23` +- [code-quality] fix clang-tidy sprinkler :esphomepr:`7222` by :ghuser:`tomaszduda23` +- [code-quality] __attribute__((packed)) :esphomepr:`7221` by :ghuser:`tomaszduda23` +- hx711: Check for DOUT going high after a reading :esphomepr:`7214` by :ghuser:`dwmw2` +- [mqtt] Add extended device info :esphomepr:`7194` by :ghuser:`dentra` +- [code-quality] NOLINT readability-identifier-naming :esphomepr:`7220` by :ghuser:`tomaszduda23` +- [code-quality] Organise time imports :esphomepr:`7219` by :ghuser:`tomaszduda23` +- [lvgl] Fix set state on updates :esphomepr:`7227` by :ghuser:`clydebarrow` +- add missing override :esphomepr:`7231` by :ghuser:`tomaszduda23` +- Add text_align_to_string :esphomepr:`7243` by :ghuser:`MrMDavidson` +- [sml] Fixed crashing sml parser :esphomepr:`7235` by :ghuser:`eNBeWe` +- Allow project name and version as improv_serial identity :esphomepr:`7248` by :ghuser:`AzonInc` +- [lvgl] Implement default group for encoders :esphomepr:`7242` by :ghuser:`clydebarrow` +- [bme68x_bsec2_i2c] BME68X Temperature+Pressure+Humidity+Gas Sensor via BSEC2 :esphomepr:`4585` by :ghuser:`neffs` (new-integration) +- [code-quality] clang-tidy media_player :esphomepr:`7238` by :ghuser:`tomaszduda23` +- Bump docker/build-push-action from 6.5.0 to 6.6.1 in /.github/actions/build-image :esphomepr:`7232` by :ghuser:`dependabot[bot]` +- fix build error :esphomepr:`7229` by :ghuser:`tomaszduda23` +- adjust to new python pre-commit hooks :esphomepr:`7178` by :ghuser:`tomaszduda23` +- add windows script/setup.bat :esphomepr:`7140` by :ghuser:`nielsnl68` +- [code-quality] add NOLINT haier_base :esphomepr:`7236` by :ghuser:`tomaszduda23` +- [code-quality] clang-tidy bedjet :esphomepr:`7251` by :ghuser:`tomaszduda23` +- fix name conflict with zephyr macro :esphomepr:`7252` by :ghuser:`tomaszduda23` +- [code-quality] Apply ruff linting suggestions :esphomepr:`7239` by :ghuser:`tomaszduda23` +- Add support for LYWSD02MMC Xiaomi device :esphomepr:`7080` by :ghuser:`juanluss31` (new-integration) +- [code-quality] fix clang-tidy web server :esphomepr:`7230` by :ghuser:`tomaszduda23` +- [test][web_server] Rejig test for v3 :esphomepr:`7110` by :ghuser:`RFDarter` +- [api] Error log when NONE Update command is sent :esphomepr:`7247` by :ghuser:`oarcher` +- [api] Add new flag to request state/attribute once from HA only :esphomepr:`7258` by :ghuser:`jesserockz` +- [homeassistant] Add ``HOME_ASSISTANT_IMPORT_CONTROL_SCHEMA`` :esphomepr:`7259` by :ghuser:`jesserockz` +- [const] Add some units for future use and adjust case :esphomepr:`7260` by :ghuser:`nkinnan` +- [online_image] add option to show placeholder while downloading :esphomepr:`7083` by :ghuser:`guillempages` +- [lvgl] Add initial_focus for encoders :esphomepr:`7256` by :ghuser:`clydebarrow` +- [code-quality] fix order in esphome/const.py :esphomepr:`7267` by :ghuser:`tomaszduda23` +- [code-quality] fix clang-tidy network :esphomepr:`7266` by :ghuser:`tomaszduda23` +- [code-quality] fix clang-tidy core optional :esphomepr:`7265` by :ghuser:`tomaszduda23` +- [code-quality] Fix variable naming in base_light_effects :esphomepr:`7237` by :ghuser:`tomaszduda23` +- [code-quality] fix clang-tidy mqtt :esphomepr:`7253` by :ghuser:`tomaszduda23` +- [code-quality] fix clang-tidy wifi related :esphomepr:`7254` by :ghuser:`tomaszduda23` +- Bump docker/build-push-action from 6.6.1 to 6.7.0 in /.github/actions/build-image :esphomepr:`7269` by :ghuser:`dependabot[bot]` +- [CI] Dont run full CI on ``build-image`` action changes :esphomepr:`7270` by :ghuser:`jesserockz` +- Implement ByteBuffer :esphomepr:`6878` by :ghuser:`clydebarrow` +- Add min and max brightness parameters for Light dim_relative Action :esphomepr:`6971` by :ghuser:`PaoloTK` +- [homeassistant] Native switch entity import and control :esphomepr:`7018` by :ghuser:`Links2004` (new-platform) +- [homeassistant] Native number entity import and control :esphomepr:`6455` by :ghuser:`landonr` (new-integration) +- [lvgl] Rework events to avoid feedback loops :esphomepr:`7262` by :ghuser:`clydebarrow` +- Add `color_filter_opa` style property :esphomepr:`7276` by :ghuser:`clydebarrow` +- [code-quality] fix clang-tidy wake_on_lan :esphomepr:`7275` by :ghuser:`tomaszduda23` +- [code-quality] fix readability-braces-around-statements :esphomepr:`7273` by :ghuser:`tomaszduda23` +- [mqtt] fix missing initializer in MQTTClientComponent::disable_discovery :esphomepr:`7271` by :ghuser:`oarcher` +- [code-quality] fix readability-named-parameter :esphomepr:`7272` by :ghuser:`tomaszduda23` +- support illuminance for airthings wave plus device :esphomepr:`5203` by :ghuser:`MadMonkey87` +- [micro_wake_word] Bump ESPMicroSpeechFeatures version to 1.1.0 :esphomepr:`7249` by :ghuser:`kahrendt` +- Implement the finish() method and action. implement the is_stopped condition :esphomepr:`7255` by :ghuser:`nielsnl68` +- Correct offset calibration :esphomepr:`7228` by :ghuser:`descipher` (new-integration) + +Past Changelogs +--------------- + +- :doc:`2024.7.0` +- :doc:`2024.6.0` +- :doc:`2024.5.0` +- :doc:`2024.4.0` +- :doc:`2024.3.0` +- :doc:`2024.2.0` +- :doc:`2023.12.0` +- :doc:`2023.11.0` +- :doc:`2023.10.0` +- :doc:`2023.9.0` +- :doc:`2023.8.0` +- :doc:`2023.7.0` +- :doc:`2023.6.0` +- :doc:`2023.5.0` +- :doc:`2023.4.0` +- :doc:`2023.3.0` +- :doc:`2023.2.0` +- :doc:`2022.12.0` +- :doc:`2022.11.0` +- :doc:`2022.10.0` +- :doc:`2022.9.0` +- :doc:`2022.8.0` +- :doc:`2022.6.0` +- :doc:`2022.5.0` +- :doc:`2022.4.0` +- :doc:`2022.3.0` +- :doc:`2022.2.0` +- :doc:`2022.1.0` +- :doc:`2021.12.0` +- :doc:`2021.11.0` +- :doc:`2021.10.0` +- :doc:`2021.9.0` +- :doc:`2021.8.0` +- :doc:`v1.20.0` +- :doc:`v1.19.0` +- :doc:`v1.18.0` +- :doc:`v1.17.0` +- :doc:`v1.16.0` +- :doc:`v1.15.0` +- :doc:`v1.14.0` +- :doc:`v1.13.0` +- :doc:`v1.12.0` +- :doc:`v1.11.0` +- :doc:`v1.10.0` +- :doc:`v1.9.0` +- :doc:`v1.8.0` +- :doc:`v1.7.0` diff --git a/changelog/index.rst b/changelog/index.rst index a6600f9381..0d8b249826 100644 --- a/changelog/index.rst +++ b/changelog/index.rst @@ -2,7 +2,7 @@ Changelog ========= .. redirect:: - :url: /changelog/2024.7.0.html + :url: /changelog/2024.8.0.html .. toctree:: :glob: From 80e0a1e962e6e6a06e66e38b960c347ef5babcbd Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 14 Aug 2024 17:27:37 +1200 Subject: [PATCH 153/173] Update supporters for 2024.8.0b1 --- guides/supporters.rst | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index 92c41703f3..1968e5a33e 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -224,6 +224,7 @@ Contributors - `bleeisme (@bleeisme) `__ - `Jim Ekman (@blejdfist) `__ - `blindguynar (@blindguynar) `__ +- `BlueSkyB (@BlueSkyB) `__ - `Scott Smith (@blurfl) `__ - `Bruno Medici (@bmedici) `__ - `Bob (@Bmooij) `__ @@ -512,6 +513,7 @@ Contributors - `Jannick (@DutchDeffy) `__ - `David van der Leij (@dvanderleij) `__ - `dwildstr (@dwildstr) `__ +- `David Woodhouse (@dwmw2) `__ - `dxta1986 (@dxta1986) `__ - `dyarkovoy (@dyarkovoy) `__ - `Janez Troha (@dz0ny) `__ @@ -619,6 +621,7 @@ Contributors - `Fabio Pugliese Ornellas (@fornellas) `__ - `SmartShackMaster (@fototakas) `__ - `foxsam21 (@foxsam21) `__ +- `ESP32andmore (@fpovoski) `__ - `Fractal147 (@Fractal147) `__ - `Francis-labo (@Francis-labo) `__ - `Francisk0 (@Francisk0) `__ @@ -914,6 +917,7 @@ Contributors - `jsuanet (@jsuanet) `__ - `James Szalay (@jtszalay) `__ - `Jules-R (@Jules-R) `__ +- `Julian Stremel (@JulianStremel) `__ - `Julie Koubová (@juliekoubova) `__ - `junkie1969 (@junkie1969) `__ - `junnikokuki (@junnikokuki) `__ @@ -1218,6 +1222,7 @@ Contributors - `Chris Laplante (@mostthingsweb) `__ - `Matthew Pettitt (@mpettitt) `__ - `Michael P. Flaga (@mpflaga) `__ +- `Björn Ebbinghaus (@MrEbbinghaus) `__ - `Sam Hughes (@MrEditor97) `__ - `MrEditor97 (@mreditor97) `__ - `MRemy2 (@MRemy2) `__ @@ -1335,6 +1340,7 @@ Contributors - `ogatatsu (@ogatatsu) `__ - `Oğuzhan Başer (@oguzhanbaser) `__ - `Larry (@ojaksch) `__ +- `ojwc (@ojwc) `__ - `OkhammahkO (@OkhammahkO) `__ - `Oleg Tarasov (@olegtarasov) `__ - `Oliver Hihn (@oliverhihn) `__ @@ -1730,6 +1736,7 @@ Contributors - `Alan Lord (@theopensourcerer) `__ - `Simon (@theOzzieRat) `__ - `Brian Levinsen (@therealeldaria) `__ +- `thevogoncoder (@thevogoncoder) `__ - `Steve Scott (@thewishy) `__ - `Zachery Notz (@TheZackCodec) `__ - `Florian Gareis (@TheZoker) `__ @@ -1924,4 +1931,4 @@ Contributors - `Christian Zufferey (@zuzu59) `__ - `Zynth-dev (@Zynth-dev) `__ -*This page was last updated August 1, 2024.* +*This page was last updated August 14, 2024.* From e705457b4ac3825b0725f3e755bc86b5c5fbf066 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 14 Aug 2024 19:07:25 +1200 Subject: [PATCH 154/173] Fix links --- changelog/2024.8.0.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/changelog/2024.8.0.rst b/changelog/2024.8.0.rst index 89ad59882a..6ea1e7d888 100644 --- a/changelog/2024.8.0.rst +++ b/changelog/2024.8.0.rst @@ -27,13 +27,13 @@ Light and Versitile Embedded Graphics Library Or LVGL for short, has been worked on by :ghuser:`clydebarrow` (and multiple other users doing testing and documentation etc) for quite some time now and is finally ready for releasing this month. It is a very powerful graphics library that is able to be configured almost completely in YAML (There are some places that will require lambdas/c++). -The :doc:`documentation ` is very extensive and hopefully we see +The :doc:`documentation ` is very extensive and hopefully we see some awesome dashboards being made with it. Online Image ------------ -The new :doc:`online_image ` component allows your ESPHome device to download +The new :doc:`online_image ` component allows your ESPHome device to download images from the internet while it is running and show them on your display. This can also be combined with the new LVGL component to show dynamic images for your dashboard. From 18f78de8dc9a1ae9035c173d58058bfe0edb30df Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Fri, 16 Aug 2024 13:38:07 +1200 Subject: [PATCH 155/173] Bump version to 2024.8.0b2 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index 00714ae6f8..a4725cdd3f 100644 --- a/Doxygen +++ b/Doxygen @@ -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.8.0b1 +PROJECT_NUMBER = 2024.8.0b2 # 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 diff --git a/Makefile b/Makefile index be8260b944..be4f7b2b46 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = 2024.8.0b1 +ESPHOME_REF = 2024.8.0b2 PAGEFIND_VERSION=1.1.0 PAGEFIND=pagefind NET_PAGEFIND=../pagefindbin/pagefind diff --git a/_static/version b/_static/version index 84b6e89688..7d221d472f 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2024.8.0b1 \ No newline at end of file +2024.8.0b2 \ No newline at end of file diff --git a/conf.py b/conf.py index 6b16299acc..daa38bdfcb 100644 --- a/conf.py +++ b/conf.py @@ -69,7 +69,7 @@ # The short X.Y version. version = "2024.8" # The full version, including alpha/beta/rc tags. -release = "2024.8.0b1" +release = "2024.8.0b2" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From e2c043337733f73fcf1300a6bf7012df1e900064 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Fri, 16 Aug 2024 13:41:07 +1200 Subject: [PATCH 156/173] Update changelog for 2024.8.0b2 --- changelog/2024.8.0.rst | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/changelog/2024.8.0.rst b/changelog/2024.8.0.rst index 6ea1e7d888..c7dd2aa938 100644 --- a/changelog/2024.8.0.rst +++ b/changelog/2024.8.0.rst @@ -40,7 +40,7 @@ component to show dynamic images for your dashboard. Home Assistant Switch & Number ------------------------------ -New platforms have been aded for ``switch`` and ``number`` to allow importing of state and controlling +New platforms have been added for ``switch`` and ``number`` to allow importing of state and controlling of switches and numbers that exist in Home Assistant (or another device via Home Assistant). This greatly simplifies controlling remote entities and will hopefully be extended to other platforms. @@ -80,6 +80,16 @@ Breaking Changes - Remove deprecated argument parser :esphomepr:`7151` by :ghuser:`jesserockz` (breaking-change) +Beta Changes +^^^^^^^^^^^^ + +- remove extra number from pronto :esphomepr:`7263` by :ghuser:`ssieb` +- [api] Bump noise-c library version :esphomepr:`7288` by :ghuser:`clydebarrow` +- fix some small rtttl issues :esphomepr:`6817` by :ghuser:`nielsnl68` +- Fix overflow in ESPColorCorrection object :esphomepr:`7268` by :ghuser:`g-kiss` +- [validation] Allow ``maybe_simple_value`` to not have default key in complex value :esphomepr:`7294` by :ghuser:`jesserockz` +- [network] Always allow ``enable_ipv6: false`` :esphomepr:`7291` by :ghuser:`dwmw2` + All changes ^^^^^^^^^^^ @@ -216,6 +226,12 @@ All changes - [micro_wake_word] Bump ESPMicroSpeechFeatures version to 1.1.0 :esphomepr:`7249` by :ghuser:`kahrendt` - Implement the finish() method and action. implement the is_stopped condition :esphomepr:`7255` by :ghuser:`nielsnl68` - Correct offset calibration :esphomepr:`7228` by :ghuser:`descipher` (new-integration) +- remove extra number from pronto :esphomepr:`7263` by :ghuser:`ssieb` +- [api] Bump noise-c library version :esphomepr:`7288` by :ghuser:`clydebarrow` +- fix some small rtttl issues :esphomepr:`6817` by :ghuser:`nielsnl68` +- Fix overflow in ESPColorCorrection object :esphomepr:`7268` by :ghuser:`g-kiss` +- [validation] Allow ``maybe_simple_value`` to not have default key in complex value :esphomepr:`7294` by :ghuser:`jesserockz` +- [network] Always allow ``enable_ipv6: false`` :esphomepr:`7291` by :ghuser:`dwmw2` Past Changelogs --------------- From c1e554c28d672c5de1232ce257389535bcf98d16 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Fri, 16 Aug 2024 13:41:50 +1200 Subject: [PATCH 157/173] Update supporters for 2024.8.0b2 --- guides/supporters.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index 1968e5a33e..a223be7c82 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -1931,4 +1931,4 @@ Contributors - `Christian Zufferey (@zuzu59) `__ - `Zynth-dev (@Zynth-dev) `__ -*This page was last updated August 14, 2024.* +*This page was last updated August 16, 2024.* From b93fcb3155dc22e82db6872ab690e45c4ed0a2b9 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Sat, 17 Aug 2024 07:38:54 +1200 Subject: [PATCH 158/173] Typo --- changelog/2024.8.0.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog/2024.8.0.rst b/changelog/2024.8.0.rst index c7dd2aa938..1d12bc7d95 100644 --- a/changelog/2024.8.0.rst +++ b/changelog/2024.8.0.rst @@ -21,7 +21,7 @@ ESPHome 2024.8.0 - 21st August 2024 M5Stack Unit 8 Angle, components/sensor/m5stack_8angle, m5stack_8angle.png LYWSD02MMC, components/sensor/xiaomi_ble.html#lywsd02mmc, xiaomi_mijia_logo.jpg -Light and Versitile Embedded Graphics Library +Light and Versatile Embedded Graphics Library --------------------------------------------- Or LVGL for short, has been worked on by :ghuser:`clydebarrow` (and multiple other users doing testing and documentation etc) From 5954531cd0e82648e8c0edb499644b7a16d76c4c Mon Sep 17 00:00:00 2001 From: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com> Date: Mon, 19 Aug 2024 08:44:29 +1000 Subject: [PATCH 159/173] [lvgl] Update layout docs (#4165) --- components/lvgl/index.rst | 37 ++++++++++++++- components/lvgl/widgets.rst | 91 ++++++++++++++++++++++++++++++------- 2 files changed, 110 insertions(+), 18 deletions(-) diff --git a/components/lvgl/index.rst b/components/lvgl/index.rst index 50648ea8ae..16b903a309 100644 --- a/components/lvgl/index.rst +++ b/components/lvgl/index.rst @@ -436,11 +436,27 @@ It can arrange items into rows or columns (tracks), handle wrapping, adjust spac - **pad_row** (*Optional*, int16): Set the padding between the rows, in pixels. - **pad_column** (*Optional*, int16): Set the padding between the columns, in pixels. - - **flex_grow** (*Optional*, int16): Flex grow can be used to make one or more children fill the available space on the track. When more children have grow parameters, the available space will be distributed proportionally to the grow values. Defaults to ``0``, which disables growing. + - **flex_grow** (*Optional*, int16): Can be used to make one or more children fill the available space on the track. When one or more children have ``flex_grow`` set, the available space will be distributed proportionally to the grow values. Defaults to ``0``, which disables growing. + +.. code-block:: yaml + + # Example flex layout + + - obj: + layout: + type: flex + pad_row: 4 + pad_column: 4px + flex_align_main: center + flex_align_cross: start + flex_align_track: end + widgets: + - animimg: + flex_grow: 1 **Grid** -The Grid layout in LVGL is a subset implementation of `CSS Flexbox `__. +The Grid layout in LVGL is a subset implementation of `CSS Grid `__. It can arrange items into a 2D "table" that has rows or columns (tracks). The item(s) can span through multiple columns or rows. The track's size can be set in pixels, to the largest item of the track (``CONTENT``) or in "free units" to distribute the free space proportionally. @@ -482,6 +498,23 @@ Values for use with ``grid_column_align``, ``grid_row_align``, ``grid_cell_x_ali - ``SPACE_AROUND``: items are evenly distributed in the track with equal space around them. Note that visually the spaces aren’t equal, since all the items have equal space on both sides. The first item will have one unit of space against the container edge, but two units of space between the next item because that next item has its own spacing that applies. - ``SPACE_BETWEEN``: items are evenly distributed in the track: first item is on the start line, last item on the end line. +.. code-block:: yaml + + # Example grid layout + + - obj: + layout: + type: grid + grid_row_align: end + grid_rows: [25px, fr(1), content] + grid_columns: [40, fr(1), fr(1)] + pad_row: 6px + pad_column: 0 + widgets: + - image: + grid_cell_row_pos: 0 + grid_cell_column_pos: 0 + .. tip:: To visualize real, calculated sizes of transparent widgets you can temporarily set ``outline_width: 1`` on them. diff --git a/components/lvgl/widgets.rst b/components/lvgl/widgets.rst index 1700ee2b38..ea9ac7ee88 100644 --- a/components/lvgl/widgets.rst +++ b/components/lvgl/widgets.rst @@ -116,6 +116,67 @@ In addition to visual styling, each widget supports some boolean **flags** to in LVGL only supports **integers** for numeric ``value``. Visualizer widgets can't display floats directly, but they allow scaling by 10s. +Widget-specific properties +-------------------------- + +Some widgets have properties that are specific to that widget. For example ``label`` has a ``text`` property. The properties +specific to a widget are described in each section below. Some of these properties may also be updated with a corresponding +``lvgl..update`` action, e.g. ``lvgl.label.update`` allows updating not only the common style properties, +but also the ``text`` property of a label. + + +.. _text-property: + +Text property +------------- + +Several widgets have a ``text`` property, and the possible ways this can be specified are common to all ``text`` properties. +The text may be a Unicode string or other constant convertible to a string; if the string is enclosed in double quotes ``""`` then +standard escape sequences sucn as newline ``\n`` and Unicode codepoints will be translated. +The text value may also be a lambda returning a ``std::string`` or may be +specified with a ``format`` property utilising ``printf`` style formatting. There is also a ``time_format`` option +which allows use of `strftime `_ formats. + + +**Examples:** + +.. code-block:: yaml + + # Example label + - label: + id: label_id + text: "Text string" + - checkbox: + id: checkbox_id + text: "\uF00C" # Unicode check-mark + + + on_...: + - lvgl.label.update: + id: label_id + text: + format: "%d bells, %d things" + args: [x, 10] # x is a value from the enclosing trigger. + - lvgl.label.update: + id: label_id + text: !lambda return id(text_sensor).state; + - lvgl.label.update: + id: label_id + text: + time_format: "%c" # uses default time component + - lvgl.checkbox.update: + id: checkbox_id + text: + time_format: "%c" + time: sntp_id + - lvgl.label.update: + id: label_id + text: + time_format: "%c" + time: !lambda return id(sntp_id).utcnow(); + + + .. _lvgl-widget-animimg: ``animimg`` @@ -388,7 +449,7 @@ The button matrix widget is a lightweight way to display multiple buttons in row - **id** (*Optional*): An ID for the button in the matrix. - **key_code** (*Optional*, string): One character be sent as the key code to a :ref:`key_collector` instead of ``text`` when the button is pressed. - **selected** (*Optional*, boolean): Set the button as the most recently released or focused. Defaults to ``false``. - - **text** (*Optional*): Text (or built-in :ref:`symbol ` codepoint) to display on the button. + - **text** (*Optional*, :ref:`text-property`): Text to display on the button. - **width** (*Optional*): Width relative to the other buttons in the same row. Must be a value between ``1`` and ``15``; the default is ``1`` (for example, given a line with two buttons, one with ``width: 1`` and another one with ``width: 2``, the first will be ``33%`` wide while the second will be ``66%`` wide). - **control** (*Optional*): Binary flags to control behavior of the buttons (all ``false`` by default): - **checkable** (*Optional*, boolean): Enable toggling of a button, ``checked`` state will be added/removed as the button is clicked. @@ -522,9 +583,7 @@ The checkbox widget is made internally from a *tick box* and a label. When the c - ``lvgl.checkbox.update`` :ref:`action ` updates the widget styles and properties from the specific options above, just like the :ref:`lvgl.widget.update ` action is used for the common styles, states or flags. - **id** (**Required**): The ID or a list of IDs of checkbox widgets which you want update. - - **text** (**Required**, :ref:`templatable `, string): The ``text`` option in this action can contain static text, a :ref:`lambda ` outputting a string or can be formatted using ``printf``-style formatting (see :ref:`display-printf`). - - **format** (*Optional*, string): The format for the message in :ref:`printf-style `. - - **args** (*Optional*, list of :ref:`lambda `): The optional arguments for the format message. + - **text** (*Optional*, :ref:`text-property`): Text to display beside the checkbox. - Widget styles or properties from the specific options above, which you want update. **Triggers:** @@ -799,7 +858,7 @@ A label is the basic widget type that is used to display text. - **text_letter_space** (*Optional*, int16): Extra character spacing of the text. Inherited from parent. Defaults to ``0``. - **text_line_space** (*Optional*, int16): Line spacing of the text. Inherited from parent. Defaults to ``0``. - **text_opa** (*Optional*, :ref:`opacity `): Opacity of the text. Inherited from parent. Defaults to ``COVER``. -- **text** (**Required**, string): The text (or built-in :ref:`symbol ` codepoint) to display. To display an empty label, specify ``""``. +- **text** (*Optional*, :ref:`text-property`): Text to display on the label. - Style options from :ref:`lvgl-styling`. Uses all the typical background properties and the text properties. The padding values can be used to add space between the text and the background. .. note:: @@ -810,9 +869,7 @@ A label is the basic widget type that is used to display text. - ``lvgl.label.update`` :ref:`action ` updates the widget styles and properties from the specific options above, just like the :ref:`lvgl.widget.update ` action is used for the common styles, states or flags. - **id** (**Required**): The ID or a list of IDs of label widgets which you want update. - - **text** (**Required**, :ref:`templatable `, string): The ``text`` option in this action can contain static text, a :ref:`lambda ` outputting a string or can be formatted using ``printf``-style formatting (see :ref:`display-printf`). - - **format** (*Optional*, string): The format for the message in :ref:`printf-style `. - - **args** (*Optional*, list of :ref:`lambda `): The optional arguments for the format message. + - **text** (*Optional*, :ref:`text-property`): Text to display on the button. - Widget styles or properties from the specific options above, which you want update. **Triggers:** @@ -1060,13 +1117,14 @@ The text will be broken into multiple lines automatically and the height will be **Configuration variables:** - **msgboxes** (*Optional*, dict): A list of message boxes to use. This option has to be added to the top level of the LVGL component configuration. - - **body** (**Required**, dict): The content of the body of the message box: - - **text** (**Required**, string): The string to be displayed in the body of the message box. Can be shorthanded if no further options are specified. - - Style options from :ref:`lvgl-styling`. Uses all the typical background properties and the text properties. - - **buttons** (**Required**, dict): A list of buttons to show at the bottom of the message box: - - **text** (**Required**, string): The text (or built-in :ref:`symbol ` codepoint) to display on the button. - - **close_button** (**Required**, boolean): Controls the appearance of the close button to the top right of the message box. - **title** (**Required**, string): A string to display at the top of the message box. + - **body** (*Optional*, dict): The content of the body of the message box: + - **text** (*Optional*, :ref:`text-property`): The text to display in the body of the message box. + - Style options from :ref:`lvgl-styling`. Uses all the typical background properties and the text properties. + - **buttons** (*Optional*, list): A list of buttons to show at the bottom of the message box: + - **text** (*Optional*, :ref:`text-property`): Text to display on the button. + - See :ref:`lvgl-widget-buttonmatrix` for other options for the buttons. + - **close_button** (*Optional*, boolean): Controls the appearance of the close button to the top right of the message box. **Actions:** @@ -1527,14 +1585,15 @@ The textarea is an extended label widget which displays a cursor and allows the - **max_length** (*Optional*, int): Limit the maximum number of characters to this value. - **one_line** (*Optional*, boolean): The text area can be limited to only allow a single line of text. In this case the height will set automatically to fit only one line, line break characters will be ignored, and word wrap will be disabled. - **password_mode** (*Optional*, boolean): The text area supports password mode. By default, if the ``•`` (bullet, ``0x2022``) glyph exists in the font, the entered characters are converted to it after some time or when a new character is entered. If ``•`` is missing from the font, ``*`` (asterisk) will be used. -- **placeholder_text** (*Optional*, string): A placeholder text can be specified, which is displayed when the Text area is empty. +- **text** (*Optional*, :ref:`text-property`): Initial contents of the textarea. +- **placeholder_text** (*Optional*, :ref:`text-property`): A placeholder text can be specified, which is displayed when the Text area is empty. - any :ref:`Styling ` and state-based option for the background of the textarea. Uses all the typical background style properties and the text/label related style properties for the text. **Actions:** - ``lvgl.textarea.update`` :ref:`action ` updates the widget's ``text`` property, to replace the entire text content. - **id** (**Required**): The ID or a list of IDs of textarea widgets which you want update. - - **text** (**Required**): The new text content to be displayed. + - **text** (*Optional*, :ref:`text-property`): The text to replace the textarea content. **Triggers:** From 2a7058b529b68fcad3c30a2f7acfcb809687b6a9 Mon Sep 17 00:00:00 2001 From: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com> Date: Mon, 19 Aug 2024 08:44:29 +1000 Subject: [PATCH 160/173] [lvgl] Update layout docs (#4165) --- components/lvgl/index.rst | 37 ++++++++++++++- components/lvgl/widgets.rst | 91 ++++++++++++++++++++++++++++++------- 2 files changed, 110 insertions(+), 18 deletions(-) diff --git a/components/lvgl/index.rst b/components/lvgl/index.rst index 50648ea8ae..16b903a309 100644 --- a/components/lvgl/index.rst +++ b/components/lvgl/index.rst @@ -436,11 +436,27 @@ It can arrange items into rows or columns (tracks), handle wrapping, adjust spac - **pad_row** (*Optional*, int16): Set the padding between the rows, in pixels. - **pad_column** (*Optional*, int16): Set the padding between the columns, in pixels. - - **flex_grow** (*Optional*, int16): Flex grow can be used to make one or more children fill the available space on the track. When more children have grow parameters, the available space will be distributed proportionally to the grow values. Defaults to ``0``, which disables growing. + - **flex_grow** (*Optional*, int16): Can be used to make one or more children fill the available space on the track. When one or more children have ``flex_grow`` set, the available space will be distributed proportionally to the grow values. Defaults to ``0``, which disables growing. + +.. code-block:: yaml + + # Example flex layout + + - obj: + layout: + type: flex + pad_row: 4 + pad_column: 4px + flex_align_main: center + flex_align_cross: start + flex_align_track: end + widgets: + - animimg: + flex_grow: 1 **Grid** -The Grid layout in LVGL is a subset implementation of `CSS Flexbox `__. +The Grid layout in LVGL is a subset implementation of `CSS Grid `__. It can arrange items into a 2D "table" that has rows or columns (tracks). The item(s) can span through multiple columns or rows. The track's size can be set in pixels, to the largest item of the track (``CONTENT``) or in "free units" to distribute the free space proportionally. @@ -482,6 +498,23 @@ Values for use with ``grid_column_align``, ``grid_row_align``, ``grid_cell_x_ali - ``SPACE_AROUND``: items are evenly distributed in the track with equal space around them. Note that visually the spaces aren’t equal, since all the items have equal space on both sides. The first item will have one unit of space against the container edge, but two units of space between the next item because that next item has its own spacing that applies. - ``SPACE_BETWEEN``: items are evenly distributed in the track: first item is on the start line, last item on the end line. +.. code-block:: yaml + + # Example grid layout + + - obj: + layout: + type: grid + grid_row_align: end + grid_rows: [25px, fr(1), content] + grid_columns: [40, fr(1), fr(1)] + pad_row: 6px + pad_column: 0 + widgets: + - image: + grid_cell_row_pos: 0 + grid_cell_column_pos: 0 + .. tip:: To visualize real, calculated sizes of transparent widgets you can temporarily set ``outline_width: 1`` on them. diff --git a/components/lvgl/widgets.rst b/components/lvgl/widgets.rst index 1700ee2b38..ea9ac7ee88 100644 --- a/components/lvgl/widgets.rst +++ b/components/lvgl/widgets.rst @@ -116,6 +116,67 @@ In addition to visual styling, each widget supports some boolean **flags** to in LVGL only supports **integers** for numeric ``value``. Visualizer widgets can't display floats directly, but they allow scaling by 10s. +Widget-specific properties +-------------------------- + +Some widgets have properties that are specific to that widget. For example ``label`` has a ``text`` property. The properties +specific to a widget are described in each section below. Some of these properties may also be updated with a corresponding +``lvgl..update`` action, e.g. ``lvgl.label.update`` allows updating not only the common style properties, +but also the ``text`` property of a label. + + +.. _text-property: + +Text property +------------- + +Several widgets have a ``text`` property, and the possible ways this can be specified are common to all ``text`` properties. +The text may be a Unicode string or other constant convertible to a string; if the string is enclosed in double quotes ``""`` then +standard escape sequences sucn as newline ``\n`` and Unicode codepoints will be translated. +The text value may also be a lambda returning a ``std::string`` or may be +specified with a ``format`` property utilising ``printf`` style formatting. There is also a ``time_format`` option +which allows use of `strftime `_ formats. + + +**Examples:** + +.. code-block:: yaml + + # Example label + - label: + id: label_id + text: "Text string" + - checkbox: + id: checkbox_id + text: "\uF00C" # Unicode check-mark + + + on_...: + - lvgl.label.update: + id: label_id + text: + format: "%d bells, %d things" + args: [x, 10] # x is a value from the enclosing trigger. + - lvgl.label.update: + id: label_id + text: !lambda return id(text_sensor).state; + - lvgl.label.update: + id: label_id + text: + time_format: "%c" # uses default time component + - lvgl.checkbox.update: + id: checkbox_id + text: + time_format: "%c" + time: sntp_id + - lvgl.label.update: + id: label_id + text: + time_format: "%c" + time: !lambda return id(sntp_id).utcnow(); + + + .. _lvgl-widget-animimg: ``animimg`` @@ -388,7 +449,7 @@ The button matrix widget is a lightweight way to display multiple buttons in row - **id** (*Optional*): An ID for the button in the matrix. - **key_code** (*Optional*, string): One character be sent as the key code to a :ref:`key_collector` instead of ``text`` when the button is pressed. - **selected** (*Optional*, boolean): Set the button as the most recently released or focused. Defaults to ``false``. - - **text** (*Optional*): Text (or built-in :ref:`symbol ` codepoint) to display on the button. + - **text** (*Optional*, :ref:`text-property`): Text to display on the button. - **width** (*Optional*): Width relative to the other buttons in the same row. Must be a value between ``1`` and ``15``; the default is ``1`` (for example, given a line with two buttons, one with ``width: 1`` and another one with ``width: 2``, the first will be ``33%`` wide while the second will be ``66%`` wide). - **control** (*Optional*): Binary flags to control behavior of the buttons (all ``false`` by default): - **checkable** (*Optional*, boolean): Enable toggling of a button, ``checked`` state will be added/removed as the button is clicked. @@ -522,9 +583,7 @@ The checkbox widget is made internally from a *tick box* and a label. When the c - ``lvgl.checkbox.update`` :ref:`action ` updates the widget styles and properties from the specific options above, just like the :ref:`lvgl.widget.update ` action is used for the common styles, states or flags. - **id** (**Required**): The ID or a list of IDs of checkbox widgets which you want update. - - **text** (**Required**, :ref:`templatable `, string): The ``text`` option in this action can contain static text, a :ref:`lambda ` outputting a string or can be formatted using ``printf``-style formatting (see :ref:`display-printf`). - - **format** (*Optional*, string): The format for the message in :ref:`printf-style `. - - **args** (*Optional*, list of :ref:`lambda `): The optional arguments for the format message. + - **text** (*Optional*, :ref:`text-property`): Text to display beside the checkbox. - Widget styles or properties from the specific options above, which you want update. **Triggers:** @@ -799,7 +858,7 @@ A label is the basic widget type that is used to display text. - **text_letter_space** (*Optional*, int16): Extra character spacing of the text. Inherited from parent. Defaults to ``0``. - **text_line_space** (*Optional*, int16): Line spacing of the text. Inherited from parent. Defaults to ``0``. - **text_opa** (*Optional*, :ref:`opacity `): Opacity of the text. Inherited from parent. Defaults to ``COVER``. -- **text** (**Required**, string): The text (or built-in :ref:`symbol ` codepoint) to display. To display an empty label, specify ``""``. +- **text** (*Optional*, :ref:`text-property`): Text to display on the label. - Style options from :ref:`lvgl-styling`. Uses all the typical background properties and the text properties. The padding values can be used to add space between the text and the background. .. note:: @@ -810,9 +869,7 @@ A label is the basic widget type that is used to display text. - ``lvgl.label.update`` :ref:`action ` updates the widget styles and properties from the specific options above, just like the :ref:`lvgl.widget.update ` action is used for the common styles, states or flags. - **id** (**Required**): The ID or a list of IDs of label widgets which you want update. - - **text** (**Required**, :ref:`templatable `, string): The ``text`` option in this action can contain static text, a :ref:`lambda ` outputting a string or can be formatted using ``printf``-style formatting (see :ref:`display-printf`). - - **format** (*Optional*, string): The format for the message in :ref:`printf-style `. - - **args** (*Optional*, list of :ref:`lambda `): The optional arguments for the format message. + - **text** (*Optional*, :ref:`text-property`): Text to display on the button. - Widget styles or properties from the specific options above, which you want update. **Triggers:** @@ -1060,13 +1117,14 @@ The text will be broken into multiple lines automatically and the height will be **Configuration variables:** - **msgboxes** (*Optional*, dict): A list of message boxes to use. This option has to be added to the top level of the LVGL component configuration. - - **body** (**Required**, dict): The content of the body of the message box: - - **text** (**Required**, string): The string to be displayed in the body of the message box. Can be shorthanded if no further options are specified. - - Style options from :ref:`lvgl-styling`. Uses all the typical background properties and the text properties. - - **buttons** (**Required**, dict): A list of buttons to show at the bottom of the message box: - - **text** (**Required**, string): The text (or built-in :ref:`symbol ` codepoint) to display on the button. - - **close_button** (**Required**, boolean): Controls the appearance of the close button to the top right of the message box. - **title** (**Required**, string): A string to display at the top of the message box. + - **body** (*Optional*, dict): The content of the body of the message box: + - **text** (*Optional*, :ref:`text-property`): The text to display in the body of the message box. + - Style options from :ref:`lvgl-styling`. Uses all the typical background properties and the text properties. + - **buttons** (*Optional*, list): A list of buttons to show at the bottom of the message box: + - **text** (*Optional*, :ref:`text-property`): Text to display on the button. + - See :ref:`lvgl-widget-buttonmatrix` for other options for the buttons. + - **close_button** (*Optional*, boolean): Controls the appearance of the close button to the top right of the message box. **Actions:** @@ -1527,14 +1585,15 @@ The textarea is an extended label widget which displays a cursor and allows the - **max_length** (*Optional*, int): Limit the maximum number of characters to this value. - **one_line** (*Optional*, boolean): The text area can be limited to only allow a single line of text. In this case the height will set automatically to fit only one line, line break characters will be ignored, and word wrap will be disabled. - **password_mode** (*Optional*, boolean): The text area supports password mode. By default, if the ``•`` (bullet, ``0x2022``) glyph exists in the font, the entered characters are converted to it after some time or when a new character is entered. If ``•`` is missing from the font, ``*`` (asterisk) will be used. -- **placeholder_text** (*Optional*, string): A placeholder text can be specified, which is displayed when the Text area is empty. +- **text** (*Optional*, :ref:`text-property`): Initial contents of the textarea. +- **placeholder_text** (*Optional*, :ref:`text-property`): A placeholder text can be specified, which is displayed when the Text area is empty. - any :ref:`Styling ` and state-based option for the background of the textarea. Uses all the typical background style properties and the text/label related style properties for the text. **Actions:** - ``lvgl.textarea.update`` :ref:`action ` updates the widget's ``text`` property, to replace the entire text content. - **id** (**Required**): The ID or a list of IDs of textarea widgets which you want update. - - **text** (**Required**): The new text content to be displayed. + - **text** (*Optional*, :ref:`text-property`): The text to replace the textarea content. **Triggers:** From fe6599622630b8269a93c069e3790f5a8af46189 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Mon, 19 Aug 2024 13:10:02 +1200 Subject: [PATCH 161/173] Bump version to 2024.8.0b3 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index a4725cdd3f..b0e09e989f 100644 --- a/Doxygen +++ b/Doxygen @@ -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.8.0b2 +PROJECT_NUMBER = 2024.8.0b3 # 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 diff --git a/Makefile b/Makefile index be4f7b2b46..fb12d0f373 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = 2024.8.0b2 +ESPHOME_REF = 2024.8.0b3 PAGEFIND_VERSION=1.1.0 PAGEFIND=pagefind NET_PAGEFIND=../pagefindbin/pagefind diff --git a/_static/version b/_static/version index 7d221d472f..f01e7962fc 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2024.8.0b2 \ No newline at end of file +2024.8.0b3 \ No newline at end of file diff --git a/conf.py b/conf.py index daa38bdfcb..83d7e13988 100644 --- a/conf.py +++ b/conf.py @@ -69,7 +69,7 @@ # The short X.Y version. version = "2024.8" # The full version, including alpha/beta/rc tags. -release = "2024.8.0b2" +release = "2024.8.0b3" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 0a9cf37b06524e7aec5ac4f0710dde4b28f57b1a Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Mon, 19 Aug 2024 13:14:16 +1200 Subject: [PATCH 162/173] Update changelog for 2024.8.0b3 --- changelog/2024.8.0.rst | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/changelog/2024.8.0.rst b/changelog/2024.8.0.rst index 1d12bc7d95..0074908ca3 100644 --- a/changelog/2024.8.0.rst +++ b/changelog/2024.8.0.rst @@ -33,7 +33,7 @@ some awesome dashboards being made with it. Online Image ------------ -The new :doc:`online_image ` component allows your ESPHome device to download +:ghuser:`guillempages` created a new :doc:`online_image ` component that allows your ESPHome device to download images from the internet while it is running and show them on your display. This can also be combined with the new LVGL component to show dynamic images for your dashboard. @@ -89,6 +89,10 @@ Beta Changes - Fix overflow in ESPColorCorrection object :esphomepr:`7268` by :ghuser:`g-kiss` - [validation] Allow ``maybe_simple_value`` to not have default key in complex value :esphomepr:`7294` by :ghuser:`jesserockz` - [network] Always allow ``enable_ipv6: false`` :esphomepr:`7291` by :ghuser:`dwmw2` +- Revert "[validation] Allow ``maybe_simple_value`` to not have default key in complex value" :esphomepr:`7305` by :ghuser:`jesserockz` +- [lvgl] Bug fixes :esphomepr:`7300` by :ghuser:`clydebarrow` +- [speaker] Fix header includes :esphomepr:`7304` by :ghuser:`nielsnl68` +- [microphone] Fix header includes :esphomepr:`7310` by :ghuser:`jesserockz` All changes ^^^^^^^^^^^ @@ -232,6 +236,10 @@ All changes - Fix overflow in ESPColorCorrection object :esphomepr:`7268` by :ghuser:`g-kiss` - [validation] Allow ``maybe_simple_value`` to not have default key in complex value :esphomepr:`7294` by :ghuser:`jesserockz` - [network] Always allow ``enable_ipv6: false`` :esphomepr:`7291` by :ghuser:`dwmw2` +- Revert "[validation] Allow ``maybe_simple_value`` to not have default key in complex value" :esphomepr:`7305` by :ghuser:`jesserockz` +- [lvgl] Bug fixes :esphomepr:`7300` by :ghuser:`clydebarrow` +- [speaker] Fix header includes :esphomepr:`7304` by :ghuser:`nielsnl68` +- [microphone] Fix header includes :esphomepr:`7310` by :ghuser:`jesserockz` Past Changelogs --------------- From 6e16a6ad95f43ce0c98032e2f336abac52d372e9 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Mon, 19 Aug 2024 13:15:00 +1200 Subject: [PATCH 163/173] Update supporters for 2024.8.0b3 --- guides/supporters.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index a223be7c82..b43153024c 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -643,6 +643,7 @@ Contributors - `frspp (@frspp) `__ - `Florian Trück (@ftrueck) `__ - `functionpointer (@functionpointer) `__ +- `Gábor Kiss (@g-kiss) `__ - `mr G1K (@G1K) `__ - `Aljaž Srebrnič (@g5pw) `__ - `Alex Hermann (@gaaf) `__ @@ -1931,4 +1932,4 @@ Contributors - `Christian Zufferey (@zuzu59) `__ - `Zynth-dev (@Zynth-dev) `__ -*This page was last updated August 16, 2024.* +*This page was last updated August 19, 2024.* From b4a447ed502375cf557b9c791109184842e5c33a Mon Sep 17 00:00:00 2001 From: nkinnan Date: Tue, 20 Aug 2024 09:09:10 -0700 Subject: [PATCH 164/173] add link to integration from total_daily_energy (#4135) --- components/sensor/total_daily_energy.rst | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/components/sensor/total_daily_energy.rst b/components/sensor/total_daily_energy.rst index 16013bf411..cd1b0bff67 100644 --- a/components/sensor/total_daily_energy.rst +++ b/components/sensor/total_daily_energy.rst @@ -69,12 +69,30 @@ Some sensors such as the :doc:`HLW8012 ` expose their power sensor with - multiply: 0.001 unit_of_measurement: kW +Lifetime instead of Daily +------------------------- + +For a more-generic version of this component which does not reset every midnight, see :doc:`integration`, which can provide device-lifetime values instead of daily values with the following example settings: + +.. code-block:: yaml + + # Example configuration entry + sensor: + - platform: integration + name: 'Total Energy' + sensor: my_power + time_unit: h + restore: true + state_class: total_increasing + device_class: energy + See Also -------- - :ref:`sensor-filters` - :doc:`hlw8012` - :doc:`cse7766` +- :doc:`integration` - :doc:`/components/sensor/pulse_counter` - :doc:`/components/sensor/pulse_meter` - :doc:`/components/time/homeassistant` From 8f6e39b20ed9bf86b527d8bc3031ee90027f64ed Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 21 Aug 2024 11:46:58 +1200 Subject: [PATCH 165/173] Bump version to 2024.8.0b4 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index b0e09e989f..c3e425798a 100644 --- a/Doxygen +++ b/Doxygen @@ -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.8.0b3 +PROJECT_NUMBER = 2024.8.0b4 # 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 diff --git a/Makefile b/Makefile index fb12d0f373..699f6d6e25 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = 2024.8.0b3 +ESPHOME_REF = 2024.8.0b4 PAGEFIND_VERSION=1.1.0 PAGEFIND=pagefind NET_PAGEFIND=../pagefindbin/pagefind diff --git a/_static/version b/_static/version index f01e7962fc..8e05c9fe25 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2024.8.0b3 \ No newline at end of file +2024.8.0b4 \ No newline at end of file diff --git a/conf.py b/conf.py index 83d7e13988..c9f45bbd40 100644 --- a/conf.py +++ b/conf.py @@ -69,7 +69,7 @@ # The short X.Y version. version = "2024.8" # The full version, including alpha/beta/rc tags. -release = "2024.8.0b3" +release = "2024.8.0b4" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 72b9272bcf6e71c059d7ef9b7e39c0ef7d1973d6 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 21 Aug 2024 11:51:25 +1200 Subject: [PATCH 166/173] Update changelog for 2024.8.0b4 --- changelog/2024.8.0.rst | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/changelog/2024.8.0.rst b/changelog/2024.8.0.rst index 0074908ca3..8412a041c8 100644 --- a/changelog/2024.8.0.rst +++ b/changelog/2024.8.0.rst @@ -93,6 +93,10 @@ Beta Changes - [lvgl] Bug fixes :esphomepr:`7300` by :ghuser:`clydebarrow` - [speaker] Fix header includes :esphomepr:`7304` by :ghuser:`nielsnl68` - [microphone] Fix header includes :esphomepr:`7310` by :ghuser:`jesserockz` +- Fix RP2040 Neopixel flickering issue :esphomepr:`7307` by :ghuser:`deCodeIt` +- add the ability to add more idf components to an existing setup :esphomepr:`7302` by :ghuser:`nielsnl68` +- Fix waveshare 2.13" epaper stride calculation error :esphomepr:`7303` by :ghuser:`serialx` +- [rtttl] fix STOPPED state :esphomepr:`7323` by :ghuser:`NewoPL` All changes ^^^^^^^^^^^ @@ -240,6 +244,10 @@ All changes - [lvgl] Bug fixes :esphomepr:`7300` by :ghuser:`clydebarrow` - [speaker] Fix header includes :esphomepr:`7304` by :ghuser:`nielsnl68` - [microphone] Fix header includes :esphomepr:`7310` by :ghuser:`jesserockz` +- Fix RP2040 Neopixel flickering issue :esphomepr:`7307` by :ghuser:`deCodeIt` +- add the ability to add more idf components to an existing setup :esphomepr:`7302` by :ghuser:`nielsnl68` +- Fix waveshare 2.13" epaper stride calculation error :esphomepr:`7303` by :ghuser:`serialx` +- [rtttl] fix STOPPED state :esphomepr:`7323` by :ghuser:`NewoPL` Past Changelogs --------------- From 69ee164bf73a16c8d155a666bbc94fd40ed55e19 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 21 Aug 2024 11:52:09 +1200 Subject: [PATCH 167/173] Update supporters for 2024.8.0b4 --- guides/supporters.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index b43153024c..6e435ec6df 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -429,6 +429,7 @@ Contributors - `DeadEnd (@DeadEnded) `__ - `Debashish Sahu (@debsahu) `__ - `declanshanaghy (@declanshanaghy) `__ +- `Ali Jafri (@deCodeIt) `__ - `Maximilian (@DeerMaximum) `__ - `definitio (@definitio) `__ - `deftdawg (@deftdawg) `__ @@ -1932,4 +1933,4 @@ Contributors - `Christian Zufferey (@zuzu59) `__ - `Zynth-dev (@Zynth-dev) `__ -*This page was last updated August 19, 2024.* +*This page was last updated August 21, 2024.* From f96cce839a35d9563fa5dcb712c261a89416d137 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 21 Aug 2024 14:20:30 +1200 Subject: [PATCH 168/173] Bump version to 2024.8.0 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index c3e425798a..e9c7a5d9b2 100644 --- a/Doxygen +++ b/Doxygen @@ -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.8.0b4 +PROJECT_NUMBER = 2024.8.0 # 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 diff --git a/Makefile b/Makefile index 699f6d6e25..ed0590e92e 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = 2024.8.0b4 +ESPHOME_REF = 2024.8.0 PAGEFIND_VERSION=1.1.0 PAGEFIND=pagefind NET_PAGEFIND=../pagefindbin/pagefind diff --git a/_static/version b/_static/version index 8e05c9fe25..d20f6c5231 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2024.8.0b4 \ No newline at end of file +2024.8.0 \ No newline at end of file diff --git a/conf.py b/conf.py index c9f45bbd40..4768be834b 100644 --- a/conf.py +++ b/conf.py @@ -69,7 +69,7 @@ # The short X.Y version. version = "2024.8" # The full version, including alpha/beta/rc tags. -release = "2024.8.0b4" +release = "2024.8.0" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 7ced6e2363b07ac0904a11c9f2acf5de9bab21e7 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 21 Aug 2024 14:22:39 +1200 Subject: [PATCH 169/173] Update changelog for 2024.8.0 --- changelog/2024.8.0.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/changelog/2024.8.0.rst b/changelog/2024.8.0.rst index 8412a041c8..93aef64109 100644 --- a/changelog/2024.8.0.rst +++ b/changelog/2024.8.0.rst @@ -145,7 +145,7 @@ All changes - LVGL stage 2 :esphomepr:`7129` by :ghuser:`clydebarrow` - [pid] Add get_min_integral() and get_max_integral() :esphomepr:`7162` by :ghuser:`FreeBear-nc` - [code-quality] Organise bluetooth related imports :esphomepr:`7155` by :ghuser:`jesserockz` -- http_request watchdog as a component :esphomepr:`7161` by :ghuser:`oarcher` (new-integration) +- http_request watchdog as a component :esphomepr:`7161` by :ghuser:`oarcher` - [touchscreen] Allow binary sensor to have multiple pages in config :esphomepr:`7112` by :ghuser:`jesserockz` - [matrix_keypad] Add `pin->setup()` to rows and cols :esphomepr:`7163` by :ghuser:`AAllport` - [update] Implement ``update.perform`` action and ``update.is_available`` condition :esphomepr:`7165` by :ghuser:`jesserockz` (new-feature) @@ -165,7 +165,7 @@ All changes - [lvgl] Stage 5 :esphomepr:`7191` by :ghuser:`clydebarrow` - socket: socket::set_sockaddr() for IPv4 addresses in IPv6 builds :esphomepr:`7196` by :ghuser:`dwmw2` - Adds MQTT component to Alarm Control panel component :esphomepr:`7188` by :ghuser:`heythisisnate` -- [lvgl] Final stage :esphomepr:`7184` by :ghuser:`clydebarrow` (new-integration) +- [lvgl] Final stage :esphomepr:`7184` by :ghuser:`clydebarrow` - Move ``CONF_BACKGROUND_COLOR`` and ``CONF_FOREGROUND_COLOR`` to const.py :esphomepr:`7202` by :ghuser:`jesserockz` - [helpers] Set default flags of ExternalRAMAllocator to ALLOW_FAILURE :esphomepr:`7201` by :ghuser:`jesserockz` - Add runtime online image support :esphomepr:`4710` by :ghuser:`guillempages` (new-integration) @@ -223,7 +223,7 @@ All changes - Implement ByteBuffer :esphomepr:`6878` by :ghuser:`clydebarrow` - Add min and max brightness parameters for Light dim_relative Action :esphomepr:`6971` by :ghuser:`PaoloTK` - [homeassistant] Native switch entity import and control :esphomepr:`7018` by :ghuser:`Links2004` (new-platform) -- [homeassistant] Native number entity import and control :esphomepr:`6455` by :ghuser:`landonr` (new-integration) +- [homeassistant] Native number entity import and control :esphomepr:`6455` by :ghuser:`landonr` (new-platform) - [lvgl] Rework events to avoid feedback loops :esphomepr:`7262` by :ghuser:`clydebarrow` - Add `color_filter_opa` style property :esphomepr:`7276` by :ghuser:`clydebarrow` - [code-quality] fix clang-tidy wake_on_lan :esphomepr:`7275` by :ghuser:`tomaszduda23` @@ -233,7 +233,7 @@ All changes - support illuminance for airthings wave plus device :esphomepr:`5203` by :ghuser:`MadMonkey87` - [micro_wake_word] Bump ESPMicroSpeechFeatures version to 1.1.0 :esphomepr:`7249` by :ghuser:`kahrendt` - Implement the finish() method and action. implement the is_stopped condition :esphomepr:`7255` by :ghuser:`nielsnl68` -- Correct offset calibration :esphomepr:`7228` by :ghuser:`descipher` (new-integration) +- Correct offset calibration :esphomepr:`7228` by :ghuser:`descipher` (new-platform) - remove extra number from pronto :esphomepr:`7263` by :ghuser:`ssieb` - [api] Bump noise-c library version :esphomepr:`7288` by :ghuser:`clydebarrow` - fix some small rtttl issues :esphomepr:`6817` by :ghuser:`nielsnl68` From fbfd804f9adf0f59e4115f1770cc0df1c630c8f8 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 21 Aug 2024 14:23:22 +1200 Subject: [PATCH 170/173] Update supporters for 2024.8.0 --- guides/supporters.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/guides/supporters.rst b/guides/supporters.rst index 6e435ec6df..45e36e3976 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -1599,6 +1599,7 @@ Contributors - `Jason Sepinsky (@Sepinsky) `__ - `Sergey Popov (@Sergey-SRG) `__ - `Sergio (@sergio303) `__ +- `Sung-jin Brian Hong (@serialx) `__ - `Sergio Mayoral Martínez (@sermayoral) `__ - `sethcohn (@sethcohn) `__ - `Seth Girvan (@sethgirvan) `__ From 78acfdf550406d34a29f2d9141614162fe76fbb9 Mon Sep 17 00:00:00 2001 From: Sebastian Muszynski Date: Thu, 22 Aug 2024 02:58:14 +0200 Subject: [PATCH 171/173] Add output source priority "hybrid" (#4175) --- components/pipsolar.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/components/pipsolar.rst b/components/pipsolar.rst index 466be5ab39..b6cb09678b 100644 --- a/components/pipsolar.rst +++ b/components/pipsolar.rst @@ -242,6 +242,8 @@ Not all possible switches are exposed as they lead to the possibility to make se name: inverter0_output_source_priority_solar output_source_priority_battery: name: inverter0_output_source_priority_battery + output_source_priority_hybrid: + name: inverter0_output_source_priority_hybrid input_voltage_range: name: inverter0_input_voltage_range pv_ok_condition_for_parallel: @@ -256,6 +258,7 @@ All sensors are normal text sensors... so all text sensor variables are working - **output_source_priority_utility** (*Optional*): output source priority utility - **output_source_priority_solar** (*Optional*): output source priority solar - **output_source_priority_battery** (*Optional*): output source priority battery +- **output_source_priority_hybrid** (*Optional*): output source priority hybrid - **input_voltage_range** (*Optional*): input voltage range - **pv_ok_condition_for_parallel** (*Optional*): pv ok condition for parallel - **pv_power_balance** (*Optional*): pv power balance From b8582c08e50f80b2b047b94ba261b74faef9dfe3 Mon Sep 17 00:00:00 2001 From: Pieter Viljoen Date: Wed, 21 Aug 2024 17:58:53 -0700 Subject: [PATCH 172/173] Enable verbose mode from env ESPHOME_VERBOSE or --verbose (#3992) --- guides/cli.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/guides/cli.rst b/guides/cli.rst index 37910334ca..7dc145a681 100644 --- a/guides/cli.rst +++ b/guides/cli.rst @@ -39,6 +39,7 @@ ESPHome's command line interface always has the following format .. option:: -v|--verbose Enable verbose esphome logs. + Can also be enabled via environment variable ``ESPHOME_VERBOSE=true``. ``--quiet`` Option ------------------ From 90cad7dcc887ef00eb699f5739c20f077e574e98 Mon Sep 17 00:00:00 2001 From: Piotr Szulc Date: Thu, 22 Aug 2024 02:59:38 +0200 Subject: [PATCH 173/173] Tuya number: added description of new datapoint_hidden yaml key (#4010) Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/number/tuya.rst | 21 +++++++++++++++++++++ components/tuya.rst | 1 + 2 files changed, 22 insertions(+) diff --git a/components/number/tuya.rst b/components/number/tuya.rst index bf05ac960f..3b87b76520 100644 --- a/components/number/tuya.rst +++ b/components/number/tuya.rst @@ -61,6 +61,23 @@ For instance, assume we have a pH sensor that reads from 0.00 to 15.00 with a sc max_value: 15.00 multiply: 100 +Hidden datapoints: +------------------ +The above configurations will work fine as long as Tuya device publishes the datapoint value (along with its type) at initialization. +However this is not always the case. To be able to use such "hidden" datapoints as Number, you need to specify additional ``datapoint_hidden`` configuration block. +This block allows to specify the missing datapoint type and, optionally, the value that should be written to the datapoint at initialization. + +.. code-block:: yaml + + - platform: "tuya" + name: "Alarm at maximum" + number_datapoint: 116 + min_value: 0 + max_value: 100 + datapoint_hidden: + datapoint_type: int + initial_value: 85 + Configuration variables: ------------------------ @@ -69,6 +86,10 @@ Configuration variables: - **max_value** (**Required**, float): The maximum value this number can be. - **step** (*Optional*, float): The granularity with which the number can be set. Defaults to 1. - **multiply** (*Optional*, float): multiply the new value with this factor before sending the requests. +- **datapoint_hidden** (*Optional*): Specify information required for hidden datapoints. + + - **datapoint_type** (**Required**, string): The datapoint type, one of *int*, *uint*, *enum*. + - **initial_value** (*Optional*, float): The value to be written at initialization. Must be between ``min_value`` and ``max_value``. - All other options from :ref:`Number `. diff --git a/components/tuya.rst b/components/tuya.rst index d941b8cf6c..57596d6dd2 100644 --- a/components/tuya.rst +++ b/components/tuya.rst @@ -140,5 +140,6 @@ See Also - :doc:`/components/binary_sensor/tuya` - :doc:`/components/sensor/tuya` - :doc:`/components/text_sensor/tuya` +- :doc:`/components/number/tuya` - :apiref:`tuya/tuya.h` - :ghedit:`Edit`

    vL6sK~b8p0yWg;n2G$ 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 literal 44240 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 diff --git a/components/images/web_server/tab-header-expand-cloapsed.png b/components/images/web_server/tab-header-expand-cloapsed.png index 2249933f633266cbbe43890f06a380505212dff4..746ea287fd855067f22f31fa8b5f12eb010dbcf2 100644 GIT binary patch literal 140986 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

vL6sK~b8p0yWg;n2G$ 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