From 991745ba80ad95ffbe4f51e014c4d218ef409d53 Mon Sep 17 00:00:00 2001 From: fbp Date: Wed, 30 Aug 2023 09:40:48 +0200 Subject: [PATCH] Added changed field to alarm/state topic and sends alarm/state periodically --- API.md | 3 ++- functions.js | 10 +++++----- mqtt.js | 6 +++++- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/API.md b/API.md index 273196c..e75b2fd 100644 --- a/API.md +++ b/API.md @@ -94,7 +94,8 @@ ```json { - "status": "Disarmed" + "status": "Disarmed", + "changed": true } ``` diff --git a/functions.js b/functions.js index 672add4..e40089c 100644 --- a/functions.js +++ b/functions.js @@ -15,14 +15,14 @@ function insertEvent(deviceId, eventType) { } function triggerAlarm(deviceId) { - mqttClient.publish("alarm/state", JSON.stringify({ status: Triggered })); + mqttClient.publish("alarm/state", JSON.stringify({ status: Triggered, changed: true })); StateManager.alarmStatus = Triggered; console.log("Alarm has been triggered", deviceId); insertEvent(deviceId, Triggered); } function disarmingAlarm(deviceId) { - mqttClient.publish("alarm/state", JSON.stringify({ status: Disarming })); + mqttClient.publish("alarm/state", JSON.stringify({ status: Disarming, changed: true })); StateManager.alarmStatus = Disarming; console.log("Alarm has been set to Disarming"); clearTimeout(timer); @@ -37,7 +37,7 @@ function disarmingTimerRunout(deviceId) { } function armAlarm(deviceId) { - mqttClient.publish("alarm/state", JSON.stringify({ status: Arming })); + mqttClient.publish("alarm/state", JSON.stringify({ status: Arming, changed: true })); StateManager.alarmStatus = Arming; console.log("Alarm has been set to Arming"); clearTimeout(timer); @@ -47,7 +47,7 @@ function armAlarm(deviceId) { function armingTimerRunout(deviceId) { if (StateManager.alarmStatus === Arming) { - mqttClient.publish("alarm/state", JSON.stringify({ status: Armed })); + mqttClient.publish("alarm/state", JSON.stringify({ status: Armed, changed: true })); StateManager.alarmStatus = Armed; console.log("Alarm has been set to Armed"); insertEvent(deviceId, Armed); @@ -55,7 +55,7 @@ function armingTimerRunout(deviceId) { } function disarmAlarm(deviceId) { - mqttClient.publish("alarm/state", JSON.stringify({ status: Disarmed })); + mqttClient.publish("alarm/state", JSON.stringify({ status: Disarmed, changed: true })); StateManager.alarmStatus = Disarmed; clearTimeout(timer); console.log("Alarm has been set to Disarmed"); diff --git a/mqtt.js b/mqtt.js index 096d847..1ba2d97 100644 --- a/mqtt.js +++ b/mqtt.js @@ -24,12 +24,16 @@ mqttClient.on("connect", (a) => { // }, 3000); console.log(StateManager.alarmStatus); - mqttClient.publish("alarm/state", JSON.stringify({ status: StateManager.alarmStatus })); + mqttClient.publish("alarm/state", JSON.stringify({ status: StateManager.alarmStatus, changed: true })); mqttClient.publish("door/lock", JSON.stringify({ deviceId: 2, lock: true })); // mqttClient.publish("alarm/state", JSON.stringify({ status: "Triggered" })); // setTimeout(() => { // mqttClient.publish("alarm/state", JSON.stringify({ status: "Arming" })); // }, 5000); + + setInterval(() => { + mqttClient.publish("alarm/state", JSON.stringify({ status: StateManager.alarmStatus, changed: false })); + }, 2000); }); mqttClient.subscribe("motion");