From 2ae36ddb40d28c62b64a2fdd4c3033e7d65d5cfb Mon Sep 17 00:00:00 2001
From: wei <kaede@kaededeMacBook-Air.local>
Date: 星期四, 04 三月 2021 15:20:29 +0800
Subject: [PATCH] 2021-0304-1

---
 HDL_ON/Entity/Function/Light.cs |  403 +++++++++++++++++++++++++++++----------------------------
 1 files changed, 203 insertions(+), 200 deletions(-)

diff --git a/HDL_ON/Entity/Function/Light.cs b/HDL_ON/Entity/Function/Light.cs
index ac77986..0ddbb56 100644
--- a/HDL_ON/Entity/Function/Light.cs
+++ b/HDL_ON/Entity/Function/Light.cs
@@ -6,22 +6,8 @@
 {
     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 Trait trait_brightness;
+        FunctionAttributes trait_brightness;
         /// <summary>
         /// 浜害鍊�
         /// </summary>
@@ -32,21 +18,36 @@
             {
                 if (trait_brightness == null)
                 {
-                    trait_brightness = function.Find((obj) => obj.attri == "brightness");
+                    trait_brightness = attributes.Find((obj) => obj.key == "brightness");
                     //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
                     if (trait_brightness == null)
                     {
-                        trait_brightness = new Trait()
+                        trait_brightness = new FunctionAttributes()
                         {
-                            attri = "brightness",
+                            key = "brightness",
                             value = new List<string> { "up", "down" },
                             max = 100,
                             min = 0,
+                            curValue = 0,
                         };
                     }
-                    trait_brightness.curValues = trait_brightness.min;
+                    if (trait_brightness.curValue.ToString() == "{}")
+                        trait_brightness.curValue = 0;
                 }
-                return Convert.ToInt32(trait_brightness.curValues);
+                try
+                {
+                    string textValue = trait_brightness.curValue.ToString();
+                    if (textValue == string.Empty)
+                    {
+                        trait_brightness.curValue = 0;
+                    }
+                    return Convert.ToInt32(trait_brightness.curValue);
+                }
+                catch
+                {
+                    trait_brightness.curValue = 0;
+                    return 0;
+                }
             }
             set
             {
@@ -54,22 +55,21 @@
                 {
                     if (trait_brightness == null)
                     {
-                        trait_brightness = function.Find((obj) => obj.attri == "brightness");
+                        trait_brightness = attributes.Find((obj) => obj.key == "brightness");
                         //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
                         if (trait_brightness == null)
                         {
-                            trait_brightness = new Trait()
+                            trait_brightness = new FunctionAttributes()
                             {
-                                attri = "brightness",
+                                key = "brightness",
                                 value = new List<string> { "up", "down" },
                                 max = 100,
                                 min = 0,
+                                curValue = 0
                             };
                         }
-                        trait_brightness.curValues = trait_brightness.min;
                     }
-                    trait_brightness.curValues = value;
-                    MainPage.Log($"brightness 鏁版嵁鍒锋柊{value}.");
+                    trait_brightness.curValue = value;
                 }
                 catch
                 {
@@ -77,208 +77,211 @@
                 }
             }
         }
-
-        [Newtonsoft.Json.JsonIgnore]
-        public Trait trait_color;
         /// <summary>
-        /// RGB棰滆壊
-        /// 255255255
+        /// 涓婁竴娆℃墦寮�鐨勪寒搴�
         /// </summary>
         [Newtonsoft.Json.JsonIgnore]
-        public int color
+        public int lastBrightness = 100;
+
+        int hadFadeTime = 99;
+        /// <summary>
+        /// 鏄惁鎷ユ湁娓愬彉鏃堕棿
+        /// </summary>
+        public bool HadFadeTime
         {
             get
             {
-                if (trait_color == null)
+                if (hadFadeTime == 99)
                 {
-                    trait_color = function.Find((obj) => obj.attri == "color");
-                    //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
-                    if (trait_color == null)
+                    var t = attributes.Find((obj) => obj.key == FunctionAttributeKey.FadeTime);
+                    if (t == null)
                     {
-                        trait_color = new Trait()
+                        hadFadeTime = 0;
+                        return false;
+                    }
+                    else
+                    {
+                        hadFadeTime = 1;
+                        return true;
+                    }
+                }
+                if (hadFadeTime == 1)
+                {
+                    return true;
+                }
+                else
+                {
+                    return false;
+                }
+            }
+        }
+
+        [Newtonsoft.Json.JsonIgnore]
+        FunctionAttributes trait_fadeTime;
+        /// <summary>
+        /// 娓愬彉鏃堕棿
+        /// </summary>
+        [Newtonsoft.Json.JsonIgnore]
+        public int fadeTime
+        {
+            get
+            {
+                if (trait_fadeTime == null)
+                {
+                    trait_fadeTime = attributes.Find((obj) => obj.key == FunctionAttributeKey.FadeTime);
+                    //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
+                    if (trait_fadeTime == null)
+                    {
+                        trait_fadeTime = new FunctionAttributes()
                         {
-                            attri = "color",
-                            value = new List<string> { "FFFFFF" },
-                            max = 0xFFFFFF,
-                            min = 0x000000,
+                            key = FunctionAttributeKey.FadeTime,
+                            value = new List<string> { "up", "down" },
+                            max = 10,
+                            min = 0,
+                            curValue = 0
                         };
                     }
-                    trait_color.curValues = trait_color.min;
                 }
-                return Convert.ToInt32(trait_color.curValues);
+                int result = 0;
+                int.TryParse(trait_fadeTime.curValue.ToString(), out result);
+                return result;
             }
             set
             {
                 try
                 {
-                    trait_color.curValues = value;
+                    if (trait_fadeTime == null)
+                    {
+                        trait_fadeTime = attributes.Find((obj) => obj.key == FunctionAttributeKey.FadeTime);
+                        //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
+                        if (trait_fadeTime == null)
+                        {
+                            trait_fadeTime = new FunctionAttributes()
+                            {
+                                key = FunctionAttributeKey.FadeTime,
+                                value = new List<string> { "up", "down" },
+                                max = 100,
+                                min = 0,
+                                curValue = 0
+                            };
+                        }
+                    }
+                    trait_fadeTime.curValue = value;
                 }
                 catch
                 {
-                    MainPage.Log("color 鏁版嵁鍒锋柊澶辫触.");
-                }
-            }
-        }
-        [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}");
                 }
             }
         }
 
