homebridge-eveatmo
Version:
Homebridge plugin which adds a Netatmo weatherstation as HomeKit device and tries to act like Elgato Eve Room/Weather
102 lines (82 loc) • 2.34 kB
JavaScript
;
var inherits = require('util').inherits;
var EventEmitter = require('events').EventEmitter;
module.exports = function(context) {
return new NetatmoAPIMock(context);
};
function NetatmoAPIMock(context) {
EventEmitter.call(this);
this.context = context;
}
inherits(NetatmoAPIMock, EventEmitter);
NetatmoAPIMock.prototype.getMockData = function (methodname) {
var filename = this.context || 'default';
var data;
try {
data = require('./../mockapi_calls/' + methodname + '-' + filename + '.json');
} catch (err) {
this.emit('warning', new Error('No fake api call for \'' + methodname + '-' + this.context + '\'! using default'));
data = require('./../mockapi_calls/' + methodname + '-default.json');
}
if (!data) {
this.emit('error', new Error('No fake api call for ' + methodname));
data = {};
}
return data;
};
NetatmoAPIMock.prototype.getStationsData = function (options, callback) {
if (options != null && callback == null) {
callback = options;
options = null;
}
var data = this.getMockData('getstationsdata');
var devices = [];
if (data && data.body) {
devices = data.body.devices;
}
if (callback) {
return callback(null, devices);
}
};
NetatmoAPIMock.prototype.getHealthyHomeCoachData = function (options, callback) {
if (options != null && callback == null) {
callback = options;
options = null;
}
var data = this.getMockData('gethomecoachsdata');
var devices = [];
if (data && data.body) {
devices = data.body.devices;
}
if (callback) {
return callback(null, devices);
}
};
NetatmoAPIMock.prototype.getThermostatsData = function (options, callback) {
if (options != null && callback == null) {
callback = options;
options = null;
}
var data = this.getMockData('getthermostatsdata');
var devices = [];
if (data && data.body) {
devices =data.body.devices;
}
if (callback) {
return callback(null, devices);
}
};
NetatmoAPIMock.prototype.getHomeData = function (options, callback) {
if (options != null && callback == null) {
callback = options;
options = null;
}
var data = this.getMockData('gethomedata');
var result = {};
if (data && data.body) {
result = data.body;
}
if (callback) {
return callback(null, result);
}
};