| Color Controller | ZBT-Remote-ALL-RGBW | `colorcontrol` |
-Additionally lights, window coverings (blinds) and thermostats are supported:
+Additionally lights, window coverings (blinds), door locks and thermostats are supported:
| Device type | Resource Type | Thing type |
|--------------------------------------|-----------------------------------------------|-------------------------|
| Blind / Window Covering | Window covering device | `windowcovering` |
| Thermostat | ZHAThermostat | `thermostat` |
| Warning Device (Siren) | Warning device | `warningdevice` |
+| Door Lock | A remotely operatable door lock | `doorlock` |
Currently only light-groups are supported via the thing-type `lightgroup`.
| brightness | Dimmer | R/W | Brightness of the light | `dimmablelight`, `colortemperaturelight` |
| switch | Switch | R/W | State of a ON/OFF device | `onofflight` |
| color | Color | R/W | Color of an multi-color light | `colorlight`, `extendedcolorlight`, `lightgroup`|
-| color_temperature | Number | R/W | Color temperature in kelvin. The value range is determined by each individual light | `colortemperaturelight`, `extendedcolorlight`, `lightgroup` |
+| color_temperature | Number | R/W | Color temperature in kelvin. The value range is determined by each individual light | `colortemperaturelight`, `extendedcolorlight`, `lightgroup` |
+| lock | Switch | R/W | Lock (ON) or unlock (OFF) the doorlock| `doorlock` |
| position | Rollershutter | R/W | Position of the blind | `windowcovering` |
| heatsetpoint | Number:Temperature | R/W | Target Temperature in °C | `thermostat` |
| valve | Number:Dimensionless | R | Valve position in % | `thermostat` |
alarmsensor basement-alarm "Basement Alarm Sensor" [ id="8", lastSeenPolling=5 ]
dimmablelight livingroom-ceiling "Livingroom Ceiling" [ id="1" ]
lightgroup livingroom "Livingroom" [ id="1" ]
+ doorlock entrance-door "Door Lock" [ id="20" ]
}
```
Switch Basement_Water_Leakage "Basement Water Leakage [%s]" { channel="deconz:waterleakagesensor:homeserver:basement-water-leakage:waterleakage" }
Switch Basement_Alarm "Basement Alarm Triggered [%s]" { channel="deconz:alarmsensor:homeserver:basement-alarm:alarm" }
Dimmer Livingroom_Ceiling "Livingroom Ceiling [%d]" <light> { channel="deconz:dimmablelight:homeserver:livingroom-ceiling:brightness" }
-Color Livingroom "Livingroom Light Control"
+Color Livingroom "Livingroom Light Control" { channel="deconz:lightgroup:homeserver:livingroom:color" }
+Switch Entrance_Door "Doorlock" { channel="deconz:doorlock:homeserver:entrance-door:lock" }
```
### Events
"extendedcolorlight");
public static final ThingTypeUID THING_TYPE_WINDOW_COVERING = new ThingTypeUID(BINDING_ID, "windowcovering");
public static final ThingTypeUID THING_TYPE_WARNING_DEVICE = new ThingTypeUID(BINDING_ID, "warningdevice");
+ public static final ThingTypeUID THING_TYPE_DOORLOCK = new ThingTypeUID(BINDING_ID, "doorlock");
// groups
public static final ThingTypeUID THING_TYPE_LIGHTGROUP = new ThingTypeUID(BINDING_ID, "lightgroup");
public static final String CHANNEL_ALERT = "alert";
public static final String CHANNEL_ALL_ON = "all_on";
public static final String CHANNEL_ANY_ON = "any_on";
+ public static final String CHANNEL_LOCK = "lock";
// Thing configuration
public static final String CONFIG_HOST = "host";
case WARNING_DEVICE:
thingTypeUID = THING_TYPE_WARNING_DEVICE;
break;
+ case DOORLOCK:
+ thingTypeUID = THING_TYPE_DOORLOCK;
+ break;
case CONFIGURATION_TOOL:
// ignore configuration tool device
return;
public class LightThingHandler extends DeconzBaseThingHandler<LightMessage> {
public static final Set<ThingTypeUID> SUPPORTED_THING_TYPE_UIDS = Set.of(THING_TYPE_COLOR_TEMPERATURE_LIGHT,
THING_TYPE_DIMMABLE_LIGHT, THING_TYPE_COLOR_LIGHT, THING_TYPE_EXTENDED_COLOR_LIGHT, THING_TYPE_ONOFF_LIGHT,
- THING_TYPE_WINDOW_COVERING, THING_TYPE_WARNING_DEVICE);
+ THING_TYPE_WINDOW_COVERING, THING_TYPE_WARNING_DEVICE, THING_TYPE_DOORLOCK);
private static final long DEFAULT_COMMAND_EXPIRY_TIME = 250; // in ms
private static final int BRIGHTNESS_DIM_STEP = 26; // ~ 10%
return;
}
case CHANNEL_SWITCH:
+ case CHANNEL_LOCK:
if (command instanceof OnOffType) {
newLightState.on = (command == OnOffType.ON);
} else {
updateState(channelId, "alert".equals(newState.alert) ? OnOffType.ON : OnOffType.OFF);
break;
case CHANNEL_SWITCH:
+ case CHANNEL_LOCK:
if (on != null) {
updateState(channelId, OnOffType.from(on));
}
WINDOW_COVERING_DEVICE("Window covering device"),
CONFIGURATION_TOOL("Configuration tool"),
WARNING_DEVICE("Warning device"),
+ DOORLOCK("Door Lock"),
UNKNOWN("");
private static final Map<String, LightType> MAPPING = Arrays.stream(LightType.values())
<channels>
<channel id="alert" typeId="alert"></channel>
</channels>
+
+ <representation-property>uid</representation-property>
+
+ <config-description-ref uri="thing-type:deconz:sensor"/>
</thing-type>
<thing-type id="windowcovering">
<config-description-ref uri="thing-type:deconz:light"/>
</thing-type>
+ <thing-type id="doorlock">
+ <supported-bridge-type-refs>
+ <bridge-type-ref id="deconz"/>
+ </supported-bridge-type-refs>
+ <label>Doorlock</label>
+ <description>A doorlock that can be locked (ON) or unlocked (OFF).</description>
+ <channels>
+ <channel typeId="lock" id="switch"/>
+ </channels>
+
+ <representation-property>uid</representation-property>
+
+ <config-description-ref uri="thing-type:deconz:sensor"/>
+ </thing-type>
+
<channel-type id="position">
<item-type>Rollershutter</item-type>
<label>Position</label>
<label>Alert</label>
</channel-type>
+ <channel-type id="lock">
+ <item-type>Switch</item-type>
+ <label>Lock</label>
+ </channel-type>
</thing:thing-descriptions>