From 3df766debb473baf88d8ddc6b7ff8749c36475c8 Mon Sep 17 00:00:00 2001 From: Hilbrand Bouwkamp Date: Tue, 28 Sep 2021 18:28:15 +0200 Subject: [PATCH] [tplinksmarthome] Added new devices EP10, EP40, KL125, and KL135 (#11282) Closes #11156 Signed-off-by: Hilbrand Bouwkamp Signed-off-by: Dave J Schoepel --- .../README.md | 177 +++++++++++------- .../TPLinkSmartHomeBindingConstants.java | 27 ++- .../TPLinkSmartHomeHandlerFactory.java | 34 ++-- .../internal/TPLinkSmartHomeThingType.java | 70 ++++--- .../internal/device/BulbDevice.java | 45 ++--- .../src/main/resources/OH-INF/thing/EP10.xml | 22 +++ .../src/main/resources/OH-INF/thing/EP40.xml | 26 +++ .../src/main/resources/OH-INF/thing/KL125.xml | 24 +++ .../src/main/resources/OH-INF/thing/KL135.xml | 24 +++ .../main/resources/OH-INF/thing/channels.xml | 8 + .../internal/device/BulbDeviceTest.java | 16 +- 11 files changed, 314 insertions(+), 159 deletions(-) create mode 100644 bundles/org.openhab.binding.tplinksmarthome/src/main/resources/OH-INF/thing/EP10.xml create mode 100644 bundles/org.openhab.binding.tplinksmarthome/src/main/resources/OH-INF/thing/EP40.xml create mode 100644 bundles/org.openhab.binding.tplinksmarthome/src/main/resources/OH-INF/thing/KL125.xml create mode 100644 bundles/org.openhab.binding.tplinksmarthome/src/main/resources/OH-INF/thing/KL135.xml diff --git a/bundles/org.openhab.binding.tplinksmarthome/README.md b/bundles/org.openhab.binding.tplinksmarthome/README.md index 6dfe23271cceb..e1df96e22350f 100644 --- a/bundles/org.openhab.binding.tplinksmarthome/README.md +++ b/bundles/org.openhab.binding.tplinksmarthome/README.md @@ -6,6 +6,19 @@ This binding adds support to control TP-Link Smart Home Devices from your local The following TP-Link Smart Devices are supported: +### EP10 Kasa Smart Wi-Fi Plug Mini + +* Power On/Off +* LED On/Off +* Wi-Fi signal strength (RSSI) + +### EP40 Kasa Smart Wi-Fi Outdoor Plug + +* Power On/Off Group +* Power On/Off 2 Outlets +* LED On/Off +* Wi-Fi signal strength (RSSI) + ### HS100 Smart Wi-Fi Plug * Power On/Off @@ -27,7 +40,7 @@ The following TP-Link Smart Devices are supported: ### HS107 Smart Wi-Fi Plug, 2-Outlets * Power On/Off Group -* Power On/Off Outlets +* Power On/Off 2 Outlets * LED On/Off * Wi-Fi signal strength (RSSI) @@ -68,12 +81,12 @@ Switching via openHAB activates the switch directly. ### HS300 Smart Wi-Fi Power Strip * Power On/Off Group -* Power On/Off Outlets -* Energy readings Outlets +* Power On/Off 6 Outlets +* Energy readings 6 Outlets * LED On/Off * Wi-Fi signal strength (RSSI) -### KB100 Kasa Smart Light Bulb +### LB100 Smart Wi-Fi LED Bulb with Dimmable Light * Power On/Off * Adjust the brightness @@ -82,86 +95,46 @@ Switching via openHAB activates the switch directly. Switching and Brightness is done using the `brightness` channel. -### KB130 Kasa Multi-color Smart Light Bulb +### LB110 Smart Wi-Fi LED Bulb with Dimmable Light * Power On/Off -* Fine-tune colors -* Adjust light appearance from soft white (2500k) to daylight (9000k) * Adjust the brightness * Actual power usage * Wi-Fi signal strength (RSSI) -Switching, Brightness and Color is done using the `color` channel. - -### KP100 Kasa Wi-Fi Smart Plug - Slim Edition - -* Power On/Off -* LED On/Off -* Wi-Fi signal strength (RSSI) - -### KP105 Kasa Wi-Fi Smart Plug - Slim Edition - -* Power On/Off -* LED On/Off -* Wi-Fi signal strength (RSSI) - -### KP115 Kasa Wi-Fi Smart Plug with Energy Monitoring - Slim Edition - -* Power On/Off -* Energy readings -* LED On/Off -* Wi-Fi signal strength (RSSI) - -### KP200 Smart Wi-Fi Power Outlet, 2-Sockets - -* Power On/Off Group -* Power On/Off Outlets -* LED On/Off -* Wi-Fi signal strength (RSSI) - -### KP303 Smart Wi-Fi Power Outlet, 3-Sockets - -* Power On/Off Group -* Power On/Off Outlets -* LED On/Off -* Wi-Fi signal strength (RSSI) - -### KP400 Smart Outdoor Plug - -* Power On/Off Group -* Power On/Off Outlets -* LED On/Off -* Wi-Fi signal strength (RSSI) +Switching and Brightness is done using the `brightness` channel. -### LB100 Smart Wi-Fi LED Bulb with Dimmable Light +### LB120 Smart Wi-Fi LED Bulb with Tunable White Light * Power On/Off +* Adjust light appearance from soft white (2700k) to daylight (6500k) * Adjust the brightness * Actual power usage * Wi-Fi signal strength (RSSI) Switching and Brightness is done using the `brightness` channel. -### LB110 Smart Wi-Fi LED Bulb with Dimmable Light +### LB130 Smart Wi-Fi LED Bulb with Color Changing Hue * Power On/Off +* Fine-tune colors +* Adjust light appearance from soft white (2500k) to daylight (9000k) * Adjust the brightness * Actual power usage * Wi-Fi signal strength (RSSI) -Switching and Brightness is done using the `brightness` channel. +Switching, Brightness and Color is done using the `color` channel. -### LB120 Smart Wi-Fi LED Bulb with Tunable White Light +### LB200 Smart Wi-Fi LED Bulb with Dimmable Light * Power On/Off -* Adjust light appearance from soft white (2700k) to daylight (6500k) * Adjust the brightness * Actual power usage * Wi-Fi signal strength (RSSI) Switching and Brightness is done using the `brightness` channel. -### LB130 Smart Wi-Fi LED Bulb with Color Changing Hue +### LB230 Smart Wi-Fi LED Bulb with Color Changing Hue * Power On/Off * Fine-tune colors @@ -172,7 +145,7 @@ Switching and Brightness is done using the `brightness` channel. Switching, Brightness and Color is done using the `color` channel. -### LB200 Smart Wi-Fi LED Bulb with Dimmable Light +### KB100 Kasa Smart Light Bulb * Power On/Off * Adjust the brightness @@ -181,7 +154,7 @@ Switching, Brightness and Color is done using the `color` channel. Switching and Brightness is done using the `brightness` channel. -### LB230 Smart Wi-Fi LED Bulb with Color Changing Hue +### KB130 Kasa Multi-color Smart Light Bulb * Power On/Off * Fine-tune colors @@ -229,6 +202,17 @@ Switching and Brightness is done using the `brightness` channel. Switching and Brightness is done using the `brightness` channel. +### KL125 Kasa Smart Wi-Fi Bulb Multicolor + +* Power On/Off +* Fine-tune colors +* Adjust light appearance from soft white (2500k) to daylight (6500k) +* Adjust the brightness +* Actual power usage +* Wi-Fi signal strength (RSSI) + +Switching, Brightness and Color is done using the `color` channel. + ### KL130 Smart Wi-Fi LED Bulb with Color Changing Hue * Power On/Off @@ -240,6 +224,57 @@ Switching and Brightness is done using the `brightness` channel. Switching, Brightness and Color is done using the `color` channel. +### KL135 Kasa Smart Wi-Fi Bulb Multicolor + +* Power On/Off +* Fine-tune colors +* Adjust light appearance from soft white (2500k) to daylight (6500k) +* Adjust the brightness +* Actual power usage +* Wi-Fi signal strength (RSSI) + +Switching, Brightness and Color is done using the `color` channel. + +### KP100 Kasa Wi-Fi Smart Plug - Slim Edition + +* Power On/Off +* LED On/Off +* Wi-Fi signal strength (RSSI) + +### KP105 Kasa Wi-Fi Smart Plug - Slim Edition + +* Power On/Off +* LED On/Off +* Wi-Fi signal strength (RSSI) + +### KP115 Kasa Wi-Fi Smart Plug with Energy Monitoring - Slim Edition + +* Power On/Off +* Energy readings +* LED On/Off +* Wi-Fi signal strength (RSSI) + +### KP200 Smart Wi-Fi Power Outlet, 2-Sockets + +* Power On/Off Group +* Power On/Off 2 Outlets +* LED On/Off +* Wi-Fi signal strength (RSSI) + +### KP303 Smart Wi-Fi Power Outlet, 3-Sockets + +* Power On/Off Group +* Power On/Off 3 Outlets +* LED On/Off +* Wi-Fi signal strength (RSSI) + +### KP400 Smart Outdoor Plug + +* Power On/Off Group +* Power On/Off 2 Outlets +* LED On/Off +* Wi-Fi signal strength (RSSI) + ### RE270K AC750 Wi-Fi Range Extender with Smart Plug * Power On/Off (readonly) @@ -296,21 +331,21 @@ Either `deviceId` or `ipAddress` must be set. All devices support some of the following channels: -| Channel Type ID | Item Type | Description | Thing types supporting this channel | -|---------------------|--------------------------|------------------------------------------------|----------------------------------------------------------------------------------------------------| -| switch | Switch | Power the device on or off. | HS100, HS103, HS105, HS107, HS110, HS200, HS210, HS300, KP100, KP105, KP115, KP200, KP303, KP400, RE270K, RE370K | -| brightness | Dimmer | Set the brightness of device or dimmer. | HS220, KB100, KL50, KL60, KL110, KL120, LB100, LB110, LB120, LB200 | -| colorTemperature | Dimmer | Set the color temperature in percentage. | KB130, KL120, KL130, LB120, LB130, LB230 | -| colorTemperatureAbs | Number | Set the color temperature in Kelvin. | KB130, KL120, KL130, LB120, LB130, LB230 | -| color | Color | Set the color of the light. | KB130, KL130, LB130, LB230 | -| power | Number:Power | Actual energy usage in Watt. | HS110, HS300, KLxxx, KP115, LBxxx, | -| eneryUsage | Number:Energy | Energy Usage in kWh. | HS110, HS300, KP115 | -| current | Number:ElectricCurrent | Actual current usage in Ampere. | HS110, HS300, KP115 | -| voltage | Number:ElectricPotential | Actual voltage usage in Volt. | HS110, HS300, KP115 | -| led | Switch | Switch the status LED on the device on or off. | HS100, HS103, HS105, HS107, HS110, HS200, HS210, HS220, HS300, KP100, KP105, KP115, KP303, KP200, KP400 | -| rssi | Number:Power | Wi-Fi signal strength indicator in dBm. | All | - -The outlet devices (HS107, HS300, KP200, KP400) have group channels. +| Channel Type ID | Item Type | Description | Thing types supporting this channel | +|---------------------|--------------------------|------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------| +| switch | Switch | Power the device on or off. | EP10, EP40, HS100, HS103, HS105, HS107, HS110, HS200, HS210, HS300, KP100, KP105, KP115, KP200, KP303, KP400, RE270K, RE370K | +| brightness | Dimmer | Set the brightness of device or dimmer. | HS220, KB100, KL50, KL60, KL110, KL120, LB100, LB110, LB120, LB200 | +| colorTemperature | Dimmer | Set the color temperature in percentage. | KB130, KL120, KL125, KL130, KL135, LB120, LB130, LB230 | +| colorTemperatureAbs | Number | Set the color temperature in Kelvin. | KB130, KL120, KL125, KL130, KL135, LB120, LB130, LB230 | +| color | Color | Set the color of the light. | KB130, KL125, KL130, KL135, LB130, LB230 | +| power | Number:Power | Actual energy usage in Watt. | HS110, HS300, KLxxx, KP115, LBxxx, | +| eneryUsage | Number:Energy | Energy Usage in kWh. | HS110, HS300, KP115 | +| current | Number:ElectricCurrent | Actual current usage in Ampere. | HS110, HS300, KP115 | +| voltage | Number:ElectricPotential | Actual voltage usage in Volt. | HS110, HS300, KP115 | +| led | Switch | Switch the status LED on the device on or off. | EP10, EP40, HS100, HS103, HS105, HS107, HS110, HS200, HS210, HS220, HS300, KP100, KP105, KP115, KP303, KP200, KP400 | +| rssi | Number:Power | Wi-Fi signal strength indicator in dBm. | All | + +The outlet devices (EP40, HS107, HS300, KP200, KP400) have group channels. This means the channel is prefixed with the group id. The following group ids are available: diff --git a/bundles/org.openhab.binding.tplinksmarthome/src/main/java/org/openhab/binding/tplinksmarthome/internal/TPLinkSmartHomeBindingConstants.java b/bundles/org.openhab.binding.tplinksmarthome/src/main/java/org/openhab/binding/tplinksmarthome/internal/TPLinkSmartHomeBindingConstants.java index b8e243a5a5778..ba0126afccb68 100644 --- a/bundles/org.openhab.binding.tplinksmarthome/src/main/java/org/openhab/binding/tplinksmarthome/internal/TPLinkSmartHomeBindingConstants.java +++ b/bundles/org.openhab.binding.tplinksmarthome/src/main/java/org/openhab/binding/tplinksmarthome/internal/TPLinkSmartHomeBindingConstants.java @@ -27,6 +27,29 @@ @NonNullByDefault public final class TPLinkSmartHomeBindingConstants { + public enum ColorScales { + NOT_SUPPORTED(0, 0), + K_2500_6500(2500, 6500), + K_2700_6500(2700, 6500), + K_2500_9000(2500, 9000); + + private final int warm; + private final int cool; + + ColorScales(final int warm, final int cool) { + this.warm = warm; + this.cool = cool; + } + + public int getWarm() { + return warm; + } + + public int getCool() { + return cool; + } + } + public static final String BINDING_ID = "tplinksmarthome"; // List of all switch channel ids @@ -40,10 +63,6 @@ public final class TPLinkSmartHomeBindingConstants { public static final String CHANNEL_COLOR = "color"; public static final String CHANNEL_COLOR_TEMPERATURE = "colorTemperature"; public static final String CHANNEL_COLOR_TEMPERATURE_ABS = "colorTemperatureAbs"; - public static final int COLOR_TEMPERATURE_1_MIN = 2700; - public static final int COLOR_TEMPERATURE_1_MAX = 6500; - public static final int COLOR_TEMPERATURE_2_MIN = 2500; - public static final int COLOR_TEMPERATURE_2_MAX = 9000; public static final Set CHANNELS_BULB_SWITCH = Stream.of(CHANNEL_BRIGHTNESS, CHANNEL_COLOR, CHANNEL_COLOR_TEMPERATURE, CHANNEL_COLOR_TEMPERATURE_ABS, CHANNEL_SWITCH).collect(Collectors.toSet()); diff --git a/bundles/org.openhab.binding.tplinksmarthome/src/main/java/org/openhab/binding/tplinksmarthome/internal/TPLinkSmartHomeHandlerFactory.java b/bundles/org.openhab.binding.tplinksmarthome/src/main/java/org/openhab/binding/tplinksmarthome/internal/TPLinkSmartHomeHandlerFactory.java index f55409173dea8..3e71a709b7f36 100644 --- a/bundles/org.openhab.binding.tplinksmarthome/src/main/java/org/openhab/binding/tplinksmarthome/internal/TPLinkSmartHomeHandlerFactory.java +++ b/bundles/org.openhab.binding.tplinksmarthome/src/main/java/org/openhab/binding/tplinksmarthome/internal/TPLinkSmartHomeHandlerFactory.java @@ -12,8 +12,7 @@ */ package org.openhab.binding.tplinksmarthome.internal; -import static org.openhab.binding.tplinksmarthome.internal.TPLinkSmartHomeBindingConstants.*; -import static org.openhab.binding.tplinksmarthome.internal.TPLinkSmartHomeThingType.*; +import static org.openhab.binding.tplinksmarthome.internal.TPLinkSmartHomeThingType.SUPPORTED_THING_TYPES; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -46,13 +45,13 @@ public class TPLinkSmartHomeHandlerFactory extends BaseThingHandlerFactory { private @NonNullByDefault({}) TPLinkIpAddressService ipAddressService; @Override - public boolean supportsThingType(ThingTypeUID thingTypeUID) { + public boolean supportsThingType(final ThingTypeUID thingTypeUID) { return SUPPORTED_THING_TYPES.contains(thingTypeUID); } @Nullable @Override - protected ThingHandler createHandler(Thing thing) { + protected ThingHandler createHandler(final Thing thing) { final ThingTypeUID thingTypeUID = thing.getThingTypeUID(); final TPLinkSmartHomeThingType type = TPLinkSmartHomeThingType.THING_TYPE_MAP.get(thingTypeUID); @@ -63,23 +62,19 @@ protected ThingHandler createHandler(Thing thing) { switch (type.getDeviceType()) { case BULB: - if (TPLinkSmartHomeThingType.isBulbDeviceWithTemperatureColor1(thingTypeUID)) { - device = new BulbDevice(thingTypeUID, COLOR_TEMPERATURE_1_MIN, COLOR_TEMPERATURE_1_MAX); - } else if (TPLinkSmartHomeThingType.isBulbDeviceWithTemperatureColor2(thingTypeUID)) { - device = new BulbDevice(thingTypeUID, COLOR_TEMPERATURE_2_MIN, COLOR_TEMPERATURE_2_MAX); - } else { - device = new BulbDevice(thingTypeUID); - } + device = new BulbDevice(type); break; case DIMMER: device = new DimmerDevice(); break; case PLUG: - if (HS110.is(thingTypeUID) || KP115.is(thingTypeUID)) { - device = new EnergySwitchDevice(); - } else { - device = new SwitchDevice(); - } + device = new SwitchDevice(); + break; + case PLUG_WITH_ENERGY: + device = new EnergySwitchDevice(); + break; + case STRIP: + device = new PowerStripDevice(type); break; case SWITCH: device = new SwitchDevice(); @@ -87,9 +82,6 @@ protected ThingHandler createHandler(Thing thing) { case RANGE_EXTENDER: device = new RangeExtenderDevice(); break; - case STRIP: - device = new PowerStripDevice(type); - break; default: return null; } @@ -97,11 +89,11 @@ protected ThingHandler createHandler(Thing thing) { } @Reference - protected void setTPLinkIpAddressCache(TPLinkIpAddressService ipAddressCache) { + protected void setTPLinkIpAddressCache(final TPLinkIpAddressService ipAddressCache) { this.ipAddressService = ipAddressCache; } - protected void unsetTPLinkIpAddressCache(TPLinkIpAddressService ipAddressCache) { + protected void unsetTPLinkIpAddressCache(final TPLinkIpAddressService ipAddressCache) { this.ipAddressService = null; } } diff --git a/bundles/org.openhab.binding.tplinksmarthome/src/main/java/org/openhab/binding/tplinksmarthome/internal/TPLinkSmartHomeThingType.java b/bundles/org.openhab.binding.tplinksmarthome/src/main/java/org/openhab/binding/tplinksmarthome/internal/TPLinkSmartHomeThingType.java index 93a09cb0c210e..35411f75ddcfe 100644 --- a/bundles/org.openhab.binding.tplinksmarthome/src/main/java/org/openhab/binding/tplinksmarthome/internal/TPLinkSmartHomeThingType.java +++ b/bundles/org.openhab.binding.tplinksmarthome/src/main/java/org/openhab/binding/tplinksmarthome/internal/TPLinkSmartHomeThingType.java @@ -18,9 +18,9 @@ import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; -import java.util.stream.Stream; import org.eclipse.jdt.annotation.NonNullByDefault; +import org.openhab.binding.tplinksmarthome.internal.TPLinkSmartHomeBindingConstants.ColorScales; import org.openhab.core.thing.ThingTypeUID; /** @@ -34,27 +34,30 @@ public enum TPLinkSmartHomeThingType { // Bulb Thing Type UIDs KB100("kb100", DeviceType.BULB), - KB130("kb130", DeviceType.BULB), + KB130("kb130", DeviceType.BULB, ColorScales.K_2500_9000), LB100("lb100", DeviceType.BULB), LB110("lb110", DeviceType.BULB), - LB120("lb120", DeviceType.BULB), - LB130("lb130", DeviceType.BULB), + LB120("lb120", DeviceType.BULB, ColorScales.K_2700_6500), + LB130("lb130", DeviceType.BULB, ColorScales.K_2500_9000), LB200("lb200", DeviceType.BULB), - LB230("lb230", DeviceType.BULB), + LB230("lb230", DeviceType.BULB, ColorScales.K_2500_9000), KL50("kl50", DeviceType.BULB), KL60("kl60", DeviceType.BULB), KL110("kl110", DeviceType.BULB), - KL120("kl120", DeviceType.BULB), - KL130("kl130", DeviceType.BULB), + KL120("kl120", DeviceType.BULB, ColorScales.K_2700_6500), + KL125("kl125", DeviceType.BULB, ColorScales.K_2500_6500), + KL130("kl130", DeviceType.BULB, ColorScales.K_2500_9000), + KL135("kl135", DeviceType.BULB, ColorScales.K_2500_6500), // Plug Thing Type UIDs + EP10("ep10", DeviceType.PLUG), HS100("hs100", DeviceType.PLUG), HS103("hs103", DeviceType.PLUG), HS105("hs105", DeviceType.PLUG), - HS110("hs110", DeviceType.PLUG), + HS110("hs110", DeviceType.PLUG_WITH_ENERGY), KP100("kp100", DeviceType.PLUG), KP105("kp105", DeviceType.PLUG), - KP115("kp115", DeviceType.PLUG), + KP115("kp115", DeviceType.PLUG_WITH_ENERGY), // Switch Thing Type UIDs HS200("hs200", DeviceType.SWITCH), @@ -64,6 +67,7 @@ public enum TPLinkSmartHomeThingType { HS220("hs220", DeviceType.DIMMER), // Power Strip Thing Type UIDs. + EP40("ep40", DeviceType.STRIP, 2), HS107("hs107", DeviceType.STRIP, 2), HS300("hs300", DeviceType.STRIP, 6), KP200("kp200", DeviceType.STRIP, 2), @@ -91,22 +95,29 @@ public enum TPLinkSmartHomeThingType { */ public static final Map THING_TYPE_MAP = SUPPORTED_THING_TYPES_LIST.stream() .collect(Collectors.toMap(TPLinkSmartHomeThingType::thingTypeUID, Function.identity())); - private static final List BULB_WITH_TEMPERATURE_COLOR_1 = Stream.of(LB120, KL120) - .collect(Collectors.toList()); - private static final List BULB_WITH_TEMPERATURE_COLOR_2 = Stream - .of(KB130, KL130, LB130, LB230).collect(Collectors.toList()); private final ThingTypeUID thingTypeUID; private final DeviceType type; + private final ColorScales colorScales; private final int sockets; TPLinkSmartHomeThingType(final String name, final DeviceType type) { this(name, type, 0); } - TPLinkSmartHomeThingType(final String name, final DeviceType type, int sockets) { + TPLinkSmartHomeThingType(final String name, final DeviceType type, final ColorScales colorScales) { + this(name, type, colorScales, 0); + } + + TPLinkSmartHomeThingType(final String name, final DeviceType type, final int sockets) { + this(name, type, ColorScales.NOT_SUPPORTED, sockets); + } + + TPLinkSmartHomeThingType(final String name, final DeviceType type, final ColorScales colorScales, + final int sockets) { thingTypeUID = new ThingTypeUID(TPLinkSmartHomeBindingConstants.BINDING_ID, name); this.type = type; + this.colorScales = colorScales; this.sockets = sockets; } @@ -132,29 +143,10 @@ public int getSockets() { } /** - * Returns true if the given {@link ThingTypeUID} matches a device that is a bulb with color temperature ranges 1 - * (2700 to 6500k). - * - * @param thingTypeUID if the check - * @return true if it's a bulb device with color temperature range 1 - */ - public static boolean isBulbDeviceWithTemperatureColor1(ThingTypeUID thingTypeUID) { - return isDevice(thingTypeUID, BULB_WITH_TEMPERATURE_COLOR_1); - } - - /** - * Returns true if the given {@link ThingTypeUID} matches a device that is a bulb with color temperature ranges 2 - * (2500 to 9000k). - * - * @param thingTypeUID if the check - * @return true if it's a bulb device with color temperature range 2 + * @return Returns the color temperature color scales if supported or else returns null */ - public static boolean isBulbDeviceWithTemperatureColor2(ThingTypeUID thingTypeUID) { - return isDevice(thingTypeUID, BULB_WITH_TEMPERATURE_COLOR_2); - } - - private static boolean isDevice(ThingTypeUID thingTypeUID, List thingTypes) { - return thingTypes.stream().anyMatch(t -> t.is(thingTypeUID)); + public ColorScales getColorScales() { + return colorScales; } /** @@ -163,7 +155,7 @@ private static boolean isDevice(ThingTypeUID thingTypeUID, List + + + + + TP-Link EP10 Kasa Smart Wi-Fi Plug Mini + PowerOutlet + + + + + + + + deviceId + + + + diff --git a/bundles/org.openhab.binding.tplinksmarthome/src/main/resources/OH-INF/thing/EP40.xml b/bundles/org.openhab.binding.tplinksmarthome/src/main/resources/OH-INF/thing/EP40.xml new file mode 100644 index 0000000000000..bb5f1fc5a414b --- /dev/null +++ b/bundles/org.openhab.binding.tplinksmarthome/src/main/resources/OH-INF/thing/EP40.xml @@ -0,0 +1,26 @@ + + + + + + TP-Link EP40 Kasa Smart Wi-Fi Outdoor Plug + PowerOutlet + + + + + + + + + + + + deviceId + + + + diff --git a/bundles/org.openhab.binding.tplinksmarthome/src/main/resources/OH-INF/thing/KL125.xml b/bundles/org.openhab.binding.tplinksmarthome/src/main/resources/OH-INF/thing/KL125.xml new file mode 100644 index 0000000000000..3583b6057f72f --- /dev/null +++ b/bundles/org.openhab.binding.tplinksmarthome/src/main/resources/OH-INF/thing/KL125.xml @@ -0,0 +1,24 @@ + + + + + + TP-Link KL125 Kasa Smart Wi-Fi Bulb Multicolor + Lightbulb + + + + + + + + + + deviceId + + + + diff --git a/bundles/org.openhab.binding.tplinksmarthome/src/main/resources/OH-INF/thing/KL135.xml b/bundles/org.openhab.binding.tplinksmarthome/src/main/resources/OH-INF/thing/KL135.xml new file mode 100644 index 0000000000000..297014467b64f --- /dev/null +++ b/bundles/org.openhab.binding.tplinksmarthome/src/main/resources/OH-INF/thing/KL135.xml @@ -0,0 +1,24 @@ + + + + + + TP-Link KL135 Kasa Smart Wi-Fi Bulb Multicolor + Lightbulb + + + + + + + + + + deviceId + + + + diff --git a/bundles/org.openhab.binding.tplinksmarthome/src/main/resources/OH-INF/thing/channels.xml b/bundles/org.openhab.binding.tplinksmarthome/src/main/resources/OH-INF/thing/channels.xml index ba74f5f3bc724..e02a37e043559 100644 --- a/bundles/org.openhab.binding.tplinksmarthome/src/main/resources/OH-INF/thing/channels.xml +++ b/bundles/org.openhab.binding.tplinksmarthome/src/main/resources/OH-INF/thing/channels.xml @@ -36,6 +36,14 @@ + + Number + + This channel supports adjusting the color temperature from 2500K to 6500K. + ColorLight + + + Number:Power diff --git a/bundles/org.openhab.binding.tplinksmarthome/src/test/java/org/openhab/binding/tplinksmarthome/internal/device/BulbDeviceTest.java b/bundles/org.openhab.binding.tplinksmarthome/src/test/java/org/openhab/binding/tplinksmarthome/internal/device/BulbDeviceTest.java index dee98eaab7d63..35d6bba45b27a 100644 --- a/bundles/org.openhab.binding.tplinksmarthome/src/test/java/org/openhab/binding/tplinksmarthome/internal/device/BulbDeviceTest.java +++ b/bundles/org.openhab.binding.tplinksmarthome/src/test/java/org/openhab/binding/tplinksmarthome/internal/device/BulbDeviceTest.java @@ -12,9 +12,16 @@ */ package org.openhab.binding.tplinksmarthome.internal.device; -import static org.junit.jupiter.api.Assertions.*; -import static org.openhab.binding.tplinksmarthome.internal.ChannelUIDConstants.*; -import static org.openhab.binding.tplinksmarthome.internal.TPLinkSmartHomeBindingConstants.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.openhab.binding.tplinksmarthome.internal.ChannelUIDConstants.CHANNEL_UID_BRIGHTNESS; +import static org.openhab.binding.tplinksmarthome.internal.ChannelUIDConstants.CHANNEL_UID_COLOR; +import static org.openhab.binding.tplinksmarthome.internal.ChannelUIDConstants.CHANNEL_UID_COLOR_TEMPERATURE; +import static org.openhab.binding.tplinksmarthome.internal.ChannelUIDConstants.CHANNEL_UID_COLOR_TEMPERATURE_ABS; +import static org.openhab.binding.tplinksmarthome.internal.ChannelUIDConstants.CHANNEL_UID_ENERGY_POWER; +import static org.openhab.binding.tplinksmarthome.internal.ChannelUIDConstants.CHANNEL_UID_OTHER; +import static org.openhab.binding.tplinksmarthome.internal.ChannelUIDConstants.CHANNEL_UID_SWITCH; import static org.openhab.binding.tplinksmarthome.internal.TPLinkSmartHomeThingType.LB130; import java.io.IOException; @@ -40,8 +47,7 @@ public class BulbDeviceTest extends DeviceTestBase { private static final String DEVICE_OFF = "bulb_get_sysinfo_response_off"; public BulbDeviceTest() throws IOException { - super(new BulbDevice(LB130.thingTypeUID(), COLOR_TEMPERATURE_2_MIN, COLOR_TEMPERATURE_2_MAX), - "bulb_get_sysinfo_response_on"); + super(new BulbDevice(LB130), "bulb_get_sysinfo_response_on"); } @BeforeEach