@@ -700,20 +700,57 @@ Public Class UPS_Network
700700 Dim BattInstantCurrent = ( Me .OutputV * Me .Load) / ( Me .BattV * 100 )
701701 Me .BattRuntime = Math.Floor( Me .BattCapacity * 0.6 * Me .BattCh * ( 1 - PowerDivider) * 3600 / (BattInstantCurrent * 100 ))
702702 End If
703+
704+ Dim StatusArr = Me .Status.Trim().Split( " " )
705+ For Each State In StatusArr
706+ Select Case State
707+ Case "OL"
708+ If Not Update_Nut.Interval = Me .Delay Then
709+ Update_Nut.Stop()
710+ Update_Nut.Interval = Me .Delay
711+ Update_Nut.Start()
712+ End If
713+ If ShutdownStatus Then
714+ LogFile.LogTracing( "Stop condition Canceled" , LogLvl.LOG_NOTICE, Me , WinNUT_Globals.StrLog.Item(AppResxStr.STR_LOG_SHUT_STOP))
715+ ShutdownStatus = False
716+ RaiseEvent Stop_Shutdown()
717+ End If
718+ Case "OB"
719+ If Update_Nut.Interval = Me .Delay Then
720+ Update_Nut.Stop()
721+ Update_Nut.Interval = If ((Math.Floor( Me .Delay / 5 ) < 1000 ), 1000 , Math.Floor( Me .Delay / 5 ))
722+ Update_Nut.Start()
723+ End If
724+ If (( Me .BattCh <= Me .Low_Batt Or Me .BattRuntime <= Me .Backup_Limit) And Not ShutdownStatus) Then
725+ LogFile.LogTracing( "Stop condition reached" , LogLvl.LOG_NOTICE, Me , WinNUT_Globals.StrLog.Item(AppResxStr.STR_LOG_SHUT_START))
726+ RaiseEvent Shutdown_Condition()
727+ ShutdownStatus = True
728+ End If
729+ Case "FSD"
730+ LogFile.LogTracing( "Stop condition imposed by the NUT server" , LogLvl.LOG_NOTICE, Me , WinNUT_Globals.StrLog.Item(AppResxStr.STR_LOG_NUT_FSD))
731+ RaiseEvent Shutdown_Condition()
732+ ShutdownStatus = True
733+ Case "LB" , "HB"
734+ LogFile.LogTracing( "High/Low Battery on UPS" , LogLvl.LOG_NOTICE, Me )
735+ Case "CHRG"
736+ LogFile.LogTracing( "Battery is Charging on UPS" , LogLvl.LOG_NOTICE, Me )
737+ Case "DISCHRG"
738+ LogFile.LogTracing( "Battery is Discharging on UPS" , LogLvl.LOG_NOTICE, Me )
739+ Case "BYPASS"
740+ LogFile.LogTracing( "UPS bypass circuit is active - no battery protection is available" , LogLvl.LOG_NOTICE, Me )
741+ Case "CAL"
742+ LogFile.LogTracing( "UPS is currently performing runtime calibration (on battery)" , LogLvl.LOG_NOTICE, Me )
743+ Case "OFF"
744+ LogFile.LogTracing( "UPS is offline and is not supplying power to the load" , LogLvl.LOG_NOTICE, Me )
745+ Case "OVER"
746+ LogFile.LogTracing( "UPS is overloaded" , LogLvl.LOG_NOTICE, Me )
747+ Case "TRIM"
748+ LogFile.LogTracing( "UPS is trimming incoming voltage" , LogLvl.LOG_NOTICE, Me )
749+ Case "BOOST"
750+ LogFile.LogTracing( "UPS is boosting incoming voltage" , LogLvl.LOG_NOTICE, Me )
751+ End Select
752+ Next
703753 RaiseEvent DataUpdated()
704- If Not Me .Status.Trim().StartsWith( "OL" ) And ( Me .BattCh <= Me .Low_Batt Or Me .BattRuntime <= Me .Backup_Limit) And Not ShutdownStatus Then
705- LogFile.LogTracing( "Stop condition reached" , LogLvl.LOG_NOTICE, Me , WinNUT_Globals.StrLog.Item(AppResxStr.STR_LOG_SHUT_START))
706- RaiseEvent Shutdown_Condition()
707- ShutdownStatus = True
708- ElseIf ShutdownStatus And Me .Status.Trim().StartsWith( "OL" ) Then
709- LogFile.LogTracing( "Stop condition Canceled" , LogLvl.LOG_NOTICE, Me , WinNUT_Globals.StrLog.Item(AppResxStr.STR_LOG_SHUT_STOP))
710- ShutdownStatus = False
711- RaiseEvent Stop_Shutdown()
712- ElseIf Me .Follow_FSD And Me .Status.Trim().StartsWith( "FSD" ) Then
713- LogFile.LogTracing( "Stop condition imposed by the NUT server" , LogLvl.LOG_NOTICE, Me , WinNUT_Globals.StrLog.Item(AppResxStr.STR_LOG_NUT_FSD))
714- RaiseEvent Shutdown_Condition()
715- ShutdownStatus = True
716- End If
717754 End If
718755 Catch Excep As Exception
719756 Me .Disconnect( True )
0 commit comments