rainmachine-api
v1.0.1
Published
Basic RainMachine API implementation for local network control
Readme
rainmachine-api
A utility package for interacting with RainMachine irrigation controllers on your local network.
Information:
- This is a utility package for RainMachine controllers that allows you to interact with RainMachine devices on your local network.
- This package was tested with a
RainMaker 3running Firmware version4.0.1144with API version4.6.1. YMMV with different devices on different firmware versions! - This package was mostly scoped out to match API endpoints listed in this documentation. In order to not mess up my current setup, I have not tested many of the endpoints added to mess with the existing config on my local controller. It is possible that some endpoints will not work as expected.
Installation:
npm install rainmachine-apiExample Usage:
const RainMachineClient = require('rainmachine-api');
const RAINMACHINE_HOST = 'Your Controller IP Address';
const RAINMACHINE_PASSWORD = 'Your Controller Password';
async function main() {
console.log('Initializing RainMachine Client...');
const client = new RainMachineClient(RAINMACHINE_HOST, 8081, 'http');
try {
console.log('Attempting to log in...');
const loginResponse = await client.login(RAINMACHINE_PASSWORD);
console.log('Login successful:', loginResponse);
console.log('\nFetching API Version...');
const apiVersion = await client.apiVersions.getApiVersion();
console.log('API Version Data:', apiVersion);
console.log('\nFetching Provision Settings...');
const provisionSettings = await client.provision.getSettings();
console.log('Provision Settings Data:', provisionSettings);
console.log('\nFetching all Programs...');
const programs = await client.programs.getAllPrograms();
console.log('Programs:', programs.programs.map(p => ({ id: p.uid, name: p.name, active: p.active })));
console.log('\nFetching all Zones...');
const zones = await client.zones.getAllZones();
console.log('Zones:', zones.zones.map(z => ({ id: z.uid, name: z.name, active: z.active })));
console.log('\nFetching Next Watering...');
const nextWatering = await client.watering.getWateringQueue();
console.log('Next Watering:', nextWatering);
} catch (error) {
console.error('An error occurred during API interaction:');
console.error('Error Message:', error.message);
if (error.response) {
console.error('Status Code:', error.response.status);
console.error('Response Data:', error.response.data);
} else if (error.request) {
console.error('No response received from RainMachine API');
} else {
console.error('Original Axios Error Details:', error);
}
}
}
main();Disclaimer:
- This project is not affiliated with or endorsed by RainMachine.
- RainMachine is a registered copyright of Green Electronics LLC. This package does not claim to be associated with nor represent RainMachine or their copyright holder in any way.
- By using this package, you assume all risks and liabilities associated with its usage.
- The developers and contributors of this project are not responsible for any damages or issues arising from the use of this project or its dependencies.
⚠️ This project was only tested on one device. If you would like to contribute, feel free to reach out to me on Discord.
