From af1cb3ecd0f4b0589e00b28f7f9edccf39e6e12b Mon Sep 17 00:00:00 2001 From: wxr <464027401@qq.com> Date: 星期四, 10 九月 2020 16:15:11 +0800 Subject: [PATCH] 202009101 --- HDL_ON/Entity/Function/Function.cs | 466 ++++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 358 insertions(+), 108 deletions(-) diff --git a/HDL_ON/Entity/Function/Function.cs b/HDL_ON/Entity/Function/Function.cs index 45f4951..924ddcc 100644 --- a/HDL_ON/Entity/Function/Function.cs +++ b/HDL_ON/Entity/Function/Function.cs @@ -3,6 +3,7 @@ using System.Linq; using Newtonsoft.Json.Linq; using HDL_ON; +using Shared; namespace HDL_ON.Entity { @@ -13,17 +14,24 @@ public class Trait { /// <summary> - /// 灞炴�у唴瀹� - /// </summary> - public string attri; - /// <summary> /// 灞炴�у悕绉� /// </summary> public string name; + List<string> _value_key; /// <summary> - /// 灞炴�х殑鍊� + /// 灞炴�х殑鍊煎垪琛� /// </summary> - public List<string> value; + [Newtonsoft.Json.JsonIgnore] + public List<string> value_key { + get + { + return _value_key; + } + set + { + _value_key = value; + } + } /// <summary> /// 鏈�澶у�� /// </summary> @@ -40,10 +48,271 @@ /// <summary> /// 褰撳墠鍊� - /// app杞欢鑷畾涔夊睘鎬� - /// 鐢ㄦ潵璁板綍褰撳墠鐘舵�� /// </summary> - public object curValues = new object(); + 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": + 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": + 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 (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 @@ -64,6 +333,18 @@ public Function() { } + /// <summary> + /// 鏁版嵁瀛樺偍鏂囦欢鍚� + /// </summary> + [Newtonsoft.Json.JsonIgnore] + public string savePath + { + get + { + return "FunctionData_" + sid; + } + } + #region base info /// <summary> /// HDL缁熶竴鍗忚鏍煎紡锛�14bytes @@ -87,7 +368,7 @@ /// 澶х被鍒� 1bytes 锛堥鐣欙級 /// 灏忕被鍒� 1byte 锛堥鐣欙級 /// </summary> - public string sid = "03010112345678010123012301230101"; + public string sid = "0301011234567801012301230123"; /// <summary> /// A鍗忚鍔熻兘鐨勭壒鎬� @@ -107,6 +388,40 @@ /// 浣跨敤A鍗忚鎺у埗鏃讹紝鏀瑰睘鎬т负绌� /// </summary> public BusData bus_Data; + /// <summary> + /// 寤舵椂 + /// </summary> + public int delay = 0; + /// <summary> + /// 寤舵椂鏄剧ず鐨勬枃鏈� + /// </summary> + [Newtonsoft.Json.JsonIgnore] + public string delayText + { + get + { + string text = ""; + switch (delay) + { + case 0: + text = Language.StringByID(StringId.NoDelay); + break; + case 30: + text = "30s"; + break; + case 60: + text = "1min"; + break; + case 120: + text = "2min"; + break; + case 300: + text = "5min"; + break; + } + return text; + } + } #endregion /// <summary> @@ -144,20 +459,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> /// 鏈�鍚庢帶鍒剁殑涓�娆$姸鎬� @@ -165,85 +466,34 @@ [Newtonsoft.Json.JsonIgnore] public string lastState = ""; + Trait _trait_on_off; [Newtonsoft.Json.JsonIgnore] - public Trait trait_on_off; - /// <summary> - /// 寮�鍏崇姸鎬� - /// 0:鍏� - /// 1:寮� - /// </summary> - [Newtonsoft.Json.JsonIgnore] - public string on_off + public Trait trait_on_off { get { - try + if (_trait_on_off == null) { - if (trait_on_off == null) + _trait_on_off = function.Find((obj) => obj.name == "on_off"); + //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂�� + if (_trait_on_off == null) { - trait_on_off = function.Find((obj) => obj.attri == "on_off"); - //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂�� - if (trait_on_off == null) + _trait_on_off = new Trait() { - trait_on_off = new Trait() - { - attri = "on_off", - value = new List<string> { "on", "off" }, - max = 1, - min = 0, - }; - } - trait_on_off.curValues = trait_on_off.value[trait_on_off.min]; + name = "on_off", + value_key = new List<string> { "on", "off" }, + max = 1, + min = 0, + }; } - return trait_on_off.curValues.ToString(); + _trait_on_off.value = "on"; } - catch - { - MainPage.Log("on_off 鏁版嵁鑾峰彇澶辫触."); - function.Add( new Trait() - { - attri = "on_off", - value = new List<string> { "on", "off" }, - max = 1, - min = 0, - }); - return "off"; - } + return _trait_on_off; } - set - { - try - { - if (trait_on_off == null) - { - trait_on_off = function.Find((obj) => obj.attri == "on_off"); - //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂�� - if (trait_on_off == null) - { - trait_on_off = new Trait() - { - attri = "on_off", - value = new List<string> { "on", "off" }, - max = 1, - min = 0, - }; - } - trait_on_off.curValues = trait_on_off.min; - } - trait_on_off.curValues = value; - } - catch (Exception ex) - { - MainPage.Log($"on_off 鏁版嵁鍒锋柊澶辫触: {ex.Message}"); - function.Add(new Trait() - { - attri = "on_off", - value = new List<string> { "on", "off" }, - max = 1, - min = 0, - }); - } - } + //set + //{ + // _trait_on_off = value; + //} } /// <summary> @@ -269,19 +519,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 () { string busId = ""; @@ -301,17 +538,30 @@ string roomNameList = ""; foreach(var roomId in roomIdList) { - var findRoom = DB_ResidenceData.residenceData.rooms.Find(obj => obj.sid == roomId); + var findRoom = DB_ResidenceData.rooms.Find(obj => obj.sid == roomId); if (findRoom == null) continue; if(roomNameList != "") { roomNameList += ","; } - roomNameList += findRoom.floor + "路" + findRoom.name; + roomNameList += findRoom.floorName + findRoom.name; + } + if (roomNameList == "" && functionType == FunctionType.Scene) + { + roomNameList = Language.StringByID(StringId.WholeHouseScene); } return roomNameList; } + /// <summary> + /// 淇濆瓨鍔熻兘鏁版嵁 + /// </summary> + public void SaveFunctionData() + { + var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this)); + FileUtils.WriteFileByBytes("FunctionData_" + this.sid, ssd); + MainPage.Log($"Save FunctionData {this.functionType} : {this.sid}"); + } /// <summary> /// 鏇存柊鏃堕棿 -- Gitblit v1.8.0