smartthings-phone-presence-sensor
Version:
Presence detection by reading leases on DHCP server
40 lines (35 loc) • 1.21 kB
JavaScript
const { deviceInit } = require('./smartthingsConnection');
const { config, saveConfig } = require('./env');
function checkShard(shards, currentShard, name, appId, secret, successCallback) {
if (currentShard) {
deviceInit(name, currentShard, appId, secret)
.then(() => successCallback(currentShard)).catch(() => {
const nextShard = shards.pop();
checkShard(shards, nextShard, name, appId, secret, successCallback);
});
} else {
successCallback(null);
}
}
function saveSmartThingDeviceInfo(req, res) {
const { body } = req;
const curConfig = { ...config() };
const { smartthings, smartapp } = curConfig;
const { appId } = body;
const { secret } = body;
smartthings[body.name] = Object.assign(smartthings[body.name]
? smartthings[body.name]
: {}, {
appId,
secret,
label: body.label,
}, {});
const shards = JSON.parse(JSON.stringify(smartapp));
const shard = shards.pop();
checkShard(shards, shard, body.name, appId, secret, (resp) => {
smartthings[body.name].shard = resp;
saveConfig(curConfig);
res.end(JSON.stringify({ status: 'OK' }));
});
}
module.exports.saveSmartThingDeviceInfo = saveSmartThingDeviceInfo;