1.1.9 • Published 1 day ago

@mkellsy/leap-client v1.1.9

Weekly downloads
-
License
MIT
Repository
github
Last release
1 day ago

Lutron LEAP Client

Publishes devices, states and actions to an event emitter using the Lutron LEAP protocol.

API

Pairing a processor or bridge

import { pair } from "@mkellsy/leap-client";

console.log("Press the pairing button on the main processor or smart bridge");

await pair();

This will autopmatically discover processors. You will need to press the pairing button on your processor or bridge.

If you have multiple systems Caseta and RA3, you can pair other processors or bridges by runnging the pair command again, and pressing the pairing button on the other device.

Systems that have more than one processor, such as RA3, you will only need to pair the first bridge. Devices programed for other bridges are vended from all processors.

After you have a processor or bridge paired, you can connect.

import { connect } from "@mkellsy/leap-client";

const location = connect();

location.on("Available", (processor): void => {
    // event fired when all devices are available
});

location.on("Update", (device, state): void => {
    // event fired when the device state updates
});

location.on("Action", (device, button, action): void => {
    // event fired when a device action occurs
});

The processor will cache slow changing data, to refresh the areas, zones, remotes, etc... you can set the refresh flag when calling connect connect(true).

Fetch a list of processors.

for (const id of location.processors) {
    // the id is the processor id string
}

Accessing the processor

const processor = location.processor(id);

Pinging the a processor or bridge

const response = await processor.ping();

Processor details.

const system = await processor.system();
const project = await processor.project();

Fetch a list of areas

const areas = await processor.areas();

Fetch all statuses

const statuses = await processor.statuses();

Fetch zones in an area

const zones = await processor.zones(area);

Fetch a zone or area status

const areaStatus = await processor.status(area);
const zoneStatus = await processor.status(zone);

Fetch an area's controls

const controls = await processor.controls(area);

Fetching ganged controls

const controls = await processor.controls(area);

for (const gangedDevice of control.AssociatedGangedDevices) {
    const address = gangedDevice.Device;

    // the the address can be used to fetch the pico remote, sensor, keypad
}

Fetching a device

const device = await processor.device(address);

Fetching a devices buttons

const buttons = await processor.buttons(device);

Executing a command

await processor.command(deviceOrZone, commandObject);

Fetching a discovered device

const device = processor.devices.get(id);

Update the status of a device

device.update(state);

Set a property(s) of a device

device.set(state);
1.1.9

1 day ago

1.1.8

3 days ago

1.1.7

3 days ago

1.1.4

3 days ago

1.1.3

3 days ago

1.1.2

3 days ago

1.1.1

8 days ago

1.0.7

9 days ago

1.0.6

15 days ago

1.0.5

15 days ago

1.0.4

15 days ago

1.0.3

15 days ago

1.0.2

3 months ago

1.0.1

3 months ago

1.0.0

3 months ago

0.1.8

4 months ago

0.1.7

4 months ago

0.1.6

4 months ago

0.1.0

4 months ago

0.1.2

4 months ago

0.1.1

4 months ago

0.1.4

4 months ago

0.0.5

4 months ago

0.1.3

4 months ago

0.0.4

4 months ago

0.1.5

4 months ago

0.0.3

4 months ago

0.0.1

4 months ago