Button Component

ESPHome has support for components to create a button entity. A button entity is basically a momentary switch with no state and can be triggered by either YAML or the user/frontend.


Home Assistant Core 2021.12 or higher is required for ESPHome button entities to work.

Base Button Configuration

All buttons in ESPHome have a name and an optional icon.

# Example button configuration
  - platform: ...
    name: Livingroom Lazy Mood
    id: my_button

    # Optional variables:
    icon: "mdi:emoticon-outline"
      - logger.log: "Button pressed"

Configuration variables:

  • name (Required, string): The name for the button.

  • icon (Optional, icon): Manually set the icon to use for the button in the frontend.

  • internal (Optional, boolean): Mark this component as internal. Internal components will not be exposed to the frontend (like Home Assistant). Only specifying an id without a name will implicitly set this to true.

  • disabled_by_default (Optional, boolean): If true, then this entity should not be added to any client’s frontend, (usually Home Assistant) without the user manually enabling it (via the Home Assistant UI).

  • entity_category (Optional, string): The category of the entity. See https://developers.home-assistant.io/docs/core/entity/#generic-properties for a list of available options. Set to "" to remove the default entity category.

  • device_class (Optional, string): The device class for the button. See https://developers.home-assistant.io/docs/core/entity/button/#available-device-classes for a list of available options.


  • on_press (Optional, Automation): An automation to perform when the button is pressed. See on_press.

MQTT options:

Button Automation


This automation will be triggered when the button is pressed.

  - platform: template
    # ...
        - logger.log: Button Pressed

Configuration variables: see Automation.

button.press Action

This is an Action for pressing a button in an Automation.

- button.press: my_button

Configuration variables:

  • id (Required, ID): The ID of the button to set.


Buttons are designed to trigger an action on a device from Home Assistant, and have an unidirectional flow from Home Assistant to ESPHome. If you press a button using this action, no button press event will be triggered in Home Assistant. If you want to trigger an automation in Home Assistant, you should use a Home Assistant event instead.

lambda calls

From lambdas, you can press a button.

  • press(): Press the button.

    // Within lambda, press the button.

See Also