|
|
%!s(int64=5) %!d(string=hai) anos | |
|---|---|---|
| .github | %!s(int64=5) %!d(string=hai) anos | |
| dist | %!s(int64=5) %!d(string=hai) anos | |
| src | %!s(int64=5) %!d(string=hai) anos | |
| test | %!s(int64=5) %!d(string=hai) anos | |
| .gitignore | %!s(int64=5) %!d(string=hai) anos | |
| README.md | %!s(int64=5) %!d(string=hai) anos | |
| package-lock.json | %!s(int64=5) %!d(string=hai) anos | |
| package.json | %!s(int64=5) %!d(string=hai) anos | |
| tsconfig.json | %!s(int64=5) %!d(string=hai) anos |
This is a client for the Hydrawise API. Hydrawise is an internet-controlled home irrigation system.
On a very basic level, it allows you to do:
For all possibilities, have a look at the inline code documentation
When possible use a local connection to your controller since it's not rate limited (HTTP error 429) and suffers no delays when trying to run commands on zones.
const Hydrawise = require('hydrawise-api').Hydrawise;
const myHydrawise = new Hydrawise({ type:'CLOUD', key:'YOUR_API_KEY' });
You can obtain your API key from the "Account Details" screen on the Hydrawise platform
const Hydrawise = require('hydrawise-api').Hydrawise;
const myHydrawise = new Hydrawise({ type:'LOCAL', host:'HOSTNAME_OR_IP_ADDRESS', password:'YOUR_CONTROLLER_PASSWORD' });
You can also provide a user parameter, but this should be 'admin' in most cases.
Get all zones and see their status.
myHydrawise.getZones()
.then(zones => console.log(zones))
.catch(error => console.log(error));
This will return an array of HydrawiseZone objects containing the following info:
{number} relayID - The unique relay number known to the Hydrawise cloud
{number} zone - The local zone/relay number
{string} name - The name of the zone
{Date} nextRunAt - The date & time of the next scheduled run
{number} nextRunDuration - Run time in seconds of the next run defined by nextRunAt
{boolean} isSuspended - Returns true when the zoneis currently suspended
{boolean} isRunning - Returns true when the zone is actively running
{number} remainingRunningTime - Remaining run time in seconds when isRunning = true
By default only the active zones are returned, you can change this behaviour by calling getZones(false) instead.
You can execute a couple of basic commands on each zone: run(), suspend() or stop()
myHydrawise.getZones()
.then(zones => {
zone[0].run().then((info) => {
console.log('success');
}).catch(error => console.log(error));
}).catch(error => console.log(error));
For the run & suspend commands you are able to provide a custom duration in seconds: run(600) (for 10 mins).
If no custom duration was provided, the default run time configured for the zone will be used.
Zones can also be commanded directly from the Hydrawise object:
myHydrawise.runZone(1) - Run by local zone number (only. for local bindings)
myHydrawise.runZone(123123) - Run by unique relay ID (only. for cloud bindings)
myHydrawise.runZone(myHydrawiseZoneObject) - Run by the HydrawiseZone object returned by getZones()
It's also possible to command all zones at the same time:
myHydrawise.runAllZones()
.then(info => {
console.log('success');
}).catch(error => console.log(error));
Here as well, you are able to provide a custom duration: runAllZones(600) (for 10 mins).
Tested on a configuration with a single HC6 controller. If you have multiple controllers in your configuration and you run into problems, you're free to create an issue or contribute yourself :-)
MIT license