use of org.eclipse.smarthome.core.thing.ChannelUID in project smarthome by eclipse.
the class ChaserThingHandler method dispose.
@Override
public void dispose() {
if (channels.size() != 0) {
Bridge bridge = getBridge();
if (bridge != null) {
DmxBridgeHandler bridgeHandler = (DmxBridgeHandler) bridge.getHandler();
if (bridgeHandler != null) {
bridgeHandler.unregisterDmxChannels(this.thing);
logger.debug("removing {} channels from {}", channels.size(), this.thing.getUID());
}
ChannelUID switchChannelUID = new ChannelUID(this.thing.getUID(), CHANNEL_SWITCH);
for (DmxChannel channel : channels) {
channel.removeListener(switchChannelUID);
}
}
channels.clear();
}
}
use of org.eclipse.smarthome.core.thing.ChannelUID in project smarthome by eclipse.
the class ColorThingHandler method initialize.
@Override
public void initialize() {
Configuration configuration = getConfig();
Bridge bridge = getBridge();
DmxBridgeHandler bridgeHandler;
if (bridge == null) {
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, "no bridge assigned");
dmxHandlerStatus = ThingStatusDetail.CONFIGURATION_ERROR;
return;
} else {
bridgeHandler = (DmxBridgeHandler) bridge.getHandler();
if (bridgeHandler == null) {
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, "no bridge handler available");
dmxHandlerStatus = ThingStatusDetail.CONFIGURATION_ERROR;
return;
}
}
if (configuration.get(CONFIG_DMX_ID) == null) {
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, "DMX channel configuration missing");
dmxHandlerStatus = ThingStatusDetail.CONFIGURATION_ERROR;
return;
}
try {
List<BaseDmxChannel> configChannels = BaseDmxChannel.fromString((String) configuration.get(CONFIG_DMX_ID), bridgeHandler.getUniverseId());
logger.trace("found {} channels in {}", configChannels.size(), this.thing.getUID());
for (BaseDmxChannel channel : configChannels) {
channels.add(bridgeHandler.getDmxChannel(channel, this.thing));
}
} catch (IllegalArgumentException e) {
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, e.getMessage());
dmxHandlerStatus = ThingStatusDetail.CONFIGURATION_ERROR;
return;
}
currentValues.add(DmxChannel.MIN_VALUE);
currentValues.add(DmxChannel.MIN_VALUE);
currentValues.add(DmxChannel.MIN_VALUE);
if (configuration.get(CONFIG_DIMMER_FADE_TIME) != null) {
fadeTime = ((BigDecimal) configuration.get(CONFIG_DIMMER_FADE_TIME)).intValue();
logger.debug("setting fadeTime to {} ms in {}", fadeTime, this.thing.getUID());
}
if (configuration.get(CONFIG_DIMMER_DIM_TIME) != null) {
dimTime = ((BigDecimal) configuration.get(CONFIG_DIMMER_DIM_TIME)).intValue();
logger.trace("setting dimTime to {} ms in {}", fadeTime, this.thing.getUID());
}
if (configuration.get(CONFIG_DIMMER_TURNONVALUE) != null) {
String turnOnValueString = String.valueOf(fadeTime) + ":" + ((String) configuration.get(CONFIG_DIMMER_TURNONVALUE)) + ":-1";
ValueSet turnOnValue = ValueSet.fromString(turnOnValueString);
if (turnOnValue.size() == 3) {
this.turnOnValue = turnOnValue;
logger.trace("set turnonvalue to {} in {}", turnOnValue, this.thing.getUID());
} else {
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, "turn-on value malformed");
dmxHandlerStatus = ThingStatusDetail.CONFIGURATION_ERROR;
return;
}
}
this.turnOnValue.setFadeTime(fadeTime);
if (configuration.get(CONFIG_DIMMER_TURNOFFVALUE) != null) {
String turnOffValueString = String.valueOf(fadeTime) + ":" + ((String) configuration.get(CONFIG_DIMMER_TURNOFFVALUE)) + ":-1";
ValueSet turnOffValue = ValueSet.fromString(turnOffValueString);
if (turnOffValue.size() == 3) {
this.turnOffValue = turnOffValue;
logger.trace("set turnoffvalue to {} in {}", turnOffValue, this.thing.getUID());
} else {
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, "turn-off value malformed");
dmxHandlerStatus = ThingStatusDetail.CONFIGURATION_ERROR;
return;
}
}
this.turnOffValue.setFadeTime(fadeTime);
// register feedback listeners
channels.get(0).addListener(new ChannelUID(this.thing.getUID(), CHANNEL_BRIGHTNESS_R), this, ListenerType.VALUE);
channels.get(1).addListener(new ChannelUID(this.thing.getUID(), CHANNEL_BRIGHTNESS_G), this, ListenerType.VALUE);
channels.get(2).addListener(new ChannelUID(this.thing.getUID(), CHANNEL_BRIGHTNESS_B), this, ListenerType.VALUE);
if (bridge.getStatus().equals(ThingStatus.ONLINE)) {
updateStatus(ThingStatus.ONLINE);
dmxHandlerStatus = ThingStatusDetail.NONE;
} else {
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE);
}
}
use of org.eclipse.smarthome.core.thing.ChannelUID in project smarthome by eclipse.
the class ColorThingHandler method updateChannelValue.
@Override
public void updateChannelValue(ChannelUID channelUID, int value) {
updateState(channelUID, Util.toPercentValue(value));
switch(channelUID.getId()) {
case CHANNEL_BRIGHTNESS_R:
currentValues.set(0, value);
break;
case CHANNEL_BRIGHTNESS_G:
currentValues.set(1, value);
break;
case CHANNEL_BRIGHTNESS_B:
currentValues.set(2, value);
break;
default:
logger.debug("don't know how to handle {} in RGB type", channelUID.getId());
return;
}
updateCurrentColor();
updateState(new ChannelUID(this.thing.getUID(), CHANNEL_COLOR), currentColor);
logger.trace("received update {} in channel {}, result is {}", value, channelUID, currentColor);
}
use of org.eclipse.smarthome.core.thing.ChannelUID in project smarthome by eclipse.
the class TunableWhiteThingHandler method updateChannelValue.
@Override
public void updateChannelValue(ChannelUID channelUID, int value) {
updateState(channelUID, Util.toPercentValue(value));
switch(channelUID.getId()) {
case CHANNEL_BRIGHTNESS_CW:
currentValues.set(0, value);
break;
case CHANNEL_BRIGHTNESS_WW:
currentValues.set(1, value);
break;
default:
logger.debug("don't know how to handle {} in tunable white type", channelUID.getId());
return;
}
updateCurrentBrightnessAndTemperature();
updateState(new ChannelUID(this.thing.getUID(), CHANNEL_BRIGHTNESS), currentBrightness);
updateState(new ChannelUID(this.thing.getUID(), CHANNEL_COLOR_TEMPERATURE), currentColorTemperature);
logger.trace("received update {} for channel {}, resulting in b={}, ct={}", value, channelUID, currentBrightness, currentColorTemperature);
}
use of org.eclipse.smarthome.core.thing.ChannelUID in project smarthome by eclipse.
the class TunableWhiteThingHandler method initialize.
@Override
public void initialize() {
Configuration configuration = getConfig();
Bridge bridge = getBridge();
DmxBridgeHandler bridgeHandler;
if (bridge == null) {
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, "no bridge assigned");
dmxHandlerStatus = ThingStatusDetail.CONFIGURATION_ERROR;
return;
} else {
bridgeHandler = (DmxBridgeHandler) bridge.getHandler();
if (bridgeHandler == null) {
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, "no bridge handler available");
dmxHandlerStatus = ThingStatusDetail.CONFIGURATION_ERROR;
return;
}
}
if (configuration.get(CONFIG_DMX_ID) == null) {
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, "DMX channel configuration missing");
dmxHandlerStatus = ThingStatusDetail.CONFIGURATION_ERROR;
return;
}
try {
List<BaseDmxChannel> configChannels = BaseDmxChannel.fromString((String) configuration.get(CONFIG_DMX_ID), bridgeHandler.getUniverseId());
logger.trace("found {} channels in {}", configChannels.size(), this.thing.getUID());
for (BaseDmxChannel channel : configChannels) {
channels.add(bridgeHandler.getDmxChannel(channel, this.thing));
}
} catch (IllegalArgumentException e) {
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, e.getMessage());
dmxHandlerStatus = ThingStatusDetail.CONFIGURATION_ERROR;
return;
}
if (channels.size() % 2 != 0) {
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, "Tunable white dimmers require an even number of channels");
dmxHandlerStatus = ThingStatusDetail.CONFIGURATION_ERROR;
return;
}
currentValues.add(DmxChannel.MIN_VALUE);
currentValues.add(DmxChannel.MIN_VALUE);
if (configuration.get(CONFIG_DIMMER_FADE_TIME) != null) {
fadeTime = ((BigDecimal) configuration.get(CONFIG_DIMMER_FADE_TIME)).intValue();
logger.debug("setting fadeTime to {} ms in {}", fadeTime, this.thing.getUID());
}
if (configuration.get(CONFIG_DIMMER_DIM_TIME) != null) {
dimTime = ((BigDecimal) configuration.get(CONFIG_DIMMER_DIM_TIME)).intValue();
logger.trace("setting dimTime to {} ms in {}", fadeTime, this.thing.getUID());
}
if (configuration.get(CONFIG_DIMMER_TURNONVALUE) != null) {
String turnOnValueString = String.valueOf(fadeTime) + ":" + ((String) configuration.get(CONFIG_DIMMER_TURNONVALUE)) + ":-1";
ValueSet turnOnValue = ValueSet.fromString(turnOnValueString);
if (turnOnValue.size() % 2 == 0) {
this.turnOnValue = turnOnValue;
logger.trace("set turnonvalue to {} in {}", turnOnValue, this.thing.getUID());
} else {
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, "turn-on value malformed");
dmxHandlerStatus = ThingStatusDetail.CONFIGURATION_ERROR;
return;
}
}
this.turnOnValue.setFadeTime(fadeTime);
if (configuration.get(CONFIG_DIMMER_TURNOFFVALUE) != null) {
String turnOffValueString = String.valueOf(fadeTime) + ":" + ((String) configuration.get(CONFIG_DIMMER_TURNOFFVALUE)) + ":-1";
ValueSet turnOffValue = ValueSet.fromString(turnOffValueString);
if (turnOffValue.size() % 2 == 0) {
this.turnOffValue = turnOffValue;
logger.trace("set turnoffvalue to {} in {}", turnOffValue, this.thing.getUID());
} else {
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, "turn-off value malformed");
dmxHandlerStatus = ThingStatusDetail.CONFIGURATION_ERROR;
return;
}
}
this.turnOffValue.setFadeTime(fadeTime);
// register feedback listeners
channels.get(0).addListener(new ChannelUID(this.thing.getUID(), CHANNEL_BRIGHTNESS_CW), this, ListenerType.VALUE);
channels.get(1).addListener(new ChannelUID(this.thing.getUID(), CHANNEL_BRIGHTNESS_WW), this, ListenerType.VALUE);
if (bridge.getStatus().equals(ThingStatus.ONLINE)) {
updateStatus(ThingStatus.ONLINE);
dmxHandlerStatus = ThingStatusDetail.NONE;
} else {
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE);
}
}
Aggregations