+        #region RGB
+        /// <summary>
+        /// 鑾峰彇rgb棰滆壊
+        /// </summary>
+        /// <returns></returns>
+        public int GetRGBcolor()
+        {
+            if (trait_color == null)
+            {
+                trait_color = attributes.Find((obj) => obj.key == FunctionAttributeKey.RGB);
+                //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
+                if (trait_color == null)
+                {
+                    trait_color = new FunctionAttributes()
+                    {
+                        key = "color",
+                        value = new List<string> { "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;
+        }
+        /// <summary>
+        /// 鑾峰彇rgb 鎺у埗瀛楃涓�
+        /// </summary>
+        /// <returns></returns>
+        public string GetRGBcolorString()
+        {
+            return redColor + "," + greenColor + "," + blueColor;
+        }
 
         /// <summary>
-        /// 鎷兼帴銆佽幏鍙朅鍗忚鎿嶄綔鏁版嵁
+        /// 璁剧疆rgb棰滆壊
         /// </summary>
-        public override JObject GetSendJObject(CommandType_A command )
+        public void SetRGBcolor(byte[] color)
         {
-            var sendJob = new JObject();
-            if (command == CommandType_A.write)
-            {
-                sendJob = new JObject { { "vendor_code", vendor_code }, { "command", command.ToString() }, { "type", "device" } };
-                JObject data = new JObject { { "sid", sid } };
-                sendJob.Add("objects", data);
-                List<ControlData> controlData = new List<ControlData>();
-                switch (functionType)
-                {
-                    case FunctionType.Relay:
-                        controlData.Add(new ControlData()
-                        {
-                            name = "on_off",
-                            data_type = "Bool",
-                            value = on_off
-                        });
-                        break;
-                    case FunctionType.Dimmer:
-                        controlData.Add(new ControlData()
-                        {
-                            name = "on_off",
-                            data_type = "Bool",
-                            value = on_off
-                        });
-                        controlData.Add(new ControlData()
-                        {
-                            name = "brightness",
-                            data_type = "int",
-                            value = brightness.ToString(),
-                        });
-                        break;
-                    case FunctionType.RGB:
-                        controlData.Add(new ControlData()
-                        {
-                            name = "on_off",
-                            data_type = "Bool",
-                            value = on_off
-                        });
-                        controlData.Add(new ControlData()
-                        {
-                            name = "brightness",
-                            data_type = "int",
-                            value = brightness.ToString(),
-                        });
-                        controlData.Add(new ControlData()
-                        {
-                            name = "color",
-                            data_type = "int",
-                            value = color.ToString(),
-                        });
-                        break;
-                }
-
-                AProtocolEntity ape = new AProtocolEntity()
-                {
-                    command = command.ToString(),
-                    vendor_code = vendor_code,
-                    type = "device_sid",
-                };
-                ape.ControlFunction(sid, controlData);
-                sendJob = JObject.FromObject(ape);
-
-            }
-            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;
+            redColor = color[0];
+            greenColor = color[1];
+            blueColor = color[2];
+            trait_color.curValue = redColor + "," + greenColor + "," + blueColor;
         }
-    }
 
+        [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;
+            }
+        }
+        #endregion
+
+        #region CCT
+        FunctionAttributes attr_CCT;
+        /// <summary>
+        /// 鑹叉俯
+        /// </summary>
+        [Newtonsoft.Json.JsonIgnore]
+        public FunctionAttributes Attr_CCT
+        {
+            get
+            {
+                if(attr_CCT == null)
+                {
+                    attr_CCT = attributes.Find((obj) => obj.key == FunctionAttributeKey.CCT);
+                    if(attr_CCT== null)
+                    {
+                        attr_CCT = new FunctionAttributes()
+                        {
+                            key = FunctionAttributeKey.CCT,
+                            value = new List<string> (),
+                            max = 6500,
+                            min = 2700,
+                            curValue = 2700
+                        };
+                    }
+                }
+                var result = 2700;
+                int.TryParse(attr_CCT.curValue.ToString(), out result);
+                return attr_CCT;
+            }
+        }
+        #endregion
+    }
 }

--
Gitblit v1.8.0