]> git.basschouten.com Git - openhab-addons.git/blob
72d2d3045cc76564f085460a1eb5c848f969075d
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2022 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
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
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.binding.tado.internal.api;
14
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;
30
31 /**
32  * Utility methods for the conversion of API types.
33  *
34  * @author Dennis Frommknecht - Initial contribution
35  */
36 public class TadoApiTypeUtils {
37     public static OverlayTerminationCondition getTerminationCondition(OverlayTerminationConditionType type,
38             Integer timerDurationInSeconds) {
39         switch (type) {
40             case TIMER:
41                 return timerTermination(timerDurationInSeconds);
42             case MANUAL:
43                 return manualTermination();
44             case TADO_MODE:
45                 return tadoModeTermination();
46             default:
47                 return null;
48         }
49     }
50
51     public static OverlayTerminationCondition cleanTerminationCondition(
52             OverlayTerminationCondition terminationCondition) {
53         Integer timerDuration = terminationCondition.getType() == OverlayTerminationConditionType.TIMER
54                 ? ((TimerTerminationCondition) terminationCondition).getRemainingTimeInSeconds()
55                 : null;
56
57         return getTerminationCondition(terminationCondition.getType(), timerDuration);
58     }
59
60     public static OverlayTerminationCondition terminationConditionTemplateToTerminationCondition(
61             OverlayTerminationConditionTemplate template) {
62         Integer timerDuration = template.getType() == OverlayTerminationConditionType.TIMER
63                 ? ((TimerTerminationConditionTemplate) template).getDurationInSeconds()
64                 : null;
65
66         return getTerminationCondition(template.getType(), timerDuration);
67     }
68
69     public static TimerTerminationCondition timerTermination(int durationInSeconds) {
70         TimerTerminationCondition terminationCondition = new TimerTerminationCondition();
71         terminationCondition.setType(OverlayTerminationConditionType.TIMER);
72         terminationCondition.setDurationInSeconds(durationInSeconds);
73         return terminationCondition;
74     }
75
76     public static ManualTerminationCondition manualTermination() {
77         ManualTerminationCondition terminationCondition = new ManualTerminationCondition();
78         terminationCondition.setType(OverlayTerminationConditionType.MANUAL);
79         return terminationCondition;
80     }
81
82     public static TadoModeTerminationCondition tadoModeTermination() {
83         TadoModeTerminationCondition terminationCondition = new TadoModeTerminationCondition();
84         terminationCondition.setType(OverlayTerminationConditionType.TADO_MODE);
85         return terminationCondition;
86     }
87
88     public static TemperatureObject temperature(float degree, TemperatureUnit temperatureUnit) {
89         TemperatureObject temperature = new TemperatureObject();
90         if (temperatureUnit == TemperatureUnit.FAHRENHEIT) {
91             temperature.setFahrenheit(degree);
92         } else {
93             temperature.setCelsius(degree);
94         }
95
96         return temperature;
97     }
98
99     public static Float getTemperatureInUnit(TemperatureObject temperature, TemperatureUnit temperatureUnit) {
100         if (temperature == null) {
101             return null;
102         }
103
104         return temperatureUnit == TemperatureUnit.FAHRENHEIT ? temperature.getFahrenheit() : temperature.getCelsius();
105     }
106
107     public static AcMode getAcMode(HvacMode mode) {
108         if (mode == null) {
109             return null;
110         }
111
112         switch (mode) {
113             case HEAT:
114                 return AcMode.HEAT;
115             case COOL:
116                 return AcMode.COOL;
117             case FAN:
118                 return AcMode.FAN;
119             case DRY:
120                 return AcMode.DRY;
121             case AUTO:
122                 return AcMode.AUTO;
123             default:
124                 return null;
125         }
126     }
127
128     public static AcFanSpeed getAcFanSpeed(FanSpeed fanSpeed) {
129         if (fanSpeed == null) {
130             return null;
131         }
132
133         switch (fanSpeed) {
134             case AUTO:
135                 return AcFanSpeed.AUTO;
136             case HIGH:
137                 return AcFanSpeed.HIGH;
138             case MIDDLE:
139                 return AcFanSpeed.MIDDLE;
140             case LOW:
141                 return AcFanSpeed.LOW;
142         }
143
144         return null;
145     }
146
147     public static AcModeCapabilities getModeCapabilities(AirConditioningCapabilities capabilities, AcMode mode) {
148         AcModeCapabilities modeCapabilities = null;
149
150         if (mode != null) {
151             switch (mode) {
152                 case COOL:
153                     modeCapabilities = capabilities.getCOOL();
154                     break;
155                 case HEAT:
156                     modeCapabilities = capabilities.getHEAT();
157                     break;
158                 case DRY:
159                     modeCapabilities = capabilities.getDRY();
160                     break;
161                 case AUTO:
162                     modeCapabilities = capabilities.getAUTO();
163                     break;
164                 case FAN:
165                     modeCapabilities = capabilities.getFAN();
166                     break;
167             }
168         }
169
170         return modeCapabilities != null ? modeCapabilities : new AcModeCapabilities();
171     }
172 }