use of org.eclipse.smarthome.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.impl.DeviceBinaryInput in project smarthome by eclipse.
the class DeviceHandler method checkSensorChannel.
private void checkSensorChannel() {
List<Channel> channelList = new LinkedList<Channel>(this.getThing().getChannels());
boolean channelListChanged = false;
// if sensor channels with priority never are loaded delete these channels
if (!channelList.isEmpty()) {
Iterator<Channel> channelInter = channelList.iterator();
while (channelInter.hasNext()) {
Channel channel = channelInter.next();
String channelID = channel.getUID().getId();
if (channelID.startsWith(DsChannelTypeProvider.BINARY_INPUT_PRE)) {
DeviceBinarayInputEnum devBinInput = getBinaryInput(channelID);
if (device.getBinaryInput(devBinInput) != null) {
addLoadedSensorChannel(channelID);
} else {
logger.debug("remove {} binary input channel", channelID);
channelInter.remove();
channelListChanged = removeLoadedSensorChannel(channelID);
}
} else {
SensorEnum sensorType = getSensorEnum(channelID);
if (sensorType != null) {
if (SensorEnum.isPowerSensor(sensorType)) {
if (device.checkPowerSensorRefreshPriorityNever(sensorType)) {
logger.debug("remove {} sensor channel", channelID);
channelInter.remove();
channelListChanged = removeLoadedSensorChannel(channelID);
} else {
addLoadedSensorChannel(channelID);
}
} else {
if (device.supportsSensorType(sensorType)) {
addLoadedSensorChannel(channelID);
} else {
logger.debug("remove {} sensor channel", channelID);
channelInter.remove();
removeLoadedSensorChannel(channelID);
channelListChanged = true;
}
}
}
}
}
}
for (SensorEnum sensorType : device.getPowerSensorTypes()) {
if (!device.checkPowerSensorRefreshPriorityNever(sensorType) && !isSensorChannelLoaded(getSensorChannelID(sensorType))) {
logger.debug("create {} sensor channel", sensorType.toString());
channelList.add(getSensorChannel(sensorType));
channelListChanged = addLoadedSensorChannel(getSensorChannelID(sensorType));
}
}
if (device.hasClimateSensors()) {
for (SensorEnum sensorType : device.getClimateSensorTypes()) {
if (!isSensorChannelLoaded(getSensorChannelID(sensorType))) {
logger.debug("create {} sensor channel", sensorType.toString());
channelList.add(getSensorChannel(sensorType));
channelListChanged = addLoadedSensorChannel(getSensorChannelID(sensorType));
}
}
}
if (device.isBinaryInputDevice()) {
for (DeviceBinaryInput binInput : device.getBinaryInputs()) {
DeviceBinarayInputEnum binInputType = DeviceBinarayInputEnum.getdeviceBinarayInput(binInput.getInputType());
if (binInputType != null && !isSensorChannelLoaded(getBinaryInputChannelID(binInputType))) {
logger.debug("create {} sensor channel", binInputType.toString());
channelList.add(getBinaryChannel(binInputType));
channelListChanged = addLoadedSensorChannel(getBinaryInputChannelID(binInputType));
}
}
}
if (channelListChanged) {
logger.debug("load new channel list");
ThingBuilder thingBuilder = editThing();
thingBuilder.withChannels(channelList);
updateThing(thingBuilder.build());
}
}
use of org.eclipse.smarthome.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.impl.DeviceBinaryInput in project smarthome by eclipse.
the class DeviceImpl method setBinaryInputState.
@Override
public boolean setBinaryInputState(DeviceBinarayInputEnum binaryInputType, Short newState) {
DeviceBinaryInput devBinInput = getBinaryInput(binaryInputType);
if (devBinInput != null) {
devBinInput.setState(newState);
informListenerAboutStateUpdate(new DeviceStateUpdateImpl(binaryInputType, newState));
return true;
}
return false;
}
Aggregations