feat(rfid): work on the readers and there functions
This commit is contained in:
@@ -1,24 +1,24 @@
|
||||
//http://usday1vms006:4000/api/v1/zebra/wrapper1
|
||||
import {z, createRoute, OpenAPIHono} from "@hono/zod-openapi";
|
||||
import {readTags} from "../controller/readTags.js";
|
||||
import {createLog} from "../../logger/logger.js";
|
||||
import {responses} from "../../../globalUtils/routeDefs/responses.js";
|
||||
import {newHeartBeat} from "../controller/readerControl.js";
|
||||
import { z, createRoute, OpenAPIHono } from "@hono/zod-openapi";
|
||||
import { readTags } from "../controller/readTags.js";
|
||||
import { createLog } from "../../logger/logger.js";
|
||||
import { responses } from "../../../globalUtils/routeDefs/responses.js";
|
||||
import { newHeartBeat } from "../controller/readerControl.js";
|
||||
|
||||
const app = new OpenAPIHono();
|
||||
let lastGpiTimestamp = 0;
|
||||
|
||||
const ParamsSchema = z.object({
|
||||
reader: z
|
||||
.string()
|
||||
.min(3)
|
||||
.openapi({
|
||||
param: {
|
||||
name: "reader",
|
||||
in: "path",
|
||||
},
|
||||
example: "1212121",
|
||||
}),
|
||||
.string()
|
||||
.min(3)
|
||||
.openapi({
|
||||
param: {
|
||||
name: "reader",
|
||||
in: "path",
|
||||
},
|
||||
example: "1212121",
|
||||
}),
|
||||
});
|
||||
|
||||
app.openapi(
|
||||
@@ -33,31 +33,47 @@ app.openapi(
|
||||
responses: responses(),
|
||||
}),
|
||||
async (c) => {
|
||||
const {reader} = c.req.valid("param");
|
||||
const { reader } = c.req.valid("param");
|
||||
const body = await c.req.json();
|
||||
|
||||
if (body.type === "heartbeat") {
|
||||
const heart = await newHeartBeat(reader);
|
||||
return c.json({success: heart.success, message: heart.message}, 200);
|
||||
return c.json(
|
||||
{ success: heart.success, message: heart.message },
|
||||
200
|
||||
);
|
||||
}
|
||||
|
||||
if (body.type === "gpi" && body.data.state === "HIGH") {
|
||||
const eventTimestamp = new Date(body.timestamp).getTime(); // Convert ISO timestamp to milliseconds
|
||||
if (eventTimestamp - lastGpiTimestamp > 5 * 1000) {
|
||||
if (eventTimestamp - lastGpiTimestamp > 30 * 1000) {
|
||||
// Check if it's been more than 2ms
|
||||
lastGpiTimestamp = eventTimestamp; // Update last seen timestamp
|
||||
|
||||
createLog("info", "rfid", "rfid", `${reader} is reading a tag.`);
|
||||
createLog(
|
||||
"info",
|
||||
"rfid",
|
||||
"rfid",
|
||||
`${reader} is reading a tag.`
|
||||
);
|
||||
await readTags(reader);
|
||||
} else {
|
||||
createLog("info", "rfid", "rfid", `A new trigger from ${reader} was to soon`);
|
||||
createLog(
|
||||
"info",
|
||||
"rfid",
|
||||
"rfid",
|
||||
`A new trigger from ${reader} was to soon`
|
||||
);
|
||||
lastGpiTimestamp = eventTimestamp;
|
||||
}
|
||||
|
||||
//console.log(body);
|
||||
}
|
||||
|
||||
return c.json({success: true, message: `New info from ${reader}`}, 200);
|
||||
return c.json(
|
||||
{ success: true, message: `New info from ${reader}` },
|
||||
200
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user