Starting anew, before I changed to a custom chart

This commit is contained in:
Daniel Ledda
2021-03-14 18:42:25 +01:00
commit 50362860ae
47 changed files with 13982 additions and 0 deletions

46
server/src/pingSensors.ts Normal file
View File

@@ -0,0 +1,46 @@
import {ISOSnapshot} from "./Snapshot";
import {exec} from "child-process-promise";
import path from "path";
import fetch from "node-fetch";
import {ClayPIError} from "./errors";
async function pingSensors(): Promise<Omit<ISOSnapshot, "id">> {
try {
const process = await exec(`python3 ${path.resolve(__dirname + "/../scripts/pinger-test.py")}`);
const result = process.stdout;
const snapshotArray = result.split("\t").map(piece => piece.trim());
return {
time: snapshotArray[1],
temp: Number(snapshotArray[3]),
humidity: Number(snapshotArray[5]),
co2: Number(snapshotArray[7]),
};
} catch (err) {
throw new ClayPIError(
`Could not generate a new snapshot: Python error: ${err}. Have you installed python 3 and the necessary requirements?`,
"Could not generate a new snapshot."
);
}
}
async function submitToServer(snapshot: Omit<ISOSnapshot, "id">) {
await fetch(`http://localhost:${process.env.PORT}${process.env.SERVER_ROOT}/api/snapshots`, {
method: "POST",
body: JSON.stringify({ snapshots: [snapshot] }),
headers: {
"Content-type": "application/json"
}
});
}
export function startSensorPinger() {
const createAndSubmitNewSnapshot = async () => {
try {
await submitToServer(await pingSensors());
} catch (e) {
console.log(e);
}
};
createAndSubmitNewSnapshot();
setInterval(createAndSubmitNewSnapshot, (Number(process.env.SENSOR_PING_INTERVAL) ?? 30) * 1000);
}