using System;
using System.Collections.Generic;
using Newtonsoft.Json.Linq;
namespace HDL_ON.Entity
{
public class Light : Function
{
/*
灯光类:trait: [switch,brightness,color,cct,delay,fadeTime]
属性 描述
switch on/off;
brightness 0-100;
color int (red (0-255) green (0-255) blue (0-255))
cct int (warm light(0-255) cold light (0-255) )
delay 0-3600s
fadetime 0-3600s
*/
public Light()
{
}
///
/// 亮度值
///
[Newtonsoft.Json.JsonIgnore]
public int brightness
{
get
{
string b = "0";
dicPropert.TryGetValue("brightness", out b);
return Convert.ToInt32(b == "" ? "0" : b);
}
set
{
try
{
dicPropert["brightness"] = value.ToString();
MainPage.Log($"brightness 数据刷新{value}.");
}
catch
{
MainPage.Log("brightness 数据刷新失败.");
}
}
}
///
/// RGB颜色
/// 255255255
///
[Newtonsoft.Json.JsonIgnore]
public string color
{
get
{
string c = "255255255";
dicPropert.TryGetValue("color", out c);
if (c.Length != 9)
{
dicPropert["color"] = "255255255";
}
return c.Length == 9 ? c : "255255255";
}
set
{
try
{
dicPropert["color"] = value.ToString();
}
catch
{
MainPage.Log("color 数据刷新失败.");
}
}
}
[Newtonsoft.Json.JsonIgnore]
public byte redColor
{
get {
try
{
return Convert.ToByte(color.Substring(0, 3));
}
catch (Exception ex)
{
MainPage.Log($"Get red color error : {ex.Message}");
return 0;
}
}
set
{
try
{
dicPropert["color"] = dicPropert["color"].ToString().Remove(0, 3).Insert(0, value.ToString().PadLeft(3, '0'));
}
catch (Exception ex)
{
MainPage.Log($"set red color error : {ex.Message}");
}
}
}
[Newtonsoft.Json.JsonIgnore]
public byte greenColor
{
get
{
try
{
return Convert.ToByte(color.Substring(3, 3));
}
catch (Exception ex)
{
MainPage.Log($"Get green color error : {ex.Message}");
return 0;
}
}
set
{
try
{
dicPropert["color"] = dicPropert["color"].ToString().Remove(3, 3).Insert(3, value.ToString().PadLeft(3, '0'));
}
catch (Exception ex)
{
MainPage.Log($"set green color error : {ex.Message}");
}
}
}
[Newtonsoft.Json.JsonIgnore]
public byte blueColor
{
get
{
try
{
return Convert.ToByte(color.Substring(6, 3));
}
catch (Exception ex)
{
MainPage.Log($"Get blue color error : {ex.Message}");
return 0;
}
}
set
{
try
{
dicPropert["color"] = dicPropert["color"].ToString().Remove(6, 3).Insert(6, value.ToString().PadLeft(3, '0'));
}
catch (Exception ex)
{
MainPage.Log($"set blue color error : {ex.Message}");
}
}
}
///
/// 拼接、获取A协议操作数据
///
public override JObject GetSendJObject(CommandType_A command )
{
var sendJob = new JObject();
if (command == CommandType_A.write)
{
sendJob = new JObject { { "vendor_code", vendor_code }, { "Command", command.ToString() }, { "Type", "device" } };
JObject data = null;
switch (functionType)
{
case FunctionType.Relay:
data = new JObject { { "sid", sid }, { "switch", on_off } };
break;
case FunctionType.Dimmer:
data = new JObject { { "sid", sid }, { "brightness", brightness } };
break;
case FunctionType.RGB:
data = new JObject { { "sid", sid }, { "brightness", brightness }, { "color", color } };
break;
}
sendJob.Add("objects", data);
}
else if (command == CommandType_A.read)
{
sendJob = new JObject { { "vendor_code", vendor_code }, { "Command", command.ToString() }, { "Type", "device" } };
var data = new JObject {{ "sid", sid } };
sendJob.Add("objects", data);
}
return sendJob;
}
}
}