JLChen
2020-12-09 e87985ec1dcb69beedaf9f95e8e7aba14b7c08d6
HDL_ON/Entity/Function/Function.cs
@@ -42,10 +42,10 @@
        /// 产品时间戳:4bytes   以2020年1月1日算出的时间戳0.1s为单位 
        /// 产品类别:01   调光器、02 继电器、03   干接点模块、04   传感器、05 面板
        /// 物模型类型:
      ///     01   开关类:01 开关、02 插座、03
      ///     02   照明: 01 开关、02   调光、03   色温、04   LED
        ///     01   开关类:01 开关、02 插座、03
        ///     02   照明: 01 开关、02   调光、03   色温、04   LED
        ///     03   遮阳: 01   窗帘电机、02 百叶窗、03 开合帘、04 卷帘
      ///     04   恒温器:01 空调、02 地暖、03 毛细空调
        ///     04   恒温器:01 空调、02 地暖、03 毛细空调
        ///     05   新风      
        ///     06   影音      
        ///     07   音乐      
@@ -89,15 +89,16 @@
                }
            }
        }
        /// <summary>
        /// 功能类型
        /// </summary>
        ///// <summary>
        ///// 功能类型
        ///// </summary>
        public FunctionType functionType
        {
            get
            {
                var _functionTypeString = sid.Substring(16, 4);
                return (FunctionType)Enum.ToObject(typeof(FunctionType), Convert.ToInt32(_functionTypeString, 16));
            }
        }
@@ -113,6 +114,15 @@
        /// 该功能添加到到房间列表
        /// </summary>
        public List<string> roomIds = new List<string>();
        /// <summary>
        /// 绑定房间
        /// </summary>
        public void BindRoom(string roomId)
        {
            roomIds.Add(roomId);
            var pm = new DAL.Server.HttpServerRequest();
            pm.BindDeviceToRoom(deviceId, roomId);
        }
        /// <summary>
        /// bus协议数据格式
@@ -123,6 +133,25 @@
        /// 是否收藏
        /// </summary>
        public bool collect = false;
        /// <summary>
        /// 是否在线
        /// </summary>
        public bool online = true;
        /// <summary>
        /// 云端数据创建的时间
        /// </summary>
        public string createTime = "";
        /// <summary>
        /// 云端数据修改的最后时间
        /// </summary>
        public string modifyTime = "";
        /// <summary>
        /// 删除标记
        /// 需要删除数据时,标记为:true
        /// 由云端删除成功之后,返回数据再清除本地数据
        /// </summary>
        public bool DeleteSign = false;
        #endregion
        /// <summary>
        /// 延时
@@ -213,7 +242,7 @@
        /// </summary>
        public int fixedSerialNumber = int.MaxValue;
        public string GetBusId ()
        public string GetBusId()
        {
            string busId = "";
            if (bus_Data != null)
@@ -230,9 +259,9 @@
        public string GetRoomListName()
        {
            string roomNameList = "";
            foreach(var roomId in roomIds)
            foreach (var roomId in roomIds)
            {
                var findRoom = DB_ResidenceData.Rooms.Find(obj => obj.uid == roomId);
                var findRoom = DB_ResidenceData.residenceData.Rooms.Find(obj => obj.roomId == roomId);
                if (findRoom == null)
                {
                    continue;
@@ -263,11 +292,29 @@
        /// <summary>
        /// 保存功能数据
        /// </summary>
        public void SaveFunctionData()
        public void SaveFunctionData(bool upSevser)
        {
            var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this));
            FileUtils.WriteFileByBytes( savePath + this.sid, ssd);
            MainPage.Log($"Save FunctionData {this.functionType} : {this.sid}");
            if (upSevser)
            {
                var pm = new DAL.Server.HttpServerRequest();
                var pack = pm.UpdataDevcieInfo(this);
                if (pack.Code == DAL.Server.StateCode.SUCCESS)
                {
                    var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this));
                    FileUtils.WriteFileByBytes(savePath, ssd);
                    MainPage.Log($"Save FunctionData {this.functionType} : {this.sid}");
                }
                else
                {
                    Utlis.ShowTip(Language.StringByID(StringId.EditFunctionInfoFail) + "Code:" + pack.Code);
                }
            }
            else
            {
                var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this));
                FileUtils.WriteFileByBytes(savePath, ssd);
                MainPage.Log($"Save FunctionData {this.functionType} : {this.sid}");
            }
        }
        /// <summary>
