esphome-docs/esphomeyaml/components/switch/index.rst

157 lines
3.7 KiB
ReStructuredText
Raw Normal View History

2018-05-13 11:37:02 +02:00
Switch Component
================
2018-11-14 22:12:27 +01:00
.. seo::
:description: Instructions for setting up generic switches in esphomelib.
:image: folder-open.png
2018-11-14 22:12:27 +01:00
2018-05-13 11:37:02 +02:00
The ``switch`` domain includes all platforms that should show up like a
switch and can only be turned ON or OFF.
2018-06-01 18:10:00 +02:00
.. _config-switch:
2018-05-13 11:37:02 +02:00
Base Switch Configuration
-------------------------
.. code-block:: yaml
2018-05-13 11:37:02 +02:00
switch:
- platform: ...
name: "Switch Name"
icon: "mdi:restart"
Configuration variables:
- **name** (**Required**, string): The name of the switch.
- **icon** (*Optional*, icon): Manually set the icon to use for the
sensor in the frontend.
2018-05-17 17:34:45 +02:00
- **inverted** (*Optional*, boolean): Whether to invert the binary
state, i.e. report ON states as OFF and vice versa. Defaults
to ``False``.
2018-06-01 18:10:00 +02:00
- All other options from :ref:`MQTT Component <config-mqtt-component>`.
.. _switch-toggle_action:
``switch.toggle`` Action
2018-08-24 22:44:01 +02:00
************************
2018-06-01 18:10:00 +02:00
This action toggles a switch with the given ID when executed.
.. code-block:: yaml
2018-06-01 18:10:00 +02:00
on_...:
then:
2018-11-10 14:33:24 +01:00
- switch.toggle: relay_1
2018-06-01 18:10:00 +02:00
.. _switch-turn_on_action:
``switch.turn_on`` Action
2018-08-24 22:44:01 +02:00
*************************
2018-06-01 18:10:00 +02:00
This action turns a switch with the given ID on when executed.
.. code-block:: yaml
2018-06-01 18:10:00 +02:00
on_...:
then:
2018-10-26 22:30:24 +02:00
- switch.turn_on: relay_1
2018-06-01 18:10:00 +02:00
.. _switch-turn_off_action:
``switch.turn_off`` Action
2018-08-24 22:44:01 +02:00
**************************
2018-06-01 18:10:00 +02:00
This action turns a switch with the given ID off when executed.
.. code-block:: yaml
2018-06-01 18:10:00 +02:00
on_...:
then:
2018-10-26 22:30:24 +02:00
- switch.turn_off: relay_1
2018-06-01 18:10:00 +02:00
2019-01-06 18:56:14 +01:00
.. _switch-is_on_condition:
.. _switch-is_off_condition:
``switch.is_on`` / ``switch.is_off`` Condition
**********************************************
This :ref:`Condition <config-condition>` checks if the given switch is ON (or OFF).
.. code-block:: yaml
# In some trigger:
on_...:
if:
condition:
# Same syntax for is_off
switch.is_on: my_switch
2018-06-07 15:55:31 +02:00
lambda calls
2018-08-24 22:44:01 +02:00
************
2018-06-07 15:55:31 +02:00
From :ref:`lambdas <config-lambda>`, you can call several methods on all covers to do some
advanced stuff (see the full :doc:`API Reference </api/cover/index>` for more info).
- ``publish_state()``: Manually cause the switch to publish a new state and store it internally.
If it's different from the last internal state, it's additionally published to the frontend.
.. code-block:: yaml
2018-06-07 15:55:31 +02:00
// Within lambda, make the switch report a specific state
id(my_switch).publish_state(false);
id(my_switch).publish_state(true);
- ``state``: Retrieve the current state of the switch.
.. code-block:: yaml
2018-06-07 15:55:31 +02:00
// Within lambda, get the switch state and conditionally do something
if (id(my_switch).state) {
2018-06-07 15:55:31 +02:00
// Switch is ON, do something here
} else {
// Switch is OFF, do something else here
}
2019-01-06 18:56:14 +01:00
- ``turn_off()``/``turn_on``: Manually turn the switch ON/OFF from code.
2018-06-07 15:55:31 +02:00
Similar to the ``switch.turn_on`` and ``switch.turn_off`` actions,
but can be used in complex lambda expressions.
.. code-block:: yaml
2018-06-07 15:55:31 +02:00
2019-01-06 18:56:14 +01:00
id(my_switch).turn_off();
id(my_switch).turn_on(true);
2018-06-07 15:55:31 +02:00
// Toggle the switch
2019-01-06 18:56:14 +01:00
id(my_switch).toggle();
2018-06-07 15:55:31 +02:00
2018-12-05 10:19:48 +01:00
.. _switch-is_on_off_condition:
``switch.is_on`` / ``switch.is_off`` Condition
**********************************************
2018-12-05 10:19:48 +01:00
2018-12-05 22:48:16 +01:00
This :ref:`condition <config-condition>` passes if the given switch is on/off.
2018-12-05 10:19:48 +01:00
.. code-block:: yaml
# in a trigger:
on_...:
if:
condition:
switch.is_on: my_switch
# same goes for is_off
then:
- script.execute: my_script
2018-06-01 18:10:00 +02:00
See Also
2018-08-24 22:44:01 +02:00
--------
2018-06-01 18:10:00 +02:00
- :doc:`API Reference </api/switch/index>`
2018-06-04 08:17:22 +02:00
- `Edit this page on GitHub <https://github.com/OttoWinter/esphomedocs/blob/current/esphomeyaml/components/switch/index.rst>`__
2018-06-01 18:10:00 +02:00
.. toctree::
:maxdepth: 1
:glob:
2018-06-01 18:10:00 +02:00
*
2018-10-12 16:33:22 +02:00
.. disqus::