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; }
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; }
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; }