@@ -292,20 +339,17 @@
        /// <summary>
        /// 获取本地控制数据
        /// </summary>
        public GatewayAlinkControlObj GetGatewayAlinkControlData(Dictionary<string, string> commandDictionary)
        public AlinkFunctionStatusObj GetGatewayAlinkControlData(Dictionary<string, string> commandDictionary)
        {
            var sendDataObj = new GatewayAlinkControlObj();
            var sendDataObj = new AlinkFunctionStatusObj();
            sendDataObj.id = Control.Ins.msg_id.ToString();
            sendDataObj.time_stamp = Control.Ins.Get_TimeStamp();
            var acd = new AlinkControlData();
            acd.sid = sid;
#if DEBUG
            acd.sid = "0001016FB925AB02020100010101";
#endif
            var aca = new AlinkControlAttributes();
            foreach(var dic in commandDictionary)
            foreach (var dic in commandDictionary)
            {
                aca.key = dic.Key;
                aca.value = dic.Value;
@@ -320,7 +364,7 @@
        /// 获取Api控制数据
        /// </summary>
        /// <returns></returns>
        public ApiAlinkControlActionObj GetApiControlData(Dictionary<string,string> keyValues)
        public ApiAlinkControlActionObj GetApiControlData(Dictionary<string, string> keyValues)
        {
            ApiAlinkControlActionObj aaao = new ApiAlinkControlActionObj();
            aaao.deviceId = this.deviceId;
@@ -354,18 +398,29 @@
        public string spk = "";
        public List<AlinkControlAttributes> attributes = new List<AlinkControlAttributes>();
        //[Newtonsoft.Json.JsonIgnore]
        public BusData bus = new BusData();
    }
    /// <summary>
    /// 本地控制
    /// A协议控制数据的对象
    /// </summary>
    public class GatewayAlinkControlObj
    public class AlinkFunctionStatusObj
    {
        public List<AlinkControlData> objects = new List<AlinkControlData>();
        public string time_stamp = "";
        public string id = "";
    }
    /// <summary>
    /// 本地状态读取
    /// A协议状态读取格式对象
    /// </summary>
    public class AlinkReadFunctionStatusObj
    {
        public string id = "0";
        public List<Dictionary<string, string>> objects = new List<Dictionary<string, string>>();
        public string time_stamp = "";
    }
    /// <summary>
    /// A协议控制数据
@@ -409,11 +464,11 @@
        /// <summary>
        /// 最大值
        /// </summary>
        public int max;
        public int max=100;
        /// <summary>
        /// 最小值
        /// </summary>
        public int min;
        public int min=0;
        /// <summary>
        /// 数据类型
        /// </summary>
@@ -749,6 +804,7 @@
    public class BusData
    {
        public string addresses = "FFFF";
        [Newtonsoft.Json.JsonIgnore]
        public byte SubnetID
        {
            get
@@ -756,6 +812,7 @@
                return Convert.ToByte(addresses.Substring(0, 2), 16);
            }
        }
        [Newtonsoft.Json.JsonIgnore]
        public byte DeviceID
        {
            get
@@ -766,4 +823,108 @@
        public byte loopId;
    }
    public static class SPK
    {
        /// <summary>
        /// (开关灯)
        /// </summary>
        public const string LightSwitch = "light.switch";
        /// <summary>
        /// (调光灯)
        /// </summary>
        public const string LightDimming = "light.dimming";
        /// <summary>
        /// (RGB灯)
        /// </summary>
        public const string LightRGB = "light.rgb";
        /// <summary>
        /// (RGBW灯)
        /// </summary>
        public const string LightRGBW = "light.rgbw";
        /// <summary>
        /// (CCT灯)
        /// </summary>
        public const string LightCCT = "light.cct";
        /// <summary>
        /// (开关窗帘)
        /// </summary>
        public const string CurtainSwitch = "curtain.switch";
        /// <summary>
        /// (开合帘)
        /// </summary>
        public const string CurtainTrietex = "curtain.trietex";
        /// <summary>
        /// (百叶帘)
        /// </summary>
        public const string CurtainShades = "curtain.shades";
        /// <summary>
        /// (卷帘)
        /// </summary>
        public const string CurtainRoller = "curtain.roller";
        /// <summary>
        /// (空调)
        /// </summary>
        public const string AcStandard = "ac.standard";
        /// <summary>
        /// (地热)
        /// </summary>
        public const string FloorHeatStandard = "floorHeat.standard";
        /// <summary>
        /// (新风)
        /// </summary>
        public const string AirFreshStandard = "airFresh.standard";
        /// <summary>
        /// (音乐)
        /// </summary>
        public const string MusicStandard = "music.standard";
        /// <summary>
        /// (亮度传感器)
        /// </summary>
        public const string SensorLight = "sensor.light";
        /// <summary>
        /// (温度传感器)
        /// </summary>
        public const string SensorTemperature = "sensor.temperature";
        /// <summary>
        /// (红外移动传感器)
        /// </summary>
        public const string SensorPir = "sensor.pir";
        /// <summary>
        /// (门窗传感器)
        /// </summary>
        public const string SensorDoorWindow = "sensor.doorwindow";
        /// <summary>
        /// (PM2.5传感器)
        /// </summary>
        public const string SensorPm25 = "sensor.pm25";
        /// <summary>
        /// co2传感器
        /// </summary>
        public const string SensorCO2 = "sensor.co2";
        /// <summary>
        /// tvoc传感器
        /// </summary>
        public const string SensorTVOC = "sensor.tvoc";
        /// <summary>
        /// 湿度传感器
        /// </summary>
        public const string SensorHumidity = "sensor.humidity";
        /// <summary>
        /// (干接点)
        /// </summary>
        public const string DryContact = "dryContact.standard";
        /// <summary>
        /// 家电、插座
        /// </summary>
        public const string ElectricSocket = "electric.socket ";
        /// <summary>
        /// 家电、电视
        /// </summary>
        public const string ElectricTV = "electric.tv";
        /// <summary>
        /// 家电、风扇
        /// </summary>
        public const string ElectricFan = "electric.fan";
    }
}