master^2
Bhaskar 5 months ago
parent e5df29da26
commit 12729af8f1

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

Loading…
Cancel
Save