wei
2021-10-14 4ad6d53e2a8dc59d99405a053ddc46f49ae7a1b3
HDL_ON/Entity/Function/Function.cs
@@ -146,7 +146,48 @@
        {
            get
            {
                return spk.Replace(".","");
                string iconPath = spk.Replace(".", "");
                switch (spk)
                {
                    case SPK.PanelSocket:
                        iconPath = "electricalsocket";
                        break;
                    case SPK.SenesorMegahealth2:
                        iconPath = "sensormegahealth";
                        break;
                    case SPK.SensorEnvironmentHailin:
                        iconPath = "sensorenvironment";
                        break;
                    case SPK.HvacAirFresh:
                        iconPath = "airFreshstandard";
                        break;
                    case SPK.HvacAirFreshJinmao:
                        iconPath = "airFreshjinmao";
                        break;
                    case SPK.HvacAC:
                        iconPath = "acstandard";
                        break;
                    case SPK.HvacFan:
                        iconPath = "electricalfan";
                        break;
                    case SPK.ElectricTuyaFan2:
                        iconPath = "electricaltyqborgovyzytytz";
                        break;
                    case SPK.ElectricTuyaAirCleaner2:
                        iconPath = "electricalQ1RsefNf91tIXyyQ";
                        break;
                    case SPK.ElectricTuyaWaterValve2:
                        iconPath = "electricalkoiGhMKwLf2ZP81g";
                        break;
                    case SPK.ElectricTuyaWeepRobot2:
                        iconPath = "electricalai6HtccKFIw3dxo3";
                        break;
                    case SPK.AvMusic:
                        iconPath = "musicstandard";
                        break;
                }
                return iconPath;
            }
        }
@@ -188,24 +229,87 @@
        /// </summary>
        public string spk = "";
        string spk_Prefix;
        private string _SpkCategory = string.Empty;
        /// <summary>
        /// spk前缀
        /// 大类
        /// 功能类别
        /// 如:空调类、灯光类、窗帘类
        /// spk  产品的品类
        /// </summary>
        public string Spk_Prefix
        public string SpkCategory
        {
            get
            {
                if (string.IsNullOrEmpty(spk_Prefix))
                if (string.IsNullOrEmpty(_SpkCategory))
                {
                    spk_Prefix = spk.Split(".")[0];
                    var arr = spk.Split(".");
                    if (arr.Length > 0)
                    {
                        _SpkCategory = arr[0];
                    }
                }
                return spk_Prefix;
                return _SpkCategory;
            }
        }
        private string _SpkClassification = string.Empty;
        /// <summary>
        /// spk 产品品类下的分类
        /// </summary>
        public string SpkClassification
        {
            get
            {
                if (string.IsNullOrEmpty(_SpkClassification))
                {
                    var arr = spk.Split(".");
                    if (arr.Length > 1)
                    {
                        _SpkClassification = arr[1];
                    }
                }
                return _SpkClassification;
            }
        }
        string _SpkManufacturer = string.Empty;
        /// <summary>
        /// spk 产品的厂商
        /// </summary>
        public string SpkManufacturer
        {
            get
            {
                if (string.IsNullOrEmpty(_SpkManufacturer))
                {
                    var arr = spk.Split(".");
                    if (arr.Length > 2)
                    {
                        _SpkManufacturer = arr[2];
                    }
                }
                return _SpkManufacturer;
            }
        }
        //string spk_Prefix;
        ///// <summary>
        ///// spk前缀
        ///// 大类
        ///// 功能类别
        ///// 如:空调类、灯光类、窗帘类
        ///// </summary>
        //public string Spk_Prefix
        //{
        //    get
        //    {
        //        if (string.IsNullOrEmpty(spk_Prefix))
        //        {
        //            spk_Prefix = spk.Split(".")[0];
        //        }
        //        return spk_Prefix;
        //    }
        //}
        /// <summary>
        /// A协议功能的特性
        /// 如:是AC功能:特性:on_off,mode,fan,temperature
@@ -281,6 +385,21 @@
                return _trait_on_off;
            }
        }
        /// <summary>
        /// 功能的属性状态列表
        /// </summary>
        public List<AttributesStatus> status = new List<AttributesStatus>();
        /// <summary>
        /// 通过状态列表组装属性里面的状态
        /// </summary>
        public void AssembleStatus()
        {
            foreach (var sta in status)
            {
                SetAttrState(sta.key, sta.value);
            }
        }
        /// <summary>
        /// 使用次数
