| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using Newtonsoft.Json.Linq; |
| | | using HDL_ON; |
| | | using Shared; |
| | | |
| | | namespace HDL_ON.Entity |
| | | { |
| | | /// <summary> |
| | | /// 功能属性 |
| | | /// 属性字段解析:attri :属性内容,value 属性的值,max 最大值 min 最小值 |
| | | /// 功能类能满足数据使用要求,子类只是为了方便使用属性 |
| | | /// </summary> |
| | | public class Trait |
| | | { |
| | | /// <summary> |
| | | /// 属性名称 |
| | | /// </summary> |
| | | public string name; |
| | | List<string> _value_key; |
| | | /// <summary> |
| | | /// 属性的值列表 |
| | | /// </summary> |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public List<string> value_key { |
| | | get |
| | | { |
| | | return _value_key; |
| | | } |
| | | set |
| | | { |
| | | _value_key = value; |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 最大值 |
| | | /// </summary> |
| | | public int max; |
| | | /// <summary> |
| | | /// 最小值 |
| | | /// </summary> |
| | | public int min; |
| | | |
| | | /// <summary> |
| | | /// 数据类型 |
| | | /// </summary> |
| | | public string data_type = ""; |
| | | |
| | | /// <summary> |
| | | /// 当前值 |
| | | /// </summary> |
| | | public object value = new object(); |
| | | |
| | | |
| | | //----app自定义 |
| | | /// <summary> |
| | | /// 属性值单位 |
| | | /// </summary> |
| | | string _uintString; |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public string uintString |
| | | { |
| | | get |
| | | { |
| | | if(!string.IsNullOrEmpty( _uintString)) |
| | | { |
| | | return _uintString; |
| | | } |
| | | var us = ""; |
| | | switch(name) |
| | | { |
| | | case "temperature": |
| | | us = "°C"; |
| | | break; |
| | | case "percent": |
| | | case "brightness": |
| | | us = "%"; |
| | | break; |
| | | } |
| | | return us; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 属性名称显示文本 |
| | | /// 中英文显示 |
| | | /// </summary> |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public string name_text |
| | | { |
| | | get |
| | | { |
| | | string text = ""; |
| | | switch (name) |
| | | { |
| | | case "on_off": |
| | | text = Language.StringByID(StringId.OnOff); |
| | | break; |
| | | case "brightness": |
| | | text = Language.StringByID(StringId.Brightness); |
| | | break; |
| | | case "color": |
| | | text = Language.StringByID(StringId.ColorValue); |
| | | break; |
| | | case "mode": |
| | | text = Language.StringByID(StringId.Mode); |
| | | break; |
| | | case "fan": |
| | | text = Language.StringByID(StringId.FanSpeed); |
| | | break; |
| | | case "temperature": |
| | | text = Language.StringByID(StringId.Temp); |
| | | break; |
| | | case "delay": |
| | | text = Language.StringByID(StringId.Delay); |
| | | break; |
| | | case "cct": |
| | | text = "CCT"; |
| | | break; |
| | | //case "fade_time": |
| | | case "percent": |
| | | text = Language.StringByID(StringId.PercentAdjustment); |
| | | break; |
| | | //case "lock": |
| | | //case "ico": |
| | | //case "swing": |
| | | //case "set_ point": |
| | | //case "pm25": |
| | | //case "volume": |
| | | //case "vol_step": |
| | | //case "source": |
| | | //case "treble": |
| | | //case "bass": |
| | | //case "playlist": |
| | | //case "song_name": |
| | | //case "current_status": |
| | | //case "enable": |
| | | //case "lux": |
| | | //case "adjust_value": |
| | | //case "range": |
| | | //case "humidity": |
| | | //case "type": |
| | | //case "state": |
| | | //case "sensitivity": |
| | | //case "pm25value": |
| | | } |
| | | return text; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取当前属性的显示文本 |
| | | /// 中英文显示 |
| | | /// </summary> |
| | | public string GetCurValueText() |
| | | { |
| | | return GetValueText(value.ToString()); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取指定属性的显示文本 |
| | | /// 中英文显示 |
| | | /// </summary> |
| | | public string GetValueText(string value) |
| | | { |
| | | string text = ""; |
| | | value = value.Replace("{}", ""); |
| | | switch (name) |
| | | { |
| | | case "on_off": |
| | | text = value == "on" ? Language.StringByID(StringId.On) : Language.StringByID(StringId.OFF); |
| | | break; |
| | | case "temperature": |
| | | case "brightness": |
| | | case "percent": |
| | | if (text == "") |
| | | { |
| | | this.value = this.min; |
| | | text = this.min.ToString(); |
| | | } |
| | | else |
| | | { |
| | | text = value; |
| | | } |
| | | break; |
| | | //case "color": |
| | | case "mode": |
| | | switch (value) |
| | | { |
| | | //----空调 |
| | | case "auto": |
| | | text = Language.StringByID(StringId.Auto); |
| | | break; |
| | | case "cool": |
| | | text = Language.StringByID(StringId.Cool); |
| | | break; |
| | | case "heat": |
| | | text = Language.StringByID(StringId.Heat); |
| | | break; |
| | | case "dry": |
| | | text = Language.StringByID(StringId.Dry); |
| | | break; |
| | | case "fan": |
| | | text = Language.StringByID(StringId.AirSupply); |
| | | break; |
| | | //-----地热 |
| | | case "day": |
| | | text = Language.StringByID(StringId.Day); |
| | | break; |
| | | case "night": |
| | | text = Language.StringByID(StringId.Night); |
| | | break; |
| | | case "away": |
| | | text = Language.StringByID(StringId.Away); |
| | | break; |
| | | case "normal": |
| | | text = Language.StringByID(StringId.Normal); |
| | | break; |
| | | case "timer": |
| | | text = Language.StringByID(StringId.Timer); |
| | | break; |
| | | default: |
| | | if (this.value_key.Contains("cool")) |
| | | { |
| | | this.value = "cool"; |
| | | text = Language.StringByID(StringId.Cool); |
| | | } |
| | | else if (this.value_key.Contains("day")) |
| | | { |
| | | this.value = "day"; |
| | | text = Language.StringByID(StringId.Day); |
| | | } |
| | | else |
| | | { |
| | | foreach (var v in this.value_key) |
| | | { |
| | | this.value = v; |
| | | text = GetCurValueText(); |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | break; |
| | | case "fan": |
| | | switch (value) |
| | | { |
| | | case "high": |
| | | text = Language.StringByID(StringId.HighWindSpeed); |
| | | break; |
| | | case "medium": |
| | | text = Language.StringByID(StringId.MiddleWindSpeed); |
| | | break; |
| | | case "low": |
| | | text = Language.StringByID(StringId.LowWindSpeed); |
| | | break; |
| | | case "auto": |
| | | text = Language.StringByID(StringId.Auto); |
| | | break; |
| | | default: |
| | | if (this.value_key.Contains("low")) |
| | | { |
| | | this.value = "low"; |
| | | text = Language.StringByID(StringId.LowWindSpeed); |
| | | } |
| | | else |
| | | { |
| | | foreach (var v in this.value_key) |
| | | { |
| | | this.value = v; |
| | | text = GetCurValueText(); |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | break; |
| | | //case "delay": |
| | | //case "cct": |
| | | //case "fade_time": |
| | | //case "lock": |
| | | //case "ico": |
| | | //case "swing": |
| | | //case "set_ point": |
| | | //case "pm25": |
| | | //case "volume": |
| | | //case "vol_step": |
| | | //case "source": |
| | | //case "treble": |
| | | //case "bass": |
| | | //case "playlist": |
| | | //case "song_name": |
| | | //case "current_status": |
| | | //case "enable": |
| | | //case "lux": |
| | | //case "adjust_value": |
| | | //case "range": |
| | | //case "humidity": |
| | | //case "type": |
| | | //case "state": |
| | | //case "sensitivity": |
| | | //case "pm25value": |
| | | case "high": |
| | | text = Language.StringByID(StringId.HighWindSpeed); |
| | | break; |
| | | case "medium": |
| | | text = Language.StringByID(StringId.MiddleWindSpeed); |
| | | break; |
| | | case "low": |
| | | text = Language.StringByID(StringId.LowWindSpeed); |
| | | break; |
| | | case "auto": |
| | | text = Language.StringByID(StringId.Auto); |
| | | break; |
| | | } |
| | | return text; |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 设备功能oid |
| | | /// </summary> |
| | | public class FunctionOid |
| | | { |
| | | public string oid; |
| | | public string name; |
| | | public string machine_id; |
| | | public string net_id; |
| | | public string dev_id; |
| | | public string channels; |
| | | } |
| | | |
| | | |
| | | public class Function |
| | | { |
| | | public Function() |
| | |
| | | /// </summary> |
| | | public DateTime refreshTime = DateTime.MinValue; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 功能属性 |
| | | /// 属性字段解析:attri :属性内容,value 属性的值,max 最大值 min 最小值 |
| | | /// </summary> |
| | | public class Trait |
| | | { |
| | | /// <summary> |
| | | /// 属性名称 |
| | | /// </summary> |
| | | public string name; |
| | | List<string> _value_key; |
| | | /// <summary> |
| | | /// 属性的值列表 |
| | | /// </summary> |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public List<string> value_key |
| | | { |
| | | get |
| | | { |
| | | return _value_key; |
| | | } |
| | | set |
| | | { |
| | | _value_key = value; |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 最大值 |
| | | /// </summary> |
| | | public int max; |
| | | /// <summary> |
| | | /// 最小值 |
| | | /// </summary> |
| | | public int min; |
| | | |
| | | /// <summary> |
| | | /// 数据类型 |
| | | /// </summary> |
| | | public string data_type = ""; |
| | | |
| | | /// <summary> |
| | | /// 当前值 |
| | | /// </summary> |
| | | public object value = new object(); |
| | | |
| | | |
| | | //----app自定义 |
| | | /// <summary> |
| | | /// 属性值单位 |
| | | /// </summary> |
| | | string _uintString; |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public string uintString |
| | | { |
| | | get |
| | | { |
| | | if (!string.IsNullOrEmpty(_uintString)) |
| | | { |
| | | return _uintString; |
| | | } |
| | | var us = ""; |
| | | switch (name) |
| | | { |
| | | case "temperature": |
| | | us = "°C"; |
| | | break; |
| | | case "percent": |
| | | case "brightness": |
| | | us = "%"; |
| | | break; |
| | | } |
| | | return us; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 属性名称显示文本 |
| | | /// 中英文显示 |
| | | /// </summary> |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public string name_text |
| | | { |
| | | get |
| | | { |
| | | string text = ""; |
| | | switch (name) |
| | | { |
| | | case "on_off": |
| | | text = Language.StringByID(StringId.OnOff); |
| | | break; |
| | | case "brightness": |
| | | text = Language.StringByID(StringId.Brightness); |
| | | break; |
| | | case "color": |
| | | text = Language.StringByID(StringId.ColorValue); |
| | | break; |
| | | case "mode": |
| | | text = Language.StringByID(StringId.Mode); |
| | | break; |
| | | case "fan": |
| | | text = Language.StringByID(StringId.FanSpeed); |
| | | break; |
| | | case "temperature": |
| | | text = Language.StringByID(StringId.Temp); |
| | | break; |
| | | case "delay": |
| | | text = Language.StringByID(StringId.Delay); |
| | | break; |
| | | case "cct": |
| | | text = "CCT"; |
| | | break; |
| | | //case "fade_time": |
| | | case "percent": |
| | | text = Language.StringByID(StringId.PercentAdjustment); |
| | | break; |
| | | //case "lock": |
| | | //case "ico": |
| | | //case "swing": |
| | | //case "set_ point": |
| | | //case "pm25": |
| | | //case "volume": |
| | | //case "vol_step": |
| | | //case "source": |
| | | //case "treble": |
| | | //case "bass": |
| | | //case "playlist": |
| | | //case "song_name": |
| | | //case "current_status": |
| | | //case "enable": |
| | | //case "lux": |
| | | //case "adjust_value": |
| | | //case "range": |
| | | //case "humidity": |
| | | //case "type": |
| | | //case "state": |
| | | //case "sensitivity": |
| | | //case "pm25value": |
| | | } |
| | | return text; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取当前属性的显示文本 |
| | | /// 中英文显示 |
| | | /// </summary> |
| | | public string GetCurValueText() |
| | | { |
| | | return GetValueText(value.ToString()); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取指定属性的显示文本 |
| | | /// 中英文显示 |
| | | /// </summary> |
| | | public string GetValueText(string value) |
| | | { |
| | | string text = ""; |
| | | value = value.Replace("{}", ""); |
| | | switch (name) |
| | | { |
| | | case "on_off": |
| | | text = value == "on" ? Language.StringByID(StringId.On) : Language.StringByID(StringId.OFF); |
| | | break; |
| | | case "temperature": |
| | | case "brightness": |
| | | case "percent": |
| | | if (value == "") |
| | | { |
| | | this.value = this.min; |
| | | text = this.min.ToString(); |
| | | } |
| | | else |
| | | { |
| | | text = value; |
| | | } |
| | | break; |
| | | //case "color": |
| | | case "mode": |
| | | switch (value) |
| | | { |
| | | //----空调 |
| | | case "auto": |
| | | text = Language.StringByID(StringId.Auto); |
| | | break; |
| | | case "cool": |
| | | text = Language.StringByID(StringId.Cool); |
| | | break; |
| | | case "heat": |
| | | text = Language.StringByID(StringId.Heat); |
| | | break; |
| | | case "dry": |
| | | text = Language.StringByID(StringId.Dry); |
| | | break; |
| | | case "fan": |
| | | text = Language.StringByID(StringId.AirSupply); |
| | | break; |
| | | //-----地热 |
| | | case "day": |
| | | text = Language.StringByID(StringId.Day); |
| | | break; |
| | | case "night": |
| | | text = Language.StringByID(StringId.Night); |
| | | break; |
| | | case "away": |
| | | text = Language.StringByID(StringId.Away); |
| | | break; |
| | | case "normal": |
| | | text = Language.StringByID(StringId.Normal); |
| | | break; |
| | | case "timer": |
| | | text = Language.StringByID(StringId.Timer); |
| | | break; |
| | | default: |
| | | if (this.value_key.Contains("cool")) |
| | | { |
| | | this.value = "cool"; |
| | | text = Language.StringByID(StringId.Cool); |
| | | } |
| | | else if (this.value_key.Contains("day")) |
| | | { |
| | | this.value = "day"; |
| | | text = Language.StringByID(StringId.Day); |
| | | } |
| | | else |
| | | { |
| | | foreach (var v in this.value_key) |
| | | { |
| | | this.value = v; |
| | | text = GetCurValueText(); |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | break; |
| | | case "fan": |
| | | switch (value) |
| | | { |
| | | case "high": |
| | | text = Language.StringByID(StringId.HighWindSpeed); |
| | | break; |
| | | case "medium": |
| | | text = Language.StringByID(StringId.MiddleWindSpeed); |
| | | break; |
| | | case "low": |
| | | text = Language.StringByID(StringId.LowWindSpeed); |
| | | break; |
| | | case "auto": |
| | | text = Language.StringByID(StringId.Auto); |
| | | break; |
| | | default: |
| | | if (this.value_key.Contains("low")) |
| | | { |
| | | this.value = "low"; |
| | | text = Language.StringByID(StringId.LowWindSpeed); |
| | | } |
| | | else |
| | | { |
| | | foreach (var v in this.value_key) |
| | | { |
| | | this.value = v; |
| | | text = GetCurValueText(); |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | break; |
| | | //case "delay": |
| | | //case "cct": |
| | | //case "fade_time": |
| | | //case "lock": |
| | | //case "ico": |
| | | //case "swing": |
| | | //case "set_ point": |
| | | //case "pm25": |
| | | //case "volume": |
| | | //case "vol_step": |
| | | //case "source": |
| | | //case "treble": |
| | | //case "bass": |
| | | //case "playlist": |
| | | //case "song_name": |
| | | //case "current_status": |
| | | //case "enable": |
| | | //case "lux": |
| | | //case "adjust_value": |
| | | //case "range": |
| | | //case "humidity": |
| | | //case "type": |
| | | //case "state": |
| | | //case "sensitivity": |
| | | //case "pm25value": |
| | | case "high": |
| | | text = Language.StringByID(StringId.HighWindSpeed); |
| | | break; |
| | | case "medium": |
| | | text = Language.StringByID(StringId.MiddleWindSpeed); |
| | | break; |
| | | case "low": |
| | | text = Language.StringByID(StringId.LowWindSpeed); |
| | | break; |
| | | case "auto": |
| | | text = Language.StringByID(StringId.Auto); |
| | | break; |
| | | } |
| | | return text; |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 设备功能oid |
| | | /// </summary> |
| | | public class FunctionOid |
| | | { |
| | | public string oid; |
| | | public string name; |
| | | public string machine_id; |
| | | public string net_id; |
| | | public string dev_id; |
| | | public string channels; |
| | | } |
| | | |
| | | } |