From d6fb0646531172f23648441c224cdcccd721b894 Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期一, 14 十二月 2020 09:59:01 +0800
Subject: [PATCH] 请合并代码,完成晾衣架最终功能。

---
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceOtherLogic.cs |  421 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 421 insertions(+), 0 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceOtherLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceOtherLogic.cs
new file mode 100644
index 0000000..77d26e1
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceOtherLogic.cs
@@ -0,0 +1,421 @@
+锘縰sing Shared.Common;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using ZigBee.Device;
+
+namespace Shared.Phone.UserCenter
+{
+  /// <summary>
+  /// 璁惧鐨勫叾浠栭�昏緫(鐩墠鐢ㄦ潵瀛樻斁閮洩鍩庣殑浠g爜)
+  /// </summary>
+  public class HdlDeviceOtherLogic
+  {
+    #region 鈻� 鍙橀噺澹版槑___________________________
+
+    /// <summary>
+    /// 璁惧鐨勫叾浠栭�昏緫
+    /// </summary>
+    private static HdlDeviceOtherLogic m_Current = null;
+    /// <summary>
+    /// 璁惧鐨勫叾浠栭�昏緫
+    /// </summary>
+    public static HdlDeviceOtherLogic Current
+    {
+      get
+      {
+        if (m_Current == null)
+        {
+          m_Current = new HdlDeviceOtherLogic();
+        }
+        return m_Current;
+      }
+    }
+
+    #endregion
+
+    #region 鈻� 鏄剧ず鎺у埗璁惧鏄惁鎴愬姛鐨勬彁绀篲________
+
+    /// <summary>
+    /// 鏄剧ず鎺у埗璁惧鏄惁鎴愬姛鐨勬彁绀�
+    /// </summary>
+    /// <param name="r">The red component.</param>
+    public void ShowStatuTip(int r)
+    {
+      Application.RunOnMainThread(() =>
+      {
+        string msg = Language.StringByID(r);
+        var tip = new ShowMsgControl(ShowMsgType.Tip, msg);
+        tip.Show();
+      });
+    }
+
+    #endregion
+
+    #region 鈻� 鑾峰彇璁惧鐘舵�佺殑缈昏瘧_________________
+
+    /// <summary>
+    /// GetDeviceStatu
+    /// </summary>
+    /// <returns></returns>
+    public string GetDeviceStatu(CommonDevice device)
+    {
+      if (device.Type == DeviceType.OnOffOutput)
+      {
+        //鍦ㄧ綉鍏虫病鏈夊洖澶嶄箣鍓�,榛樿绂荤嚎
+        if (device.HadReadDeviceStatu == false)
+        {
+          return Language.StringByID(R.MyInternationalizationString.uOffLine);
+        }
+        if ((device as ToggleLight).OnOffStatus == 1)
+        {
+          return Language.StringByID(R.MyInternationalizationString.uOpen1);
+        }
+        return Language.StringByID(R.MyInternationalizationString.Close);
+      }
+
+      else if (device.Type == DeviceType.AirSwitch)
+      {
+        //鍦ㄧ綉鍏虫病鏈夊洖澶嶄箣鍓�,榛樿绂荤嚎
+        if (device.HadReadDeviceStatu == false)
+        {
+          return Language.StringByID(R.MyInternationalizationString.uOffLine);
+        }
+        if ((device as AirSwitch).OnOffStatus == 1)
+        {
+          return Language.StringByID(R.MyInternationalizationString.uOpen1);
+        }
+        return Language.StringByID(R.MyInternationalizationString.Close);
+      }
+      else if (device.Type == DeviceType.DimmableLight)
+      {
+        //鍦ㄧ綉鍏虫病鏈夊洖澶嶄箣鍓�,榛樿绂荤嚎
+        if (device.HadReadDeviceStatu == false)
+        {
+          return Language.StringByID(R.MyInternationalizationString.uOffLine);
+        }
+        if ((device as DimmableLight).OnOffStatus == 0)
+        {
+          return Language.StringByID(R.MyInternationalizationString.Close);
+        }
+        return $"{(int)((device as DimmableLight).Level * 1.0 / 254 * 100)}%";
+      }
+      else if (device.Type == DeviceType.ColorTemperatureLight)
+      {
+        //鍦ㄧ綉鍏虫病鏈夊洖澶嶄箣鍓�,榛樿绂荤嚎
+        if (device.HadReadDeviceStatu == false)
+        {
+          return Language.StringByID(R.MyInternationalizationString.uOffLine);
+        }
+        if ((device as ColorTemperatureLight).OnOffStatus == 0)
+        {
+          return Language.StringByID(R.MyInternationalizationString.Close);
+        }
+        return $"{(int)((device as ColorTemperatureLight).Level * 1.0 / 254 * 100)}%";
+      }
+      else if (device.Type == DeviceType.WindowCoveringDevice)
+      {
+        //鍦ㄧ綉鍏虫病鏈夊洖澶嶄箣鍓�,榛樿绂荤嚎
+        if (device.HadReadDeviceStatu == false)
+        {
+          return Language.StringByID(R.MyInternationalizationString.uOffLine);
+        }
+        if ((device as Rollershade).WcdCurrentPositionLiftPercentage == 0)
+        {
+          return Language.StringByID(R.MyInternationalizationString.Close);
+        }
+        return $"{(device as Rollershade).WcdCurrentPositionLiftPercentage}%";
+      }
+      else if (device.Type == DeviceType.FreshAir)
+      {
+        //鍦ㄧ綉鍏虫病鏈夊洖澶嶄箣鍓�,榛樿绂荤嚎
+        if (device.HadReadDeviceStatu == false)
+        {
+          return Language.StringByID(R.MyInternationalizationString.uOffLine);
+        }
+
+        //妯″紡
+        string wind = string.Empty;
+        var freshAir = device as FreshAir;
+        if (freshAir.currentFanStatus == 0)
+        {
+          return Language.StringByID(R.MyInternationalizationString.Close);
+        }
+        if (freshAir.currentFanSpeed == 1)
+        {
+          wind = Language.StringByID(R.MyInternationalizationString.Fan_Low);
+        }
+        else if (freshAir.currentFanSpeed == 2)
+        {
+          wind = Language.StringByID(R.MyInternationalizationString.Fan_Middle);
+        }
+        else if (freshAir.currentFanSpeed == 3)
+        {
+          wind = Language.StringByID(R.MyInternationalizationString.Fan_Height);
+        }
+        return $"{wind}";
+      }
+      else if (device.Type == DeviceType.PMSensor)
+      {
+        //绌烘皵璐ㄩ噺
+        string curQuality = "";
+        //娓╁害
+        string temperature = string.Empty;
+        //婀垮害
+        string humidity = string.Empty;
+        //PM2.5
+        string pm = string.Empty;
+        var pMSensor = device as PMSensor;
+        if (pMSensor.currentPmData <= 35 && pMSensor.currentPmData >= 0)
+        {
+          curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
+        }
+        else if (pMSensor.currentPmData <= 75 && pMSensor.currentPmData > 35)
+        {
+          curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
+        }
+        else if (pMSensor.currentPmData <= 115 && pMSensor.currentPmData > 75)
+        {
+          curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
+        }
+        else if (pMSensor.currentPmData <= 150 && pMSensor.currentPmData > 115)
+        {
+          curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
+        }
+        else if (pMSensor.currentPmData <= 250 && pMSensor.currentPmData > 150)
+        {
+          curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
+        }
+        else if (pMSensor.currentPmData > 250)
+        {
+          curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
+        }
+        else
+        {
+          curQuality = "--";
+        }
+
+        humidity = $"{pMSensor.currentHumidity}%";
+        temperature = $"{pMSensor.currentTemperature}鈩�";
+        pm = $"{pMSensor.currentPmData}渭g/m鲁";
+        return $"{curQuality},{pm},{temperature},{humidity}";
+      }
+      else if (device.Type == DeviceType.Airer)
+      {
+        //鏄惁瀛樺湪寮�鐨勭姸鎬�
+        bool isOpen = false;
+        var airer = device as Airer;
+        if (airer.OnOffStatus == 1 ||
+          airer.DryOnOffStatus == 1 ||
+          airer.WindOnOffStatus == 1 ||
+          airer.DisinfectOnOffStatus == 1)
+        {
+          isOpen = true;
+        }
+        //鍦ㄧ綉鍏虫病鏈夊洖澶嶄箣鍓�,榛樿绂荤嚎
+        if (device.HadReadDeviceStatu == false)
+        {
+          return Language.StringByID(R.MyInternationalizationString.uOffLine);
+        }
+        if (isOpen)
+        {
+          return Language.StringByID(R.MyInternationalizationString.uOpen1);
+        }
+        return Language.StringByID(R.MyInternationalizationString.Close);
+      }
+      else if (device.Type == DeviceType.Thermostat)
+      {
+        //鍦ㄧ綉鍏虫病鏈夊洖澶嶄箣鍓�,榛樿绂荤嚎
+        if (device.HadReadDeviceStatu == false)
+        {
+          return Language.StringByID(R.MyInternationalizationString.uOffLine);
+        }
+        //娓╁害锛屾ā寮忥紝椋庨��
+        string tempareture = string.Empty;
+        string model = string.Empty;
+        string wind = string.Empty;
+
+        var ac = device as AC;
+
+        if (ac.currentSystemMode == 0)
+        {
+          return Language.StringByID(R.MyInternationalizationString.Close);
+        }
+        else if (ac.currentSystemMode == 1)
+        {
+          model = Language.StringByID(R.MyInternationalizationString.Mode_Auto);
+          tempareture = $"{ac.currentAutoSetpoint} 鈩�";
+        }
+        else if (ac.currentSystemMode == 3)
+        {
+          model = Language.StringByID(R.MyInternationalizationString.Mode_Cool);
+          tempareture = $"{ac.currentCoolingSetpoint} 鈩�";
+        }
+        else if (ac.currentSystemMode == 4)
+        {
+          model = Language.StringByID(R.MyInternationalizationString.Mode_Heat);
+          tempareture = $"{ac.currentHeatingSetpoint} 鈩�";
+        }
+        else if (ac.currentSystemMode == 7)
+        {
+          model = Language.StringByID(R.MyInternationalizationString.Mode_FanOnly);
+        }
+        else if (ac.currentSystemMode == 8)
+        {
+          model = Language.StringByID(R.MyInternationalizationString.Mode_Dry);
+          tempareture = $"{ac.currentCoolingSetpoint} 鈩�";
+        }
+
+        if (ac.currentFanMode == 1)
+        {
+          wind = Language.StringByID(R.MyInternationalizationString.Fan_Low);
+        }
+        else if (ac.currentFanMode == 2)
+        {
+          wind = Language.StringByID(R.MyInternationalizationString.Fan_Middle);
+        }
+        else
+        {
+          wind = Language.StringByID(R.MyInternationalizationString.Fan_Height);
+        }
+
+        if (string.IsNullOrEmpty(tempareture))
+        {
+          return $"{model},{wind}";
+        }
+        return $"{model},{wind},{tempareture}";
+      }
+      else if (device.Type == DeviceType.IASZone)
+      {
+        var ias = device as IASZone;
+        //鍖哄垎浼犳劅鍣ㄥ叿浣撶被鍨�
+        var info = LocalDevice.Current.GetNotHdlMyDeviceEnumInfo(new List<CommonDevice> { device });
+        if (info.ConcreteType == DeviceConcreteType.Sensor_Infrared)
+        {
+          //绾㈠
+          if (ias.iASInfo?.Alarm1 == 1)
+          {
+            return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_HavePerson);
+          }
+          return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_NoPerson);
+        }
+        else if (info.ConcreteType == DeviceConcreteType.Sensor_Water)
+        {
+          //姘存蹈
+          if (ias.iASInfo?.Alarm1 == 1)
+          {
+            return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_HaveWater);
+          }
+          return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Normal);
+        }
+        else if (info.ConcreteType == DeviceConcreteType.Sensor_DoorWindow)
+        {
+          //闂ㄧ獥
+          if (ias.iASInfo?.Alarm1 == 1)
+          {
+            return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Open);
+          }
+          return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Close);
+        }
+        else if (info.ConcreteType == DeviceConcreteType.Sensor_CarbonMonoxide)
+        {
+          //鐕冩皵
+          if (ias.iASInfo?.Alarm1 == 1)
+          {
+            return Language.StringByID(R.MyInternationalizationString.uGasLeakage);
+          }
+          return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Normal);
+        }
+        else if (info.ConcreteType == DeviceConcreteType.Sensor_Fire)
+        {
+          //鐑熼浘
+          if (ias.iASInfo?.Alarm1 == 1)
+          {
+            return Language.StringByID(R.MyInternationalizationString.uSmogAlarm);
+          }
+          return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Safe);
+        }
+        else if (info.ConcreteType == DeviceConcreteType.Sensor_Pir)
+        {
+          //pir
+          if (ias.iASInfo?.Alarm1 == 1)
+          {
+            return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_HavePerson);
+          }
+          return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_NoPerson);
+        }
+        else if (info.ConcreteType == DeviceConcreteType.Sensor_Keyfob)
+        {
+          //閽ュ寵鎵�
+          if (ias.iASInfo?.Alarm1 == 1)
+          {
+            return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Alarm);
+          }
+          return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Normal);
+        }
+        else if (info.ConcreteType == DeviceConcreteType.Sensor_Motion)
+        {
+          //杩愬姩浼犳劅鍣�
+          if (ias.iASInfo?.Alarm1 == 1)
+          {
+            return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_HavePerson);
+          }
+          return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_NoPerson);
+        }
+        else if (info.ConcreteType == DeviceConcreteType.Sensor_EmergencyButton)
+        {
+          //绱ф�ユ寜閽�
+          if (ias.iASInfo?.Alarm1 == 1)
+          {
+            return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Alarm);
+          }
+          return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Normal);
+        }
+        else if (info.ConcreteType == DeviceConcreteType.Sensor_SphericalMotion)
+        {
+          //鐞冨瀷绉诲姩浼犳劅鍣�
+          if (ias.iASInfo?.Alarm1 == 1)
+          {
+            return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_HavePerson);
+          }
+          return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_NoPerson);
+        }
+        else
+        {
+          //鍏朵粬浼犳劅鍣�
+          if (ias.iASInfo?.Alarm1 == 1)
+          {
+            return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Alarm);
+          }
+          return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Normal);
+        }
+      }
+      else if (device.Type == DeviceType.TemperatureSensor)
+      {
+        var tempera = device as TemperatureSensor;
+        if (tempera.SensorDiv == 1)
+        {
+          if (tempera.currentTemperature == 0)
+          {
+            return "0.0鈩�";
+          }
+          return $"{tempera.currentTemperature}鈩�";
+        }
+        else if (tempera.SensorDiv == 2)
+        {
+          if (tempera.currentHumidity == 0)
+          {
+            return "--%";
+          }
+          return $"{tempera.currentHumidity}%";
+        }
+        return null;
+      }
+      else
+      {
+        return null;
+      }
+    }
+    #endregion
+  }
+}

--
Gitblit v1.8.0