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] FunctionAttributes trait_brightness; /// /// 亮度值 /// [Newtonsoft.Json.JsonIgnore] public int brightness { get { if (trait_brightness == null) { trait_brightness = attributes.Find((obj) => obj.key == "brightness"); //找不到属性需要声明一个,防止报错闪退 if (trait_brightness == null) { trait_brightness = new FunctionAttributes() { key = "brightness", value = new List { "up", "down" }, max = 100, min = 0, curValue = 0, }; } if (trait_brightness.curValue.ToString() == "{}") trait_brightness.curValue = 0; } return Convert.ToInt32(trait_brightness.curValue); } set { try { if (trait_brightness == null) { trait_brightness = attributes.Find((obj) => obj.key == "brightness"); //找不到属性需要声明一个,防止报错闪退 if (trait_brightness == null) { trait_brightness = new FunctionAttributes() { key = "brightness", value = new List { "up", "down" }, max = 100, min = 0, curValue = 0 }; } } trait_brightness.curValue = value; } catch { MainPage.Log("brightness 数据刷新失败."); } } } /// /// 上一次打开的亮度 /// [Newtonsoft.Json.JsonIgnore] public int lastBrightness = 100; [Newtonsoft.Json.JsonIgnore] FunctionAttributes trait_fadeTime; /// /// 亮度值 /// [Newtonsoft.Json.JsonIgnore] public int fadeTime { get { if (trait_fadeTime == null) { trait_fadeTime = attributes.Find((obj) => obj.key == FunctionAttributeKey.FadeTime); //找不到属性需要声明一个,防止报错闪退 if (trait_fadeTime == null) { trait_fadeTime = new FunctionAttributes() { key = FunctionAttributeKey.FadeTime, value = new List { "up", "down" }, max = 10, min = 0, curValue = 0 }; } } int result = 0; int.TryParse(trait_fadeTime.curValue.ToString(), out result); return result; } set { try { if (trait_fadeTime == null) { trait_fadeTime = attributes.Find((obj) => obj.key == FunctionAttributeKey.FadeTime); //找不到属性需要声明一个,防止报错闪退 if (trait_fadeTime == null) { trait_fadeTime = new FunctionAttributes() { key = FunctionAttributeKey.FadeTime, value = new List { "up", "down" }, max = 100, min = 0, curValue = 0 }; } } trait_fadeTime.curValue = value; } catch { } } } /// /// 获取rgb颜色 /// /// public int GetRGBcolor() { if (trait_color == null) { trait_color = attributes.Find((obj) => obj.key == FunctionAttributeKey.RGB); //找不到属性需要声明一个,防止报错闪退 if (trait_color == null) { trait_color = new FunctionAttributes() { key = "color", value = new List { "255,255,255" }, curValue = "255,255,255" }; } if (trait_color.curValue.ToString() == "{}") trait_color.curValue = "255,255,255"; int.TryParse(trait_color.curValue.ToString().Split(",")[0], out redColor); int.TryParse(trait_color.curValue.ToString().Split(",")[1], out greenColor); int.TryParse(trait_color.curValue.ToString().Split(",")[2], out blueColor); } int recolor = redColor * 256 * 256 + greenColor * 256 + blueColor; return recolor; } /// /// 获取rgb 控制字符串 /// /// public string GetRGBcolorString() { return redColor + "," + greenColor + "," + blueColor; } /// /// 设置rgb颜色 /// public void SetRGBcolor(byte[] color) { redColor = color[0]; greenColor = color[1]; blueColor = color[2]; } [Newtonsoft.Json.JsonIgnore] public FunctionAttributes trait_color; int redColor = 255; int greenColor = 255; int blueColor = 255; public int RedColor { get { return redColor; } } public int GreenColor { get { return greenColor; } } public int BlueColor { get { return blueColor; } } } }