/** * 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.mqtt.internal; import org.openhab.binding.mqtt.MqttBindingProvider; import org.openhab.core.binding.AbstractBinding; import org.openhab.core.types.Command; import org.openhab.core.types.State; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * MQTT binding to add MQTT send and receive functionality to OpenHab items. * This binding receives all commands and state updates and uses the item * configuration to publish them to MQTT. * * @author Davy Vanherbergen * @since 1.3.0 */ public class MqttItemBinding extends AbstractBinding<MqttBindingProvider> { private static final Logger logger = LoggerFactory.getLogger(MqttItemBinding.class); /** * @return MqttBindingProvider implementation. */ private MqttBindingProvider getBindingProvider() { return providers.iterator().next(); } @Override protected void internalReceiveCommand(String itemName, Command command) { MqttItemConfig itemConfig = getBindingProvider().getItemConfig(itemName); for (MqttMessagePublisher publisher : itemConfig.getMessagePublishers()) { if (publisher.supportsCommand(command)) { logger.debug("Publishing command {} to {}", command.toString(), publisher.getTopic()); publisher.publish(publisher.getTopic(), command.toString().getBytes()); } } } @Override protected void internalReceiveUpdate(String itemName, State newState) { MqttItemConfig itemConfig = getBindingProvider().getItemConfig(itemName); for (MqttMessagePublisher publisher : itemConfig.getMessagePublishers()) { if (publisher.supportsState(newState)) { logger.debug("Publishing state {} to {}", newState.toString(), publisher.getTopic()); publisher.publish(publisher.getTopic(), newState.toString().getBytes()); } } } protected void addBindingProvider(MqttBindingProvider bindingProvider) { super.addBindingProvider(bindingProvider); } protected void removeBindingProvider(MqttBindingProvider bindingProvider) { super.removeBindingProvider(bindingProvider); } }