]> git.basschouten.com Git - openhab-addons.git/blob
909648f9b34b98627f905da9efceb0235d07d681
[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.FanLevel;
16 import org.openhab.binding.tado.internal.TadoBindingConstants.FanSpeed;
17 import org.openhab.binding.tado.internal.TadoBindingConstants.HorizontalSwing;
18 import org.openhab.binding.tado.internal.TadoBindingConstants.HvacMode;
19 import org.openhab.binding.tado.internal.TadoBindingConstants.TemperatureUnit;
20 import org.openhab.binding.tado.internal.TadoBindingConstants.VerticalSwing;
21 import org.openhab.binding.tado.internal.api.model.ACFanLevel;
22 import org.openhab.binding.tado.internal.api.model.ACHorizontalSwing;
23 import org.openhab.binding.tado.internal.api.model.ACVerticalSwing;
24 import org.openhab.binding.tado.internal.api.model.AcFanSpeed;
25 import org.openhab.binding.tado.internal.api.model.AcMode;
26 import org.openhab.binding.tado.internal.api.model.AcModeCapabilities;
27 import org.openhab.binding.tado.internal.api.model.AirConditioningCapabilities;
28 import org.openhab.binding.tado.internal.api.model.ManualTerminationCondition;
29 import org.openhab.binding.tado.internal.api.model.OverlayTerminationCondition;
30 import org.openhab.binding.tado.internal.api.model.OverlayTerminationConditionTemplate;
31 import org.openhab.binding.tado.internal.api.model.OverlayTerminationConditionType;
32 import org.openhab.binding.tado.internal.api.model.TadoModeTerminationCondition;
33 import org.openhab.binding.tado.internal.api.model.TemperatureObject;
34 import org.openhab.binding.tado.internal.api.model.TimerTerminationCondition;
35 import org.openhab.binding.tado.internal.api.model.TimerTerminationConditionTemplate;
36
37 /**
38  * Utility methods for the conversion of API types.
39  *
40  * @author Dennis Frommknecht - Initial contribution
41  */
42 public class TadoApiTypeUtils {
43     public static OverlayTerminationCondition getTerminationCondition(OverlayTerminationConditionType type,
44             Integer timerDurationInSeconds) {
45         switch (type) {
46             case TIMER:
47                 return timerTermination(timerDurationInSeconds);
48             case MANUAL:
49                 return manualTermination();
50             case TADO_MODE:
51                 return tadoModeTermination();
52             default:
53                 return null;
54         }
55     }
56
57     public static OverlayTerminationCondition cleanTerminationCondition(
58             OverlayTerminationCondition terminationCondition) {
59         Integer timerDuration = terminationCondition.getType() == OverlayTerminationConditionType.TIMER
60                 ? ((TimerTerminationCondition) terminationCondition).getRemainingTimeInSeconds()
61                 : null;
62
63         return getTerminationCondition(terminationCondition.getType(), timerDuration);
64     }
65
66     public static OverlayTerminationCondition terminationConditionTemplateToTerminationCondition(
67             OverlayTerminationConditionTemplate template) {
68         Integer timerDuration = template.getType() == OverlayTerminationConditionType.TIMER
69                 ? ((TimerTerminationConditionTemplate) template).getDurationInSeconds()
70                 : null;
71
72         return getTerminationCondition(template.getType(), timerDuration);
73     }
74
75     public static TimerTerminationCondition timerTermination(int durationInSeconds) {
76         TimerTerminationCondition terminationCondition = new TimerTerminationCondition();
77         terminationCondition.setType(OverlayTerminationConditionType.TIMER);
78         terminationCondition.setDurationInSeconds(durationInSeconds);
79         return terminationCondition;
80     }
81
82     public static ManualTerminationCondition manualTermination() {
83         ManualTerminationCondition terminationCondition = new ManualTerminationCondition();
84         terminationCondition.setType(OverlayTerminationConditionType.MANUAL);
85         return terminationCondition;
86     }
87
88     public static TadoModeTerminationCondition tadoModeTermination() {
89         TadoModeTerminationCondition terminationCondition = new TadoModeTerminationCondition();
90         terminationCondition.setType(OverlayTerminationConditionType.TADO_MODE);
91         return terminationCondition;
92     }
93
94     public static TemperatureObject temperature(float degree, TemperatureUnit temperatureUnit) {
95         TemperatureObject temperature = new TemperatureObject();
96         if (temperatureUnit == TemperatureUnit.FAHRENHEIT) {
97             temperature.setFahrenheit(degree);
98         } else {
99             temperature.setCelsius(degree);
100         }
101
102         return temperature;
103     }
104
105     public static Float getTemperatureInUnit(TemperatureObject temperature, TemperatureUnit temperatureUnit) {
106         if (temperature == null) {
107             return null;
108         }
109
110         return temperatureUnit == TemperatureUnit.FAHRENHEIT ? temperature.getFahrenheit() : temperature.getCelsius();
111     }
112
113     public static AcMode getAcMode(HvacMode mode) {
114         if (mode == null) {
115             return null;
116         }
117
118         switch (mode) {
119             case HEAT:
120                 return AcMode.HEAT;
121             case COOL:
122                 return AcMode.COOL;
123             case FAN:
124                 return AcMode.FAN;
125             case DRY:
126                 return AcMode.DRY;
127             case AUTO:
128                 return AcMode.AUTO;
129             default:
130                 return null;
131         }
132     }
133
134     public static AcFanSpeed getAcFanSpeed(FanSpeed fanSpeed) {
135         if (fanSpeed == null) {
136             return null;
137         }
138
139         switch (fanSpeed) {
140             case AUTO:
141                 return AcFanSpeed.AUTO;
142             case HIGH:
143                 return AcFanSpeed.HIGH;
144             case MIDDLE:
145                 return AcFanSpeed.MIDDLE;
146             case LOW:
147                 return AcFanSpeed.LOW;
148         }
149
150         return null;
151     }
152
153     public static ACFanLevel getFanLevel(FanLevel fanLevel) {
154         if (fanLevel == null) {
155             return null;
156         }
157
158         switch (fanLevel) {
159             case AUTO:
160                 return ACFanLevel.AUTO;
161             case LEVEL1:
162                 return ACFanLevel.LEVEL1;
163             case LEVEL2:
164                 return ACFanLevel.LEVEL2;
165             case LEVEL3:
166                 return ACFanLevel.LEVEL3;
167             case LEVEL4:
168                 return ACFanLevel.LEVEL4;
169             case LEVEL5:
170                 return ACFanLevel.LEVEL5;
171             case SILENT:
172                 return ACFanLevel.SILENT;
173         }
174
175         return null;
176     }
177
178     public static ACHorizontalSwing getHorizontalSwing(HorizontalSwing horizontalSwing) {
179         if (horizontalSwing == null) {
180             return null;
181         }
182
183         switch (horizontalSwing) {
184             case LEFT:
185                 return ACHorizontalSwing.LEFT;
186             case MID_LEFT:
187                 return ACHorizontalSwing.MID_LEFT;
188             case MID:
189                 return ACHorizontalSwing.MID;
190             case MID_RIGHT:
191                 return ACHorizontalSwing.MID_RIGHT;
192             case RIGHT:
193                 return ACHorizontalSwing.RIGHT;
194             case ON:
195                 return ACHorizontalSwing.ON;
196             case OFF:
197                 return ACHorizontalSwing.OFF;
198             case AUTO:
199                 return ACHorizontalSwing.AUTO;
200         }
201
202         return null;
203     }
204
205     public static ACVerticalSwing getVerticalSwing(VerticalSwing verticalSwing) {
206         if (verticalSwing == null) {
207             return null;
208         }
209
210         switch (verticalSwing) {
211             case AUTO:
212                 return ACVerticalSwing.AUTO;
213             case UP:
214                 return ACVerticalSwing.UP;
215             case MID_UP:
216                 return ACVerticalSwing.MID_UP;
217             case MID:
218                 return ACVerticalSwing.MID;
219             case MID_DOWN:
220                 return ACVerticalSwing.MID_DOWN;
221             case DOWN:
222                 return ACVerticalSwing.DOWN;
223             case ON:
224                 return ACVerticalSwing.ON;
225             case OFF:
226                 return ACVerticalSwing.OFF;
227         }
228
229         return null;
230     }
231
232     public static AcModeCapabilities getModeCapabilities(AirConditioningCapabilities capabilities, AcMode mode) {
233         AcModeCapabilities modeCapabilities = null;
234
235         if (mode != null) {
236             switch (mode) {
237                 case COOL:
238                     modeCapabilities = capabilities.getCOOL();
239                     break;
240                 case HEAT:
241                     modeCapabilities = capabilities.getHEAT();
242                     break;
243                 case DRY:
244                     modeCapabilities = capabilities.getDRY();
245                     break;
246                 case AUTO:
247                     modeCapabilities = capabilities.getAUTO();
248                     break;
249                 case FAN:
250                     modeCapabilities = capabilities.getFAN();
251                     break;
252             }
253         }
254
255         return modeCapabilities != null ? modeCapabilities : new AcModeCapabilities();
256     }
257 }