From 24b4a39fce61dd9bd8ab7757f3bbda0636adc8c9 Mon Sep 17 00:00:00 2001 From: James Barnett Date: Sat, 7 Apr 2018 18:49:48 +0100 Subject: Switch from http polling to data push via websockets --- services/data-broadcaster.js | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 services/data-broadcaster.js (limited to 'services/data-broadcaster.js') diff --git a/services/data-broadcaster.js b/services/data-broadcaster.js new file mode 100644 index 0000000..a49f4a7 --- /dev/null +++ b/services/data-broadcaster.js @@ -0,0 +1,42 @@ +const app = require('../app'); + +function broadcastRealtimeUsageUpdate(data) { + broadcast(generatePayload('realtimeUsage', data)); +} + +function broadcastDailyUsageUpdate(data) { + broadcast(generatePayload('dailyUsage', data)); +} + +function broadcastMonthlyUsageUpdate(data) { + broadcast(generatePayload('monthlyUsage', data)); +} + +function broadcastPowerStateUpdate(data) { + broadcast(generatePayload('powersState', data)); +} + +function broadcast(payload) { + app.getWsClients().forEach(client => { + client.send(payload); + }) +} + +function generatePayload(dataType, data) { + + let payload = { + dataType: dataType, + data: data + } + + return JSON.stringify(payload); +} + + +module.exports = { + broadcastRealtimeUsageUpdate: broadcastRealtimeUsageUpdate, + broadcastDailyUsageUpdate: broadcastDailyUsageUpdate, + broadcastMonthlyUsageUpdate: broadcastMonthlyUsageUpdate, + broadcastPowerStateUpdate: broadcastPowerStateUpdate, + generatePayload: generatePayload +} \ No newline at end of file -- cgit v1.2.3 From 1301d90e93af799a9054f133847ebf3cbda15f9d Mon Sep 17 00:00:00 2001 From: James Barnett Date: Sat, 7 Apr 2018 21:43:17 +0100 Subject: Add support for switching between multiple plugs --- services/data-broadcaster.js | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'services/data-broadcaster.js') diff --git a/services/data-broadcaster.js b/services/data-broadcaster.js index a49f4a7..9e0c5d0 100644 --- a/services/data-broadcaster.js +++ b/services/data-broadcaster.js @@ -1,19 +1,19 @@ const app = require('../app'); -function broadcastRealtimeUsageUpdate(data) { - broadcast(generatePayload('realtimeUsage', data)); +function broadcastRealtimeUsageUpdate(deviceId, data) { + broadcast(generatePayload('realtimeUsage', deviceId, data)); } -function broadcastDailyUsageUpdate(data) { - broadcast(generatePayload('dailyUsage', data)); +function broadcastDailyUsageUpdate(deviceId, data) { + broadcast(generatePayload('dailyUsage', deviceId, data)); } -function broadcastMonthlyUsageUpdate(data) { - broadcast(generatePayload('monthlyUsage', data)); +function broadcastMonthlyUsageUpdate(deviceId, data) { + broadcast(generatePayload('monthlyUsage', deviceId, data)); } -function broadcastPowerStateUpdate(data) { - broadcast(generatePayload('powersState', data)); +function broadcastPowerStateUpdate(deviceId, data) { + broadcast(generatePayload('powersState', deviceId, data)); } function broadcast(payload) { @@ -22,10 +22,11 @@ function broadcast(payload) { }) } -function generatePayload(dataType, data) { +function generatePayload(dataType, deviceId, data) { let payload = { dataType: dataType, + deviceId: deviceId, data: data } -- cgit v1.2.3