using Shared.Common; using System; using System.Collections.Generic; using System.Text; using ZigBee.Device; namespace Shared.Phone.UserCenter { /// /// 设备的其他逻辑(目前用来存放郭雪城的代码) /// public class HdlDeviceOtherLogic { #region ■ 变量声明___________________________ /// /// 设备的其他逻辑 /// private static HdlDeviceOtherLogic m_Current = null; /// /// 设备的其他逻辑 /// public static HdlDeviceOtherLogic Current { get { if (m_Current == null) { m_Current = new HdlDeviceOtherLogic(); } return m_Current; } } #endregion #region ■ 显示控制设备是否成功的提示_________ /// /// 显示控制设备是否成功的提示 /// /// The red component. public void ShowStatuTip(int r) { Application.RunOnMainThread(() => { string msg = Language.StringByID(r); var tip = new ShowMsgControl(ShowMsgType.Tip, msg); tip.Show(); }); } #endregion #region ■ 获取设备状态的翻译_________________ /// /// GetDeviceStatu /// /// 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 HdlDeviceCommonLogic.Current.CalculateLightLevelPersent((device as DimmableLight).Level) + "%"; } 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 HdlDeviceCommonLogic.Current.CalculateLightLevelPersent((device as ColorTemperatureLight).Level) + "%"; } 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.GoodAirQuality); } else if (pMSensor.currentPmData <= 115 && pMSensor.currentPmData > 75) { curQuality = Language.StringByID(R.MyInternationalizationString.LightPollution); } else if (pMSensor.currentPmData <= 150 && pMSensor.currentPmData > 115) { curQuality = Language.StringByID(R.MyInternationalizationString.Moderatelyolluted); } else if (pMSensor.currentPmData <= 250 && pMSensor.currentPmData > 150) { curQuality = Language.StringByID(R.MyInternationalizationString.HeavyPollution); } else if (pMSensor.currentPmData > 250) { curQuality = Language.StringByID(R.MyInternationalizationString.SeriousPollution); } 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 { 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; //空气质量传感器 //获取设备类型 var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List() { device }); //空气质量传感器 if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.AirQualitySensor) { //空气质量 string curQuality = ""; //温度 string temperature = string.Empty; //湿度 string humidity = string.Empty; //PM2.5 string pm = string.Empty; //CO2 string co2 = string.Empty; var tempAirQuality = tempera.AirQuality(tempera); if (tempAirQuality == 1) { curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality); } else if (tempAirQuality == 2) { curQuality = Language.StringByID(R.MyInternationalizationString.GoodAirQuality); } else if (tempAirQuality == 3) { curQuality = Language.StringByID(R.MyInternationalizationString.Pollution); } else { curQuality = ""; } humidity = $"{tempera.currentHumidity}%"; temperature = $"{tempera.currentTemperature}℃"; pm = $"{tempera.currentPmData}μg/m³"; //co2 = $"{tempera.currentCO2}ppm"; return $"{curQuality},{pm},{temperature},{humidity}"; } else { 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 } }