|  |  |  | @ -3032,6 +3032,8 @@ exports.motorAction = async (req, reply) => { | 
			
		
	
		
			
				
					|  |  |  |  |                   "connections.inputConnections.$.manual_threshold_time": null, | 
			
		
	
		
			
				
					|  |  |  |  |                   "connections.inputConnections.$.manual_threshold_percentage": null, | 
			
		
	
		
			
				
					|  |  |  |  |                   "connections.inputConnections.$.stopTime": currentTime, | 
			
		
	
		
			
				
					|  |  |  |  |                   "connections.inputConnections.$.start_instance_id": null, | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |               } | 
			
		
	
		
			
				
					|  |  |  |  |             ); | 
			
		
	
	
		
			
				
					|  |  |  | @ -3057,11 +3059,19 @@ exports.motorAction = async (req, reply) => { | 
			
		
	
		
			
				
					|  |  |  |  |             console.log(motorData,"motorData") | 
			
		
	
		
			
				
					|  |  |  |  |             if (motorData) { | 
			
		
	
		
			
				
					|  |  |  |  |               console.log("got into if") | 
			
		
	
		
			
				
					|  |  |  |  |                | 
			
		
	
		
			
				
					|  |  |  |  |               const receiverTank = await Tank.findOne({ customerId, tankName: motorData.receiverTank, tankLocation: motorData.receiver_type.toLowerCase() }); | 
			
		
	
		
			
				
					|  |  |  |  |               const receiverFinalWaterLevel = parseInt(receiverTank.waterlevel, 10); | 
			
		
	
		
			
				
					|  |  |  |  |               console.log(receiverFinalWaterLevel,"receiverFinalWaterLevel") | 
			
		
	
		
			
				
					|  |  |  |  |               const quantityDelivered = receiverFinalWaterLevel - parseInt(motorData.receiverInitialwaterlevel, 10); | 
			
		
	
		
			
				
					|  |  |  |  |               console.log(quantityDelivered,"quantityDelivered") | 
			
		
	
		
			
				
					|  |  |  |  |               const water_pumped_till_now = parseInt(receiverTank.total_water_added_from_midnight, 10); | 
			
		
	
		
			
				
					|  |  |  |  |               const totalwaterpumped = quantityDelivered + water_pumped_till_now; | 
			
		
	
		
			
				
					|  |  |  |  |               const start = moment(motorData.startTime, 'DD-MMM-YYYY - HH:mm'); | 
			
		
	
		
			
				
					|  |  |  |  |               const stop = moment(currentTime, 'DD-MMM-YYYY - HH:mm'); | 
			
		
	
		
			
				
					|  |  |  |  |               const duration = moment.duration(stop.diff(start)); | 
			
		
	
		
			
				
					|  |  |  |  |               const runtime = Math.floor(duration.asMinutes()); // runtime in minutes
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |               await Tank.findOneAndUpdate( | 
			
		
	
		
			
				
					|  |  |  |  |                 { customerId, tankName: motorData.receiverTank, tankLocation: motorData.receiver_type.toLowerCase() }, | 
			
		
	
	
		
			
				
					|  |  |  | @ -3074,7 +3084,8 @@ exports.motorAction = async (req, reply) => { | 
			
		
	
		
			
				
					|  |  |  |  |                   $set: { | 
			
		
	
		
			
				
					|  |  |  |  |                     stopTime: currentTime, | 
			
		
	
		
			
				
					|  |  |  |  |                     receiverfinalwaterlevel: receiverFinalWaterLevel.toString(), | 
			
		
	
		
			
				
					|  |  |  |  |                     quantity_delivered: quantityDelivered.toString() | 
			
		
	
		
			
				
					|  |  |  |  |                     quantity_delivered: quantityDelivered.toString(), | 
			
		
	
		
			
				
					|  |  |  |  |                     runtime: runtime.toString() | 
			
		
	
		
			
				
					|  |  |  |  |                   } | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |               ); | 
			
		
	
	
		
			
				
					|  |  |  | @ -3130,7 +3141,7 @@ exports.motorAction = async (req, reply) => { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         const supplier_threshold = supplier_waterLevel-desired_percentage | 
			
		
	
		
			
				
					|  |  |  |  |         console.log(supplier_threshold,"supplier_threshold") | 
			
		
	
		
			
				
					|  |  |  |  |         for await (const tank of Tank.find({ "connections.inputConnections.motor_id": motorId })) { | 
			
		
	
		
			
				
					|  |  |  |  |        | 
			
		
	
		
			
				
					|  |  |  |  |           this.publishMotorStopStatus(motorId, motorStopStatus); | 
			
		
	
		
			
				
					|  |  |  |  |         for await (const tank of Tank.find({  "connections.inputConnections.motor_id": motorId })) { | 
			
		
	
		
			
				
					|  |  |  |  |           const index = tank.connections.inputConnections.findIndex(connection => connection.motor_id === motorId); | 
			
		
	
	
		
			
				
					|  |  |  | @ -3194,7 +3205,7 @@ exports.motorAction = async (req, reply) => { | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |           } | 
			
		
	
		
			
				
					|  |  |  |  |         }, 20000);  | 
			
		
	
		
			
				
					|  |  |  |  |       } | 
			
		
	
		
			
				
					|  |  |  |  |        | 
			
		
	
		
			
				
					|  |  |  |  |        | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  |        | 
			
		
	
	
		
			
				
					|  |  |  | @ -3246,43 +3257,6 @@ async function stopMotor(motorId, customerId, start_instance_id) { | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | async function stopMotor(motorId, customerId, start_instance_id) { | 
			
		
	
		
			
				
					|  |  |  |  |   const currentTime = moment().tz('Asia/Kolkata').format('DD-MMM-YYYY - HH:mm'); | 
			
		
	
		
			
				
					|  |  |  |  |   await Tank.updateOne( | 
			
		
	
		
			
				
					|  |  |  |  |     { customerId, "connections.inputConnections.motor_id": motorId }, | 
			
		
	
		
			
				
					|  |  |  |  |     { $set: {  | 
			
		
	
		
			
				
					|  |  |  |  |         "connections.inputConnections.$.motor_stop_status": "1", | 
			
		
	
		
			
				
					|  |  |  |  |         "connections.inputConnections.$.stopTime": currentTime, | 
			
		
	
		
			
				
					|  |  |  |  |         "connections.inputConnections.$.threshold_type": null, | 
			
		
	
		
			
				
					|  |  |  |  |         "connections.inputConnections.$.manual_threshold_time": null, | 
			
		
	
		
			
				
					|  |  |  |  |         "connections.inputConnections.$.manual_threshold_percentage": null | 
			
		
	
		
			
				
					|  |  |  |  |     }} | 
			
		
	
		
			
				
					|  |  |  |  |   ); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   if (motorIntervals[motorId]) { | 
			
		
	
		
			
				
					|  |  |  |  |     clearInterval(motorIntervals[motorId]); | 
			
		
	
		
			
				
					|  |  |  |  |     delete motorIntervals[motorId]; | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |  // eventEmitter.emit("motorStop", customerId, [], "", "", currentTime, "Mobile APP", 0, "", motorId, "");
 | 
			
		
	
		
			
				
					|  |  |  |  |    | 
			
		
	
		
			
				
					|  |  |  |  |   const motorData = await MotorData.findOne({ customerId, motor_id: motorId, start_instance_id }); | 
			
		
	
		
			
				
					|  |  |  |  |   if (motorData) { | 
			
		
	
		
			
				
					|  |  |  |  |     const startTime = moment(motorData.startTime, 'DD-MMM-YYYY - HH:mm'); | 
			
		
	
		
			
				
					|  |  |  |  |     const runtime = moment.duration(moment(currentTime, 'DD-MMM-YYYY - HH:mm').diff(startTime)).asSeconds(); | 
			
		
	
		
			
				
					|  |  |  |  |      | 
			
		
	
		
			
				
					|  |  |  |  |     const receiverTank = await Tank.findOne({ customerId, tankName: motorData.receiverTank, tankLocation: motorData.receiver_type.toLowerCase() }); | 
			
		
	
		
			
				
					|  |  |  |  |     const receiverFinalWaterLevel = parseInt(receiverTank.waterlevel.replace(/,/g, ''), 10); | 
			
		
	
		
			
				
					|  |  |  |  |     const quantityDelivered = receiverFinalWaterLevel - parseInt(motorData.receiverInitialwaterlevel.replace(/,/g, ''), 10); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     await MotorData.updateOne( | 
			
		
	
		
			
				
					|  |  |  |  |       { customerId, motor_id: motorId, start_instance_id }, | 
			
		
	
		
			
				
					|  |  |  |  |       { $set: { stopTime: currentTime, receiverfinalwaterlevel: receiverFinalWaterLevel.toString(), quantity_delivered: quantityDelivered.toString(), runtime: runtime } } | 
			
		
	
		
			
				
					|  |  |  |  |     ); | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | const monitorWaterLevels = async () => { | 
			
		
	
	
		
			
				
					|  |  |  | @ -6164,6 +6138,11 @@ async function processIotData(hw_Id, data) { | 
			
		
	
		
			
				
					|  |  |  |  |         inputConnection.motor_stop_status = "1"; | 
			
		
	
		
			
				
					|  |  |  |  |         inputConnection.motor_on_type = "manual"; | 
			
		
	
		
			
				
					|  |  |  |  |         inputConnection.stopTime = currentTime; | 
			
		
	
		
			
				
					|  |  |  |  |         if (motorIntervals[motorId]) { | 
			
		
	
		
			
				
					|  |  |  |  |           clearInterval(motorIntervals[motorId]); | 
			
		
	
		
			
				
					|  |  |  |  |           delete motorIntervals[motorId]; | 
			
		
	
		
			
				
					|  |  |  |  |           console.log("motor interval deleted") | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |       } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       await motorTank.save(); | 
			
		
	
	
		
			
				
					|  |  |  | 
 |