]> git.basschouten.com Git - openhab-addons.git/blob
345fc4f48f70efebfc3607645acb391c88c242b1
[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.tapocontrol.internal.structures;
14
15 import static org.openhab.binding.tapocontrol.internal.constants.TapoBindingSettings.*;
16 import static org.openhab.binding.tapocontrol.internal.constants.TapoThingConstants.*;
17 import static org.openhab.binding.tapocontrol.internal.helpers.TapoUtils.*;
18
19 import org.eclipse.jdt.annotation.NonNullByDefault;
20 import org.openhab.core.library.types.DecimalType;
21 import org.openhab.core.library.types.HSBType;
22 import org.openhab.core.library.types.PercentType;
23
24 import com.google.gson.JsonObject;
25
26 /**
27  * Tapo-Device Information class
28  *
29  * @author Christian Wild - Initial contribution
30  */
31 @NonNullByDefault
32 public class TapoDeviceInfo {
33     private Boolean deviceOn = false;
34     private Boolean overheated = false;
35     private Integer brightness = 0;
36     private Integer colorTemp = 0;
37     private Integer hue = 0;
38     private Integer rssi = 0;
39     private Integer saturation = 100;
40     private Integer signalLevel = 0;
41     private Number onTime = 0;
42     private Number timeUsagePast7 = 0;
43     private Number timeUsagePast30 = 0;
44     private Number timeUsageToday = 0;
45     private String deviceId = "";
46     private String fwVer = "";
47     private String hwVer = "";
48     private String ip = "";
49     private String mac = "";
50     private String model = "";
51     private String nickname = "";
52     private String region = "";
53     private String type = "";
54     private TapoLightEffect lightEffect = new TapoLightEffect();
55
56     private JsonObject jsonObject = new JsonObject();
57
58     /**
59      * INIT
60      */
61     public TapoDeviceInfo() {
62         setData();
63     }
64
65     /**
66      * Init DeviceInfo with new Data;
67      * 
68      * @param jso JsonObject new Data
69      */
70     public TapoDeviceInfo(JsonObject jso) {
71         jsonObject = jso;
72         setData();
73     }
74
75     /**
76      * Set Data (new JsonObject)
77      * 
78      * @param jso JsonObject new Data
79      */
80     public TapoDeviceInfo setData(JsonObject jso) {
81         this.jsonObject = jso;
82         setData();
83         return this;
84     }
85
86     private void setData() {
87         this.brightness = jsonObjectToInt(jsonObject, DEVICE_PROPERTY_BRIGHTNES);
88         this.colorTemp = jsonObjectToInt(jsonObject, DEVICE_PROPERTY_COLORTEMP, BULB_MIN_COLORTEMP);
89         this.deviceId = jsonObjectToString(jsonObject, DEVICE_PROPERTY_ID);
90         this.deviceOn = jsonObjectToBool(jsonObject, DEVICE_PROPERTY_ON);
91         this.fwVer = jsonObjectToString(jsonObject, DEVICE_PROPERTY_FW);
92         this.hue = jsonObjectToInt(jsonObject, DEVICE_PROPERTY_HUE);
93         this.hwVer = jsonObjectToString(jsonObject, DEVICE_PROPERTY_HW);
94         this.ip = jsonObjectToString(jsonObject, DEVICE_PROPERTY_IP);
95         this.lightEffect = lightEffect.setData(jsonObject);
96         this.mac = jsonObjectToString(jsonObject, DEVICE_PROPERTY_MAC);
97         this.model = jsonObjectToString(jsonObject, DEVICE_PROPERTY_MODEL);
98         this.nickname = jsonObjectToString(jsonObject, DEVICE_PROPERTY_NICKNAME);
99         this.onTime = jsonObjectToNumber(jsonObject, DEVICE_PROPERTY_ONTIME);
100         this.overheated = jsonObjectToBool(jsonObject, DEVICE_PROPERTY_OVERHEAT);
101         this.region = jsonObjectToString(jsonObject, DEVICE_PROPERTY_REGION);
102         this.saturation = jsonObjectToInt(jsonObject, DEVICE_PROPERTY_SATURATION);
103         this.signalLevel = jsonObjectToInt(jsonObject, DEVICE_PROPERTY_SIGNAL);
104         this.rssi = jsonObjectToInt(jsonObject, DEVICE_PROPERTY_SIGNAL_RSSI);
105         this.timeUsagePast7 = jsonObjectToInt(jsonObject, DEVICE_PROPERTY_USAGE_7);
106         this.timeUsagePast30 = jsonObjectToInt(jsonObject, DEVICE_PROPERTY_USAGE_30);
107         this.timeUsageToday = jsonObjectToInt(jsonObject, DEVICE_PROPERTY_USAGE_TODAY);
108         this.type = jsonObjectToString(jsonObject, DEVICE_PROPERTY_TYPE);
109     }
110
111     /***********************************
112      *
113      * GET VALUES
114      *
115      ************************************/
116
117     public Integer getBrightness() {
118         return brightness;
119     }
120
121     public Integer getColorTemp() {
122         return colorTemp;
123     }
124
125     public String getFirmwareVersion() {
126         return fwVer;
127     }
128
129     public String getHardwareVersion() {
130         return hwVer;
131     }
132
133     public HSBType getHSB() {
134         DecimalType h = new DecimalType(hue);
135         PercentType s = new PercentType(saturation);
136         PercentType b = new PercentType(brightness);
137         return new HSBType(h, s, b);
138     }
139
140     public Integer getHue() {
141         return hue;
142     }
143
144     public TapoLightEffect getLightEffect() {
145         return lightEffect;
146     }
147
148     public String getIP() {
149         return ip;
150     }
151
152     public Boolean isOff() {
153         return !deviceOn;
154     }
155
156     public Boolean isOn() {
157         return deviceOn;
158     }
159
160     public Boolean isOverheated() {
161         return overheated;
162     }
163
164     public String getMAC() {
165         return formatMac(mac, MAC_DIVISION_CHAR);
166     }
167
168     public String getModel() {
169         return model.replace(" Series", "");
170     }
171
172     public String getNickname() {
173         return nickname;
174     }
175
176     public Number getOnTime() {
177         return onTime;
178     }
179
180     public String getRegion() {
181         return region;
182     }
183
184     public String getRepresentationProperty() {
185         return getMAC();
186     }
187
188     public Integer getSaturation() {
189         return saturation;
190     }
191
192     public String getSerial() {
193         return deviceId;
194     }
195
196     public Integer getSignalLevel() {
197         return signalLevel;
198     }
199
200     public Integer getRSSI() {
201         return rssi;
202     }
203
204     public Number getTimeUsagePast7() {
205         return timeUsagePast7;
206     }
207
208     public Number getTimeUsagePast30() {
209         return timeUsagePast30;
210     }
211
212     public Number getTimeUsagePastToday() {
213         return timeUsageToday;
214     }
215
216     public String getType() {
217         return type;
218     }
219
220     @Override
221     public String toString() {
222         return jsonObject.toString();
223     }
224 }