From c157f5a31db9878bfa4f0481378cbfc927e34074 Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期三, 23 八月 2023 10:04:03 +0800
Subject: [PATCH] 1
---
HDL_ON/Entity/Function/Function.cs | 279 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 254 insertions(+), 25 deletions(-)
diff --git a/HDL_ON/Entity/Function/Function.cs b/HDL_ON/Entity/Function/Function.cs
index 323eb48..53702aa 100644
--- a/HDL_ON/Entity/Function/Function.cs
+++ b/HDL_ON/Entity/Function/Function.cs
@@ -100,7 +100,7 @@
/// <returns></returns>
public FunctionAttributes GetAttribute(string key)
{
- var attr = attributes.Find((a) => a.key == key);
+ var attr = GetFunctionAttributes().Find((a) => a.key == key);
return attr;
}
@@ -109,7 +109,7 @@
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
- public string GetAttrState(string key , string defaultValue = "0")
+ public string GetAttrState(string key, string defaultValue = "0")
{
//涓�绾ф煡璇eyValue鍊�
var attrState = attributes.Find((s) => s.key == key.ToString());
@@ -171,6 +171,9 @@
string iconPath = spk.Replace(".", "");
switch (spk)
{
+ case SPK.AirSwitchP3:
+ iconPath = "electricalbreaker";
+ break;
case SPK.PanelSocket:
iconPath = "electricalsocket";
break;
@@ -279,7 +282,7 @@
/// <summary>
/// 鐗╃悊璁惧(妯″潡)鍨嬪彿
/// </summary>
- public string omodel =string.Empty;
+ public string omodel = string.Empty;
/// <summary>
/// 璁惧spk
/// </summary>
@@ -373,6 +376,39 @@
/// </summary>
public List<FunctionAttributes> attributes = new List<FunctionAttributes>();
+ public List<FunctionAttributes> GetFunctionAttributes()
+ {
+ if (spk == SPK.GroupControl)
+ {
+ var list = new List<FunctionAttributes>();
+ var gc = FunctionList.List.groupControls.Find((obj) => obj.sid == sid);
+ if (gc != null)
+ {
+ foreach (var temp in gc.sids)
+ {
+ var light = FunctionList.List.GetLightList().Find((obj) => obj.sid == temp.sid);
+ if (light != null)
+ {
+ foreach (var attr in light.attributes)
+ {
+ if (list.Find((obj) => obj.key == attr.key) == null)
+ {
+ list.Add(attr);
+ }
+ }
+ }
+ }
+ }
+
+ return list;
+ }
+ else
+ {
+ return attributes;
+ }
+ }
+
+
/// <summary>
/// 鎴块棿ID鍒楄〃
/// 璇ュ姛鑳芥坊鍔犲埌鍒版埧闂村垪琛�
@@ -409,20 +445,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)
+ {
+ 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>
@@ -694,9 +762,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);
//鐩存帴淇濆瓨鏈湴锛�
@@ -766,8 +834,43 @@
public SceneFunction ConvertSceneFunction()
{
var sFunc = new SceneFunction();
- foreach (var attr in attributes)
+
+ var list = new List<FunctionAttributes>();
+ if (spk == SPK.GroupControl)
{
+ lock (list)
+ {
+ var gc = FunctionList.List.groupControls.Find((obj) => obj.sid == sid);
+ if (gc != null)
+ {
+ foreach (var temp in gc.sids)
+ {
+ var tempDevice = FunctionList.List.GetLightList().Find((obj) => obj.sid == temp.sid);
+ if (tempDevice != null)
+ {
+ foreach (var attr in tempDevice.attributes)
+ {
+ if (list.Find((obj) => obj.key == attr.key) == null)
+ {
+ list.Add(attr);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ list.AddRange(attributes);
+ }
+
+ 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)
{
@@ -778,29 +881,59 @@
continue;
}
}
+ }else if (spk == SPK.GroupControl)
+ {
+ 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;
}
@@ -816,11 +949,15 @@
case FunctionAttributeKey.CCT:
case FunctionAttributeKey.RGB:
case FunctionAttributeKey.Angle:
+ case FunctionAttributeKey.Colorful:
+ case FunctionAttributeKey.ColorfulBegin:
+ case FunctionAttributeKey.ColorfulEnd:
+ case FunctionAttributeKey.ColorfulTime:
case "security":
//case FunctionAttributeKey.FadeTime:
if (attr.curValue.ToString() == "{}")
{
- if (attr.key == FunctionAttributeKey.OnOff)
+ if (attr.key == FunctionAttributeKey.OnOff || attr.key == FunctionAttributeKey.Colorful)
{
attr.curValue = "off";
}
@@ -860,16 +997,15 @@
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;
}
}
@@ -1015,6 +1151,10 @@
/// 浜戠璐熻矗鐢熸垚
/// </summary>
public string deviceId = "0";
+ /// <summary>
+ /// 鍦ㄧ嚎鐘舵��
+ /// </summary>
+ public bool online = true;
public List<AttributesStatus> status = new List<AttributesStatus>();
}
/// <summary>
@@ -1074,6 +1214,10 @@
/// 褰撳墠鍊�
/// </summary>
public object curValue = new object();
+ /// <summary>
+ /// 灞炴�у崟浣�
+ /// </summary>
+ public string unit=string.Empty;
}
/// <summary>
@@ -1081,6 +1225,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>
/// 瀹夐槻甯冮槻鐘舵��
@@ -1421,7 +1638,7 @@
/// <summary>
/// 缇ゆ帶锛堣嚜瀹氫箟锛�
/// </summary>
- public const string GroupControl = "GroupControl";
+ public const string GroupControl = "groupControl";
/// <summary>
/// 閫氱敤寮�鍏�
/// </summary>
@@ -1467,9 +1684,14 @@
/// <summary>
- /// 鐚溂
+ /// 鐚溂(鏃pk)
/// </summary>
public const string Peephole = "peephole";
+
+ /// <summary>
+ /// 鐚溂(鏂皊pk 鏆傛椂娌$敤)
+ /// </summary>
+ //public const string PeepholeEz = "security.peephole.ez";
/// <summary>
/// 钀ょ煶瑙嗛闂ㄩ攣
/// </summary>
@@ -1691,6 +1913,8 @@
{
var spkList = new List<string>();
spkList.Add(ElectricEnergy);
+ spkList.Add(AirSwitch);
+ spkList.Add(AirSwitchP3);
return spkList;
}
#endregion
@@ -1979,6 +2203,10 @@
/// 鏅鸿兘绌哄紑
/// </summary>
public const string AirSwitch = "electrical.breaker";
+ /// <summary>
+ /// 涓夌浉鏅鸿兘绌哄紑
+ /// </summary>
+ public const string AirSwitchP3 = "electrical.breakerP3";
#region 娑傞甫
/// <summary>
@@ -2031,7 +2259,8 @@
spkList.Add(ElectricTuyaWeepRobot2);
spkList.Add(ElectricTuyaWaterValve);
spkList.Add(ElectricTuyaWaterValve2);
- spkList.Add(AirSwitch);
+ //spkList.Add(AirSwitch);
+ //spkList.Add(AirSwitchP3);
return spkList;
}
--
Gitblit v1.8.0