Template Select

The template Select platform allows you to create a Select with templated values using lambdas.

# Example configuration entry
  - platform: template
    name: "Template select"
    optimistic: true
      - one
      - two
      - three
    initial_option: two

Configuration variables:

  • name (Required, string): The name of the Select.

  • options (Required, list): The list of options this Select has.

  • lambda (Optional, lambda): Lambda to be evaluated every update interval to get the current option of the select.

  • set_action (Optional, Action): The action that should be performed when the remote (like Home Assistant’s frontend) requests to set the Select option. The new option is available to lambdas in the x variable.

  • update_interval (Optional, Time): The interval on which to update the select by executing the lambda. Defaults to 60s.

  • optimistic (Optional, boolean): Whether to operate in optimistic mode - when in this mode, any command sent to the Template Select will immediately update the reported state. Cannot be used with lambda. Defaults to false.

  • restore_value (Optional, boolean): Saves and loads the state to RTC/Flash. Cannot be used with lambda. Defaults to false.

  • initial_option (Optional, string): The option to set the option to on setup if not restored with restore_value. Cannot be used with lambda. Defaults to the first option in the options list.

  • id (Optional, ID): Manually specify the ID used for code generation.

  • All other options from Select.


If you don’t set a lambda and optimistic is false (default), updates to the select component state will need to be taken care of as part of your set_action using id(my_select).publish_state(x); (in a lambda). Do not use select.set Action here, as this would generate a loop. Also, don’t use id(my_select).state = x as this won’t have the desired effect (e.g. HA won’t update with the change).

select.set Action

You can also set an option for the template select from elsewhere in your YAML file with the select.set Action.

See Also