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!"); } }
/// <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})"); }
public UpsMonitor(StromPi3 ups) { _ups = ups; Port = _ups.Port; State = EUpsState.PowerOk; }