mirror of
https://github.com/openhab/openhab-addons.git
synced 2025-01-10 15:11:59 +01:00
[tplinksmarthome] Added new devices EP10, EP40, KL125, and KL135 (#11282)
Closes #11156 Signed-off-by: Hilbrand Bouwkamp <hilbrand@h72.nl>
This commit is contained in:
parent
d3d1c7ae0a
commit
b35c00c752
@ -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:
|
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
|
### HS100 Smart Wi-Fi Plug
|
||||||
|
|
||||||
* Power On/Off
|
* Power On/Off
|
||||||
@ -27,7 +40,7 @@ The following TP-Link Smart Devices are supported:
|
|||||||
### HS107 Smart Wi-Fi Plug, 2-Outlets
|
### HS107 Smart Wi-Fi Plug, 2-Outlets
|
||||||
|
|
||||||
* Power On/Off Group
|
* Power On/Off Group
|
||||||
* Power On/Off Outlets
|
* Power On/Off 2 Outlets
|
||||||
* LED On/Off
|
* LED On/Off
|
||||||
* Wi-Fi signal strength (RSSI)
|
* Wi-Fi signal strength (RSSI)
|
||||||
|
|
||||||
@ -68,68 +81,8 @@ Switching via openHAB activates the switch directly.
|
|||||||
### HS300 Smart Wi-Fi Power Strip
|
### HS300 Smart Wi-Fi Power Strip
|
||||||
|
|
||||||
* Power On/Off Group
|
* Power On/Off Group
|
||||||
* Power On/Off Outlets
|
* Power On/Off 6 Outlets
|
||||||
* Energy readings Outlets
|
* Energy readings 6 Outlets
|
||||||
* LED On/Off
|
|
||||||
* Wi-Fi signal strength (RSSI)
|
|
||||||
|
|
||||||
### KB100 Kasa Smart Light Bulb
|
|
||||||
|
|
||||||
* Power On/Off
|
|
||||||
* Adjust the brightness
|
|
||||||
* Actual power usage
|
|
||||||
* Wi-Fi signal strength (RSSI)
|
|
||||||
|
|
||||||
Switching and Brightness is done using the `brightness` channel.
|
|
||||||
|
|
||||||
### KB130 Kasa Multi-color Smart Light Bulb
|
|
||||||
|
|
||||||
* 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
|
* LED On/Off
|
||||||
* Wi-Fi signal strength (RSSI)
|
* Wi-Fi signal strength (RSSI)
|
||||||
|
|
||||||
@ -192,6 +145,26 @@ Switching and Brightness is done using the `brightness` channel.
|
|||||||
|
|
||||||
Switching, Brightness and Color is done using the `color` channel.
|
Switching, Brightness and Color is done using the `color` channel.
|
||||||
|
|
||||||
|
### KB100 Kasa Smart Light Bulb
|
||||||
|
|
||||||
|
* Power On/Off
|
||||||
|
* Adjust the brightness
|
||||||
|
* Actual power usage
|
||||||
|
* Wi-Fi signal strength (RSSI)
|
||||||
|
|
||||||
|
Switching and Brightness is done using the `brightness` channel.
|
||||||
|
|
||||||
|
### KB130 Kasa Multi-color Smart Light Bulb
|
||||||
|
|
||||||
|
* 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.
|
||||||
|
|
||||||
### KL50 Kasa Filament Smart Bulb, Soft White
|
### KL50 Kasa Filament Smart Bulb, Soft White
|
||||||
|
|
||||||
* Power On/Off
|
* Power On/Off
|
||||||
@ -229,6 +202,17 @@ Switching and Brightness is done using the `brightness` channel.
|
|||||||
|
|
||||||
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
|
### KL130 Smart Wi-Fi LED Bulb with Color Changing Hue
|
||||||
|
|
||||||
* Power On/Off
|
* 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.
|
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
|
### RE270K AC750 Wi-Fi Range Extender with Smart Plug
|
||||||
|
|
||||||
* Power On/Off (readonly)
|
* Power On/Off (readonly)
|
||||||
@ -296,21 +331,21 @@ Either `deviceId` or `ipAddress` must be set.
|
|||||||
|
|
||||||
All devices support some of the following channels:
|
All devices support some of the following channels:
|
||||||
|
|
||||||
| Channel Type ID | Item Type | Description | Thing types supporting this channel |
|
| 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 |
|
| 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 |
|
| 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 |
|
| 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, KL130, 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, KL130, 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, |
|
| power | Number:Power | Actual energy usage in Watt. | HS110, HS300, KLxxx, KP115, LBxxx, |
|
||||||
| eneryUsage | Number:Energy | Energy Usage in kWh. | HS110, HS300, KP115 |
|
| eneryUsage | Number:Energy | Energy Usage in kWh. | HS110, HS300, KP115 |
|
||||||
| current | Number:ElectricCurrent | Actual current usage in Ampere. | 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 |
|
| 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 |
|
| 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 |
|
| rssi | Number:Power | Wi-Fi signal strength indicator in dBm. | All |
|
||||||
|
|
||||||
The outlet devices (HS107, HS300, KP200, KP400) have group channels.
|
The outlet devices (EP40, HS107, HS300, KP200, KP400) have group channels.
|
||||||
This means the channel is prefixed with the group id.
|
This means the channel is prefixed with the group id.
|
||||||
The following group ids are available:
|
The following group ids are available:
|
||||||
|
|
||||||
|
@ -27,6 +27,29 @@ import org.eclipse.jdt.annotation.NonNullByDefault;
|
|||||||
@NonNullByDefault
|
@NonNullByDefault
|
||||||
public final class TPLinkSmartHomeBindingConstants {
|
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";
|
public static final String BINDING_ID = "tplinksmarthome";
|
||||||
|
|
||||||
// List of all switch channel ids
|
// 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 = "color";
|
||||||
public static final String CHANNEL_COLOR_TEMPERATURE = "colorTemperature";
|
public static final String CHANNEL_COLOR_TEMPERATURE = "colorTemperature";
|
||||||
public static final String CHANNEL_COLOR_TEMPERATURE_ABS = "colorTemperatureAbs";
|
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<String> CHANNELS_BULB_SWITCH = Stream.of(CHANNEL_BRIGHTNESS, CHANNEL_COLOR,
|
public static final Set<String> CHANNELS_BULB_SWITCH = Stream.of(CHANNEL_BRIGHTNESS, CHANNEL_COLOR,
|
||||||
CHANNEL_COLOR_TEMPERATURE, CHANNEL_COLOR_TEMPERATURE_ABS, CHANNEL_SWITCH).collect(Collectors.toSet());
|
CHANNEL_COLOR_TEMPERATURE, CHANNEL_COLOR_TEMPERATURE_ABS, CHANNEL_SWITCH).collect(Collectors.toSet());
|
||||||
|
@ -12,8 +12,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.openhab.binding.tplinksmarthome.internal;
|
package org.openhab.binding.tplinksmarthome.internal;
|
||||||
|
|
||||||
import static org.openhab.binding.tplinksmarthome.internal.TPLinkSmartHomeBindingConstants.*;
|
import static org.openhab.binding.tplinksmarthome.internal.TPLinkSmartHomeThingType.SUPPORTED_THING_TYPES;
|
||||||
import static org.openhab.binding.tplinksmarthome.internal.TPLinkSmartHomeThingType.*;
|
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
@ -46,13 +45,13 @@ public class TPLinkSmartHomeHandlerFactory extends BaseThingHandlerFactory {
|
|||||||
private @NonNullByDefault({}) TPLinkIpAddressService ipAddressService;
|
private @NonNullByDefault({}) TPLinkIpAddressService ipAddressService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean supportsThingType(ThingTypeUID thingTypeUID) {
|
public boolean supportsThingType(final ThingTypeUID thingTypeUID) {
|
||||||
return SUPPORTED_THING_TYPES.contains(thingTypeUID);
|
return SUPPORTED_THING_TYPES.contains(thingTypeUID);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
protected ThingHandler createHandler(Thing thing) {
|
protected ThingHandler createHandler(final Thing thing) {
|
||||||
final ThingTypeUID thingTypeUID = thing.getThingTypeUID();
|
final ThingTypeUID thingTypeUID = thing.getThingTypeUID();
|
||||||
final TPLinkSmartHomeThingType type = TPLinkSmartHomeThingType.THING_TYPE_MAP.get(thingTypeUID);
|
final TPLinkSmartHomeThingType type = TPLinkSmartHomeThingType.THING_TYPE_MAP.get(thingTypeUID);
|
||||||
|
|
||||||
@ -63,23 +62,19 @@ public class TPLinkSmartHomeHandlerFactory extends BaseThingHandlerFactory {
|
|||||||
|
|
||||||
switch (type.getDeviceType()) {
|
switch (type.getDeviceType()) {
|
||||||
case BULB:
|
case BULB:
|
||||||
if (TPLinkSmartHomeThingType.isBulbDeviceWithTemperatureColor1(thingTypeUID)) {
|
device = new BulbDevice(type);
|
||||||
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);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case DIMMER:
|
case DIMMER:
|
||||||
device = new DimmerDevice();
|
device = new DimmerDevice();
|
||||||
break;
|
break;
|
||||||
case PLUG:
|
case PLUG:
|
||||||
if (HS110.is(thingTypeUID) || KP115.is(thingTypeUID)) {
|
device = new SwitchDevice();
|
||||||
device = new EnergySwitchDevice();
|
break;
|
||||||
} else {
|
case PLUG_WITH_ENERGY:
|
||||||
device = new SwitchDevice();
|
device = new EnergySwitchDevice();
|
||||||
}
|
break;
|
||||||
|
case STRIP:
|
||||||
|
device = new PowerStripDevice(type);
|
||||||
break;
|
break;
|
||||||
case SWITCH:
|
case SWITCH:
|
||||||
device = new SwitchDevice();
|
device = new SwitchDevice();
|
||||||
@ -87,9 +82,6 @@ public class TPLinkSmartHomeHandlerFactory extends BaseThingHandlerFactory {
|
|||||||
case RANGE_EXTENDER:
|
case RANGE_EXTENDER:
|
||||||
device = new RangeExtenderDevice();
|
device = new RangeExtenderDevice();
|
||||||
break;
|
break;
|
||||||
case STRIP:
|
|
||||||
device = new PowerStripDevice(type);
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -97,11 +89,11 @@ public class TPLinkSmartHomeHandlerFactory extends BaseThingHandlerFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Reference
|
@Reference
|
||||||
protected void setTPLinkIpAddressCache(TPLinkIpAddressService ipAddressCache) {
|
protected void setTPLinkIpAddressCache(final TPLinkIpAddressService ipAddressCache) {
|
||||||
this.ipAddressService = ipAddressCache;
|
this.ipAddressService = ipAddressCache;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void unsetTPLinkIpAddressCache(TPLinkIpAddressService ipAddressCache) {
|
protected void unsetTPLinkIpAddressCache(final TPLinkIpAddressService ipAddressCache) {
|
||||||
this.ipAddressService = null;
|
this.ipAddressService = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,9 +18,9 @@ import java.util.Map;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
|
import org.openhab.binding.tplinksmarthome.internal.TPLinkSmartHomeBindingConstants.ColorScales;
|
||||||
import org.openhab.core.thing.ThingTypeUID;
|
import org.openhab.core.thing.ThingTypeUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -34,27 +34,30 @@ public enum TPLinkSmartHomeThingType {
|
|||||||
|
|
||||||
// Bulb Thing Type UIDs
|
// Bulb Thing Type UIDs
|
||||||
KB100("kb100", DeviceType.BULB),
|
KB100("kb100", DeviceType.BULB),
|
||||||
KB130("kb130", DeviceType.BULB),
|
KB130("kb130", DeviceType.BULB, ColorScales.K_2500_9000),
|
||||||
LB100("lb100", DeviceType.BULB),
|
LB100("lb100", DeviceType.BULB),
|
||||||
LB110("lb110", DeviceType.BULB),
|
LB110("lb110", DeviceType.BULB),
|
||||||
LB120("lb120", DeviceType.BULB),
|
LB120("lb120", DeviceType.BULB, ColorScales.K_2700_6500),
|
||||||
LB130("lb130", DeviceType.BULB),
|
LB130("lb130", DeviceType.BULB, ColorScales.K_2500_9000),
|
||||||
LB200("lb200", DeviceType.BULB),
|
LB200("lb200", DeviceType.BULB),
|
||||||
LB230("lb230", DeviceType.BULB),
|
LB230("lb230", DeviceType.BULB, ColorScales.K_2500_9000),
|
||||||
KL50("kl50", DeviceType.BULB),
|
KL50("kl50", DeviceType.BULB),
|
||||||
KL60("kl60", DeviceType.BULB),
|
KL60("kl60", DeviceType.BULB),
|
||||||
KL110("kl110", DeviceType.BULB),
|
KL110("kl110", DeviceType.BULB),
|
||||||
KL120("kl120", DeviceType.BULB),
|
KL120("kl120", DeviceType.BULB, ColorScales.K_2700_6500),
|
||||||
KL130("kl130", DeviceType.BULB),
|
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
|
// Plug Thing Type UIDs
|
||||||
|
EP10("ep10", DeviceType.PLUG),
|
||||||
HS100("hs100", DeviceType.PLUG),
|
HS100("hs100", DeviceType.PLUG),
|
||||||
HS103("hs103", DeviceType.PLUG),
|
HS103("hs103", DeviceType.PLUG),
|
||||||
HS105("hs105", DeviceType.PLUG),
|
HS105("hs105", DeviceType.PLUG),
|
||||||
HS110("hs110", DeviceType.PLUG),
|
HS110("hs110", DeviceType.PLUG_WITH_ENERGY),
|
||||||
KP100("kp100", DeviceType.PLUG),
|
KP100("kp100", DeviceType.PLUG),
|
||||||
KP105("kp105", DeviceType.PLUG),
|
KP105("kp105", DeviceType.PLUG),
|
||||||
KP115("kp115", DeviceType.PLUG),
|
KP115("kp115", DeviceType.PLUG_WITH_ENERGY),
|
||||||
|
|
||||||
// Switch Thing Type UIDs
|
// Switch Thing Type UIDs
|
||||||
HS200("hs200", DeviceType.SWITCH),
|
HS200("hs200", DeviceType.SWITCH),
|
||||||
@ -64,6 +67,7 @@ public enum TPLinkSmartHomeThingType {
|
|||||||
HS220("hs220", DeviceType.DIMMER),
|
HS220("hs220", DeviceType.DIMMER),
|
||||||
|
|
||||||
// Power Strip Thing Type UIDs.
|
// Power Strip Thing Type UIDs.
|
||||||
|
EP40("ep40", DeviceType.STRIP, 2),
|
||||||
HS107("hs107", DeviceType.STRIP, 2),
|
HS107("hs107", DeviceType.STRIP, 2),
|
||||||
HS300("hs300", DeviceType.STRIP, 6),
|
HS300("hs300", DeviceType.STRIP, 6),
|
||||||
KP200("kp200", DeviceType.STRIP, 2),
|
KP200("kp200", DeviceType.STRIP, 2),
|
||||||
@ -91,22 +95,29 @@ public enum TPLinkSmartHomeThingType {
|
|||||||
*/
|
*/
|
||||||
public static final Map<ThingTypeUID, TPLinkSmartHomeThingType> THING_TYPE_MAP = SUPPORTED_THING_TYPES_LIST.stream()
|
public static final Map<ThingTypeUID, TPLinkSmartHomeThingType> THING_TYPE_MAP = SUPPORTED_THING_TYPES_LIST.stream()
|
||||||
.collect(Collectors.toMap(TPLinkSmartHomeThingType::thingTypeUID, Function.identity()));
|
.collect(Collectors.toMap(TPLinkSmartHomeThingType::thingTypeUID, Function.identity()));
|
||||||
private static final List<TPLinkSmartHomeThingType> BULB_WITH_TEMPERATURE_COLOR_1 = Stream.of(LB120, KL120)
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
private static final List<TPLinkSmartHomeThingType> BULB_WITH_TEMPERATURE_COLOR_2 = Stream
|
|
||||||
.of(KB130, KL130, LB130, LB230).collect(Collectors.toList());
|
|
||||||
|
|
||||||
private final ThingTypeUID thingTypeUID;
|
private final ThingTypeUID thingTypeUID;
|
||||||
private final DeviceType type;
|
private final DeviceType type;
|
||||||
|
private final ColorScales colorScales;
|
||||||
private final int sockets;
|
private final int sockets;
|
||||||
|
|
||||||
TPLinkSmartHomeThingType(final String name, final DeviceType type) {
|
TPLinkSmartHomeThingType(final String name, final DeviceType type) {
|
||||||
this(name, type, 0);
|
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);
|
thingTypeUID = new ThingTypeUID(TPLinkSmartHomeBindingConstants.BINDING_ID, name);
|
||||||
this.type = type;
|
this.type = type;
|
||||||
|
this.colorScales = colorScales;
|
||||||
this.sockets = sockets;
|
this.sockets = sockets;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -132,29 +143,10 @@ public enum TPLinkSmartHomeThingType {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true if the given {@link ThingTypeUID} matches a device that is a bulb with color temperature ranges 1
|
* @return Returns the color temperature color scales if supported or else returns null
|
||||||
* (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) {
|
public ColorScales getColorScales() {
|
||||||
return isDevice(thingTypeUID, BULB_WITH_TEMPERATURE_COLOR_1);
|
return colorScales;
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 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
|
|
||||||
*/
|
|
||||||
public static boolean isBulbDeviceWithTemperatureColor2(ThingTypeUID thingTypeUID) {
|
|
||||||
return isDevice(thingTypeUID, BULB_WITH_TEMPERATURE_COLOR_2);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static boolean isDevice(ThingTypeUID thingTypeUID, List<TPLinkSmartHomeThingType> thingTypes) {
|
|
||||||
return thingTypes.stream().anyMatch(t -> t.is(thingTypeUID));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -163,7 +155,7 @@ public enum TPLinkSmartHomeThingType {
|
|||||||
* @param otherThingTypeUID to check
|
* @param otherThingTypeUID to check
|
||||||
* @return true if matches
|
* @return true if matches
|
||||||
*/
|
*/
|
||||||
public boolean is(ThingTypeUID otherThingTypeUID) {
|
public boolean is(final ThingTypeUID otherThingTypeUID) {
|
||||||
return thingTypeUID.equals(otherThingTypeUID);
|
return thingTypeUID.equals(otherThingTypeUID);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -183,6 +175,10 @@ public enum TPLinkSmartHomeThingType {
|
|||||||
* Plug device.
|
* Plug device.
|
||||||
*/
|
*/
|
||||||
PLUG,
|
PLUG,
|
||||||
|
/**
|
||||||
|
* Plug device with energy measurement support.
|
||||||
|
*/
|
||||||
|
PLUG_WITH_ENERGY,
|
||||||
/**
|
/**
|
||||||
* Wi-Fi range extender device with plug.
|
* Wi-Fi range extender device with plug.
|
||||||
*/
|
*/
|
||||||
|
@ -12,13 +12,20 @@
|
|||||||
*/
|
*/
|
||||||
package org.openhab.binding.tplinksmarthome.internal.device;
|
package org.openhab.binding.tplinksmarthome.internal.device;
|
||||||
|
|
||||||
import static org.openhab.binding.tplinksmarthome.internal.TPLinkSmartHomeBindingConstants.*;
|
import static org.openhab.binding.tplinksmarthome.internal.TPLinkSmartHomeBindingConstants.CHANNELS_BULB_SWITCH;
|
||||||
|
import static org.openhab.binding.tplinksmarthome.internal.TPLinkSmartHomeBindingConstants.CHANNEL_BRIGHTNESS;
|
||||||
|
import static org.openhab.binding.tplinksmarthome.internal.TPLinkSmartHomeBindingConstants.CHANNEL_COLOR;
|
||||||
|
import static org.openhab.binding.tplinksmarthome.internal.TPLinkSmartHomeBindingConstants.CHANNEL_COLOR_TEMPERATURE;
|
||||||
|
import static org.openhab.binding.tplinksmarthome.internal.TPLinkSmartHomeBindingConstants.CHANNEL_COLOR_TEMPERATURE_ABS;
|
||||||
|
import static org.openhab.binding.tplinksmarthome.internal.TPLinkSmartHomeBindingConstants.CHANNEL_ENERGY_POWER;
|
||||||
|
import static org.openhab.binding.tplinksmarthome.internal.TPLinkSmartHomeBindingConstants.CHANNEL_SWITCH;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
import org.openhab.binding.tplinksmarthome.internal.Commands;
|
import org.openhab.binding.tplinksmarthome.internal.Commands;
|
||||||
|
import org.openhab.binding.tplinksmarthome.internal.TPLinkSmartHomeThingType;
|
||||||
import org.openhab.binding.tplinksmarthome.internal.model.HasErrorResponse;
|
import org.openhab.binding.tplinksmarthome.internal.model.HasErrorResponse;
|
||||||
import org.openhab.binding.tplinksmarthome.internal.model.LightState;
|
import org.openhab.binding.tplinksmarthome.internal.model.LightState;
|
||||||
import org.openhab.binding.tplinksmarthome.internal.model.TransitionLightStateResponse;
|
import org.openhab.binding.tplinksmarthome.internal.model.TransitionLightStateResponse;
|
||||||
@ -27,7 +34,6 @@ import org.openhab.core.library.types.HSBType;
|
|||||||
import org.openhab.core.library.types.OnOffType;
|
import org.openhab.core.library.types.OnOffType;
|
||||||
import org.openhab.core.library.types.PercentType;
|
import org.openhab.core.library.types.PercentType;
|
||||||
import org.openhab.core.thing.ChannelUID;
|
import org.openhab.core.thing.ChannelUID;
|
||||||
import org.openhab.core.thing.ThingTypeUID;
|
|
||||||
import org.openhab.core.types.Command;
|
import org.openhab.core.types.Command;
|
||||||
import org.openhab.core.types.State;
|
import org.openhab.core.types.State;
|
||||||
import org.openhab.core.types.UnDefType;
|
import org.openhab.core.types.UnDefType;
|
||||||
@ -46,13 +52,9 @@ public class BulbDevice extends SmartHomeDevice {
|
|||||||
private final int colorTempMax;
|
private final int colorTempMax;
|
||||||
private final int colorTempRangeFactor;
|
private final int colorTempRangeFactor;
|
||||||
|
|
||||||
public BulbDevice(ThingTypeUID thingTypeUID) {
|
public BulbDevice(final TPLinkSmartHomeThingType type) {
|
||||||
this(thingTypeUID, 0, 0);
|
this.colorTempMin = type.getColorScales().getWarm();
|
||||||
}
|
this.colorTempMax = type.getColorScales().getCool();
|
||||||
|
|
||||||
public BulbDevice(ThingTypeUID thingTypeUID, int colorTempMin, int colorTempMax) {
|
|
||||||
this.colorTempMin = colorTempMin;
|
|
||||||
this.colorTempMax = colorTempMax;
|
|
||||||
colorTempRangeFactor = (colorTempMax - colorTempMin) / 100;
|
colorTempRangeFactor = (colorTempMax - colorTempMin) / 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,7 +64,7 @@ public class BulbDevice extends SmartHomeDevice {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean handleCommand(ChannelUID channelUid, Command command) throws IOException {
|
public boolean handleCommand(final ChannelUID channelUid, final Command command) throws IOException {
|
||||||
final String channelId = channelUid.getId();
|
final String channelId = channelUid.getId();
|
||||||
final int transitionPeriod = configuration.transitionPeriod;
|
final int transitionPeriod = configuration.transitionPeriod;
|
||||||
final HasErrorResponse response;
|
final HasErrorResponse response;
|
||||||
@ -80,8 +82,8 @@ public class BulbDevice extends SmartHomeDevice {
|
|||||||
return response != null;
|
return response != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private @Nullable HasErrorResponse handleOnOffType(String channelID, OnOffType onOff, int transitionPeriod)
|
private @Nullable HasErrorResponse handleOnOffType(final String channelID, final OnOffType onOff,
|
||||||
throws IOException {
|
final int transitionPeriod) throws IOException {
|
||||||
if (CHANNELS_BULB_SWITCH.contains(channelID)) {
|
if (CHANNELS_BULB_SWITCH.contains(channelID)) {
|
||||||
return commands.setTransitionLightStateResponse(
|
return commands.setTransitionLightStateResponse(
|
||||||
connection.sendCommand(commands.setLightState(onOff, transitionPeriod)));
|
connection.sendCommand(commands.setLightState(onOff, transitionPeriod)));
|
||||||
@ -89,8 +91,8 @@ public class BulbDevice extends SmartHomeDevice {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private @Nullable HasErrorResponse handleDecimalType(String channelID, DecimalType command, int transitionPeriod)
|
private @Nullable HasErrorResponse handleDecimalType(final String channelID, final DecimalType command,
|
||||||
throws IOException {
|
final int transitionPeriod) throws IOException {
|
||||||
if (CHANNEL_COLOR.equals(channelID) || CHANNEL_BRIGHTNESS.equals(channelID)) {
|
if (CHANNEL_COLOR.equals(channelID) || CHANNEL_BRIGHTNESS.equals(channelID)) {
|
||||||
return commands.setTransitionLightStateResponse(
|
return commands.setTransitionLightStateResponse(
|
||||||
connection.sendCommand(commands.setBrightness(command.intValue(), transitionPeriod)));
|
connection.sendCommand(commands.setBrightness(command.intValue(), transitionPeriod)));
|
||||||
@ -102,14 +104,15 @@ public class BulbDevice extends SmartHomeDevice {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private @Nullable TransitionLightStateResponse handleColorTemperature(int colorTemperature, int transitionPeriod)
|
private @Nullable TransitionLightStateResponse handleColorTemperature(final int colorTemperature,
|
||||||
throws IOException {
|
final int transitionPeriod) throws IOException {
|
||||||
return commands.setTransitionLightStateResponse(
|
return commands.setTransitionLightStateResponse(
|
||||||
connection.sendCommand(commands.setColorTemperature(colorTemperature, transitionPeriod)));
|
connection.sendCommand(commands.setColorTemperature(colorTemperature, transitionPeriod)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private HasErrorResponse handleHSBType(String channelID, HSBType command, int transitionPeriod) throws IOException {
|
private HasErrorResponse handleHSBType(final String channelID, final HSBType command, final int transitionPeriod)
|
||||||
|
throws IOException {
|
||||||
if (CHANNEL_COLOR.equals(channelID)) {
|
if (CHANNEL_COLOR.equals(channelID)) {
|
||||||
return commands.setTransitionLightStateResponse(
|
return commands.setTransitionLightStateResponse(
|
||||||
connection.sendCommand(commands.setColor(command, transitionPeriod)));
|
connection.sendCommand(commands.setColor(command, transitionPeriod)));
|
||||||
@ -118,7 +121,7 @@ public class BulbDevice extends SmartHomeDevice {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public State updateChannel(ChannelUID channelUid, DeviceState deviceState) {
|
public State updateChannel(final ChannelUID channelUid, final DeviceState deviceState) {
|
||||||
final LightState lightState = deviceState.getSysinfo().getLightState();
|
final LightState lightState = deviceState.getSysinfo().getLightState();
|
||||||
final State state;
|
final State state;
|
||||||
|
|
||||||
@ -148,15 +151,15 @@ public class BulbDevice extends SmartHomeDevice {
|
|||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
private int convertPercentageToKelvin(int percentage) {
|
private int convertPercentageToKelvin(final int percentage) {
|
||||||
return guardColorTemperature(colorTempMin + colorTempRangeFactor * percentage);
|
return guardColorTemperature(colorTempMin + colorTempRangeFactor * percentage);
|
||||||
}
|
}
|
||||||
|
|
||||||
private int convertKelvinToPercentage(int colorTemperature) {
|
private int convertKelvinToPercentage(final int colorTemperature) {
|
||||||
return (guardColorTemperature(colorTemperature) - colorTempMin) / colorTempRangeFactor;
|
return (guardColorTemperature(colorTemperature) - colorTempMin) / colorTempRangeFactor;
|
||||||
}
|
}
|
||||||
|
|
||||||
private int guardColorTemperature(int colorTemperature) {
|
private int guardColorTemperature(final int colorTemperature) {
|
||||||
return Math.max(colorTempMin, Math.min(colorTempMax, colorTemperature));
|
return Math.max(colorTempMin, Math.min(colorTempMax, colorTemperature));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<thing:thing-descriptions bindingId="tplinksmarthome"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||||
|
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||||
|
|
||||||
|
<thing-type id="ep10">
|
||||||
|
<label>EP10</label>
|
||||||
|
<description>TP-Link EP10 Kasa Smart Wi-Fi Plug Mini</description>
|
||||||
|
<category>PowerOutlet</category>
|
||||||
|
|
||||||
|
<channels>
|
||||||
|
<channel id="switch" typeId="system.power"/>
|
||||||
|
<channel id="led" typeId="led"/>
|
||||||
|
<channel id="rssi" typeId="rssi"/>
|
||||||
|
</channels>
|
||||||
|
|
||||||
|
<representation-property>deviceId</representation-property>
|
||||||
|
|
||||||
|
<config-description-ref uri="thing-type:tplinksmarthome:device-plug"/>
|
||||||
|
</thing-type>
|
||||||
|
</thing:thing-descriptions>
|
@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<thing:thing-descriptions bindingId="tplinksmarthome"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||||
|
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||||
|
|
||||||
|
<thing-type id="ep40">
|
||||||
|
<label>EP40</label>
|
||||||
|
<description>TP-Link EP40 Kasa Smart Wi-Fi Outdoor Plug</description>
|
||||||
|
<category>PowerOutlet</category>
|
||||||
|
|
||||||
|
<channel-groups>
|
||||||
|
<channel-group id="groupSwitch" typeId="switch-group"/>
|
||||||
|
<channel-group id="outlet1" typeId="switch-outlet">
|
||||||
|
<label>Outlet 1</label>
|
||||||
|
</channel-group>
|
||||||
|
<channel-group id="outlet2" typeId="switch-outlet">
|
||||||
|
<label>Outlet 2</label>
|
||||||
|
</channel-group>
|
||||||
|
</channel-groups>
|
||||||
|
|
||||||
|
<representation-property>deviceId</representation-property>
|
||||||
|
|
||||||
|
<config-description-ref uri="thing-type:tplinksmarthome:device-plug"/>
|
||||||
|
</thing-type>
|
||||||
|
</thing:thing-descriptions>
|
@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<thing:thing-descriptions bindingId="tplinksmarthome"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||||
|
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||||
|
|
||||||
|
<thing-type id="kl125">
|
||||||
|
<label>KL125</label>
|
||||||
|
<description>TP-Link KL125 Kasa Smart Wi-Fi Bulb Multicolor</description>
|
||||||
|
<category>Lightbulb</category>
|
||||||
|
|
||||||
|
<channels>
|
||||||
|
<channel id="brightness" typeId="system.brightness"/>
|
||||||
|
<channel id="colorTemperature" typeId="system.color-temperature"/>
|
||||||
|
<channel id="colorTemperatureAbs" typeId="colorTemperatureAbs3"/>
|
||||||
|
<channel id="power" typeId="power"/>
|
||||||
|
<channel id="rssi" typeId="rssi"/>
|
||||||
|
</channels>
|
||||||
|
|
||||||
|
<representation-property>deviceId</representation-property>
|
||||||
|
|
||||||
|
<config-description-ref uri="thing-type:tplinksmarthome:device-bulb"/>
|
||||||
|
</thing-type>
|
||||||
|
</thing:thing-descriptions>
|
@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<thing:thing-descriptions bindingId="tplinksmarthome"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||||
|
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||||
|
|
||||||
|
<thing-type id="kl135">
|
||||||
|
<label>KL135</label>
|
||||||
|
<description>TP-Link KL135 Kasa Smart Wi-Fi Bulb Multicolor</description>
|
||||||
|
<category>Lightbulb</category>
|
||||||
|
|
||||||
|
<channels>
|
||||||
|
<channel id="brightness" typeId="system.brightness"/>
|
||||||
|
<channel id="colorTemperature" typeId="system.color-temperature"/>
|
||||||
|
<channel id="colorTemperatureAbs" typeId="colorTemperatureAbs3"/>
|
||||||
|
<channel id="power" typeId="power"/>
|
||||||
|
<channel id="rssi" typeId="rssi"/>
|
||||||
|
</channels>
|
||||||
|
|
||||||
|
<representation-property>deviceId</representation-property>
|
||||||
|
|
||||||
|
<config-description-ref uri="thing-type:tplinksmarthome:device-bulb"/>
|
||||||
|
</thing-type>
|
||||||
|
</thing:thing-descriptions>
|
@ -36,6 +36,14 @@
|
|||||||
<state min="2500" max="9000" pattern="%d K"/>
|
<state min="2500" max="9000" pattern="%d K"/>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
|
<channel-type id="colorTemperatureAbs3" advanced="true">
|
||||||
|
<item-type>Number</item-type>
|
||||||
|
<label>Color Temperature</label>
|
||||||
|
<description>This channel supports adjusting the color temperature from 2500K to 6500K.</description>
|
||||||
|
<category>ColorLight</category>
|
||||||
|
<state min="2500" max="6500" pattern="%d K"/>
|
||||||
|
</channel-type>
|
||||||
|
|
||||||
<!-- Energy Channel types -->
|
<!-- Energy Channel types -->
|
||||||
<channel-type id="power">
|
<channel-type id="power">
|
||||||
<item-type>Number:Power</item-type>
|
<item-type>Number:Power</item-type>
|
||||||
|
@ -12,9 +12,16 @@
|
|||||||
*/
|
*/
|
||||||
package org.openhab.binding.tplinksmarthome.internal.device;
|
package org.openhab.binding.tplinksmarthome.internal.device;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.openhab.binding.tplinksmarthome.internal.ChannelUIDConstants.*;
|
import static org.junit.jupiter.api.Assertions.assertSame;
|
||||||
import static org.openhab.binding.tplinksmarthome.internal.TPLinkSmartHomeBindingConstants.*;
|
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 static org.openhab.binding.tplinksmarthome.internal.TPLinkSmartHomeThingType.LB130;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -40,8 +47,7 @@ public class BulbDeviceTest extends DeviceTestBase<BulbDevice> {
|
|||||||
private static final String DEVICE_OFF = "bulb_get_sysinfo_response_off";
|
private static final String DEVICE_OFF = "bulb_get_sysinfo_response_off";
|
||||||
|
|
||||||
public BulbDeviceTest() throws IOException {
|
public BulbDeviceTest() throws IOException {
|
||||||
super(new BulbDevice(LB130.thingTypeUID(), COLOR_TEMPERATURE_2_MIN, COLOR_TEMPERATURE_2_MAX),
|
super(new BulbDevice(LB130), "bulb_get_sysinfo_response_on");
|
||||||
"bulb_get_sysinfo_response_on");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
|
Loading…
Reference in New Issue
Block a user