
Security News
Feross on TBPN: How North Korea Hijacked Axios
Socket CEO Feross Aboukhadijeh breaks down how North Korea hijacked Axios and what it means for the future of software supply chain security.
hydrawise-api
Advanced tools
Library for accessing the Hydrawise API via the cloud or directly on the local network
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. Local connections are only possible on firmware versions below v3.0.0 however.
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.
If you have multiple controllers you can use this function to retrieve them all. Once you know your controllers, you're able to get and/or command the connected zones to that controller.
myHydrawise.getControllers()
.then(controllers => console.log(controllers))
.catch(error => console.log(error));
Get all zones and see their status.
If you only have a single controller, you can get the list of zones without first retrieving your controller details:
myHydrawise.getZones()
.then(zones => console.log(zones))
.catch(error => console.log(error));
If you have multiple controllers you should first get your list of controllers and request the zones list for that specific controller (if you don't you only get the zones of your 'default' controller.):
myHydrawise.getControllers()
.then((controllers) => {
// Get the zones for the first returned controller
controllers[0].getZones()
.then(zones => console.log(zones))
.catch(error => console.log(error));
})
.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
You can execute a couple of basic commands on each zone: run(), suspend() or stop()
myHydrawise.getZones()
.then(zones => {
// Run the first returned zone
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
FAQs
Library for accessing the Hydrawise API via the cloud or directly on the local network
The npm package hydrawise-api receives a total of 9 weekly downloads. As such, hydrawise-api popularity was classified as not popular.
We found that hydrawise-api demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Socket CEO Feross Aboukhadijeh breaks down how North Korea hijacked Axios and what it means for the future of software supply chain security.

Security News
OpenSSF has issued a high-severity advisory warning open source developers of an active Slack-based campaign using impersonation to deliver malware.

Research
/Security News
Malicious packages published to npm, PyPI, Go Modules, crates.io, and Packagist impersonate developer tooling to fetch staged malware, steal credentials and wallets, and enable remote access.