mirror of
https://github.com/eliasrenman/gardentron.git
synced 2026-03-16 20:46:07 +01:00
fix: read moisture level
This commit is contained in:
@@ -1,30 +1,54 @@
|
||||
import cron from "node-cron";
|
||||
import { iotClient } from "../axios/iot.axios";
|
||||
import { moistureResponse } from "../axios/iot.types";
|
||||
import { MoistureResponse } from "../axios/iot.types";
|
||||
import { prisma } from "../prisma";
|
||||
import { emitter } from "../eventemitter";
|
||||
import { AxiosError } from "axios";
|
||||
|
||||
export function registerCronjobs() {
|
||||
cron.schedule("* * * * *", async () => {
|
||||
console.log("Checking moisture levels");
|
||||
|
||||
// Read moisture sensors
|
||||
const { data } = await iotClient.post<moistureResponse>("moisture");
|
||||
const rows = [];
|
||||
for (const [key, value] of Object.entries(data)) {
|
||||
const row = await prisma.moistureValue.create({
|
||||
try {
|
||||
const { data } = await readMoistureLevels();
|
||||
const rows = await insertRows(data);
|
||||
|
||||
console.log("Successfully checked moisture levels");
|
||||
if (rows.length === 0) return;
|
||||
// Emit event
|
||||
emitter.emit("moisture.updated", ...rows);
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function readMoistureLevels() {
|
||||
return iotClient
|
||||
.get<MoistureResponse | undefined>("moisture/read")
|
||||
.catch((err: AxiosError) => {
|
||||
return {
|
||||
data: undefined,
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
async function insertRows(data: MoistureResponse | undefined) {
|
||||
if (!data) {
|
||||
return [];
|
||||
}
|
||||
|
||||
return Promise.all(
|
||||
Object.entries(data.data).map(([key, value]) =>
|
||||
prisma.moistureValue.create({
|
||||
data: {
|
||||
name: key,
|
||||
value,
|
||||
value: value.precentage,
|
||||
createdAt: new Date(),
|
||||
},
|
||||
select: { createdAt: true, id: true, name: true, value: true },
|
||||
});
|
||||
|
||||
rows.push(row);
|
||||
}
|
||||
|
||||
// Emit event
|
||||
emitter.emit("moisture.updated", rows);
|
||||
});
|
||||
})
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user