esphome-docs/components/text_sensor/template.rst
Otto Winter 6053f490b5
Update svg2png and seo.py (#1380)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2021-11-16 15:19:33 +13:00

87 lines
2.5 KiB
ReStructuredText

Template Text Sensor
====================
.. seo::
:description: Instructions for setting up template text sensors in ESPHome
:image: description.svg
The ``template`` text sensor platform allows you to create a text sensor with templated values
using :ref:`lambdas <config-lambda>`.
.. code-block:: yaml
# Example configuration entry
text_sensor:
- platform: template
name: "Template Text Sensor"
lambda: |-
return {"Hello World"};
update_interval: 60s
Possible return values for the lambda:
- ``return {"STRING LITERAL"};`` the new value for the sensor of type ``std::string``. **Has to be** in
brackets ``{}``!
- ``return {};`` if you don't want to publish a new state (advanced).
Configuration variables:
------------------------
- **name** (**Required**, string): The name of the text sensor.
- **lambda** (*Optional*, :ref:`lambda <config-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 publish the value of the
text sensor, either the result of the lambda function or if no lambda function the last value
published using the publish action. Defaults to ``60s``.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- All other options from :ref:`Text Sensor <config-text_sensor>`.
.. _text_sensor-template-publish_action:
``text_sensor.template.publish`` Action
---------------------------------------
You can also publish a state to a template text sensor from elsewhere in your YAML file
with the ``text_sensor.template.publish`` action.
.. code-block:: yaml
# Example configuration entry
text_sensor:
- platform: template
name: "Template Text Sensor"
id: template_text
# in some trigger
on_...:
- text_sensor.template.publish:
id: template_text
state: "Hello World"
# Templated
- text_sensor.template.publish:
id: template_text
state: !lambda 'return "Hello World";'
Configuration options:
- **id** (**Required**, :ref:`config-id`): The ID of the template text sensor.
- **state** (**Required**, string, :ref:`templatable <config-templatable>`):
The state to publish.
.. note::
This action can also be written in lambdas:
.. code-block:: cpp
id(template_text).publish_state("Hello World");
See Also
--------
- :ref:`automation`
- :apiref:`template/text_sensor/template_text_sensor.h`
- :ghedit:`Edit`