示例#1
0
        private void CheckSettings()
        {
            _ups.Port.ReceiveConfiguration(_ups.Settings);
            CountDownSeconds = _ups.Settings.ShutdownSeconds;

            if (!_ups.Settings.PowerFailWarningEnable)
            {
                Console.WriteLine("***error: Polling PowerFailure will fail, because PowerFail Warning of Strompi3 is NOT enabled!");
                State = EUpsState.InvalidSettings;
            }

            if ((int)_ups.Settings.BatteryHat.Level <= (int)_ups.Settings.BatteryHat.BatteryShutdownLevel)
            {
                Console.WriteLine("***error: Polling PowerFailure will fail, because Battery Level is already too low!");
                State = EUpsState.BatteryLevelBelowMinimum;
            }

            if (_ups.Settings.ShutdownEnable)
            {
                Console.WriteLine("***warning: Immediate Shutdown is enabled in Settings!");
            }

            if (_ups.Settings.ShutdownSeconds < 10)  // set min. 10 secs
            {
                _ups.Settings.SetShutDown(_ups.Settings.ShutdownEnable.ToNumber().ToString(),
                                          10, (int)_ups.Settings.BatteryHat.BatteryShutdownLevel);
                Console.WriteLine("***warning: Set ShutdownSeconds to 10 secs!");
            }
        }
示例#2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="data"></param>
        private void SwitchState(string data)
        {
            //Console.WriteLine($"Switch State ({State}): <{data}>");

            if (State == EUpsState.PowerOk)
            {
                if (data.Contains(PowerFailureMessage))
                {
                    State             = EUpsState.PowerFailure;       // Start countdown
                    PowerFailureStart = DateTime.Now.AddSeconds(-10); // give 10 secs to shutdown by script before power is turned of
                    Console.WriteLine($"SET PowerFailure - Start Countdown at : <{PowerFailureStart.ToLongTimeString()}>");
                    CountDownSeconds = Convert.ToInt32((DateTime.Now - PowerFailureStart).TotalSeconds);
                }

                if (data.Contains(ShutDownMessage))
                {
                    State = EUpsState.ShutdownNow;
                    Console.WriteLine();
                    Console.WriteLine($"Strompi will Shutdown RPi now: {DateTime.Now.ToLongTimeString()}");
                }
            }

            if (State == EUpsState.PowerFailure)
            {
                if (data.Contains(PowerBackMessage))
                {
                    State = EUpsState.PowerBack;
                    Console.WriteLine($"SET PowerBack");
                    // log msg
                    State = EUpsState.PowerOk;
                    Console.WriteLine($"SET PowerOK");
                }

                // continue countdown
                int tmpSeconds = Convert.ToInt32((DateTime.Now - PowerFailureStart).TotalSeconds);
                if (tmpSeconds > CountDownSeconds)
                {
                    CountDownSeconds = tmpSeconds;
                    Console.Write($"\rCountdown {CountDownSeconds} secs (of {_ups.Settings.ShutdownSeconds})");
                }


                // end with shutdown
                if (CountDownSeconds >= _ups.Settings.ShutdownSeconds)
                {
                    State = EUpsState.ShutdownNow;
                    Console.WriteLine();
                    Console.WriteLine($"SET Shutdown at {DateTime.Now.ToLongTimeString()}");
                }
            }

            //Console.WriteLine($"leave State ({State})");
        }
示例#3
0
 public UpsMonitor(StromPi3 ups)
 {
     _ups  = ups;
     Port  = _ups.Port;
     State = EUpsState.PowerOk;
 }