Skip to main content
Version: 1.0

Irrigation Controller

Irrigation Controller is a Powered By Shelly device that automates water flow across multiple zones. It manages up to six irrigation zones, each with configurable duration and water output, and can adjust watering schedules dynamically based on real-time weather data.

For more information about the original Irrigation Controller consult: https://frankever.com/.

The following components are available in Irrigation Controller:

Supported virtual components:

Supported BTHome components:

Virtual Component Configuration

The Irrigation Controller has the following virtual components:

Virtual ComponentTypeAccessDescription
zone0booleanwriteEnables irrigation on zone 0.
zone1booleanwriteEnables irrigation on zone 1.
zone2booleanwriteEnables irrigation on zone 2.
zone3booleanwriteEnables irrigation on zone 3.
zone4booleanwriteEnables irrigation on zone 4.
zone5booleanwriteEnables irrigation on zone 5.
average_temperaturenumberreadReports the average temperature from the weather API, in °C.
last_precipitationnumberreadReports the total rainfall in the last 24 hours (mm/m²).
active_sequenceenumread/writeSelects the active irrigation sequence. Sequence keys are seq_<index> (e.g., seq_1).
zones_statusobjectreadReports information about each zone’s status, including its duration, start time, and the source of the last command.

Handlers Configuration

The Irrigation Controller has the following RPC handlers:

Service.ListSequences

Reports a list of all stored irrigation sequences.

Request

Parameters:

This method takes no parameters.

Response

PropertyTypeDescription

sequences

array

List of stored irrigation sequences. Each sequence object includes:

PropertyTypeDescription

seq_id

number

Unique id of the sequence.

name

string

Name assigned to the sequence.

zones

array

List of zones' indexes associated with this sequence.

rev

number

Revision number of the sequence configuration, reflecting the current state of seq_rev.

Service.SetSequence

Updates an existing sequence.

Request

Parameters:

PropertyTypeDescription

seq_id

number

Sequence id.

name

string

Sequence name

zones

array

List of zone indexes associated with this sequence. If omitted, the sequence’s zones are set to an empty list.

Response

PropertyTypeDescription

rev

number

Revision number of the sequence configuration, reflecting the current state of seq_rev.

On error, the request could fail due to:

  • Invalid sequence id (seq_id).
  • The limit of allowed sequences has been reached.
  • Sequence zones contains invalid zone id.

Service.RemoveSequence

Removes an existing sequence.

Request

Parameters:

PropertyTypeDescription

seq_id

number

Sequence id.

Response

PropertyTypeDescription

rev

number

Revision number of the sequence configuration, reflecting the current state of seq_rev.

On error, the request could fail due to:

  • Invalid seq_id. Error code 69.

Service Configuration

See the Service Configuration Example section for a full example.

PropertyTypeDescription

seq_rev

number

Internal revision counter that increases whenever a sequence is created, edited, or removed. It allows the device or connected clients to detect when the list of sequences has changed.

duration_offset

number

Global irrigation time offset in percent.

limit_zones

number

Maximum number of zones that can be active at the same time.

base_temp

number

Baseline temperature in °C for temperature-based duration adjustment (default 20°C).

weather_api

boolean

Enables weather-based duration adjustment using average temperature (last 6h) and precipitation (last 24h).

zones

array

List of zone configurations (up to 6). Each zone has:

PropertyTypeDescription

name

string

Zone's name

duration

number

Watering duration for the zone (in minutes).

water_amount

number

Water quantity used by the connected watering device for one minute (in mm/m2).

id

number

Service id.

Method Examples

How to enable irrigation on a zone (zone 0)

http://192.168.33.1/rpc/Boolean.Set?owner="service:0"&role="zone0"&value=true

Response

null

How to check the average temperature

http://192.168.33.1/rpc/Number.GetStatus?owner="service:0"&role="average_temperature"

Response

{
"value": 16.3,
"source": "sys",
"last_update_ts": 1761300511
}

How to check the last precipitation

http://192.168.33.1/rpc/Number.GetStatus?owner="service:0"&role="last_precipitation"

Response

{
"value": 2.1,
"source": "sys",
"last_update_ts": 1761300512
}

How to activate a sequence

http://192.168.33.1/rpc/Enum.Set?owner="service:0"&role="active_sequence"&value="seq_1"

Response

null

How to check the zones' status

http://192.168.33.1/rpc/Object.GetStatus?owner="service:0"&role="zones_status"

Response

{
"value": {
"zone0": {
"duration": 10,
"started_at": null,
"source": "init"
},
"zone1": {
"duration": 10,
"started_at": null,
"source": "init"
},
"zone2": {
"duration": 10,
"started_at": null,
"source": "init"
},
"zone3": {
"duration": 10,
"started_at": null,
"source": "init"
},
"zone4": {
"duration": 10,
"started_at": null,
"source": "init"
},
"zone5": {
"duration": 10,
"started_at": null,
"source": "init"
}
},
"source": "sys",
"last_update_ts": 1761564575
}

Handlers Examples

Service.ListSequences Example

http://192.168.33.1/rpc/Service.ListSequences?id=0

Response

{
"sequences": [
{
"seq_id": 0,
"name": "New Sequence",
"zones": [
0,
2
]
},
{
"seq_id": 1,
"name": "New Sequence",
"zones": [
2
]
}
],
"rev": 7
}

Service.SetSequence Example

http://192.168.33.1/rpc/Service.SetSequence?id=0&seq_id=1&name="Sequence with Id 2"&zones=[0]

Response

{
"rev": 9
}

Service.RemoveSequence Example

http://192.168.33.1/rpc/Service.RemoveSequence?id=0&seq_id=0

Response

{
"rev": 10
}

Service Configuration Example

http://192.168.33.1/rpc/Service.GetConfig?id=0

Response

{
"seq_rev": 0,
"duration_offset": 0,
"limit_zones": 2,
"base_temp": 20,
"weather_api": false,
"zones": [
{
"name": null,
"duration": 10,
"water_amount": 10
},
{
"name": null,
"duration": 10,
"water_amount": 10
},
{
"name": null,
"duration": 10,
"water_amount": 10
},
{
"name": null,
"duration": 10,
"water_amount": 10
},
{
"name": null,
"duration": 10,
"water_amount": 10
},
{
"name": null,
"duration": 10,
"water_amount": 10
}
],
"id": 0
}