| | |
| | | |
| | | namespace HDL_ON.Entity |
| | | { |
| | | public class Light : Function |
| | | public class Light |
| | | { |
| | | /* |
| | | 灯光类: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() |
| | | #region RGB |
| | | /// <summary> |
| | | /// 获取rgb颜色 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public int GetRGBcolor(Function function ) |
| | | { |
| | | var color = function.GetAttrState(FunctionAttributeKey.RGB).Split(","); |
| | | |
| | | if(color.Length!= 3) |
| | | { |
| | | color = new string[] {"100", "100", "100" }; |
| | | } |
| | | int redColor = 0; |
| | | int greenColor = 0; |
| | | int blueColor = 0; |
| | | |
| | | int.TryParse(color[0], out redColor); |
| | | int.TryParse(color[1], out greenColor); |
| | | int.TryParse(color[2], out blueColor); |
| | | |
| | | int recolor = redColor * 256 * 256 + greenColor * 256 + blueColor; |
| | | |
| | | return recolor; |
| | | } |
| | | /// <summary> |
| | | /// 获取rgb 控制字符串 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public string GetRGBcolorString(Function function) |
| | | { |
| | | var color = function.GetAttrState(FunctionAttributeKey.RGB).Split(","); |
| | | return color[0] + "," + color[1] + "," + color[2]; |
| | | } |
| | | |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | Trait trait_brightness; |
| | | /// <summary> |
| | | /// 亮度值 |
| | | /// 获取rgb颜色 |
| | | /// </summary> |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public int brightness |
| | | /// <param name="index">0:red 1:green 2:blue</param> |
| | | /// <returns></returns> |
| | | public int GetColor( int index,Function function) |
| | | { |
| | | get |
| | | { |
| | | if (trait_brightness == null) |
| | | { |
| | | trait_brightness = function.Find((obj) => obj.name == "brightness"); |
| | | //找不到属性需要声明一个,防止报错闪退 |
| | | if (trait_brightness == null) |
| | | { |
| | | trait_brightness = new Trait() |
| | | { |
| | | name = "brightness", |
| | | value_key = new List<string> { "up", "down" }, |
| | | max = 100, |
| | | min = 0, |
| | | }; |
| | | } |
| | | trait_brightness.value = trait_brightness.min; |
| | | } |
| | | return Convert.ToInt32(trait_brightness.value); |
| | | } |
| | | set |
| | | int color = 0; |
| | | if (index <= 2) |
| | | { |
| | | try |
| | | { |
| | | if (trait_brightness == null) |
| | | { |
| | | trait_brightness = function.Find((obj) => obj.name == "brightness"); |
| | | //找不到属性需要声明一个,防止报错闪退 |
| | | if (trait_brightness == null) |
| | | { |
| | | trait_brightness = new Trait() |
| | | { |
| | | name = "brightness", |
| | | value_key = new List<string> { "up", "down" }, |
| | | max = 100, |
| | | min = 0, |
| | | }; |
| | | } |
| | | trait_brightness.value = trait_brightness.min; |
| | | } |
| | | trait_brightness.value = value; |
| | | MainPage.Log($"brightness 数据刷新{value}."); |
| | | int.TryParse(function.GetAttrState(FunctionAttributeKey.RGB).Split(",")[index], out color); |
| | | } |
| | | catch |
| | | { |
| | | MainPage.Log("brightness 数据刷新失败."); |
| | | } |
| | | catch { } |
| | | } |
| | | return color; |
| | | } |
| | | |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public Trait trait_color; |
| | | /// <summary> |
| | | /// RGB颜色 |
| | | /// 255255255 |
| | | /// 设置rgb颜色 |
| | | /// </summary> |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public int color |
| | | public void SetRGBcolor(byte[] color,Function function) |
| | | { |
| | | get |
| | | { |
| | | if (trait_color == null) |
| | | { |
| | | trait_color = function.Find((obj) => obj.name == "color"); |
| | | //找不到属性需要声明一个,防止报错闪退 |
| | | if (trait_color == null) |
| | | { |
| | | trait_color = new Trait() |
| | | { |
| | | name = "color", |
| | | value_key = new List<string> { "FFFFFF" }, |
| | | max = 0xFFFFFF, |
| | | min = 0x000000, |
| | | }; |
| | | } |
| | | trait_color.value = trait_color.min; |
| | | } |
| | | return Convert.ToInt32(trait_color.value); |
| | | } |
| | | set |
| | | { |
| | | try |
| | | { |
| | | trait_color.value = value; |
| | | } |
| | | catch |
| | | { |
| | | MainPage.Log("color 数据刷新失败."); |
| | | } |
| | | } |
| | | function.SetAttrState(FunctionAttributeKey.RGB, color[0] + "," + color[1] + "," + color[2]); |
| | | } |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public int redColor |
| | | { |
| | | get { |
| | | try |
| | | { |
| | | return color >> 16; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | MainPage.Log($"Get red color error : {ex.Message}"); |
| | | return 0; |
| | | } |
| | | } |
| | | set |
| | | { |
| | | try |
| | | { |
| | | var rc = value << 16; |
| | | color = rc + (color & 0xFFFF); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | MainPage.Log($"set red color error : {ex.Message}"); |
| | | } |
| | | } |
| | | } |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public int greenColor |
| | | { |
| | | get |
| | | { |
| | | try |
| | | { |
| | | return (color & 0xFFFF) >> 8; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | MainPage.Log($"Get green color error : {ex.Message}"); |
| | | return 0; |
| | | } |
| | | } |
| | | set |
| | | { |
| | | try |
| | | { |
| | | var gc = value << 8; |
| | | color = gc + (color & 0xFF00FF); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | MainPage.Log($"set green color error : {ex.Message}"); |
| | | } |
| | | } |
| | | } |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public int blueColor |
| | | { |
| | | get |
| | | { |
| | | try |
| | | { |
| | | return color & 0xFF; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | MainPage.Log($"Get blue color error : {ex.Message}"); |
| | | return 0; |
| | | } |
| | | } |
| | | set |
| | | { |
| | | try |
| | | { |
| | | color = value + (color & 0xFFFF00); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | MainPage.Log($"set blue color error : {ex.Message}"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | } |
| | | } |