2.8 KiB
title, description, ha_category, ha_release, ha_quality_scale, ha_domain, ha_codeowners, ha_integration_type, related
title | description | ha_category | ha_release | ha_quality_scale | ha_domain | ha_codeowners | ha_integration_type | related | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Button | Instructions on how to set up your button with Home Assistant. |
|
2021.12 | internal | button |
|
entity |
|
A button {% term entity %} is an entity that can fire an {% term event %} / trigger an {% term action %} towards a {% term device %} or {% term 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.
{% include integrations/building_block_integration.md %}
The state of a button
The button {% term entity %} is stateless, as in, it cannot have a state like the on
or
off
state that, for example, a normal switch entity has.
The state of a button is a timestamp showing the date and time of the last time the button had been pressed in the Home Assistant UI or via an action.
Screenshot showing the state of a button entity in the developer tools.
In addition, the entity can have the following states:
- Unavailable: The entity is currently unavailable.
- Unknown: The state is not yet known.
Because the {% term state %} of a button entity in Home Assistant is a timestamp, it changes every time the button is pressed. This means we can trigger automations on any state change of the button entity, which effectively captures when the button is pressed. We don't need to use the actual timestamp value; we only care that the state changed, indicating a button press:
triggers:
- trigger: state
entity_id: button.my_button
actions:
- action: notify.frenck
data:
message: "My button has been pressed!"
Actions
The button entities exposes a single {% term action %}: {% my developer_call_service service="button.press" %}
This action can be called to trigger a button press for that entity.
- action: button.press
target:
entity_id: button.my_button
Device class
{% include integrations/device_class_intro.md %}
The screenshot shows different icons representing different device classes for buttons:
Example of device class icons.
The following device classes are supported for buttons:
- 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.