UNPKG

thing-it-device-enocean-ip

Version:

[thing-it-node] Device Plugin for EnOcean IP products.

120 lines (108 loc) 3.14 kB
module.exports = { metadata: { plugin: "pressureSwitch", label: "Differential Pressure Switch", role: "actor", family: "pressureSwitch", deviceTypes: ["enocean-ip/gateway"], services: [], state: [{ label: 'Last Operation', id: 'lastOperation', type:{ id: "string" } }, { label: 'Pressed', id: 'pressed', type:{ id: "boolean" } }, { label: 'Last Operation Timestamp', id: 'lastOperationTimestamp' }], events: [{ label: 'Button Pressed', id: 'buttonPressed' }, { label: 'Button Released', id: 'buttonReleased' }], configuration: [{ label: "Device ID", id: "deviceId", type: { id: "string" } }] }, create: function () { return new PressureSwitch(); } }; var q = require('q'); var moment = require('moment'); /** * */ function PressureSwitch() { /** * */ PressureSwitch.prototype.start = function () { var deferred = q.defer(); this.state = {}; if (this.isSimulated()) { deferred.resolve(); } else { var dataArray = []; this.device.adapter.listeners.push(telegram => { if (telegram.deviceId === this.configuration.deviceId) { this.logDebug('Device ' + telegram.friendlyId + ' is processing ', telegram.functions); dataArray = telegram.telegramInfo.data.match(/.{1,2}/g); //console.log("Data bits: ", dataArray[2]); if(dataArray[2] === "11") { this.state.lastOperation = "Button Pressed"; this.state.pressed = true; this.state.lastOperationTimestamp = moment().toISOString(); console.log(this.state); this.publishEvent('buttonPressed', {}); } else{ this.state.lastOperation = "Button Released"; this.state.pressed = false; this.state.lastOperationTimestamp = moment().toISOString(); console.log(this.state); this.publishEvent('buttonReleased', {}); } this.publishStateChange(); } }); deferred.resolve(); } return deferred.promise; }; /** * */ PressureSwitch.prototype.getState = function () { return this.state; }; /** * */ PressureSwitch.prototype.setState = function (state) { }; /** * */ PressureSwitch.prototype.stop = function () { if (this.isSimulated()) { if (this.interval) { clearInterval(this.interval); } } } }