| | |
| | | |
| | | namespace HDL_ON.UI.UI2.Intelligence.Automation |
| | | { |
| | | public class InpOrOutLogicMethod |
| | | public class InpOrOutLogicMethod |
| | | { |
| | | /// <summary> |
| | | /// 输入条件处理方法 |
| | | /// </summary> |
| | | /// <param name="thisView">当前界面</param> |
| | | /// <param name="viewLayout">上下滑动控件</param> |
| | | public static void InputCondition(FrameLayout thisView, VerticalScrolViewLayout viewLayout) |
| | | { |
| | | /// <summary> |
| | | /// 输入条件处理方法 |
| | | /// </summary> |
| | | /// <param name="thisView">当前界面</param> |
| | | /// <param name="viewLayout">上下滑动控件</param> |
| | | public static void InputCondition(FrameLayout thisView, VerticalScrolViewLayout viewLayout) |
| | | for (int i = 0; i < Logic.currlogic.input.Count; i++) |
| | | { |
| | | Input inputCondition = Logic.currlogic.input[i]; |
| | | ///各种条件的View |
| | | LogicView.AddOutputInputView inputView = new LogicView.AddOutputInputView(); |
| | | inputView.FLayoutView(viewLayout); |
| | | //添加没有延时,隐藏延时按钮; |
| | | inputView.btnDelay.Visible = false; |
| | | ///记录条件类型 |
| | | inputView.btnClick.Name = inputCondition.condition_type; |
| | | ///记录条件索引 |
| | | inputView.btnClick.Tag = inputCondition; |
| | | ///条件状态数组 |
| | | List<Dictionary<string, string>> dicList = inputCondition.condition; |
| | | //显示条件各种类型状态 |
| | | switch (inputCondition.condition_type) |
| | | { |
| | | for (int i = 0; i < Logic.currlogic.input.Count; i++) |
| | | case "1": |
| | | { |
| | | Input inputCondition = Logic.currlogic.input[i]; |
| | | ///各种条件的View |
| | | LogicView.AddOutputInputView inputView = new LogicView.AddOutputInputView(); |
| | | inputView.FLayoutView(viewLayout); |
| | | //添加没有延时,隐藏延时按钮; |
| | | inputView.btnDelay.Visible = false; |
| | | ///记录条件类型 |
| | | inputView.btnClick.Name = inputCondition.condition_type; |
| | | ///记录条件索引 |
| | | inputView.btnClick.Tag = inputCondition; |
| | | ///条件状态数组 |
| | | List<Dictionary<string, string>> dicList = inputCondition.condition; |
| | | //显示条件各种类型状态 |
| | | switch (inputCondition.condition_type) |
| | | inputView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png"; |
| | | foreach (var dic in dicList) |
| | | { |
| | | string keyValue = dic["key"]; |
| | | string value = dic["value"]; |
| | | if (keyValue == "timepoint") |
| | | { |
| | | case "1": |
| | | { |
| | | inputView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png"; |
| | | foreach (var dic in dicList) |
| | | { |
| | | string keyValue = dic["key"]; |
| | | string value = dic["value"]; |
| | | if (keyValue == "timepoint") |
| | | { |
| | | inputView.btnText.Text = Language.StringByID(StringId.hour) + ": " + value; |
| | | } |
| | | else |
| | | { |
| | | string strtext = ""; |
| | | string statetext = ""; |
| | | switch (keyValue) |
| | | { |
| | | case "before_sunrise": |
| | | { |
| | | strtext = Language.StringByID(StringId.sunrise); |
| | | statetext = Language.StringByID(StringId.advanced); |
| | | |
| | | } |
| | | break; |
| | | case "before_sunset": |
| | | { |
| | | |
| | | strtext = Language.StringByID(StringId.sunset); |
| | | statetext = Language.StringByID(StringId.advanced); |
| | | |
| | | } |
| | | break; |
| | | case "before_noon": |
| | | { |
| | | strtext = Language.StringByID(StringId.at); |
| | | statetext = Language.StringByID(StringId.advanced); |
| | | } |
| | | break; |
| | | case "after_sunrise": |
| | | { |
| | | strtext = Language.StringByID(StringId.sunrise); |
| | | statetext = Language.StringByID(StringId.delayLogic); |
| | | } |
| | | break; |
| | | case "after_sunset": |
| | | { |
| | | strtext = Language.StringByID(StringId.sunset); |
| | | statetext = Language.StringByID(StringId.delayLogic); |
| | | } |
| | | break; |
| | | case "after_noon": |
| | | { |
| | | strtext = Language.StringByID(StringId.at); |
| | | statetext = Language.StringByID(StringId.delayLogic); |
| | | } |
| | | break; |
| | | } |
| | | |
| | | if (value != "0") |
| | | { |
| | | if (value == "30") |
| | | { |
| | | statetext += value + Language.StringByID(StringId.s); |
| | | } |
| | | else |
| | | { |
| | | statetext += value + Language.StringByID(StringId.minute); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | statetext = ""; |
| | | } |
| | | |
| | | inputView.btnText.Text = strtext; |
| | | inputView.btnState.Text = statetext; |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case "2": |
| | | { |
| | | inputView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png"; |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | inputView.btnText.Text = Language.StringByID(StringId.timeHorizon) + ": " + value; |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case "3": |
| | | { |
| | | //用sid找到设备; |
| | | var device = LogicMethod.CurrLogicMethod.GetDevice(inputCondition.sid); |
| | | //用设备的functionType类型找到对应图标; |
| | | inputView.btnIcon.UnSelectedImagePath = LogicMethod.CurrLogicMethod.GetIconPath(device.spk); |
| | | //显示设备名称 |
| | | inputView.btnText.Text = device.name; |
| | | //改变设备名称显示控件宽度 |
| | | inputView.btnText.Width = Application.GetRealWidth(80); |
| | | //区别不同设备,显示不同设备状态 |
| | | switch (device.spk) |
| | | { |
| | | //开关灯光 |
| | | case SPK.AirSwitch: |
| | | case SPK.LightDimming: |
| | | case SPK.LightRGB: |
| | | case SPK.LightRGBW: |
| | | case SPK.LightCCT: |
| | | case SPK.LightSwitch: |
| | | //窗帘 |
| | | case SPK.CurtainSwitch: |
| | | case SPK.CurtainRoller: |
| | | case SPK.CurtainTrietex: |
| | | //空调 |
| | | case SPK.AcStandard: |
| | | case SPK.HvacAC: |
| | | //地热 |
| | | case SPK.HvacFloorHeat: |
| | | case SPK.FloorHeatStandard: |
| | | //新风 |
| | | case SPK.AirFreshStandard: |
| | | case SPK.HvacAirFresh: |
| | | //插座 |
| | | case SPK.PanelSocket: |
| | | case SPK.ElectricSocket: |
| | | {//开关灯 |
| | | foreach (var dic in dicList) |
| | | { |
| | | |
| | | string value = dic["value"]; |
| | | if (value == "on") |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.onLogic); |
| | | |
| | | } |
| | | else |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.offLogic); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | //传感器 |
| | | case SPK.SensorSmoke: |
| | | case SPK.SensorGas: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | if (value == "alarm") |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.xieluo); |
| | | |
| | | } |
| | | else |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.wuxieluo); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.SensorWater: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | if (value == "alarm") |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.luoshui); |
| | | |
| | | } |
| | | else |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.wuluoshui); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.SensorDryContact: |
| | | case SPK.SensorDryContact2: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | |
| | | string value = dic["value"]; |
| | | if (value == "on") |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.onLogic); |
| | | |
| | | } |
| | | else |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.offLogic); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.SensorShanLan: |
| | | case SPK.SensorDuiShe: |
| | | case SPK.SensorPir: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | |
| | | string value = dic["value"]; |
| | | if (value == "true") |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.youren); |
| | | |
| | | } |
| | | else |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.wuren); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.SensorDoorWindow: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | |
| | | string value = dic["value"]; |
| | | if (value == "open") |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.kaiqi); |
| | | |
| | | } |
| | | else |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.bihe); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.SensorUtrasonic: |
| | | { |
| | | string str = ""; |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | switch (dic["key"]) |
| | | { |
| | | case "status": |
| | | case "people_status": |
| | | { |
| | | if (value == "true") |
| | | { |
| | | str += Language.StringByID(StringId.youren) + ";"; |
| | | } |
| | | else |
| | | { |
| | | str += Language.StringByID(StringId.wuren) + ";"; |
| | | } |
| | | |
| | | |
| | | } |
| | | break; |
| | | case "dismantle": |
| | | { |
| | | if (value == "true") |
| | | { |
| | | str += Language.StringByID(StringId.zaixian); |
| | | } |
| | | else |
| | | { |
| | | str += Language.StringByID(StringId.buzaixian); |
| | | } |
| | | } |
| | | break; |
| | | |
| | | } |
| | | |
| | | } |
| | | inputView.btnState.Text = str; |
| | | } |
| | | break; |
| | | case SPK.SenesorMegahealth: |
| | | case SPK.SenesorMegahealth2: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | if (value == "fall") |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.diedao); |
| | | } |
| | | else |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.wuren); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.SensorEnvironment: |
| | | case SPK.SensorEnvironment2: |
| | | case SPK.SensorEnvironment3: |
| | | { |
| | | string strtext = ""; |
| | | foreach (var dic in dicList) |
| | | { |
| | | string key = dic["key"]; |
| | | string value = dic["value"]; |
| | | string comparator = dic["comparator"]; |
| | | switch (key) |
| | | { |
| | | |
| | | case "temperature": |
| | | { |
| | | if (comparator == ">") |
| | | { |
| | | strtext = ">" + value + "℃"; |
| | | } |
| | | else if (comparator == "<") |
| | | { |
| | | strtext = "<" + value + "℃"; |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case "humidity": |
| | | { |
| | | if (comparator == ">") |
| | | { |
| | | strtext = ">" + value + "%"; |
| | | } |
| | | else if (comparator == "<") |
| | | { |
| | | strtext = "<" + value + "%"; |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case "co2": |
| | | { |
| | | strtext = Language.StringByID(StringId.co2) + new PublicInterface { }.GetString("co2", value); |
| | | } |
| | | break; |
| | | case "pm25": |
| | | { |
| | | strtext = Language.StringByID(StringId.pm25) + new PublicInterface { }.GetString("pm25", value); |
| | | } |
| | | break; |
| | | case "tvoc": |
| | | { |
| | | strtext = Language.StringByID(StringId.tvoc) + new PublicInterface { }.GetString("tvoc", value); |
| | | } |
| | | break; |
| | | } |
| | | inputView.btnState.Text = strtext; |
| | | } |
| | | |
| | | |
| | | } |
| | | break; |
| | | case SPK.SensorTemperature: |
| | | { |
| | | |
| | | string str = new InpOrOutLogicMethod { }.GetText(dicList, "temperature"); |
| | | inputView.btnState.Text = str; |
| | | } |
| | | break; |
| | | case SPK.SensorHumidity: |
| | | { |
| | | string str = new InpOrOutLogicMethod { }.GetText(dicList, "humidity"); |
| | | inputView.btnState.Text = str; |
| | | |
| | | } |
| | | break; |
| | | case SPK.SensorCO2: |
| | | { |
| | | string str = new InpOrOutLogicMethod { }.GetText(dicList, "co2"); |
| | | inputView.btnState.Text = str; |
| | | |
| | | } |
| | | break; |
| | | case SPK.SensorPm25: |
| | | { |
| | | string str = new InpOrOutLogicMethod { }.GetText(dicList, "pm25"); |
| | | inputView.btnState.Text = str; |
| | | |
| | | } |
| | | break; |
| | | case SPK.SensorTVOC: |
| | | { |
| | | string str = new InpOrOutLogicMethod { }.GetText(dicList, "tvoc"); |
| | | inputView.btnState.Text = str; |
| | | |
| | | } |
| | | break; |
| | | case SPK.SensorHcho: |
| | | { |
| | | string str = new InpOrOutLogicMethod { }.GetText(dicList, "hcho"); |
| | | inputView.btnState.Text = str; |
| | | |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | break; |
| | | case "6": |
| | | { |
| | | //inputView.btnIcon.UnSelectedImagePath = "LogicIcon/changesinoutdoor.png"; |
| | | inputView.btnIcon.UnSelectedImagePath = "LogicIcon/changesinoutdoor.png"; |
| | | string strtext = ""; |
| | | string strvalue = ""; |
| | | foreach (var dic in dicList) |
| | | { |
| | | string key = dic["key"]; |
| | | string comparator = dic["comparator"]; |
| | | string value = dic["value"]; |
| | | |
| | | switch (key) |
| | | { |
| | | case "temperature": |
| | | { |
| | | //云端天气条件 城市温度触发 |
| | | strvalue = value + "℃"; |
| | | if (comparator == ">") |
| | | { |
| | | strtext = Language.StringByID(StringId.wendugaoyu); |
| | | } |
| | | else if (comparator == "<") |
| | | { |
| | | strtext = Language.StringByID(StringId.wendudiyu); |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case "humidity": |
| | | { |
| | | //云端天气条件 城市湿度触发 |
| | | strvalue = value + "%"; |
| | | if (comparator == ">") |
| | | { |
| | | strtext = Language.StringByID(StringId.shidugaoyu); |
| | | } |
| | | else if (comparator == "<") |
| | | { |
| | | strtext = Language.StringByID(StringId.shidudiyu); |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case "pm25": |
| | | { |
| | | //云端天气条件 城市pm2.5触发 |
| | | strtext = Language.StringByID(StringId.PM25); |
| | | strvalue = new PublicInterface { }.GetString("pm25", value); |
| | | } |
| | | break; |
| | | case "weather": |
| | | { |
| | | //云端天气条件 城市天气触发 |
| | | strtext = Language.StringByID(StringId.tianqibianhua); |
| | | switch (value) |
| | | { |
| | | case "Sunny": |
| | | { |
| | | strtext = Language.StringByID(StringId.clearday); |
| | | |
| | | } |
| | | break; |
| | | case "Cloudy": |
| | | { |
| | | |
| | | strtext = Language.StringByID(StringId.cloudy); |
| | | |
| | | } |
| | | break; |
| | | case "Rain": |
| | | { |
| | | strtext = Language.StringByID(StringId.rain); |
| | | } |
| | | break; |
| | | |
| | | } |
| | | } |
| | | break; |
| | | case "airquality": |
| | | { |
| | | //云端天气条件 城市空气质量 |
| | | strtext = Language.StringByID(StringId.kongqizhiliang); |
| | | switch (value) |
| | | { |
| | | case "Excellent": |
| | | { |
| | | strtext = Language.StringByID(StringId.kongqiyou); |
| | | |
| | | } |
| | | break; |
| | | case "Good": |
| | | { |
| | | |
| | | strtext = Language.StringByID(StringId.kongqiliang); |
| | | |
| | | } |
| | | break; |
| | | case "Poor": |
| | | { |
| | | strtext = Language.StringByID(StringId.kongqicha); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | |
| | | |
| | | } |
| | | inputView.btnText.Text = strtext; |
| | | inputView.btnState.Text = strvalue; |
| | | } |
| | | break; |
| | | case "8": |
| | | { |
| | | inputView.btnIcon.UnSelectedImagePath = "LogicIcon/location.png"; |
| | | foreach (var dic in dicList) |
| | | { |
| | | string strtext = ""; |
| | | string value = dic["value"]; |
| | | switch (value) |
| | | { |
| | | case "arrive": |
| | | { |
| | | strtext = Language.StringByID(StringId.daoda); |
| | | } |
| | | break; |
| | | case "leave": |
| | | { |
| | | strtext = Language.StringByID(StringId.likai); |
| | | } |
| | | break; |
| | | } |
| | | inputView.btnText.TextID = StringId.likiadaoda; |
| | | inputView.btnState.Text = strtext; |
| | | } |
| | | } |
| | | break; |
| | | case "10": |
| | | { |
| | | //用sid找到场景; |
| | | var scene = LogicMethod.CurrLogicMethod.GetSecne(inputCondition.sid); |
| | | inputView.btnIcon.UnSelectedImagePath = "LogicIcon/scene.png"; |
| | | inputView.btnNextIcon.Visible = false; |
| | | inputView.btnClick.Visible = false; |
| | | //显示场景名称 |
| | | inputView.btnText.Text = scene.name; |
| | | } |
| | | break; |
| | | |
| | | } |
| | | //再次编辑条件状态点击事件 |
| | | inputView.btnClick.MouseUpEventHandler += (sen, e) => |
| | | { |
| | | Button button = (Button)sen; |
| | | //当前编辑的条件 |
| | | Input ckcliInput = inputView.btnClick.Tag as Input; |
| | | //找到当前编辑的索引 |
| | | int indexVulae = 0; |
| | | for (int index = 0; index < Logic.currlogic.input.Count; index++) |
| | | { |
| | | Input input = Logic.currlogic.input[index]; |
| | | if (input.sid == ckcliInput.sid) |
| | | { |
| | | if (button.Name == "3") |
| | | { |
| | | //有些设备比较特殊(例如:海林传感器还是要判断属性值,温湿度属性还要判断比较关系,才能确认是否已经存在该条件,其他设备条件直接用sid判断即可) |
| | | //加一级判断是为兼容特殊设备 |
| | | if (new ConditionDeviceFunList { }.IsContainsAll(ckcliInput.condition, input.condition)) |
| | | { |
| | | //用户可能删除数据,使列表索引发生改变; |
| | | //通过唯一sid重新查找到索引且更新索引值 |
| | | indexVulae = index; |
| | | break; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //用户可能删除数据,使列表索引发生改变; |
| | | //通过唯一sid重新查找到索引且更新索引值 |
| | | indexVulae = index; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | //标记编辑状态 |
| | | bool edit = true; |
| | | switch (button.Name) |
| | | { |
| | | case "1": |
| | | { |
| | | bool is_bool = false; |
| | | Input _input = Logic.currlogic.input[indexVulae]; |
| | | if (_input.condition_type == "1") |
| | | { |
| | | var dicLists = _input.condition; |
| | | foreach (var dic in dicLists) |
| | | { |
| | | string keyValue = dic["key"]; |
| | | if (keyValue != "timepoint") |
| | | { |
| | | //通过键值查找键值是否是 |
| | | //(日出/日落/正午) |
| | | is_bool = true; |
| | | break; |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | if (is_bool) |
| | | { |
| | | //跳转到(日出/日落/正午)界面 |
| | | SpeciaTime speciaTime = new SpeciaTime(); |
| | | MainPage.BasePageView.AddChidren(speciaTime); |
| | | speciaTime.Show(edit, indexVulae); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | } |
| | | else |
| | | { |
| | | //跳转到(时间点)界面 |
| | | FrameLayout fLayout = new FrameLayout |
| | | { |
| | | BackgroundColor = CSS.CSS_Color.viewTrans60lucence, |
| | | }; |
| | | thisView.AddChidren(fLayout); |
| | | TimeTpye timeTpye = new TimeTpye(); |
| | | timeTpye.TimePoint(fLayout, edit, indexVulae); |
| | | } |
| | | } |
| | | break; |
| | | case "2": |
| | | { |
| | | FrameLayout fLayout = new FrameLayout |
| | | { |
| | | BackgroundColor = CSS.CSS_Color.viewTrans60lucence, |
| | | }; |
| | | thisView.AddChidren(fLayout); |
| | | TimeTpye timeTpye = new TimeTpye(); |
| | | timeTpye.TimeHorizon(fLayout, edit, indexVulae); |
| | | } |
| | | break; |
| | | case "3": |
| | | { |
| | | //用sid找到设备; |
| | | var device = LogicMethod.CurrLogicMethod.GetDevice(inputCondition.sid); |
| | | if (device.spk == SPK.SensorEnvironment |
| | | || device.spk == SPK.SensorEnvironment2 |
| | | || device.spk == SPK.SensorEnvironment3 |
| | | ) |
| | | { |
| | | //这个设备比较特殊 |
| | | ConditionDeviceFunList conditionDeviceFunList = new ConditionDeviceFunList(); |
| | | ///当前的索引值数据对象 |
| | | Input inputedit = Logic.currlogic.input[indexVulae]; |
| | | ///状态值 |
| | | string stateValue = ""; |
| | | foreach (var dic in inputedit.condition) |
| | | { |
| | | string key = dic["key"]; |
| | | string comparator = dic["comparator"]; |
| | | stateValue = dic["value"]; |
| | | switch (key) |
| | | { |
| | | |
| | | case "temperature": |
| | | { |
| | | int titleInt = 0; |
| | | if (comparator == ">") |
| | | { |
| | | titleInt = StringId.wendugaoyu; |
| | | } |
| | | else if (comparator == "<") |
| | | { |
| | | titleInt = StringId.wendudiyu; |
| | | } |
| | | conditionDeviceFunList.InputBoxAction(device, titleInt, indexVulae, true, stateValue); |
| | | } |
| | | break; |
| | | case "humidity": |
| | | { |
| | | int titleInt = 0; |
| | | if (comparator == ">") |
| | | { |
| | | titleInt = StringId.shidugaoyu; |
| | | } |
| | | else if (comparator == "<") |
| | | { |
| | | titleInt = StringId.shidudiyu; |
| | | } |
| | | conditionDeviceFunList.InputBoxAction(device, titleInt, indexVulae, true, stateValue); |
| | | } |
| | | break; |
| | | case "co2": |
| | | { |
| | | conditionDeviceFunList.PmCo2TvocAction(thisView, device, "co2", StringId.co2, indexVulae, true, stateValue); |
| | | } |
| | | break; |
| | | case "pm25": |
| | | { |
| | | conditionDeviceFunList.PmCo2TvocAction(thisView, device, "pm25", StringId.pm25, indexVulae, true, stateValue); |
| | | } |
| | | break; |
| | | case "tvoc": |
| | | { |
| | | conditionDeviceFunList.PmCo2TvocAction(thisView, device, "tvoc", StringId.tvoc, indexVulae, true, stateValue); |
| | | } |
| | | break; |
| | | case "hcho": |
| | | { |
| | | conditionDeviceFunList.PmCo2TvocAction(thisView, device, "hcho", StringId.Formaldehyde, indexVulae, true, stateValue); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | |
| | | } |
| | | else if (device.spk == SPK.SensorTemperature) |
| | | { |
| | | |
| | | new InpOrOutLogicMethod().SensorView(thisView, device, "temperature", indexVulae); |
| | | |
| | | } |
| | | else if (device.spk == SPK.SensorHumidity) |
| | | { |
| | | |
| | | new InpOrOutLogicMethod().SensorView(thisView, device, "humidity", indexVulae); |
| | | |
| | | } |
| | | else if (device.spk == SPK.SensorCO2) |
| | | { |
| | | |
| | | new InpOrOutLogicMethod().SensorView(thisView, device, "co2", indexVulae); |
| | | |
| | | } |
| | | else if (device.spk == SPK.SensorPm25) |
| | | { |
| | | |
| | | new InpOrOutLogicMethod().SensorView(thisView, device, "pm25", indexVulae); |
| | | |
| | | } |
| | | else if (device.spk == SPK.SensorTVOC) |
| | | { |
| | | |
| | | new InpOrOutLogicMethod().SensorView(thisView, device, "tvoc", indexVulae); |
| | | |
| | | } |
| | | else if (device.spk == SPK.SensorHcho) |
| | | { |
| | | |
| | | new InpOrOutLogicMethod().SensorView(thisView, device, "hcho", indexVulae); |
| | | |
| | | } |
| | | else |
| | | { |
| | | ConditionDeviceFunList deviceFunList = new ConditionDeviceFunList(); |
| | | MainPage.BasePageView.AddChidren(deviceFunList); |
| | | deviceFunList.Show(device, indexVulae, edit); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | } |
| | | } |
| | | break; |
| | | case "6": |
| | | { |
| | | ///当前的索引值数据对象 |
| | | Input inputedit = Logic.currlogic.input[indexVulae]; |
| | | ///状态值 |
| | | string stateValue = ""; |
| | | ///状态值文本 |
| | | int intValue = -1; |
| | | foreach (var dic in inputedit.condition) |
| | | { |
| | | string key = dic["key"]; |
| | | string comparator = dic["comparator"]; |
| | | stateValue = dic["value"]; |
| | | switch (key) |
| | | { |
| | | case "temperature": |
| | | { |
| | | if (comparator == ">") |
| | | { |
| | | intValue = StringId.wendugaoyu; |
| | | } |
| | | else if (comparator == "<") |
| | | { |
| | | intValue = StringId.wendudiyu; |
| | | |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case "humidity": |
| | | { |
| | | |
| | | if (comparator == ">") |
| | | { |
| | | intValue = StringId.shidugaoyu; |
| | | } |
| | | else if (comparator == "<") |
| | | { |
| | | intValue = StringId.shidudiyu; |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case "pm25": |
| | | { |
| | | intValue = StringId.PM25; |
| | | } |
| | | break; |
| | | case "weather": |
| | | { |
| | | intValue = StringId.tianqibianhua; |
| | | } |
| | | break; |
| | | case "airquality": |
| | | { |
| | | intValue = StringId.kongqizhiliang; |
| | | } |
| | | break; |
| | | |
| | | } |
| | | } |
| | | OutdoorEnvironment outdoorEnvironment = new OutdoorEnvironment(); |
| | | if (intValue == StringId.tianqibianhua) |
| | | { |
| | | //城市天气(晴天,下雨) |
| | | WeatherCondition weatherCondition = new WeatherCondition(); |
| | | MainPage.BasePageView.AddChidren(weatherCondition); |
| | | weatherCondition.Show(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | } |
| | | else if (intValue == StringId.PM25) |
| | | { |
| | | //城市天气(pm2.5) |
| | | outdoorEnvironment.PmAction(thisView, stateValue); |
| | | } |
| | | else if (intValue == StringId.kongqizhiliang) |
| | | { |
| | | //城市天气(空气质量) |
| | | AirQuality airQuality = new AirQuality(); |
| | | MainPage.BasePageView.AddChidren(airQuality); |
| | | airQuality.Show(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | } |
| | | else |
| | | { |
| | | //城市天气(温湿度) |
| | | outdoorEnvironment.InputBoxAction(intValue, stateValue); |
| | | } |
| | | } |
| | | break; |
| | | case "8": |
| | | { |
| | | AddInputType addInputType = new AddInputType(); |
| | | addInputType.LocationView(thisView, true); |
| | | } |
| | | break; |
| | | |
| | | } |
| | | }; |
| | | ///删除控件 |
| | | inputView.btnDel.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | Logic.currlogic.input.Remove(inputCondition); |
| | | inputView.frameLayout.RemoveFromParent(); |
| | | }; |
| | | } |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 输出条件处理方法 |
| | | /// </summary> |
| | | /// <param name="thisView">当前界面</param> |
| | | /// <param name="viewLayout">上下滑动控件</param> |
| | | public static void OutputTarget(FrameLayout thisView, VerticalScrolViewLayout viewLayout) |
| | | { |
| | | |
| | | for (int i = 0; i < Logic.currlogic.output.Count; i++) |
| | | { |
| | | Output outputTarget = Logic.currlogic.output[i]; |
| | | ///各种条件的View |
| | | LogicView.AddOutputInputView targetView = new LogicView.AddOutputInputView(); |
| | | targetView.FLayoutView(viewLayout); |
| | | ///记录条件类型 |
| | | targetView.btnClick.Name = outputTarget.target_type; |
| | | ///记录条件索引 |
| | | targetView.btnClick.Tag = outputTarget.sid; |
| | | ///条件状态数组 |
| | | List<Dictionary<string, string>> dicList = outputTarget.status; |
| | | //显示状态值 |
| | | string stateStr = ""; |
| | | //显示输出条件各种类型状态 |
| | | switch (outputTarget.target_type) |
| | | { |
| | | case "1": |
| | | { |
| | | //用sid找到设备; |
| | | var device = LogicMethod.CurrLogicMethod.GetDevice(outputTarget.sid); |
| | | //用设备的functionType类型找到对应图标; |
| | | targetView.btnIcon.UnSelectedImagePath = LogicMethod.CurrLogicMethod.GetIconPath(device.spk); |
| | | //显示设备名称 |
| | | targetView.btnText.Text = device.name; |
| | | //改变设备名称显示控件宽度 |
| | | targetView.btnText.Width = Application.GetRealWidth(80); |
| | | //区别不同设备,显示不同设备状态 |
| | | switch (device.spk) |
| | | { |
| | | case SPK.AirSwitch: |
| | | case SPK.LightSwitch: |
| | | //插座 |
| | | case SPK.PanelSocket: |
| | | case SPK.ElectricSocket: |
| | | {//开关 |
| | | |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | if (value == "on") |
| | | { |
| | | stateStr = Language.StringByID(StringId.onLogic); |
| | | |
| | | } |
| | | else |
| | | { |
| | | stateStr = Language.StringByID(StringId.offLogic); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.LightRGB: |
| | | case SPK.LightRGBW: |
| | | case SPK.LightCCT: |
| | | case SPK.LightDimming: |
| | | { |
| | | string on_off = GetKeyValue("on_off", dicList); |
| | | string brightness = GetKeyValue("brightness", dicList); |
| | | if (on_off == "on" && brightness != "") |
| | | { |
| | | stateStr = Language.StringByID(StringId.onLogic) + brightness + "%"; |
| | | } |
| | | else if (on_off == "on") |
| | | { |
| | | stateStr = Language.StringByID(StringId.onLogic); |
| | | } |
| | | else if (on_off == "off") |
| | | { |
| | | stateStr = Language.StringByID(StringId.offLogic); |
| | | } |
| | | else if (brightness != "") |
| | | { |
| | | stateStr = brightness + "%"; |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case SPK.CurtainSwitch: |
| | | case SPK.CurtainTrietex: |
| | | case SPK.CurtainRoller: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | switch (value) |
| | | { |
| | | case "on": |
| | | { |
| | | stateStr = Language.StringByID(StringId.onLogic); |
| | | } |
| | | break; |
| | | case "off": |
| | | { |
| | | stateStr = Language.StringByID(StringId.offLogic); |
| | | } |
| | | break; |
| | | case "stop": |
| | | { |
| | | stateStr = Language.StringByID(StringId.stop); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.AcStandard: |
| | | case SPK.HvacAC: |
| | | { |
| | | string on_off = GetKeyValue("on_off", dicList); |
| | | string set_temp = GetKeyValue("set_temp", dicList); |
| | | string mode = GetKeyValue("mode", dicList); |
| | | string fan = GetKeyValue("fan", dicList); |
| | | if (on_off != "") |
| | | { |
| | | switch (on_off) |
| | | { |
| | | case "on": |
| | | { |
| | | stateStr = Language.StringByID(StringId.onLogic) + ","; |
| | | } |
| | | break; |
| | | case "off": |
| | | { |
| | | stateStr = Language.StringByID(StringId.offLogic) + ","; |
| | | } |
| | | break; |
| | | |
| | | } |
| | | } |
| | | |
| | | if (set_temp != "") |
| | | { |
| | | |
| | | stateStr += set_temp + "℃,"; |
| | | } |
| | | |
| | | if (mode != "") |
| | | { |
| | | |
| | | switch (mode) |
| | | { |
| | | case "cool": |
| | | { |
| | | stateStr += Language.StringByID(StringId.coolLogic) + ","; |
| | | } |
| | | break; |
| | | case "heat": |
| | | { |
| | | stateStr += Language.StringByID(StringId.heatingLogic) + ","; |
| | | } |
| | | break; |
| | | case "auto": |
| | | { |
| | | stateStr += Language.StringByID(StringId.autoLogic) + ","; |
| | | } |
| | | break; |
| | | case "dry": |
| | | { |
| | | stateStr += Language.StringByID(StringId.dehumidifyLogic) + ","; |
| | | } |
| | | break; |
| | | } |
| | | |
| | | } |
| | | |
| | | if (fan != "") |
| | | { |
| | | |
| | | switch (fan) |
| | | { |
| | | case "high": |
| | | { |
| | | stateStr += Language.StringByID(StringId.HighWindSpeed) + ","; |
| | | } |
| | | break; |
| | | case "medium": |
| | | { |
| | | stateStr += Language.StringByID(StringId.MiddleWindSpeed) + ","; |
| | | } |
| | | break; |
| | | case "low": |
| | | { |
| | | stateStr += Language.StringByID(StringId.LowWindSpeed) + ","; |
| | | } |
| | | break; |
| | | case "auto": |
| | | { |
| | | stateStr += Language.StringByID(StringId.Auto) + ","; |
| | | } |
| | | break; |
| | | } |
| | | |
| | | } |
| | | if (on_off != "" && on_off == "off") |
| | | { |
| | | stateStr = Language.StringByID(StringId.offLogic); |
| | | } |
| | | else |
| | | { |
| | | stateStr = stateStr.TrimEnd(','); |
| | | |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case SPK.FloorHeatStandard:case SPK.HvacFloorHeat: |
| | | { |
| | | string on_off = GetKeyValue("on_off", dicList); |
| | | string set_temp = GetKeyValue("set_temp", dicList); |
| | | string mode = GetKeyValue("mode", dicList); |
| | | if (on_off != "") |
| | | { |
| | | switch (on_off) |
| | | { |
| | | case "on": |
| | | { |
| | | stateStr = Language.StringByID(StringId.onLogic) + ","; |
| | | } |
| | | break; |
| | | case "off": |
| | | { |
| | | stateStr = Language.StringByID(StringId.offLogic) + ","; |
| | | } |
| | | break; |
| | | |
| | | } |
| | | } |
| | | if (set_temp != "") |
| | | { |
| | | |
| | | stateStr += set_temp + "℃,"; |
| | | } |
| | | if (mode != "") |
| | | { |
| | | |
| | | switch (mode) |
| | | { |
| | | case "day": |
| | | { |
| | | stateStr += Language.StringByID(StringId.dayMode) + ","; |
| | | } |
| | | break; |
| | | case "night": |
| | | { |
| | | stateStr += Language.StringByID(StringId.nightMode) + ","; |
| | | } |
| | | break; |
| | | |
| | | case "away": |
| | | { |
| | | stateStr += Language.StringByID(StringId.leaveMode) + ","; |
| | | } |
| | | break; |
| | | case "normal": |
| | | { |
| | | stateStr += Language.StringByID(StringId.ordinaryMode) + ","; |
| | | } |
| | | break; |
| | | case "timer": |
| | | { |
| | | stateStr += Language.StringByID(StringId.timeMode) + ","; |
| | | } |
| | | break; |
| | | } |
| | | |
| | | } |
| | | if (on_off != "" && on_off == "off") |
| | | { |
| | | stateStr = Language.StringByID(StringId.offLogic); |
| | | } |
| | | else |
| | | { |
| | | stateStr = stateStr.TrimEnd(','); |
| | | |
| | | } |
| | | } |
| | | break; |
| | | case SPK.AirFreshStandard: |
| | | case SPK.HvacAirFresh: |
| | | { |
| | | string on_off = GetKeyValue("on_off", dicList); |
| | | string fan = GetKeyValue("fan", dicList); |
| | | if (on_off != "") |
| | | { |
| | | switch (on_off) |
| | | { |
| | | case "on": |
| | | { |
| | | stateStr = Language.StringByID(StringId.onLogic) + ","; |
| | | } |
| | | break; |
| | | case "off": |
| | | { |
| | | stateStr = Language.StringByID(StringId.offLogic) + ","; |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | if (fan != "") |
| | | { |
| | | |
| | | switch (fan) |
| | | { |
| | | case "high": |
| | | { |
| | | stateStr += Language.StringByID(StringId.HighWindSpeed) + ","; |
| | | } |
| | | break; |
| | | case "medium": |
| | | { |
| | | stateStr += Language.StringByID(StringId.MiddleWindSpeed) + ","; |
| | | } |
| | | break; |
| | | case "low": |
| | | { |
| | | stateStr += Language.StringByID(StringId.LowWindSpeed) + ","; |
| | | } |
| | | break; |
| | | case "auto": |
| | | { |
| | | stateStr += Language.StringByID(StringId.Auto) + ","; |
| | | } |
| | | break; |
| | | } |
| | | |
| | | } |
| | | if (on_off != "" && on_off == "off") |
| | | { |
| | | stateStr = Language.StringByID(StringId.offLogic); |
| | | } |
| | | else |
| | | { |
| | | stateStr = stateStr.TrimEnd(','); |
| | | |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | break; |
| | | case "2": |
| | | { |
| | | //用sid找到场景; |
| | | var scene = LogicMethod.CurrLogicMethod.GetSecne(outputTarget.sid); |
| | | targetView.btnIcon.UnSelectedImagePath = "LogicIcon/scene.png"; |
| | | targetView.btnNextIcon.Visible = false; |
| | | //显示场景名称 |
| | | stateStr = scene.name; |
| | | } |
| | | break; |
| | | case "3": |
| | | { |
| | | //用sid找到安防; |
| | | var security = LogicMethod.CurrLogicMethod.GetSecurity(outputTarget.sid); |
| | | targetView.btnIcon.UnSelectedImagePath = "LogicIcon/security.png"; |
| | | targetView.btnDelay.Visible = false; |
| | | //显示安防名称 |
| | | targetView.btnText.Text = security.name; |
| | | string value = GetKeyValue("security", dicList); |
| | | if (value == "enable") |
| | | { |
| | | stateStr = Language.StringByID(StringId.bufang); |
| | | |
| | | } |
| | | else |
| | | { |
| | | stateStr = Language.StringByID(StringId.chefang); |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case "4": |
| | | { |
| | | targetView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png"; |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | stateStr = value; |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | |
| | | if (outputTarget.target_type == "1" || outputTarget.target_type == "3") |
| | | { |
| | | targetView.btnState.Text = new InpOrOutLogicMethod { }.GetTimeText(outputTarget.delay) + stateStr; |
| | | inputView.btnText.Text = Language.StringByID(StringId.hour) + ": " + value; |
| | | } |
| | | else |
| | | { |
| | | targetView.btnText.Text = new InpOrOutLogicMethod { }.GetTimeText(outputTarget.delay) + stateStr; |
| | | string strtext = ""; |
| | | string statetext = ""; |
| | | switch (keyValue) |
| | | { |
| | | case "before_sunrise": |
| | | { |
| | | strtext = Language.StringByID(StringId.sunrise); |
| | | statetext = Language.StringByID(StringId.advanced); |
| | | |
| | | } |
| | | break; |
| | | case "before_sunset": |
| | | { |
| | | |
| | | strtext = Language.StringByID(StringId.sunset); |
| | | statetext = Language.StringByID(StringId.advanced); |
| | | |
| | | } |
| | | break; |
| | | case "before_noon": |
| | | { |
| | | strtext = Language.StringByID(StringId.at); |
| | | statetext = Language.StringByID(StringId.advanced); |
| | | } |
| | | break; |
| | | case "after_sunrise": |
| | | { |
| | | strtext = Language.StringByID(StringId.sunrise); |
| | | statetext = Language.StringByID(StringId.delayLogic); |
| | | } |
| | | break; |
| | | case "after_sunset": |
| | | { |
| | | strtext = Language.StringByID(StringId.sunset); |
| | | statetext = Language.StringByID(StringId.delayLogic); |
| | | } |
| | | break; |
| | | case "after_noon": |
| | | { |
| | | strtext = Language.StringByID(StringId.at); |
| | | statetext = Language.StringByID(StringId.delayLogic); |
| | | } |
| | | break; |
| | | } |
| | | |
| | | if (value != "0") |
| | | { |
| | | if (value == "30") |
| | | { |
| | | statetext += value + Language.StringByID(StringId.s); |
| | | } |
| | | else |
| | | { |
| | | statetext += value + Language.StringByID(StringId.minute); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | statetext = ""; |
| | | } |
| | | |
| | | inputView.btnText.Text = strtext; |
| | | inputView.btnState.Text = statetext; |
| | | } |
| | | //再次编辑条件状态点击事件 |
| | | targetView.btnClick.MouseUpEventHandler += (sen, e) => |
| | | { |
| | | Button button = (Button)sen; |
| | | //找到当前编辑的索引 |
| | | int indexVulae = 0; |
| | | for (int index = 0; index < Logic.currlogic.output.Count; index++) |
| | | { |
| | | Output target = Logic.currlogic.output[index]; |
| | | if (target.sid == targetView.btnClick.Tag.ToString()) |
| | | { |
| | | //用户可能删除数据,使列表索引发生改变; |
| | | //通过唯一sid重新查找到索引且更新索引值 |
| | | indexVulae = index; |
| | | break; |
| | | } |
| | | } |
| | | //标记编辑状态 |
| | | bool edit = true; |
| | | switch (button.Name) |
| | | { |
| | | case "1": |
| | | { |
| | | //用sid找到设备; |
| | | var device = LogicMethod.CurrLogicMethod.GetDevice(outputTarget.sid); |
| | | TargetDeviceFunList deviceFunList = new TargetDeviceFunList(); |
| | | MainPage.BasePageView.AddChidren(deviceFunList); |
| | | deviceFunList.Show(device, indexVulae, edit); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | } |
| | | break; |
| | | case "3": |
| | | { |
| | | Security security = new Security(); |
| | | security.SecurityMethod(thisView, "", edit, indexVulae); |
| | | } |
| | | break; |
| | | case "4": |
| | | { |
| | | FrameLayout fLayout = new FrameLayout |
| | | { |
| | | BackgroundColor = CSS.CSS_Color.viewTrans60lucence, |
| | | }; |
| | | thisView.AddChidren(fLayout); |
| | | AddTarget addTarget = new AddTarget(); |
| | | addTarget.Delayed(fLayout, edit, indexVulae); |
| | | |
| | | |
| | | } |
| | | break; |
| | | } |
| | | }; |
| | | //延时点击事件 |
| | | targetView.btnDelay.MouseUpEventHandler += (sen, e) => |
| | | { |
| | | |
| | | InpOrOutLogicMethod inpOrOutLogicMethod = new InpOrOutLogicMethod(); |
| | | inpOrOutLogicMethod.Delayed(thisView, outputTarget, (value) => |
| | | { |
| | | outputTarget.delay = value.ToString(); |
| | | if (outputTarget.target_type == "1") |
| | | { |
| | | targetView.btnState.Text = new InpOrOutLogicMethod { }.GetTimeText(outputTarget.delay) + stateStr; |
| | | } |
| | | else |
| | | { |
| | | targetView.btnText.Text = new InpOrOutLogicMethod { }.GetTimeText(outputTarget.delay) + stateStr; |
| | | } |
| | | }); |
| | | |
| | | }; |
| | | ///删除控件 |
| | | targetView.btnDel.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | Logic.currlogic.output.Remove(outputTarget); |
| | | targetView.frameLayout.RemoveFromParent(); |
| | | }; |
| | | } |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 显示编辑之前的设备状态 |
| | | /// </summary> |
| | | /// <param name="device">编辑设备</param> |
| | | /// <param name="button1">显示Btn</param> |
| | | /// <param name="button2">显示Btn</param> |
| | | /// <param name="button3">显示Btn</param> |
| | | /// <param name="button4">显示Btn</param> |
| | | public static void EditState(Entity.Function device, List<Dictionary<string, string>> dicList, Button button1, Button button2, Button button3, Button button4) |
| | | { |
| | | switch (device.spk) |
| | | break; |
| | | case "2": |
| | | { |
| | | //插座 |
| | | case SPK.PanelSocket: |
| | | case SPK.ElectricSocket: |
| | | inputView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png"; |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | inputView.btnText.Text = Language.StringByID(StringId.timeHorizon) + ": " + value; |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case "3": |
| | | { |
| | | //用sid找到设备; |
| | | var device = LogicMethod.CurrLogicMethod.GetDevice(inputCondition.sid); |
| | | //用设备的functionType类型找到对应图标; |
| | | inputView.btnIcon.UnSelectedImagePath = LogicMethod.CurrLogicMethod.GetIconPath(device.spk); |
| | | //显示设备名称 |
| | | inputView.btnText.Text = device.name; |
| | | //改变设备名称显示控件宽度 |
| | | inputView.btnText.Width = Application.GetRealWidth(80); |
| | | //区别不同设备,显示不同设备状态 |
| | | switch (device.spk) |
| | | { |
| | | //开关灯光 |
| | | case SPK.AirSwitch: |
| | | case SPK.LightSwitch: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | if (value == "on") |
| | | { |
| | | button1.Text = Language.StringByID(StringId.onLogic); |
| | | } |
| | | else |
| | | { |
| | | button1.Text = Language.StringByID(StringId.offLogic); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.LightDimming: |
| | | case SPK.LightRGB: |
| | | case SPK.LightRGBW: |
| | | case SPK.LightCCT: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | switch (dic["key"]) |
| | | { |
| | | case "on_off": |
| | | { |
| | | if (value == "on") |
| | | { |
| | | button1.Text = Language.StringByID(StringId.onLogic); |
| | | } |
| | | else |
| | | { |
| | | button1.Text = Language.StringByID(StringId.offLogic); |
| | | } |
| | | } |
| | | break; |
| | | case "brightness": |
| | | { |
| | | if (button2 == null) |
| | | { |
| | | //怕调试软件乱上东西导致抛异常 |
| | | break; |
| | | } |
| | | button2.Text = value + "%"; |
| | | } |
| | | break; |
| | | } |
| | | |
| | | } |
| | | } |
| | | break; |
| | | case SPK.LightSwitch: |
| | | //窗帘 |
| | | case SPK.CurtainSwitch: |
| | | case SPK.CurtainTrietex: |
| | | case SPK.CurtainRoller: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | switch (value) |
| | | { |
| | | case "on": |
| | | { |
| | | button1.Text = Language.StringByID(StringId.onLogic); |
| | | } |
| | | break; |
| | | case "off": |
| | | { |
| | | button1.Text = Language.StringByID(StringId.offLogic); |
| | | } |
| | | break; |
| | | case "stop": |
| | | { |
| | | button1.Text = Language.StringByID(StringId.stop); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.CurtainTrietex: |
| | | //空调 |
| | | case SPK.AcStandard: |
| | | case SPK.HvacAC: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | switch (dic["key"]) |
| | | { |
| | | case "on_off": |
| | | { |
| | | switch (value) |
| | | { |
| | | case "on": |
| | | { |
| | | button1.Text = Language.StringByID(StringId.onLogic); |
| | | } |
| | | break; |
| | | case "off": |
| | | { |
| | | button1.Text = Language.StringByID(StringId.offLogic); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | break; |
| | | case "set_temp": |
| | | { |
| | | if (button2 == null) |
| | | { |
| | | //怕调试软件乱上东西导致抛异常 |
| | | break; |
| | | } |
| | | button2.Text = value + "℃"; |
| | | } |
| | | break; |
| | | case "mode": |
| | | { |
| | | if (button3 == null) |
| | | { |
| | | //怕调试软件乱上东西导致抛异常 |
| | | break; |
| | | } |
| | | switch (value) |
| | | { |
| | | case "cool": |
| | | { |
| | | button3.Text = Language.StringByID(StringId.coolLogic); |
| | | } |
| | | break; |
| | | case "heat": |
| | | { |
| | | button3.Text = Language.StringByID(StringId.heatingLogic); |
| | | } |
| | | break; |
| | | case "auto": |
| | | { |
| | | button3.Text = Language.StringByID(StringId.autoLogic); |
| | | } |
| | | break; |
| | | case "dry": |
| | | { |
| | | button3.Text = Language.StringByID(StringId.dehumidifyLogic); |
| | | } |
| | | break; |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | break; |
| | | case "fan": |
| | | { |
| | | if (button4 == null) |
| | | { |
| | | //怕调试软件乱上东西导致抛异常 |
| | | break; |
| | | } |
| | | switch (value) |
| | | { |
| | | case "high": |
| | | { |
| | | button4.Text = Language.StringByID(StringId.HighWindSpeed); |
| | | } |
| | | break; |
| | | case "medium": |
| | | { |
| | | button4.Text = Language.StringByID(StringId.MiddleWindSpeed); |
| | | } |
| | | break; |
| | | case "low": |
| | | { |
| | | button4.Text = Language.StringByID(StringId.LowWindSpeed); |
| | | } |
| | | break; |
| | | case "auto": |
| | | { |
| | | button4.Text = Language.StringByID(StringId.Auto); |
| | | } |
| | | break; |
| | | } |
| | | |
| | | |
| | | } |
| | | break; |
| | | |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case SPK.FloorHeatStandard:case SPK.HvacFloorHeat: |
| | | { |
| | | |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | switch (dic["key"]) |
| | | { |
| | | case "on_off": |
| | | { |
| | | switch (value) |
| | | { |
| | | case "on": |
| | | { |
| | | button1.Text = Language.StringByID(StringId.onLogic); |
| | | } |
| | | break; |
| | | case "off": |
| | | { |
| | | button1.Text = Language.StringByID(StringId.offLogic); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | break; |
| | | case "set_temp": |
| | | { |
| | | if (button2 == null) |
| | | { |
| | | //怕调试软件乱上东西导致抛异常 |
| | | break; |
| | | } |
| | | button2.Text = value + "℃"; |
| | | } |
| | | break; |
| | | case "mode": |
| | | { |
| | | if (button3 == null) |
| | | { |
| | | //怕调试软件乱上东西导致抛异常 |
| | | break; |
| | | } |
| | | switch (value) |
| | | { |
| | | case "day": |
| | | { |
| | | button3.Text = Language.StringByID(StringId.dayMode); |
| | | } |
| | | break; |
| | | case "night": |
| | | { |
| | | button3.Text = Language.StringByID(StringId.nightMode); |
| | | } |
| | | break; |
| | | |
| | | case "away": |
| | | { |
| | | button3.Text = Language.StringByID(StringId.leaveMode); |
| | | } |
| | | break; |
| | | case "normal": |
| | | { |
| | | button3.Text = Language.StringByID(StringId.ordinaryMode); |
| | | } |
| | | break; |
| | | case "timer": |
| | | { |
| | | button3.Text = Language.StringByID(StringId.timeMode); |
| | | } |
| | | break; |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | break; |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | break; |
| | | //地热 |
| | | case SPK.HvacFloorHeat: |
| | | case SPK.FloorHeatStandard: |
| | | //新风 |
| | | case SPK.AirFreshStandard: |
| | | case SPK.HvacAirFresh: |
| | | //插座 |
| | | case SPK.PanelSocket: |
| | | case SPK.ElectricSocket: |
| | | {//开关灯 |
| | | foreach (var dic in dicList) |
| | | { |
| | | |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | switch (dic["key"]) |
| | | { |
| | | case "on_off": |
| | | { |
| | | switch (value) |
| | | { |
| | | case "on": |
| | | { |
| | | button1.Text = Language.StringByID(StringId.onLogic); |
| | | } |
| | | break; |
| | | case "off": |
| | | { |
| | | button1.Text = Language.StringByID(StringId.offLogic); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | break; |
| | | string value = dic["value"]; |
| | | if (value == "on") |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.onLogic); |
| | | |
| | | case "fan": |
| | | { |
| | | if (button2 == null) |
| | | { |
| | | //怕调试软件乱上东西导致抛异常 |
| | | break; |
| | | } |
| | | switch (value) |
| | | { |
| | | case "high": |
| | | { |
| | | button2.Text = Language.StringByID(StringId.HighWindSpeed); |
| | | } |
| | | break; |
| | | case "medium": |
| | | { |
| | | button2.Text = Language.StringByID(StringId.MiddleWindSpeed); |
| | | } |
| | | break; |
| | | case "low": |
| | | { |
| | | button2.Text = Language.StringByID(StringId.LowWindSpeed); |
| | | } |
| | | break; |
| | | case "auto": |
| | | { |
| | | button2.Text = Language.StringByID(StringId.Auto); |
| | | } |
| | | break; |
| | | } |
| | | |
| | | |
| | | } |
| | | break; |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.offLogic); |
| | | } |
| | | } |
| | | break; |
| | | case SPK.SensorGas: |
| | | } |
| | | break; |
| | | //传感器 |
| | | case SPK.SensorSmoke: |
| | | case SPK.SensorGas: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | if (value == "alarm") |
| | | { |
| | | button1.Text = Language.StringByID(StringId.xieluo); |
| | | } |
| | | else |
| | | { |
| | | button1.Text = Language.StringByID(StringId.wuxieluo); |
| | | } |
| | | } |
| | | string value = dic["value"]; |
| | | if (value == "alarm") |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.xieluo); |
| | | |
| | | } |
| | | else |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.wuxieluo); |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | break; |
| | | case SPK.SensorWater: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | if (value == "alarm") |
| | | { |
| | | button1.Text = Language.StringByID(StringId.luoshui); |
| | | } |
| | | else |
| | | { |
| | | button1.Text = Language.StringByID(StringId.wuluoshui); |
| | | } |
| | | } |
| | | string value = dic["value"]; |
| | | if (value == "alarm") |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.luoshui); |
| | | |
| | | } |
| | | else |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.wuluoshui); |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | break; |
| | | case SPK.SensorDryContact: |
| | | case SPK.SensorDryContact2: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | if (value == "on") |
| | | { |
| | | button1.Text = Language.StringByID(StringId.onLogic); |
| | | } |
| | | else |
| | | { |
| | | button1.Text = Language.StringByID(StringId.offLogic); |
| | | } |
| | | } |
| | | |
| | | string value = dic["value"]; |
| | | if (value == "on") |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.onLogic); |
| | | |
| | | } |
| | | else |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.offLogic); |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | break; |
| | | case SPK.SensorShanLan: |
| | | case SPK.SensorDuiShe: |
| | | case SPK.SensorPir: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | |
| | | string value = dic["value"]; |
| | | if (value == "true") |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.youren); |
| | | |
| | | } |
| | | else |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.wuren); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.SensorDoorWindow: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | |
| | | string value = dic["value"]; |
| | | if (value == "open") |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.kaiqi); |
| | | |
| | | } |
| | | else |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.bihe); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.SensorUtrasonic: |
| | | { |
| | | string str = ""; |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | switch (dic["key"]) |
| | | { |
| | | case "status": |
| | | case "people_status": |
| | | { |
| | | if (value == "true") |
| | | { |
| | | button1.Text = Language.StringByID(StringId.youren); |
| | | str += Language.StringByID(StringId.youren) + ";"; |
| | | } |
| | | else |
| | | { |
| | | button1.Text = Language.StringByID(StringId.wuren); |
| | | str += Language.StringByID(StringId.wuren) + ";"; |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.SensorDoorWindow: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | if (value == "open") |
| | | |
| | | |
| | | } |
| | | break; |
| | | case "dismantle": |
| | | { |
| | | if (value == "true") |
| | | { |
| | | button1.Text = Language.StringByID(StringId.kaiqi); |
| | | str += Language.StringByID(StringId.zaixian); |
| | | } |
| | | else |
| | | { |
| | | button1.Text = Language.StringByID(StringId.bihe); |
| | | str += Language.StringByID(StringId.buzaixian); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case SPK.SensorUtrasonic: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | switch (dic["key"]) |
| | | { |
| | | case "status": |
| | | case "people_status": |
| | | { |
| | | if (value == "true") |
| | | { |
| | | button1.Text = Language.StringByID(StringId.youren); |
| | | } |
| | | else |
| | | { |
| | | button1.Text = Language.StringByID(StringId.wuren); |
| | | } |
| | | |
| | | |
| | | } |
| | | break; |
| | | case "dismantle": |
| | | { |
| | | if (value == "true") |
| | | { |
| | | button1.Text = Language.StringByID(StringId.zaixian); |
| | | } |
| | | else |
| | | { |
| | | button1.Text = Language.StringByID(StringId.buzaixian); |
| | | } |
| | | } |
| | | break; |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | break; |
| | | inputView.btnState.Text = str; |
| | | } |
| | | break; |
| | | case SPK.SenesorMegahealth: |
| | | case SPK.SenesorMegahealth2: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | if (value == "fall") |
| | | string value = dic["value"]; |
| | | if (value == "fall") |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.diedao); |
| | | } |
| | | else |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.wuren); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.SensorEnvironment: |
| | | case SPK.SensorEnvironment2: |
| | | case SPK.SensorEnvironment3: |
| | | { |
| | | string strtext = ""; |
| | | foreach (var dic in dicList) |
| | | { |
| | | string key = dic["key"]; |
| | | string value = dic["value"]; |
| | | string comparator = dic["comparator"]; |
| | | switch (key) |
| | | { |
| | | |
| | | case "temperature": |
| | | { |
| | | if (comparator == ">") |
| | | { |
| | | button1.Text = Language.StringByID(StringId.diedao); |
| | | strtext = ">" + value + "℃"; |
| | | } |
| | | else |
| | | else if (comparator == "<") |
| | | { |
| | | button1.Text = Language.StringByID(StringId.wuren); |
| | | strtext = "<" + value + "℃"; |
| | | } |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case "humidity": |
| | | { |
| | | if (comparator == ">") |
| | | { |
| | | strtext = ">" + value + "%"; |
| | | } |
| | | else if (comparator == "<") |
| | | { |
| | | strtext = "<" + value + "%"; |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case "co2": |
| | | { |
| | | strtext = Language.StringByID(StringId.co2) + new PublicInterface { }.GetString("co2", value); |
| | | } |
| | | break; |
| | | case "pm25": |
| | | { |
| | | strtext = Language.StringByID(StringId.pm25) + new PublicInterface { }.GetString("pm25", value); |
| | | } |
| | | break; |
| | | case "tvoc": |
| | | { |
| | | strtext = Language.StringByID(StringId.tvoc) + new PublicInterface { }.GetString("tvoc", value); |
| | | } |
| | | break; |
| | | } |
| | | inputView.btnState.Text = strtext; |
| | | } |
| | | |
| | | |
| | | } |
| | | break; |
| | | case SPK.SensorTemperature: |
| | | { |
| | | |
| | | string str = new InpOrOutLogicMethod { }.GetText(dicList, "temperature"); |
| | | inputView.btnState.Text = str; |
| | | } |
| | | break; |
| | | case SPK.SensorHumidity: |
| | | { |
| | | string str = new InpOrOutLogicMethod { }.GetText(dicList, "humidity"); |
| | | inputView.btnState.Text = str; |
| | | |
| | | } |
| | | break; |
| | | case SPK.SensorCO2: |
| | | { |
| | | string str = new InpOrOutLogicMethod { }.GetText(dicList, "co2"); |
| | | inputView.btnState.Text = str; |
| | | |
| | | } |
| | | break; |
| | | case SPK.SensorPm25: |
| | | { |
| | | string str = new InpOrOutLogicMethod { }.GetText(dicList, "pm25"); |
| | | inputView.btnState.Text = str; |
| | | |
| | | } |
| | | break; |
| | | case SPK.SensorTVOC: |
| | | { |
| | | string str = new InpOrOutLogicMethod { }.GetText(dicList, "tvoc"); |
| | | inputView.btnState.Text = str; |
| | | |
| | | } |
| | | break; |
| | | case SPK.SensorHcho: |
| | | { |
| | | string str = new InpOrOutLogicMethod { }.GetText(dicList, "hcho"); |
| | | inputView.btnState.Text = str; |
| | | |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | break; |
| | | case "6": |
| | | { |
| | | //inputView.btnIcon.UnSelectedImagePath = "LogicIcon/changesinoutdoor.png"; |
| | | inputView.btnIcon.UnSelectedImagePath = "LogicIcon/changesinoutdoor.png"; |
| | | string strtext = ""; |
| | | string strvalue = ""; |
| | | foreach (var dic in dicList) |
| | | { |
| | | string key = dic["key"]; |
| | | string comparator = dic["comparator"]; |
| | | string value = dic["value"]; |
| | | |
| | | switch (key) |
| | | { |
| | | case "temperature": |
| | | { |
| | | //云端天气条件 城市温度触发 |
| | | strvalue = value + "℃"; |
| | | if (comparator == ">") |
| | | { |
| | | strtext = Language.StringByID(StringId.wendugaoyu); |
| | | } |
| | | else if (comparator == "<") |
| | | { |
| | | strtext = Language.StringByID(StringId.wendudiyu); |
| | | } |
| | | |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 获取value键值 |
| | | /// </summary> |
| | | /// <param name="keyValue"></param> |
| | | /// <param name="dicList"></param> |
| | | /// <returns></returns> |
| | | public static string GetKeyValue(string keyValue, List<Dictionary<string, string>> dicList) |
| | | { |
| | | case "humidity": |
| | | { |
| | | //云端天气条件 城市湿度触发 |
| | | strvalue = value + "%"; |
| | | if (comparator == ">") |
| | | { |
| | | strtext = Language.StringByID(StringId.shidugaoyu); |
| | | } |
| | | else if (comparator == "<") |
| | | { |
| | | strtext = Language.StringByID(StringId.shidudiyu); |
| | | } |
| | | |
| | | string valueStr = ""; |
| | | foreach (var dic in dicList) |
| | | { |
| | | if (dic["key"] == keyValue) |
| | | { |
| | | valueStr = dic["value"]; |
| | | } |
| | | break; |
| | | case "pm25": |
| | | { |
| | | //云端天气条件 城市pm2.5触发 |
| | | strtext = Language.StringByID(StringId.PM25); |
| | | strvalue = new PublicInterface { }.GetString("pm25", value); |
| | | } |
| | | break; |
| | | case "weather": |
| | | { |
| | | //云端天气条件 城市天气触发 |
| | | strtext = Language.StringByID(StringId.tianqibianhua); |
| | | switch (value) |
| | | { |
| | | case "Sunny": |
| | | { |
| | | strtext = Language.StringByID(StringId.clearday); |
| | | |
| | | } |
| | | break; |
| | | case "Cloudy": |
| | | { |
| | | |
| | | strtext = Language.StringByID(StringId.cloudy); |
| | | |
| | | } |
| | | break; |
| | | case "Rain": |
| | | { |
| | | strtext = Language.StringByID(StringId.rain); |
| | | } |
| | | break; |
| | | |
| | | } |
| | | } |
| | | break; |
| | | case "airquality": |
| | | { |
| | | //云端天气条件 城市空气质量 |
| | | strtext = Language.StringByID(StringId.kongqizhiliang); |
| | | switch (value) |
| | | { |
| | | case "Excellent": |
| | | { |
| | | strtext = Language.StringByID(StringId.kongqiyou); |
| | | |
| | | } |
| | | break; |
| | | case "Good": |
| | | { |
| | | |
| | | strtext = Language.StringByID(StringId.kongqiliang); |
| | | |
| | | } |
| | | break; |
| | | case "Poor": |
| | | { |
| | | strtext = Language.StringByID(StringId.kongqicha); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | |
| | | |
| | | } |
| | | inputView.btnText.Text = strtext; |
| | | inputView.btnState.Text = strvalue; |
| | | } |
| | | return valueStr; |
| | | } |
| | | /// <summary> |
| | | ///获取自动化名称 |
| | | /// </summary> |
| | | /// <returns> 新建自动化命名规则</returns> |
| | | public static string GetLogicName(Logic logic) |
| | | { |
| | | |
| | | string name = ""; |
| | | try |
| | | break; |
| | | case "8": |
| | | { |
| | | //默认取第一个条件 |
| | | Input inputCondition = logic.input[0]; |
| | | //显示条件各种类型状态 |
| | | switch (inputCondition.condition_type) |
| | | inputView.btnIcon.UnSelectedImagePath = "LogicIcon/inputlocation.png"; |
| | | foreach (var dic in dicList) |
| | | { |
| | | string strtext = ""; |
| | | string value = dic["value"]; |
| | | switch (value) |
| | | { |
| | | case "1": |
| | | { |
| | | name = Language.StringByID(StringId.hour) + "-"; |
| | | } |
| | | break; |
| | | case "2": |
| | | { |
| | | name = Language.StringByID(StringId.timeHorizon) + "-"; |
| | | |
| | | } |
| | | break; |
| | | case "3": |
| | | { |
| | | //用sid找到设备; |
| | | var device = LogicMethod.CurrLogicMethod.GetDevice(inputCondition.sid); |
| | | name = device.name + "-"; |
| | | } |
| | | break; |
| | | case "10": |
| | | { |
| | | //用sid找到场景; |
| | | var scene = LogicMethod.CurrLogicMethod.GetSecne(inputCondition.sid); |
| | | name = scene.name + "-"; |
| | | } |
| | | break; |
| | | |
| | | case "arrive": |
| | | { |
| | | strtext = Language.StringByID(StringId.daoda); |
| | | } |
| | | break; |
| | | case "leave": |
| | | { |
| | | strtext = Language.StringByID(StringId.likai); |
| | | } |
| | | break; |
| | | } |
| | | //默认取第一个目标 |
| | | Output outputTarget = logic.output[0]; |
| | | List<Dictionary<string, string>> dicList = outputTarget.status as List<Dictionary<string, string>>; |
| | | //显示输出条件各种类型状态 |
| | | switch (outputTarget.target_type) |
| | | { |
| | | case "1": |
| | | { |
| | | //用sid找到设备; |
| | | var device = LogicMethod.CurrLogicMethod.GetDevice(outputTarget.sid); |
| | | //显示设备名称 |
| | | name += device.name; |
| | | string stateStr = ""; |
| | | //区别不同设备,显示不同设备状态 |
| | | switch (device.spk) |
| | | { |
| | | case SPK.AirSwitch: |
| | | case SPK.LightSwitch: |
| | | {//开关灯 |
| | | |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | if (value == "on") |
| | | { |
| | | stateStr = Language.StringByID(StringId.onLogic); |
| | | |
| | | } |
| | | else |
| | | { |
| | | stateStr = Language.StringByID(StringId.offLogic); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.LightRGB: |
| | | case SPK.LightRGBW: |
| | | case SPK.LightCCT: |
| | | case SPK.LightDimming: |
| | | { |
| | | string on_off = InpOrOutLogicMethod.GetKeyValue("on_off", dicList); |
| | | string brightness = InpOrOutLogicMethod.GetKeyValue("brightness", dicList); |
| | | if (on_off == "on" && brightness != "") |
| | | { |
| | | stateStr = Language.StringByID(StringId.onLogic) + brightness + "%"; |
| | | } |
| | | else if (on_off == "on") |
| | | { |
| | | stateStr = Language.StringByID(StringId.onLogic); |
| | | } |
| | | else if (on_off == "off") |
| | | { |
| | | stateStr = Language.StringByID(StringId.offLogic); |
| | | } |
| | | else if (brightness != "") |
| | | { |
| | | stateStr = brightness + "%"; |
| | | } |
| | | } |
| | | break; |
| | | case SPK.CurtainSwitch: |
| | | case SPK.CurtainTrietex: |
| | | case SPK.CurtainRoller: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | switch (value) |
| | | { |
| | | case "on": |
| | | { |
| | | stateStr = Language.StringByID(StringId.onLogic); |
| | | } |
| | | break; |
| | | case "off": |
| | | { |
| | | stateStr = Language.StringByID(StringId.offLogic); |
| | | } |
| | | break; |
| | | case "stop": |
| | | { |
| | | stateStr = Language.StringByID(StringId.stop); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.AcStandard: |
| | | case SPK.HvacAC: |
| | | case SPK.FloorHeatStandard:case SPK.HvacFloorHeat: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | if (value == "on") |
| | | { |
| | | stateStr = Language.StringByID(StringId.onLogic); |
| | | |
| | | } |
| | | else if (value == "off") |
| | | { |
| | | stateStr = Language.StringByID(StringId.offLogic); |
| | | } |
| | | } |
| | | |
| | | } |
| | | break; |
| | | |
| | | } |
| | | name += stateStr; |
| | | } |
| | | break; |
| | | case "2": |
| | | { |
| | | //用sid找到场景; |
| | | var scene = LogicMethod.CurrLogicMethod.GetSecne(outputTarget.sid); |
| | | name += scene.name; |
| | | |
| | | } |
| | | break; |
| | | case "3": |
| | | { |
| | | //用sid找到安防; |
| | | var security = LogicMethod.CurrLogicMethod.GetSecurity(outputTarget.sid); |
| | | name += security.name; |
| | | |
| | | } |
| | | break; |
| | | } |
| | | |
| | | if (!MainView.IsGatewayType) |
| | | { |
| | | name += Language.StringByID(StringId.push); |
| | | } |
| | | inputView.btnText.TextID = StringId.likiadaoda; |
| | | inputView.btnState.Text = strtext; |
| | | } |
| | | } |
| | | catch { } |
| | | return name; |
| | | } |
| | | /// <summary> |
| | | /// 延时时间方法 |
| | | /// </summary> |
| | | /// <param name="fLayout">在哪个界面显示</param> |
| | | /// <param name="edit">(true=编辑;false=新建)</param> |
| | | /// <param name="index">编辑条件的索引</param> |
| | | private void Delayed(FrameLayout thisFLayout, Output output, Action<int> action) |
| | | { |
| | | FrameLayout fLayout = new FrameLayout |
| | | break; |
| | | case "10": |
| | | { |
| | | BackgroundColor = CSS.CSS_Color.viewTrans60lucence, |
| | | }; |
| | | thisFLayout.AddChidren(fLayout); |
| | | LogicView.TimeView timePointView = new LogicView.TimeView(); |
| | | timePointView.FLayoutView(fLayout); |
| | | EventHandler<MouseEventArgs> RemovefLayout = (sender, e1) => |
| | | { |
| | | //移除fLayout界面 |
| | | fLayout.RemoveFromParent(); |
| | | }; |
| | | //取消点击事件 |
| | | timePointView.btnCancel.MouseUpEventHandler += RemovefLayout; |
| | | |
| | | //加载数据界面的设置方法(列表互不联动) |
| | | timePointView.mUIPickerView.setNPicker(timePointView.GetmStringList(), timePointView.GetsStringList(), null); |
| | | //默认初始选中状态 |
| | | timePointView.mUIPickerView.setCurrentItems(0, 5, 0); |
| | | //定义一个局部变量记录选中时间 |
| | | int timepoint = 5; |
| | | |
| | | if (output.delay != "0") |
| | | { |
| | | int intValue = int.Parse(output.delay); |
| | | var m = intValue / 60; |
| | | var s = intValue % 60; |
| | | |
| | | string timeValue = m.ToString() + ":" + s.ToString(); |
| | | int mIndex = timePointView.GetValueIndex(timeValue, 0, 1, timePointView.GetmIntList()); |
| | | int sIndex = timePointView.GetValueIndex(timeValue, 1, 0, timePointView.GetmIntList()); |
| | | //更新初始状态 |
| | | timePointView.mUIPickerView.setCurrentItems(mIndex, sIndex, 0); |
| | | timepoint = intValue; |
| | | //用sid找到场景; |
| | | var scene = LogicMethod.CurrLogicMethod.GetSecne(inputCondition.sid); |
| | | inputView.btnIcon.UnSelectedImagePath = "LogicIcon/scene.png"; |
| | | inputView.btnNextIcon.Visible = false; |
| | | inputView.btnClick.Visible = false; |
| | | //显示场景名称 |
| | | inputView.btnText.Text = scene.name; |
| | | } |
| | | break; |
| | | |
| | | |
| | | //选中时间回调方法,时间变化一次回调一次 |
| | | timePointView.mUIPickerView.OnSelectChangeEvent += (index1, index2, index3) => |
| | | { |
| | | string minuet = timePointView.GethStringList0()[index1].Split(' ')[0]; |
| | | string second = timePointView.GetmStringList()[index2].Split(' ')[0]; |
| | | int minuetIntValue = int.Parse(minuet); |
| | | int secondIntValue = int.Parse(second); |
| | | timepoint = minuetIntValue * 60 + secondIntValue; |
| | | }; |
| | | //确定点击事件 |
| | | timePointView.btnConfirm.MouseUpEventHandler += (sender, e3) => |
| | | { |
| | | if (timepoint == 0) |
| | | { |
| | | //提示 |
| | | return; |
| | | } |
| | | fLayout.RemoveFromParent(); |
| | | action(timepoint); |
| | | }; |
| | | } |
| | | /// <summary> |
| | | /// 获取时间文本描述 |
| | | /// </summary> |
| | | /// <param name="strTimeValue">时间值(单位s秒)</param> |
| | | /// <returns></returns> |
| | | private string GetTimeText(string strTimeValue) |
| | | //再次编辑条件状态点击事件 |
| | | inputView.btnClick.MouseUpEventHandler += (sen, e) => |
| | | { |
| | | var timeValue = int.Parse(strTimeValue); |
| | | string state = ""; |
| | | var minutes = timeValue / 60; |
| | | var seconds = timeValue % 60; |
| | | if (minutes != 0) |
| | | Button button = (Button)sen; |
| | | //当前编辑的条件 |
| | | Input ckcliInput = inputView.btnClick.Tag as Input; |
| | | //找到当前编辑的索引 |
| | | int indexVulae = 0; |
| | | for (int index = 0; index < Logic.currlogic.input.Count; index++) |
| | | { |
| | | Input input = Logic.currlogic.input[index]; |
| | | if (input.sid == ckcliInput.sid) |
| | | { |
| | | if (seconds == 0) |
| | | if (button.Name == "3") |
| | | { |
| | | //有些设备比较特殊(例如:海林传感器还是要判断属性值,温湿度属性还要判断比较关系,才能确认是否已经存在该条件,其他设备条件直接用sid判断即可) |
| | | //加一级判断是为兼容特殊设备 |
| | | if (new ConditionDeviceFunList { }.IsContainsAll(ckcliInput.condition, input.condition)) |
| | | { |
| | | state = minutes.ToString() + Language.StringByID(StringId.minute); |
| | | //用户可能删除数据,使列表索引发生改变; |
| | | //通过唯一sid重新查找到索引且更新索引值 |
| | | indexVulae = index; |
| | | break; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //用户可能删除数据,使列表索引发生改变; |
| | | //通过唯一sid重新查找到索引且更新索引值 |
| | | indexVulae = index; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | //标记编辑状态 |
| | | bool edit = true; |
| | | switch (button.Name) |
| | | { |
| | | case "1": |
| | | { |
| | | bool is_bool = false; |
| | | Input _input = Logic.currlogic.input[indexVulae]; |
| | | if (_input.condition_type == "1") |
| | | { |
| | | var dicLists = _input.condition; |
| | | foreach (var dic in dicLists) |
| | | { |
| | | string keyValue = dic["key"]; |
| | | if (keyValue != "timepoint") |
| | | { |
| | | //通过键值查找键值是否是 |
| | | //(日出/日落/正午) |
| | | is_bool = true; |
| | | break; |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | if (is_bool) |
| | | { |
| | | //跳转到(日出/日落/正午)界面 |
| | | SpeciaTime speciaTime = new SpeciaTime(); |
| | | MainPage.BasePageView.AddChidren(speciaTime); |
| | | speciaTime.Show(edit, indexVulae); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | } |
| | | else |
| | | { |
| | | state = minutes.ToString() + Language.StringByID(StringId.minute) + seconds.ToString() + Language.StringByID(StringId.s); |
| | | //跳转到(时间点)界面 |
| | | FrameLayout fLayout = new FrameLayout |
| | | { |
| | | BackgroundColor = CSS.CSS_Color.viewTrans60lucence, |
| | | }; |
| | | thisView.AddChidren(fLayout); |
| | | TimeTpye timeTpye = new TimeTpye(); |
| | | timeTpye.TimePoint(fLayout, edit, indexVulae); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | if (seconds != 0) |
| | | } |
| | | break; |
| | | case "2": |
| | | { |
| | | FrameLayout fLayout = new FrameLayout |
| | | { |
| | | state = seconds.ToString() + Language.StringByID(StringId.s); |
| | | BackgroundColor = CSS.CSS_Color.viewTrans60lucence, |
| | | }; |
| | | thisView.AddChidren(fLayout); |
| | | TimeTpye timeTpye = new TimeTpye(); |
| | | timeTpye.TimeHorizon(fLayout, edit, indexVulae); |
| | | } |
| | | break; |
| | | case "3": |
| | | { |
| | | //用sid找到设备; |
| | | var device = LogicMethod.CurrLogicMethod.GetDevice(inputCondition.sid); |
| | | if (device.spk == SPK.SensorEnvironment |
| | | || device.spk == SPK.SensorEnvironment2 |
| | | || device.spk == SPK.SensorEnvironment3 |
| | | ) |
| | | { |
| | | //这个设备比较特殊 |
| | | ConditionDeviceFunList conditionDeviceFunList = new ConditionDeviceFunList(); |
| | | ///当前的索引值数据对象 |
| | | Input inputedit = Logic.currlogic.input[indexVulae]; |
| | | ///状态值 |
| | | string stateValue = ""; |
| | | foreach (var dic in inputedit.condition) |
| | | { |
| | | string key = dic["key"]; |
| | | string comparator = dic["comparator"]; |
| | | stateValue = dic["value"]; |
| | | switch (key) |
| | | { |
| | | |
| | | case "temperature": |
| | | { |
| | | int titleInt = 0; |
| | | if (comparator == ">") |
| | | { |
| | | titleInt = StringId.wendugaoyu; |
| | | } |
| | | else if (comparator == "<") |
| | | { |
| | | titleInt = StringId.wendudiyu; |
| | | } |
| | | conditionDeviceFunList.InputBoxAction(device, titleInt, indexVulae, true, stateValue); |
| | | } |
| | | break; |
| | | case "humidity": |
| | | { |
| | | int titleInt = 0; |
| | | if (comparator == ">") |
| | | { |
| | | titleInt = StringId.shidugaoyu; |
| | | } |
| | | else if (comparator == "<") |
| | | { |
| | | titleInt = StringId.shidudiyu; |
| | | } |
| | | conditionDeviceFunList.InputBoxAction(device, titleInt, indexVulae, true, stateValue); |
| | | } |
| | | break; |
| | | case "co2": |
| | | { |
| | | conditionDeviceFunList.PmCo2TvocAction(thisView, device, "co2", StringId.co2, indexVulae, true, stateValue); |
| | | } |
| | | break; |
| | | case "pm25": |
| | | { |
| | | conditionDeviceFunList.PmCo2TvocAction(thisView, device, "pm25", StringId.pm25, indexVulae, true, stateValue); |
| | | } |
| | | break; |
| | | case "tvoc": |
| | | { |
| | | conditionDeviceFunList.PmCo2TvocAction(thisView, device, "tvoc", StringId.tvoc, indexVulae, true, stateValue); |
| | | } |
| | | break; |
| | | case "hcho": |
| | | { |
| | | conditionDeviceFunList.PmCo2TvocAction(thisView, device, "hcho", StringId.Formaldehyde, indexVulae, true, stateValue); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | if (!string.IsNullOrEmpty(state)) |
| | | { |
| | | state = Language.StringByID(StringId.delayLogic) + state; |
| | | } |
| | | return state; |
| | | } |
| | | /// <summary> |
| | | /// 获取显示面熟文本 |
| | | /// </summary> |
| | | /// <param name="dicList">状态数据列表</param> |
| | | /// <returns></returns> |
| | | private string GetText(List<Dictionary<string, string>> dicList,string key) |
| | | else if (device.spk == SPK.SensorTemperature) |
| | | { |
| | | |
| | | new InpOrOutLogicMethod().SensorView(thisView, device, "temperature", indexVulae); |
| | | |
| | | } |
| | | else if (device.spk == SPK.SensorHumidity) |
| | | { |
| | | |
| | | new InpOrOutLogicMethod().SensorView(thisView, device, "humidity", indexVulae); |
| | | |
| | | } |
| | | else if (device.spk == SPK.SensorCO2) |
| | | { |
| | | |
| | | new InpOrOutLogicMethod().SensorView(thisView, device, "co2", indexVulae); |
| | | |
| | | } |
| | | else if (device.spk == SPK.SensorPm25) |
| | | { |
| | | |
| | | new InpOrOutLogicMethod().SensorView(thisView, device, "pm25", indexVulae); |
| | | |
| | | } |
| | | else if (device.spk == SPK.SensorTVOC) |
| | | { |
| | | |
| | | new InpOrOutLogicMethod().SensorView(thisView, device, "tvoc", indexVulae); |
| | | |
| | | } |
| | | else if (device.spk == SPK.SensorHcho) |
| | | { |
| | | |
| | | new InpOrOutLogicMethod().SensorView(thisView, device, "hcho", indexVulae); |
| | | |
| | | } |
| | | else |
| | | { |
| | | ConditionDeviceFunList deviceFunList = new ConditionDeviceFunList(); |
| | | MainPage.BasePageView.AddChidren(deviceFunList); |
| | | deviceFunList.Show(device, indexVulae, edit); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | } |
| | | } |
| | | break; |
| | | case "6": |
| | | { |
| | | ///当前的索引值数据对象 |
| | | Input inputedit = Logic.currlogic.input[indexVulae]; |
| | | ///状态值 |
| | | string stateValue = ""; |
| | | ///状态值文本 |
| | | int intValue = -1; |
| | | foreach (var dic in inputedit.condition) |
| | | { |
| | | string key = dic["key"]; |
| | | string comparator = dic["comparator"]; |
| | | stateValue = dic["value"]; |
| | | switch (key) |
| | | { |
| | | case "temperature": |
| | | { |
| | | if (comparator == ">") |
| | | { |
| | | intValue = StringId.wendugaoyu; |
| | | } |
| | | else if (comparator == "<") |
| | | { |
| | | intValue = StringId.wendudiyu; |
| | | |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case "humidity": |
| | | { |
| | | |
| | | if (comparator == ">") |
| | | { |
| | | intValue = StringId.shidugaoyu; |
| | | } |
| | | else if (comparator == "<") |
| | | { |
| | | intValue = StringId.shidudiyu; |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case "pm25": |
| | | { |
| | | intValue = StringId.PM25; |
| | | } |
| | | break; |
| | | case "weather": |
| | | { |
| | | intValue = StringId.tianqibianhua; |
| | | } |
| | | break; |
| | | case "airquality": |
| | | { |
| | | intValue = StringId.kongqizhiliang; |
| | | } |
| | | break; |
| | | |
| | | } |
| | | } |
| | | OutdoorEnvironment outdoorEnvironment = new OutdoorEnvironment(); |
| | | if (intValue == StringId.tianqibianhua) |
| | | { |
| | | //城市天气(晴天,下雨) |
| | | WeatherCondition weatherCondition = new WeatherCondition(); |
| | | MainPage.BasePageView.AddChidren(weatherCondition); |
| | | weatherCondition.Show(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | } |
| | | else if (intValue == StringId.PM25) |
| | | { |
| | | //城市天气(pm2.5) |
| | | outdoorEnvironment.PmAction(thisView, stateValue); |
| | | } |
| | | else if (intValue == StringId.kongqizhiliang) |
| | | { |
| | | //城市天气(空气质量) |
| | | AirQuality airQuality = new AirQuality(); |
| | | MainPage.BasePageView.AddChidren(airQuality); |
| | | airQuality.Show(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | } |
| | | else |
| | | { |
| | | //城市天气(温湿度) |
| | | outdoorEnvironment.InputBoxAction(intValue, stateValue); |
| | | } |
| | | } |
| | | break; |
| | | case "8": |
| | | { |
| | | AddInputType addInputType = new AddInputType(); |
| | | addInputType.LocationView(thisView, true); |
| | | } |
| | | break; |
| | | |
| | | } |
| | | }; |
| | | ///删除控件 |
| | | inputView.btnDel.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | string strtext = ""; |
| | | Logic.currlogic.input.Remove(inputCondition); |
| | | inputView.frameLayout.RemoveFromParent(); |
| | | }; |
| | | } |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 输出条件处理方法 |
| | | /// </summary> |
| | | /// <param name="thisView">当前界面</param> |
| | | /// <param name="viewLayout">上下滑动控件</param> |
| | | public static void OutputTarget(FrameLayout thisView, VerticalScrolViewLayout viewLayout) |
| | | { |
| | | |
| | | for (int i = 0; i < Logic.currlogic.output.Count; i++) |
| | | { |
| | | Output outputTarget = Logic.currlogic.output[i]; |
| | | ///各种条件的View |
| | | LogicView.AddOutputInputView targetView = new LogicView.AddOutputInputView(); |
| | | targetView.FLayoutView(viewLayout); |
| | | ///记录条件类型 |
| | | targetView.btnClick.Name = outputTarget.target_type; |
| | | ///记录条件索引 |
| | | targetView.btnClick.Tag = outputTarget.sid; |
| | | ///条件状态数组 |
| | | List<Dictionary<string, string>> dicList = outputTarget.status; |
| | | //显示状态值 |
| | | string stateStr = ""; |
| | | //显示输出条件各种类型状态 |
| | | switch (outputTarget.target_type) |
| | | { |
| | | case "1": |
| | | { |
| | | //用sid找到设备; |
| | | var device = LogicMethod.CurrLogicMethod.GetDevice(outputTarget.sid); |
| | | //用设备的functionType类型找到对应图标; |
| | | targetView.btnIcon.UnSelectedImagePath = LogicMethod.CurrLogicMethod.GetIconPath(device.spk); |
| | | //显示设备名称 |
| | | targetView.btnText.Text = device.name; |
| | | //改变设备名称显示控件宽度 |
| | | targetView.btnText.Width = Application.GetRealWidth(80); |
| | | //区别不同设备,显示不同设备状态 |
| | | switch (device.spk) |
| | | { |
| | | case SPK.AirSwitch: |
| | | case SPK.LightSwitch: |
| | | //插座 |
| | | case SPK.PanelSocket: |
| | | case SPK.ElectricSocket: |
| | | {//开关 |
| | | |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | if (value == "on") |
| | | { |
| | | stateStr = Language.StringByID(StringId.onLogic); |
| | | |
| | | } |
| | | else |
| | | { |
| | | stateStr = Language.StringByID(StringId.offLogic); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.LightRGB: |
| | | case SPK.LightRGBW: |
| | | case SPK.LightCCT: |
| | | case SPK.LightDimming: |
| | | { |
| | | string on_off = GetKeyValue("on_off", dicList); |
| | | string brightness = GetKeyValue("brightness", dicList); |
| | | if (on_off == "on" && brightness != "") |
| | | { |
| | | stateStr = Language.StringByID(StringId.onLogic) + brightness + "%"; |
| | | } |
| | | else if (on_off == "on") |
| | | { |
| | | stateStr = Language.StringByID(StringId.onLogic); |
| | | } |
| | | else if (on_off == "off") |
| | | { |
| | | stateStr = Language.StringByID(StringId.offLogic); |
| | | } |
| | | else if (brightness != "") |
| | | { |
| | | stateStr = brightness + "%"; |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case SPK.CurtainSwitch: |
| | | case SPK.CurtainTrietex: |
| | | case SPK.CurtainRoller: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | switch (value) |
| | | { |
| | | case "on": |
| | | { |
| | | stateStr = Language.StringByID(StringId.onLogic); |
| | | } |
| | | break; |
| | | case "off": |
| | | { |
| | | stateStr = Language.StringByID(StringId.offLogic); |
| | | } |
| | | break; |
| | | case "stop": |
| | | { |
| | | stateStr = Language.StringByID(StringId.stop); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.AcStandard: |
| | | case SPK.HvacAC: |
| | | { |
| | | string on_off = GetKeyValue("on_off", dicList); |
| | | string set_temp = GetKeyValue("set_temp", dicList); |
| | | string mode = GetKeyValue("mode", dicList); |
| | | string fan = GetKeyValue("fan", dicList); |
| | | if (on_off != "") |
| | | { |
| | | switch (on_off) |
| | | { |
| | | case "on": |
| | | { |
| | | stateStr = Language.StringByID(StringId.onLogic) + ","; |
| | | } |
| | | break; |
| | | case "off": |
| | | { |
| | | stateStr = Language.StringByID(StringId.offLogic) + ","; |
| | | } |
| | | break; |
| | | |
| | | } |
| | | } |
| | | |
| | | if (set_temp != "") |
| | | { |
| | | |
| | | stateStr += set_temp + "℃,"; |
| | | } |
| | | |
| | | if (mode != "") |
| | | { |
| | | |
| | | switch (mode) |
| | | { |
| | | case "cool": |
| | | { |
| | | stateStr += Language.StringByID(StringId.coolLogic) + ","; |
| | | } |
| | | break; |
| | | case "heat": |
| | | { |
| | | stateStr += Language.StringByID(StringId.heatingLogic) + ","; |
| | | } |
| | | break; |
| | | case "auto": |
| | | { |
| | | stateStr += Language.StringByID(StringId.autoLogic) + ","; |
| | | } |
| | | break; |
| | | case "dry": |
| | | { |
| | | stateStr += Language.StringByID(StringId.dehumidifyLogic) + ","; |
| | | } |
| | | break; |
| | | } |
| | | |
| | | } |
| | | |
| | | if (fan != "") |
| | | { |
| | | |
| | | switch (fan) |
| | | { |
| | | case "high": |
| | | { |
| | | stateStr += Language.StringByID(StringId.HighWindSpeed) + ","; |
| | | } |
| | | break; |
| | | case "medium": |
| | | { |
| | | stateStr += Language.StringByID(StringId.MiddleWindSpeed) + ","; |
| | | } |
| | | break; |
| | | case "low": |
| | | { |
| | | stateStr += Language.StringByID(StringId.LowWindSpeed) + ","; |
| | | } |
| | | break; |
| | | case "auto": |
| | | { |
| | | stateStr += Language.StringByID(StringId.Auto) + ","; |
| | | } |
| | | break; |
| | | } |
| | | |
| | | } |
| | | if (on_off != "" && on_off == "off") |
| | | { |
| | | stateStr = Language.StringByID(StringId.offLogic); |
| | | } |
| | | else |
| | | { |
| | | stateStr = stateStr.TrimEnd(','); |
| | | |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case SPK.FloorHeatStandard: |
| | | case SPK.HvacFloorHeat: |
| | | { |
| | | string on_off = GetKeyValue("on_off", dicList); |
| | | string set_temp = GetKeyValue("set_temp", dicList); |
| | | string mode = GetKeyValue("mode", dicList); |
| | | if (on_off != "") |
| | | { |
| | | switch (on_off) |
| | | { |
| | | case "on": |
| | | { |
| | | stateStr = Language.StringByID(StringId.onLogic) + ","; |
| | | } |
| | | break; |
| | | case "off": |
| | | { |
| | | stateStr = Language.StringByID(StringId.offLogic) + ","; |
| | | } |
| | | break; |
| | | |
| | | } |
| | | } |
| | | if (set_temp != "") |
| | | { |
| | | |
| | | stateStr += set_temp + "℃,"; |
| | | } |
| | | if (mode != "") |
| | | { |
| | | |
| | | switch (mode) |
| | | { |
| | | case "day": |
| | | { |
| | | stateStr += Language.StringByID(StringId.dayMode) + ","; |
| | | } |
| | | break; |
| | | case "night": |
| | | { |
| | | stateStr += Language.StringByID(StringId.nightMode) + ","; |
| | | } |
| | | break; |
| | | |
| | | case "away": |
| | | { |
| | | stateStr += Language.StringByID(StringId.leaveMode) + ","; |
| | | } |
| | | break; |
| | | case "normal": |
| | | { |
| | | stateStr += Language.StringByID(StringId.ordinaryMode) + ","; |
| | | } |
| | | break; |
| | | case "timer": |
| | | { |
| | | stateStr += Language.StringByID(StringId.timeMode) + ","; |
| | | } |
| | | break; |
| | | } |
| | | |
| | | } |
| | | if (on_off != "" && on_off == "off") |
| | | { |
| | | stateStr = Language.StringByID(StringId.offLogic); |
| | | } |
| | | else |
| | | { |
| | | stateStr = stateStr.TrimEnd(','); |
| | | |
| | | } |
| | | } |
| | | break; |
| | | case SPK.AirFreshStandard: |
| | | case SPK.HvacAirFresh: |
| | | { |
| | | string on_off = GetKeyValue("on_off", dicList); |
| | | string fan = GetKeyValue("fan", dicList); |
| | | if (on_off != "") |
| | | { |
| | | switch (on_off) |
| | | { |
| | | case "on": |
| | | { |
| | | stateStr = Language.StringByID(StringId.onLogic) + ","; |
| | | } |
| | | break; |
| | | case "off": |
| | | { |
| | | stateStr = Language.StringByID(StringId.offLogic) + ","; |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | if (fan != "") |
| | | { |
| | | |
| | | switch (fan) |
| | | { |
| | | case "high": |
| | | { |
| | | stateStr += Language.StringByID(StringId.HighWindSpeed) + ","; |
| | | } |
| | | break; |
| | | case "medium": |
| | | { |
| | | stateStr += Language.StringByID(StringId.MiddleWindSpeed) + ","; |
| | | } |
| | | break; |
| | | case "low": |
| | | { |
| | | stateStr += Language.StringByID(StringId.LowWindSpeed) + ","; |
| | | } |
| | | break; |
| | | case "auto": |
| | | { |
| | | stateStr += Language.StringByID(StringId.Auto) + ","; |
| | | } |
| | | break; |
| | | } |
| | | |
| | | } |
| | | if (on_off != "" && on_off == "off") |
| | | { |
| | | stateStr = Language.StringByID(StringId.offLogic); |
| | | } |
| | | else |
| | | { |
| | | stateStr = stateStr.TrimEnd(','); |
| | | |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | break; |
| | | case "2": |
| | | { |
| | | //用sid找到场景; |
| | | var scene = LogicMethod.CurrLogicMethod.GetSecne(outputTarget.sid); |
| | | targetView.btnIcon.UnSelectedImagePath = "LogicIcon/scene.png"; |
| | | targetView.btnNextIcon.Visible = false; |
| | | //显示场景名称 |
| | | stateStr = scene.name; |
| | | } |
| | | break; |
| | | case "3": |
| | | { |
| | | //用sid找到安防; |
| | | var security = LogicMethod.CurrLogicMethod.GetSecurity(outputTarget.sid); |
| | | targetView.btnIcon.UnSelectedImagePath = "LogicIcon/security.png"; |
| | | targetView.btnDelay.Visible = false; |
| | | //显示安防名称 |
| | | targetView.btnText.Text = security.name; |
| | | string value = GetKeyValue("security", dicList); |
| | | if (value == "enable") |
| | | { |
| | | stateStr = Language.StringByID(StringId.bufang); |
| | | |
| | | } |
| | | else |
| | | { |
| | | stateStr = Language.StringByID(StringId.chefang); |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case "4": |
| | | { |
| | | targetView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png"; |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | stateStr = value; |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | |
| | | if (outputTarget.target_type == "1" || outputTarget.target_type == "3") |
| | | { |
| | | targetView.btnState.Text = new InpOrOutLogicMethod { }.GetTimeText(outputTarget.delay) + stateStr; |
| | | } |
| | | else |
| | | { |
| | | targetView.btnText.Text = new InpOrOutLogicMethod { }.GetTimeText(outputTarget.delay) + stateStr; |
| | | } |
| | | //再次编辑条件状态点击事件 |
| | | targetView.btnClick.MouseUpEventHandler += (sen, e) => |
| | | { |
| | | Button button = (Button)sen; |
| | | //找到当前编辑的索引 |
| | | int indexVulae = 0; |
| | | for (int index = 0; index < Logic.currlogic.output.Count; index++) |
| | | { |
| | | Output target = Logic.currlogic.output[index]; |
| | | if (target.sid == targetView.btnClick.Tag.ToString()) |
| | | { |
| | | //用户可能删除数据,使列表索引发生改变; |
| | | //通过唯一sid重新查找到索引且更新索引值 |
| | | indexVulae = index; |
| | | break; |
| | | } |
| | | } |
| | | //标记编辑状态 |
| | | bool edit = true; |
| | | switch (button.Name) |
| | | { |
| | | case "1": |
| | | { |
| | | //用sid找到设备; |
| | | var device = LogicMethod.CurrLogicMethod.GetDevice(outputTarget.sid); |
| | | TargetDeviceFunList deviceFunList = new TargetDeviceFunList(); |
| | | MainPage.BasePageView.AddChidren(deviceFunList); |
| | | deviceFunList.Show(device, indexVulae, edit); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | } |
| | | break; |
| | | case "3": |
| | | { |
| | | Security security = new Security(); |
| | | security.SecurityMethod(thisView, "", edit, indexVulae); |
| | | } |
| | | break; |
| | | case "4": |
| | | { |
| | | FrameLayout fLayout = new FrameLayout |
| | | { |
| | | BackgroundColor = CSS.CSS_Color.viewTrans60lucence, |
| | | }; |
| | | thisView.AddChidren(fLayout); |
| | | AddTarget addTarget = new AddTarget(); |
| | | addTarget.Delayed(fLayout, edit, indexVulae); |
| | | |
| | | |
| | | } |
| | | break; |
| | | } |
| | | }; |
| | | //延时点击事件 |
| | | targetView.btnDelay.MouseUpEventHandler += (sen, e) => |
| | | { |
| | | |
| | | InpOrOutLogicMethod inpOrOutLogicMethod = new InpOrOutLogicMethod(); |
| | | inpOrOutLogicMethod.Delayed(thisView, outputTarget, (value) => |
| | | { |
| | | outputTarget.delay = value.ToString(); |
| | | if (outputTarget.target_type == "1") |
| | | { |
| | | targetView.btnState.Text = new InpOrOutLogicMethod { }.GetTimeText(outputTarget.delay) + stateStr; |
| | | } |
| | | else |
| | | { |
| | | targetView.btnText.Text = new InpOrOutLogicMethod { }.GetTimeText(outputTarget.delay) + stateStr; |
| | | } |
| | | }); |
| | | |
| | | }; |
| | | ///删除控件 |
| | | targetView.btnDel.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | Logic.currlogic.output.Remove(outputTarget); |
| | | targetView.frameLayout.RemoveFromParent(); |
| | | }; |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 显示编辑之前的设备状态 |
| | | /// </summary> |
| | | /// <param name="device">编辑设备</param> |
| | | /// <param name="button1">显示Btn</param> |
| | | /// <param name="button2">显示Btn</param> |
| | | /// <param name="button3">显示Btn</param> |
| | | /// <param name="button4">显示Btn</param> |
| | | public static void EditState(Entity.Function device, List<Dictionary<string, string>> dicList, Button button1, Button button2, Button button3, Button button4) |
| | | { |
| | | switch (device.spk) |
| | | { |
| | | //插座 |
| | | case SPK.PanelSocket: |
| | | case SPK.ElectricSocket: |
| | | //开关灯光 |
| | | case SPK.AirSwitch: |
| | | case SPK.LightSwitch: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | string comparator = dic["comparator"]; |
| | | switch (key) |
| | | { |
| | | |
| | | case "temperature": |
| | | { |
| | | if (comparator == ">") |
| | | { |
| | | strtext = ">" + value + "℃"; |
| | | } |
| | | else if (comparator == "<") |
| | | { |
| | | strtext = "<" + value + "℃"; |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case "humidity": |
| | | { |
| | | if (comparator == ">") |
| | | { |
| | | strtext = ">" + value + "%"; |
| | | } |
| | | else if (comparator == "<") |
| | | { |
| | | strtext = "<" + value + "%"; |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case "co2": |
| | | { |
| | | strtext = Language.StringByID(StringId.co2) + new PublicInterface { }.GetString("co2", value); |
| | | } |
| | | break; |
| | | case "pm25": |
| | | { |
| | | strtext = Language.StringByID(StringId.pm25) + new PublicInterface { }.GetString("pm25", value); |
| | | } |
| | | break; |
| | | case "tvoc": |
| | | { |
| | | strtext = Language.StringByID(StringId.tvoc) + new PublicInterface { }.GetString("tvoc", value); |
| | | } |
| | | break; |
| | | case "hcho": |
| | | { |
| | | strtext = Language.StringByID(StringId.Formaldehyde) + new PublicInterface { }.GetString("hcho", value); |
| | | } |
| | | break; |
| | | } |
| | | string value = dic["value"]; |
| | | if (value == "on") |
| | | { |
| | | button1.Text = Language.StringByID(StringId.onLogic); |
| | | } |
| | | else |
| | | { |
| | | button1.Text = Language.StringByID(StringId.offLogic); |
| | | } |
| | | } |
| | | return strtext; |
| | | } |
| | | private void SensorView(FrameLayout thisView, Function device,string key, int indexVulae) { |
| | | //这个设备比较特殊 |
| | | ConditionDeviceFunList conditionDeviceFunList = new ConditionDeviceFunList(); |
| | | ///当前的索引值数据对象 |
| | | Input inputedit = Logic.currlogic.input[indexVulae]; |
| | | ///状态值 |
| | | string stateValue = ""; |
| | | foreach (var dic in inputedit.condition) |
| | | } |
| | | break; |
| | | case SPK.LightDimming: |
| | | case SPK.LightRGB: |
| | | case SPK.LightRGBW: |
| | | case SPK.LightCCT: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string comparator = dic["comparator"]; |
| | | stateValue = dic["value"]; |
| | | switch (key) |
| | | { |
| | | string value = dic["value"]; |
| | | switch (dic["key"]) |
| | | { |
| | | case "on_off": |
| | | { |
| | | if (value == "on") |
| | | { |
| | | button1.Text = Language.StringByID(StringId.onLogic); |
| | | } |
| | | else |
| | | { |
| | | button1.Text = Language.StringByID(StringId.offLogic); |
| | | } |
| | | } |
| | | break; |
| | | case "brightness": |
| | | { |
| | | if (button2 == null) |
| | | { |
| | | //怕调试软件乱上东西导致抛异常 |
| | | break; |
| | | } |
| | | button2.Text = value + "%"; |
| | | } |
| | | break; |
| | | } |
| | | |
| | | case "temperature": |
| | | { |
| | | int titleInt = 0; |
| | | if (comparator == ">") |
| | | { |
| | | titleInt = StringId.wendugaoyu; |
| | | } |
| | | else if (comparator == "<") |
| | | { |
| | | titleInt = StringId.wendudiyu; |
| | | } |
| | | conditionDeviceFunList.InputBoxAction(device, titleInt, indexVulae, true, stateValue); |
| | | } |
| | | break; |
| | | case "humidity": |
| | | { |
| | | int titleInt = 0; |
| | | if (comparator == ">") |
| | | { |
| | | titleInt = StringId.shidugaoyu; |
| | | } |
| | | else if (comparator == "<") |
| | | { |
| | | titleInt = StringId.shidudiyu; |
| | | } |
| | | conditionDeviceFunList.InputBoxAction(device, titleInt, indexVulae, true, stateValue); |
| | | } |
| | | break; |
| | | case "co2": |
| | | { |
| | | conditionDeviceFunList.PmCo2TvocAction(thisView, device, "co2", StringId.co2, indexVulae, true, stateValue); |
| | | } |
| | | break; |
| | | case "pm25": |
| | | { |
| | | conditionDeviceFunList.PmCo2TvocAction(thisView, device, "pm25", StringId.pm25, indexVulae, true, stateValue); |
| | | } |
| | | break; |
| | | case "tvoc": |
| | | { |
| | | conditionDeviceFunList.PmCo2TvocAction(thisView, device, "tvoc", StringId.tvoc, indexVulae, true, stateValue); |
| | | } |
| | | break; |
| | | case "hcho": |
| | | { |
| | | conditionDeviceFunList.PmCo2TvocAction(thisView, device, "hcho", StringId.Formaldehyde, indexVulae, true, stateValue); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.CurtainSwitch: |
| | | case SPK.CurtainTrietex: |
| | | case SPK.CurtainRoller: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | switch (value) |
| | | { |
| | | case "on": |
| | | { |
| | | button1.Text = Language.StringByID(StringId.onLogic); |
| | | } |
| | | break; |
| | | case "off": |
| | | { |
| | | button1.Text = Language.StringByID(StringId.offLogic); |
| | | } |
| | | break; |
| | | case "stop": |
| | | { |
| | | button1.Text = Language.StringByID(StringId.stop); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.AcStandard: |
| | | case SPK.HvacAC: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | switch (dic["key"]) |
| | | { |
| | | case "on_off": |
| | | { |
| | | switch (value) |
| | | { |
| | | case "on": |
| | | { |
| | | button1.Text = Language.StringByID(StringId.onLogic); |
| | | } |
| | | break; |
| | | case "off": |
| | | { |
| | | button1.Text = Language.StringByID(StringId.offLogic); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | break; |
| | | case "set_temp": |
| | | { |
| | | if (button2 == null) |
| | | { |
| | | //怕调试软件乱上东西导致抛异常 |
| | | break; |
| | | } |
| | | button2.Text = value + "℃"; |
| | | } |
| | | break; |
| | | case "mode": |
| | | { |
| | | if (button3 == null) |
| | | { |
| | | //怕调试软件乱上东西导致抛异常 |
| | | break; |
| | | } |
| | | switch (value) |
| | | { |
| | | case "cool": |
| | | { |
| | | button3.Text = Language.StringByID(StringId.coolLogic); |
| | | } |
| | | break; |
| | | case "heat": |
| | | { |
| | | button3.Text = Language.StringByID(StringId.heatingLogic); |
| | | } |
| | | break; |
| | | case "auto": |
| | | { |
| | | button3.Text = Language.StringByID(StringId.autoLogic); |
| | | } |
| | | break; |
| | | case "dry": |
| | | { |
| | | button3.Text = Language.StringByID(StringId.dehumidifyLogic); |
| | | } |
| | | break; |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | break; |
| | | case "fan": |
| | | { |
| | | if (button4 == null) |
| | | { |
| | | //怕调试软件乱上东西导致抛异常 |
| | | break; |
| | | } |
| | | switch (value) |
| | | { |
| | | case "high": |
| | | { |
| | | button4.Text = Language.StringByID(StringId.HighWindSpeed); |
| | | } |
| | | break; |
| | | case "medium": |
| | | { |
| | | button4.Text = Language.StringByID(StringId.MiddleWindSpeed); |
| | | } |
| | | break; |
| | | case "low": |
| | | { |
| | | button4.Text = Language.StringByID(StringId.LowWindSpeed); |
| | | } |
| | | break; |
| | | case "auto": |
| | | { |
| | | button4.Text = Language.StringByID(StringId.Auto); |
| | | } |
| | | break; |
| | | } |
| | | |
| | | |
| | | } |
| | | break; |
| | | |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case SPK.FloorHeatStandard: |
| | | case SPK.HvacFloorHeat: |
| | | { |
| | | |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | switch (dic["key"]) |
| | | { |
| | | case "on_off": |
| | | { |
| | | switch (value) |
| | | { |
| | | case "on": |
| | | { |
| | | button1.Text = Language.StringByID(StringId.onLogic); |
| | | } |
| | | break; |
| | | case "off": |
| | | { |
| | | button1.Text = Language.StringByID(StringId.offLogic); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | break; |
| | | case "set_temp": |
| | | { |
| | | if (button2 == null) |
| | | { |
| | | //怕调试软件乱上东西导致抛异常 |
| | | break; |
| | | } |
| | | button2.Text = value + "℃"; |
| | | } |
| | | break; |
| | | case "mode": |
| | | { |
| | | if (button3 == null) |
| | | { |
| | | //怕调试软件乱上东西导致抛异常 |
| | | break; |
| | | } |
| | | switch (value) |
| | | { |
| | | case "day": |
| | | { |
| | | button3.Text = Language.StringByID(StringId.dayMode); |
| | | } |
| | | break; |
| | | case "night": |
| | | { |
| | | button3.Text = Language.StringByID(StringId.nightMode); |
| | | } |
| | | break; |
| | | |
| | | case "away": |
| | | { |
| | | button3.Text = Language.StringByID(StringId.leaveMode); |
| | | } |
| | | break; |
| | | case "normal": |
| | | { |
| | | button3.Text = Language.StringByID(StringId.ordinaryMode); |
| | | } |
| | | break; |
| | | case "timer": |
| | | { |
| | | button3.Text = Language.StringByID(StringId.timeMode); |
| | | } |
| | | break; |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | break; |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case SPK.AirFreshStandard: |
| | | case SPK.HvacAirFresh: |
| | | { |
| | | |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | switch (dic["key"]) |
| | | { |
| | | case "on_off": |
| | | { |
| | | switch (value) |
| | | { |
| | | case "on": |
| | | { |
| | | button1.Text = Language.StringByID(StringId.onLogic); |
| | | } |
| | | break; |
| | | case "off": |
| | | { |
| | | button1.Text = Language.StringByID(StringId.offLogic); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | break; |
| | | |
| | | case "fan": |
| | | { |
| | | if (button2 == null) |
| | | { |
| | | //怕调试软件乱上东西导致抛异常 |
| | | break; |
| | | } |
| | | switch (value) |
| | | { |
| | | case "high": |
| | | { |
| | | button2.Text = Language.StringByID(StringId.HighWindSpeed); |
| | | } |
| | | break; |
| | | case "medium": |
| | | { |
| | | button2.Text = Language.StringByID(StringId.MiddleWindSpeed); |
| | | } |
| | | break; |
| | | case "low": |
| | | { |
| | | button2.Text = Language.StringByID(StringId.LowWindSpeed); |
| | | } |
| | | break; |
| | | case "auto": |
| | | { |
| | | button2.Text = Language.StringByID(StringId.Auto); |
| | | } |
| | | break; |
| | | } |
| | | |
| | | |
| | | } |
| | | break; |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case SPK.SensorGas: |
| | | case SPK.SensorSmoke: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | if (value == "alarm") |
| | | { |
| | | button1.Text = Language.StringByID(StringId.xieluo); |
| | | } |
| | | else |
| | | { |
| | | button1.Text = Language.StringByID(StringId.wuxieluo); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.SensorWater: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | if (value == "alarm") |
| | | { |
| | | button1.Text = Language.StringByID(StringId.luoshui); |
| | | } |
| | | else |
| | | { |
| | | button1.Text = Language.StringByID(StringId.wuluoshui); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.SensorDryContact: |
| | | case SPK.SensorDryContact2: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | if (value == "on") |
| | | { |
| | | button1.Text = Language.StringByID(StringId.onLogic); |
| | | } |
| | | else |
| | | { |
| | | button1.Text = Language.StringByID(StringId.offLogic); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.SensorShanLan: |
| | | case SPK.SensorDuiShe: |
| | | case SPK.SensorPir: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | if (value == "true") |
| | | { |
| | | button1.Text = Language.StringByID(StringId.youren); |
| | | } |
| | | else |
| | | { |
| | | button1.Text = Language.StringByID(StringId.wuren); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.SensorDoorWindow: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | if (value == "open") |
| | | { |
| | | button1.Text = Language.StringByID(StringId.kaiqi); |
| | | } |
| | | else |
| | | { |
| | | button1.Text = Language.StringByID(StringId.bihe); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.SensorUtrasonic: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | switch (dic["key"]) |
| | | { |
| | | case "status": |
| | | case "people_status": |
| | | { |
| | | if (value == "true") |
| | | { |
| | | button1.Text = Language.StringByID(StringId.youren); |
| | | } |
| | | else |
| | | { |
| | | button1.Text = Language.StringByID(StringId.wuren); |
| | | } |
| | | |
| | | |
| | | } |
| | | break; |
| | | case "dismantle": |
| | | { |
| | | if (value == "true") |
| | | { |
| | | button1.Text = Language.StringByID(StringId.zaixian); |
| | | } |
| | | else |
| | | { |
| | | button1.Text = Language.StringByID(StringId.buzaixian); |
| | | } |
| | | } |
| | | break; |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | break; |
| | | case SPK.SenesorMegahealth: |
| | | case SPK.SenesorMegahealth2: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | if (value == "fall") |
| | | { |
| | | button1.Text = Language.StringByID(StringId.diedao); |
| | | } |
| | | else |
| | | { |
| | | button1.Text = Language.StringByID(StringId.wuren); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 获取value键值 |
| | | /// </summary> |
| | | /// <param name="keyValue"></param> |
| | | /// <param name="dicList"></param> |
| | | /// <returns></returns> |
| | | public static string GetKeyValue(string keyValue, List<Dictionary<string, string>> dicList) |
| | | { |
| | | |
| | | string valueStr = ""; |
| | | foreach (var dic in dicList) |
| | | { |
| | | if (dic["key"] == keyValue) |
| | | { |
| | | valueStr = dic["value"]; |
| | | break; |
| | | } |
| | | |
| | | } |
| | | return valueStr; |
| | | } |
| | | /// <summary> |
| | | ///获取自动化名称 |
| | | /// </summary> |
| | | /// <returns> 新建自动化命名规则</returns> |
| | | public static string GetLogicName(Logic logic) |
| | | { |
| | | |
| | | string name = ""; |
| | | try |
| | | { |
| | | //默认取第一个条件 |
| | | Input inputCondition = logic.input[0]; |
| | | //显示条件各种类型状态 |
| | | switch (inputCondition.condition_type) |
| | | { |
| | | case "1": |
| | | { |
| | | name = Language.StringByID(StringId.hour) + "-"; |
| | | } |
| | | break; |
| | | case "2": |
| | | { |
| | | name = Language.StringByID(StringId.timeHorizon) + "-"; |
| | | |
| | | } |
| | | break; |
| | | case "3": |
| | | { |
| | | //用sid找到设备; |
| | | var device = LogicMethod.CurrLogicMethod.GetDevice(inputCondition.sid); |
| | | name = device.name + "-"; |
| | | } |
| | | break; |
| | | case "10": |
| | | { |
| | | //用sid找到场景; |
| | | var scene = LogicMethod.CurrLogicMethod.GetSecne(inputCondition.sid); |
| | | name = scene.name + "-"; |
| | | } |
| | | break; |
| | | |
| | | } |
| | | //默认取第一个目标 |
| | | Output outputTarget = logic.output[0]; |
| | | List<Dictionary<string, string>> dicList = outputTarget.status as List<Dictionary<string, string>>; |
| | | //显示输出条件各种类型状态 |
| | | switch (outputTarget.target_type) |
| | | { |
| | | case "1": |
| | | { |
| | | //用sid找到设备; |
| | | var device = LogicMethod.CurrLogicMethod.GetDevice(outputTarget.sid); |
| | | //显示设备名称 |
| | | name += device.name; |
| | | string stateStr = ""; |
| | | //区别不同设备,显示不同设备状态 |
| | | switch (device.spk) |
| | | { |
| | | case SPK.AirSwitch: |
| | | case SPK.LightSwitch: |
| | | {//开关灯 |
| | | |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | if (value == "on") |
| | | { |
| | | stateStr = Language.StringByID(StringId.onLogic); |
| | | |
| | | } |
| | | else |
| | | { |
| | | stateStr = Language.StringByID(StringId.offLogic); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.LightRGB: |
| | | case SPK.LightRGBW: |
| | | case SPK.LightCCT: |
| | | case SPK.LightDimming: |
| | | { |
| | | string on_off = InpOrOutLogicMethod.GetKeyValue("on_off", dicList); |
| | | string brightness = InpOrOutLogicMethod.GetKeyValue("brightness", dicList); |
| | | if (on_off == "on" && brightness != "") |
| | | { |
| | | stateStr = Language.StringByID(StringId.onLogic) + brightness + "%"; |
| | | } |
| | | else if (on_off == "on") |
| | | { |
| | | stateStr = Language.StringByID(StringId.onLogic); |
| | | } |
| | | else if (on_off == "off") |
| | | { |
| | | stateStr = Language.StringByID(StringId.offLogic); |
| | | } |
| | | else if (brightness != "") |
| | | { |
| | | stateStr = brightness + "%"; |
| | | } |
| | | } |
| | | break; |
| | | case SPK.CurtainSwitch: |
| | | case SPK.CurtainTrietex: |
| | | case SPK.CurtainRoller: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | switch (value) |
| | | { |
| | | case "on": |
| | | { |
| | | stateStr = Language.StringByID(StringId.onLogic); |
| | | } |
| | | break; |
| | | case "off": |
| | | { |
| | | stateStr = Language.StringByID(StringId.offLogic); |
| | | } |
| | | break; |
| | | case "stop": |
| | | { |
| | | stateStr = Language.StringByID(StringId.stop); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.AcStandard: |
| | | case SPK.HvacAC: |
| | | case SPK.FloorHeatStandard: |
| | | case SPK.HvacFloorHeat: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | if (value == "on") |
| | | { |
| | | stateStr = Language.StringByID(StringId.onLogic); |
| | | |
| | | } |
| | | else if (value == "off") |
| | | { |
| | | stateStr = Language.StringByID(StringId.offLogic); |
| | | } |
| | | } |
| | | |
| | | } |
| | | break; |
| | | |
| | | } |
| | | name += stateStr; |
| | | } |
| | | break; |
| | | case "2": |
| | | { |
| | | //用sid找到场景; |
| | | var scene = LogicMethod.CurrLogicMethod.GetSecne(outputTarget.sid); |
| | | name += scene.name; |
| | | |
| | | } |
| | | break; |
| | | case "3": |
| | | { |
| | | //用sid找到安防; |
| | | var security = LogicMethod.CurrLogicMethod.GetSecurity(outputTarget.sid); |
| | | name += security.name; |
| | | |
| | | } |
| | | break; |
| | | } |
| | | |
| | | if (!MainView.IsGatewayType) |
| | | { |
| | | name += Language.StringByID(StringId.push); |
| | | } |
| | | } |
| | | catch { } |
| | | return name; |
| | | } |
| | | /// <summary> |
| | | /// 延时时间方法 |
| | | /// </summary> |
| | | /// <param name="fLayout">在哪个界面显示</param> |
| | | /// <param name="edit">(true=编辑;false=新建)</param> |
| | | /// <param name="index">编辑条件的索引</param> |
| | | private void Delayed(FrameLayout thisFLayout, Output output, Action<int> action) |
| | | { |
| | | FrameLayout fLayout = new FrameLayout |
| | | { |
| | | BackgroundColor = CSS.CSS_Color.viewTrans60lucence, |
| | | }; |
| | | thisFLayout.AddChidren(fLayout); |
| | | LogicView.TimeView timePointView = new LogicView.TimeView(); |
| | | timePointView.FLayoutView(fLayout); |
| | | EventHandler<MouseEventArgs> RemovefLayout = (sender, e1) => |
| | | { |
| | | //移除fLayout界面 |
| | | fLayout.RemoveFromParent(); |
| | | }; |
| | | //取消点击事件 |
| | | timePointView.btnCancel.MouseUpEventHandler += RemovefLayout; |
| | | |
| | | //加载数据界面的设置方法(列表互不联动) |
| | | timePointView.mUIPickerView.setNPicker(timePointView.GetmStringList(), timePointView.GetsStringList(), null); |
| | | //默认初始选中状态 |
| | | timePointView.mUIPickerView.setCurrentItems(0, 5, 0); |
| | | //定义一个局部变量记录选中时间 |
| | | int timepoint = 5; |
| | | |
| | | if (output.delay != "0") |
| | | { |
| | | int intValue = int.Parse(output.delay); |
| | | var m = intValue / 60; |
| | | var s = intValue % 60; |
| | | |
| | | string timeValue = m.ToString() + ":" + s.ToString(); |
| | | int mIndex = timePointView.GetValueIndex(timeValue, 0, 1, timePointView.GetmIntList()); |
| | | int sIndex = timePointView.GetValueIndex(timeValue, 1, 0, timePointView.GetmIntList()); |
| | | //更新初始状态 |
| | | timePointView.mUIPickerView.setCurrentItems(mIndex, sIndex, 0); |
| | | timepoint = intValue; |
| | | } |
| | | |
| | | |
| | | //选中时间回调方法,时间变化一次回调一次 |
| | | timePointView.mUIPickerView.OnSelectChangeEvent += (index1, index2, index3) => |
| | | { |
| | | string minuet = timePointView.GethStringList0()[index1].Split(' ')[0]; |
| | | string second = timePointView.GetmStringList()[index2].Split(' ')[0]; |
| | | int minuetIntValue = int.Parse(minuet); |
| | | int secondIntValue = int.Parse(second); |
| | | timepoint = minuetIntValue * 60 + secondIntValue; |
| | | }; |
| | | //确定点击事件 |
| | | timePointView.btnConfirm.MouseUpEventHandler += (sender, e3) => |
| | | { |
| | | if (timepoint == 0) |
| | | { |
| | | //提示 |
| | | return; |
| | | } |
| | | fLayout.RemoveFromParent(); |
| | | action(timepoint); |
| | | }; |
| | | } |
| | | /// <summary> |
| | | /// 获取时间文本描述 |
| | | /// </summary> |
| | | /// <param name="strTimeValue">时间值(单位s秒)</param> |
| | | /// <returns></returns> |
| | | private string GetTimeText(string strTimeValue) |
| | | { |
| | | var timeValue = int.Parse(strTimeValue); |
| | | string state = ""; |
| | | var minutes = timeValue / 60; |
| | | var seconds = timeValue % 60; |
| | | if (minutes != 0) |
| | | { |
| | | if (seconds == 0) |
| | | { |
| | | state = minutes.ToString() + Language.StringByID(StringId.minute); |
| | | } |
| | | else |
| | | { |
| | | state = minutes.ToString() + Language.StringByID(StringId.minute) + seconds.ToString() + Language.StringByID(StringId.s); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | if (seconds != 0) |
| | | { |
| | | state = seconds.ToString() + Language.StringByID(StringId.s); |
| | | } |
| | | } |
| | | if (!string.IsNullOrEmpty(state)) |
| | | { |
| | | state = Language.StringByID(StringId.delayLogic) + state; |
| | | } |
| | | return state; |
| | | } |
| | | /// <summary> |
| | | /// 获取显示面熟文本 |
| | | /// </summary> |
| | | /// <param name="dicList">状态数据列表</param> |
| | | /// <returns></returns> |
| | | private string GetText(List<Dictionary<string, string>> dicList, string key) |
| | | { |
| | | string strtext = ""; |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | string comparator = dic["comparator"]; |
| | | switch (key) |
| | | { |
| | | |
| | | case "temperature": |
| | | { |
| | | if (comparator == ">") |
| | | { |
| | | strtext = ">" + value + "℃"; |
| | | } |
| | | else if (comparator == "<") |
| | | { |
| | | strtext = "<" + value + "℃"; |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case "humidity": |
| | | { |
| | | if (comparator == ">") |
| | | { |
| | | strtext = ">" + value + "%"; |
| | | } |
| | | else if (comparator == "<") |
| | | { |
| | | strtext = "<" + value + "%"; |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case "co2": |
| | | { |
| | | strtext = Language.StringByID(StringId.co2) + new PublicInterface { }.GetString("co2", value); |
| | | } |
| | | break; |
| | | case "pm25": |
| | | { |
| | | strtext = Language.StringByID(StringId.pm25) + new PublicInterface { }.GetString("pm25", value); |
| | | } |
| | | break; |
| | | case "tvoc": |
| | | { |
| | | strtext = Language.StringByID(StringId.tvoc) + new PublicInterface { }.GetString("tvoc", value); |
| | | } |
| | | break; |
| | | case "hcho": |
| | | { |
| | | strtext = Language.StringByID(StringId.Formaldehyde) + new PublicInterface { }.GetString("hcho", value); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | return strtext; |
| | | } |
| | | private void SensorView(FrameLayout thisView, Function device, string key, int indexVulae) |
| | | { |
| | | //这个设备比较特殊 |
| | | ConditionDeviceFunList conditionDeviceFunList = new ConditionDeviceFunList(); |
| | | ///当前的索引值数据对象 |
| | | Input inputedit = Logic.currlogic.input[indexVulae]; |
| | | ///状态值 |
| | | string stateValue = ""; |
| | | foreach (var dic in inputedit.condition) |
| | | { |
| | | string comparator = dic["comparator"]; |
| | | stateValue = dic["value"]; |
| | | switch (key) |
| | | { |
| | | |
| | | case "temperature": |
| | | { |
| | | int titleInt = 0; |
| | | if (comparator == ">") |
| | | { |
| | | titleInt = StringId.wendugaoyu; |
| | | } |
| | | else if (comparator == "<") |
| | | { |
| | | titleInt = StringId.wendudiyu; |
| | | } |
| | | conditionDeviceFunList.InputBoxAction(device, titleInt, indexVulae, true, stateValue); |
| | | } |
| | | break; |
| | | case "humidity": |
| | | { |
| | | int titleInt = 0; |
| | | if (comparator == ">") |
| | | { |
| | | titleInt = StringId.shidugaoyu; |
| | | } |
| | | else if (comparator == "<") |
| | | { |
| | | titleInt = StringId.shidudiyu; |
| | | } |
| | | conditionDeviceFunList.InputBoxAction(device, titleInt, indexVulae, true, stateValue); |
| | | } |
| | | break; |
| | | case "co2": |
| | | { |
| | | conditionDeviceFunList.PmCo2TvocAction(thisView, device, "co2", StringId.co2, indexVulae, true, stateValue); |
| | | } |
| | | break; |
| | | case "pm25": |
| | | { |
| | | conditionDeviceFunList.PmCo2TvocAction(thisView, device, "pm25", StringId.pm25, indexVulae, true, stateValue); |
| | | } |
| | | break; |
| | | case "tvoc": |
| | | { |
| | | conditionDeviceFunList.PmCo2TvocAction(thisView, device, "tvoc", StringId.tvoc, indexVulae, true, stateValue); |
| | | } |
| | | break; |
| | | case "hcho": |
| | | { |
| | | conditionDeviceFunList.PmCo2TvocAction(thisView, device, "hcho", StringId.Formaldehyde, indexVulae, true, stateValue); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |