aboutsummaryrefslogtreecommitdiff
path: root/services/data-broadcaster.js
diff options
context:
space:
mode:
authorJames Barnett <james.barnett@fivium.co.uk>2018-04-08 17:25:47 +0100
committerGitHub <noreply@github.com>2018-04-08 17:25:47 +0100
commiteb0185c03f8d5b68949798e8040b42a203b040a2 (patch)
tree86da8449b0c92ec29a15baffe3e7bd8ebd34488e /services/data-broadcaster.js
parent954aff49707738e660e92e0418c31b1ec78a85a8 (diff)
parent4ec37af74fc77f7381d7c5c3b2560c8726f75ffa (diff)
downloadtplink-energy-monitor-eb0185c03f8d5b68949798e8040b42a203b040a2.tar.xz
tplink-energy-monitor-eb0185c03f8d5b68949798e8040b42a203b040a2.zip
Merge pull request #1 from jamesbarnett91/websocketsv0.2
Switch from http polling to websockets
Diffstat (limited to 'services/data-broadcaster.js')
-rw-r--r--services/data-broadcaster.js43
1 files changed, 43 insertions, 0 deletions
diff --git a/services/data-broadcaster.js b/services/data-broadcaster.js
new file mode 100644
index 0000000..9e0c5d0
--- /dev/null
+++ b/services/data-broadcaster.js
@@ -0,0 +1,43 @@
+const app = require('../app');
+
+function broadcastRealtimeUsageUpdate(deviceId, data) {
+ broadcast(generatePayload('realtimeUsage', deviceId, data));
+}
+
+function broadcastDailyUsageUpdate(deviceId, data) {
+ broadcast(generatePayload('dailyUsage', deviceId, data));
+}
+
+function broadcastMonthlyUsageUpdate(deviceId, data) {
+ broadcast(generatePayload('monthlyUsage', deviceId, data));
+}
+
+function broadcastPowerStateUpdate(deviceId, data) {
+ broadcast(generatePayload('powersState', deviceId, data));
+}
+
+function broadcast(payload) {
+ app.getWsClients().forEach(client => {
+ client.send(payload);
+ })
+}
+
+function generatePayload(dataType, deviceId, data) {
+
+ let payload = {
+ dataType: dataType,
+ deviceId: deviceId,
+ data: data
+ }
+
+ return JSON.stringify(payload);
+}
+
+
+module.exports = {
+ broadcastRealtimeUsageUpdate: broadcastRealtimeUsageUpdate,
+ broadcastDailyUsageUpdate: broadcastDailyUsageUpdate,
+ broadcastMonthlyUsageUpdate: broadcastMonthlyUsageUpdate,
+ broadcastPowerStateUpdate: broadcastPowerStateUpdate,
+ generatePayload: generatePayload
+} \ No newline at end of file