@@ -500,6 +619,8 @@
                    case FunctionAttributeKey.SetTemp:
                    case FunctionAttributeKey.FanSpeed:
                    case FunctionAttributeKey.Percent:
                    case FunctionAttributeKey.CCT:
                    case FunctionAttributeKey.RGB:
                    //case FunctionAttributeKey.FadeTime:
                        if (attr.curValue.ToString() == "{}")
                        {
@@ -507,7 +628,25 @@
                            {
                                attr.curValue = "off";
                            }
                            else
                            else if (attr.key == FunctionAttributeKey.Mode )
                            {
                                if (DB_ResidenceData.Instance.GatewayType == 0)
                                {
                                    attr.curValue = "0";
                                }
                                else
                                {
                                    if (SPK.AcSpkList().Contains(spk))
                                    {
                                        attr.curValue = "cool";
                                    }
                                    else if (SPK.FhSpkList().Contains(spk))
                                    {
                                        attr.curValue = "day";
                                    }
                                }
                            }
                            else
                            {
                                attr.curValue = "0";
                            }
@@ -516,12 +655,17 @@
                        {
                            double vv = 16;
                            Double.TryParse(attr.curValue.ToString(), out vv);
                            sFunc.status.Add(new SceneFunctionStatus() { key = attr.key, value = Convert.ToInt32(vv).ToString() });
                            if (vv == 0)
                            {
                                vv = 26;
                            }
                            sFunc.status.Add(new SceneFunctionStatus() { key = attr.key, value = Convert.ToInt32(vv).ToString(), max = attr.max, min = attr.min });
                        }
                        else
                        {
                            sFunc.status.Add(new SceneFunctionStatus() { key = attr.key, value = attr.curValue.ToString() });
                            sFunc.status.Add(new SceneFunctionStatus() { key = attr.key, value = attr.curValue.ToString(), max = attr.max, min = attr.min });
                        }
                        break;
                }
            }
@@ -638,7 +782,7 @@
        public List<AttributesStatus> status = new List<AttributesStatus>();
    }
    /// <summary>
    /// a协议控制动作数据
    /// 功能属性状态
    /// </summary>
    public class AttributesStatus
    {
@@ -658,7 +802,7 @@
    /// 功能属性
    /// 属性字段解析:attri :属性内容,value 属性的值,max 最大值 min 最小值
    /// </summary>
    [System.Serializable]
    [Serializable]
    public class FunctionAttributes
    {
        /// <summary>
@@ -690,6 +834,7 @@
        /// </summary>
        public object curValue = new object();
    }
    /// <summary>
    /// 功能属性键名列表
    /// </summary>
@@ -751,6 +896,7 @@
        /// 空调、地热//app自加
        /// </summary>
        public const string TempType = "temperature_type";
        /// <summary>
        /// 时间标记
        /// 地热//app自加
@@ -776,10 +922,29 @@
        /// value
        /// </summary>
        public const string Value = "value";
        public const string Co2 = "co2";
        public const string Temperature = "temperature";
        public const string Hcho = "hcho";
        public const string Humidity = "humidity";
        public const string Pm25 = "pm25";
        public const string Tvoc = "tvoc";
        /// <summary>
        /// 状态,传感器
        /// </summary>
        public const string Status = "status";
        /// <summary>
        /// 状态(有无人)
        /// </summary>
        public const string PeopleStatus = "people_status";
        /// <summary>
        /// 状态(报警)
        /// </summary>
        public const string AlarmStatus = "alarm_status";
        /// <summary>
        /// 状态(闭合、打开)
        /// </summary>
        public const string ContactStatus = "contact_status";
        /// <summary>
        /// 毫米波传感器,动作状态
        /// </summary>
@@ -858,10 +1023,6 @@
        /// </summary>
        public const string Energy = "energy";
        /// <summary>
        /// 湿度
        /// </summary>
        public const string Humidity = "humidity";
        /// <summary>
        /// 室内温度
        /// </summary>
        public const string IndoorTemp = "indoor_temp";
@@ -874,7 +1035,7 @@
        /// </summary>
        public const string FilterRemain = "filter_remain";
        /// <summary>
        /// 过滤网是否超时警告
        /// 过滤网是否超时警告
        /// </summary>
        public const string FilterTimeout = "filter_timeout";
@@ -1032,6 +1193,10 @@
        /// (红外空调)
        /// </summary>
        public const string AcIr= "ir.ac";
        /// <summary>
        /// 空调
        /// </summary>
        public const string HvacAC = "hvac.ac";
        /// <summary>
        /// 空调spk列表
@@ -1041,6 +1206,7 @@
        {
            var spkList = new List<string>();
            spkList.Add(AcStandard);
            spkList.Add(HvacAC);
            spkList.Add(AcIr);
            return spkList;
        }
@@ -1051,6 +1217,10 @@
        /// (地热)
        /// </summary>
        public const string FloorHeatStandard = "floorHeat.standard";
        /// <summary>
        /// 地暖
        /// </summary>
        public const string HvacFloorHeat = "hvac.floorHeat";
        /// <summary>
        /// 地热spk列表
@@ -1060,6 +1230,7 @@
        {
            var spkList = new List<string>();
            spkList.Add(FloorHeatStandard);
            spkList.Add(HvacFloorHeat);
            return spkList;
        }
        #endregion
@@ -1070,9 +1241,17 @@
        /// </summary>
        public const string AirFreshStandard = "airFresh.standard";
        /// <summary>
        /// 新风
        /// </summary>
        public const string HvacAirFresh = "hvac.airFresh";
        /// <summary>
        /// 新风 ——金茂定制
        /// </summary>
        public const string AirFreshJinmao = "airFresh.jinmao";
        /// <summary>
        /// 新风 ——金茂定制
        /// </summary>
        public const string HvacAirFreshJinmao = "hvac.airFresh.jinmao";
        /// <summary>
        /// 新风spk列表
@@ -1083,6 +1262,8 @@
            var spkList = new List<string>();
            spkList.Add(AirFreshStandard);
            spkList.Add(AirFreshJinmao);
            spkList.Add(HvacAirFresh);
            spkList.Add(HvacAirFreshJinmao);
            return spkList;
        }
        #endregion
