---
title: RainMachine
description: Instructions on how to integrate RainMachine units within Home Assistant.
ha_category:
  - Irrigation
  - Binary Sensor
  - Sensor
  - Switch
ha_release: 0.69
ha_iot_class: Local Polling
ha_config_flow: true
ha_codeowners:
  - '@bachya'
ha_domain: rainmachine
---

The `rainmachine` integration is the main integration to integrate all platforms related to [RainMachine smart Wi-Fi sprinkler controllers](https://www.rainmachine.com/).

There is currently support for the following device types within Home Assistant:

- Binary Sensor
- Sensor
- [Switch](#switch)

## Base Configuration

To connect to your RainMachine device, add the following to your `configuration.yaml` file:

```yaml
rainmachine:
  controllers:
    - ip_address: 192.168.1.100
      password: YOUR_PASSWORD
```

{% configuration %}
ip_address:
  description: The IP address or hostname of your RainMachine unit.
  required: false
  type: string
password:
  description: Your RainMachine password.
  required: true
  type: string
port:
  description: The TCP port used by your unit for the REST API.
  required: false
  type: integer
  default: 8080
ssl:
  description: Whether communication with the local device should occur over HTTPS.
  required: false
  type: boolean
  default: true
scan_interval:
  description: The frequency (in seconds) between data updates.
  required: false
  type: integer
  default: 60
zone_run_time:
  description: The default number of seconds that a zone should run when turned on.
  required: false
  type: integer
  default: 600
{% endconfiguration %}

## Services

### `rainmachine.disable_program`

Disable a RainMachine program. This will mark the program switch as
`Unavailable` in the UI.

| Service Data Attribute    | Optional | Description             |
|---------------------------|----------|-------------------------|
| `program_id`              |      no  | The program to disable  |

### `rainmachine.disable_zone`

Disable a RainMachine zone. This will mark the zone switch as
`Unavailable` in the UI.

| Service Data Attribute    | Optional | Description             |
|---------------------------|----------|-------------------------|
| `zone_id`                 |      no  | The zone to disable     |

### `rainmachine.enable_program`

Enable a RainMachine program.

| Service Data Attribute    | Optional | Description             |
|---------------------------|----------|-------------------------|
| `program_id`              |      no  | The program to enable   |

### `rainmachine.enable_zone`

Enable a RainMachine zone.

| Service Data Attribute    | Optional | Description             |
|---------------------------|----------|-------------------------|
| `zone_id`                 |      no  | The zone to enable      |

### `rainmachine.pause_watering`

Pause all watering activities for a number of seconds.

| Service Data Attribute    | Optional | Description                    |
|---------------------------|----------|--------------------------------|
| `seconds`                 |      no  | The number of seconds to pause |

### `rainmachine.start_program`

Start a RainMachine program.

| Service Data Attribute    | Optional | Description          |
|---------------------------|----------|----------------------|
| `program_id`              |      no  | The program to start |

### `rainmachine.start_zone`

Start a RainMachine zone for a set number of seconds.

| Service Data Attribute    | Optional | Description                                          |
|---------------------------|----------|------------------------------------------------------|
| `zone_id`                 |      no  | The zone to start                                    |
| `zone_run_time`           |      yes | The number of seconds to run; defaults to 60 seconds |

### `rainmachine.stop_all`

Stop all watering activities.

### `rainmachine.stop_program`

Stop a RainMachine program.

| Service Data Attribute    | Optional | Description          |
|---------------------------|----------|----------------------|
| `program_id`              |      no  | The program to stop  |

### `rainmachine.stop_zone`

Stop a RainMachine zone.

| Service Data Attribute    | Optional | Description          |
|---------------------------|----------|----------------------|
| `zone_id`                 |      no  | The zone to stop     |

### `rainmachine.unpause_watering`

Unpause all watering activities.

## Switch

The `rainmachine` switch platform allows you to control programs and zones within a [RainMachine smart Wi-Fi sprinkler controller](https://www.rainmachine.com/).

### Controlling Your Device

After Home Assistant loads, new switches will be added for every enabled program and zone. These work as expected:

- Program On/Off: starts/stops a program
- Zone On/Off: starts/stops a zone (using the `zone_run_time` parameter to determine how long to run for)

Programs and zones are linked. While a program is running, you will see both the program and zone switches turned on; turning either one off will turn the other one off (just like in the web app).
