Esempio n. 1
0
        public void SetBrightness(Bulb bulb, byte brightnessPercentage)
        {
            if (brightnessPercentage > 100)
            {
                throw new InvalidOperationException("The bulb brightness percentage can not be smaller than 0 or greater than 100.");
            }

            var responseBuffer = new byte[ResponseBufferSize];

            _sessionId++;
            var requestBuffer = new List <byte>
            {
                0x11, 0x00, 0x00, 0x31
            };

            requestBuffer.AddRange(BitConverter.GetBytes(_sessionId));
            requestBuffer.AddRange(BitConverter.GetBytes(bulb.MacAddress));
            requestBuffer.Add(brightnessPercentage);
            requestBuffer.AddRange(new byte[] { 0x0, 0x0 });

            _socket.Send(requestBuffer.ToArray());
            _socket.Receive(responseBuffer);

            bulb.Brightness = brightnessPercentage;
        }
Esempio n. 2
0
        public void TurnOff(Bulb bulb)
        {
            var responseBuffer = new byte[ResponseBufferSize];

            _sessionId++;
            var requestBuffer = new List <byte>
            {
                0x0F, 0x00, 0x00, 0x32
            };

            requestBuffer.AddRange(BitConverter.GetBytes(_sessionId));
            requestBuffer.AddRange(BitConverter.GetBytes(bulb.MacAddress));
            requestBuffer.Add(0x00);

            _socket.Send(requestBuffer.ToArray());
            _socket.Receive(responseBuffer);

            bulb.IsOn = false;
        }
Esempio n. 3
0
        public void SetColor(Bulb bulb, Color color)
        {
            var responseBuffer = new byte[ResponseBufferSize];

            _sessionId++;
            var requestBuffer = new List <byte>
            {
                0x14, 0x00, 0x00, 0x36
            };

            requestBuffer.AddRange(BitConverter.GetBytes(_sessionId));
            requestBuffer.AddRange(BitConverter.GetBytes(bulb.MacAddress));
            requestBuffer.AddRange(new[] { color.A, color.B, color.G, color.R });
            requestBuffer.AddRange(new byte[] { 0x0, 0x0 });

            _socket.Send(requestBuffer.ToArray());
            _socket.Receive(responseBuffer);

            bulb.Color = color;
        }