wei
2021-08-20 41995c4cd30ca1c5a814ea0af6f70d3b86368137
HDL_ON/Entity/Function/Function.cs
@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using HDL_ON.Common;
using HDL_ON.DAL.Server;
@@ -126,7 +126,6 @@
        /// <returns>修改结果</returns>
        public bool SetAttrState(string key, object value)
        {
            //var attrState = status.Find((s) => s.key == key.ToString());
            var attr = attributes.Find((s) => s.key == key);
            if (attr == null)
            {
@@ -173,7 +172,7 @@
        #endregion
        #region base info
        #region base info
        public string sid = "0301011234567801012301230123";
        /// <summary>
        /// 备注
@@ -282,6 +281,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>
        /// 使用次数
@@ -508,7 +522,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";
                            }
@@ -517,6 +549,10 @@
                        {
                            double vv = 16;
                            Double.TryParse(attr.curValue.ToString(), out vv);
                            if (vv == 0)
                            {
                                vv = 26;
                            }
                            sFunc.status.Add(new SceneFunctionStatus() { key = attr.key, value = Convert.ToInt32(vv).ToString() });
                        }
                        else
@@ -639,7 +675,7 @@
        public List<AttributesStatus> status = new List<AttributesStatus>();
    }
    /// <summary>
    /// a协议控制动作数据
    /// 功能属性状态
    /// </summary>
    public class AttributesStatus
    {
@@ -691,6 +727,7 @@
        /// </summary>
        public object curValue = new object();
    }
    /// <summary>
    /// 功能属性键名列表
    /// </summary>
@@ -717,6 +754,10 @@
        /// 模式
        /// </summary>
        public const string Mode = "mode";
        /// <summary>
        /// 扫风
        /// </summary>
        public const string Swing = "swing";
        /// <summary>
        /// 工作模式
        /// 地热/地冷/功率地热/功率地冷
@@ -748,6 +789,7 @@
        /// 空调、地热//app自加
        /// </summary>
        public const string TempType = "temperature_type";
        /// <summary>
        /// 时间标记
        /// 地热//app自加
@@ -777,6 +819,10 @@
        /// 状态,传感器
        /// </summary>
        public const string Status = "status";
        /// <summary>
        /// 毫米波传感器,动作状态
        /// </summary>
        public const string ActionStatus = "action_state";
        /// <summary>
        /// 电量状态
        /// </summary>
@@ -855,6 +901,10 @@
        /// </summary>
        public const string Humidity = "humidity";
        /// <summary>
        /// 温度
        /// </summary>
        public const string Temperature = "temperature";
        /// <summary>
        /// 室内温度
        /// </summary>
        public const string IndoorTemp = "indoor_temp";
@@ -877,6 +927,14 @@
        /// </summary>
        public const string TuyaWaterTime = "countdown_1";
        #endregion
        /// <summary>
        /// 功率
        /// </summary>
        public const string Power = "power";
        /// <summary>
        /// 总电量
        /// </summary>
        public const string TotalElectricity = "total_electricity";
    }
@@ -934,6 +992,8 @@
    public static class SPK
    {
        #region 灯光
        /// <summary>
@@ -1075,6 +1135,11 @@
        /// 能源模块
        /// </summary>
        public const string EnergyStandard = "energy.standard";
        /// <summary>
        /// 能源-电能
        /// </summary>
        public const string ElectricEnergy = "energy.electric";
        /// <summary>
        /// 能源spk列表
        /// </summary>
@@ -1082,7 +1147,7 @@
        public static List<string> EnergySpkList()
        {
            var spkList = new List<string>();
            spkList.Add(EnergyStandard);
            spkList.Add(ElectricEnergy);
            return spkList;
        }
        #endregion
@@ -1142,12 +1207,15 @@
        /// <summary>
        /// 超声波传感器
        /// </summary>
        public const string SensoruUtrasonic = "sensor.ultrasonic";
        public const string SensorUtrasonic = "sensor.ultrasonic";
        /// <summary>
        /// (干接点)
        /// </summary>
        public const string SensorDryContact = "sensor.dryContact";
        /// <summary>
        /// 毫米波传感器
        /// </summary>
        public const string SenesorMegahealth = "sensor.megahealth";
        /// <summary>
        /// 安防传感器spk列表
        /// </summary>
@@ -1155,16 +1223,17 @@
        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(SensorDryContact);
            //spkList.Add(SensorShanLan);
            //spkList.Add(SensorDuiShe);
            //spkList.Add(SensoruUtrasonic);
            //spkList.Add(SensorDryContact);
            spkList.Add(SenesorMegahealth);
            return spkList;
        }
        #endregion
@@ -1190,6 +1259,21 @@
        /// 湿度传感器
        /// </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";
        /// <summary>
        /// 环境传感器spk列表
@@ -1203,8 +1287,25 @@
            spkList.Add(SensorCO2);
            spkList.Add(SensorTVOC);
            spkList.Add(SensorHumidity);
            spkList.Add(SensorEnvironment);
            spkList.Add(SensorEnvironment2);
            spkList.Add(SensorEnvironment3);
            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
@@ -1221,6 +1322,22 @@
        /// 红外、电视
        /// </summary>
        public const string TvIr = "ir.tv";
        /// <summary>
        /// 红外、小米电视
        /// </summary>
        public const string TvXmIr = "ir.tvxm";
        /// <summary>
        /// 家电、风扇
        /// </summary>
        public const string ElectricFan = "electrical.fan";
        /// <summary>
        /// 凉霸
        /// </summary>
        public const string ClothesHanger = "electrical.racks";
        /// <summary>
        /// 红外遥控器
        /// </summary>
        public const string IrLearn = "ir.learn";
        /// <summary>
        /// 红外投影仪
        /// </summary>
@@ -1240,23 +1357,11 @@
        /// <summary>
        /// 红外热水器
        /// </summary>
        public const string HeaterIr = " ir.water_heater";
        public const string HeaterIr = " ir.water_heater";
        /// <summary>
        /// 红外风扇
        /// </summary>
        public const string FanIr = "ir.fan";
        /// <summary>
        /// 家电、风扇
        /// </summary>
        public const string ElectricFan = "electrical.fan";
        /// <summary>
        /// 凉霸
        /// </summary>
        public const string ClothesHanger = "electrical.racks";
        /// <summary>
        /// 红外遥控器
        /// </summary>
        public const string IrLearn = "ir.learn";
        #region 涂鸦
        /// <summary>
@@ -1288,9 +1393,13 @@
            spkList.Add(ElectricSocket);
            spkList.Add(ElectricTV);
            spkList.Add(TvIr);
            spkList.Add(TvXmIr);
            spkList.Add(ElectricFan);
            spkList.Add(FanIr);
            spkList.Add(ClothesHanger);
            spkList.Add(IrLearn);
            spkList.Add(PjtIr);
            spkList.Add(StbIr);
            spkList.Add(ElectricTuyaAirCleaner);
            spkList.Add(ElectricTuyaFan);
            spkList.Add(ElectricTuyaWeepRobot);
@@ -1319,7 +1428,21 @@
        }
        #endregion
        #region 第三方spk列表
        /// <summary>
        /// 获取所有第三方品牌功能的spk
        /// </summary>
        /// <returns></returns>
        public static List<string> GetAll3tySPK()
        {
            var spkList = new List<string>();
            spkList.Add(ElectricTuyaAirCleaner);
            spkList.Add(ElectricTuyaFan);
            spkList.Add(ElectricTuyaWaterValve);
            spkList.Add(ElectricTuyaWeepRobot);
            spkList.Add(SenesorMegahealth);
            return spkList;
        }
        /// <summary>
        /// 获取第三方设备spk
        /// </summary>
@@ -1330,17 +1453,26 @@
            switch (brandType)
            {
                case BrandType.All3tyBrand:
                case BrandType.Tuya:
                    list.Add(ElectricTuyaAirCleaner);
                    list.Add(ElectricTuyaFan);
                    list.Add(ElectricTuyaWaterValve);
                    list.Add(ElectricTuyaWeepRobot);
                    break;
                case BrandType.All3tyBrand:
                    list.Add(SenesorMegahealth);//兆观
                    break;
            }
            return list;
        }
        #endregion
        /// <summary>
        /// 没有状态显示的功能spk列表
        /// </summary>
        public static List<string> NotStatusSpkList = new List<string> {
            ElectricTV, FanIr, TvIr, TvXmIr, StbIr, PjtIr, IrLearn
        };
        /// <summary>
        /// 第三方品牌列表
@@ -1350,6 +1482,10 @@
            All = 0,
            Hdl = 1,
            Tuya = 2,
            /// <summary>
            /// 兆观
            /// </summary>
            Megahealth = 3,
            All3tyBrand = 999,