cap:state
- state tracking¶
The state
-capability provides a way to get and update the state of a thing.
State is split into several state keys that are updated separately.
if(thing.matches('cap:state')) {
console.log('Current state:', this.state);
}
API¶
-
state
()¶ Get the current overall state.
Returns: Promise that resolves to an object representing the current state. Keys represent names of the state key. Usage:
const state = await thing.state(); console.log('State is', state); console.log('Value of power is', state.power);
Events¶
-
stateChanged
¶ State has changed for the thing.
thing.on('stateChanged', change => console.log('Key', change.key, 'changed to', change.value) );
Protected methods¶
-
getState
(key[, defaultValue])¶ Get the current value of the given state key.
Arguments: - power (string) – The state key to get value for.
- defaultValue – Fallback to return if the state key is not set.
Returns: The value for the state key, the default value or
null
.
-
updateState
(key, value)¶ Update the state of the given key. This will update the state key and emit the event
stateChanged
.Arguments: - key (string) – The state key to update.
- value – The new value of the state key.
Returns: Boolean indicating if the state value has changed.
-
removeState
(key)¶ Remove state stored for the given key. Will emit a
stateChanged
event.Arguments: - key (string) – The state key to remove.
Implementing capability¶
The state
-capability has no functions that need to be implemented.
updateState
can be called at any time to update a state key.
const { Thing, State } = require('abstract-things');
class Example extends Thing.with(State) {
constructor() {
super();
this.updateState('key', true);
}
}