[hydrawise] Migrate to new GraphQL based API (#10947)
* [hydrawise] Migrated to new GraphQL based API Fixes #7261 Signed-off-by: Dan Cunningham <dan@digitaldan.com> * Addressed PR comments. Signed-off-by: Dan Cunningham <dan@digitaldan.com> * Address PR review comments. Signed-off-by: Dan Cunningham <dan@digitaldan.com>
This commit is contained in:
@@ -6,20 +6,32 @@ The Hydrawise binding allows monitoring and control of [Hunter Industries's](htt
|
||||
|
||||
## Supported Things
|
||||
|
||||
### Cloud Thing
|
||||
|
||||
### Account Bridge Thing
|
||||
|
||||
The Cloud Thing type is the primary way most users will control and monitor their irrigation system.
|
||||
The Account Bridge Thing type represents the user's account on the Hydrawise cloud service. The bridge can have one or more child [Controllers](#Controller-Thing) linked.
|
||||
|
||||
An account must be manually added and configured.
|
||||
|
||||
### Controller Thing
|
||||
|
||||
Controller Things are automatically discovered once an [Account Bridge](#Account-Bridge-Thing) has be properly configured.
|
||||
|
||||
The Controller Thing type is the primary way most users will control and monitor their irrigation system.
|
||||
This allows full control over zones, sensors and weather forecasts.
|
||||
Changes made through this Thing type will be reflected in the Hydrawise mobile and web applications as well as in their reporting modules.
|
||||
|
||||
#### Cloud Thing Supported Channel Groups
|
||||
Controller Things require a parent [Account Bridge](#Account-Bridge-Thing)
|
||||
|
||||
| channel group ID |
|
||||
|---------------------------------------|
|
||||
| [Zones](#Zone-Channel-Group) |
|
||||
| [All Zones](#All-Zones-Channel-Group) |
|
||||
| [Sensor](#Sensor-Channel-Group) |
|
||||
| [Forecast](#Sensor-Channel-Group) |
|
||||
#### Controller Thing Supported Channel Groups
|
||||
|
||||
| channel group ID |
|
||||
|-----------------------------------------------|
|
||||
| [Controller](#Cloud-Controller-Channel-Group) |
|
||||
| [Zones](#Zone-Channel-Group) |
|
||||
| [All Zones](#All-Zones-Channel-Group) |
|
||||
| [Sensor](#Sensor-Channel-Group) |
|
||||
| [Forecast](#Sensor-Channel-Group) |
|
||||
|
||||
### Local Thing
|
||||
|
||||
@@ -27,6 +39,8 @@ The Local Thing type uses an undocumented API that allows direct HTTP access to
|
||||
This provides a subset of features compared to the Cloud Thing type limited to basic zone control.
|
||||
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.
|
||||
|
||||
Local control may not be available on later Hydrawise controller firmware versions.
|
||||
|
||||
Use Cases
|
||||
|
||||
* 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.
|
||||
@@ -41,28 +55,29 @@ Use Cases
|
||||
|
||||
## Thing Configuration
|
||||
|
||||
### Cloud Thing
|
||||
### Account Thing
|
||||
|
||||
| Configuration Name | type | required | Comments |
|
||||
|--------------------|---------|----------|------------------------------------------------------------------------------------|
|
||||
| apiKey | String | True | |
|
||||
| refresh | Integer | True | Defaults to a 30 seconds polling rate |
|
||||
| controllerId | Integer | False | Optional id of the controller if you have more then one registered to your account |
|
||||
| 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 | A oAuth refresh token, this will be automatically configured after the first login and updated as the token is refreshed |
|
||||
|
||||
To obtain your API key, log into your [Hydrawsie Account](https://app.hydrawise.com/config/login) and click on your account icon, then account details:
|
||||
### Controller Thing
|
||||
|
||||

|
||||
| Configuration Name | type | required | Comments |
|
||||
|--------------------|---------|----------|----------------------|
|
||||
| controllerId | Integer | True | ID of the controller |
|
||||
|
||||
Then copy the API key shown here:
|
||||
|
||||

|
||||
|
||||
### Local Thing
|
||||
|
||||
| Configuration Name | type | required | Comments |
|
||||
|--------------------|---------|----------|-----------------------------------------------------------------------------------------------------------------|
|
||||
| host | String | True | IP or host name of the controller on your network |
|
||||
| username | String | True | User name (usually admin) set on the touch panel of the controller |
|
||||
| username | String | True | User name (usually admin) set on the touch panel of the controller |
|
||||
| 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 |
|
||||
|
||||
@@ -70,6 +85,12 @@ Then copy the API key shown here:
|
||||
|
||||
### Channel Groups
|
||||
|
||||
#### System Channel Group
|
||||
|
||||
| channel group ID | Description |
|
||||
|------------------|---------------------------------|
|
||||
| system | System status of the controller |
|
||||
|
||||
#### Zone Channel Group
|
||||
|
||||
Up to 36 total zones are supported per Local or Cloud thing
|
||||
@@ -94,14 +115,13 @@ Up to 4 total sensors are supported per Cloud Thing
|
||||
|
||||
#### Forecast Channel Group
|
||||
|
||||
Up to 4 total weather forecasts are supported per Cloud Thing
|
||||
Up to 3 total weather forecasts are supported per Cloud Thing
|
||||
|
||||
| channel group ID | Description |
|
||||
|------------------|-----------------|
|
||||
| forecast1 | Todays Forecast |
|
||||
| forecast2 | Day 2 Forecast |
|
||||
| forecast3 | Day 3 Forecast |
|
||||
| forecast4 | Day 4 Forecast |
|
||||
|
||||
#### All Zones Channel Group
|
||||
|
||||
@@ -114,58 +134,81 @@ A single all zone group are supported per Cloud or Local Thing
|
||||
|
||||
### Channels
|
||||
|
||||
| channel ID | type | Groups | description | Read Write |
|
||||
|-----------------|--------------------|----------------|---------------------------------------------|------------|
|
||||
| name | String | zone, sensor | Descriptive name | R |
|
||||
| icon | String | zone | Icon URL | R |
|
||||
| time | Number | zone | Zone start time in seconds | R |
|
||||
| type | Number | zone | Zone type | R |
|
||||
| runcustom | Number | zone, allzones | Run zone for custom number of seconds | W |
|
||||
| run | Switch | zone, allzones | Run/Start zone | RW |
|
||||
| nextrun | DateTime | zone | Next date and time this zone will run | R |
|
||||
| timeleft | Number | zone | Amount of seconds left for the running zone | R |
|
||||
| input | Number | sensor | Sensor input type | R |
|
||||
| mode | Number | sensor | Sensor mode | R |
|
||||
| timer | Number | sensor | Sensor timer | R |
|
||||
| offtimer | Number | sensor | Sensor off time | 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 | String | forecast | Day of week of forecast (Mon-Sun) | R |
|
||||
| humidity | Number | forecast | Daily humidity percentage | R |
|
||||
| wind | Number:Speed | forecast | Daily wind speed | R |
|
||||
Channels uses across zones, sensors and forecasts
|
||||
| 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 |
|
||||
|
||||
|
||||
## Full Example
|
||||
|
||||
```
|
||||
Group SprinklerZones
|
||||
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"}
|
||||
Number SprinkerControllerLastContact "Last Contact [%d]" (SprinklerController) {channel="hydrawise:controller:myaccount:123456:controller#lastContact"}
|
||||
|
||||
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"}
|
||||
|
||||
Group SprinklerZone1 "1 Front Office Yard" (SprinklerZones)
|
||||
String SprinklerZone1Name "1 Front Office Yard name" (SprinklerZone1) {channel="hydrawise:cloud:home:zone1#name"}
|
||||
Switch SprinklerZone1Run "1 Front Office Yard Run" (SprinklerZone1) {channel="hydrawise:cloud:home:zone1#run"}
|
||||
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"}
|
||||
Switch SprinklerZone1RunLocal "1 Front Office Yard Run (local)" (SprinklerZone1) {channel="hydrawise:local:home:zone1#run"}
|
||||
Number SprinklerZone1RunCustom "1 Front Office Yard Run Custom" (SprinklerZone1) {channel="hydrawise:cloud:home:zone1#runcustom"}
|
||||
DateTime SprinklerZone1StartTime "1 Front Office Yard Start Time [%s]" (SprinklerZone1) {channel="hydrawise:cloud:home:zone1#nextruntime"}
|
||||
Number SprinklerZone1TimeLeft "1 Front Office Yard Time Left" (SprinklerZone1) {channel="hydrawise:cloud:home:zone1#timeleft"}
|
||||
String SprinklerZone1Icon "1 Front Office Yard Icon" (SprinklerZone1) {channel="hydrawise:cloud:home:zone1#icon"}
|
||||
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"}
|
||||
|
||||
Group SprinklerZone2 "2 Back Circle Lawn" (SprinklerZones)
|
||||
String SprinklerZone2Name "2 Back Circle Lawn name" (SprinklerZone2) {channel="hydrawise:cloud:home:zone2#name"}
|
||||
Switch SprinklerZone2Run "2 Back Circle Lawn Run" (SprinklerZone2) {channel="hydrawise:cloud:home:zone2#run"}
|
||||
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"}
|
||||
Switch SprinklerZone2RunLocal "2 Back Circle Lawn Run (local)" (SprinklerZone2) {channel="hydrawise:local:home:zone2#run"}
|
||||
Number SprinklerZone2RunCustom "2 Back Circle Lawn Run Custom" (SprinklerZone2) {channel="hydrawise:cloud:home:zone2#runcustom"}
|
||||
DateTime SprinklerZone2StartTime "2 Back Circle Lawn Start Time" (SprinklerZone2) {channel="hydrawise:cloud:home:zone2#nextruntime"}
|
||||
Number SprinklerZone2TimeLeft "2 Back Circle Lawn Time Left" (SprinklerZone2) {channel="hydrawise:cloud:home:zone2#timeleft"}
|
||||
String SprinklerZone2Icon "2 Back Circle Lawn Icon" (SprinklerZone2) {channel="hydrawise:cloud:home:zone2#icon"}
|
||||
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"}
|
||||
|
||||
Group SprinklerZone3 "3 Left of Drive Lawn" (SprinklerZones)
|
||||
String SprinklerZone3Name "3 Left of Drive Lawn name" (SprinklerZone3) {channel="hydrawise:cloud:home:zone3#name"}
|
||||
Switch SprinklerZone3Run "3 Left of Drive Lawn Run" (SprinklerZone3) {channel="hydrawise:cloud:home:zone3#run"}
|
||||
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"}
|
||||
Switch SprinklerZone3RunLocal "3 Left of Drive Lawn Run (local)" (SprinklerZone3) {channel="hydrawise:local:home:zone3#run"}
|
||||
Number SprinklerZone3RunCustom "3 Left of Drive Lawn Run Custom" (SprinklerZone3) {channel="hydrawise:cloud:home:zone3#runcustom"}
|
||||
DateTime SprinklerZone3StartTime "3 Left of Drive Lawn Start Time" (SprinklerZone3) {channel="hydrawise:cloud:home:zone3#nextruntime"}
|
||||
Number SprinklerZone3TimeLeft "3 Left of Drive Lawn Time Left" (SprinklerZone3) {channel="hydrawise:cloud:home:zone3#timeleft"}
|
||||
String SprinklerZone3Icon "3 Left of Drive Lawn Icon" (SprinklerZone3) {channel="hydrawise:cloud:home:zone3#icon"}
|
||||
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"}
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user