2020-09-21 01:58:32 +02:00
# Hydrawise Binding
![API Key ](doc/logo.png )
The Hydrawise binding allows monitoring and control of [Hunter Industries's ](https://www.hunterindustries.com/ ) line of [Hydrawise ](https://www.hydrawise.com ) internet connected irrigation systems.
## Supported Things
2024-11-25 22:59:37 +01:00
- `account` : Bridge type represents the user's account on the Hydrawise cloud service. The bridge can have one or more child [Controllers ](#controller-thing ) linked.
2021-08-01 20:03:37 +02:00
An account must be manually added and configured.
2024-11-25 22:59:37 +01:00
- `controller` Things are automatically discovered once an account Bridge is properly configured.[more details](#local-thing)
- `local` Things uses an undocumented API that allows direct HTTP access to an irrigation controller on the user's network. [more details ](#local-thing )
2021-08-01 20:03:37 +02:00
2024-11-25 22:59:37 +01:00
### `controller` Thing
2021-08-01 20:03:37 +02:00
The Controller Thing type is the primary way most users will control and monitor their irrigation system.
2024-10-28 21:09:24 +01:00
This allows full control over zones, sensors and weather forecasts.< br >
2022-12-08 21:36:05 +01:00
Changes made through this Thing type will be reflected in the Hydrawise mobile and web applications as well as in their reporting modules.
2024-11-25 22:59:37 +01:00
Controller Things require a parent `account` Bridge
2020-09-21 01:58:32 +02:00
2024-11-25 22:59:37 +01:00
### `local` Thing
2020-09-21 01:58:32 +02:00
2024-09-28 17:46:53 +02:00
The Local Thing type uses an undocumented API that allows direct HTTP access to an irrigation controller on the user's network.
This provides a subset of features compared to the Cloud Thing type limited to basic zone control.
2022-12-08 21:36:05 +01:00
Controlling zones through the local API will not be reported back to the cloud service or the Hydrawise mobile/web applications, and reporting functionality will not reflect the locally controlled state.
2020-09-21 01:58:32 +02:00
2021-08-01 20:03:37 +02:00
Local control may not be available on later Hydrawise controller firmware versions.
2022-12-08 21:36:05 +01:00
Use Cases
2020-09-21 01:58:32 +02:00
2024-09-28 17:46:53 +02:00
- The Local thing can be useful when testing zones, as there is no delay when starting/stopping zones as compared to the cloud API which can take anywhere between 5-15 seconds.
2022-12-08 21:36:05 +01:00
- This is also useful if you wish to not use the cloud scheduling at all and use openHAB as the irrigation scheduling system.
2020-09-21 01:58:32 +02:00
## Thing Configuration
2024-11-25 22:59:37 +01:00
### `account` Bridge Configuration
2020-09-21 01:58:32 +02:00
2022-12-02 13:07:31 +01:00
| Configuration Name | type | required | Comments |
|--------------------|---------|----------|---------------------------------------------------------------------------------------------------------------------------|
| userName | String | False | The Hydrawise account user name |
| password | String | False | The Hydrawise account password |
| savePassword | Boolean | False | By default the password will be not be persisted after the first login attempt unless this is true, defaults to false |
| refresh | Integer | False | Defaults to a 60 second polling rate, more frequent polling may cause the service to deny requests |
| refreshToken | Boolean | False | An oAuth refresh token, this will be automatically configured after the first login and updated as the token is refreshed |
2020-09-21 01:58:32 +02:00
2024-11-25 22:59:37 +01:00
### `controller` Thing Configuration
2020-09-21 01:58:32 +02:00
2021-08-01 20:03:37 +02:00
| Configuration Name | type | required | Comments |
|--------------------|---------|----------|----------------------|
| controllerId | Integer | True | ID of the controller |
2020-09-21 01:58:32 +02:00
2024-11-25 22:59:37 +01:00
### `local` Thing Configuration
2020-09-21 01:58:32 +02:00
| Configuration Name | type | required | Comments |
|--------------------|---------|----------|-----------------------------------------------------------------------------------------------------------------|
| host | String | True | IP or host name of the controller on your network |
2021-08-01 20:03:37 +02:00
| username | String | True | User name (usually admin) set on the touch panel of the controller |
2020-09-21 01:58:32 +02:00
| password | String | True | Password set on the touch panel of the controller. This can be found under the setting menu on the controller. |
| refresh | Integer | True | Defaults to a 30 seconds polling rate |
2024-11-25 22:59:37 +01:00
## Channels and Groups
2020-09-21 01:58:32 +02:00
### Channel Groups
2024-11-25 22:59:37 +01:00
### Controller Thing Supported Channel Groups
| channel group ID |
|---------------------------------------|
| [Controller ](#controller-thing-1 ) |
| [Zones ](#zone-channel-group ) |
| [All Zones ](#all-zones-channel-group ) |
| [Sensor ](#sensor-channel-group ) |
| [Forecast ](#forecast-channel-group ) |
#### Local Thing Supported Channel Groups
| channel group ID |
|---------------------------------------|
| [Zones ](#zone-channel-group ) |
| [All Zones ](#all-zones-channel-group ) |
2021-08-01 20:03:37 +02:00
#### System Channel Group
| channel group ID | Description |
|------------------|---------------------------------|
| system | System status of the controller |
2020-09-21 01:58:32 +02:00
#### Zone Channel Group
Up to 36 total zones are supported per Local or Cloud thing
| channel group ID | Description |
|------------------|---------------------------|
| zone1 | Zone 1 channel group |
| zone2 | Zone 1 channel group |
| ... | Zone 3 - 35 channel group |
| zone36 | Zone 36 channel group |
#### Sensor Channel Group
Up to 4 total sensors are supported per Cloud Thing
| channel group ID | Description |
|------------------|------------------------|
| sensor1 | Sensor 1 channel group |
| sensor2 | Sensor 2 channel group |
| sensor3 | Sensor 3 channel group |
| sensor4 | Sensor 4 channel group |
#### Forecast Channel Group
2021-08-01 20:03:37 +02:00
Up to 3 total weather forecasts are supported per Cloud Thing
2020-09-21 01:58:32 +02:00
| channel group ID | Description |
|------------------|-----------------|
| forecast1 | Todays Forecast |
| forecast2 | Day 2 Forecast |
| forecast3 | Day 3 Forecast |
#### All Zones Channel Group
A single all zone group are supported per Cloud or Local Thing
| channel group ID | Description |
|------------------|------------------------|
| allzones | commands for all zones |
### Channels
2021-08-01 20:03:37 +02:00
Channels uses across zones, sensors and forecasts
2022-12-08 21:36:05 +01:00
2021-08-01 20:03:37 +02:00
| channel ID | type | Groups | description | Read Write |
|----------------------------|--------------------|----------------|-----------------------------------------------|------------|
| name | String | zone, sensor | Descriptive name | R |
| icon | String | zone | Icon URL | R |
| type | Number | zone | Zone type | R |
| run | Switch | zone, allzones | Run/Start zone | RW |
| runcustom | Number:Time | zone, allzones | Run zone for custom length | W |
| suspend | Switch | zone, allzones | Suspend zone | RW |
| suspenduntil | DateTime | zone, allzones | Suspend zone unitl specified date | RW |
| nextrun | DateTime | zone | Next date and time this zone will run | R |
| timeleft | Number:Time | zone | Amount of time left for the running zone | R |
| input | Number | sensor | Sensor input type | R |
| timer | Number | sensor | Sensor timer | R |
| offtimer | Number:Time | sensor | Sensor off timer | R |
| offlevel | Number | sensor | Sensor off level | R |
| active | Switch | sensor | Is sensor active / triggered | R |
| temperaturehigh | Number:Temperature | forecast | Daily high temperature | R |
| temperaturelow | Number:Temperature | forecast | Daily low temperature | R |
| conditions | String | forecast | Daily conditions description | R |
| day | DateTime | forecast | Day of week of forecast (Mon-Sun) | R |
| humidity | Number | forecast | Daily humidity percentage | R |
| wind | Number:Speed | forecast | Daily wind speed | R |
| evapotranspiration | Number | forecast | Daily evapotranspiration amount | R |
| precipitation | Number | forecast | Daily precipitation amount | R |
| probabilityofprecipitation | Number | forecast | Daily probability of precipitation percentage | R |
2020-09-21 01:58:32 +02:00
## Full Example
2024-11-25 22:59:37 +01:00
## `demo.things` Example
```java
Bridge hydrawise:account:myaccount "Hydrawise Cloud" [ userName="my-username", password="my-password", savePassword=true, refresh=120 ] {
Thing controller irrigation1 "Frontyard Controller" [ controllerId="12345" ]
Thing controller irrigation2 "Backyard Controller" [ controllerId="67890" ]
}
Thing local directIrrigation "Garden Controller" [ host="host-ip", username="my-username", password="my-password", refresh="30" ]
```
## `demo.items` Example
2022-12-08 21:36:05 +01:00
```java
2021-08-01 20:03:37 +02:00
Group Sprinkler "Sprinkler"
Group SprinklerController "Controller" (Sprinkler)
Group SprinklerZones "Zones" (Sprinkler)
Group SprinklerSensors "Sensors" (Sprinkler)
Group SprinkerForecast "Forecast" (Sprinkler)
String SprinkerControllerStatus "Status [%s]" (SprinklerController) {channel="hydrawise:controller:myaccount:123456:controller#status"}
2022-08-17 10:07:04 +02:00
Number SprinkerControllerLastContact "Last Contact [%d]" (SprinklerController) {channel="hydrawise:controller:myaccount:123456:controller#lastcontact"}
2021-08-01 20:03:37 +02:00
Switch SprinklerSensor1 "Sprinler Sensor" (SprinklerSensors) {channel="hydrawise:controller:myaccount:123456:sensor1#active"}
Group SprinkerForecastDay1 "Todays Forecast" (SprinkerForecast)
Number:Temperature SprinkerForecastDay1HiTemp "High Temp [%d]" (SprinkerForecastDay1) {channel="hydrawise:controller:myaccount:123456:forecast1#temperaturehigh"}
Number:Temperature SprinkerForecastDay1LowTemp "Low Temp [%d]" (SprinkerForecastDay1) {channel="hydrawise:controller:myaccount:123456:forecast1#temperaturelow"}
String SprinkerForecastDay1Conditions "Conditions [%s]" (SprinkerForecastDay1) {channel="hydrawise:controller:myaccount:123456:forecast1#conditions"}
String SprinkerForecastDay1Day "Day [%s]" (SprinkerForecastDay1) {channel="hydrawise:controller:myaccount:123456:forecast1#day"}
Number SprinkerForecastDay1Humidity "Humidity [%d%%]" (SprinkerForecastDay1) {channel="hydrawise:controller:myaccount:123456:forecast1#humidity"}
Number:Speed SprinkerForecastDay1Wind "Wind [%s]" (SprinkerForecastDay1) {channel="hydrawise:controller:myaccount:123456:forecast1#wind"}
2020-09-21 01:58:32 +02:00
Group SprinklerZone1 "1 Front Office Yard" (SprinklerZones)
2021-08-01 20:03:37 +02:00
String SprinklerZone1Name "1 Front Office Yard name" (SprinklerZone1) {channel="hydrawise:controller:myaccount:123456:zone1#name"}
Switch SprinklerZone1Run "1 Front Office Yard Run" (SprinklerZone1) {channel="hydrawise:controller:myaccount:123456:zone1#run"}
2020-09-21 01:58:32 +02:00
Switch SprinklerZone1RunLocal "1 Front Office Yard Run (local)" (SprinklerZone1) {channel="hydrawise:local:home:zone1#run"}
2021-08-01 20:03:37 +02:00
Number SprinklerZone1RunCustom "1 Front Office Yard Run Custom" (SprinklerZone1) {channel="hydrawise:controller:myaccount:123456:zone1#runcustom"}
DateTime SprinklerZone1StartTime "1 Front Office Yard Start Time [%s]" (SprinklerZone1) {channel="hydrawise:controller:myaccount:123456:zone1#nextruntime"}
Number SprinklerZone1TimeLeft "1 Front Office Yard Time Left" (SprinklerZone1) {channel="hydrawise:controller:myaccount:123456:zone1#timeleft"}
String SprinklerZone1Icon "1 Front Office Yard Icon" (SprinklerZone1) {channel="hydrawise:controller:myaccount:123456:zone1#icon"}
2020-09-21 01:58:32 +02:00
Group SprinklerZone2 "2 Back Circle Lawn" (SprinklerZones)
2021-08-01 20:03:37 +02:00
String SprinklerZone2Name "2 Back Circle Lawn name" (SprinklerZone2) {channel="hydrawise:controller:myaccount:123456:zone2#name"}
Switch SprinklerZone2Run "2 Back Circle Lawn Run" (SprinklerZone2) {channel="hydrawise:controller:myaccount:123456:zone2#run"}
2020-09-21 01:58:32 +02:00
Switch SprinklerZone2RunLocal "2 Back Circle Lawn Run (local)" (SprinklerZone2) {channel="hydrawise:local:home:zone2#run"}
2021-08-01 20:03:37 +02:00
Number SprinklerZone2RunCustom "2 Back Circle Lawn Run Custom" (SprinklerZone2) {channel="hydrawise:controller:myaccount:123456:zone2#runcustom"}
DateTime SprinklerZone2StartTime "2 Back Circle Lawn Start Time" (SprinklerZone2) {channel="hydrawise:controller:myaccount:123456:zone2#nextruntime"}
Number SprinklerZone2TimeLeft "2 Back Circle Lawn Time Left" (SprinklerZone2) {channel="hydrawise:controller:myaccount:123456:zone2#timeleft"}
String SprinklerZone2Icon "2 Back Circle Lawn Icon" (SprinklerZone2) {channel="hydrawise:controller:myaccount:123456:zone2#icon"}
2020-09-21 01:58:32 +02:00
Group SprinklerZone3 "3 Left of Drive Lawn" (SprinklerZones)
2021-08-01 20:03:37 +02:00
String SprinklerZone3Name "3 Left of Drive Lawn name" (SprinklerZone3) {channel="hydrawise:controller:myaccount:123456:zone3#name"}
Switch SprinklerZone3Run "3 Left of Drive Lawn Run" (SprinklerZone3) {channel="hydrawise:controller:myaccount:123456:zone3#run"}
2020-09-21 01:58:32 +02:00
Switch SprinklerZone3RunLocal "3 Left of Drive Lawn Run (local)" (SprinklerZone3) {channel="hydrawise:local:home:zone3#run"}
2021-08-01 20:03:37 +02:00
Number SprinklerZone3RunCustom "3 Left of Drive Lawn Run Custom" (SprinklerZone3) {channel="hydrawise:controller:myaccount:123456:zone3#runcustom"}
DateTime SprinklerZone3StartTime "3 Left of Drive Lawn Start Time" (SprinklerZone3) {channel="hydrawise:controller:myaccount:123456:zone3#nextruntime"}
Number SprinklerZone3TimeLeft "3 Left of Drive Lawn Time Left" (SprinklerZone3) {channel="hydrawise:controller:myaccount:123456:zone3#timeleft"}
String SprinklerZone3Icon "3 Left of Drive Lawn Icon" (SprinklerZone3) {channel="hydrawise:controller:myaccount:123456:zone3#icon"}
2020-09-21 01:58:32 +02:00
```