using System; using System.Collections.Generic; using System.Globalization; using static ZigBee.Device.Scene; namespace Shared.Common { /// /// 场景添加执行目标(设备、时间间隔、场景) /// [System.Serializable] public class SceneTargetDeviceUI { /// /// 场景添加对象的类型 默认0设备 2时间段 1其他场景 /// public int Type = 0; /// /// 任务列表中的数据列表 /// Type=0 存在 /// public List TaskList = new List(); /// /// 选择的设备 /// Type=0 存在 /// public DeviceUI DeviceUI = new DeviceUI(); /// /// Type=0、1、2 存在 /// 延时时间 /// public int DelayTime = 0; /// /// 当Type=2时存在 /// 延时执行序号,表示第几个延时动作 /// public int DelayTimeSerialNumber = 0; /// /// 选择的场景 /// Type=1 存在 /// public SceneUI SceneUI = new SceneUI(); /// /// 作为成员的其他场景id。 /// Type=1 存在 /// public int ElseScenesId = 0; /// /// 场景名称 /// Type=1 存在 /// public string SceneName = string.Empty; /// /// 唯一标识--HashCode /// DateTime.Now.ToString("yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo) /// public string SceneTargetDeviceUIID { get { return GetHashCode().ToString(); } } /// /// GetDeviceStatu /// /// public string GetDeviceStatu() { if (DeviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.OnOffOutput) { if (TaskList.Count == 0) { return null; } if (TaskList[0].Data1 == 1) { return Language.StringByID(R.MyInternationalizationString.Open); } return Language.StringByID(R.MyInternationalizationString.Shut); } else if (DeviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.AirSwitch) { if (TaskList.Count == 0) { return null; } if (TaskList[0].Data1 == 1) { return Language.StringByID(R.MyInternationalizationString.Open); } return Language.StringByID(R.MyInternationalizationString.Shut); } else if (DeviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.DimmableLight) { if (TaskList.Count == 0) { return null; } if (TaskList[0].Data1 == 0) { return Language.StringByID(R.MyInternationalizationString.Shut); } return $"{(int)(TaskList[0].Data1 * 1.0 / 254 * 100)}%"; } else if (DeviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.WindowCoveringDevice) { if (TaskList.Count == 0) { return null; } if (TaskList[0].Data1 == 0) { return Language.StringByID(R.MyInternationalizationString.Shut); } return $"{TaskList[0].Data1}%"; } else if (DeviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.Thermostat) { //温度,模式,风速 string tempareture = string.Empty; string model = string.Empty; string wind = string.Empty; if (TaskList.Count == 0) { return null; } foreach(var taskListInfo in TaskList) { if(taskListInfo.Data1==3) { if(taskListInfo.Data2==0) { return Language.StringByID(R.MyInternationalizationString.Shut); } else if(taskListInfo.Data2==1) { model = Language.StringByID(R.MyInternationalizationString.Mode_Auto); } else if(taskListInfo.Data2==3) { model = Language.StringByID(R.MyInternationalizationString.Mode_Cool); } else if (taskListInfo.Data2 == 4) { model = Language.StringByID(R.MyInternationalizationString.Mode_Heat); } else if (taskListInfo.Data2 == 7) { model = Language.StringByID(R.MyInternationalizationString.Mode_FanOnly); } else if (taskListInfo.Data2 == 8) { model = Language.StringByID(R.MyInternationalizationString.Mode_Dry); } } else if(taskListInfo.Data1==4 || taskListInfo.Data1==5) { tempareture = $"{ taskListInfo.Data2} ℃"; } else if (taskListInfo.Data1 == 6) { if (taskListInfo.Data2 == 1) { wind = Language.StringByID(R.MyInternationalizationString.Fan_Low); } else if(taskListInfo.Data2 ==2) { wind = Language.StringByID(R.MyInternationalizationString.Fan_Middle); } else if (taskListInfo.Data2 == 3) { wind = Language.StringByID(R.MyInternationalizationString.Fan_Height); } } } return $"{tempareture},{model},{wind}"; } else { return null; } } } }