|
|
@ -1822,37 +1822,25 @@ exports.getMasterSlaveSummary = async (req, reply) => {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (const slave of slaves) {
|
|
|
|
for (const slave of slaves) {
|
|
|
|
const slaveIot = await IotData.findOne({ hardwareId: slave.connected_to })
|
|
|
|
const now = moment.tz("Asia/Kolkata");
|
|
|
|
.sort({ date: -1, time: -1 })
|
|
|
|
|
|
|
|
.lean();
|
|
|
|
|
|
|
|
console.log("slaveIot",slaveIot)
|
|
|
|
|
|
|
|
let connectedLoraDate = null;
|
|
|
|
let connectedLoraDate = null;
|
|
|
|
let connectedLoraTime = null;
|
|
|
|
let connectedLoraTime = null;
|
|
|
|
|
|
|
|
|
|
|
|
// if (slaveIot?.date && slaveIot?.time) {
|
|
|
|
|
|
|
|
// const indiaTime = moment.tz(`${slaveIot.date} ${slaveIot.time}`, "Asia/Kolkata");
|
|
|
|
|
|
|
|
// connectedLoraDate = indiaTime.format("DD-MM-YYYY");
|
|
|
|
|
|
|
|
// connectedLoraTime = indiaTime.format("HH:mm:ss");
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// const tankHeight = await getTankHeight(slave.tankhardwareId);
|
|
|
|
|
|
|
|
// let loraStatus = (tankHeight === null || tankHeight === 0) ? "disconnected" : "connected";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// const loraLastDisconnect = loraStatus === "disconnected" && connectedLoraDate && connectedLoraTime
|
|
|
|
|
|
|
|
// ? `${connectedLoraDate} ${connectedLoraTime}`
|
|
|
|
|
|
|
|
// : slave.lora_last_disconnect_time || null;
|
|
|
|
|
|
|
|
let loraStatus = "disconnected";
|
|
|
|
let loraStatus = "disconnected";
|
|
|
|
let loraLastDisconnect = slave.lora_last_disconnect_time || null;
|
|
|
|
let loraLastDisconnect = slave.lora_last_disconnect_time || null;
|
|
|
|
|
|
|
|
let loraLastCheckTime = now.format("DD-MM-YYYY HH:mm:ss");
|
|
|
|
let tankHeight = null;
|
|
|
|
let tankHeight = null;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Fetch latest IotData for slave's hardwareId (NOT master's)
|
|
|
|
|
|
|
|
const slaveIot = await IotData.findOne({ hardwareId: slave.connected_to })
|
|
|
|
|
|
|
|
.sort({ date: -1, time: -1 })
|
|
|
|
|
|
|
|
.lean();
|
|
|
|
|
|
|
|
|
|
|
|
if (slaveIot?.tanks?.length && slave.tankhardwareId) {
|
|
|
|
if (slaveIot?.tanks?.length && slave.tankhardwareId) {
|
|
|
|
const matchedTank = slaveIot.tanks.find(
|
|
|
|
const matchedTank = slaveIot.tanks.find(
|
|
|
|
t => t.tankhardwareId === slave.tankhardwareId
|
|
|
|
t => t.tankhardwareId === slave.tankhardwareId
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
if (matchedTank) {
|
|
|
|
if (matchedTank) {
|
|
|
|
tankHeight = parseFloat(matchedTank.tankHeight) || 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const indiaTime = moment.tz(
|
|
|
|
const indiaTime = moment.tz(
|
|
|
|
`${moment(matchedTank.date).format("YYYY-MM-DD")} ${matchedTank.time}`,
|
|
|
|
`${moment(matchedTank.date).format("YYYY-MM-DD")} ${matchedTank.time}`,
|
|
|
|
"YYYY-MM-DD HH:mm:ss",
|
|
|
|
"YYYY-MM-DD HH:mm:ss",
|
|
|
@ -1862,24 +1850,20 @@ exports.getMasterSlaveSummary = async (req, reply) => {
|
|
|
|
connectedLoraDate = indiaTime.format("DD-MM-YYYY");
|
|
|
|
connectedLoraDate = indiaTime.format("DD-MM-YYYY");
|
|
|
|
connectedLoraTime = indiaTime.format("HH:mm:ss");
|
|
|
|
connectedLoraTime = indiaTime.format("HH:mm:ss");
|
|
|
|
|
|
|
|
|
|
|
|
loraStatus = tankHeight > 0 ? "connected" : "disconnected";
|
|
|
|
tankHeight = parseFloat(matchedTank.tankHeight) || 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const diffMinutes = now.diff(indiaTime, "minutes");
|
|
|
|
|
|
|
|
|
|
|
|
// ⛔ Override if master is disconnected
|
|
|
|
// Connected if tankHeight > 0 and data not older than 5 mins
|
|
|
|
if (gsmStatus === "disconnected") {
|
|
|
|
loraStatus = (tankHeight > 0 && diffMinutes <= 1) ? "connected" : "disconnected";
|
|
|
|
loraStatus = "disconnected";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (loraStatus === "disconnected") {
|
|
|
|
if (loraStatus === "disconnected") {
|
|
|
|
if (connectedLoraDate && connectedLoraTime) {
|
|
|
|
loraLastDisconnect = `${connectedLoraDate} ${connectedLoraTime}`;
|
|
|
|
loraLastDisconnect = `${connectedLoraDate} ${connectedLoraTime}`;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
loraLastDisconnect = slave.lora_last_disconnect_time || null;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// Update in DB
|
|
|
|
|
|
|
|
|
|
|
|
// Update DB with new status and timestamps
|
|
|
|
await Insensors.updateOne(
|
|
|
|
await Insensors.updateOne(
|
|
|
|
{ hardwareId: slave.hardwareId },
|
|
|
|
{ hardwareId: slave.hardwareId },
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -1887,8 +1871,9 @@ exports.getMasterSlaveSummary = async (req, reply) => {
|
|
|
|
connected_status: loraStatus,
|
|
|
|
connected_status: loraStatus,
|
|
|
|
connected_lora_date: connectedLoraDate,
|
|
|
|
connected_lora_date: connectedLoraDate,
|
|
|
|
connected_lora_time: connectedLoraTime,
|
|
|
|
connected_lora_time: connectedLoraTime,
|
|
|
|
lora_last_disconnect_time: loraLastDisconnect
|
|
|
|
lora_last_check_time: loraLastCheckTime,
|
|
|
|
}
|
|
|
|
lora_last_disconnect_time: loraLastDisconnect,
|
|
|
|
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
@ -1900,12 +1885,15 @@ exports.getMasterSlaveSummary = async (req, reply) => {
|
|
|
|
connected_status: loraStatus,
|
|
|
|
connected_status: loraStatus,
|
|
|
|
connected_lora_date: connectedLoraDate,
|
|
|
|
connected_lora_date: connectedLoraDate,
|
|
|
|
connected_lora_time: connectedLoraTime,
|
|
|
|
connected_lora_time: connectedLoraTime,
|
|
|
|
|
|
|
|
lora_last_check_time: loraLastCheckTime,
|
|
|
|
lora_last_disconnect_time: loraLastDisconnect,
|
|
|
|
lora_last_disconnect_time: loraLastDisconnect,
|
|
|
|
type: slave.type || "slave",
|
|
|
|
type: slave.type || "slave",
|
|
|
|
connected_to: slave.connected_to || null
|
|
|
|
connected_to: slave.connected_to || null,
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
result.push({
|
|
|
|
result.push({
|
|
|
|
hardwareId: master.hardwareId,
|
|
|
|
hardwareId: master.hardwareId,
|
|
|
|
masterName,
|
|
|
|
masterName,
|
|
|
|