| | |
| | | return _msg_id++; |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 获取13位时间戳 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public string Get_TimeStamp() |
| | | { |
| | | long t = DateTime.Now.Ticks / 10000; |
| | | return t.ToString(); |
| | | } |
| | | ///// <summary> |
| | | ///// 获取13位时间戳 |
| | | ///// </summary> |
| | | ///// <returns></returns> |
| | | //public string Get_TimeStamp() |
| | | //{ |
| | | // long t = DateTime.Now.Ticks / 10000; |
| | | // return t.ToString(); |
| | | //} |
| | | |
| | | /// <summary> |
| | | /// 是否搜索本地网关成功 |
| | |
| | | public void SearchLoaclGateway() |
| | | { |
| | | //2021-01-15 : 住宅没有绑定网关的时候不用搜索,并且不能链接mqtt |
| | | if(DB_ResidenceData.Instance.HomeGateway == null) |
| | | if(DB_ResidenceData.Instance.HomeGateway == null || string.IsNullOrEmpty(DB_ResidenceData.Instance.HomeGateway.gatewayId)) |
| | | { |
| | | return; |
| | | } |
| | |
| | | /// </summary> |
| | | public void ControlScene(Scene scene) |
| | | { |
| | | //体验模式 |
| | | if(MainPage.NoLoginMode) |
| | | { |
| | | foreach(var sceneFunction in scene.functions) |
| | | { |
| | | var revString = ""; |
| | | var upDataObj = new AlinkFunctionStatusObj(); |
| | | upDataObj.id = "999"; |
| | | upDataObj.objects = new List<AlinkStatusData>(); |
| | | var asd = new AlinkStatusData() { deviceId = sceneFunction.localFunction.deviceId, sid = sceneFunction.sid }; |
| | | var status1 = new List<AttributesStatus>(); |
| | | foreach (var dic in sceneFunction.status) |
| | | { |
| | | status1.Add(new AttributesStatus() { key = dic.key, value = dic.value }); |
| | | } |
| | | asd.status = status1; |
| | | upDataObj.objects.Add(asd); |
| | | revString = Newtonsoft.Json.JsonConvert.SerializeObject(upDataObj); |
| | | UpdataFunctionStatus(revString, null, true); |
| | | } |
| | | return; |
| | | } |
| | | |
| | | //远程或者控制link网关场景 |
| | | if (!Ins.GatewayOnline_Local || DB_ResidenceData.Instance.GatewayType == 1) |
| | | { |
| | | new System.Threading.Thread(() => |
| | |
| | | } |
| | | } |
| | | |
| | | MainPage.Log($"发送数据:{Newtonsoft.Json.JsonConvert.SerializeObject(commandDictionary)}"); |
| | | ///dome控制 |
| | | if (MainPage.NoLoginMode) |
| | | { |
| | | var revString = ""; |
| | | var upDataObj = new AlinkFunctionStatusObj(); |
| | | upDataObj.id = "999"; |
| | | upDataObj.objects = new List<AlinkStatusData>(); |
| | | var asd = new AlinkStatusData() { deviceId = function.deviceId, sid = function.sid }; |
| | | var status1 = new List<AttributesStatus>(); |
| | | foreach (var dic in commandDictionary) |
| | | { |
| | | status1.Add(new AttributesStatus() { key = dic.Key, value = dic.Value }); |
| | | } |
| | | asd.status = status1; |
| | | upDataObj.objects.Add(asd); |
| | | revString = Newtonsoft.Json.JsonConvert.SerializeObject(upDataObj); |
| | | UpdataFunctionStatus(revString, null, true); |
| | | return; |
| | | } |
| | | |
| | | |
| | | //MainPage.Log($"发送数据:{Newtonsoft.Json.JsonConvert.SerializeObject(commandDictionary)}"); |
| | | |
| | | ///第三方涂鸦设备统一使用远程控制 |
| | | switch(function.spk) |
| | | switch (function.spk) |
| | | { |
| | | case SPK.ElectricTuyaAirCleaner: |
| | | case SPK.ElectricTuyaFan: |
| | |
| | | /// </summary> |
| | | public void SwtichFunctions(bool open,List<Function> functions) |
| | | { |
| | | //dome模式控制 |
| | | if(MainPage.NoLoginMode) |
| | | { |
| | | new System.Threading.Thread(() => |
| | | { |
| | | foreach (var temp in functions) |
| | | { |
| | | Dictionary<string, string> d1 = new Dictionary<string, string>(); |
| | | d1.Add(FunctionAttributeKey.OnOff, open ? "on" : "off"); |
| | | SendWriteCommand(temp, d1); |
| | | System.Threading.Thread.Sleep(100); |
| | | } |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | return; |
| | | } |
| | | |
| | | var count = 0; |
| | | var logString = open ? "打开\r\n" : "关闭\r\n"; |
| | | List<ApiAlinkControlActionObj> actionObjs = new List<ApiAlinkControlActionObj>(); |
| | |
| | | /// 发送读取命令 |
| | | /// 自动判断是否为A协议设备 |
| | | /// </summary> |
| | | public void SendReadCommand(Function function) |
| | | public void SendReadCommand(Function function ,bool forceRemote = false) |
| | | { |
| | | function.refreshTime = DateTime.Now; |
| | | if (Ins.GatewayOnline_Local) |
| | | if (forceRemote) |
| | | { |
| | | |
| | | if (DB_ResidenceData.Instance.GatewayType == 0) |
| | | var pm = new DAL.Server.HttpServerRequest(); |
| | | var pack = pm.RefreshDeviceStatus(new List<string>() { function.deviceId }); |
| | | } |
| | | else |
| | | { |
| | | if (Ins.GatewayOnline_Local) |
| | | { |
| | | try |
| | | |
| | | if (DB_ResidenceData.Instance.GatewayType == 0) |
| | | { |
| | | new Control_Udp().ReadBusData(function); |
| | | try |
| | | { |
| | | new Control_Udp().ReadBusData(function); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | MainPage.Log($"发送数据异常: {ex.Message}"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | else |
| | | { |
| | | MainPage.Log($"发送数据异常: {ex.Message}"); |
| | | var readKey = new Dictionary<string, string>(); |
| | | readKey.Add("sid", function.sid); |
| | | |
| | | var readDataObj = new AlinkReadFunctionStatusObj() |
| | | { |
| | | id = Ins.msg_id.ToString(), |
| | | objects = new List<Dictionary<string, string>>() |
| | | { |
| | | readKey |
| | | }, |
| | | time_stamp = Utlis.GetTimestamp() |
| | | }; |
| | | var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(readDataObj); |
| | | var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ReadStatus, functionControlDataJson); |
| | | MainPage.Log($"本地通讯 发送HDL-Link数据:{functionControlDataJson}"); |
| | | new Control_Udp().SendLocalHdlLinkData(sendBytes, readDataObj.id); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | var readKey = new Dictionary<string, string>(); |
| | | readKey.Add("sid", function.sid); |
| | | |
| | | var readDataObj = new AlinkReadFunctionStatusObj() |
| | | { |
| | | id = Ins.msg_id.ToString(), |
| | | objects = new List<Dictionary<string, string>>() |
| | | { |
| | | readKey |
| | | }, |
| | | time_stamp = Utlis.GetTimestamp() |
| | | }; |
| | | var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(readDataObj); |
| | | var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ReadStatus, functionControlDataJson); |
| | | MainPage.Log($"本地通讯 发送HDL-Link数据:{functionControlDataJson}"); |
| | | new Control_Udp().SendLocalHdlLinkData(sendBytes, readDataObj.id); |
| | | var pm = new DAL.Server.HttpServerRequest(); |
| | | var pack = pm.RefreshDeviceStatus(new List<string>() { function.deviceId }); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | var pm = new DAL.Server.HttpServerRequest(); |
| | | var pack = pm.RefreshDeviceStatus(new List<string>() { function.deviceId }); |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 转换通讯数据 |
| | | /// 转换发送数据 |
| | | /// </summary> |
| | | public byte[] ConvertSendBodyData(string topic, string bodyDataString) |
| | | { |
| | |
| | | |
| | | string sendDataString = topicString + lengthString + bodyDataString; |
| | | byte[] sendDataBytes = Encoding.ASCII.GetBytes(sendDataString); |
| | | //MainPage.Log($"转换HDL-Link数据\r\n{sendDataString}\r\n"); |
| | | MainPage.Log($"转换HDL-Link数据\r\n{sendDataString}\r\n"); |
| | | |
| | | return sendDataBytes; |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | MainPage.Log($"局域网信息: {receiveObj.Topic}"); |
| | | MainPage.Log($"内容: {res[1]}"); |
| | | MainPage.Log($"局域网信息: {receiveObj.Topic} : 内容: {res[1]}"); |
| | | |
| | | |
| | | //验证有效数据长度 |
| | | //if (res[1].Length != receiveObj.Length) |
| | |
| | | { |
| | | return receiveObj; |
| | | } |
| | | |
| | | var device = Newtonsoft.Json.JsonConvert.DeserializeObject<DeviceModule>(bodyJObj.objects.ToString()); |
| | | if (device.device_mac == DB_ResidenceData.Instance.residenceGatewayMAC) |
| | | if (device.device_mac.ToUpper() == DB_ResidenceData.Instance.HomeGateway.mac.ToUpper()) |
| | | { |
| | | MainPage.Log("本地搜索网关成功"); |
| | | Ins.IsSearchLocalGatewaySuccessful = true; |
| | |
| | | { |
| | | Ins.GatewayId = device.device_mac; |
| | | } |
| | | reportIp = "239.0.168.188";// device.ip_address; |
| | | reportIp = "239.0.168.188";// device.ip_address;//主播地址也能控制设备 |
| | | } |
| | | } |
| | | else if (receiveObj.Topic == CommunicationTopic.ct.ReadStatus + "_reply" || |
| | |
| | | /// <param name="updateBytes"></param> |
| | | public void UpdataFunctionStatus(string revString, byte[] usefulBytes,bool isCloudData = false) |
| | | { |
| | | |
| | | if (Ins.GatewayOnline_Local && isCloudData)//本地链接,除了涂鸦设备数据之外的云端数据不处理 |
| | | { |
| | | if (FunctionList.List.GetDeviceFunctionList(SPK.BrandType.Tuya).Count == 0) |
| | | { |
| | | //MainPage.Log($"A协议更新状态:本地链接,除了涂鸦设备数据之外的云端数据不处理..."); |
| | | return; |
| | | } |
| | | } |
| | | var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<AlinkFunctionStatusObj>(revString); |
| | | if (temp != null) |
| | | { |
| | |
| | | { |
| | | try |
| | | { |
| | | var localFunction = allLocalFuntion.Find((obj) => obj.sid == updateTemp.sid); |
| | | |
| | | if (Ins.GatewayOnline_Local && isCloudData)//本地链接,除了涂鸦设备数据之外的云端数据不处理 |
| | | { |
| | | if(!SPK.Get3tySpk(SPK.BrandType.All3tyBrand).Contains(localFunction.spk)) |
| | | if (FunctionList.List.OtherBrandFunction.Count != 0) |
| | | { |
| | | if (FunctionList.List.OtherBrandFunction.Find((obj) => obj.sid == updateTemp.sid) == null) |
| | | { |
| | | //MainPage.Log($"A协议更新状态:本地链接,除了涂鸦设备数据之外的云端数据不处理..."); |
| | | return; |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | var localFunction = allLocalFuntion.Find((obj) => obj.sid == updateTemp.sid); |
| | | if (localFunction == null) |
| | | { |
| | | continue; |
| | | } |
| | | if (Ins.GatewayOnline_Local && isCloudData)//本地链接,除了涂鸦设备数据之外的云端数据不处理 |
| | | { |
| | | if (!SPK.Get3tySpk(SPK.BrandType.All3tyBrand).Contains(localFunction.spk)) |
| | | { |
| | | //MainPage.Log($"A协议更新状态:本地链接,除了涂鸦设备数据之外的云端数据不处理........"); |
| | | return; |
| | | } |
| | | } |
| | | //MainPage.Log($"A协议更新状态:{revString}"); |
| | | MainPage.Log($"A协议更新状态:{revString}"); |
| | | foreach (var attr in updateTemp.status) |
| | | { |
| | | localFunction.SetAttrState(attr.key,attr.value); |
| | | localFunction.time_stamp = temp.time_stamp; |
| | | localFunction.SetAttrState(attr.key, attr.value); |
| | | } |
| | | |
| | | if (localFunction != null) |
| | | //更新界面状态 |
| | | Function localObj = null; |
| | | switch (localFunction.spk) |
| | | { |
| | | //更新界面状态 |
| | | Function localObj = null; |
| | | switch (localFunction.spk) |
| | | { |
| | | case SPK.LightSwitch: |
| | | var localSwitch = FunctionList.List.lights.Find((obj) => obj.sid == updateTemp.sid); |
| | | if (localSwitch != null) |
| | | case SPK.ElectricEnergy: |
| | | EnergyMainPage.UpdataStatus(localFunction); |
| | | break; |
| | | case SPK.LightSwitch: |
| | | RelayPage.UpdataState(localFunction); |
| | | break; |
| | | case SPK.LightDimming: |
| | | localFunction.lastState = Language.StringByID(StringId.Brightness) + " : " + |
| | | localFunction.GetAttrState(FunctionAttributeKey.Brightness) + "%"; |
| | | DimmerPage.UpdataStates(localFunction); |
| | | break; |
| | | case SPK.ElectricFan: |
| | | localFunction.lastState = Language.StringByID(StringId.Level) + " : " + |
| | | localFunction.GetAttrState(FunctionAttributeKey.OpenLevel); |
| | | FanPage.UpdataState(localFunction); |
| | | break; |
| | | case SPK.LightRGB: |
| | | localFunction.lastState = Language.StringByID(StringId.Brightness) + " : " + localFunction.GetAttrState(FunctionAttributeKey.Brightness) + "%"; |
| | | RGBPage.UpdataStates(localFunction); |
| | | break; |
| | | case SPK.LightRGBW: |
| | | break; |
| | | case SPK.LightCCT: |
| | | localFunction.lastState = Language.StringByID(StringId.Brightness) + " : " + localFunction.GetAttrState(FunctionAttributeKey.Brightness) + "%"; |
| | | ColorTureLampPage.UpdataStatus(localFunction); |
| | | break; |
| | | case SPK.CurtainSwitch: |
| | | localFunction.lastState = localFunction.trait_on_off.curValue.ToString() == "on" ? Language.StringByID(StringId.Open) : Language.StringByID(StringId.Close); |
| | | CurtainModulePage.UpdataState(localFunction); |
| | | break; |
| | | case SPK.CurtainTrietex: |
| | | localFunction.lastState = Language.StringByID(StringId.Open) + localFunction.GetAttrState(FunctionAttributeKey.Percent) + "%"; |
| | | MotorCurtainPage.UpdataState(localFunction); |
| | | break; |
| | | case SPK.CurtainRoller: |
| | | localFunction.lastState = Language.StringByID(StringId.Open) + localFunction.GetAttrState(FunctionAttributeKey.Percent) + "%"; |
| | | RollingShutterPage.UpdataState(localFunction); |
| | | break; |
| | | case SPK.CurtainShades: |
| | | break; |
| | | case SPK.AcStandard: |
| | | Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(updateTemp.sid, updateTemp.status); |
| | | if (localFunction != null) |
| | | { |
| | | localFunction.lastState = ""; |
| | | switch (localFunction.GetAttrState(FunctionAttributeKey.Mode)) |
| | | { |
| | | localObj = localSwitch; |
| | | foreach (var attr in updateTemp.status) |
| | | { |
| | | var localAttr = localSwitch.attributes.Find((obj) => obj.key == attr.key); |
| | | if (localAttr != null) |
| | | { |
| | | localAttr.curValue = attr.value; |
| | | } |
| | | } |
| | | RelayPage.UpdataState(localSwitch); |
| | | case "cool": |
| | | localFunction.lastState = Language.StringByID(StringId.Cool); |
| | | break; |
| | | case "heat": |
| | | localFunction.lastState = Language.StringByID(StringId.Heat); |
| | | break; |
| | | case "dry": |
| | | localFunction.lastState = Language.StringByID(StringId.Dry); |
| | | break; |
| | | case "auto": |
| | | localFunction.lastState = Language.StringByID(StringId.Auto); |
| | | break; |
| | | case "fan": |
| | | localFunction.lastState = Language.StringByID(StringId.AirSupply); |
| | | break; |
| | | } |
| | | break; |
| | | case SPK.LightDimming: |
| | | var dimming = FunctionList.List.lights.Find((obj) => obj.sid == updateTemp.sid); |
| | | if (dimming != null) |
| | | switch (localFunction.GetAttrState(FunctionAttributeKey.FanSpeed)) |
| | | { |
| | | localObj = dimming; |
| | | foreach (var attr in updateTemp.status) |
| | | { |
| | | var localAttr = dimming.attributes.Find((obj) => obj.key == attr.key); |
| | | if (localAttr != null) |
| | | { |
| | | localAttr.curValue = attr.value; |
| | | } |
| | | } |
| | | dimming.lastState = Language.StringByID(StringId.Brightness) + " : " + dimming.brightness + "%"; |
| | | DimmerPage.UpdataStates(dimming); |
| | | case "high": |
| | | localFunction.lastState += " " + Language.StringByID(StringId.HighWindSpeed); |
| | | break; |
| | | case "medium": |
| | | localFunction.lastState += " " + Language.StringByID(StringId.MiddleWindSpeed); |
| | | break; |
| | | case "low": |
| | | localFunction.lastState += " " + Language.StringByID(StringId.LowWindSpeed); |
| | | break; |
| | | case "auto": |
| | | localFunction.lastState += " " + Language.StringByID(StringId.Auto); |
| | | break; |
| | | } |
| | | break; |
| | | case SPK.ElectricFan: |
| | | var fan = FunctionList.List.fans.Find((obj) => obj.sid == updateTemp.sid); |
| | | if (fan != null) |
| | | { |
| | | localObj = fan; |
| | | foreach (var attr in updateTemp.status) |
| | | { |
| | | var localAttr = fan.attributes.Find((obj) => obj.key == attr.key); |
| | | if (localAttr != null) |
| | | { |
| | | localAttr.curValue = attr.value; |
| | | } |
| | | } |
| | | fan.lastState = Language.StringByID(StringId.Level) + " : " + fan.openLevel; |
| | | FanPage.UpdataState(fan); |
| | | } |
| | | break; |
| | | case SPK.LightRGB: |
| | | var rgb = FunctionList.List.lights.Find((obj) => obj.sid == updateTemp.sid); |
| | | if (rgb != null) |
| | | { |
| | | localObj = rgb; |
| | | foreach (var attr in updateTemp.status) |
| | | { |
| | | var localAttr = rgb.attributes.Find((obj) => obj.key == attr.key); |
| | | if (localAttr != null) |
| | | { |
| | | localAttr.curValue = attr.value; |
| | | } |
| | | } |
| | | rgb.lastState = Language.StringByID(StringId.Brightness) + " : " + rgb.brightness + "%"; |
| | | RGBPage.UpdataStates(rgb); |
| | | } |
| | | break; |
| | | case SPK.LightRGBW: |
| | | break; |
| | | case SPK.LightCCT:
|
| | | var lightCCT = FunctionList.List.lights.Find((obj) => obj.sid == updateTemp.sid); |
| | | if (lightCCT != null) |
| | | { |
| | | localObj = lightCCT; |
| | | foreach (var attr in updateTemp.status) |
| | | { |
| | | var localAttr = lightCCT.attributes.Find((obj) => obj.key == attr.key); |
| | | if (localAttr != null) |
| | | { |
| | | localAttr.curValue = attr.value; |
| | | } |
| | | } |
| | | lightCCT.lastState = Language.StringByID(StringId.Brightness) + " : " + lightCCT.brightness + "%"; |
| | | ColorTureLampPage.UpdataStates(lightCCT); |
| | | } |
| | | break; |
| | | case SPK.CurtainSwitch: |
| | | var curtain = FunctionList.List.curtains.Find((obj) => obj.sid == updateTemp.sid); |
| | | if (curtain != null) |
| | | { |
| | | localObj = curtain; |
| | | foreach (var attr in updateTemp.status) |
| | | { |
| | | var localAttr = curtain.attributes.Find((obj) => obj.key == attr.key); |
| | | if (localAttr != null) |
| | | { |
| | | localAttr.curValue = attr.value; |
| | | } |
| | | } |
| | | curtain.lastState = curtain.trait_on_off.curValue.ToString() == "on" ? Language.StringByID(StringId.Open) : Language.StringByID(StringId.Close); |
| | | CurtainModulePage.UpdataState(curtain); |
| | | } |
| | | break; |
| | | case SPK.CurtainTrietex: |
| | | var trietex = FunctionList.List.curtains.Find((obj) => obj.sid == updateTemp.sid); |
| | | if (trietex != null) |
| | | { |
| | | localObj = trietex; |
| | | foreach (var attr in updateTemp.status) |
| | | { |
| | | var localAttr = trietex.attributes.Find((obj) => obj.key == attr.key); |
| | | if (localAttr != null) |
| | | { |
| | | localAttr.curValue = attr.value; |
| | | } |
| | | } |
| | | trietex.lastState = Language.StringByID(StringId.Open) + trietex.percent + "%"; |
| | | MotorCurtainPage.UpdataState(trietex); |
| | | } |
| | | break; |
| | | case SPK.CurtainRoller: |
| | | var roller = FunctionList.List.curtains.Find((obj) => obj.sid == updateTemp.sid); |
| | | if (roller != null) |
| | | { |
| | | localObj = roller; |
| | | foreach (var attr in updateTemp.status) |
| | | { |
| | | var localAttr = roller.attributes.Find((obj) => obj.key == attr.key); |
| | | if (localAttr != null) |
| | | { |
| | | localAttr.curValue = attr.value; |
| | | } |
| | | } |
| | | roller.lastState = Language.StringByID(StringId.Open) + roller.percent + "%"; |
| | | RollingShutterPage.UpdataState(roller); |
| | | } |
| | | break; |
| | | case SPK.CurtainShades: |
| | | break; |
| | | case SPK.AcStandard: |
| | | var ac = FunctionList.List.aCs.Find((obj) => obj.sid == updateTemp.sid); |
| | | if (ac != null) |
| | | { |
| | | localObj = ac; |
| | | foreach (var attr in updateTemp.status) |
| | | { |
| | | var localAttr = ac.attributes.Find((obj) => obj.key == attr.key); |
| | | if (localAttr != null) |
| | | { |
| | | localAttr.curValue = attr.value; |
| | | } |
| | | } |
| | | ac.lastState = ""; |
| | | switch (ac.GetAttrState(FunctionAttributeKey.Mode)) |
| | | { |
| | | case "cool": |
| | | ac.lastState = Language.StringByID(StringId.Cool); |
| | | break; |
| | | case "heat": |
| | | ac.lastState = Language.StringByID(StringId.Heat); |
| | | break; |
| | | case "dry": |
| | | ac.lastState = Language.StringByID(StringId.Dry); |
| | | break; |
| | | case "auto": |
| | | ac.lastState = Language.StringByID(StringId.Auto); |
| | | break; |
| | | case "fan": |
| | | ac.lastState = Language.StringByID(StringId.AirSupply); |
| | | break; |
| | | } |
| | | switch (ac.GetAttrState(FunctionAttributeKey.FanSpeed)) |
| | | { |
| | | case "high": |
| | | ac.lastState += " " + Language.StringByID(StringId.HighWindSpeed); |
| | | break; |
| | | case "medium": |
| | | ac.lastState += " " + Language.StringByID(StringId.MiddleWindSpeed); |
| | | break; |
| | | case "low": |
| | | ac.lastState += " " + Language.StringByID(StringId.LowWindSpeed); |
| | | break; |
| | | case "auto": |
| | | ac.lastState += " " + Language.StringByID(StringId.Auto); |
| | | break; |
| | | } |
| | | ac.lastState += " " + ac.GetAttrState(FunctionAttributeKey.SetTemp) + ac.tempUnitString; |
| | | ACPage.UpdataStates(ac); |
| | | } |
| | | break; |
| | | case SPK.FloorHeatStandard: |
| | | var fh = FunctionList.List.floorHeatings.Find((obj) => obj.sid == updateTemp.sid); |
| | | if (fh != null) |
| | | { |
| | | localObj = fh; |
| | | foreach (var attr in updateTemp.status) |
| | | { |
| | | var localAttr = fh.attributes.Find((obj) => obj.key == attr.key); |
| | | if (localAttr != null) |
| | | { |
| | | localAttr.curValue = attr.value; |
| | | } |
| | | } |
| | | switch (fh.trait_mode.curValue) |
| | | { |
| | | case "normal": |
| | | fh.lastState = Language.StringByID(StringId.Normal); |
| | | break; |
| | | case "day": |
| | | fh.lastState = Language.StringByID(StringId.Day); |
| | | break; |
| | | case "night": |
| | | fh.lastState = Language.StringByID(StringId.Night); |
| | | break; |
| | | case "timer": |
| | | fh.lastState = Language.StringByID(StringId.Auto); |
| | | break; |
| | | case "away": |
| | | fh.lastState = Language.StringByID(StringId.Away); |
| | | break; |
| | | } |
| | | fh.lastState += " " + fh.trait_temp.curValue + fh.tempUnitString; |
| | | FloorHeatingPage.UpdataStates(fh); |
| | | } |
| | | break; |
| | | case SPK.SensorPm25: |
| | | case SPK.SensorCO2: |
| | | case SPK.SensorTVOC: |
| | | case SPK.SensorTemperature: |
| | | case SPK.SensorHumidity: |
| | | var sensor = FunctionList.List.sensorsEnvironmentalScience.Find((obj) => obj.sid == updateTemp.sid); |
| | | if (sensor != null) |
| | | { |
| | | localObj = sensor; |
| | | foreach (var attr in updateTemp.status) |
| | | { |
| | | var localAttr = sensor.attributes.Find((obj) => obj.key == attr.key); |
| | | if (localAttr != null) |
| | | { |
| | | localAttr.curValue = attr.value; |
| | | } |
| | | } |
| | | EnvironmentalSciencePage.LoadEvent_UpdataStatus(sensor); |
| | | } |
| | | break; |
| | | case SPK.ElectricSocket: |
| | | var es = FunctionList.List.switchSockets.Find((obj) => obj.sid == updateTemp.sid); |
| | | if (es != null) |
| | | { |
| | | localObj = es; |
| | | foreach (var attr in updateTemp.status) |
| | | { |
| | | var localAttr = es.attributes.Find((obj) => obj.key == attr.key); |
| | | if (localAttr != null) |
| | | { |
| | | localAttr.curValue = attr.value; |
| | | } |
| | | } |
| | | SocketPage.UpdataState(es); |
| | | } |
| | | break; |
| | | case SPK.ElectricTV: |
| | | break;
|
| | | case SPK.ElectricTuyaAirCleaner:
|
| | | case SPK.ElectricTuyaFan:
|
| | | case SPK.ElectricTuyaWeepRobot: |
| | | case SPK.ElectricTuyaWaterValve: |
| | | case SPK.SensorPir: |
| | | case SPK.SensorDoorWindow: |
| | | case SPK.SensorSmoke: |
| | | case SPK.SensorWater: |
| | | case SPK.ClothesHanger: |
| | | case SPK.IrAC: |
| | | //设备状态推送 |
| | | Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(updateTemp.sid,updateTemp.status); |
| | | break; |
| | | } |
| | | if (localObj != null)
|
| | | {
|
| | | HomePage.UpdataFunctionStates(localObj);
|
| | | RoomPage.UpdataStates(localObj);
|
| | | FunctionPage.UpdataStates(localObj);
|
| | | ClassificationPage.UpdataInfo(localObj);
|
| | | } |
| | | localFunction.lastState += " " + localFunction.GetAttrState(FunctionAttributeKey.SetTemp) + new AC().GetTempUnitString(localFunction); |
| | | ACPage.UpdataStates(localFunction); |
| | | } |
| | | break; |
| | | case SPK.FloorHeatStandard: |
| | | switch (localFunction.GetAttrState(FunctionAttributeKey.Mode)) |
| | | { |
| | | case "normal": |
| | | localFunction.lastState = Language.StringByID(StringId.Normal); |
| | | break; |
| | | case "day": |
| | | localFunction.lastState = Language.StringByID(StringId.Day); |
| | | break; |
| | | case "night": |
| | | localFunction.lastState = Language.StringByID(StringId.Night); |
| | | break; |
| | | case "timer": |
| | | localFunction.lastState = Language.StringByID(StringId.Auto); |
| | | break; |
| | | case "away": |
| | | localFunction.lastState = Language.StringByID(StringId.Away); |
| | | break; |
| | | } |
| | | localFunction.lastState += " " + localFunction.GetAttrState(FunctionAttributeKey.SetTemp) + new FloorHeating().GetTempUnitString(localFunction); |
| | | FloorHeatingPage.UpdataStates(localFunction); |
| | | break; |
| | | case SPK.SensorPm25: |
| | | case SPK.SensorCO2: |
| | | case SPK.SensorTVOC: |
| | | case SPK.SensorTemperature: |
| | | case SPK.SensorHumidity: |
| | | if(localFunction.spk == SPK.SensorTemperature) |
| | | { |
| | | HomePage.LoadEvent_RefreshEnvirIndoorTemp(); |
| | | } |
| | | else if (localFunction.spk == SPK.SensorHumidity) |
| | | { |
| | | HomePage.LoadEvent_RefreshEnvirIndoorHumi(); |
| | | } |
| | | EnvironmentalPage.LoadEvent_UpdataStatus(localFunction); |
| | | break; |
| | | case SPK.ElectricSocket: |
| | | SocketPage.UpdataState(localFunction); |
| | | break; |
| | | case SPK.ElectricTV: |
| | | break; |
| | | case SPK.ElectricTuyaAirCleaner: |
| | | case SPK.ElectricTuyaFan: |
| | | case SPK.ElectricTuyaWeepRobot: |
| | | case SPK.ElectricTuyaWaterValve: |
| | | case SPK.SensorPir: |
| | | case SPK.SensorDoorWindow: |
| | | case SPK.SensorSmoke: |
| | | case SPK.SensorWater: |
| | | case SPK.ClothesHanger: |
| | | case SPK.AcIr: |
| | | case SPK.SenesorMegahealth: |
| | | //设备状态推送 |
| | | //状态更新 |
| | | Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(updateTemp.sid, updateTemp.status); |
| | | break; |
| | | } |
| | | |
| | | HomePage.UpdataFunctionStates(localFunction); |
| | | RoomPage.UpdataStates(localFunction); |
| | | FunctionPage.UpdataStates(localFunction); |
| | | ClassificationPage.UpdataInfo(localFunction); |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |