67 lines
1.4 KiB
JavaScript
67 lines
1.4 KiB
JavaScript
const client = require("./modules/mqtt.js");
|
|
const { isJson, isNumber } = require("./functions/validateData.js");
|
|
const { addSensorData } = require("./functions/sensorData");
|
|
|
|
// Event handlers
|
|
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
|
|
addSensorData(datas[key].sensorid, datas[key].locationid, 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();
|
|
});
|
|
|