UNPKG

barnowl-enocean

Version:

Collect ambient EnOcean Wireless Standard packets from EnOcean Serial Protocol (ESP) devices. We believe in an open Internet of Things.

69 lines (56 loc) 1.74 kB
/** * Copyright reelyActive 2022 * We believe in an open Internet of Things */ const EventEmitter = require('events').EventEmitter; const TestListener = require('./testlistener.js'); const SerialListener = require('./seriallistener.js'); const ESPDecoder = require('./espdecoder.js'); /** * BarnowlEnOcean Class * Converts EnOcean decodings into standard raddec events. * @param {Object} options The options as a JSON object. */ class BarnowlEnOcean extends EventEmitter { /** * BarnowlEnOcean constructor * @param {Object} options The options as a JSON object. * @constructor */ constructor(options) { super(); options = options || {}; options.barnowl = this; this.listeners = []; this.espDecoder = new ESPDecoder(options); } /** * Add a listener to the given hardware interface. * @param {Class} ListenerClass The (uninstantiated) listener class. * @param {Object} options The options as a JSON object. */ addListener(ListenerClass, options) { options = options || {}; options.decoder = this.espDecoder; let listener = new ListenerClass(options); this.listeners.push(listener); } /** * Handle and emit the given raddec. * @param {Raddec} raddec The given Raddec instance. */ handleRaddec(raddec) { // TODO: observe options to normalise raddec this.emit("raddec", raddec); } /** * Handle and emit the given infrastructure message. * @param {Object} message The given infrastructure message. */ handleInfrastructureMessage(message) { this.emit("infrastructureMessage", message); } } module.exports = BarnowlEnOcean; module.exports.TestListener = TestListener; module.exports.SerialListener = SerialListener;