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.tapocontrol.internal.structures;
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.*;
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;
24 import com.google.gson.JsonObject;
27 * Tapo-Device Information class
29 * @author Christian Wild - Initial contribution
32 public class TapoDeviceInfo {
34 * AVAILABLE BUT UNUSED FIELDS
35 * remove before push to real version
37 * private Boolean hasSetLocationInfo = false;
38 * private Integer latitude = 0;
39 * private Integer longitude = 0;
40 * private Integer timeDiff = 0;
41 * private String avatar = "";
42 * private String fwId = "";
43 * private String hwId = "";
44 * private String specs = "";
45 * private String ssid = "";
46 * private String oemId = "";
47 * private String lang = "";
48 * private String location = "";
51 private Boolean deviceOn = false;
52 private Boolean overheated = false;
53 private Integer brightness = 0;
54 private Integer colorTemp = 0;
55 private Integer hue = 0;
56 private Integer rssi = 0;
57 private Integer saturation = 100;
58 private Integer signalLevel = 0;
59 private Number onTime = 0;
60 private Number timeUsagePast30 = 0;
61 private Number timeUsagePast7 = 0;
62 private Number timeUsageToday = 0;
63 private String deviceId = "";
64 private String fwVer = "";
65 private String hwVer = "";
66 private String ip = "";
67 private String mac = "";
68 private String model = "";
69 private String nickname = "";
70 private String region = "";
71 private String type = "";
72 private TapoLightEffect lightEffect = new TapoLightEffect();
74 private JsonObject jsonObject = new JsonObject();
79 public TapoDeviceInfo() {
84 * Init DeviceInfo with new Data;
86 * @param jso JsonObject new Data
88 public TapoDeviceInfo(JsonObject jso) {
94 * Set Data (new JsonObject)
96 * @param jso JsonObject new Data
98 public TapoDeviceInfo setData(JsonObject jso) {
99 this.jsonObject = jso;
104 private void setData() {
105 this.brightness = jsonObjectToInt(jsonObject, DEVICE_PROPERTY_BRIGHTNES);
106 this.colorTemp = jsonObjectToInt(jsonObject, DEVICE_PROPERTY_COLORTEMP, BULB_MIN_COLORTEMP);
107 this.deviceId = jsonObjectToString(jsonObject, DEVICE_PROPERTY_ID);
108 this.deviceOn = jsonObjectToBool(jsonObject, DEVICE_PROPERTY_ON);
109 this.fwVer = jsonObjectToString(jsonObject, DEVICE_PROPERTY_FW);
110 this.hue = jsonObjectToInt(jsonObject, DEVICE_PROPERTY_HUE);
111 this.hwVer = jsonObjectToString(jsonObject, DEVICE_PROPERTY_HW);
112 this.ip = jsonObjectToString(jsonObject, DEVICE_PROPERTY_IP);
113 this.lightEffect = lightEffect.setData(jsonObject);
114 this.mac = jsonObjectToString(jsonObject, DEVICE_PROPERTY_MAC);
115 this.model = jsonObjectToString(jsonObject, DEVICE_PROPERTY_MODEL);
116 this.nickname = jsonObjectToString(jsonObject, DEVICE_PROPERTY_NICKNAME);
117 this.onTime = jsonObjectToNumber(jsonObject, DEVICE_PROPERTY_ONTIME);
118 this.overheated = jsonObjectToBool(jsonObject, DEVICE_PROPERTY_OVERHEAT);
119 this.region = jsonObjectToString(jsonObject, DEVICE_PROPERTY_REGION);
120 this.saturation = jsonObjectToInt(jsonObject, DEVICE_PROPERTY_SATURATION);
121 this.signalLevel = jsonObjectToInt(jsonObject, DEVICE_PROPERTY_SIGNAL);
122 this.rssi = jsonObjectToInt(jsonObject, DEVICE_PROPERTY_SIGNAL_RSSI);
123 this.timeUsagePast7 = jsonObjectToInt(jsonObject, DEVICE_PROPERTY_USAGE_7);
124 this.timeUsagePast30 = jsonObjectToInt(jsonObject, DEVICE_PROPERTY_USAGE_30);
125 this.timeUsageToday = jsonObjectToInt(jsonObject, DEVICE_PROPERTY_USAGE_TODAY);
126 this.type = jsonObjectToString(jsonObject, DEVICE_PROPERTY_TYPE);
129 /***********************************
133 ************************************/
135 public Integer getBrightness() {
139 public Integer getColorTemp() {
143 public String getFirmwareVersion() {
147 public String getHardwareVersion() {
151 public HSBType getHSB() {
152 DecimalType h = new DecimalType(hue);
153 PercentType s = new PercentType(saturation);
154 PercentType b = new PercentType(brightness);
155 return new HSBType(h, s, b);
158 public Integer getHue() {
162 public TapoLightEffect getLightEffect() {
166 public String getIP() {
170 public Boolean isOff() {
174 public Boolean isOn() {
178 public Boolean isOverheated() {
182 public String getMAC() {
183 return formatMac(mac, MAC_DIVISION_CHAR);
186 public String getModel() {
187 return model.replace(" ", "_");
190 public String getNickname() {
194 public Number getOnTime() {
198 public String getRegion() {
202 public String getRepresentationProperty() {
206 public Integer getSaturation() {
210 public String getSerial() {
214 public Integer getSignalLevel() {
218 public Integer getRSSI() {
222 public Number getTimeUsagePast7() {
223 return timeUsagePast7;
226 public Number getTimeUsagePast30() {
227 return timeUsagePast30;
230 public Number getTimeUsagePastToday() {
231 return timeUsageToday;
234 public String getType() {
239 public String toString() {
240 return jsonObject.toString();