UNPKG

thing-it-device-smart-meter

Version:

[thing-it-node] Device Plugin to demo Smart Meter functionality.

117 lines (97 loc) 2.36 kB
module.exports = { metadata: { family: 'smartMeter', plugin: 'smartMeter', label: 'Generic Smart Meter', manufacturer: 'Generic', discoverable: false, tangible: true, additionalSoftware: [], actorTypes: [], sensorTypes: [], state: [{ id: "energyConsumption", label: "Energy Consumption", type: { id: "decimal" }, unit: 'kWh' }, { id: "lastReset", label: "Last Reset", type: { id: "time" } }], services: [{ id: "reset", label: "Reset", parameters: [] }], configuration: [] }, create: function () { return new SmartMeter(); }, discovery: function () { return new SmartMeterDiscovery(); } }; var q = require('q'); var _ = require('lodash'); function SmartMeterDiscovery() { SmartMeterDiscovery.prototype.start = function () { }; SmartMeterDiscovery.prototype.stop = function () { }; } /** * * @constructor */ function SmartMeter() { SmartMeter.prototype.start = function () { var deferred = q.defer(); this.state = {energyConsumption: 0}; if (this.isSimulated()) { this.interval = setInterval(function () { this.state.energyConsumption += 0.01 + 0.001 * new Date().getTime() % 5; this.publishStateChange(); }.bind(this), 10000); deferred.resolve(); } else { deferred.resolve(); } return deferred.promise; }; /** * */ SmartMeter.prototype.stop = function () { var deferred = q.defer(); if (this.isSimulated()) { if (this.interval) { clearInterval(this.interval); } } else { } deferred.resolve(); return deferred.promise; }; /** * */ SmartMeter.prototype.reset = function () { this.state.energyConsumption = 0; this.publishStateChange(); }; /** * */ SmartMeter.prototype.getState = function () { return this.state; }; /** * */ SmartMeter.prototype.setState = function () { }; }