2 * Copyright (c) 2010-2022 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.tado.internal.api;
15 import org.openhab.binding.tado.internal.TadoBindingConstants.FanSpeed;
16 import org.openhab.binding.tado.internal.TadoBindingConstants.HvacMode;
17 import org.openhab.binding.tado.internal.TadoBindingConstants.TemperatureUnit;
18 import org.openhab.binding.tado.internal.api.model.AcFanSpeed;
19 import org.openhab.binding.tado.internal.api.model.AcMode;
20 import org.openhab.binding.tado.internal.api.model.AcModeCapabilities;
21 import org.openhab.binding.tado.internal.api.model.AirConditioningCapabilities;
22 import org.openhab.binding.tado.internal.api.model.ManualTerminationCondition;
23 import org.openhab.binding.tado.internal.api.model.OverlayTerminationCondition;
24 import org.openhab.binding.tado.internal.api.model.OverlayTerminationConditionTemplate;
25 import org.openhab.binding.tado.internal.api.model.OverlayTerminationConditionType;
26 import org.openhab.binding.tado.internal.api.model.TadoModeTerminationCondition;
27 import org.openhab.binding.tado.internal.api.model.TemperatureObject;
28 import org.openhab.binding.tado.internal.api.model.TimerTerminationCondition;
29 import org.openhab.binding.tado.internal.api.model.TimerTerminationConditionTemplate;
32 * Utility methods for the conversion of API types.
34 * @author Dennis Frommknecht - Initial contribution
36 public class TadoApiTypeUtils {
37 public static OverlayTerminationCondition getTerminationCondition(OverlayTerminationConditionType type,
38 Integer timerDurationInSeconds) {
41 return timerTermination(timerDurationInSeconds);
43 return manualTermination();
45 return tadoModeTermination();
51 public static OverlayTerminationCondition cleanTerminationCondition(
52 OverlayTerminationCondition terminationCondition) {
53 Integer timerDuration = terminationCondition.getType() == OverlayTerminationConditionType.TIMER
54 ? ((TimerTerminationCondition) terminationCondition).getRemainingTimeInSeconds()
57 return getTerminationCondition(terminationCondition.getType(), timerDuration);
60 public static OverlayTerminationCondition terminationConditionTemplateToTerminationCondition(
61 OverlayTerminationConditionTemplate template) {
62 Integer timerDuration = template.getType() == OverlayTerminationConditionType.TIMER
63 ? ((TimerTerminationConditionTemplate) template).getDurationInSeconds()
66 return getTerminationCondition(template.getType(), timerDuration);
69 public static TimerTerminationCondition timerTermination(int durationInSeconds) {
70 TimerTerminationCondition terminationCondition = new TimerTerminationCondition();
71 terminationCondition.setType(OverlayTerminationConditionType.TIMER);
72 terminationCondition.setDurationInSeconds(durationInSeconds);
73 return terminationCondition;
76 public static ManualTerminationCondition manualTermination() {
77 ManualTerminationCondition terminationCondition = new ManualTerminationCondition();
78 terminationCondition.setType(OverlayTerminationConditionType.MANUAL);
79 return terminationCondition;
82 public static TadoModeTerminationCondition tadoModeTermination() {
83 TadoModeTerminationCondition terminationCondition = new TadoModeTerminationCondition();
84 terminationCondition.setType(OverlayTerminationConditionType.TADO_MODE);
85 return terminationCondition;
88 public static TemperatureObject temperature(float degree, TemperatureUnit temperatureUnit) {
89 TemperatureObject temperature = new TemperatureObject();
90 if (temperatureUnit == TemperatureUnit.FAHRENHEIT) {
91 temperature.setFahrenheit(degree);
93 temperature.setCelsius(degree);
99 public static Float getTemperatureInUnit(TemperatureObject temperature, TemperatureUnit temperatureUnit) {
100 if (temperature == null) {
104 return temperatureUnit == TemperatureUnit.FAHRENHEIT ? temperature.getFahrenheit() : temperature.getCelsius();
107 public static AcMode getAcMode(HvacMode mode) {
128 public static AcFanSpeed getAcFanSpeed(FanSpeed fanSpeed) {
129 if (fanSpeed == null) {
135 return AcFanSpeed.AUTO;
137 return AcFanSpeed.HIGH;
139 return AcFanSpeed.MIDDLE;
141 return AcFanSpeed.LOW;
147 public static AcModeCapabilities getModeCapabilities(AirConditioningCapabilities capabilities, AcMode mode) {
148 AcModeCapabilities modeCapabilities = null;
153 modeCapabilities = capabilities.getCOOL();
156 modeCapabilities = capabilities.getHEAT();
159 modeCapabilities = capabilities.getDRY();
162 modeCapabilities = capabilities.getAUTO();
165 modeCapabilities = capabilities.getFAN();
170 return modeCapabilities != null ? modeCapabilities : new AcModeCapabilities();