esphome-docs/components/esphome.rst

263 lines
9.6 KiB
ReStructuredText
Raw Normal View History

2019-02-16 23:25:23 +01:00
ESPHome Core Configuration
==========================
2018-05-13 11:37:02 +02:00
2018-11-14 22:12:27 +01:00
.. seo::
2019-02-16 23:25:23 +01:00
:description: Instructions for setting up the core ESPHome configuration.
:image: cloud-circle.png
2018-11-14 22:12:27 +01:00
2019-02-16 23:25:23 +01:00
Here you specify some core information that ESPHome needs to create
2018-05-13 11:37:02 +02:00
firmwares. Most importantly, this is the section of the configuration
where you specify the **name** of the node, the **platform** and
**board** youre using.
.. code-block:: yaml
2018-05-13 11:37:02 +02:00
# Example configuration entry
2019-02-16 23:25:23 +01:00
esphome:
2018-05-13 11:37:02 +02:00
name: livingroom
platform: ESP32
board: nodemcu-32s
Configuration variables:
2018-08-24 22:44:01 +02:00
------------------------
2018-05-13 11:37:02 +02:00
2018-06-01 18:10:00 +02:00
- **name** (**Required**, string): This is the name of the node. It
should always be unique to the node and no other node in your system
can use the same name. It can also only contain upper/lowercase
characters, digits and underscores.
- **platform** (**Required**, string): The platform your board is on,
2019-02-16 23:25:23 +01:00
either ``ESP32`` or ``ESP8266``. See :ref:`esphome-arduino_version`.
- **board** (**Required**, string): The board ESPHome should
2018-06-01 18:10:00 +02:00
specify for platformio. For the ESP32, choose the appropriate one
from `this list <http://docs.platformio.org/en/latest/platforms/espressif32.html#boards>`__
and use `this list <http://docs.platformio.org/en/latest/platforms/espressif8266.html#boards>`__
for ESP8266-based boards.
2018-06-13 22:38:49 +02:00
Advanced options:
2019-02-16 23:25:23 +01:00
- **esphome_core_version** (*Optional*): The version of the C++ `ESPHome-Core framework <https://github.com/esphome/esphome-core>`__
to use. See :ref:`esphome-esphome_core_version`.
2018-09-23 19:00:31 +02:00
- **arduino_version** (*Optional*): The version of the arduino framework to link the project against.
2019-02-16 23:25:23 +01:00
See :ref:`esphome-arduino_version`.
- **build_path** (*Optional*, string): Customize where ESPHome will store the build files
for your node. By default, ESPHome puts all platformio project files under a folder ``<NODE_NAME>/``,
2018-06-13 22:38:49 +02:00
but you can customize this behavior using this option.
2019-01-06 18:56:14 +01:00
- **platformio_options** (*Optional*, mapping): Additional options to pass over to platformio in the
2019-02-16 23:25:23 +01:00
platformio.ini file. See :ref:`esphome-platformio_options`.
2018-09-23 19:00:31 +02:00
- **use_custom_code** (*Optional*, boolean): Whether to configure the project for writing custom components.
This sets up some flags so that custom code should compile correctly
2018-11-26 16:50:50 +01:00
- **includes** (*Optional*, list of files): A list of files to include in the main (auto-generated) sketch file
for custom components. The paths in this list are relative to the directory where the YAML configuration file
is in.
- **libraries** (*Optional*, list of libraries): A list of `platformio libraries <https://platformio.org/lib>`__
to include in the project. See `platformio lib install <https://docs.platformio.org/en/latest/userguide/lib/cmd_install.html>`__.
2019-02-16 23:25:23 +01:00
- **board_flash_mode** (*Optional*, string): The `SPI flash mode <https://github.com/espressif/esptool/wiki/SPI-Flash-Modes>`__
to use for the board. One of ``qio``, ``qout``, ``dio`` and ``dout``. Defaults to ``dout``.
2018-06-13 22:38:49 +02:00
Automations:
2018-06-07 17:07:02 +02:00
- **on_boot** (*Optional*, :ref:`Automation <automation>`): An automation to perform
2019-02-16 23:25:23 +01:00
when the node starts. See :ref:`esphome-on_boot`.
2018-06-07 17:07:02 +02:00
- **on_shutdown** (*Optional*, :ref:`Automation <automation>`): An automation to perform
2019-02-16 23:25:23 +01:00
right before the node shuts down. See :ref:`esphome-on_shutdown`.
2018-09-23 19:00:31 +02:00
- **on_loop** (*Optional*, :ref:`Automation <automation>`): An automation to perform
2019-02-16 23:25:23 +01:00
on each ``loop()`` iteration. See :ref:`esphome-on_loop`.
2018-06-01 18:10:00 +02:00
2019-02-16 23:25:23 +01:00
.. _esphome-esphome_core_version:
2018-05-14 21:15:49 +02:00
2019-02-16 23:25:23 +01:00
``esphome_core_version``
2019-02-16 23:33:36 +01:00
------------------------
2018-05-14 21:15:49 +02:00
2019-02-16 23:25:23 +01:00
With the ``esphome_core_version`` parameter you can tell ESPHome which version of the C++ framework
2018-09-23 19:00:31 +02:00
to use when compiling code. For example, you can configure using the most recent (potentially unstable)
2019-02-16 23:25:23 +01:00
version of ESPHome straight from github. Or you can configure the use of a local copy of esphome-core
2018-09-23 19:00:31 +02:00
using this configuration option.
2018-05-14 21:15:49 +02:00
2019-02-16 23:25:23 +01:00
First, you can configure the use of either the latest esphome-core stable release (``latest``),
2018-09-23 19:00:31 +02:00
the latest development code from GitHub (``dev``), or a specific version number (``1.8.0``).
2018-05-14 21:15:49 +02:00
.. code-block:: yaml
2018-09-23 19:00:31 +02:00
# Example configuration entry
2019-02-16 23:25:23 +01:00
esphome:
2018-09-23 19:00:31 +02:00
# ...
2019-02-16 23:25:23 +01:00
# Use the latest ESPHome stable release
esphome_core_version: latest
2018-09-23 19:00:31 +02:00
# Or use the latest code from github
2019-02-16 23:25:23 +01:00
esphome_core_version: dev
2018-09-23 19:00:31 +02:00
# Use a specific version number
2019-02-16 23:25:23 +01:00
esphome_core_version: 1.8.0
2018-09-23 19:00:31 +02:00
2019-02-16 23:25:23 +01:00
Alternatively, if you want to develop for ESPHome, you can download the
`latest code from GitHub <https://github.com/esphome/esphome-core/archive/dev.zip>`__, extract the contents,
and point ESPHome to your local copy. Then you can modify the ESPHome to your needs or to fix bugs.
2018-05-14 21:15:49 +02:00
.. code-block:: yaml
2018-05-14 21:15:49 +02:00
# Example configuration entry
2019-02-16 23:25:23 +01:00
esphome:
2018-09-23 19:00:31 +02:00
# ...
2019-02-16 23:25:23 +01:00
# Use a local copy of ESPHome
esphome_core_version:
local: path/to/esphome-core
2018-09-23 19:00:31 +02:00
2019-02-16 23:25:23 +01:00
And last, you can make ESPHome use a specific branch/commit/tag from a remote git repository:
2018-09-23 19:00:31 +02:00
.. code-block:: yaml
2018-09-23 19:00:31 +02:00
# Example configuration entry
2019-02-16 23:25:23 +01:00
esphome:
2018-09-23 19:00:31 +02:00
# ...
# Use a specific commit/branch/tag from a remote repository
2019-02-16 23:25:23 +01:00
esphome_core_version:
# Repository defaults to https://github.com/esphome/esphome-core.git
repository: https://github.com/esphome/esphome-core.git
2018-09-23 19:00:31 +02:00
branch: master
2019-02-16 23:25:23 +01:00
esphome_core_version:
repository: https://github.com/somebody/esphome-core.git
2018-09-23 19:00:31 +02:00
commit: d27bac9263e8a0a5a00672245b38db3078f8992c
2019-02-16 23:25:23 +01:00
esphome_core_version:
repository: https://github.com/esphome/esphome-core.git
2018-09-23 19:00:31 +02:00
tag: v1.8.0
2019-02-16 23:25:23 +01:00
.. _esphome-arduino_version:
2018-09-23 19:00:31 +02:00
``arduino_version``
-------------------
2019-02-16 23:25:23 +01:00
ESPHome uses the arduino framework internally to handle all low-level interactions like
2018-09-23 19:00:31 +02:00
initializing the WiFi driver and so on. Unfortunately, every arduino framework version often
has its own quirks and bugs, especially concerning WiFi performance. With the ``arduino_version``
2019-02-16 23:25:23 +01:00
option you can tell ESPHome which arduino framework to use for compiling.
2018-09-23 19:00:31 +02:00
.. code-block:: yaml
2018-09-23 19:00:31 +02:00
# Example configuration entry
2019-02-16 23:25:23 +01:00
esphome:
2018-09-23 19:00:31 +02:00
# ...
# Default: use the recommended version, usually this equals
# the latest version.
arduino_version: recommended
# Use the latest stable version
arduino_version: latest
# Use the latest staged version from GitHub, try this if you have WiFi problems
arduino_version: dev
# Use a specific version
arduino_version: 2.3.0
For the ESP8266, you currently can manually pin the arduino version to these values (see the full
list of arduino frameworks `here <https://github.com/esp8266/Arduino/releases>`__):
* `2.4.2 <https://github.com/esp8266/Arduino/releases/tag/2.4.2>`__ (the latest version)
* `2.4.1 <https://github.com/esp8266/Arduino/releases/tag/2.4.1>`__
* `2.4.0 <https://github.com/esp8266/Arduino/releases/tag/2.4.0>`__
For the ESP32, there's currently only one arduino framework version:
`1.0.0 <https://github.com/espressif/arduino-esp32/releases/tag/1.0.0>`__.
2018-06-03 12:50:44 +02:00
2019-02-16 23:25:23 +01:00
.. _esphome-on_boot:
2018-06-07 17:07:02 +02:00
``on_boot``
2018-08-24 22:44:01 +02:00
-----------
2018-06-07 17:07:02 +02:00
This automation will be triggered when the ESP boots up. By default, it is executed after everything else
is already set up. You can however change this using the ``priority`` parameter.
.. code-block:: yaml
2018-06-07 17:07:02 +02:00
2019-02-16 23:25:23 +01:00
esphome:
2018-06-07 17:07:02 +02:00
# ...
on_boot:
priority: -10
# ...
then:
2018-11-10 14:31:27 +01:00
- switch.turn_off: switch_1
2018-06-07 17:07:02 +02:00
Configuration variables:
- **priority** (*Optional*, float): The priority to execute your custom initialization code. A higher value (for example
positive values) mean a high priority and thus also your code being executed earlier. So for example negative priorities
are executed very late. Defaults to ``-10``. Priorities (you can use any value between them too):
- ``100``: This is where all hardware initialization of vital components is executed. For example setting switches
to their initial state.
2018-11-12 23:31:22 +01:00
- ``50.0``: This is where most sensors are set up.
2018-06-07 17:07:02 +02:00
- ``10``: At this priority, WiFi is initialized.
- ``7.5``: MQTT initialization takes place at this priority.
2018-10-20 15:10:26 +02:00
- ``-5.0``: The individual frontend counterparts for the backend components are configured at this priority
2018-06-07 17:07:02 +02:00
- ``-10.0``: At this priority, pretty much everything should already be initialized.
- See :ref:`Automation <automation>`.
2019-02-16 23:25:23 +01:00
.. _esphome-on_shutdown:
2018-06-07 17:07:02 +02:00
``on_shutdown``
2018-08-24 22:44:01 +02:00
---------------
2018-06-07 17:07:02 +02:00
This automation will be triggered when the ESP is about to shut down. Shutting down is usually caused by
too many WiFi/MQTT connection attempts, Over-The-Air updates being applied or through the :doc:`deep_sleep`.
.. note::
It's not guaranteed that all components are in a connected state when this automation is triggered. For
example, the MQTT client may have already disconnected.
.. code-block:: yaml
2018-06-07 17:07:02 +02:00
2019-02-16 23:25:23 +01:00
esphome:
2018-06-07 17:07:02 +02:00
# ...
on_shutdown:
then:
2018-11-10 14:31:27 +01:00
- switch.turn_off: switch_1
2018-06-07 17:07:02 +02:00
Configuration variables: See :ref:`Automation <automation>`.
2019-02-16 23:25:23 +01:00
.. _esphome-on_loop:
2018-09-23 19:00:31 +02:00
``on_loop``
-----------
This automation will be triggered on every ``loop()`` iteration (usually around every 16 milliseconds).
.. code-block:: yaml
2018-09-23 19:00:31 +02:00
2019-02-16 23:25:23 +01:00
esphome:
2018-09-23 19:00:31 +02:00
# ...
on_loop:
then:
# do something
2019-02-16 23:25:23 +01:00
.. _esphome-platformio_options:
2019-01-06 18:56:14 +01:00
``platformio_options``
----------------------
Platformio supports a number of options in its ``platformio.ini`` file. With the ``platformio_options``
2019-02-16 23:25:23 +01:00
parameter you can tell ESPHome what options to pass into the ``env`` section of the platformio file
2019-01-06 18:56:14 +01:00
(Note you can also do this by editing the ``platformio.ini`` file manually).
You can view a full list of platformio options here: https://docs.platformio.org/en/latest/projectconf/section_env.html
.. code-block:: yaml
# Example configuration entry
2019-02-16 23:25:23 +01:00
esphome:
2019-01-06 18:56:14 +01:00
# ...
platformio_options:
upload_speed: 115200
board_build.f_flash: 80000000L
2018-06-03 12:50:44 +02:00
See Also
2018-08-24 22:44:01 +02:00
--------
2018-06-03 12:50:44 +02:00
- :ghedit:`Edit`
2018-10-12 16:33:22 +02:00
.. disqus::