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;
}
}
}
}