@@ -1114,6 +1295,10 @@
        /// (音乐)
        /// </summary>
        public const string MusicStandard = "music.standard";
        /// <summary>
        /// 音乐
        /// </summary>
        public const string AvMusic = "av.music";
        /// <summary>
        /// 音乐spk列表
@@ -1123,11 +1308,13 @@
        {
            var spkList = new List<string>();
            spkList.Add(MusicStandard);
            spkList.Add(AvMusic);
            return spkList;
        }
        #endregion
        #region 传感器
        #region 安防传感器
        /// <summary>
        /// (亮度传感器)
@@ -1164,16 +1351,17 @@
        /// <summary>
        /// 超声波传感器
        /// </summary>
        public const string SensoruUtrasonic = "sensor.ultrasonic";
        public const string SensorUtrasonic = "sensor.ultrasonic";
        /// <summary>
        /// (干接点)
        /// </summary>
        public const string SensorDryContact = "sensor.dryContact";
        public const string SensorDryContact2 = "dryContact.standard";
        /// <summary>
        /// 毫米波传感器
        /// </summary>
        public const string SenesorMegahealth = "sensor.megahealth";
        public const string SenesorMegahealth2 = "sensor.megahealth.zg";
        /// <summary>
        /// 安防传感器spk列表
        /// </summary>
@@ -1181,17 +1369,19 @@
        public static List<string> ArmSensorSpkList()
        {
            var spkList = new List<string>();
            spkList.Add(SensorLight);
            //spkList.Add(SensorLight);
            spkList.Add(SensorPir);
            spkList.Add(SensorDoorWindow);
            spkList.Add(SensorSmoke);
            spkList.Add(SensorWater);
            spkList.Add(SensorGas);
            spkList.Add(SensorShanLan);
            spkList.Add(SensorDuiShe);
            spkList.Add(SensoruUtrasonic);
            //spkList.Add(SensorShanLan);
            //spkList.Add(SensorDuiShe);
            //spkList.Add(SensoruUtrasonic);
            spkList.Add(SensorDryContact);
            spkList.Add(SensorDryContact2);
            spkList.Add(SenesorMegahealth);
            spkList.Add(SenesorMegahealth2);
            return spkList;
        }
        #endregion
