---
title: Valve
description: Instructions on how to integrate valves into Home Assistant.
ha_category:
  - Valve
ha_release: 2024.1
ha_quality_scale: internal
ha_codeowners:
  - '@home-assistant/core'
ha_domain: valve
ha_integration_type: entity
---

The valve entity in Home Assistant provides an interface to control valves such as water, gas, or air valves.

{% include integrations/building_block_integration.md %}

## Device class

You can change the device class of the valve in the [customize section](/docs/configuration/customizing-devices/). Valves support the following device classes:

- **None**: Generic valve. This is the default and doesn't need to be set.
- **water**: Valve that controls the flow of water through a system.
- **gas**: Valve that controls the flow of gas through a system.

## Services

### Valve control services

All valves respond to `valve.open`, `valve.close`, and `valve.toggle`.
Valves that allow setting a specific position may also be controlled with `valve.set_position` and `valve.stop`.

| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `entity_id` | yes | String or list of strings that point at `entity_id`'s of valves. Use `entity_id: all` to target all.

#### Automation example

```yaml
automation:
  trigger:
    platform: time
    at: "07:15:00"
  action:
    - service: valve.close
      target:
        entity_id: valve.demo
```

### Service `valve.set_position`

Set the position of one or multiple valves if they support setting a specific position.

| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `entity_id` | yes | String or list of strings that point at `entity_id`'s of valves. Use `entity_id: all` to target all.
| `position` | no | Integer between 0 (fully closed) and 100 (fully open).

#### Automation example

```yaml
automation:
  trigger:
    platform: time
    at: "07:15:00"
  action:
    - service: valve.set_position
      target:
        entity_id: valve.demo
      data:
        position: 50
```