From cbc156bc38d8b8eae7aef60cb186ab2b52fa701f Mon Sep 17 00:00:00 2001 From: wxr <wxr@hdlchina.com.cn> Date: 星期二, 16 七月 2024 13:59:56 +0800 Subject: [PATCH] 增加全部挂断 --- HDL_ON/Entity/Function/Function.cs | 284 ++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 261 insertions(+), 23 deletions(-) diff --git a/HDL_ON/Entity/Function/Function.cs b/HDL_ON/Entity/Function/Function.cs index 6e0f81f..7bcc154 100644 --- a/HDL_ON/Entity/Function/Function.cs +++ b/HDL_ON/Entity/Function/Function.cs @@ -108,6 +108,7 @@ /// 鑾峰彇灞炴�у綋鍓嶇姸鎬� /// </summary> /// <param name="key"></param> + /// <param name="defaultValue">榛樿鍊�</param> /// <returns></returns> public string GetAttrState(string key, string defaultValue = "0") { @@ -120,7 +121,7 @@ if (string.IsNullOrEmpty(attrState.state)) { //浜岀骇鏌ヨkeyValue鍊� - return GetOriginalState(key); + return GetOriginalState(key, defaultValue); } return attrState.state; } @@ -130,13 +131,14 @@ /// 榛樿鍊硷細0 /// </summary> /// <param name="key">璇泙瀹氫箟鐨勫睘鎬у��</param> + /// <param name="defaultValue">榛樿鍊�</param> /// <returns></returns> - public string GetOriginalState(string key) + public string GetOriginalState(string key, string defaultValue) { var originalState = status.Find((s) => s.key == key.ToString()); if (originalState == null || string.IsNullOrEmpty(originalState.value)) { - return "0"; + return defaultValue; } return originalState.value; } @@ -171,6 +173,16 @@ string iconPath = spk.Replace(".", ""); switch (spk) { + case SPK.SensorDryContact2: + case SPK.OtherCommon: + iconPath = "sensordryContact"; + break; + //case SPK.SensorLight: + // iconPath = "lightswitch"; + // break; + case SPK.AirSwitchP3: + iconPath = "electricalbreaker"; + break; case SPK.PanelSocket: iconPath = "electricalsocket"; break; @@ -442,20 +454,52 @@ /// </summary> public bool collect = false; - private bool _online = false; - /// <summary> - /// 鏄惁鍦ㄧ嚎 - /// </summary> - public bool online - { + private bool _online; + public bool online { get { + if (spk == SPK.AirSwitchP3|| spk == SPK.ElectricalTvHisense) + { + return _online; + } return true; } set { _online = value; } + } + ///// <summary> + ///// 鏄惁鍦ㄧ嚎 + ///// </summary> + //public bool online + //{ + // get + // { + // if(spk == SPK.AirSwitchP3) + // { + // return _online; + // } + // return true; + // } + // set + // { + // _online = value; + // } + //} + + public bool isOnline() + { + if (spk == SPK.AirSwitchP3) + { + return online; + } + return true; + } + + public void setOnine(bool isOnline) + { + online = isOnline; } /// <summary> @@ -727,9 +771,9 @@ /// <summary> /// 淇濆瓨鎴块棿缁戝畾淇℃伅 /// </summary> - public void UpdataRoomIds() + public async void UpdataRoomIds() { - new System.Threading.Thread(() => + new System.Threading.Thread( () => { var pack = ApiUtlis.Ins.HttpRequest.UpdataDevcieBindRoomInfo(this); //鐩存帴淇濆瓨鏈湴锛� @@ -810,10 +854,10 @@ { foreach (var temp in gc.sids) { - var light = FunctionList.List.GetLightList().Find((obj) => obj.sid == temp.sid); - if (light != null) + var tempDevice = FunctionList.List.GetLightList().Find((obj) => obj.sid == temp.sid); + if (tempDevice != null) { - foreach (var attr in light.attributes) + foreach (var attr in tempDevice.attributes) { if (list.Find((obj) => obj.key == attr.key) == null) { @@ -825,6 +869,43 @@ } } } + else if (spk == SPK.MusicStandard || spk == SPK.AvMusic) + { + list.Add(new FunctionAttributes + { + key = FunctionAttributeKey.OnOff, + curValue = string.Empty, + }); + list.Add(new FunctionAttributes + { + key = FunctionAttributeKey.Volume, + curValue = string.Empty, + }); + list.Add(new FunctionAttributes + { + key = FunctionAttributeKey.SongName, + curValue = string.Empty, + }); + + } + else if (spk == SPK.ElectricalTvHisense) + { + list.Add(new FunctionAttributes + { + key = FunctionAttributeKey.OnOff, + curValue = string.Empty, + }); + list.Add(new FunctionAttributes + { + key = FunctionAttributeKey.SetVolume, + curValue = string.Empty, + }); + list.Add(new FunctionAttributes + { + key = FunctionAttributeKey.Signal, + curValue = string.Empty, + }); + } else { list.AddRange(attributes); @@ -832,6 +913,10 @@ foreach (var attr in list) { + if(attr.key == FunctionAttributeKey.ColorfulBegin || attr.key == FunctionAttributeKey.ColorfulEnd || attr.key == FunctionAttributeKey.ColorfulTime) + { + continue; + } //绐楀笜鍚屾椂鍙戦�佸紑鍏宠窡鐧惧垎姣斾細鏈夐棶棰橈紝 if(spk == SPK.CurtainRoller || spk == SPK.CurtainTrietex || spk == SPK.CurtainDream) { @@ -847,33 +932,64 @@ sFunc.type = "5"; } - string us = ""; switch (attr.key) { case FunctionAttributeKey.SetTemp: + var tt = GetAttribute(FunctionAttributeKey.TempType); + if (tt == null) + { + attr.unit = "掳C"; + } + else + { + if (tt.unit == string.Empty) + { + attr.unit = "掳C"; + } + else + { + if (tt.unit == "C") + { + attr.unit = "掳C"; + } + else if (tt.unit == "F") + { + attr.unit = "掳F"; + } + else + { + attr.unit = tt.unit; + } + } + } + break; case FunctionAttributeKey.RoomTemp: - us = "掳C"; + attr.unit = "掳C"; var tempType = attributes.Find((obj) => obj.key == FunctionAttributeKey.TempType); if (tempType != null) { - us = tempType.curValue.ToString(); + attr.unit = tempType.curValue.ToString(); } break; case FunctionAttributeKey.Percent: case FunctionAttributeKey.Brightness: - us = "%"; + attr.unit = "%"; break; case FunctionAttributeKey.CCT: - us = "K"; + attr.unit = "K"; break; case FunctionAttributeKey.Angle: - us = "掳"; + attr.unit = "掳"; break; } switch (attr.key) { + case FunctionAttributeKey.SongName: + case FunctionAttributeKey.Volume: + case FunctionAttributeKey.SetVolume: + case FunctionAttributeKey.Signal: case FunctionAttributeKey.OnOff: case FunctionAttributeKey.Brightness: case FunctionAttributeKey.Mode: @@ -931,13 +1047,13 @@ vv = 26; } sFunc.status.Add(new SceneFunctionStatus() { - UintString = us, + UintString = attr.unit, key = attr.key, value = Convert.ToInt32(vv).ToString(), max = attr.max, min = attr.min }) ; } else { sFunc.status.Add(new SceneFunctionStatus() { - UintString = us, + UintString = attr.unit, key = attr.key, value = attr.curValue.ToString(), max = attr.max, min = attr.min }); } break; @@ -951,6 +1067,11 @@ /// 鏇存柊鏃堕棿 /// </summary> public DateTime refreshTime = DateTime.MinValue; + /// <summary> + /// 鏈�鍚庢洿鏂扮姸鎬佺殑鏃堕棿 + /// </summary> + [Newtonsoft.Json.JsonIgnore] + public DateTime updateTime = DateTime.MinValue; /// <summary> /// 鑾峰彇鏈湴鎺у埗鏁版嵁 @@ -1085,6 +1206,10 @@ /// 浜戠璐熻矗鐢熸垚 /// </summary> public string deviceId = "0"; + /// <summary> + /// 鍦ㄧ嚎鐘舵�� + /// </summary> + public bool online = true; public List<AttributesStatus> status = new List<AttributesStatus>(); } /// <summary> @@ -1155,6 +1280,79 @@ /// </summary> public static class FunctionAttributeKey { + #region 涓夌浉绌哄紑灞炴�� + /// <summary> + /// A鐩稿姛鐜� + /// </summary> + public const string PowerA = "power_a"; + /// <summary> + /// B鐩稿姛鐜� + /// </summary> + public const string PowerB = "power_b"; + /// <summary> + /// C鐩稿姛鐜� + /// </summary> + public const string PowerC = "power_c"; + /// <summary> + /// A鐩哥數鍘� + /// </summary> + public const string VoltageA = "voltage_a"; + /// <summary> + /// B鐩哥數鍘� + /// </summary> + public const string VoltageB = "voltage_b"; + /// <summary> + /// C鐩哥數鍘� + /// </summary> + public const string VoltageC = "voltage_c"; + /// <summary> + /// A鐩哥數娴� + /// </summary> + public const string CurrentA = "current_a"; + /// <summary> + /// B鐩哥數娴� + /// </summary> + public const string CurrentB = "current_b"; + /// <summary> + /// C鐩哥數娴� + /// </summary> + public const string CurrentC = "current_c"; + /// <summary> + /// A鐩告俯搴� + /// </summary> + public const string TempA = "temp_a"; + /// <summary> + /// B鐩告俯搴� + /// </summary> + public const string TempB = "temp_b"; + /// <summary> + /// C鐩告俯搴� + /// </summary> + public const string TempC = "temp_c"; + /// <summary> + /// 杩囨祦鍊� + /// </summary> + public const string MaxCurrent = "max_current"; + /// <summary> + /// 杩囨俯鍊� + /// </summary> + public const string MaxTemp = "max_temp"; + /// <summary> + /// A鐩哥數閲� + /// </summary> + public const string ElectricityA = "electricity_a"; + /// <summary> + /// B鐩哥數閲� + /// </summary> + public const string ElectricityB = "electricity_b"; + /// <summary> + /// C鐩哥數閲� + /// </summary> + public const string ElectricityC = "electricity_c"; + + #endregion + + public const string _null = ""; /// <summary> /// 瀹夐槻甯冮槻鐘舵�� @@ -1296,7 +1494,12 @@ public const string Temperature = "temperature"; public const string Hcho = "hcho"; public const string Humidity = "humidity"; + /// <summary> + /// 鐓у害 + /// </summary> + public const string Illuminance = "illuminance"; public const string Pm25 = "pm25"; + public const string Pm10 = "pm10"; public const string Tvoc = "tvoc"; /// <summary> /// 鐘舵��,浼犳劅鍣� @@ -1433,6 +1636,32 @@ /// 鎬荤數閲� /// </summary> public const string TotalElectricity = "total_electricity"; + + /// <summary> + /// 娴蜂俊tv闊抽噺 + /// </summary> + public const string SetVolume = "set_volume"; + /// <summary> + /// 娴蜂俊tv淇″彿婧�(0:LiveTV;2:PS;3:HDMI_1;4:HDMI_2;5:HDMI_3;6:HDMI_4;11:AV;) + /// </summary> + public const string Signal = "signal"; + + /// <summary> + /// 闊充箰闊抽噺 + /// </summary> + public const string Volume = "volume"; + /// <summary> + /// 姝屾洸鍚� + /// </summary> + public const string SongName = "song_name"; + /// <summary> + /// 鍒楄〃鍚� + /// </summary> + public const string PlaylistName = "playlist_name"; + /// <summary> + /// 鎾斁璺緞 + /// </summary> + public const string Url = "url"; } @@ -1789,6 +2018,8 @@ { var spkList = new List<string>(); spkList.Add(ElectricEnergy); + spkList.Add(AirSwitch); + spkList.Add(AirSwitchP3); return spkList; } #endregion @@ -1980,6 +2211,7 @@ spkList.Add(SensorEnvironment2); spkList.Add(SensorEnvironment3); spkList.Add(SensorHcho); + spkList.Add(SensorLight); return spkList; } /// <summary> @@ -1996,6 +2228,7 @@ spkList.Add(SensorTVOC); spkList.Add(SensorHumidity); spkList.Add(SensorHcho); + spkList.Add(SensorLight); return spkList; } @@ -2009,6 +2242,7 @@ spkList.Add(SensorEnvironment); spkList.Add(SensorEnvironmentHailin); spkList.Add(SensorEnvironment2); spkList.Add(SensorEnvironment3); + return spkList; } @@ -2072,7 +2306,7 @@ /// <summary> /// 绾㈠鐑按鍣� /// </summary> - public const string HeaterIr = " ir.water_heater"; + public const string HeaterIr = "ir.water_heater"; /// <summary> /// 绾㈠椋庢墖 /// </summary> @@ -2081,6 +2315,10 @@ /// 鏅鸿兘绌哄紑 /// </summary> public const string AirSwitch = "electrical.breaker"; + /// <summary> + /// 涓夌浉鏅鸿兘绌哄紑 + /// </summary> + public const string AirSwitchP3 = "electrical.breakerP3"; #region 娑傞甫 /// <summary> -- Gitblit v1.8.0