@@ -1217,7 +1407,45 @@
        /// 湿度传感器
        /// </summary>
        public const string SensorHumidity = "sensor.humidity";
        /// <summary>
        /// 环境传感器
        /// 环境检测传感器
        /// 特殊类spk
        /// 该spk功能是环境传感器功能的集成
        /// </summary>
        public const string SensorEnvironment = "sensor.environment";
        /// <summary>
        /// 青萍环境传感器
        /// </summary>
        public const string SensorEnvironment2 = "sensor.environment2";
        /// <summary>
        /// 青萍环境传感器
        /// </summary>
        public const string SensorEnvironment3 = "sensor.environment3";
        public const string SensorEnvironmentHailin = "sensor.environment.hailin";
        /// <summary>
        /// 甲醛
        /// </summary>
        public const string SensorHcho = "sensor.hcho";
        /// <summary>
        /// 环境传感器设备spk列表
        /// </summary>
        /// <returns></returns>
        public static List<string> EnvironDeviceSpkList()
        {
            var spkList = new List<string>();
            spkList.Add(SensorTemperature);
            spkList.Add(SensorPm25);
            spkList.Add(SensorCO2);
            spkList.Add(SensorTVOC);
            spkList.Add(SensorHumidity);
            spkList.Add(SensorEnvironment);
            spkList.Add(SensorEnvironment2);
            spkList.Add(SensorEnvironment3);
            spkList.Add(SensorHcho);
            return spkList;
        }
        /// <summary>
        /// 环境传感器spk列表
        /// </summary>
@@ -1230,8 +1458,23 @@
            spkList.Add(SensorCO2);
            spkList.Add(SensorTVOC);
            spkList.Add(SensorHumidity);
            spkList.Add(SensorHcho);
            return spkList;
        }
        /// <summary>
        /// 环境传感器设备列表
        /// </summary>
        /// <returns></returns>
        public static List<string> EvironmentSensorList()
        {
            var spkList = new List<string>();
            spkList.Add(SensorEnvironment);
            spkList.Add(SensorEnvironment2);
            spkList.Add(SensorEnvironment3);
            return spkList;
        }
        #endregion
        #endregion
@@ -1240,6 +1483,10 @@
        /// 家电、插座
        /// </summary>
        public const string ElectricSocket = "electrical.socket";
        /// <summary>
        /// 面板、插座、面板
        /// </summary>
        public const string PanelSocket = "panel.socket";
        /// <summary>
        /// 家电、电视
        /// </summary>
@@ -1256,6 +1503,7 @@
        /// 家电、风扇
        /// </summary>
        public const string ElectricFan = "electrical.fan";
        public const string HvacFan = "hvac.fan";
        /// <summary>
        /// 凉霸
        /// </summary>
@@ -1288,24 +1536,32 @@
        /// 红外风扇
        /// </summary>
        public const string FanIr = "ir.fan";
        /// <summary>
        /// 智能空开
        /// </summary>
        public const string AirSwitch = "electrical.breaker";
        #region 涂鸦
        /// <summary>
        /// 家电、涂鸦空气净化器
        /// </summary>
        public const string ElectricTuyaAirCleaner = "electrical.Q1RsefNf91tIXyyQ";
        public const string ElectricTuyaAirCleaner2 = "hvac.air.tuya_epi345";
        /// <summary>
        /// 家电、涂鸦电风扇
        /// </summary>
        public const string ElectricTuyaFan = "electrical.tyqborgovyzytytz";
        public const string ElectricTuyaFan2 = "hvac.fan.tuya_ef101";
        /// <summary>
        /// 家电、涂鸦扫地机器人
        /// </summary>
        public const string ElectricTuyaWeepRobot = "electrical.ai6HtccKFIw3dxo3";
        public const string ElectricTuyaWeepRobot2 = "electrical.sweep.tuya";
        /// <summary>
        /// 家电、涂鸦水阀
        /// </summary>
        public const string ElectricTuyaWaterValve = "electrical.koiGhMKwLf2ZP81g";
        public const string ElectricTuyaWaterValve2 = "electrical.watervalve.tuya_aw713";
        #endregion
@@ -1317,24 +1573,31 @@
        {
            var spkList = new List<string>();
            spkList.Add(ElectricSocket);
            spkList.Add(PanelSocket);
            spkList.Add(ElectricTV);
            spkList.Add(TvIr);
            spkList.Add(TvXmIr);
            spkList.Add(ElectricFan);
            spkList.Add(HvacFan);
            spkList.Add(FanIr);
            spkList.Add(ClothesHanger);
            spkList.Add(IrLearn);
            spkList.Add(PjtIr);
            spkList.Add(StbIr);
            spkList.Add(ElectricTuyaAirCleaner);
            spkList.Add(ElectricTuyaAirCleaner2);
            spkList.Add(ElectricTuyaFan);
            spkList.Add(ElectricTuyaFan2);
            spkList.Add(ElectricTuyaWeepRobot);
            spkList.Add(ElectricTuyaWeepRobot2);
            spkList.Add(ElectricTuyaWaterValve);
            spkList.Add(ElectricTuyaWaterValve2);
            spkList.Add(AirSwitch);
            return spkList;
        }
        #endregion
        #region 设备类
        /// <summary>
