2 * Copyright (c) 2010-2023 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
7 * This program and the accompanying materials are made available under the
8 * terms of the Eclipse Public License 2.0 which is available at
9 * http://www.eclipse.org/legal/epl-2.0
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.somfytahoma.internal.handler;
15 import static org.openhab.binding.somfytahoma.internal.SomfyTahomaBindingConstants.*;
17 import java.math.BigDecimal;
19 import org.eclipse.jdt.annotation.NonNullByDefault;
20 import org.openhab.core.thing.ChannelUID;
21 import org.openhab.core.thing.Thing;
22 import org.openhab.core.types.Command;
23 import org.openhab.core.types.RefreshType;
26 * The {@link SomfyTahomaValveHeatingSystemHandler} is responsible for handling commands,
27 * which are sent to one of the channels of the valve heating system thing.
29 * @author Ondrej Pecta - Initial contribution
32 public class SomfyTahomaValveHeatingSystemHandler extends SomfyTahomaBaseThingHandler {
34 public SomfyTahomaValveHeatingSystemHandler(Thing thing) {
36 stateNames.put(TARGET_TEMPERATURE, TARGET_ROOM_TEMPERATURE_STATE);
37 stateNames.put(BATTERY_LEVEL, BATTERY_LEVEL_STATE);
38 stateNames.put(DEROGATION_HEATING_MODE, "io:DerogationHeatingModeState");
39 stateNames.put(DEROGATED_TARGET_TEMPERATURE, "core:DerogatedTargetTemperatureState");
40 stateNames.put(CURRENT_HEATING_MODE, "io:CurrentHeatingModeState");
41 stateNames.put(OPEN_CLOSED_VALVE, "core:OpenClosedValveState");
42 stateNames.put(OPERATING_MODE, "core:OperatingModeState");
46 public void handleCommand(ChannelUID channelUID, Command command) {
47 super.handleCommand(channelUID, command);
48 if (command instanceof RefreshType) {
51 if (DEROGATED_TARGET_TEMPERATURE.equals(channelUID.getId())) {
52 BigDecimal temperature = toTemperature(command);
53 if (temperature != null) {
54 String param = "[" + temperature.toPlainString() + ", \"next_mode\"]";
55 sendCommand(COMMAND_SET_DEROGATION, param);
57 } else if (DEROGATION_HEATING_MODE.equals(channelUID.getId())) {
58 switch (command.toString()) {
60 sendCommand("exitDerogation");
65 case "frostprotection":
66 String param = "[\"" + command.toString() + "\", \"next_mode\"]";
67 sendCommand(COMMAND_SET_DEROGATION, param);