iot sensor finished

1)with validation on front and backend
2)fixed seed route generating value 0 for data
This commit is contained in:
newtbot
2024-01-14 02:43:27 +08:00
parent a7e1a0028e
commit c00a57d5f6
12 changed files with 417 additions and 148 deletions

View File

@ -1,49 +1,66 @@
const { app } = require("./modules/express.js");
const client = require("./modules/mqtt");
const { validateData } = require("./functions/validateData.js");
const { insertData } = require("./functions/database.js");
/*
1) on data received, validate data
2) websocket to another server
*/
const client = require("./modules/mqtt");
const { isJson, isNumber } = require("./functions/validateData.js");
const { insertDatatoDB } = require("./functions/database.js");
// Event handlers
client.on('connect', () => {
console.log('Connected to MQTT broker');
client.subscribe('iot-data');
});
client.on('message', (topic, message) => {
//console.log(`Received message on topic ${topic}: ${message}`);
let data = JSON.parse(message);
if (validateData(data)) {
//upload to db logic here
insertData(data);
//websocket logic here??
}
else {
console.log("Data is invalid");
throw new Error("Data is invalid");
}
});
client.on('error', (err) => {
console.error('Error:', err);
client.end();
});
client.on('end', () => {
console.log('Disconnected from MQTT broker');
client.reconnect = true;
}
);
client.on("connect", () => {
console.log("Connected to MQTT broker");
client.subscribe("iot-data");
});
client.on("message", (topic, message) => {
try {
let datas = JSON.parse(message);
if (isJson(datas)) {
for (let key in datas) {
let data = parseInt(
datas[key].locationid +
" " +
datas[key].sensorid +
" " +
datas[key].measurement.psi +
" " +
datas[key].measurement.humidity +
" " +
datas[key].measurement.o3 +
" " +
datas[key].measurement.no2 +
" " +
datas[key].measurement.so2 +
" " +
datas[key].measurement.co +
" " +
datas[key].measurement.temperature +
" " +
datas[key].measurement.windspeed
);
if (isNumber(data)) {
{
//pass datas to database
insertDatatoDB(datas[key]);
}
} else {
console.log("Invalid data");
client.end();
}
}
} else {
console.log("Invalid data");
client.end();
}
} catch (err) {
console.error(err);
}
});
client.on("error", (err) => {
console.error("Error:", err);
client.end();
});
client.on("end", () => {
console.log("Disconnected from MQTT broker");
client.reconnect = true;
});