public IProcessingResult ProcessCommand(IMessage message) { var smartBrickMessage = (SmartBrickMessage)message; log.Info("Thermo data" + string.Join(" ", smartBrickMessage.Payload)); var thermoWidgetMsg = new ThermoWidgetMsg(); if (smartBrickMessage.CommandCode == (byte)ThermoCommands.GetAllValues) { thermoWidgetMsg.Temperature = BitConverter.ToSingle(smartBrickMessage.Payload, 0); thermoWidgetMsg.Humidity = BitConverter.ToSingle(smartBrickMessage.Payload, 4); thermoWidgetMsg.Pressure = BitConverter.ToSingle(smartBrickMessage.Payload, 8); } List <WebSocketMessage> list = new List <WebSocketMessage>(); foreach (string key in WebSocketEndpoint.SocketDict.Keys) { WebSocketPayload webSocketPayload = new WebSocketPayload { WidgetID = 3, WidgetType = WidgetType.Thermo, Message = JObject.Parse(JsonConvert.SerializeObject(thermoWidgetMsg)) }; list.Add(new WebSocketMessage { SocketSessionID = key, Message = JsonConvert.SerializeObject(webSocketPayload) }); } return(new ProcessingResult(null, list)); }
public IProcessingResult ProcessCommand(IMessage message) { var smartBrickMessage = (SmartBrickMessage)message; log.Info("Warm floor data" + string.Join(" ", smartBrickMessage.Payload)); var warmFloorWidget = new WarmFloorWidgetMsg(); if (smartBrickMessage.CommandCode == (byte)WarmFloorCommands.GetCurrentState) { warmFloorWidget.CurrentTemperature = BitConverter.ToSingle(smartBrickMessage.Payload, 0); warmFloorWidget.TargetTemperature = BitConverter.ToSingle(smartBrickMessage.Payload, 4); warmFloorWidget.Hysteresis = BitConverter.ToSingle(smartBrickMessage.Payload, 8); warmFloorWidget.IsTurnedOn = BitConverter.ToBoolean(smartBrickMessage.Payload, 12); } List <WebSocketMessage> list = new List <WebSocketMessage>(); foreach (string key in WebSocketEndpoint.SocketDict.Keys) { WebSocketPayload webSocketPayload = new WebSocketPayload { WidgetID = 11, WidgetType = WidgetType.WarmFloor, Message = JObject.Parse(JsonConvert.SerializeObject(warmFloorWidget)) }; list.Add(new WebSocketMessage { SocketSessionID = key, Message = JsonConvert.SerializeObject(webSocketPayload) }); } return(new ProcessingResult(null, list)); }
public IProcessingResult ProcessCommand(IMessage command) { log.Info("Processing in ColorPickerSwitchModule"); var webSocketMessage = (WebSocketMessage)command; var colorPickerSwitchWidgetMsg = JsonConvert.DeserializeObject <ColorPickerSwitchWidgetMsg>(webSocketMessage.Message); var ledDriverMsg = new SmartBrickMessage(); ledDriverMsg.SmartBrickID = 20; ledDriverMsg.CommandCode = (byte)(colorPickerSwitchWidgetMsg.IsTurnedOn ? 1 : 2); if (colorPickerSwitchWidgetMsg.IsTurnedOn) { ledDriverMsg.Payload = new byte[3] { colorPickerSwitchWidgetMsg.Color1, colorPickerSwitchWidgetMsg.Color2, colorPickerSwitchWidgetMsg.Color3 }; } else { ledDriverMsg.Payload = new byte[3] { 0, 0, 0 }; } ledDriverMsg.PipeAddress = GetPipeAddress(ledDriverMsg.SmartBrickID); var dimmerMsg = new SmartBrickMessage(); dimmerMsg.SmartBrickID = 40; dimmerMsg.CommandCode = (byte)DimmerCommands.UPDATE; dimmerMsg.Payload = ledDriverMsg.Payload; dimmerMsg.PipeAddress = GetPipeAddress(dimmerMsg.SmartBrickID); var wsMsgList = new List <WebSocketMessage>(); var webSocketPayload = new WebSocketPayload() { WidgetID = 2, WidgetType = WidgetType.ColorPickerSwitch, Message = JObject.Parse(webSocketMessage.Message) }; foreach (string key in WebSocketEndpoint.SocketDict.Keys) { wsMsgList.Add(new WebSocketMessage() { SocketSessionID = key, Message = JsonConvert.SerializeObject(webSocketPayload) }); } //Update other clients with current value return(new ProcessingResult(new SmartBrickMessage[] { ledDriverMsg, dimmerMsg }, wsMsgList)); }
public IProcessingResult ProcessCommand(IMessage message) { log.Info("Processing in WarmFloorWebModule"); var webSocketMessage = (WebSocketMessage)message; var warmFloorWidgetMsg = JsonConvert.DeserializeObject <WarmFloorWidgetMsg>(webSocketMessage.Message); var sbMsg = new SmartBrickMessage() { SmartBrickID = 50, PipeAddress = GetPipeAddress(50) }; if (warmFloorWidgetMsg.Action == "ToggledState") { if (warmFloorWidgetMsg.IsTurnedOn) { sbMsg.CommandCode = (byte)WarmFloorCommands.AutoHeat; } else { sbMsg.CommandCode = (byte)WarmFloorCommands.TurnOff; } } if (warmFloorWidgetMsg.Action == "ChangedTemp") { sbMsg.CommandCode = (byte)WarmFloorCommands.SetTemp; sbMsg.Payload = BitConverter.GetBytes(warmFloorWidgetMsg.TargetTemperature); } var wsMsgList = new List <WebSocketMessage>(); var webSocketPayload = new WebSocketPayload() { WidgetID = 11, WidgetType = WidgetType.WarmFloor, Message = JObject.Parse(webSocketMessage.Message) }; foreach (string key in WebSocketEndpoint.SocketDict.Keys) { wsMsgList.Add(new WebSocketMessage() { SocketSessionID = key, Message = JsonConvert.SerializeObject(webSocketPayload) }); } //Update other clients with current value return(new ProcessingResult(new SmartBrickMessage[] { sbMsg }, wsMsgList)); }
public IProcessingResult ProcessCommand(IMessage message) { var incomingMsg = (SmartBrickMessage)message; byte rotationValue = 0; byte color1 = 0; byte color2 = 1; byte color3 = 2; if (incomingMsg.CommandCode == (byte)DimmerCommands.PRESSED_BTN) { } if (incomingMsg.CommandCode == (byte)DimmerCommands.ROTATED) { //0-255 //rotationValue = incomingMsg.Payload[0]; //color = incomingMsg.Payload[1]; color1 = incomingMsg.Payload[0]; color2 = incomingMsg.Payload[1]; color3 = incomingMsg.Payload[2]; } var ledDriverMessage = new SmartBrickMessage(); LEDDriverCommands commandCode; /* if (rotationValue == 0) * { * //all colors * if (color == 0) * { * commandCode = LEDDriverCommands.TURN_OFF; * } * else * { * commandCode = LEDDriverCommands.UPDATE_COLOR; * } * } * else * { * //all colors * if (color == 0) * { * commandCode = LEDDriverCommands.TURN_ON; * } * else * { * commandCode = LEDDriverCommands.UPDATE_COLOR; * * } * }*/ ledDriverMessage.SmartBrickID = 20; ledDriverMessage.CommandCode = (byte)LEDDriverCommands.TURN_ON; ledDriverMessage.Payload = incomingMsg.Payload;// GetColorPayload(color, rotationValue); ledDriverMessage.PipeAddress = GetPipeAddress(ledDriverMessage.SmartBrickID); var wsMessageList = new List <WebSocketMessage>(); var widgetMsg = new ColorPickerSwitchWidgetMsg() { IsTurnedOn = true,//rotationValue > 0 || color != 0, Color1 = ledDriverMessage.Payload[1], Color2 = ledDriverMessage.Payload[2], Color3 = ledDriverMessage.Payload[3], }; WebSocketPayload webSocketPayload = new WebSocketPayload() { WidgetID = 2, WidgetType = WidgetType.ColorPickerSwitch, Message = JsonConvert.SerializeObject(widgetMsg) }; foreach (string key in WebSocketEndpoint.SocketDict.Keys) { wsMessageList.Add(new WebSocketMessage() { SocketSessionID = key, Message = JsonConvert.SerializeObject(webSocketPayload) }); } //Update other clients with current value return(new ProcessingResult(new SmartBrickMessage[] { ledDriverMessage }, wsMessageList)); }