cap:switchable-power - switch power state

The switchable-power-capability is an extension to the power-capability for things that can also switch their power state.

if(thing.matches('cap:switchable-power')) {
        console.log('Power is', await thing.power());

        // Switch the thing on
        await thing.power(true);
}

Related capabilities: power, state

API

power([powerState])

Get or set the current power state.

Arguments:
  • powerState (boolean) – Optional boolean to change power state to.
Returns:

Promise that resolves to the current power state as a boolean.

Example:

// Getting via async/await
const powerIsOn = await thing.power();

// Switching via promise then/catch
thing.power(false)
        .then(result => console.log('Power is now', result))
        .catch(err => console.log('Error occurred', err);
setPower(powerState)

Set the power of the thing.

Arguments:
  • powerState (boolean) – The new power state as a boolean.
Returns:

Promise that will resolve to the new power state.

Example:

// Using async/await
await thing.setPower(true);

// Using promise then/catch
thing.setPower(true)
        .then(result => console.log('Power is now', result))
        .catch(err => console.log('Error occurred', err);
togglePower()

Toggle the power of the thing. Will use the currently detected power state and switch to the opposite.

Returns:Promise that will resolve to the new power state.

Example:

// Using async/await
await thing.togglePower();

// Using promise then/catch
thing.togglePower()
        .then(result => console.log('Power is now', result))
        .catch(err => console.log('Error occurred', err);
turnOn()

Turn the thing on.

Returns:Promise that will resolve to the new power state.

Example:

// Using async/await
await thing.turnOn();

// Using promise then/catch
thing.turnOn()
        .then(result => console.log('Power is now', result))
        .catch(err => console.log('Error occurred', err);
turnOff()

Turn the thing off.

Returns:Promise that will resolve to the new power state.

Example:

// Using async/await
await thing.turnOff();

// Using promise then/catch
thing.turnOff()
        .then(result => console.log('Power is now', result))
        .catch(err => console.log('Error occurred', err);

Protected methods

changePower(power)

Abstract. Change the power of this thing. Called on the thing when of the power methods request a change. Implementations should call updatePower before resolving to indicate that a change has occurred.

Can be called with the same power state as is currently set.

Arguments:
  • power (boolean) – The new power of the thing as a boolean.
Returns:

Promise if asynchronous.

Implementing capability

The switchable-power-capability requires that the function changePower is implemented.

Example:

const { Thing, SwitchablePower } = require('abstract-things');

class Example extends Thing.with(SwitchablePower) {
        constructor() {
                super();

                // Make sure to initialize the power state via updatePower
        }

        changePower(power) {
                /*
                 * This method is called whenever a power change is requested.
                 *
                 * Change the power here and return a Promise if the method is
                 * asynchronous. Also call updatePower to indicate the new state
                 * if not done by switching.
                 */
                 return switchWithPromise(power)
                        .then(() => this.updatePower(power));
        }
}