陈嘉乐
2020-12-01 e08a444a9d7acea0cf39f50d22d29179f6a59292
HDL_ON/Entity/Function/Function.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using HDL_ON.DriverLayer;
using Shared;
namespace HDL_ON.Entity
@@ -54,7 +55,7 @@
        /// 如:是AC功能:特性:on_off,mode,fan,temperature
        /// attri
        /// </summary>
        public List<Trait> function = new List<Trait>();
        public List<FunctionAttributes> function = new List<FunctionAttributes>();
        /// <summary>
        /// 房间ID列表
@@ -145,27 +146,27 @@
        [Newtonsoft.Json.JsonIgnore]
        public string lastState = "";
        Trait _trait_on_off;
        FunctionAttributes _trait_on_off;
        [Newtonsoft.Json.JsonIgnore]
        public Trait trait_on_off
        public FunctionAttributes trait_on_off
        {
            get
            {
                if (_trait_on_off == null)
                {
                    _trait_on_off = function.Find((obj) => obj.name == "on_off");
                    _trait_on_off = function.Find((obj) => obj.key == "on_off");
                    //找不到属性需要声明一个,防止报错闪退
                    if (_trait_on_off == null)
                    {
                        _trait_on_off = new Trait()
                        _trait_on_off = new FunctionAttributes()
                        {
                            name = "on_off",
                            value_key = new List<string> { "on", "off" },
                            key = "on_off",
                            value = new List<string> { "on", "off" },
                            max = 1,
                            min = 0,
                        };
                    }
                    _trait_on_off.value = "on";
                    _trait_on_off.curValue = "on";
                }
                return _trait_on_off;
            }
@@ -255,24 +256,24 @@
        public AprotocolControlObj GetControlSendData(Dictionary<string, string> commandDictionary)
        {
            var sendDataObj = new AprotocolControlObj();
            sendDataObj.from_oid = "";
            sendDataObj.to_oid = "";
            sendDataObj.time_stamp = "";
            sendDataObj.type = "device_sid";
            sendDataObj.command = "write";
            sendDataObj.id = Control.Ins.msg_id.ToString();
            sendDataObj.time_stamp = Control.Ins.Get_TimeStamp();
            var acoList = new AprotocolControlData();
            acoList.sid = sid;
            var aco = new AprotocolControlAttribute();
            var acd = new AprotocolControlData();
            acd.sid = sid;
#if DEBUG
            acd.sid = "0001016FB925AB02020100010101";
#endif
            var aca = new AprotocolControlAttribute();
            foreach(var dic in commandDictionary)
            {
                aco.name = dic.Key;
                aco.value = dic.Value;
                acoList.function.Add(aco);
                aca.key = dic.Key;
                aca.value = dic.Value;
                acd.status.Add(aca);
            }
            sendDataObj.objects.Add(acoList);
            sendDataObj.objects.Add(acd);
            return sendDataObj;
        }
@@ -285,11 +286,8 @@
    {
        public List<AprotocolControlData> objects = new List<AprotocolControlData>();
        public string from_oid = "";
        public string to_oid = "";
        public string time_stamp = "";
        public string type = "";
        public string command = "";
        public string id = "";
    }
    /// <summary>
    /// A协议控制数据
@@ -298,14 +296,14 @@
    {
        
        public string sid = "";
        public List<AprotocolControlAttribute> function = new List<AprotocolControlAttribute>();
        public List<AprotocolControlAttribute> status = new List<AprotocolControlAttribute>();
    }
    /// <summary>
    /// A协议控制属性对象
    /// </summary>
    public class AprotocolControlAttribute
    {
        public string name;
        public string key;
        public string value;
    }
@@ -313,16 +311,16 @@
    /// 功能属性
    /// 属性字段解析:attri :属性内容,value 属性的值,max 最大值 min 最小值
    /// </summary>
    public class Trait
    public class FunctionAttributes
    {
        /// <summary>
        /// 属性名称
        /// 属性键名
        /// </summary>
        public string name;
        public string key;
        /// <summary>
        /// 属性的值列表
        /// </summary>
        public List<string> value_key = new List<string>();
        public List<string> value = new List<string>();
        /// <summary>
        /// 最大值
        /// </summary>
@@ -340,7 +338,7 @@
        /// <summary>
        /// 当前值
        /// </summary>
        public object value = new object();
        public object curValue = new object();
        //----app自定义
@@ -358,7 +356,7 @@
                    return _uintString;
                }
                var us = "";
                switch (name)
                switch (key)
                {
                    case "temperature":
                    case "set_temperature":
@@ -383,7 +381,7 @@
            get
            {
                string text = "";
                switch (name)
                switch (key)
                {
                    case "on_off":
                        text = Language.StringByID(StringId.OnOff);
@@ -447,7 +445,7 @@
        /// </summary>
        public string GetCurValueText()
        {
            return GetValueText(value.ToString());
            return GetValueText(curValue.ToString());
        }
        /// <summary>
@@ -458,7 +456,7 @@
        {
            string text = "";
            value = value.Replace("{}", "");
            switch (name)
            switch (key)
            {
                case "on_off":
                    text = value == "on" ? Language.StringByID(StringId.On) : Language.StringByID(StringId.OFF);
@@ -469,7 +467,7 @@
                case "percent":
                    if (value == "")
                    {
                        this.value = this.min;
                        this.curValue = this.min;
                        text = this.min.ToString();
                    }
                    else
@@ -514,21 +512,21 @@
                            text = Language.StringByID(StringId.Timer);
                            break;
                        default:
                            if (this.value_key.Contains("cool"))
                            if (this.value.Contains("cool"))
                            {
                                this.value = "cool";
                                this.curValue = "cool";
                                text = Language.StringByID(StringId.Cool);
                            }
                            else if (this.value_key.Contains("day"))
                            else if (this.value.Contains("day"))
                            {
                                this.value = "day";
                                this.curValue = "day";
                                text = Language.StringByID(StringId.Day);
                            }
                            else
                            {
                                foreach (var v in this.value_key)
                                foreach (var v in this.value)
                                {
                                    this.value = v;
                                    this.curValue = v;
                                    text = GetCurValueText();
                                }
                            }
@@ -551,16 +549,16 @@
                            text = Language.StringByID(StringId.Auto);
                            break;
                        default:
                            if (this.value_key.Contains("low"))
                            if (this.value.Contains("low"))
                            {
                                this.value = "low";
                                this.curValue = "low";
                                text = Language.StringByID(StringId.LowWindSpeed);
                            }
                            else
                            {
                                foreach (var v in this.value_key)
                                foreach (var v in this.value)
                                {
                                    this.value = v;
                                    this.curValue = v;
                                    text = GetCurValueText();
                                }
                            }