@@ -1363,10 +1626,15 @@
        {
            var spkList = new List<string>();
            spkList.Add(ElectricTuyaAirCleaner);
            spkList.Add(ElectricTuyaAirCleaner2);
            spkList.Add(ElectricTuyaFan);
            spkList.Add(ElectricTuyaFan2);
            spkList.Add(ElectricTuyaWaterValve);
            spkList.Add(ElectricTuyaWaterValve2);
            spkList.Add(ElectricTuyaWeepRobot);
            spkList.Add(ElectricTuyaWeepRobot2);
            spkList.Add(SenesorMegahealth);
            spkList.Add(SenesorMegahealth2);
            return spkList;
        }
        /// <summary>
@@ -1384,6 +1652,10 @@
                    list.Add(ElectricTuyaFan);
                    list.Add(ElectricTuyaWaterValve);
                    list.Add(ElectricTuyaWeepRobot);
                    list.Add(ElectricTuyaAirCleaner2);
                    list.Add(ElectricTuyaFan2);
                    list.Add(ElectricTuyaWaterValve2);
                    list.Add(ElectricTuyaWeepRobot2);
                    break;
                case BrandType.All3tyBrand:
                    list.Add(SenesorMegahealth);//兆观
@@ -1393,6 +1665,12 @@
        }
        #endregion
        /// <summary>
        /// 没有状态显示的功能spk列表
        /// </summary>
        public static List<string> NotStatusSpkList = new List<string> {
            ElectricTV, FanIr, TvIr, TvXmIr, StbIr, PjtIr, IrLearn
        };
        /// <summary>
        /// 第三方品牌列表
@@ -1415,56 +1693,56 @@
    }
    /// <summary>
    /// 功能类别
    /// </summary>
    public static class FunctionCategory
    {
        /// <summary>
        ///(灯)
        /// </summary>
        public const string Light = "light";
        /// <summary>
        /// (窗帘)
        /// </summary>
        public const string Curtain = "curtain";
        /// <summary>
        /// (空调)
        /// </summary>
        public const string AC = "ac";
        /// <summary>
        /// (地热)
        /// </summary>
        public const string FloorHeat = "floorHeat";
        /// <summary>
        /// (新风)
        /// </summary>
        public const string AirFresh = "airFresh";
        /// <summary>
        /// (音乐)
        /// </summary>
        public const string Music = "music";
        /// <summary>
        /// (传感器)
        /// </summary>
        public const string Sensor = "sensor";
        /// <summary>
        /// (干接点)
        /// </summary>
        public const string DryContact = "dryContact";
        /// <summary>
        /// 家电
        /// </summary>
        public const string Electric = "electrical";
        /// <summary>
        /// 红外设备
        /// </summary>
        public const string IR = "ir";
    ///// <summary>
    ///// 功能类别
    ///// </summary>
    //public static class FunctionCategory
    //{
    //    /// <summary>
    //    ///(灯)
    //    /// </summary>
    //    public const string Light = "light";
    //    /// <summary>
    //    /// (窗帘)
    //    /// </summary>
    //    public const string Curtain = "curtain";
    //    /// <summary>
    //    /// (空调)
    //    /// </summary>
    //    public const string AC = "ac";
    //    /// <summary>
    //    /// (地热)
    //    /// </summary>
    //    public const string FloorHeat = "floorHeat";
    //    /// <summary>
    //    /// (新风)
    //    /// </summary>
    //    public const string AirFresh = "airFresh";
    //    /// <summary>
    //    /// (音乐)
    //    /// </summary>
    //    public const string Music = "music";
    //    /// <summary>
    //    /// (传感器)
    //    /// </summary>
    //    public const string Sensor = "sensor";
    //    /// <summary>
    //    /// (干接点)
    //    /// </summary>
    //    public const string DryContact = "dryContact";
    //    /// <summary>
    //    /// 家电
    //    /// </summary>
    //    public const string Electric = "electrical";
    //    /// <summary>
    //    /// 红外设备
    //    /// </summary>
    //    public const string IR = "ir";
    }
    //}
public class VersionInfo