From 7c54910c6f128957156694ae3d24da6e8261d3d3 Mon Sep 17 00:00:00 2001 From: Varun Date: Wed, 23 Apr 2025 21:27:32 +0530 Subject: [PATCH 1/5] changes --- src/controllers/tanksController.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/controllers/tanksController.js b/src/controllers/tanksController.js index 69f80fc9..baefea3a 100644 --- a/src/controllers/tanksController.js +++ b/src/controllers/tanksController.js @@ -6224,6 +6224,7 @@ async function processIotData(hw_Id, data) { const startTime1 = moment().tz('Asia/Kolkata').format('DD-MMM-YYYY - HH:mm:ss'); const startInstanceId = `${hw_Id}${formattedTime}`; + inputConnection.motor_stop_status = "2"; inputConnection.motor_on_type = "forced_manual"; inputConnection.startTime = startTime1; From 17d041dc503c9c759c659e890c03218fd1a0cd32 Mon Sep 17 00:00:00 2001 From: Varun Date: Wed, 23 Apr 2025 21:37:13 +0530 Subject: [PATCH 2/5] changes --- src/controllers/tanksController.js | 38 +----------------------------- 1 file changed, 1 insertion(+), 37 deletions(-) diff --git a/src/controllers/tanksController.js b/src/controllers/tanksController.js index baefea3a..237703d0 100644 --- a/src/controllers/tanksController.js +++ b/src/controllers/tanksController.js @@ -6147,44 +6147,9 @@ async function processIotData(hw_Id, data) { const waterLevel = parseInt(waterLevelHeight * waterCapacityPerCm, 10); console.log(`🚰 Tank [${tankhardwareId}] - Level: ${tankHeight}, Calculated Water Level: ${waterLevel}`); - if (tankHeight <= 0) { - const now = moment().tz('Asia/Kolkata'); - const formattedNow = now.format('DD-MMM-YYYY - HH:mm:ss'); - - if (existingTank.slave_status !== "not_working") { - if (!existingTank.slave_disconnected_time) { - // First time signal is lost - existingTank.slave_status = "signal_lost"; - existingTank.slave_disconnected_time = formattedNow; - await existingTank.save(); - console.log(`⚠️ Slave signal lost for tank [${tankhardwareId}] at ${formattedNow}`); - } else if (existingTank.slave_status === "signal_lost") { - const disconnectedMoment = moment(existingTank.slave_disconnected_time, 'DD-MMM-YYYY - HH:mm:ss'); - if (!disconnectedMoment.isValid()) { - console.error(`❌ Invalid slave_disconnected_time format for tank [${tankhardwareId}]`); - } else { - const minutesDiff = now.diff(disconnectedMoment, 'minutes'); - console.log(`⏳ Minutes since disconnect for tank [${tankhardwareId}]: ${minutesDiff} min`); - - if (minutesDiff >= 5) { - existingTank.slave_status = "not_working"; - await existingTank.save(); - console.log(`❌ Slave marked as not_working for tank [${tankhardwareId}] after ${minutesDiff} minutes`); - } else { - console.log(`ℹ️ Still within 5-minute window for tank [${tankhardwareId}], no update yet`); - } - } - } - } else { - console.log(`⏩ Slave already marked as not_working for tank [${tankhardwareId}], skipping update`); - } - } - if (tankHeight > 0 && waterLevel >= 0) { existingTank.waterlevel = waterLevel; - existingTank.slave_status = "working"; - existingTank.slave_disconnected_time = null; await existingTank.save(); for (const outputConnection of existingTank.connections.outputConnections) { @@ -6224,7 +6189,6 @@ async function processIotData(hw_Id, data) { const startTime1 = moment().tz('Asia/Kolkata').format('DD-MMM-YYYY - HH:mm:ss'); const startInstanceId = `${hw_Id}${formattedTime}`; - inputConnection.motor_stop_status = "2"; inputConnection.motor_on_type = "forced_manual"; inputConnection.startTime = startTime1; @@ -7754,4 +7718,4 @@ exports.compareMeasuredHeight = async (req, reply) => { console.error("Error in compareMeasuredHeight:", err); reply.status(500).send({ message: err.message }); } -}; +}; \ No newline at end of file From 663284fbdd8ab3933f7cbbfe55fb9cf599ca10c6 Mon Sep 17 00:00:00 2001 From: Varun Date: Thu, 24 Apr 2025 10:06:21 +0530 Subject: [PATCH 3/5] changes --- src/controllers/tanksController.js | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/controllers/tanksController.js b/src/controllers/tanksController.js index 237703d0..44512b8c 100644 --- a/src/controllers/tanksController.js +++ b/src/controllers/tanksController.js @@ -6147,9 +6147,39 @@ async function processIotData(hw_Id, data) { const waterLevel = parseInt(waterLevelHeight * waterCapacityPerCm, 10); console.log(`🚰 Tank [${tankhardwareId}] - Level: ${tankHeight}, Calculated Water Level: ${waterLevel}`); + if (tankHeight <= 0) { + const now = moment().tz('Asia/Kolkata'); + + if (!existingTank.slave_status || existingTank.slave_status !== "not_working") { + if (!existingTank.slave_disconnected_time) { + // First time signal lost + const disconnectedTime = now.format('DD-MMM-YYYY - HH:mm:ss'); + existingTank.slave_status = "signal_lost"; + existingTank.slave_disconnected_time = disconnectedTime; + await existingTank.save(); + console.log(`⚠️ Slave signal lost for tank [${tankhardwareId}] at ${disconnectedTime}`); + } else if (existingTank.slave_status === "signal_lost") { + const disconnectedMoment = moment(existingTank.slave_disconnected_time, 'DD-MMM-YYYY - HH:mm:ss'); + const minutesDiff = now.diff(disconnectedMoment, 'minutes'); + if (minutesDiff >= 5) { + existingTank.slave_status = "not_working"; + await existingTank.save(); + console.log(`❌ Slave marked as not_working for tank [${tankhardwareId}] after ${minutesDiff} minutes`); + } else { + console.log(`⏳ Slave still within grace period (${minutesDiff} min) for tank [${tankhardwareId}]`); + } + } + } else { + console.log(`⏩ Slave already marked as not_working for tank [${tankhardwareId}], skipping update.`); + } + } + + if (tankHeight > 0 && waterLevel >= 0) { existingTank.waterlevel = waterLevel; + existingTank.slave_status = "working"; + existingTank.slave_disconnected_time = null; await existingTank.save(); for (const outputConnection of existingTank.connections.outputConnections) { From 96c124cab871c6dc89f4cefaddaea79264910c6e Mon Sep 17 00:00:00 2001 From: Varun Date: Thu, 24 Apr 2025 10:08:31 +0530 Subject: [PATCH 4/5] changes --- src/controllers/tanksController.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/controllers/tanksController.js b/src/controllers/tanksController.js index 44512b8c..42534c66 100644 --- a/src/controllers/tanksController.js +++ b/src/controllers/tanksController.js @@ -6134,7 +6134,9 @@ async function processIotData(hw_Id, data) { for (const tank of tanks) { const { Id: tankhardwareId, level: tankHeight } = tank; const existingTank = await Tank.findOne({ hardwareId: hw_Id, tankhardwareId }); - + console.log(hw_Id,"hw_Id") + console.log(tankhardwareId,"tankhardwareId") + console.log(existingTank,"existingTank") if (!existingTank) continue; const customerId = existingTank.customerId; From 69e7ec93043bd78e3f041eb5b18dc7196626816b Mon Sep 17 00:00:00 2001 From: Varun Date: Thu, 24 Apr 2025 16:37:54 +0530 Subject: [PATCH 5/5] changes in water/iot-data linked tanks --- src/controllers/tanksController.js | 36 ++++++++++++++---------------- src/models/tanks.js | 3 ++- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/src/controllers/tanksController.js b/src/controllers/tanksController.js index 42534c66..ac584ff2 100644 --- a/src/controllers/tanksController.js +++ b/src/controllers/tanksController.js @@ -6150,27 +6150,24 @@ async function processIotData(hw_Id, data) { console.log(`🚰 Tank [${tankhardwareId}] - Level: ${tankHeight}, Calculated Water Level: ${waterLevel}`); if (tankHeight <= 0) { - const now = moment().tz('Asia/Kolkata'); - - if (!existingTank.slave_status || existingTank.slave_status !== "not_working") { - if (!existingTank.slave_disconnected_time) { - // First time signal lost - const disconnectedTime = now.format('DD-MMM-YYYY - HH:mm:ss'); - existingTank.slave_status = "signal_lost"; - existingTank.slave_disconnected_time = disconnectedTime; - await existingTank.save(); - console.log(`⚠️ Slave signal lost for tank [${tankhardwareId}] at ${disconnectedTime}`); - } else if (existingTank.slave_status === "signal_lost") { - const disconnectedMoment = moment(existingTank.slave_disconnected_time, 'DD-MMM-YYYY - HH:mm:ss'); - const minutesDiff = now.diff(disconnectedMoment, 'minutes'); - if (minutesDiff >= 5) { - existingTank.slave_status = "not_working"; - await existingTank.save(); - console.log(`❌ Slave marked as not_working for tank [${tankhardwareId}] after ${minutesDiff} minutes`); - } else { - console.log(`⏳ Slave still within grace period (${minutesDiff} min) for tank [${tankhardwareId}]`); + if (existingTank.slave_status !== "not_working") { + const disconnectedTime = moment().tz('Asia/Kolkata').format('DD-MMM-YYYY - HH:mm:ss'); + existingTank.slave_status = "not_working"; + existingTank.slave_disconnected_time = disconnectedTime; + await existingTank.save(); + + for (const outputConnection of existingTank.connections.outputConnections) { + const linkedTank = await Tank.findOne({ customerId, tankName: outputConnection.outputConnections, tankLocation: outputConnection.output_type }); + if (linkedTank) { + for (const inputConnection of linkedTank.connections.inputConnections) { + if (inputConnection.inputConnections === tank_name) { + inputConnection. slave_status = "not_working"; + await linkedTank.save(); + } } } + } + console.log(`⚠️ Slave disconnected for tank [${tankhardwareId}] at ${disconnectedTime}`); } else { console.log(`⏩ Slave already marked as not_working for tank [${tankhardwareId}], skipping update.`); } @@ -6190,6 +6187,7 @@ async function processIotData(hw_Id, data) { for (const inputConnection of linkedTank.connections.inputConnections) { if (inputConnection.inputConnections === tank_name) { inputConnection.water_level = waterLevel; + inputConnection. slave_status = "working"; await linkedTank.save(); } } diff --git a/src/models/tanks.js b/src/models/tanks.js index 5627fa8f..28a56a70 100644 --- a/src/models/tanks.js +++ b/src/models/tanks.js @@ -89,7 +89,8 @@ const tanksSchema = new mongoose.Schema({ startTime: { type: String, default: null }, start_instance_id: { type: String, default: null }, stopTime: { type: String, default: null }, - waterlevelPercentage: { type: String, default: null } + waterlevelPercentage: { type: String, default: null } , + slave_status:{ type: String, default: "working" }, } ], outputConnections: [