/** * Copyright (c) 2010-2016 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ package org.openhab.binding.omnilink.internal.model; import org.openhab.binding.omnilink.internal.OmniLinkBindingConfig; import org.openhab.core.events.EventPublisher; import org.openhab.core.items.Item; import org.openhab.core.library.items.NumberItem; import org.openhab.core.library.types.DecimalType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.digitaldan.jomnilinkII.MessageUtils; import com.digitaldan.jomnilinkII.MessageTypes.properties.AuxSensorProperties; /** * An Auxiliary is a temperature and/or humidity sensors * * @author Dan Cunningham * @since 1.5.0 */ public class Auxiliary extends OmnilinkDevice { private static final Logger logger = LoggerFactory.getLogger(Auxiliary.class); private AuxSensorProperties properties; private boolean celsius; public Auxiliary(AuxSensorProperties properties, boolean celius) { this.properties = properties; this.celsius = celius; } @Override public AuxSensorProperties getProperties() { return properties; } public void setProperties(AuxSensorProperties properties) { this.properties = properties; } @Override public void updateItem(Item item, OmniLinkBindingConfig config, EventPublisher publisher) { int setting = 0; switch (config.getObjectType()) { case AUX_CURRENT: setting = celsius ? MessageUtils.omniToC(properties.getCurrent()) : MessageUtils.omniToF(properties.getCurrent()); break; case AUX_HIGH: setting = celsius ? MessageUtils.omniToC(properties.getHighSetpoint()) : MessageUtils.omniToF(properties.getCurrent()); break; case AUX_LOW: setting = celsius ? MessageUtils.omniToC(properties.getLowSetpoint()) : MessageUtils.omniToF(properties.getCurrent()); break; case AUX_STATUS: setting = properties.getStatus(); break; default: return; } logger.debug("updating item {} for type {} to {}", item.getName(), config.getObjectType(), setting); if (item instanceof NumberItem) { publisher.postUpdate(item.getName(), new DecimalType(setting)); } } public boolean isCelsius() { return celsius; } public void setCelsius(boolean celsius) { this.celsius = celsius; } }