A button entity is an entity that can fire an event / trigger an action towards a device or service but remains stateless from the Home Assistant perspective.

It can be compared to a real live momentary switch, push-button, or some other form of a stateless switch.

Building block integration

The button integration cannot be directly used. You cannot create your own button entities using this integration. This integration is a building block for other integrations to use, enabling them to create button entities for you.

The state of a button

The button entity is stateless, as in, it cannot have a state like the on or off state that, for example, a normal switch entity has.

Every button entity does keep track of the timestamp of when the last time the button entity has been pressed in the Home Assistant UI or pressed via a service call.

Because the state of a button entity in Home Assistant is a timestamp, it means we can use it in our automations. For example:

  - platform: state
    entity_id: button.my_button
  - service: notify.frenck
      message: "My button has been pressed!"


The button entities exposes a single service: button.press

This service can be called to trigger a button press for that entity.

- service: button.press
    entity_id: button.my_button

Device Class

The way these buttons are displayed in the frontend can be modified in the customize section. The following device classes are supported for buttons:

Example of device class icons.

  • None: Generic button. This is the default and doesn’t need to be set.
  • identify: The button is used to identify a device.
  • restart: The button restarts the device.
  • update: The button updates the software of the device.