--- title: Input Number description: Instructions on how to integrate the Input Number integration into Home Assistant. ha_category: - Automation - Helper ha_release: 0.55 ha_quality_scale: internal ha_codeowners: - '@home-assistant/core' ha_domain: input_number ha_integration_type: helper --- The `input_number` integration allows the user to define values that can be controlled via the frontend and can be used within conditions of automation. The frontend can display a slider, or a numeric input box. Changes to the slider or numeric input box generate state events. These state events can be utilized as `automation` triggers as well. The preferred way to configure an input number is via the user interface at **{% my helpers title="Settings > Devices & Services > Helpers" %}**. Click the add button and then choose the **{% my config_flow_start domain=input_number title="Number" %}** option. To be able to add **Helpers** via the user interface you should have `default_config:` in your `configuration.yaml`, it should already be there by default unless you removed it. If you removed `default_config:` from you configuration, you must add `input_number:` to your `configuration.yaml` first, then you can use the UI. Input numbers can also be configured via `configuration.yaml`: ```yaml # Example configuration.yaml entry input_number: slider1: name: Slider initial: 30 min: -20 max: 35 step: 1 box1: name: Numeric Input Box initial: 30 min: -20 max: 35 step: 1 mode: box ``` {% configuration %} input_number: description: Alias for the input. Multiple entries are allowed. required: true type: map keys: min: description: Minimum value. required: true type: float max: description: Maximum value. required: true type: float name: description: Friendly name of the input. required: false type: string initial: description: Initial value when Home Assistant starts. required: false type: float default: The value at shutdown step: description: Step value. Smallest value `0.001`. required: false type: float default: 1 mode: description: Can specify `box` or `slider`. required: false type: string default: slider unit_of_measurement: description: Unit of measurement in which the value of the slider is expressed in. required: false type: string icon: description: Icon to display in front of the input element in the frontend. required: false type: icon {% endconfiguration %} ### Services This integration provides the following services to modify the state of the `input_number` and a service to reload the configuration without restarting Home Assistant itself. | Service | Data | Description | | ------- | ---- | ----------- | | `decrement` | `entity_id(s)`
`area_id(s)` | Decrement the value of specific `input_number` entities by `step` | `increment` | `entity_id(s)`
`area_id(s)` | Increment the value of specific `input_number` entities by `step` | `reload` | | Reload `input_number` configuration | | `set_value` | `value`
`entity_id(s)`
`area_id(s)` | Set the value of specific `input_number` entities ### Restore State If you set a valid value for `initial` this integration will start with the state set to that value. Otherwise, it will restore the state it had prior to Home Assistant stopping. Please note that `initial` is only available in a YAML configuration and not via the Home Assistant user interface. ### Scenes To set the value of an input_number in a [Scene](/integrations/scene/): ```yaml # Example configuration.yaml entry scene: - name: Example Scene entities: input_number.example_number: 13 ``` ## Automation Examples Here's an example of `input_number` being used as a trigger in an automation. {% raw %} ```yaml # Example configuration.yaml entry using 'input_number' as a trigger in an automation input_number: bedroom_brightness: name: Brightness initial: 254 min: 0 max: 254 step: 1 automation: - alias: "Bedroom Light - Adjust Brightness" trigger: platform: state entity_id: input_number.bedroom_brightness action: - service: light.turn_on target: entity_id: light.bedroom data: brightness: "{{ trigger.to_state.state | int }}" ``` {% endraw %} Another code example using `input_number`, this time being used in an action in an automation. {% raw %} ```yaml # Example configuration.yaml entry using 'input_number' in an action in an automation input_select: scene_bedroom: name: Scene options: - Select - Concentrate - Energize - Reading - Relax - 'OFF' initial: "Select" input_number: bedroom_brightness: name: Brightness initial: 254 min: 0 max: 254 step: 1 automation: - alias: "Bedroom Light - Custom" trigger: platform: state entity_id: input_select.scene_bedroom to: CUSTOM action: - service: light.turn_on target: entity_id: light.bedroom data: brightness: "{{ states('input_number.bedroom_brightness') | int }}" ``` {% endraw %} Example of `input_number` being used in a bidirectional manner, both being set by and controlled by an MQTT action in an automation. {% raw %} ```yaml # Example configuration.yaml entry using 'input_number' in an action in an automation input_number: target_temp: name: Target Heater Temperature Slider min: 1 max: 30 step: 1 unit_of_measurement: step icon: mdi:target # This automation script runs when a value is received via MQTT on retained topic: setTemperature # It sets the value slider on the GUI. This slides also had its own automation when the value is changed. automation: - alias: "Set temp slider" trigger: platform: mqtt topic: "setTemperature" action: service: input_number.set_value target: entity_id: input_number.target_temp data: value: "{{ trigger.payload }}" # This second automation script runs when the target temperature slider is moved. # It publishes its value to the same MQTT topic it is also subscribed to. - alias: "Temp slider moved" trigger: platform: state entity_id: input_number.target_temp action: service: mqtt.publish data: topic: "setTemperature" retain: true payload: "{{ states('input_number.target_temp') | int }}" ``` {% endraw %} Here's an example of `input_number` being used as a delay in an automation. {% raw %} ```yaml # Example configuration.yaml entry using 'input_number' as a delay in an automation input_number: minutes: name: minutes icon: mdi:clock-start initial: 3 min: 0 max: 6 step: 1 seconds: name: seconds icon: mdi:clock-start initial: 30 min: 0 max: 59 step: 10 automation: - alias: "turn something off after x time after turning it on" trigger: platform: state entity_id: switch.something to: "on" action: - delay: "00:{{ states('input_number.minutes') | int }}:{{ states('input_number.seconds') | int }}" - service: switch.turn_off target: entity_id: switch.something ``` {% endraw %}