wxr
2020-08-11 2bec9c838d2d688025698de8ec1de401ffd7dd1f
HDL_ON/Entity/Function/Light.cs
@@ -19,6 +19,9 @@
        public Light()
        {
        }
        [Newtonsoft.Json.JsonIgnore]
        public Trait trait_brightness;
        /// <summary>
        /// 亮度值
        /// </summary>
@@ -27,15 +30,45 @@
        {
            get
            {
                string b = "0";
                dicPropert.TryGetValue("brightness", out b);
                return Convert.ToInt32(b == "" ? "0" : b);
                if (trait_brightness == null)
                {
                    trait_brightness = function.Find((obj) => obj.attri == "brightness");
                    //找不到属性需要声明一个,防止报错闪退
                    if (trait_brightness == null)
                    {
                        trait_brightness = new Trait()
                        {
                            attri = "brightness",
                            value = new List<string> { "up", "down" },
                            max = 100,
                            min = 0,
                        };
                    }
                    trait_brightness.curValues = trait_brightness.min;
                }
                return Convert.ToInt32(trait_brightness.curValues);
            }
            set
            {
                try
                {
                    dicPropert["brightness"] = value.ToString();
                    if (trait_brightness == null)
                    {
                        trait_brightness = function.Find((obj) => obj.attri == "brightness");
                        //找不到属性需要声明一个,防止报错闪退
                        if (trait_brightness == null)
                        {
                            trait_brightness = new Trait()
                            {
                                attri = "brightness",
                                value = new List<string> { "up", "down" },
                                max = 100,
                                min = 0,
                            };
                        }
                        trait_brightness.curValues = trait_brightness.min;
                    }
                    trait_brightness.curValues = value;
                    MainPage.Log($"brightness 数据刷新{value}.");
                }
                catch
@@ -45,28 +78,40 @@
            }
        }
        [Newtonsoft.Json.JsonIgnore]
        public Trait trait_color;
        /// <summary>
        /// RGB颜色
        /// 255255255
        /// </summary>
        [Newtonsoft.Json.JsonIgnore]
        public string color
        public int color
        {
            get
            {
                string c = "255255255";
                dicPropert.TryGetValue("color", out c);
                if (c.Length != 9)
                if (trait_color == null)
                {
                    dicPropert["color"] = "255255255";
                    trait_color = function.Find((obj) => obj.attri == "color");
                    //找不到属性需要声明一个,防止报错闪退
                    if (trait_color == null)
                    {
                        trait_color = new Trait()
                        {
                            attri = "color",
                            value = new List<string> { "FFFFFF" },
                            max = 0xFFFFFF,
                            min = 0x000000,
                        };
                    }
                    trait_color.curValues = trait_color.min;
                }
                return c.Length == 9 ? c : "255255255";
                return Convert.ToInt32(trait_color.curValues);
            }
            set
            {
                try
                {
                    dicPropert["color"] = value.ToString();
                    trait_color.curValues = value;
                }
                catch
                {
@@ -75,12 +120,12 @@
            }
        }
        [Newtonsoft.Json.JsonIgnore]
        public byte redColor
        public int redColor
        {
            get {
                try
                {
                    return Convert.ToByte(color.Substring(0, 3));
                    return color >> 16;
                }
                catch (Exception ex)
                {
@@ -92,7 +137,8 @@
            {
                try
                {
                    dicPropert["color"] = dicPropert["color"].ToString().Remove(0, 3).Insert(0, value.ToString().PadLeft(3, '0'));
                    var rc = value << 16;
                    color = rc + (color & 0xFFFF);
                }
                catch (Exception ex)
                {
@@ -101,13 +147,13 @@
            }
        }
        [Newtonsoft.Json.JsonIgnore]
        public byte greenColor
        public int greenColor
        {
            get
            {
                try
                {
                    return Convert.ToByte(color.Substring(3, 3));
                    return (color & 0xFFFF) >> 8;
                }
                catch (Exception ex)
                {
@@ -119,7 +165,8 @@
            {
                try
                {
                    dicPropert["color"] = dicPropert["color"].ToString().Remove(3, 3).Insert(3, value.ToString().PadLeft(3, '0'));
                    var gc = value << 8;
                    color = gc + (color & 0xFF00FF);
                }
                catch (Exception ex)
                {
@@ -128,13 +175,13 @@
            }
        }
        [Newtonsoft.Json.JsonIgnore]
        public byte blueColor
        public int blueColor
        {
            get
            {
                try
                {
                    return Convert.ToByte(color.Substring(6, 3));
                    return color & 0xFF;
                }
                catch (Exception ex)
                {
@@ -146,7 +193,7 @@
            {
                try
                {
                    dicPropert["color"] = dicPropert["color"].ToString().Remove(6, 3).Insert(6, value.ToString().PadLeft(3, '0'));
                    color = value + (color & 0xFFFF00);
                }
                catch (Exception ex)
                {
@@ -164,30 +211,74 @@
            var sendJob = new JObject();
            if (command == CommandType_A.write)
            {
                sendJob = new JObject { { "vendor_code", vendor_code }, { "Command", command.ToString() }, { "Type", "device" } };
                JObject data = null;
                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:
                        data = new JObject { { "sid", sid }, { "switch", on_off } };
                        controlData.Add(new ControlData()
                        {
                            name = "on_off",
                            data_type = "Bool",
                            value = on_off
                        });
                        break;
                    case FunctionType.Dimmer:
                        data = new JObject { { "sid", sid }, { "brightness", brightness } };
                        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:
                        data = new JObject { { "sid", sid }, { "brightness", brightness }, { "color", color } };
                        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;
                }
                sendJob.Add("objects", data);
                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" } };
                sendJob = new JObject { { "vendor_code", vendor_code }, { "command", command.ToString() }, { "type", "device" } };
                var data = new JObject {{ "sid", sid } };
                sendJob.Add("objects", data);
            }
            return sendJob;
        }
    }
}