Ei kuvausta

martijndierckx 03cae761a8 Update README.md 5 vuotta sitten
.github a0dda94674 Create FUNDING.yml 5 vuotta sitten
dist eb0fe93c48 Bugfixes 5 vuotta sitten
src eb0fe93c48 Bugfixes 5 vuotta sitten
test 72bf8c6cb1 Adjusted test script to detect local/cloud test from number of args 5 vuotta sitten
.gitignore 47f1d2a8a5 First typescript version 5 vuotta sitten
README.md 03cae761a8 Update README.md 5 vuotta sitten
package-lock.json 47f1d2a8a5 First typescript version 5 vuotta sitten
package.json 9c7fb2eaad Version bump 5 vuotta sitten
tsconfig.json 47f1d2a8a5 First typescript version 5 vuotta sitten

README.md

Hydrawise API

Build Status

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:

For all possibilities, have a look at the inline code documentation

Getting started

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. Local connections are only possible on firmware versions below v3.0.0 however.

Setup for a cloud connection

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

Setup for a local connection

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.

Basic usage

Get Zones

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.

Run a command on a zone

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()

Command all zones at once

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).


Contributors

  • Martijn Dierckx - Complete rewrite to service both the cloud & local API binding in TypeScript
  • Paul Molluzzo - Initial 0.1.0 version containing the cloud binding

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