Added card read functionallity

main
fbp 2 years ago
parent 941ad2a541
commit cce5879e39

@ -121,3 +121,16 @@
"deviceId": 0 "deviceId": 0
} }
``` ```
* Card read
Topic: `card/read`
Data example:
```json
{
"deviceId": 0,
"cardUID": "6XjCwg=="
}
```

@ -48,7 +48,6 @@ function armAlarm(deviceId) {
function armingTimerRunout(deviceId) { function armingTimerRunout(deviceId) {
if (StateManager.alarmStatus === Arming) { if (StateManager.alarmStatus === Arming) {
mqttClient.publish("alarm/state", JSON.stringify({ status: Armed })); mqttClient.publish("alarm/state", JSON.stringify({ status: Armed }));
mqttClient.publish("door/lock", JSON.stringify({ deviceId: 2, lock: true }));
StateManager.alarmStatus = Armed; StateManager.alarmStatus = Armed;
console.log("Alarm has been set to Armed"); console.log("Alarm has been set to Armed");
insertEvent(deviceId, Armed); insertEvent(deviceId, Armed);
@ -57,13 +56,24 @@ function armingTimerRunout(deviceId) {
function disarmAlarm(deviceId) { function disarmAlarm(deviceId) {
mqttClient.publish("alarm/state", JSON.stringify({ status: Disarmed })); mqttClient.publish("alarm/state", JSON.stringify({ status: Disarmed }));
mqttClient.publish("door/lock", JSON.stringify({ deviceId: 2, lock: false }));
StateManager.alarmStatus = Disarmed; StateManager.alarmStatus = Disarmed;
clearTimeout(timer); clearTimeout(timer);
console.log("Alarm has been set to Disarmed"); console.log("Alarm has been set to Disarmed");
insertEvent(deviceId, Disarmed); insertEvent(deviceId, Disarmed);
} }
function lockDoor() {
mqttClient.publish("door/lock", JSON.stringify({ deviceId: 2, lock: true }));
}
let doorTimer;
function unlockDoor() {
mqttClient.publish("door/lock", JSON.stringify({ deviceId: 2, lock: false }));
clearTimeout(doorTimer);
doorTimer = setTimeout(lockDoor, 5000);
}
let timer; let timer;
module.exports = { module.exports = {
@ -73,5 +83,7 @@ module.exports = {
disarmingTimerRunout, disarmingTimerRunout,
armAlarm, armAlarm,
armingTimerRunout, armingTimerRunout,
disarmAlarm disarmAlarm,
lockDoor,
unlockDoor
}; };

@ -28,7 +28,9 @@ const {insertEvent,
disarmingTimerRunout, disarmingTimerRunout,
armAlarm, armAlarm,
armingTimerRunout, armingTimerRunout,
disarmAlarm} = require("./functions"); disarmAlarm,
unlockDoor,
lockDoor } = require("./functions");
mqttClient.on("message", (topic, message, packet) => { mqttClient.on("message", (topic, message, packet) => {
// console.log(packet); // console.log(packet);
@ -59,20 +61,24 @@ mqttClient.on("message", (topic, message, packet) => {
console.log("door sensor"); console.log("door sensor");
triggerAlarm(data.deviceId); triggerAlarm(data.deviceId);
} }
if (data.open === false) {
lockDoor();
}
break; break;
} }
case "display/arm": { case "display/arm": {
const data = JSON.parse(message); const data = JSON.parse(message);
console.log(topic, data); console.log(topic, data);
if (StateManager.alarmStatus === Disarmed)
armAlarm(data.deviceId); armAlarm(data.deviceId);
break; break;
} }
case "display/disarm": { // case "display/disarm": {
const data = JSON.parse(message); // const data = JSON.parse(message);
console.log(topic, data); // console.log(topic, data);
disarmAlarm(data.deviceId); // disarmAlarm(data.deviceId);
break; // break;
} // }
case "light": { case "light": {
const data = JSON.parse(message); const data = JSON.parse(message);
db.query(` db.query(`
@ -95,6 +101,18 @@ mqttClient.on("message", (topic, message, packet) => {
]); ]);
break; break;
} }
case "card/read": {
const data = JSON.parse(message);
console.log(data);
const uids = ["s8K/CQ==", "fo3S0VABBOA=", "6XjCwg=="]
if (uids.includes(data.cardUID)) {
if (StateManager.alarmStatus != Disarmed) {
disarmAlarm();
}
unlockDoor();
}
break;
}
default: default:
console.log("Unsupported topic received: " + topic); console.log("Unsupported topic received: " + topic);
break; break;

Loading…
Cancel
Save