diff options
| author | James Barnett <noreply@jamesbarnett.xyz> | 2018-04-07 21:43:17 +0100 |
|---|---|---|
| committer | James Barnett <noreply@jamesbarnett.xyz> | 2018-04-07 21:43:17 +0100 |
| commit | 1301d90e93af799a9054f133847ebf3cbda15f9d (patch) | |
| tree | 7c9e12431c63a7a52523d2cd1f15e144dcaf680f /routes | |
| parent | 24b4a39fce61dd9bd8ab7757f3bbda0636adc8c9 (diff) | |
| download | tplink-energy-monitor-1301d90e93af799a9054f133847ebf3cbda15f9d.tar.xz tplink-energy-monitor-1301d90e93af799a9054f133847ebf3cbda15f9d.zip | |
Add support for switching between multiple plugs
Diffstat (limited to 'routes')
| -rw-r--r-- | routes/index.js | 20 | ||||
| -rw-r--r-- | routes/ws.js | 15 |
2 files changed, 27 insertions, 8 deletions
diff --git a/routes/index.js b/routes/index.js index 4909ff8..12c62cd 100644 --- a/routes/index.js +++ b/routes/index.js @@ -5,11 +5,27 @@ const deviceManager = require('../services/device-manager'); router.get('/', function(req, res, next) { + let deviceId = sortDevices(deviceManager.getAllDevices())[0].deviceId; + + res.redirect('/' + deviceId); + +}); + +router.get('/:deviceId', function(req, res, next) { + + let deviceId = req.params.deviceId; + res.render('index', { - device: deviceManager.getDevice(), - devices: deviceManager.getAllDevices() + device: deviceManager.getDevice(deviceId), + devices: sortDevices(deviceManager.getAllDevices()) }); }); +function sortDevices(devices) { + return devices.slice().sort((a, b) => { + return a.alias.toLowerCase().localeCompare(b.alias.toLowerCase()) + }) +} + module.exports = router; diff --git a/routes/ws.js b/routes/ws.js index dc22df2..08b0a18 100644 --- a/routes/ws.js +++ b/routes/ws.js @@ -9,14 +9,17 @@ router.ws('/', function(ws, req) { ws.on('message', msg => { + let message = JSON.parse(msg); + // Latest data is always pushed out to clients, but clients can also request cached data at any time. - if(msg === 'getCachedData') { - let cachedData = dataFetcher.getCachedData(); + if(message.requestType === 'getCachedData') { + let deviceId = message.deviceId; + let cachedData = dataFetcher.getCachedData(deviceId); - ws.send(dataBroadcaster.generatePayload('realtimeUsage', cachedData.realtimeUsage)); - ws.send(dataBroadcaster.generatePayload('dailyUsage', cachedData.dailyUsage)); - ws.send(dataBroadcaster.generatePayload('monthlyUsage', cachedData.monthlyUsage)); - ws.send(dataBroadcaster.generatePayload('powerState', cachedData.powerState)); + ws.send(dataBroadcaster.generatePayload('realtimeUsage', deviceId, cachedData.realtimeUsage)); + ws.send(dataBroadcaster.generatePayload('dailyUsage', deviceId, cachedData.dailyUsage)); + ws.send(dataBroadcaster.generatePayload('monthlyUsage', deviceId, cachedData.monthlyUsage)); + ws.send(dataBroadcaster.generatePayload('powerState', deviceId, cachedData.powerState)); } }); |