Added card read functionallity

main
fbp 2 years ago
parent 941ad2a541
commit cce5879e39

@ -120,4 +120,17 @@
{ {
"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
}; };

@ -22,13 +22,15 @@ app.listen(process.env.PORT || 8080, () => {
console.log(`Listening on port ${process.env.PORT || 8080}`); console.log(`Listening on port ${process.env.PORT || 8080}`);
}); });
const {insertEvent, const { insertEvent,
triggerAlarm, triggerAlarm,
disarmingAlarm, disarmingAlarm,
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);
armAlarm(data.deviceId); if (StateManager.alarmStatus === Disarmed)
break; armAlarm(data.deviceId);
}
case "display/disarm": {
const data = JSON.parse(message);
console.log(topic, data);
disarmAlarm(data.deviceId);
break; break;
} }
// case "display/disarm": {
// const data = JSON.parse(message);
// console.log(topic, data);
// disarmAlarm(data.deviceId);
// 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