Search in sources :

Example 1 with DeviceBinaryInput

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());
    }
}
Also used : ThingBuilder(org.eclipse.smarthome.core.thing.binding.builder.ThingBuilder) DeviceBinaryInput(org.eclipse.smarthome.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.impl.DeviceBinaryInput) SensorEnum(org.eclipse.smarthome.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.constants.SensorEnum) DeviceBinarayInputEnum(org.eclipse.smarthome.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.constants.DeviceBinarayInputEnum) Channel(org.eclipse.smarthome.core.thing.Channel) LinkedList(java.util.LinkedList)

Example 2 with DeviceBinaryInput

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;
}
Also used : DeviceBinaryInput(org.eclipse.smarthome.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.impl.DeviceBinaryInput) DeviceStateUpdateImpl(org.eclipse.smarthome.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.impl.DeviceStateUpdateImpl)

Aggregations

DeviceBinaryInput (org.eclipse.smarthome.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.impl.DeviceBinaryInput)2 LinkedList (java.util.LinkedList)1 DeviceBinarayInputEnum (org.eclipse.smarthome.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.constants.DeviceBinarayInputEnum)1 SensorEnum (org.eclipse.smarthome.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.constants.SensorEnum)1 DeviceStateUpdateImpl (org.eclipse.smarthome.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.impl.DeviceStateUpdateImpl)1 Channel (org.eclipse.smarthome.core.thing.Channel)1 ThingBuilder (org.eclipse.smarthome.core.thing.binding.builder.ThingBuilder)1