The devices support some of the following channels:
-| Channel Type ID | Item Type | Description | Thing types supporting this channel |
-|-------------------|--------------------|-----------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------|
-| switch | Switch | This channel supports switching the device on and off. | 0000, 0010, group |
-| color | Color | This channel supports full color control with hue, saturation and brightness values. | 0200, 0210, group |
-| brightness | Dimmer | This channel supports adjusting the brightness value. Note that this is not available, if the color channel is supported. | 0100, 0110, 0220, group |
-| color_temperature | Dimmer | This channel supports adjusting the color temperature from cold (0%) to warm (100%). | 0210, 0220, group |
-| alert | String | This channel supports displaying alerts by flashing the bulb either once or multiple times. Valid values are: NONE, SELECT and LSELECT. | 0000, 0100, 0200, 0210, 0220, group |
-| effect | Switch | This channel supports color looping. | 0200, 0210, 0220 |
-| dimmer_switch | Number | This channel shows which button was last pressed on the dimmer switch. | 0820 |
-| illuminance | Number:Illuminance | This channel shows the current illuminance measured by the sensor. | 0106 |
-| light_level | Number | This channel shows the current light level measured by the sensor. **Advanced** | 0106 |
-| dark | Switch | This channel indicates whether the light level is below the darkness threshold or not. | 0106 |
-| daylight | Switch | This channel indicates whether the light level is below the daylight threshold or not. | 0106 |
-| presence | Switch | This channel indicates whether a motion is detected by the sensor or not. | 0107 |
-| temperature | Number:Temperature | This channel shows the current temperature measured by the sensor. | 0302 |
-| flag | Switch | This channel save flag state for a CLIP sensor. | 0850 |
-| status | Number | This channel save status state for a CLIP sensor. | 0840 |
-| last_updated | DateTime | This channel the date and time when the sensor was last updated. | 0820, 0830, 0840, 0850, 0106, 0107, 0302|
-| battery_level | Number | This channel shows the battery level. | 0820, 0106, 0107, 0302 |
-| battery_low | Switch | This channel indicates whether the battery is low or not. | 0820, 0106, 0107, 0302 |
-| scene | String | This channel activates the scene with the given ID String. The ID String of each scene is assigned by the Hue bridge. | bridge, group |
+| Channel Type ID | Item Type | Description | Thing types supporting this channel |
+|-------------------|--------------------|-----------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------|
+| switch | Switch | This channel supports switching the device on and off. | 0000, 0010, group |
+| color | Color | This channel supports full color control with hue, saturation and brightness values. | 0200, 0210, group |
+| brightness | Dimmer | This channel supports adjusting the brightness value. Note that this is not available, if the color channel is supported. | 0100, 0110, 0220, group |
+| color_temperature | Dimmer | This channel supports adjusting the color temperature from cold (0%) to warm (100%). | 0210, 0220, group |
+| alert | String | This channel supports displaying alerts by flashing the bulb either once or multiple times. Valid values are: NONE, SELECT and LSELECT. | 0000, 0100, 0200, 0210, 0220, group |
+| effect | Switch | This channel supports color looping. | 0200, 0210, 0220 |
+| dimmer_switch | Number | This channel shows which button was last pressed on the dimmer switch. | 0820 |
+| illuminance | Number:Illuminance | This channel shows the current illuminance measured by the sensor. | 0106 |
+| light_level | Number | This channel shows the current light level measured by the sensor. **Advanced** | 0106 |
+| dark | Switch | This channel indicates whether the light level is below the darkness threshold or not. | 0106 |
+| daylight | Switch | This channel indicates whether the light level is below the daylight threshold or not. | 0106 |
+| presence | Switch | This channel indicates whether a motion is detected by the sensor or not. | 0107 |
+| enabled | Switch | This channel activated or deactivates the sensor | 0107 |
+| temperature | Number:Temperature | This channel shows the current temperature measured by the sensor. | 0302 |
+| flag | Switch | This channel save flag state for a CLIP sensor. | 0850 |
+| status | Number | This channel save status state for a CLIP sensor. | 0840 |
+| last_updated | DateTime | This channel the date and time when the sensor was last updated. | 0820, 0830, 0840, 0850, 0106, 0107, 0302 |
+| battery_level | Number | This channel shows the battery level. | 0820, 0106, 0107, 0302 |
+| battery_low | Switch | This channel indicates whether the battery is low or not. | 0820, 0106, 0107, 0302 |
+| scene | String | This channel activates the scene with the given ID String. The ID String of each scene is assigned by the Hue bridge. | bridge, group |
To load a hue scene inside a rule for example, the ID of the scene will be required.
You can list all the scene IDs with the following console commands: `hue <bridgeUID> scenes` and `hue <groupThingUID> scenes`.
private @Nullable HueClient hueClient;
- private @Nullable FullSensor lastFullSensor;
+ protected @Nullable FullSensor lastFullSensor;
public HueSensorHandler(Thing thing) {
super(thing);
handleCommand(channelUID.getId(), command);
}
- public void handleCommand(String channel, Command command) {
+ protected void handleCommand(String channel, Command command) {
HueClient bridgeHandler = getHueClient();
if (bridgeHandler == null) {
logger.warn("hue bridge handler not found. Cannot handle command without bridge.");
}
final FullSensor sensor = lastFullSensor;
-
if (sensor == null) {
logger.debug("hue sensor not known on bridge. Cannot handle command.");
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR,
final FullSensor sensor = lastFullSensor;
if (sensor == null) {
- logger.debug("hue sensor not known on bridge. Cannot handle command.");
+ logger.debug("hue sensor not known on bridge. Cannot handle configuration update.");
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR,
"@text/offline.conf-error-wrong-sensor-id");
return;
import org.openhab.binding.hue.internal.FullSensor;
import org.openhab.binding.hue.internal.PresenceConfigUpdate;
import org.openhab.binding.hue.internal.SensorConfigUpdate;
+import org.openhab.binding.hue.internal.handler.HueClient;
import org.openhab.binding.hue.internal.handler.HueSensorHandler;
import org.openhab.core.config.core.Configuration;
import org.openhab.core.library.types.OnOffType;
import org.openhab.core.thing.Thing;
+import org.openhab.core.thing.ThingStatus;
+import org.openhab.core.thing.ThingStatusDetail;
import org.openhab.core.thing.ThingTypeUID;
+import org.openhab.core.types.Command;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Presence Sensor
public class PresenceHandler extends HueSensorHandler {
public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES = Collections.singleton(THING_TYPE_PRESENCE_SENSOR);
+ private final Logger logger = LoggerFactory.getLogger(PresenceHandler.class);
+
public PresenceHandler(Thing thing) {
super(thing);
}
+ @Override
+ public void handleCommand(String channel, Command command) {
+ HueClient hueBridge = getHueClient();
+ if (hueBridge == null) {
+ logger.warn("hue bridge handler not found. Cannot handle command without bridge.");
+ return;
+ }
+
+ final FullSensor sensor = lastFullSensor;
+ if (sensor == null) {
+ logger.debug("hue sensor not known on bridge. Cannot handle command.");
+ updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR,
+ "@text/offline.conf-error-wrong-sensor-id");
+ return;
+ }
+
+ SensorConfigUpdate configUpdate = new SensorConfigUpdate();
+ switch (channel) {
+ case CHANNEL_ENABLED:
+ configUpdate.setOn(OnOffType.ON.equals(command));
+ break;
+ }
+
+ hueBridge.updateSensorConfig(sensor, configUpdate);
+ }
+
@Override
protected SensorConfigUpdate doConfigurationUpdate(Map<String, Object> configurationParameters) {
PresenceConfigUpdate configUpdate = new PresenceConfigUpdate();