예제 #1
0
        private static void PrintUPSVar(UPS ups, string varName)
        {
            UPSDClient client = new UPSDClient(ups.Host);

            try
            {
                client.Connect();
                string result = client.GetUPSVar(ups.Name, varName);
                Console.WriteLine(result);
            }
            catch (SocketException sockex)
            {
                Console.WriteLine("Error: " + sockex.Message);
            }
            catch (UPSException upsex)
            {
                Console.WriteLine("Error: " + upsex.Description);
            }
            finally
            {
                client.Disconnect();
            }
        }
예제 #2
0
        public void UpdateStatus()
        {
            try
            {
                if (this.Connected == false)
                {
                    this.Status = UPSMonStatus.NOCOMMS;
                    return;
                }

                string upsdStatus = upsd.GetUPSVar(this.Device.Name, "ups.status");
                this.Status &= ~UPSMonStatus.ALLUPSD;

                string[] parts = upsdStatus.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                foreach (string status in parts)
                {
                    switch (status.ToUpper())
                    {
                    case "OL":
                        this.Status |= UPSMonStatus.ONLINE;
                        break;

                    case "OB":
                        this.Status |= UPSMonStatus.ONBATT;
                        break;

                    case "LB":
                        this.Status |= UPSMonStatus.LOWBATT;
                        break;

                    case "HB":
                        this.Status |= UPSMonStatus.HIGHBATT;
                        break;

                    case "RB":
                        this.Status |= UPSMonStatus.REPLACEBATT;
                        break;

                    case "CHRG":
                        this.Status |= UPSMonStatus.CHARGING;
                        break;

                    case "DISCHRG":
                        this.Status |= UPSMonStatus.DISCHARGING;
                        break;

                    case "BYPASS":
                        this.Status |= UPSMonStatus.BYPASS;
                        break;

                    case "CAL":
                        this.Status |= UPSMonStatus.CALIBRATION;
                        break;

                    case "OFF":
                        this.Status |= UPSMonStatus.OFF;
                        break;

                    case "OVER":
                        this.Status |= UPSMonStatus.OVERLOADED;
                        break;

                    case "TRIM":
                        this.Status |= UPSMonStatus.TRIM;
                        break;

                    case "BOOST":
                        this.Status |= UPSMonStatus.BOOST;
                        break;

                    case "FSD":
                        this.Status |= UPSMonStatus.FSD;
                        break;
                    }
                }

                this.LastUpdate = DateTime.Now;
            }
            catch (SocketException sockex)
            {
                UPSMonThreads.AppendLog("Network error communicating to UPS " + this.Device.ToString() + "! " + sockex.Message);
                if (this.Status != UPSMonStatus.NOCOMMS)
                {
                    this.Status &= ~UPSMonStatus.COMMOK;
                    this.Status |= UPSMonStatus.COMMBAD;
                }
                upsd.Disconnect();
            }
            catch (UPSException upsex)
            {
                UPSMonThreads.AppendLog("Error on UPS " + this.Device.ToString() + "! " + upsex.Message);
                if (this.Status != UPSMonStatus.NOCOMMS)
                {
                    this.Status &= ~UPSMonStatus.COMMOK;
                    this.Status |= UPSMonStatus.COMMBAD;
                }
            }
        }