diff --git a/bundles/org.openhab.binding.yeelight/src/main/java/org/openhab/binding/yeelight/internal/handler/YeelightHandlerBase.java b/bundles/org.openhab.binding.yeelight/src/main/java/org/openhab/binding/yeelight/internal/handler/YeelightHandlerBase.java index a6218991c3..6fb35f732c 100644 --- a/bundles/org.openhab.binding.yeelight/src/main/java/org/openhab/binding/yeelight/internal/handler/YeelightHandlerBase.java +++ b/bundles/org.openhab.binding.yeelight/src/main/java/org/openhab/binding/yeelight/internal/handler/YeelightHandlerBase.java @@ -40,6 +40,7 @@ import org.openhab.core.thing.ThingTypeUID; import org.openhab.core.thing.binding.BaseThingHandler; import org.openhab.core.types.Command; import org.openhab.core.types.RefreshType; +import org.openhab.core.util.ColorUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -288,7 +289,7 @@ public abstract class YeelightHandlerBase extends BaseThingHandler void handleHSBCommand(HSBType color) { DeviceAction cAction = DeviceAction.color; - cAction.putValue(color.getRGB() & 0xFFFFFF); + cAction.putValue(ColorUtil.hsbTosRgb(color) & 0xFFFFFF); cAction.putDuration(getDuration()); DeviceManager.getInstance().doAction(deviceId, cAction); } diff --git a/bundles/org.openhab.binding.yeelight/src/main/java/org/openhab/binding/yeelight/internal/lib/services/DeviceManager.java b/bundles/org.openhab.binding.yeelight/src/main/java/org/openhab/binding/yeelight/internal/lib/services/DeviceManager.java index ff79e08bb1..e68d82d872 100644 --- a/bundles/org.openhab.binding.yeelight/src/main/java/org/openhab/binding/yeelight/internal/lib/services/DeviceManager.java +++ b/bundles/org.openhab.binding.yeelight/src/main/java/org/openhab/binding/yeelight/internal/lib/services/DeviceManager.java @@ -16,6 +16,7 @@ import java.awt.Color; import java.io.IOException; import java.net.DatagramPacket; import java.net.InetAddress; +import java.net.InetSocketAddress; import java.net.MulticastSocket; import java.net.NetworkInterface; import java.net.SocketException; @@ -127,7 +128,8 @@ public class DeviceManager { try (MulticastSocket multiSocket = new MulticastSocket(MULTI_CAST_PORT)) { multiSocket.setSoTimeout(TIMEOUT); multiSocket.setNetworkInterface(networkInterface); - multiSocket.joinGroup(multicastAddress); + multiSocket.joinGroup(new InetSocketAddress(multicastAddress, MULTI_CAST_PORT), + networkInterface); DatagramPacket dpSend = new DatagramPacket(DISCOVERY_MSG.getBytes(), DISCOVERY_MSG.getBytes().length, multicastAddress, MULTI_CAST_PORT);