Beispiel #1
0
        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));
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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));
        }
Beispiel #4
0
        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));
        }
Beispiel #5
0
        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));
        }