| | |
| | | { |
| | | if (function.GetBusId() == subnetID + "_" + deviceID + "_" + receiveBytes[0]) |
| | | { |
| | | if (function.functionCategory == FunctionType.Light) |
| | | if (function.functionCategory == FunctionCategory.Light) |
| | | { |
| | | var light = function as Light; |
| | | if (receiveBytes[2] == 0 && light.on_off == 0) |
| | | //if (receiveBytes[2] == 0 && light.on_off == "off") |
| | | //{ |
| | | // break; |
| | | //} |
| | | //if (function.functionType == "Relay") |
| | | //{ |
| | | // var relay = function as Light; |
| | | // relay.on_off = receiveBytes[2] == 0 ? "off" : "on"; |
| | | // HomePage.UpdataLightView(relay); |
| | | //} |
| | | //else if (function.functionType == "Dimmer") |
| | | //{ |
| | | //var light = function as Light; |
| | | light.on_off = receiveBytes[2] == 0 ? "off" : "on"; |
| | | if (light.on_off == "on") |
| | | { |
| | | light.brightness = receiveBytes[2]; |
| | | light.lastState = Language.StringByID(StringId.Brightness) + " : " + receiveBytes[2] + "%"; |
| | | } |
| | | HomePage.UpdataFunctionStates(light); |
| | | RoomPage.UpdataStates(light); |
| | | FunctionPage.UpdataStates(light); |
| | | ClassificationPage.UpdataInfo(light); |
| | | switch (light.functionType) |
| | | { |
| | | case FunctionType.Relay: |
| | | RelayPage.UpdataState(light); |
| | | break; |
| | | case FunctionType.Dimmer: |
| | | DimmerPage.UpdataStates(light); |
| | | break; |
| | | } |
| | | if (function.functionType == "Relay") |
| | | { |
| | | var relay = function as Light; |
| | | relay.on_off = receiveBytes[2] == 0 ? 0 : 1; |
| | | HomePage.UpdataLightView(relay); |
| | | } |
| | | else if (function.functionType == "Dimmer") |
| | | { |
| | | var dimmer = function as Light; |
| | | dimmer.on_off = receiveBytes[2] == 0 ? 0 : 1; |
| | | if (dimmer.on_off == 1) |
| | | { |
| | | dimmer.brightness = receiveBytes[2]; |
| | | dimmer.lastState = Language.StringByID(StringId.Brightness) + " : " + receiveBytes[2] + "%"; |
| | | } |
| | | HomePage.UpdataLightView(dimmer); |
| | | RoomPage.UpdataStates(dimmer); |
| | | FunctionPage.UpdataStates(dimmer); |
| | | DimmerPage.UpdataStates(dimmer); |
| | | } |
| | | //} |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case Command.SetLogicLoopColorACK: |
| | | foreach (var function in DB_ResidenceData.residenceData.functionList.lights) |
| | | case Command.ReadLogicLoopColorACK: |
| | | foreach (var rgb in DB_ResidenceData.residenceData.functionList.lights) |
| | | { |
| | | if (function.GetBusId() == subnetID + "_" + deviceID + "_" + receiveBytes[0]) |
| | | if (rgb.GetBusId() == subnetID + "_" + deviceID + "_" + receiveBytes[0]) |
| | | { |
| | | if (function.functionType == "RGB") |
| | | if (rgb.functionType == FunctionType.RGB) |
| | | { |
| | | var light = function as Light; |
| | | if (receiveBytes[2] == 0 && light.on_off == 0) |
| | | { |
| | | break; |
| | | } |
| | | var rgb = function as Light; |
| | | rgb.on_off = receiveBytes[1] == 0 ? 0 : 1; |
| | | if (rgb.on_off == 1) |
| | | rgb.on_off = receiveBytes[1] > 0 ? "on" : "off"; |
| | | MainPage.Log($"Logic ACK {receiveBytes[1]}"); |
| | | if (receiveBytes[1] >0) |
| | | { |
| | | rgb.brightness = receiveBytes[1]; |
| | | rgb.lastState = Language.StringByID(StringId.Brightness) + " : " + receiveBytes[1] + "%"; |
| | |
| | | rgb.greenColor = receiveBytes[7]; |
| | | rgb.blueColor = receiveBytes[8]; |
| | | |
| | | HomePage.UpdataLightView(rgb); |
| | | HomePage.UpdataFunctionStates(rgb); |
| | | RoomPage.UpdataStates(rgb); |
| | | FunctionPage.UpdataStates(rgb); |
| | | ClassificationPage.UpdataInfo(rgb); |
| | | RGBPage.UpdataStates(rgb); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case Command.SetCurtainModelStutasACK: |
| | | case Command.ReadCurtainStutasACK: |
| | | foreach (var curtain in DB_ResidenceData.residenceData.functionList.curtains) |
| | | { |
| | | if (curtain.GetBusId() == subnetID + "_" + deviceID + "_" + receiveBytes[0]) |
| | | { |
| | | switch(receiveBytes[1]) |
| | | { |
| | | case 0: |
| | | curtain.on_off = "stop"; |
| | | break; |
| | | case 1: |
| | | curtain.on_off = "on"; |
| | | curtain.lastState = Language.StringByID(StringId.Open); |
| | | break; |
| | | case 2: |
| | | curtain.on_off = "off"; |
| | | curtain.lastState = Language.StringByID(StringId.Close); |
| | | break; |
| | | default: |
| | | if (receiveBytes[1] > 1) |
| | | { |
| | | curtain.on_off = "on"; |
| | | } |
| | | else |
| | | { |
| | | curtain.on_off = "off"; |
| | | } |
| | | curtain.openLevel = receiveBytes[1]; |
| | | curtain.lastState = Language.StringByID(StringId.Open) + curtain.openLevel + "%"; |
| | | break; |
| | | } |
| | | RoomPage.UpdataStates(curtain); |
| | | FunctionPage.UpdataStates(curtain); |
| | | HomePage.UpdataFunctionStates(curtain); |
| | | ClassificationPage.UpdataInfo(curtain); |
| | | switch (curtain.functionType) |
| | | { |
| | | case FunctionType.Curtain: |
| | | CurtainModulePage.UpdataState(curtain); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case Command.SetACModeACK: |
| | | case Command.ReadACModeACK: |
| | | foreach (var ac in DB_ResidenceData.residenceData.functionList.aCs) |
| | | { |
| | | if (ac.GetBusId() == subnetID + "_" + deviceID + "_" + receiveBytes[0]) |
| | | { |
| | | ac.curTempType = receiveBytes[1]; |
| | | ac.indoorTemp = receiveBytes[2]; |
| | | ac.on_off = receiveBytes[8] == 1 ? "on" : "off"; |
| | | ac.curModeIndex = receiveBytes[9]; |
| | | ac.curFanIndex = receiveBytes[10]; |
| | | ac.curTemp = receiveBytes[11]; |
| | | ac.lastState = ""; |
| | | switch (ac.curMode) |
| | | { |
| | | 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.curFan) |
| | | { |
| | | 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.curTemp + "°C"; |
| | | RoomPage.UpdataStates(ac); |
| | | FunctionPage.UpdataStates(ac); |
| | | HomePage.UpdataFunctionStates(ac); |
| | | ClassificationPage.UpdataInfo(ac); |
| | | ACPage.UpdataStates(ac); |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | catch (Exception ex) |