mac
2024-07-25 3f6685c77beeb12baf840733fb890860f4c26e7c
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>