An extension to make a smartobject instance listenable to its resource changes
This module is used make a smartobject instance able to listen to its resource changes, which could be helpful for creating a machine node responsive to any reosurce change within it.
$ npm install smartobject-watchify --save
const SmartObject = require('@lwmqn/smartobject')
const soWatchify = require('@lwmqn/smartobject-watchify')
var so = new SmartObject()
so = soWatchify(so)
so.init('temperature', 0, { sensorValue: 31, units : 'C' })
// attach a listener to receive the change from resource 'temperature/0/sensorValue'
so.onChange('temperature/0/sensorValue', function (cVal, pVal) {
console.log('A listener to this resource')
console.log(cVal) // current value
console.log(pVal) // previous value
})
so.onChange('temperature/0/sensorValue', function (cVal, pVal) {
console.log('Another listener to this resource')
})
// Modify the sensorValue of the temperature sensor and the listener will be triggered
so.write('temperature', 0, 'sensorValue', 80, function (err, data) {
if (err) console.log(err)
})smartobject-watchify exports a function that receives the smartobject instance as the parameter to be extended and returned.
Arguments:
so(Object): The instance of SmartObject class.
Returns:
- (Object) Watchified smartobject.
Examples:
const SmartObject = require('@lwmqn/smartobject')
const soWatchify = require('@lwmqn/smartobject-watchify')
const so = soWatchify(new SmartObject())Attach a listener to observe a given resource for its change.
Arguments:
path(String): The path to the resource, e.g.'humidity/6/sensorValue'.listener(Function):function(cVal, pVal) {}, wherecValis the current value andpValis the previous value before updated.
Returns:
- (none)
Examples:
so.onChange('temperature/3/sensorValue', function (cVal, pVal) {
// Listen to 'temperature/3/sensorValue' for its change
})Attach an one-time listener to observe a given resource for its change.
Arguments:
path(String): The path to the resource, e.g.'humidity/6/sensorValue'.listener(Function):function(cVal, pVal) {}, wherecValis the current value andpValis the previous value before updated.
Returns:
- (Constructor) WatchifiedSmartObject
Examples:
so.onChangeOnce('presence/7/dInState', function (cVal, pVal) {
// Listen to 'presence/7/dInState' only once for its change
})Remove a specified listener from listening to the given resource path.
Arguments:
path(String): The path to the resource, e.g.'humidity/6/sensorValue'.listener(Function): The listener function.
Returns:
- (none)
Examples:
var presenceListener = function (cVal, pVal) {
// Listen to 'presence/7/dInState' only once for its change
}
// attach listener
so.onChange('presence/7/dInState', presenceListener)
// remove listener
so.removeListener('presence/7/dInState', presenceListener)Remove all listeners from listening to the given resource path.
Arguments:
path(String): The path to the resource, e.g.'humidity/6/sensorValue'.
Returns:
- (none)
Examples:
so.removeAllListeners('temperature/0/sensorValue')## License
Licensed under MIT.
