using System;
|
using System.Collections.Generic;
|
using System.Globalization;
|
using static ZigBee.Device.Scene;
|
|
namespace Shared.Common
|
{
|
/// <summary>
|
/// 场景添加执行目标(设备、时间间隔、场景)
|
/// </summary>
|
[System.Serializable]
|
public class SceneTargetDeviceUI
|
{
|
/// <summary>
|
/// 场景添加对象的类型 默认0设备 2时间段 1其他场景
|
/// </summary>
|
public int Type = 0;
|
/// <summary>
|
/// 任务列表中的数据列表
|
/// Type=0 存在
|
/// </summary>
|
public List<TaskListInfo> TaskList = new List<TaskListInfo>();
|
/// <summary>
|
/// 选择的设备
|
/// Type=0 存在
|
/// </summary>
|
public DeviceUI DeviceUI = new DeviceUI();
|
|
/// <summary>
|
/// Type=0、1、2 存在
|
/// 延时时间
|
/// </summary>
|
public int DelayTime = 0;
|
/// <summary>
|
/// 当Type=2时存在
|
/// 延时执行序号,表示第几个延时动作
|
/// </summary>
|
public int DelayTimeSerialNumber = 0;
|
|
/// <summary>
|
/// 选择的场景
|
/// Type=1 存在
|
/// </summary>
|
public SceneUI SceneUI = new SceneUI();
|
/// <summary>
|
/// 作为成员的其他场景id。
|
/// Type=1 存在
|
/// </summary>
|
public int ElseScenesId = 0;
|
/// <summary>
|
/// 场景名称
|
/// Type=1 存在
|
/// </summary>
|
public string SceneName = string.Empty;
|
/// <summary>
|
/// 唯一标识--HashCode
|
/// DateTime.Now.ToString("yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo)
|
/// </summary>
|
public string SceneTargetDeviceUIID
|
{
|
get
|
{
|
return GetHashCode().ToString();
|
}
|
}
|
|
/// <summary>
|
/// GetDeviceStatu
|
/// </summary>
|
/// <returns></returns>
|
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;
|
}
|
}
|
}
|
}
|