From e6a26ee148587327478d9a82624a820c907b6e16 Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期三, 04 十一月 2020 14:58:15 +0800
Subject: [PATCH] 20201104

---
 HDL_ON/Entity/Function/Function.cs |  745 +++++++++++++++++++++++++++++---------------------------
 1 files changed, 385 insertions(+), 360 deletions(-)

diff --git a/HDL_ON/Entity/Function/Function.cs b/HDL_ON/Entity/Function/Function.cs
index 0c3e88b..909a146 100644
--- a/HDL_ON/Entity/Function/Function.cs
+++ b/HDL_ON/Entity/Function/Function.cs
@@ -1,337 +1,29 @@
 锘縰sing System;
 using System.Collections.Generic;
-using System.Linq;
-using Newtonsoft.Json.Linq;
-using HDL_ON;
 using Shared;
 
 namespace HDL_ON.Entity
 {
     /// <summary>
-    /// 鍔熻兘灞炴��
-    /// 灞炴�у瓧娈佃В鏋愶細attri :灞炴�у唴瀹癸紝value 灞炴�х殑鍊硷紝max 鏈�澶у�� min 鏈�灏忓��
+    /// 鍔熻兘绫昏兘婊¤冻鏁版嵁浣跨敤瑕佹眰锛屽瓙绫诲彧鏄负浜嗘柟渚夸娇鐢ㄥ睘鎬�
     /// </summary>
-    public class Trait
-    {
-        /// <summary>
-        /// 灞炴�у悕绉�
-        /// </summary>
-        public string name;
-        public List<string> _value_key;
-        /// <summary>
-        /// 灞炴�х殑鍊煎垪琛�
-        /// </summary>
-        [Newtonsoft.Json.JsonIgnore]
-        public List<string> value_key {
-            get
-            {
-                return _value_key;
-            }
-            set
-            {
-                _value_key = value;
-            }
-        }
-        /// <summary>
-        /// 鏈�澶у��
-        /// </summary>
-        public int max;
-        /// <summary>
-        /// 鏈�灏忓��
-        /// </summary>
-        public int min;
-
-        /// <summary>
-        /// 鏁版嵁绫诲瀷
-        /// </summary>
-        public string data_type = "";
-
-        /// <summary>
-        /// 褰撳墠鍊�
-        /// </summary>
-        public object value = new object();
-
-
-        //----app鑷畾涔�
-        /// <summary>
-        /// 灞炴�у�煎崟浣�
-        /// </summary>
-        public string _uintString;
-        public string uintString {
-            get
-            {
-                if(!string.IsNullOrEmpty( _uintString))
-                {
-                    return _uintString;
-                }
-                var us = "";
-                switch(name)
-                {
-                    case "temperature":
-                        us = "掳C";
-                        break;
-                    case "percent":
-                    case "brightness":
-                        us = "%";
-                        break;
-                }
-                return us;
-            }
-        }
-
-        /// <summary>
-        /// 灞炴�у悕绉版樉绀烘枃鏈�
-        /// 涓嫳鏂囨樉绀�
-        /// </summary>
-        public string name_text
-        {
-            get
-            {
-                string text = "";
-                switch (name)
-                {
-                    case "on_off":
-                        text = Language.StringByID(StringId.OnOff);
-                        break;
-                    case "brightness":
-                        text = Language.StringByID(StringId.Brightness);
-                        break;
-                    case "color":
-                        text = Language.StringByID(StringId.ColorValue);
-                        break;
-                    case "mode":
-                        text = Language.StringByID(StringId.Mode);
-                        break;
-                    case "fan":
-                        text = Language.StringByID(StringId.FanSpeed);
-                        break;
-                    case "temperature":
-                        text = Language.StringByID(StringId.Temp);
-                        break;
-                    case "delay":
-                        text = Language.StringByID(StringId.Delay);
-                        break;
-                    case "cct":
-                        text = "CCT";
-                        break;
-                    //case "fade_time":
-                    case "percent":
-                        text = Language.StringByID(StringId.PercentAdjustment);
-                        break;
-                        //case "lock":
-                        //case "ico":
-                        //case "swing":
-                        //case "set_ point":
-                        //case "pm25":
-                        //case "volume":
-                        //case "vol_step":
-                        //case "source":
-                        //case "treble":
-                        //case "bass":
-                        //case "playlist":
-                        //case "song_name":
-                        //case "current_status":
-                        //case "enable":
-                        //case "lux":
-                        //case "adjust_value":
-                        //case "range":
-                        //case "humidity":
-                        //case "type":
-                        //case "state":
-                        //case "sensitivity":
-                        //case "pm25value":
-                }
-                return text;
-            }
-        }
-
-        /// <summary>
-        /// 鑾峰彇褰撳墠灞炴�х殑鏄剧ず鏂囨湰
-        /// 涓嫳鏂囨樉绀�
-        /// </summary>
-        public string GetCurValueText()
-        {
-            return GetValueText(value.ToString());
-        }
-
-        /// <summary>
-        /// 鑾峰彇鎸囧畾灞炴�х殑鏄剧ず鏂囨湰
-        /// 涓嫳鏂囨樉绀�
-        /// </summary>
-        public string GetValueText(string value)
-        {
-            string text = "";
-            value = value.Replace("{}", "");
-            switch (name)
-            {
-                case "on_off":
-                    text = value == "on" ? Language.StringByID(StringId.On) : Language.StringByID(StringId.OFF);
-                    break;
-                case "temperature":
-                case "brightness":
-                case "percent":
-                    if (text == "")
-                    {
-                        this.value = this.min;
-                        text = this.min.ToString();
-                    }
-                    else
-                    {
-                        text = value;
-                    }
-                    break;
-                //case "color":
-                case "mode":
-                    switch (value)
-                    {
-                        //----绌鸿皟
-                        case "auto":
-                            text = Language.StringByID(StringId.Auto);
-                            break;
-                        case "cool":
-                            text = Language.StringByID(StringId.Cool);
-                            break;
-                        case "heat":
-                            text = Language.StringByID(StringId.Heat);
-                            break;
-                        case "dry":
-                            text = Language.StringByID(StringId.Dry);
-                            break;
-                        case "fan":
-                            text = Language.StringByID(StringId.AirSupply);
-                            break;
-                        //-----鍦扮儹
-                        case "day":
-                            text = Language.StringByID(StringId.Day);
-                            break;
-                        case "night":
-                            text = Language.StringByID(StringId.Night);
-                            break;
-                        case "away":
-                            text = Language.StringByID(StringId.Away);
-                            break;
-                        case "normal":
-                            text = Language.StringByID(StringId.Normal);
-                            break;
-                        case "timer":
-                            text = Language.StringByID(StringId.Timer);
-                            break;
-                        default:
-                            if (this.value_key.Contains("cool"))
-                            {
-                                this.value = "cool";
-                                text = Language.StringByID(StringId.Cool);
-                            }
-                            else if (this.value_key.Contains("day"))
-                            {
-                                this.value = "day";
-                                text = Language.StringByID(StringId.Day);
-                            }
-                            else
-                            {
-                                foreach (var v in this.value_key)
-                                {
-                                    this.value = v;
-                                    text = GetCurValueText();
-                                }
-                            }
-                            break;
-                    }
-                    break;
-                case "fan":
-                    switch (value)
-                    {
-                        case "high":
-                            text = Language.StringByID(StringId.HighWindSpeed);
-                            break;
-                        case "medium":
-                            text = Language.StringByID(StringId.MiddleWindSpeed);
-                            break;
-                        case "low":
-                            text = Language.StringByID(StringId.LowWindSpeed);
-                            break;
-                        case "auto":
-                            text = Language.StringByID(StringId.Auto);
-                            break;
-                        default:
-                            if (this.value_key.Contains("low"))
-                            {
-                                this.value = "low";
-                                text = Language.StringByID(StringId.LowWindSpeed);
-                            }
-                            else
-                            {
-                                foreach (var v in this.value_key)
-                                {
-                                    this.value = v;
-                                    text = GetCurValueText();
-                                }
-                            }
-                            break;
-                    }
-                    break;
-                //case "delay":
-                //case "cct":
-                //case "fade_time":
-                //case "lock":
-                //case "ico":
-                //case "swing":
-                //case "set_ point":
-                //case "pm25":
-                //case "volume":
-                //case "vol_step":
-                //case "source":
-                //case "treble":
-                //case "bass":
-                //case "playlist":
-                //case "song_name":
-                //case "current_status":
-                //case "enable":
-                //case "lux":
-                //case "adjust_value":
-                //case "range":
-                //case "humidity":
-                //case "type":
-                //case "state":
-                //case "sensitivity":
-                //case "pm25value":
-                case "high":
-                    text = Language.StringByID(StringId.HighWindSpeed);
-                    break;
-                case "medium":
-                    text = Language.StringByID(StringId.MiddleWindSpeed);
-                    break;
-                case "low":
-                    text = Language.StringByID(StringId.LowWindSpeed);
-                    break;
-                case "auto":
-                    text = Language.StringByID(StringId.Auto);
-                    break;
-            }
-            return text;
-        }
-    }
-    /// <summary>
-    /// 璁惧鍔熻兘oid
-    /// </summary>
-    public class FunctionOid
-    {
-        public string oid;
-        public string name;
-        public string machine_id;
-        public string net_id;
-        public string dev_id;
-        public string channels;
-
-
-    }
-
-
     public class Function
     {
         public Function()
         {
         }
+        /// <summary>
+        /// 鏁版嵁瀛樺偍鏂囦欢鍚�
+        /// </summary>
+        [Newtonsoft.Json.JsonIgnore]
+        public string savePath
+        {
+            get
+            {
+                return "FunctionData_" + sid;
+            }
+        }
+
         #region base info
         /// <summary>
         /// HDL缁熶竴鍗忚鏍煎紡锛�14bytes
@@ -446,20 +138,6 @@
         /// 澶囨敞
         /// </summary>
         public string name;
-        /// <summary>
-        /// A鍗忚鍘傚晢浠g爜
-        /// </summary>
-        public string vendor_code
-        {
-            get
-            {
-                string vendorCode = "HDL";
-                var code = sid.Substring(0, 4);
-                if (code == "0001")
-                    vendorCode = "HDL";
-                return vendorCode;
-            }
-        }
 
         /// <summary>
         /// 鏈�鍚庢帶鍒剁殑涓�娆$姸鎬�
@@ -498,18 +176,6 @@
         }
 
         /// <summary>
-        /// 寮�鍏崇姸鎬佹枃鏈�
-        /// </summary>
-        [Newtonsoft.Json.JsonIgnore]
-        public string on_off_text
-        {
-            get
-            {
-                return trait_on_off.value.ToString() == "on" ? Language.StringByID(StringId.On) : Language.StringByID(StringId.OFF);
-            }
-        }
-
-        /// <summary>
         /// 鏄惁鏀惰棌
         /// </summary>
         public bool collection = false;
@@ -531,19 +197,6 @@
         /// 鍥哄畾鐨勫簭鍙�
         /// </summary>
         public int fixedSerialNumber = int.MaxValue;
-
-        /// <summary>
-        /// 鑾峰彇A鍗忚鎺у埗瀛楃涓�
-        /// </summary>
-        /// <param name="command">鎺у埗鍛戒护锛歸rite锛宺ead</param>
-        /// <returns></returns>
-        public virtual JObject GetSendJObject(CommandType_A command)
-        {
-            var sendJob = new JObject { { "vendor_code", vendor_code }, { "Command", command.ToString() }, { "Type", "device" }, };
-            var data = new JObject { { "sid", sid } };
-            sendJob.Add("objects", data);
-            return sendJob;
-        }
 
         public string GetBusId ()
         {
@@ -593,5 +246,377 @@
         /// 鏇存柊鏃堕棿
         /// </summary>
         public DateTime refreshTime = DateTime.MinValue;
+
+        /// <summary>
+        /// 鑾峰彇鎺у埗鍙戦�佹暟鎹�
+        /// </summary>
+        public AprotocolControlObj GetControlSendData(Dictionary<string, string> commandDictionary)
+        {
+            var sendDataObj = new AprotocolControlObj();
+            sendDataObj.from_oid = "";
+            sendDataObj.to_oid = "";
+            sendDataObj.time_stamp = "";
+            sendDataObj.type = "device_sid";
+            sendDataObj.command = "write";
+
+            var acoList = new AprotocolControlData();
+            acoList.sid = sid;
+            var aco = new AprotocolControlAttribute();
+            foreach(var dic in commandDictionary)
+            {
+                aco.name = dic.Key;
+                aco.value = dic.Value;
+                acoList.function.Add(aco);
+            }
+
+            sendDataObj.objects.Add(acoList);
+
+
+            return sendDataObj;
+        }
     }
+
+    /// <summary>
+    /// A鍗忚鎺у埗鏁版嵁鐨勫璞�
+    /// </summary>
+    public class AprotocolControlObj
+    {
+        public List<AprotocolControlData> objects = new List<AprotocolControlData>();
+
+        public string from_oid = "";
+        public string to_oid = "";
+        public string time_stamp = "";
+        public string type = "";
+        public string command = "";
+    }
+    /// <summary>
+    /// A鍗忚鎺у埗鏁版嵁
+    /// </summary>
+    public class AprotocolControlData
+    {
+        
+        public string sid = "";
+        public List<AprotocolControlAttribute> function = new List<AprotocolControlAttribute>();
+    }
+    /// <summary>
+    /// A鍗忚鎺у埗灞炴�у璞�
+    /// </summary>
+    public class AprotocolControlAttribute
+    {
+        public string name;
+        public string value;
+    }
+
+    /// <summary>
+    /// 鍔熻兘灞炴��
+    /// 灞炴�у瓧娈佃В鏋愶細attri :灞炴�у唴瀹癸紝value 灞炴�х殑鍊硷紝max 鏈�澶у�� min 鏈�灏忓��
+    /// </summary>
+    public class Trait
+    {
+        /// <summary>
+        /// 灞炴�у悕绉�
+        /// </summary>
+        public string name;
+        /// <summary>
+        /// 灞炴�х殑鍊煎垪琛�
+        /// </summary>
+        public List<string> value_key = new List<string>();
+        /// <summary>
+        /// 鏈�澶у��
+        /// </summary>
+        public int max;
+        /// <summary>
+        /// 鏈�灏忓��
+        /// </summary>
+        public int min;
+
+        /// <summary>
+        /// 鏁版嵁绫诲瀷
+        /// </summary>
+        public string data_type = "";
+
+        /// <summary>
+        /// 褰撳墠鍊�
+        /// </summary>
+        public object value = new object();
+
+
+        //----app鑷畾涔�
+        /// <summary>
+        /// 灞炴�у�煎崟浣�
+        /// </summary>
+        string _uintString;
+        [Newtonsoft.Json.JsonIgnore]
+        public string uintString
+        {
+            get
+            {
+                if (!string.IsNullOrEmpty(_uintString))
+                {
+                    return _uintString;
+                }
+                var us = "";
+                switch (name)
+                {
+                    case "temperature":
+                    case "set_temperature":
+                        us = "掳C";
+                        break;
+                    case "percent":
+                    case "brightness":
+                        us = "%";
+                        break;
+                }
+                return us;
+            }
+        }
+
+        /// <summary>
+        /// 灞炴�у悕绉版樉绀烘枃鏈�
+        /// 涓嫳鏂囨樉绀�
+        /// </summary>
+        [Newtonsoft.Json.JsonIgnore]
+        public string name_text
+        {
+            get
+            {
+                string text = "";
+                switch (name)
+                {
+                    case "on_off":
+                        text = Language.StringByID(StringId.OnOff);
+                        break;
+                    case "brightness":
+                        text = Language.StringByID(StringId.Brightness);
+                        break;
+                    case "color":
+                        text = Language.StringByID(StringId.ColorValue);
+                        break;
+                    case "mode":
+                        text = Language.StringByID(StringId.Mode);
+                        break;
+                    case "fan":
+                        text = Language.StringByID(StringId.FanSpeed);
+                        break;
+                    case "temperature":
+                case "set_temperature":
+                        text = Language.StringByID(StringId.Temp);
+                        break;
+                    case "delay":
+                        text = Language.StringByID(StringId.Delay);
+                        break;
+                    case "cct":
+                        text = "CCT";
+                        break;
+                    //case "fade_time":
+                    case "percent":
+                        text = Language.StringByID(StringId.PercentAdjustment);
+                        break;
+                        //case "lock":
+                        //case "ico":
+                        //case "swing":
+                        //case "set_point":
+                        //case "pm25":
+                        //case "volume":
+                        //case "vol_step":
+                        //case "source":
+                        //case "treble":
+                        //case "bass":
+                        //case "playlist":
+                        //case "song_name":
+                        //case "current_status":
+                        //case "enable":
+                        //case "lux":
+                        //case "adjust_value":
+                        //case "range":
+                        //case "humidity":
+                        //case "type":
+                        //case "state":
+                        //case "sensitivity":
+                        //case "pm25value":
+                }
+                return text;
+            }
+        }
+
+        /// <summary>
+        /// 鑾峰彇褰撳墠灞炴�х殑鏄剧ず鏂囨湰
+        /// 涓嫳鏂囨樉绀�
+        /// </summary>
+        public string GetCurValueText()
+        {
+            return GetValueText(value.ToString());
+        }
+
+        /// <summary>
+        /// 鑾峰彇鎸囧畾灞炴�х殑鏄剧ず鏂囨湰
+        /// 涓嫳鏂囨樉绀�
+        /// </summary>
+        public string GetValueText(string value)
+        {
+            string text = "";
+            value = value.Replace("{}", "");
+            switch (name)
+            {
+                case "on_off":
+                    text = value == "on" ? Language.StringByID(StringId.On) : Language.StringByID(StringId.OFF);
+                    break;
+                case "temperature":
+                case "set_temperature":
+                case "brightness":
+                case "percent":
+                    if (value == "")
+                    {
+                        this.value = this.min;
+                        text = this.min.ToString();
+                    }
+                    else
+                    {
+                        text = value;
+                    }
+                    break;
+                //case "color":
+                case "mode":
+                    switch (value)
+                    {
+                        //----绌鸿皟
+                        case "auto":
+                            text = Language.StringByID(StringId.Auto);
+                            break;
+                        case "cool":
+                            text = Language.StringByID(StringId.Cool);
+                            break;
+                        case "heat":
+                            text = Language.StringByID(StringId.Heat);
+                            break;
+                        case "dry":
+                            text = Language.StringByID(StringId.Dry);
+                            break;
+                        case "fan":
+                            text = Language.StringByID(StringId.AirSupply);
+                            break;
+                        //-----鍦扮儹
+                        case "day":
+                            text = Language.StringByID(StringId.Day);
+                            break;
+                        case "night":
+                            text = Language.StringByID(StringId.Night);
+                            break;
+                        case "away":
+                            text = Language.StringByID(StringId.Away);
+                            break;
+                        case "normal":
+                            text = Language.StringByID(StringId.Normal);
+                            break;
+                        case "timer":
+                            text = Language.StringByID(StringId.Timer);
+                            break;
+                        default:
+                            if (this.value_key.Contains("cool"))
+                            {
+                                this.value = "cool";
+                                text = Language.StringByID(StringId.Cool);
+                            }
+                            else if (this.value_key.Contains("day"))
+                            {
+                                this.value = "day";
+                                text = Language.StringByID(StringId.Day);
+                            }
+                            else
+                            {
+                                foreach (var v in this.value_key)
+                                {
+                                    this.value = v;
+                                    text = GetCurValueText();
+                                }
+                            }
+                            break;
+                    }
+                    break;
+                case "fan":
+                    switch (value)
+                    {
+                        case "high":
+                            text = Language.StringByID(StringId.HighWindSpeed);
+                            break;
+                        case "medium":
+                            text = Language.StringByID(StringId.MiddleWindSpeed);
+                            break;
+                        case "low":
+                            text = Language.StringByID(StringId.LowWindSpeed);
+                            break;
+                        case "auto":
+                            text = Language.StringByID(StringId.Auto);
+                            break;
+                        default:
+                            if (this.value_key.Contains("low"))
+                            {
+                                this.value = "low";
+                                text = Language.StringByID(StringId.LowWindSpeed);
+                            }
+                            else
+                            {
+                                foreach (var v in this.value_key)
+                                {
+                                    this.value = v;
+                                    text = GetCurValueText();
+                                }
+                            }
+                            break;
+                    }
+                    break;
+                //case "delay":
+                //case "cct":
+                //case "fade_time":
+                //case "lock":
+                //case "ico":
+                //case "swing":
+                //case "set_point":
+                //case "pm25":
+                //case "volume":
+                //case "vol_step":
+                //case "source":
+                //case "treble":
+                //case "bass":
+                //case "playlist":
+                //case "song_name":
+                //case "current_status":
+                //case "enable":
+                //case "lux":
+                //case "adjust_value":
+                //case "range":
+                //case "humidity":
+                //case "type":
+                //case "state":
+                //case "sensitivity":
+                //case "pm25value":
+                case "high":
+                    text = Language.StringByID(StringId.HighWindSpeed);
+                    break;
+                case "medium":
+                    text = Language.StringByID(StringId.MiddleWindSpeed);
+                    break;
+                case "low":
+                    text = Language.StringByID(StringId.LowWindSpeed);
+                    break;
+                case "auto":
+                    text = Language.StringByID(StringId.Auto);
+                    break;
+            }
+            return text;
+        }
+    }
+    /// <summary>
+    /// 璁惧鍔熻兘oid
+    /// </summary>
+    public class FunctionOid
+    {
+        public string oid;
+        public string name;
+        public string machine_id;
+        public string net_id;
+        public string dev_id;
+        public string channels;
+    }
+
 }

--
Gitblit v1.8.0