]> git.basschouten.com Git - openhab-addons.git/commitdiff
[melcloud] Improve null handling (#17295)
authorlsiepel <leosiepel@gmail.com>
Mon, 9 Sep 2024 19:21:37 +0000 (21:21 +0200)
committerGitHub <noreply@github.com>
Mon, 9 Sep 2024 19:21:37 +0000 (21:21 +0200)
* Add null annotations

Signed-off-by: Leo Siepel <leosiepel@gmail.com>
38 files changed:
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/MelCloudBindingConstants.java
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/MelCloudHandlerFactory.java
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/MelCloudConnection.java
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/Area.java [new file with mode: 0644]
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/Device.java [new file with mode: 0644]
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/DeviceProps.java [new file with mode: 0644]
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/DeviceStatus.java [new file with mode: 0644]
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/Floor.java [new file with mode: 0644]
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/HeatpumpDeviceStatus.java [new file with mode: 0644]
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/ListDevicesResponse.java [new file with mode: 0644]
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/LoginClientResponse.java [new file with mode: 0644]
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/LoginData.java [new file with mode: 0644]
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/Preset.java [new file with mode: 0644]
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/QuantizedCoordinates.java [new file with mode: 0644]
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/Structure.java [new file with mode: 0644]
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/WeatherObservation.java [new file with mode: 0644]
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/Area.java [deleted file]
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/Device.java [deleted file]
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/DeviceProps.java [deleted file]
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/DeviceStatus.java [deleted file]
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/Floor.java [deleted file]
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/HeatpumpDeviceStatus.java [deleted file]
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/ListDevicesResponse.java [deleted file]
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/LoginClientResponse.java [deleted file]
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/LoginData.java [deleted file]
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/Preset.java [deleted file]
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/QuantizedCoordinates.java [deleted file]
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/Structure.java [deleted file]
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/WeatherObservation.java [deleted file]
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/config/AcDeviceConfig.java
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/config/AccountConfig.java
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/config/HeatpumpDeviceConfig.java
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/discovery/MelCloudDiscoveryService.java
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/exceptions/MelCloudCommException.java
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/exceptions/MelCloudLoginException.java
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/handler/MelCloudAccountHandler.java
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/handler/MelCloudDeviceHandler.java
bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/handler/MelCloudHeatpumpDeviceHandler.java

index 6971de6aead60871efc3a3efa25c10f6dca91bb4..a4b556adf0ee40a5aebb845122597f40e364e28c 100644 (file)
@@ -17,6 +17,7 @@ import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
+import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.openhab.core.thing.ThingTypeUID;
 
 /**
@@ -26,6 +27,7 @@ import org.openhab.core.thing.ThingTypeUID;
  * @author Luca Calcaterra - Initial contribution
  * @author Wietse van Buitenen - Added heatpump device
  */
+@NonNullByDefault
 public class MelCloudBindingConstants {
 
     private static final String BINDING_ID = "melcloud";
index 65f55993dc6d397fdb96f94967016ad7728ac7e7..67fe1127a94878bf6ea1e9f8b4b6fbbb12d724bd 100644 (file)
@@ -14,6 +14,7 @@ package org.openhab.binding.melcloud.internal;
 
 import static org.openhab.binding.melcloud.internal.MelCloudBindingConstants.*;
 
+import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
 import org.openhab.binding.melcloud.internal.handler.MelCloudAccountHandler;
 import org.openhab.binding.melcloud.internal.handler.MelCloudDeviceHandler;
@@ -33,6 +34,7 @@ import org.osgi.service.component.annotations.Component;
  * @author Luca Calcaterra - Initial contribution
  * @author Wietse van Buitenen - Added heatpump device
  */
+@NonNullByDefault
 @Component(configurationPid = "binding.melcloud", service = ThingHandlerFactory.class)
 public class MelCloudHandlerFactory extends BaseThingHandlerFactory {
 
index 5733a26206eba466ed4846ea2d0fc3a0e9cc20c7..7343d1038feac220b832326371a6864a4bb1b797 100644 (file)
@@ -19,13 +19,15 @@ import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Objects;
 import java.util.Properties;
 
-import org.openhab.binding.melcloud.internal.api.json.Device;
-import org.openhab.binding.melcloud.internal.api.json.DeviceStatus;
-import org.openhab.binding.melcloud.internal.api.json.HeatpumpDeviceStatus;
-import org.openhab.binding.melcloud.internal.api.json.ListDevicesResponse;
-import org.openhab.binding.melcloud.internal.api.json.LoginClientResponse;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.openhab.binding.melcloud.internal.api.dto.Device;
+import org.openhab.binding.melcloud.internal.api.dto.DeviceStatus;
+import org.openhab.binding.melcloud.internal.api.dto.HeatpumpDeviceStatus;
+import org.openhab.binding.melcloud.internal.api.dto.ListDevicesResponse;
+import org.openhab.binding.melcloud.internal.api.dto.LoginClientResponse;
 import org.openhab.binding.melcloud.internal.exceptions.MelCloudCommException;
 import org.openhab.binding.melcloud.internal.exceptions.MelCloudLoginException;
 import org.openhab.core.io.net.http.HttpUtil;
@@ -45,6 +47,7 @@ import com.google.gson.JsonSyntaxException;
  * @author Pauli Anttila - Refactoring
  * @author Wietse van Buitenen - Return all devices, added heatpump device
  */
+@NonNullByDefault
 public class MelCloudConnection {
 
     private static final String LOGIN_URL = "https://app.melcloud.com/Mitsubishi.Wifi.Client/Login/ClientLogin";
@@ -54,18 +57,18 @@ public class MelCloudConnection {
     private static final int TIMEOUT_MILLISECONDS = 10000;
 
     // Gson objects are safe to share across threads and are somewhat expensive to construct. Use a single instance.
-    private static final Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation()
+    private static final Gson GSON = new GsonBuilder().excludeFieldsWithoutExposeAnnotation()
             .setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE).create();
 
     private final Logger logger = LoggerFactory.getLogger(MelCloudConnection.class);
 
     private boolean isConnected = false;
-    private String sessionKey;
+    private String sessionKey = "";
 
     public void login(String username, String password, int languageId)
             throws MelCloudCommException, MelCloudLoginException {
         setConnected(false);
-        sessionKey = null;
+        sessionKey = "";
         JsonObject jsonReq = new JsonObject();
         jsonReq.addProperty("Email", username);
         jsonReq.addProperty("Password", password);
@@ -79,7 +82,7 @@ public class MelCloudConnection {
             String loginResponse = HttpUtil.executeUrl("POST", LOGIN_URL, null, data, "application/json",
                     TIMEOUT_MILLISECONDS);
             logger.debug("Login response: {}", loginResponse);
-            LoginClientResponse resp = gson.fromJson(loginResponse, LoginClientResponse.class);
+            LoginClientResponse resp = Objects.requireNonNull(GSON.fromJson(loginResponse, LoginClientResponse.class));
             if (resp.getErrorId() != null) {
                 String errorMsg = String.format("Login failed, error code: %s", resp.getErrorId());
                 if (resp.getErrorMessage() != null) {
@@ -101,7 +104,7 @@ public class MelCloudConnection {
                     TIMEOUT_MILLISECONDS);
             logger.debug("Device list response: {}", response);
             List<Device> devices = new ArrayList<>();
-            ListDevicesResponse[] buildings = gson.fromJson(response, ListDevicesResponse[].class);
+            ListDevicesResponse[] buildings = GSON.fromJson(response, ListDevicesResponse[].class);
             Arrays.asList(buildings).forEach(building -> {
                 if (building.getStructure().getDevices() != null) {
                     devices.addAll(building.getStructure().getDevices());
@@ -137,7 +140,7 @@ public class MelCloudConnection {
         try {
             String response = HttpUtil.executeUrl("GET", url, getHeaderProperties(), null, null, TIMEOUT_MILLISECONDS);
             logger.debug("Device status response: {}", response);
-            return gson.fromJson(response, DeviceStatus.class);
+            return Objects.requireNonNull(GSON.fromJson(response, DeviceStatus.class));
         } catch (IOException | JsonSyntaxException e) {
             setConnected(false);
             throw new MelCloudCommException("Error occurred during device status fetch", e);
@@ -146,14 +149,14 @@ public class MelCloudConnection {
 
     public DeviceStatus sendDeviceStatus(DeviceStatus deviceStatus) throws MelCloudCommException {
         assertConnected();
-        String content = gson.toJson(deviceStatus, DeviceStatus.class);
+        String content = GSON.toJson(deviceStatus, DeviceStatus.class);
         logger.debug("Sending device status: {}", content);
         InputStream data = new ByteArrayInputStream(content.getBytes(StandardCharsets.UTF_8));
         try {
             String response = HttpUtil.executeUrl("POST", DEVICE_URL + "/SetAta", getHeaderProperties(), data,
                     "application/json", TIMEOUT_MILLISECONDS);
             logger.debug("Device status sending response: {}", response);
-            return gson.fromJson(response, DeviceStatus.class);
+            return Objects.requireNonNull(GSON.fromJson(response, DeviceStatus.class));
         } catch (IOException | JsonSyntaxException e) {
             setConnected(false);
             throw new MelCloudCommException("Error occurred during device command sending", e);
@@ -166,7 +169,7 @@ public class MelCloudConnection {
         try {
             String response = HttpUtil.executeUrl("GET", url, getHeaderProperties(), null, null, TIMEOUT_MILLISECONDS);
             logger.debug("Device heatpump status response: {}", response);
-            return gson.fromJson(response, HeatpumpDeviceStatus.class);
+            return Objects.requireNonNull(GSON.fromJson(response, HeatpumpDeviceStatus.class));
         } catch (IOException | JsonSyntaxException e) {
             setConnected(false);
             throw new MelCloudCommException("Error occurred during heatpump device status fetch", e);
@@ -176,14 +179,14 @@ public class MelCloudConnection {
     public HeatpumpDeviceStatus sendHeatpumpDeviceStatus(HeatpumpDeviceStatus heatpumpDeviceStatus)
             throws MelCloudCommException {
         assertConnected();
-        String content = gson.toJson(heatpumpDeviceStatus, HeatpumpDeviceStatus.class);
+        String content = GSON.toJson(heatpumpDeviceStatus, HeatpumpDeviceStatus.class);
         logger.debug("Sending heatpump device status: {}", content);
         InputStream data = new ByteArrayInputStream(content.getBytes(StandardCharsets.UTF_8));
         try {
             String response = HttpUtil.executeUrl("POST", DEVICE_URL + "/SetAtw", getHeaderProperties(), data,
                     "application/json", TIMEOUT_MILLISECONDS);
             logger.debug("Device heatpump status sending response: {}", response);
-            return gson.fromJson(response, HeatpumpDeviceStatus.class);
+            return Objects.requireNonNull(GSON.fromJson(response, HeatpumpDeviceStatus.class));
         } catch (IOException | JsonSyntaxException e) {
             setConnected(false);
             throw new MelCloudCommException("Error occurred during heatpump device command sending", e);
diff --git a/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/Area.java b/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/Area.java
new file mode 100644 (file)
index 0000000..8167b03
--- /dev/null
@@ -0,0 +1,148 @@
+/**
+ * Copyright (c) 2010-2024 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.melcloud.internal.api.dto;
+
+import java.util.List;
+
+import com.google.gson.annotations.Expose;
+
+/**
+ * {@link Area} provides area specific information for JSON data returned from MELCloud API
+ * Area Data
+ * Generated with jsonschema2pojo
+ *
+ * @author Wietse van Buitenen - Initial contribution
+ */
+public class Area {
+
+    @Expose
+    private Integer iD;
+
+    @Expose
+    private String name;
+
+    @Expose
+    private Integer buildingId;
+
+    @Expose
+    private Integer floorId;
+
+    @Expose
+    private Integer accessLevel;
+
+    @Expose
+    private Boolean directAccess;
+
+    @Expose
+    private Object endDate;
+
+    @Expose
+    private Integer minTemperature;
+
+    @Expose
+    private Integer maxTemperature;
+
+    @Expose
+    private Boolean expanded;
+
+    @Expose
+    private List<Device> devices = null;
+
+    public Integer getID() {
+        return iD;
+    }
+
+    public void setID(Integer iD) {
+        this.iD = iD;
+    }
+
+    public Integer getBuildingId() {
+        return buildingId;
+    }
+
+    public void setBuildingId(Integer buildingId) {
+        this.buildingId = buildingId;
+    }
+
+    public Integer getFloorId() {
+        return floorId;
+    }
+
+    public void setFloorId(Integer floorId) {
+        this.floorId = floorId;
+    }
+
+    public Integer getAccessLevel() {
+        return accessLevel;
+    }
+
+    public void setAccessLevel(Integer accessLevel) {
+        this.accessLevel = accessLevel;
+    }
+
+    public Boolean getDirectAccess() {
+        return directAccess;
+    }
+
+    public void setDirectAccess(Boolean directAccess) {
+        this.directAccess = directAccess;
+    }
+
+    public Object getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(Object endDate) {
+        this.endDate = endDate;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public List<Device> getDevices() {
+        return devices;
+    }
+
+    public void setDevices(List<Device> devices) {
+        this.devices = devices;
+    }
+
+    public Integer getMinTemperature() {
+        return minTemperature;
+    }
+
+    public void setMinTemperature(Integer minTemperature) {
+        this.minTemperature = minTemperature;
+    }
+
+    public Integer getMaxTemperature() {
+        return maxTemperature;
+    }
+
+    public void setMaxTemperature(Integer maxTemperature) {
+        this.maxTemperature = maxTemperature;
+    }
+
+    public Boolean getExpanded() {
+        return expanded;
+    }
+
+    public void setExpanded(Boolean expanded) {
+        this.expanded = expanded;
+    }
+}
diff --git a/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/Device.java b/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/Device.java
new file mode 100644 (file)
index 0000000..2c28b37
--- /dev/null
@@ -0,0 +1,556 @@
+/**
+ * Copyright (c) 2010-2024 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.melcloud.internal.api.dto;
+
+import java.security.Permissions;
+import java.util.List;
+
+import com.google.gson.annotations.Expose;
+
+/**
+ * The {@link Device} is responsible of JSON data For MELCloud API
+ * Device Structure.
+ * Generated with jsonschema2pojo
+ *
+ * @author Luca Calcaterra - Initial contribution
+ */
+
+public class Device {
+
+    @Expose
+    private Integer deviceID;
+
+    @Expose
+    private String deviceName;
+
+    @Expose
+    private Integer buildingID;
+
+    @Expose
+    private Object buildingName;
+
+    @Expose
+    private Object floorID;
+
+    @Expose
+    private Object floorName;
+
+    @Expose
+    private Object areaID;
+
+    @Expose
+    private Object areaName;
+
+    @Expose
+    private Integer imageID;
+
+    @Expose
+    private String installationDate;
+
+    @Expose
+    private Object lastServiceDate;
+
+    @Expose
+    private List<Preset> presets = null;
+
+    @Expose
+    private Object ownerID;
+
+    @Expose
+    private Object ownerName;
+
+    @Expose
+    private Object ownerEmail;
+
+    @Expose
+    private Integer accessLevel;
+
+    @Expose
+    private Boolean directAccess;
+
+    @Expose
+    private String endDate;
+
+    @Expose
+    private Object zone1Name;
+
+    @Expose
+    private Object zone2Name;
+
+    @Expose
+    private Integer minTemperature;
+
+    @Expose
+    private Integer maxTemperature;
+
+    @Expose
+    private Boolean hideVaneControls;
+
+    @Expose
+    private Boolean hideDryModeControl;
+
+    @Expose
+    private Boolean hideRoomTemperature;
+
+    @Expose
+    private Boolean hideSupplyTemperature;
+
+    @Expose
+    private Boolean hideOutdoorTemperature;
+
+    @Expose
+    private Object buildingCountry;
+
+    @Expose
+    private Object ownerCountry;
+
+    @Expose
+    private Integer adaptorType;
+
+    @Expose
+    private Integer type;
+
+    @Expose
+    private String macAddress;
+
+    @Expose
+    private String serialNumber;
+
+    @Expose
+    private DeviceProps device;
+
+    @Expose
+    private Integer diagnosticMode;
+
+    @Expose
+    private Object diagnosticEndDate;
+
+    @Expose
+    private Integer location;
+
+    @Expose
+    private Object detectedCountry;
+
+    @Expose
+    private Integer registrations;
+
+    @Expose
+    private Object localIPAddress;
+
+    @Expose
+    private Integer timeZone;
+
+    @Expose
+    private Object registReason;
+
+    @Expose
+    private Integer expectedCommand;
+
+    private Integer registRetry;
+
+    @Expose
+    private String dateCreated;
+
+    @Expose
+    private Object firmwareDeployment;
+
+    @Expose
+    private Boolean firmwareUpdateAborted;
+
+    @Expose
+    private Permissions permissions;
+
+    public Integer getDeviceID() {
+        return deviceID;
+    }
+
+    public void setDeviceID(Integer deviceID) {
+        this.deviceID = deviceID;
+    }
+
+    public String getDeviceName() {
+        return deviceName;
+    }
+
+    public void setDeviceName(String deviceName) {
+        this.deviceName = deviceName;
+    }
+
+    public Integer getBuildingID() {
+        return buildingID;
+    }
+
+    public void setBuildingID(Integer buildingID) {
+        this.buildingID = buildingID;
+    }
+
+    public Object getBuildingName() {
+        return buildingName;
+    }
+
+    public void setBuildingName(Object buildingName) {
+        this.buildingName = buildingName;
+    }
+
+    public Object getFloorID() {
+        return floorID;
+    }
+
+    public void setFloorID(Object floorID) {
+        this.floorID = floorID;
+    }
+
+    public Object getFloorName() {
+        return floorName;
+    }
+
+    public void setFloorName(Object floorName) {
+        this.floorName = floorName;
+    }
+
+    public Object getAreaID() {
+        return areaID;
+    }
+
+    public void setAreaID(Object areaID) {
+        this.areaID = areaID;
+    }
+
+    public Object getAreaName() {
+        return areaName;
+    }
+
+    public void setAreaName(Object areaName) {
+        this.areaName = areaName;
+    }
+
+    public Integer getImageID() {
+        return imageID;
+    }
+
+    public void setImageID(Integer imageID) {
+        this.imageID = imageID;
+    }
+
+    public String getInstallationDate() {
+        return installationDate;
+    }
+
+    public void setInstallationDate(String installationDate) {
+        this.installationDate = installationDate;
+    }
+
+    public Object getLastServiceDate() {
+        return lastServiceDate;
+    }
+
+    public void setLastServiceDate(Object lastServiceDate) {
+        this.lastServiceDate = lastServiceDate;
+    }
+
+    public List<Preset> getPresets() {
+        return presets;
+    }
+
+    public void setPresets(List<Preset> presets) {
+        this.presets = presets;
+    }
+
+    public Object getOwnerID() {
+        return ownerID;
+    }
+
+    public void setOwnerID(Object ownerID) {
+        this.ownerID = ownerID;
+    }
+
+    public Object getOwnerName() {
+        return ownerName;
+    }
+
+    public void setOwnerName(Object ownerName) {
+        this.ownerName = ownerName;
+    }
+
+    public Object getOwnerEmail() {
+        return ownerEmail;
+    }
+
+    public void setOwnerEmail(Object ownerEmail) {
+        this.ownerEmail = ownerEmail;
+    }
+
+    public Integer getAccessLevel() {
+        return accessLevel;
+    }
+
+    public void setAccessLevel(Integer accessLevel) {
+        this.accessLevel = accessLevel;
+    }
+
+    public Boolean getDirectAccess() {
+        return directAccess;
+    }
+
+    public void setDirectAccess(Boolean directAccess) {
+        this.directAccess = directAccess;
+    }
+
+    public String getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(String endDate) {
+        this.endDate = endDate;
+    }
+
+    public Object getZone1Name() {
+        return zone1Name;
+    }
+
+    public void setZone1Name(Object zone1Name) {
+        this.zone1Name = zone1Name;
+    }
+
+    public Object getZone2Name() {
+        return zone2Name;
+    }
+
+    public void setZone2Name(Object zone2Name) {
+        this.zone2Name = zone2Name;
+    }
+
+    public Integer getMinTemperature() {
+        return minTemperature;
+    }
+
+    public void setMinTemperature(Integer minTemperature) {
+        this.minTemperature = minTemperature;
+    }
+
+    public Integer getMaxTemperature() {
+        return maxTemperature;
+    }
+
+    public void setMaxTemperature(Integer maxTemperature) {
+        this.maxTemperature = maxTemperature;
+    }
+
+    public Boolean getHideVaneControls() {
+        return hideVaneControls;
+    }
+
+    public void setHideVaneControls(Boolean hideVaneControls) {
+        this.hideVaneControls = hideVaneControls;
+    }
+
+    public Boolean getHideDryModeControl() {
+        return hideDryModeControl;
+    }
+
+    public void setHideDryModeControl(Boolean hideDryModeControl) {
+        this.hideDryModeControl = hideDryModeControl;
+    }
+
+    public Boolean getHideRoomTemperature() {
+        return hideRoomTemperature;
+    }
+
+    public void setHideRoomTemperature(Boolean hideRoomTemperature) {
+        this.hideRoomTemperature = hideRoomTemperature;
+    }
+
+    public Boolean getHideSupplyTemperature() {
+        return hideSupplyTemperature;
+    }
+
+    public void setHideSupplyTemperature(Boolean hideSupplyTemperature) {
+        this.hideSupplyTemperature = hideSupplyTemperature;
+    }
+
+    public Boolean getHideOutdoorTemperature() {
+        return hideOutdoorTemperature;
+    }
+
+    public void setHideOutdoorTemperature(Boolean hideOutdoorTemperature) {
+        this.hideOutdoorTemperature = hideOutdoorTemperature;
+    }
+
+    public Object getBuildingCountry() {
+        return buildingCountry;
+    }
+
+    public void setBuildingCountry(Object buildingCountry) {
+        this.buildingCountry = buildingCountry;
+    }
+
+    public Object getOwnerCountry() {
+        return ownerCountry;
+    }
+
+    public void setOwnerCountry(Object ownerCountry) {
+        this.ownerCountry = ownerCountry;
+    }
+
+    public Integer getAdaptorType() {
+        return adaptorType;
+    }
+
+    public void setAdaptorType(Integer adaptorType) {
+        this.adaptorType = adaptorType;
+    }
+
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
+
+    public String getMacAddress() {
+        return macAddress;
+    }
+
+    public void setMacAddress(String macAddress) {
+        this.macAddress = macAddress;
+    }
+
+    public String getSerialNumber() {
+        return serialNumber;
+    }
+
+    public void setSerialNumber(String serialNumber) {
+        this.serialNumber = serialNumber;
+    }
+
+    public DeviceProps getDeviceProps() {
+        return device;
+    }
+
+    public void setDeviceProps(DeviceProps device) {
+        this.device = device;
+    }
+
+    public Integer getDiagnosticMode() {
+        return diagnosticMode;
+    }
+
+    public void setDiagnosticMode(Integer diagnosticMode) {
+        this.diagnosticMode = diagnosticMode;
+    }
+
+    public Object getDiagnosticEndDate() {
+        return diagnosticEndDate;
+    }
+
+    public void setDiagnosticEndDate(Object diagnosticEndDate) {
+        this.diagnosticEndDate = diagnosticEndDate;
+    }
+
+    public Integer getLocation() {
+        return location;
+    }
+
+    public void setLocation(Integer location) {
+        this.location = location;
+    }
+
+    public Object getDetectedCountry() {
+        return detectedCountry;
+    }
+
+    public void setDetectedCountry(Object detectedCountry) {
+        this.detectedCountry = detectedCountry;
+    }
+
+    public Integer getRegistrations() {
+        return registrations;
+    }
+
+    public void setRegistrations(Integer registrations) {
+        this.registrations = registrations;
+    }
+
+    public Object getLocalIPAddress() {
+        return localIPAddress;
+    }
+
+    public void setLocalIPAddress(Object localIPAddress) {
+        this.localIPAddress = localIPAddress;
+    }
+
+    public Integer getTimeZone() {
+        return timeZone;
+    }
+
+    public void setTimeZone(Integer timeZone) {
+        this.timeZone = timeZone;
+    }
+
+    public Object getRegistReason() {
+        return registReason;
+    }
+
+    public void setRegistReason(Object registReason) {
+        this.registReason = registReason;
+    }
+
+    public Integer getExpectedCommand() {
+        return expectedCommand;
+    }
+
+    public void setExpectedCommand(Integer expectedCommand) {
+        this.expectedCommand = expectedCommand;
+    }
+
+    public Integer getRegistRetry() {
+        return registRetry;
+    }
+
+    public void setRegistRetry(Integer registRetry) {
+        this.registRetry = registRetry;
+    }
+
+    public String getDateCreated() {
+        return dateCreated;
+    }
+
+    public void setDateCreated(String dateCreated) {
+        this.dateCreated = dateCreated;
+    }
+
+    public Object getFirmwareDeployment() {
+        return firmwareDeployment;
+    }
+
+    public void setFirmwareDeployment(Object firmwareDeployment) {
+        this.firmwareDeployment = firmwareDeployment;
+    }
+
+    public Boolean getFirmwareUpdateAborted() {
+        return firmwareUpdateAborted;
+    }
+
+    public void setFirmwareUpdateAborted(Boolean firmwareUpdateAborted) {
+        this.firmwareUpdateAborted = firmwareUpdateAborted;
+    }
+
+    public Permissions getPermissions() {
+        return permissions;
+    }
+
+    public void setPermissions(Permissions permissions) {
+        this.permissions = permissions;
+    }
+}
diff --git a/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/DeviceProps.java b/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/DeviceProps.java
new file mode 100644 (file)
index 0000000..375fbcd
--- /dev/null
@@ -0,0 +1,1105 @@
+/**
+ * Copyright (c) 2010-2024 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.melcloud.internal.api.dto;
+
+import java.util.List;
+
+import com.google.gson.annotations.Expose;
+
+/**
+ * The {@link DeviceProps} is responsible of JSON data For MELCloud API
+ * Device Properties.
+ * Generated with jsonschema2pojo
+ *
+ * @author Luca Calcaterra - Initial contribution
+ */
+public class DeviceProps {
+
+    @Expose
+    private List<Object> listHistory24Formatters = null;
+
+    @Expose
+    private Integer deviceType;
+
+    @Expose
+    private Boolean canCool;
+
+    @Expose
+    private Boolean canHeat;
+
+    @Expose
+    private Boolean canDry;
+
+    @Expose
+    private Boolean hasAutomaticFanSpeed;
+
+    @Expose
+    private Boolean airDirectionFunction;
+
+    @Expose
+    private Boolean swingFunction;
+
+    @Expose
+    private Integer numberOfFanSpeeds;
+
+    @Expose
+    private Boolean useTemperatureA;
+
+    @Expose
+    private Integer temperatureIncrementOverride;
+
+    @Expose
+    private Double temperatureIncrement;
+
+    @Expose
+    private Double minTempCoolDry;
+
+    @Expose
+    private Double maxTempCoolDry;
+
+    @Expose
+    private Double minTempHeat;
+
+    @Expose
+    private Double maxTempHeat;
+
+    @Expose
+    private Double minTempAutomatic;
+
+    @Expose
+    private Double maxTempAutomatic;
+
+    @Expose
+    private Boolean legacyDevice;
+
+    @Expose
+    private Boolean unitSupportsStandbyMode;
+
+    @Expose
+    private Boolean modelIsAirCurtain;
+
+    @Expose
+    private Boolean modelSupportsFanSpeed;
+
+    @Expose
+    private Boolean modelSupportsAuto;
+
+    @Expose
+    private Boolean modelSupportsHeat;
+
+    @Expose
+    private Boolean modelSupportsDry;
+
+    @Expose
+    private Boolean modelSupportsVaneVertical;
+
+    @Expose
+    private Boolean modelSupportsVaneHorizontal;
+
+    @Expose
+    private Boolean modelSupportsStandbyMode;
+
+    @Expose
+    private Boolean modelSupportsEnergyReporting;
+
+    @Expose
+    private Boolean power;
+
+    @Expose
+    private Double roomTemperature;
+
+    @Expose
+    private Double setTemperature;
+
+    @Expose
+    private Integer actualFanSpeed;
+
+    @Expose
+    private Integer fanSpeed;
+
+    @Expose
+    private Boolean automaticFanSpeed;
+
+    @Expose
+    private Integer vaneVerticalDirection;
+
+    @Expose
+    private Boolean vaneVerticalSwing;
+
+    @Expose
+    private Integer vaneHorizontalDirection;
+
+    @Expose
+    private Boolean vaneHorizontalSwing;
+
+    @Expose
+    private Integer operationMode;
+
+    @Expose
+    private Integer effectiveFlags;
+
+    @Expose
+    private Integer lastEffectiveFlags;
+
+    @Expose
+    private Boolean inStandbyMode;
+
+    @Expose
+    private Double defaultCoolingSetTemperature;
+
+    @Expose
+    private Double defaultHeatingSetTemperature;
+
+    @Expose
+    private Integer roomTemperatureLabel;
+
+    @Expose
+    private Boolean hasEnergyConsumedMeter;
+
+    @Expose
+    private Integer currentEnergyConsumed;
+
+    @Expose
+    private Integer currentEnergyMode;
+
+    @Expose
+    private Boolean coolingDisabled;
+
+    @Expose
+    private Integer minPcycle;
+
+    @Expose
+    private Integer maxPcycle;
+
+    @Expose
+    private Integer effectivePCycle;
+
+    @Expose
+    private Integer maxOutdoorUnits;
+
+    @Expose
+    private Integer maxIndoorUnits;
+
+    @Expose
+    private Integer maxTemperatureControlUnits;
+
+    @Expose
+    private Integer deviceID;
+
+    @Expose
+    private String macAddress;
+
+    @Expose
+    private String serialNumber;
+
+    @Expose
+    private Integer timeZoneID;
+
+    @Expose
+    private Integer diagnosticMode;
+
+    @Expose
+    private Object diagnosticEndDate;
+
+    @Expose
+    private Integer expectedCommand;
+
+    @Expose
+    private Object owner;
+
+    @Expose
+    private Object detectedCountry;
+
+    @Expose
+    private Integer adaptorType;
+
+    @Expose
+    private Object firmwareDeployment;
+
+    @Expose
+    private Boolean firmwareUpdateAborted;
+
+    @Expose
+    private Integer wifiSignalStrength;
+
+    @Expose
+    private String wifiAdapterStatus;
+
+    @Expose
+    private String position;
+
+    @Expose
+    private Integer pCycle;
+
+    @Expose
+    private Integer recordNumMax;
+
+    @Expose
+    private String lastTimeStamp;
+
+    @Expose
+    private Integer errorCode;
+
+    @Expose
+    private Boolean hasError;
+
+    @Expose
+    private String lastReset;
+
+    @Expose
+    private Integer flashWrites;
+
+    @Expose
+    private Object scene;
+
+    @Expose
+    private Object sSLExpirationDate;
+
+    @Expose
+    private Object sPTimeout;
+
+    @Expose
+    private Object passcode;
+
+    @Expose
+    private Boolean serverCommunicationDisabled;
+
+    @Expose
+    private Integer consecutiveUploadErrors;
+
+    @Expose
+    private Object doNotRespondAfter;
+
+    @Expose
+    private Integer ownerRoleAccessLevel;
+
+    @Expose
+    private Integer ownerCountry;
+
+    @Expose
+    private Object rate1StartTime;
+
+    @Expose
+    private Object rate2StartTime;
+
+    @Expose
+    private Integer protocolVersion;
+
+    @Expose
+    private Integer unitVersion;
+
+    @Expose
+    private Integer firmwareAppVersion;
+
+    @Expose
+    private Integer firmwareWebVersion;
+
+    @Expose
+    private Integer firmwareWlanVersion;
+
+    @Expose
+    private Boolean hasErrorMessages;
+
+    @Expose
+    private Boolean hasZone2;
+
+    @Expose
+    private Boolean offline;
+
+    @Expose
+    private List<Object> units = null;
+
+    public List<Object> getListHistory24Formatters() {
+        return listHistory24Formatters;
+    }
+
+    public void setListHistory24Formatters(List<Object> listHistory24Formatters) {
+        this.listHistory24Formatters = listHistory24Formatters;
+    }
+
+    public Integer getDeviceType() {
+        return deviceType;
+    }
+
+    public void setDeviceType(Integer deviceType) {
+        this.deviceType = deviceType;
+    }
+
+    public Boolean getCanCool() {
+        return canCool;
+    }
+
+    public void setCanCool(Boolean canCool) {
+        this.canCool = canCool;
+    }
+
+    public Boolean getCanHeat() {
+        return canHeat;
+    }
+
+    public void setCanHeat(Boolean canHeat) {
+        this.canHeat = canHeat;
+    }
+
+    public Boolean getCanDry() {
+        return canDry;
+    }
+
+    public void setCanDry(Boolean canDry) {
+        this.canDry = canDry;
+    }
+
+    public Boolean getHasAutomaticFanSpeed() {
+        return hasAutomaticFanSpeed;
+    }
+
+    public void setHasAutomaticFanSpeed(Boolean hasAutomaticFanSpeed) {
+        this.hasAutomaticFanSpeed = hasAutomaticFanSpeed;
+    }
+
+    public Boolean getAirDirectionFunction() {
+        return airDirectionFunction;
+    }
+
+    public void setAirDirectionFunction(Boolean airDirectionFunction) {
+        this.airDirectionFunction = airDirectionFunction;
+    }
+
+    public Boolean getSwingFunction() {
+        return swingFunction;
+    }
+
+    public void setSwingFunction(Boolean swingFunction) {
+        this.swingFunction = swingFunction;
+    }
+
+    public Integer getNumberOfFanSpeeds() {
+        return numberOfFanSpeeds;
+    }
+
+    public void setNumberOfFanSpeeds(Integer numberOfFanSpeeds) {
+        this.numberOfFanSpeeds = numberOfFanSpeeds;
+    }
+
+    public Boolean getUseTemperatureA() {
+        return useTemperatureA;
+    }
+
+    public void setUseTemperatureA(Boolean useTemperatureA) {
+        this.useTemperatureA = useTemperatureA;
+    }
+
+    public Integer getTemperatureIncrementOverride() {
+        return temperatureIncrementOverride;
+    }
+
+    public void setTemperatureIncrementOverride(Integer temperatureIncrementOverride) {
+        this.temperatureIncrementOverride = temperatureIncrementOverride;
+    }
+
+    public Double getTemperatureIncrement() {
+        return temperatureIncrement;
+    }
+
+    public void setTemperatureIncrement(Double temperatureIncrement) {
+        this.temperatureIncrement = temperatureIncrement;
+    }
+
+    public Double getMinTempCoolDry() {
+        return minTempCoolDry;
+    }
+
+    public void setMinTempCoolDry(Double minTempCoolDry) {
+        this.minTempCoolDry = minTempCoolDry;
+    }
+
+    public Double getMaxTempCoolDry() {
+        return maxTempCoolDry;
+    }
+
+    public void setMaxTempCoolDry(Double maxTempCoolDry) {
+        this.maxTempCoolDry = maxTempCoolDry;
+    }
+
+    public Double getMinTempHeat() {
+        return minTempHeat;
+    }
+
+    public void setMinTempHeat(Double minTempHeat) {
+        this.minTempHeat = minTempHeat;
+    }
+
+    public Double getMaxTempHeat() {
+        return maxTempHeat;
+    }
+
+    public void setMaxTempHeat(Double maxTempHeat) {
+        this.maxTempHeat = maxTempHeat;
+    }
+
+    public Double getMinTempAutomatic() {
+        return minTempAutomatic;
+    }
+
+    public void setMinTempAutomatic(Double minTempAutomatic) {
+        this.minTempAutomatic = minTempAutomatic;
+    }
+
+    public Double getMaxTempAutomatic() {
+        return maxTempAutomatic;
+    }
+
+    public void setMaxTempAutomatic(Double maxTempAutomatic) {
+        this.maxTempAutomatic = maxTempAutomatic;
+    }
+
+    public Boolean getLegacyDevice() {
+        return legacyDevice;
+    }
+
+    public void setLegacyDevice(Boolean legacyDevice) {
+        this.legacyDevice = legacyDevice;
+    }
+
+    public Boolean getUnitSupportsStandbyMode() {
+        return unitSupportsStandbyMode;
+    }
+
+    public void setUnitSupportsStandbyMode(Boolean unitSupportsStandbyMode) {
+        this.unitSupportsStandbyMode = unitSupportsStandbyMode;
+    }
+
+    public Boolean getModelIsAirCurtain() {
+        return modelIsAirCurtain;
+    }
+
+    public void setModelIsAirCurtain(Boolean modelIsAirCurtain) {
+        this.modelIsAirCurtain = modelIsAirCurtain;
+    }
+
+    public Boolean getModelSupportsFanSpeed() {
+        return modelSupportsFanSpeed;
+    }
+
+    public void setModelSupportsFanSpeed(Boolean modelSupportsFanSpeed) {
+        this.modelSupportsFanSpeed = modelSupportsFanSpeed;
+    }
+
+    public Boolean getModelSupportsAuto() {
+        return modelSupportsAuto;
+    }
+
+    public void setModelSupportsAuto(Boolean modelSupportsAuto) {
+        this.modelSupportsAuto = modelSupportsAuto;
+    }
+
+    public Boolean getModelSupportsHeat() {
+        return modelSupportsHeat;
+    }
+
+    public void setModelSupportsHeat(Boolean modelSupportsHeat) {
+        this.modelSupportsHeat = modelSupportsHeat;
+    }
+
+    public Boolean getModelSupportsDry() {
+        return modelSupportsDry;
+    }
+
+    public void setModelSupportsDry(Boolean modelSupportsDry) {
+        this.modelSupportsDry = modelSupportsDry;
+    }
+
+    public Boolean getModelSupportsVaneVertical() {
+        return modelSupportsVaneVertical;
+    }
+
+    public void setModelSupportsVaneVertical(Boolean modelSupportsVaneVertical) {
+        this.modelSupportsVaneVertical = modelSupportsVaneVertical;
+    }
+
+    public Boolean getModelSupportsVaneHorizontal() {
+        return modelSupportsVaneHorizontal;
+    }
+
+    public void setModelSupportsVaneHorizontal(Boolean modelSupportsVaneHorizontal) {
+        this.modelSupportsVaneHorizontal = modelSupportsVaneHorizontal;
+    }
+
+    public Boolean getModelSupportsStandbyMode() {
+        return modelSupportsStandbyMode;
+    }
+
+    public void setModelSupportsStandbyMode(Boolean modelSupportsStandbyMode) {
+        this.modelSupportsStandbyMode = modelSupportsStandbyMode;
+    }
+
+    public Boolean getModelSupportsEnergyReporting() {
+        return modelSupportsEnergyReporting;
+    }
+
+    public void setModelSupportsEnergyReporting(Boolean modelSupportsEnergyReporting) {
+        this.modelSupportsEnergyReporting = modelSupportsEnergyReporting;
+    }
+
+    public Boolean getPower() {
+        return power;
+    }
+
+    public void setPower(Boolean power) {
+        this.power = power;
+    }
+
+    public Double getRoomTemperature() {
+        return roomTemperature;
+    }
+
+    public void setRoomTemperature(Double roomTemperature) {
+        this.roomTemperature = roomTemperature;
+    }
+
+    public Double getSetTemperature() {
+        return setTemperature;
+    }
+
+    public void setSetTemperature(Double setTemperature) {
+        this.setTemperature = setTemperature;
+    }
+
+    public Integer getActualFanSpeed() {
+        return actualFanSpeed;
+    }
+
+    public void setActualFanSpeed(Integer actualFanSpeed) {
+        this.actualFanSpeed = actualFanSpeed;
+    }
+
+    public Integer getFanSpeed() {
+        return fanSpeed;
+    }
+
+    public void setFanSpeed(Integer fanSpeed) {
+        this.fanSpeed = fanSpeed;
+    }
+
+    public Boolean getAutomaticFanSpeed() {
+        return automaticFanSpeed;
+    }
+
+    public void setAutomaticFanSpeed(Boolean automaticFanSpeed) {
+        this.automaticFanSpeed = automaticFanSpeed;
+    }
+
+    public Integer getVaneVerticalDirection() {
+        return vaneVerticalDirection;
+    }
+
+    public void setVaneVerticalDirection(Integer vaneVerticalDirection) {
+        this.vaneVerticalDirection = vaneVerticalDirection;
+    }
+
+    public Boolean getVaneVerticalSwing() {
+        return vaneVerticalSwing;
+    }
+
+    public void setVaneVerticalSwing(Boolean vaneVerticalSwing) {
+        this.vaneVerticalSwing = vaneVerticalSwing;
+    }
+
+    public Integer getVaneHorizontalDirection() {
+        return vaneHorizontalDirection;
+    }
+
+    public void setVaneHorizontalDirection(Integer vaneHorizontalDirection) {
+        this.vaneHorizontalDirection = vaneHorizontalDirection;
+    }
+
+    public Boolean getVaneHorizontalSwing() {
+        return vaneHorizontalSwing;
+    }
+
+    public void setVaneHorizontalSwing(Boolean vaneHorizontalSwing) {
+        this.vaneHorizontalSwing = vaneHorizontalSwing;
+    }
+
+    public Integer getOperationMode() {
+        return operationMode;
+    }
+
+    public void setOperationMode(Integer operationMode) {
+        this.operationMode = operationMode;
+    }
+
+    public Integer getEffectiveFlags() {
+        return effectiveFlags;
+    }
+
+    public void setEffectiveFlags(Integer effectiveFlags) {
+        this.effectiveFlags = effectiveFlags;
+    }
+
+    public Integer getLastEffectiveFlags() {
+        return lastEffectiveFlags;
+    }
+
+    public void setLastEffectiveFlags(Integer lastEffectiveFlags) {
+        this.lastEffectiveFlags = lastEffectiveFlags;
+    }
+
+    public Boolean getInStandbyMode() {
+        return inStandbyMode;
+    }
+
+    public void setInStandbyMode(Boolean inStandbyMode) {
+        this.inStandbyMode = inStandbyMode;
+    }
+
+    public Double getDefaultCoolingSetTemperature() {
+        return defaultCoolingSetTemperature;
+    }
+
+    public void setDefaultCoolingSetTemperature(Double defaultCoolingSetTemperature) {
+        this.defaultCoolingSetTemperature = defaultCoolingSetTemperature;
+    }
+
+    public Double getDefaultHeatingSetTemperature() {
+        return defaultHeatingSetTemperature;
+    }
+
+    public void setDefaultHeatingSetTemperature(Double defaultHeatingSetTemperature) {
+        this.defaultHeatingSetTemperature = defaultHeatingSetTemperature;
+    }
+
+    public Integer getRoomTemperatureLabel() {
+        return roomTemperatureLabel;
+    }
+
+    public void setRoomTemperatureLabel(Integer roomTemperatureLabel) {
+        this.roomTemperatureLabel = roomTemperatureLabel;
+    }
+
+    public Boolean getHasEnergyConsumedMeter() {
+        return hasEnergyConsumedMeter;
+    }
+
+    public void setHasEnergyConsumedMeter(Boolean hasEnergyConsumedMeter) {
+        this.hasEnergyConsumedMeter = hasEnergyConsumedMeter;
+    }
+
+    public Integer getCurrentEnergyConsumed() {
+        return currentEnergyConsumed;
+    }
+
+    public void setCurrentEnergyConsumed(Integer currentEnergyConsumed) {
+        this.currentEnergyConsumed = currentEnergyConsumed;
+    }
+
+    public Integer getCurrentEnergyMode() {
+        return currentEnergyMode;
+    }
+
+    public void setCurrentEnergyMode(Integer currentEnergyMode) {
+        this.currentEnergyMode = currentEnergyMode;
+    }
+
+    public Boolean getCoolingDisabled() {
+        return coolingDisabled;
+    }
+
+    public void setCoolingDisabled(Boolean coolingDisabled) {
+        this.coolingDisabled = coolingDisabled;
+    }
+
+    public Integer getMinPcycle() {
+        return minPcycle;
+    }
+
+    public void setMinPcycle(Integer minPcycle) {
+        this.minPcycle = minPcycle;
+    }
+
+    public Integer getMaxPcycle() {
+        return maxPcycle;
+    }
+
+    public void setMaxPcycle(Integer maxPcycle) {
+        this.maxPcycle = maxPcycle;
+    }
+
+    public Integer getEffectivePCycle() {
+        return effectivePCycle;
+    }
+
+    public void setEffectivePCycle(Integer effectivePCycle) {
+        this.effectivePCycle = effectivePCycle;
+    }
+
+    public Integer getMaxOutdoorUnits() {
+        return maxOutdoorUnits;
+    }
+
+    public void setMaxOutdoorUnits(Integer maxOutdoorUnits) {
+        this.maxOutdoorUnits = maxOutdoorUnits;
+    }
+
+    public Integer getMaxIndoorUnits() {
+        return maxIndoorUnits;
+    }
+
+    public void setMaxIndoorUnits(Integer maxIndoorUnits) {
+        this.maxIndoorUnits = maxIndoorUnits;
+    }
+
+    public Integer getMaxTemperatureControlUnits() {
+        return maxTemperatureControlUnits;
+    }
+
+    public void setMaxTemperatureControlUnits(Integer maxTemperatureControlUnits) {
+        this.maxTemperatureControlUnits = maxTemperatureControlUnits;
+    }
+
+    public Integer getDeviceID() {
+        return deviceID;
+    }
+
+    public void setDeviceID(Integer deviceID) {
+        this.deviceID = deviceID;
+    }
+
+    public String getMacAddress() {
+        return macAddress;
+    }
+
+    public void setMacAddress(String macAddress) {
+        this.macAddress = macAddress;
+    }
+
+    public String getSerialNumber() {
+        return serialNumber;
+    }
+
+    public void setSerialNumber(String serialNumber) {
+        this.serialNumber = serialNumber;
+    }
+
+    public Integer getTimeZoneID() {
+        return timeZoneID;
+    }
+
+    public void setTimeZoneID(Integer timeZoneID) {
+        this.timeZoneID = timeZoneID;
+    }
+
+    public Integer getDiagnosticMode() {
+        return diagnosticMode;
+    }
+
+    public void setDiagnosticMode(Integer diagnosticMode) {
+        this.diagnosticMode = diagnosticMode;
+    }
+
+    public Object getDiagnosticEndDate() {
+        return diagnosticEndDate;
+    }
+
+    public void setDiagnosticEndDate(Object diagnosticEndDate) {
+        this.diagnosticEndDate = diagnosticEndDate;
+    }
+
+    public Integer getExpectedCommand() {
+        return expectedCommand;
+    }
+
+    public void setExpectedCommand(Integer expectedCommand) {
+        this.expectedCommand = expectedCommand;
+    }
+
+    public Object getOwner() {
+        return owner;
+    }
+
+    public void setOwner(Object owner) {
+        this.owner = owner;
+    }
+
+    public Object getDetectedCountry() {
+        return detectedCountry;
+    }
+
+    public void setDetectedCountry(Object detectedCountry) {
+        this.detectedCountry = detectedCountry;
+    }
+
+    public Integer getAdaptorType() {
+        return adaptorType;
+    }
+
+    public void setAdaptorType(Integer adaptorType) {
+        this.adaptorType = adaptorType;
+    }
+
+    public Object getFirmwareDeployment() {
+        return firmwareDeployment;
+    }
+
+    public void setFirmwareDeployment(Object firmwareDeployment) {
+        this.firmwareDeployment = firmwareDeployment;
+    }
+
+    public Boolean getFirmwareUpdateAborted() {
+        return firmwareUpdateAborted;
+    }
+
+    public void setFirmwareUpdateAborted(Boolean firmwareUpdateAborted) {
+        this.firmwareUpdateAborted = firmwareUpdateAborted;
+    }
+
+    public Integer getWifiSignalStrength() {
+        return wifiSignalStrength;
+    }
+
+    public void setWifiSignalStrength(Integer wifiSignalStrength) {
+        this.wifiSignalStrength = wifiSignalStrength;
+    }
+
+    public String getWifiAdapterStatus() {
+        return wifiAdapterStatus;
+    }
+
+    public void setWifiAdapterStatus(String wifiAdapterStatus) {
+        this.wifiAdapterStatus = wifiAdapterStatus;
+    }
+
+    public String getPosition() {
+        return position;
+    }
+
+    public void setPosition(String position) {
+        this.position = position;
+    }
+
+    public Integer getPCycle() {
+        return pCycle;
+    }
+
+    public void setPCycle(Integer pCycle) {
+        this.pCycle = pCycle;
+    }
+
+    public Integer getRecordNumMax() {
+        return recordNumMax;
+    }
+
+    public void setRecordNumMax(Integer recordNumMax) {
+        this.recordNumMax = recordNumMax;
+    }
+
+    public String getLastTimeStamp() {
+        return lastTimeStamp;
+    }
+
+    public void setLastTimeStamp(String lastTimeStamp) {
+        this.lastTimeStamp = lastTimeStamp;
+    }
+
+    public Integer getErrorCode() {
+        return errorCode;
+    }
+
+    public void setErrorCode(Integer errorCode) {
+        this.errorCode = errorCode;
+    }
+
+    public Boolean getHasError() {
+        return hasError;
+    }
+
+    public void setHasError(Boolean hasError) {
+        this.hasError = hasError;
+    }
+
+    public String getLastReset() {
+        return lastReset;
+    }
+
+    public void setLastReset(String lastReset) {
+        this.lastReset = lastReset;
+    }
+
+    public Integer getFlashWrites() {
+        return flashWrites;
+    }
+
+    public void setFlashWrites(Integer flashWrites) {
+        this.flashWrites = flashWrites;
+    }
+
+    public Object getScene() {
+        return scene;
+    }
+
+    public void setScene(Object scene) {
+        this.scene = scene;
+    }
+
+    public Object getSSLExpirationDate() {
+        return sSLExpirationDate;
+    }
+
+    public void setSSLExpirationDate(Object sSLExpirationDate) {
+        this.sSLExpirationDate = sSLExpirationDate;
+    }
+
+    public Object getSPTimeout() {
+        return sPTimeout;
+    }
+
+    public void setSPTimeout(Object sPTimeout) {
+        this.sPTimeout = sPTimeout;
+    }
+
+    public Object getPasscode() {
+        return passcode;
+    }
+
+    public void setPasscode(Object passcode) {
+        this.passcode = passcode;
+    }
+
+    public Boolean getServerCommunicationDisabled() {
+        return serverCommunicationDisabled;
+    }
+
+    public void setServerCommunicationDisabled(Boolean serverCommunicationDisabled) {
+        this.serverCommunicationDisabled = serverCommunicationDisabled;
+    }
+
+    public Integer getConsecutiveUploadErrors() {
+        return consecutiveUploadErrors;
+    }
+
+    public void setConsecutiveUploadErrors(Integer consecutiveUploadErrors) {
+        this.consecutiveUploadErrors = consecutiveUploadErrors;
+    }
+
+    public Object getDoNotRespondAfter() {
+        return doNotRespondAfter;
+    }
+
+    public void setDoNotRespondAfter(Object doNotRespondAfter) {
+        this.doNotRespondAfter = doNotRespondAfter;
+    }
+
+    public Integer getOwnerRoleAccessLevel() {
+        return ownerRoleAccessLevel;
+    }
+
+    public void setOwnerRoleAccessLevel(Integer ownerRoleAccessLevel) {
+        this.ownerRoleAccessLevel = ownerRoleAccessLevel;
+    }
+
+    public Integer getOwnerCountry() {
+        return ownerCountry;
+    }
+
+    public void setOwnerCountry(Integer ownerCountry) {
+        this.ownerCountry = ownerCountry;
+    }
+
+    public Object getRate1StartTime() {
+        return rate1StartTime;
+    }
+
+    public void setRate1StartTime(Object rate1StartTime) {
+        this.rate1StartTime = rate1StartTime;
+    }
+
+    public Object getRate2StartTime() {
+        return rate2StartTime;
+    }
+
+    public void setRate2StartTime(Object rate2StartTime) {
+        this.rate2StartTime = rate2StartTime;
+    }
+
+    public Integer getProtocolVersion() {
+        return protocolVersion;
+    }
+
+    public void setProtocolVersion(Integer protocolVersion) {
+        this.protocolVersion = protocolVersion;
+    }
+
+    public Integer getUnitVersion() {
+        return unitVersion;
+    }
+
+    public void setUnitVersion(Integer unitVersion) {
+        this.unitVersion = unitVersion;
+    }
+
+    public Integer getFirmwareAppVersion() {
+        return firmwareAppVersion;
+    }
+
+    public void setFirmwareAppVersion(Integer firmwareAppVersion) {
+        this.firmwareAppVersion = firmwareAppVersion;
+    }
+
+    public Integer getFirmwareWebVersion() {
+        return firmwareWebVersion;
+    }
+
+    public void setFirmwareWebVersion(Integer firmwareWebVersion) {
+        this.firmwareWebVersion = firmwareWebVersion;
+    }
+
+    public Integer getFirmwareWlanVersion() {
+        return firmwareWlanVersion;
+    }
+
+    public void setFirmwareWlanVersion(Integer firmwareWlanVersion) {
+        this.firmwareWlanVersion = firmwareWlanVersion;
+    }
+
+    public Boolean getHasErrorMessages() {
+        return hasErrorMessages;
+    }
+
+    public void setHasErrorMessages(Boolean hasErrorMessages) {
+        this.hasErrorMessages = hasErrorMessages;
+    }
+
+    public Boolean getHasZone2() {
+        return hasZone2;
+    }
+
+    public void setHasZone2(Boolean hasZone2) {
+        this.hasZone2 = hasZone2;
+    }
+
+    public Boolean getOffline() {
+        return offline;
+    }
+
+    public void setOffline(Boolean offline) {
+        this.offline = offline;
+    }
+
+    public List<Object> getUnits() {
+        return units;
+    }
+
+    public void setUnits(List<Object> units) {
+        this.units = units;
+    }
+}
diff --git a/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/DeviceStatus.java b/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/DeviceStatus.java
new file mode 100644 (file)
index 0000000..d6782fa
--- /dev/null
@@ -0,0 +1,347 @@
+/**
+ * Copyright (c) 2010-2024 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.melcloud.internal.api.dto;
+
+import java.util.List;
+
+import com.google.gson.annotations.Expose;
+
+/**
+ * The {@link DeviceProps} is responsible of JSON data For MELCloud API
+ * Device Status data
+ * Generated with jsonschema2pojo
+ *
+ * @author Luca Calcaterra - Initial contribution
+ * @author Pauli Anttila - Fine tuned expose annotations
+ */
+public class DeviceStatus {
+
+    @Expose
+    private Integer effectiveFlags;
+
+    @Expose(serialize = false, deserialize = true)
+    private Object localIPAddress;
+
+    @Expose(serialize = false, deserialize = true)
+    private Double roomTemperature;
+
+    @Expose
+    private Double setTemperature;
+
+    @Expose
+    private Integer setFanSpeed;
+
+    @Expose
+    private Integer operationMode;
+
+    @Expose
+    private Integer vaneHorizontal;
+
+    @Expose
+    private Integer vaneVertical;
+
+    @Expose
+    private Object name;
+
+    @Expose(serialize = false, deserialize = true)
+    private Integer numberOfFanSpeeds;
+
+    @Expose(serialize = false, deserialize = true)
+    private List<WeatherObservation> weatherObservations = null;
+
+    @Expose(serialize = false, deserialize = true)
+    private Object errorMessage;
+
+    @Expose(serialize = false, deserialize = true)
+    private Integer errorCode;
+
+    @Expose(serialize = false, deserialize = true)
+    private Double defaultHeatingSetTemperature;
+
+    @Expose(serialize = false, deserialize = true)
+    private Double defaultCoolingSetTemperature;
+
+    @Expose(serialize = false, deserialize = true)
+    private Boolean hideVaneControls;
+
+    @Expose(serialize = false, deserialize = true)
+    private Boolean hideDryModeControl;
+
+    @Expose(serialize = false, deserialize = true)
+    private Integer roomTemperatureLabel;
+
+    @Expose(serialize = false, deserialize = true)
+    private Boolean inStandbyMode;
+
+    @Expose(serialize = false, deserialize = true)
+    private Integer temperatureIncrementOverride;
+
+    @Expose
+    private Integer deviceID;
+
+    @Expose(serialize = false, deserialize = true)
+    private Integer deviceType;
+
+    @Expose(serialize = false, deserialize = true)
+    private String lastCommunication;
+
+    @Expose(serialize = false, deserialize = true)
+    private String nextCommunication;
+
+    @Expose
+    private Boolean power;
+
+    @Expose
+    private Boolean hasPendingCommand;
+
+    @Expose(serialize = false, deserialize = true)
+    private Boolean offline;
+
+    @Expose(serialize = false, deserialize = true)
+    private Object scene;
+
+    @Expose(serialize = false, deserialize = true)
+    private Object sceneOwner;
+
+    public Integer getEffectiveFlags() {
+        return effectiveFlags;
+    }
+
+    public void setEffectiveFlags(Integer effectiveFlags) {
+        this.effectiveFlags = effectiveFlags;
+    }
+
+    public Object getLocalIPAddress() {
+        return localIPAddress;
+    }
+
+    public void setLocalIPAddress(Object localIPAddress) {
+        this.localIPAddress = localIPAddress;
+    }
+
+    public Double getRoomTemperature() {
+        return roomTemperature;
+    }
+
+    public void setRoomTemperature(Double roomTemperature) {
+        this.roomTemperature = roomTemperature;
+    }
+
+    public Double getSetTemperature() {
+        return setTemperature;
+    }
+
+    public void setSetTemperature(Double setTemperature) {
+        this.setTemperature = setTemperature;
+    }
+
+    public Integer getSetFanSpeed() {
+        return setFanSpeed;
+    }
+
+    public void setSetFanSpeed(Integer setFanSpeed) {
+        this.setFanSpeed = setFanSpeed;
+    }
+
+    public Integer getOperationMode() {
+        return operationMode;
+    }
+
+    public void setOperationMode(Integer operationMode) {
+        this.operationMode = operationMode;
+    }
+
+    public Integer getVaneHorizontal() {
+        return vaneHorizontal;
+    }
+
+    public void setVaneHorizontal(Integer vaneHorizontal) {
+        this.vaneHorizontal = vaneHorizontal;
+    }
+
+    public Integer getVaneVertical() {
+        return vaneVertical;
+    }
+
+    public void setVaneVertical(Integer vaneVertical) {
+        this.vaneVertical = vaneVertical;
+    }
+
+    public Object getName() {
+        return name;
+    }
+
+    public void setName(Object name) {
+        this.name = name;
+    }
+
+    public Integer getNumberOfFanSpeeds() {
+        return numberOfFanSpeeds;
+    }
+
+    public void setNumberOfFanSpeeds(Integer numberOfFanSpeeds) {
+        this.numberOfFanSpeeds = numberOfFanSpeeds;
+    }
+
+    public List<WeatherObservation> getWeatherObservations() {
+        return weatherObservations;
+    }
+
+    public void setWeatherObservations(List<WeatherObservation> weatherObservations) {
+        this.weatherObservations = weatherObservations;
+    }
+
+    public Object getErrorMessage() {
+        return errorMessage;
+    }
+
+    public void setErrorMessage(Object errorMessage) {
+        this.errorMessage = errorMessage;
+    }
+
+    public Integer getErrorCode() {
+        return errorCode;
+    }
+
+    public void setErrorCode(Integer errorCode) {
+        this.errorCode = errorCode;
+    }
+
+    public Double getDefaultHeatingSetTemperature() {
+        return defaultHeatingSetTemperature;
+    }
+
+    public void setDefaultHeatingSetTemperature(Double defaultHeatingSetTemperature) {
+        this.defaultHeatingSetTemperature = defaultHeatingSetTemperature;
+    }
+
+    public Double getDefaultCoolingSetTemperature() {
+        return defaultCoolingSetTemperature;
+    }
+
+    public void setDefaultCoolingSetTemperature(Double defaultCoolingSetTemperature) {
+        this.defaultCoolingSetTemperature = defaultCoolingSetTemperature;
+    }
+
+    public Boolean getHideVaneControls() {
+        return hideVaneControls;
+    }
+
+    public void setHideVaneControls(Boolean hideVaneControls) {
+        this.hideVaneControls = hideVaneControls;
+    }
+
+    public Boolean getHideDryModeControl() {
+        return hideDryModeControl;
+    }
+
+    public void setHideDryModeControl(Boolean hideDryModeControl) {
+        this.hideDryModeControl = hideDryModeControl;
+    }
+
+    public Integer getRoomTemperatureLabel() {
+        return roomTemperatureLabel;
+    }
+
+    public void setRoomTemperatureLabel(Integer roomTemperatureLabel) {
+        this.roomTemperatureLabel = roomTemperatureLabel;
+    }
+
+    public Boolean getInStandbyMode() {
+        return inStandbyMode;
+    }
+
+    public void setInStandbyMode(Boolean inStandbyMode) {
+        this.inStandbyMode = inStandbyMode;
+    }
+
+    public Integer getTemperatureIncrementOverride() {
+        return temperatureIncrementOverride;
+    }
+
+    public void setTemperatureIncrementOverride(Integer temperatureIncrementOverride) {
+        this.temperatureIncrementOverride = temperatureIncrementOverride;
+    }
+
+    public Integer getDeviceID() {
+        return deviceID;
+    }
+
+    public void setDeviceID(Integer deviceID) {
+        this.deviceID = deviceID;
+    }
+
+    public Integer getDeviceType() {
+        return deviceType;
+    }
+
+    public void setDeviceType(Integer deviceType) {
+        this.deviceType = deviceType;
+    }
+
+    public String getLastCommunication() {
+        return lastCommunication;
+    }
+
+    public void setLastCommunication(String lastCommunication) {
+        this.lastCommunication = lastCommunication;
+    }
+
+    public String getNextCommunication() {
+        return nextCommunication;
+    }
+
+    public void setNextCommunication(String nextCommunication) {
+        this.nextCommunication = nextCommunication;
+    }
+
+    public Boolean getPower() {
+        return power;
+    }
+
+    public void setPower(Boolean power) {
+        this.power = power;
+    }
+
+    public Boolean getHasPendingCommand() {
+        return hasPendingCommand;
+    }
+
+    public void setHasPendingCommand(Boolean hasPendingCommand) {
+        this.hasPendingCommand = hasPendingCommand;
+    }
+
+    public Boolean getOffline() {
+        return offline;
+    }
+
+    public void setOffline(Boolean offline) {
+        this.offline = offline;
+    }
+
+    public Object getScene() {
+        return scene;
+    }
+
+    public void setScene(Object scene) {
+        this.scene = scene;
+    }
+
+    public Object getSceneOwner() {
+        return sceneOwner;
+    }
+
+    public void setSceneOwner(Object sceneOwner) {
+        this.sceneOwner = sceneOwner;
+    }
+}
diff --git a/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/Floor.java b/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/Floor.java
new file mode 100644 (file)
index 0000000..df39ddc
--- /dev/null
@@ -0,0 +1,148 @@
+/**
+ * Copyright (c) 2010-2024 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.melcloud.internal.api.dto;
+
+import java.util.List;
+
+import com.google.gson.annotations.Expose;
+
+/**
+ * {@link Floor} provides floor specific information for JSON data returned from MELCloud API
+ * Floor Data
+ * Generated with jsonschema2pojo
+ *
+ * @author Wietse van Buitenen - Initial contribution
+ */
+public class Floor {
+
+    @Expose
+    private Integer iD;
+
+    @Expose
+    private String name;
+
+    @Expose
+    private Integer buildingId;
+
+    @Expose
+    private Integer accessLevel;
+
+    @Expose
+    private Boolean directAccess;
+
+    @Expose
+    private Object endDate;
+
+    @Expose
+    private List<Area> areas = null;
+
+    @Expose
+    private List<Device> devices = null;
+
+    @Expose
+    private Integer minTemperature;
+
+    @Expose
+    private Integer maxTemperature;
+
+    @Expose
+    private Boolean expanded;
+
+    public Integer getID() {
+        return iD;
+    }
+
+    public void setID(Integer iD) {
+        this.iD = iD;
+    }
+
+    public Integer getBuildingId() {
+        return buildingId;
+    }
+
+    public void setBuildingId(Integer buildingId) {
+        this.buildingId = buildingId;
+    }
+
+    public Integer getAccessLevel() {
+        return accessLevel;
+    }
+
+    public void setAccessLevel(Integer accessLevel) {
+        this.accessLevel = accessLevel;
+    }
+
+    public Boolean getDirectAccess() {
+        return directAccess;
+    }
+
+    public void setDirectAccess(Boolean directAccess) {
+        this.directAccess = directAccess;
+    }
+
+    public Object getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(Object endDate) {
+        this.endDate = endDate;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public List<Area> getAreas() {
+        return areas;
+    }
+
+    public void setAreas(List<Area> areas) {
+        this.areas = areas;
+    }
+
+    public List<Device> getDevices() {
+        return devices;
+    }
+
+    public void setDevices(List<Device> devices) {
+        this.devices = devices;
+    }
+
+    public Integer getMinTemperature() {
+        return minTemperature;
+    }
+
+    public void setMinTemperature(Integer minTemperature) {
+        this.minTemperature = minTemperature;
+    }
+
+    public Integer getMaxTemperature() {
+        return maxTemperature;
+    }
+
+    public void setMaxTemperature(Integer maxTemperature) {
+        this.maxTemperature = maxTemperature;
+    }
+
+    public Boolean getExpanded() {
+        return expanded;
+    }
+
+    public void setExpanded(Boolean expanded) {
+        this.expanded = expanded;
+    }
+}
diff --git a/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/HeatpumpDeviceStatus.java b/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/HeatpumpDeviceStatus.java
new file mode 100644 (file)
index 0000000..b80b943
--- /dev/null
@@ -0,0 +1,477 @@
+/**
+ * Copyright (c) 2010-2024 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.melcloud.internal.api.dto;
+
+import java.util.List;
+
+import com.google.gson.annotations.Expose;
+
+/**
+ * {@link HeatpumpDeviceStatus} is the JSON data we receive from the MELCloud API
+ * when performing a request to DeviceType 1.
+ * Generated with jsonschema2pojo
+ *
+ * @author Wietse van Buitenen - Initial contribution
+ */
+public class HeatpumpDeviceStatus {
+    @Expose
+    private Long effectiveFlags;
+
+    @Expose(serialize = false, deserialize = true)
+    private Object localIPAddress;
+
+    @Expose
+    private Double setTemperatureZone1;
+
+    @Expose
+    private Double setTemperatureZone2;
+
+    @Expose(serialize = false, deserialize = true)
+    private Double roomTemperatureZone1;
+
+    @Expose(serialize = false, deserialize = true)
+    private Double roomTemperatureZone2;
+
+    @Expose
+    private Integer operationMode;
+
+    @Expose
+    private Integer operationModeZone1;
+
+    @Expose
+    private Integer operationModeZone2;
+
+    @Expose(serialize = false, deserialize = true)
+    private List<WeatherObservation> weatherObservations = null;
+
+    @Expose(serialize = false, deserialize = true)
+    private Object errorMessage;
+
+    @Expose(serialize = false, deserialize = true)
+    private Integer errorCode;
+
+    @Expose
+    private Double setHeatFlowTemperatureZone1;
+
+    @Expose
+    private Double setHeatFlowTemperatureZone2;
+
+    @Expose
+    private Double setCoolFlowTemperatureZone1;
+
+    @Expose
+    private Double setCoolFlowTemperatureZone2;
+
+    @Expose
+    private Integer hCControlType;
+
+    @Expose(serialize = false, deserialize = true)
+    private Double tankWaterTemperature;
+
+    @Expose
+    private Double setTankWaterTemperature;
+
+    @Expose
+    private Boolean forcedHotWaterMode;
+
+    @Expose
+    private Integer unitStatus;
+
+    @Expose
+    private Double outdoorTemperature;
+
+    @Expose
+    private Boolean ecoHotWater;
+
+    @Expose
+    private Object zone1Name;
+
+    @Expose
+    private Object zone2Name;
+
+    @Expose
+    private Boolean holidayMode;
+
+    @Expose
+    private Boolean prohibitZone1;
+
+    @Expose
+    private Boolean prohibitZone2;
+
+    @Expose
+    private Boolean prohibitHotWater;
+
+    @Expose
+    private Integer temperatureIncrementOverride;
+
+    @Expose
+    private Boolean idleZone1;
+
+    @Expose
+    private Boolean idleZone2;
+
+    @Expose
+    private Integer deviceID;
+
+    @Expose
+    private Integer deviceType;
+
+    @Expose(serialize = false, deserialize = true)
+    private String lastCommunication;
+
+    @Expose(serialize = false, deserialize = true)
+    private String nextCommunication;
+
+    @Expose
+    private Boolean power;
+
+    @Expose(serialize = false, deserialize = true)
+    private Boolean hasPendingCommand;
+
+    @Expose(serialize = false, deserialize = true)
+    private Boolean offline;
+
+    @Expose
+    private Object scene;
+
+    @Expose
+    private Object sceneOwner;
+
+    public Long getEffectiveFlags() {
+        return effectiveFlags;
+    }
+
+    public void setEffectiveFlags(Long effectiveFlags) {
+        this.effectiveFlags = effectiveFlags;
+    }
+
+    public Object getLocalIPAddress() {
+        return localIPAddress;
+    }
+
+    public void setLocalIPAddress(Object localIPAddress) {
+        this.localIPAddress = localIPAddress;
+    }
+
+    public Double getSetTemperatureZone1() {
+        return setTemperatureZone1;
+    }
+
+    public void setSetTemperatureZone1(Double setTemperatureZone1) {
+        this.setTemperatureZone1 = setTemperatureZone1;
+    }
+
+    public Double getSetTemperatureZone2() {
+        return setTemperatureZone2;
+    }
+
+    public void setSetTemperatureZone2(Double setTemperatureZone2) {
+        this.setTemperatureZone2 = setTemperatureZone2;
+    }
+
+    public Double getRoomTemperatureZone1() {
+        return roomTemperatureZone1;
+    }
+
+    public void setRoomTemperatureZone1(Double roomTemperatureZone1) {
+        this.roomTemperatureZone1 = roomTemperatureZone1;
+    }
+
+    public Double getRoomTemperatureZone2() {
+        return roomTemperatureZone2;
+    }
+
+    public void setRoomTemperatureZone2(Double roomTemperatureZone2) {
+        this.roomTemperatureZone2 = roomTemperatureZone2;
+    }
+
+    public Integer getOperationMode() {
+        return operationMode;
+    }
+
+    public void setOperationMode(Integer operationMode) {
+        this.operationMode = operationMode;
+    }
+
+    public Integer getOperationModeZone1() {
+        return operationModeZone1;
+    }
+
+    public void setOperationModeZone1(Integer operationModeZone1) {
+        this.operationModeZone1 = operationModeZone1;
+    }
+
+    public Integer getOperationModeZone2() {
+        return operationModeZone2;
+    }
+
+    public void setOperationModeZone2(Integer operationModeZone2) {
+        this.operationModeZone2 = operationModeZone2;
+    }
+
+    public List<WeatherObservation> getWeatherObservations() {
+        return weatherObservations;
+    }
+
+    public void setWeatherObservations(List<WeatherObservation> weatherObservations) {
+        this.weatherObservations = weatherObservations;
+    }
+
+    public Object getErrorMessage() {
+        return errorMessage;
+    }
+
+    public void setErrorMessage(Object errorMessage) {
+        this.errorMessage = errorMessage;
+    }
+
+    public Integer getErrorCode() {
+        return errorCode;
+    }
+
+    public void setErrorCode(Integer errorCode) {
+        this.errorCode = errorCode;
+    }
+
+    public Double getSetHeatFlowTemperatureZone1() {
+        return setHeatFlowTemperatureZone1;
+    }
+
+    public void setSetHeatFlowTemperatureZone1(Double setHeatFlowTemperatureZone1) {
+        this.setHeatFlowTemperatureZone1 = setHeatFlowTemperatureZone1;
+    }
+
+    public Double getSetHeatFlowTemperatureZone2() {
+        return setHeatFlowTemperatureZone2;
+    }
+
+    public void setSetHeatFlowTemperatureZone2(Double setHeatFlowTemperatureZone2) {
+        this.setHeatFlowTemperatureZone2 = setHeatFlowTemperatureZone2;
+    }
+
+    public Double getSetCoolFlowTemperatureZone1() {
+        return setCoolFlowTemperatureZone1;
+    }
+
+    public void setSetCoolFlowTemperatureZone1(Double setCoolFlowTemperatureZone1) {
+        this.setCoolFlowTemperatureZone1 = setCoolFlowTemperatureZone1;
+    }
+
+    public Double getSetCoolFlowTemperatureZone2() {
+        return setCoolFlowTemperatureZone2;
+    }
+
+    public void setSetCoolFlowTemperatureZone2(Double setCoolFlowTemperatureZone2) {
+        this.setCoolFlowTemperatureZone2 = setCoolFlowTemperatureZone2;
+    }
+
+    public Integer getHCControlType() {
+        return hCControlType;
+    }
+
+    public void setHCControlType(Integer hCControlType) {
+        this.hCControlType = hCControlType;
+    }
+
+    public Double getTankWaterTemperature() {
+        return tankWaterTemperature;
+    }
+
+    public void setTankWaterTemperature(Double tankWaterTemperature) {
+        this.tankWaterTemperature = tankWaterTemperature;
+    }
+
+    public Double getSetTankWaterTemperature() {
+        return setTankWaterTemperature;
+    }
+
+    public void setSetTankWaterTemperature(Double setTankWaterTemperature) {
+        this.setTankWaterTemperature = setTankWaterTemperature;
+    }
+
+    public Boolean getForcedHotWaterMode() {
+        return forcedHotWaterMode;
+    }
+
+    public void setForcedHotWaterMode(Boolean forcedHotWaterMode) {
+        this.forcedHotWaterMode = forcedHotWaterMode;
+    }
+
+    public Integer getUnitStatus() {
+        return unitStatus;
+    }
+
+    public void setUnitStatus(Integer unitStatus) {
+        this.unitStatus = unitStatus;
+    }
+
+    public Double getOutdoorTemperature() {
+        return outdoorTemperature;
+    }
+
+    public void setOutdoorTemperature(Double outdoorTemperature) {
+        this.outdoorTemperature = outdoorTemperature;
+    }
+
+    public Boolean getEcoHotWater() {
+        return ecoHotWater;
+    }
+
+    public void setEcoHotWater(Boolean ecoHotWater) {
+        this.ecoHotWater = ecoHotWater;
+    }
+
+    public Object getZone1Name() {
+        return zone1Name;
+    }
+
+    public void setZone1Name(Object zone1Name) {
+        this.zone1Name = zone1Name;
+    }
+
+    public Object getZone2Name() {
+        return zone2Name;
+    }
+
+    public void setZone2Name(Object zone2Name) {
+        this.zone2Name = zone2Name;
+    }
+
+    public Boolean getHolidayMode() {
+        return holidayMode;
+    }
+
+    public void setHolidayMode(Boolean holidayMode) {
+        this.holidayMode = holidayMode;
+    }
+
+    public Boolean getProhibitZone1() {
+        return prohibitZone1;
+    }
+
+    public void setProhibitZone1(Boolean prohibitZone1) {
+        this.prohibitZone1 = prohibitZone1;
+    }
+
+    public Boolean getProhibitZone2() {
+        return prohibitZone2;
+    }
+
+    public void setProhibitZone2(Boolean prohibitZone2) {
+        this.prohibitZone2 = prohibitZone2;
+    }
+
+    public Boolean getProhibitHotWater() {
+        return prohibitHotWater;
+    }
+
+    public void setProhibitHotWater(Boolean prohibitHotWater) {
+        this.prohibitHotWater = prohibitHotWater;
+    }
+
+    public Integer getTemperatureIncrementOverride() {
+        return temperatureIncrementOverride;
+    }
+
+    public void setTemperatureIncrementOverride(Integer temperatureIncrementOverride) {
+        this.temperatureIncrementOverride = temperatureIncrementOverride;
+    }
+
+    public Boolean getIdleZone1() {
+        return idleZone1;
+    }
+
+    public void setIdleZone1(Boolean idleZone1) {
+        this.idleZone1 = idleZone1;
+    }
+
+    public Boolean getIdleZone2() {
+        return idleZone2;
+    }
+
+    public void setIdleZone2(Boolean idleZone2) {
+        this.idleZone2 = idleZone2;
+    }
+
+    public Integer getDeviceID() {
+        return deviceID;
+    }
+
+    public void setDeviceID(Integer deviceID) {
+        this.deviceID = deviceID;
+    }
+
+    public Integer getDeviceType() {
+        return deviceType;
+    }
+
+    public void setDeviceType(Integer deviceType) {
+        this.deviceType = deviceType;
+    }
+
+    public String getLastCommunication() {
+        return lastCommunication;
+    }
+
+    public void setLastCommunication(String lastCommunication) {
+        this.lastCommunication = lastCommunication;
+    }
+
+    public String getNextCommunication() {
+        return nextCommunication;
+    }
+
+    public void setNextCommunication(String nextCommunication) {
+        this.nextCommunication = nextCommunication;
+    }
+
+    public Boolean getPower() {
+        return power;
+    }
+
+    public void setPower(Boolean power) {
+        this.power = power;
+    }
+
+    public Boolean getHasPendingCommand() {
+        return hasPendingCommand;
+    }
+
+    public void setHasPendingCommand(Boolean hasPendingCommand) {
+        this.hasPendingCommand = hasPendingCommand;
+    }
+
+    public Boolean getOffline() {
+        return offline;
+    }
+
+    public void setOffline(Boolean offline) {
+        this.offline = offline;
+    }
+
+    public Object getScene() {
+        return scene;
+    }
+
+    public void setScene(Object scene) {
+        this.scene = scene;
+    }
+
+    public Object getSceneOwner() {
+        return sceneOwner;
+    }
+
+    public void setSceneOwner(Object sceneOwner) {
+        this.sceneOwner = sceneOwner;
+    }
+}
diff --git a/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/ListDevicesResponse.java b/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/ListDevicesResponse.java
new file mode 100644 (file)
index 0000000..cfe739e
--- /dev/null
@@ -0,0 +1,445 @@
+/**
+ * Copyright (c) 2010-2024 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.melcloud.internal.api.dto;
+
+import com.google.gson.annotations.Expose;
+import com.google.gson.annotations.SerializedName;
+
+/**
+ * The {@link ListDevicesResponse} is responsible of JSON data For MELCloud API
+ * Response of Devices List.
+ * Generated with jsonschema2pojo
+ *
+ * @author Luca Calcaterra - Initial contribution
+ */
+public class ListDevicesResponse {
+
+    @Expose
+    private Integer iD;
+
+    @Expose
+    private String name;
+
+    @Expose
+    private String addressLine1;
+
+    @Expose
+    private Object addressLine2;
+
+    @Expose
+    private String city;
+
+    @Expose
+    private String postcode;
+
+    @Expose
+    private Double latitude;
+
+    @Expose
+    private Double longitude;
+
+    @Expose
+    private Object district;
+
+    @Expose
+    private Boolean fPDefined;
+
+    @Expose
+    private Boolean fPEnabled;
+
+    @Expose
+    private Integer fPMinTemperature;
+
+    @Expose
+    private Integer fPMaxTemperature;
+
+    @Expose
+    private Boolean hMDefined;
+
+    @Expose
+    private Boolean hMEnabled;
+
+    @Expose
+    private Object hMStartDate;
+
+    @Expose
+    private Object hMEndDate;
+
+    @Expose
+    private Integer buildingType;
+
+    @Expose
+    private Integer propertyType;
+
+    @Expose
+    private String dateBuilt;
+
+    @Expose
+    private Boolean hasGasSupply;
+
+    @Expose
+    private String locationLookupDate;
+
+    @Expose
+    private Integer country;
+
+    @Expose
+    private Integer timeZoneContinent;
+
+    @Expose
+    private Integer timeZoneCity;
+
+    @Expose
+    private Integer timeZone;
+
+    @Expose
+    private Integer location;
+
+    @Expose
+    private Boolean coolingDisabled;
+
+    @Expose
+    private Boolean expanded;
+
+    @Expose
+    private Structure structure;
+
+    @Expose
+    private Integer accessLevel;
+
+    @Expose
+    private Boolean directAccess;
+
+    @Expose
+    private Integer minTemperature;
+
+    @Expose
+    private Integer maxTemperature;
+
+    @Expose
+    private Object owner;
+
+    @Expose
+    private String endDate;
+
+    @SerializedName("iDateBuilt")
+    @Expose
+    private Object iDateBuilt;
+
+    @Expose
+    private QuantizedCoordinates quantizedCoordinates;
+
+    public Integer getID() {
+        return iD;
+    }
+
+    public void setID(Integer iD) {
+        this.iD = iD;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getAddressLine1() {
+        return addressLine1;
+    }
+
+    public void setAddressLine1(String addressLine1) {
+        this.addressLine1 = addressLine1;
+    }
+
+    public Object getAddressLine2() {
+        return addressLine2;
+    }
+
+    public void setAddressLine2(Object addressLine2) {
+        this.addressLine2 = addressLine2;
+    }
+
+    public String getCity() {
+        return city;
+    }
+
+    public void setCity(String city) {
+        this.city = city;
+    }
+
+    public String getPostcode() {
+        return postcode;
+    }
+
+    public void setPostcode(String postcode) {
+        this.postcode = postcode;
+    }
+
+    public Double getLatitude() {
+        return latitude;
+    }
+
+    public void setLatitude(Double latitude) {
+        this.latitude = latitude;
+    }
+
+    public Double getLongitude() {
+        return longitude;
+    }
+
+    public void setLongitude(Double longitude) {
+        this.longitude = longitude;
+    }
+
+    public Object getDistrict() {
+        return district;
+    }
+
+    public void setDistrict(Object district) {
+        this.district = district;
+    }
+
+    public Boolean getFPDefined() {
+        return fPDefined;
+    }
+
+    public void setFPDefined(Boolean fPDefined) {
+        this.fPDefined = fPDefined;
+    }
+
+    public Boolean getFPEnabled() {
+        return fPEnabled;
+    }
+
+    public void setFPEnabled(Boolean fPEnabled) {
+        this.fPEnabled = fPEnabled;
+    }
+
+    public Integer getFPMinTemperature() {
+        return fPMinTemperature;
+    }
+
+    public void setFPMinTemperature(Integer fPMinTemperature) {
+        this.fPMinTemperature = fPMinTemperature;
+    }
+
+    public Integer getFPMaxTemperature() {
+        return fPMaxTemperature;
+    }
+
+    public void setFPMaxTemperature(Integer fPMaxTemperature) {
+        this.fPMaxTemperature = fPMaxTemperature;
+    }
+
+    public Boolean getHMDefined() {
+        return hMDefined;
+    }
+
+    public void setHMDefined(Boolean hMDefined) {
+        this.hMDefined = hMDefined;
+    }
+
+    public Boolean getHMEnabled() {
+        return hMEnabled;
+    }
+
+    public void setHMEnabled(Boolean hMEnabled) {
+        this.hMEnabled = hMEnabled;
+    }
+
+    public Object getHMStartDate() {
+        return hMStartDate;
+    }
+
+    public void setHMStartDate(Object hMStartDate) {
+        this.hMStartDate = hMStartDate;
+    }
+
+    public Object getHMEndDate() {
+        return hMEndDate;
+    }
+
+    public void setHMEndDate(Object hMEndDate) {
+        this.hMEndDate = hMEndDate;
+    }
+
+    public Integer getBuildingType() {
+        return buildingType;
+    }
+
+    public void setBuildingType(Integer buildingType) {
+        this.buildingType = buildingType;
+    }
+
+    public Integer getPropertyType() {
+        return propertyType;
+    }
+
+    public void setPropertyType(Integer propertyType) {
+        this.propertyType = propertyType;
+    }
+
+    public String getDateBuilt() {
+        return dateBuilt;
+    }
+
+    public void setDateBuilt(String dateBuilt) {
+        this.dateBuilt = dateBuilt;
+    }
+
+    public Boolean getHasGasSupply() {
+        return hasGasSupply;
+    }
+
+    public void setHasGasSupply(Boolean hasGasSupply) {
+        this.hasGasSupply = hasGasSupply;
+    }
+
+    public String getLocationLookupDate() {
+        return locationLookupDate;
+    }
+
+    public void setLocationLookupDate(String locationLookupDate) {
+        this.locationLookupDate = locationLookupDate;
+    }
+
+    public Integer getCountry() {
+        return country;
+    }
+
+    public void setCountry(Integer country) {
+        this.country = country;
+    }
+
+    public Integer getTimeZoneContinent() {
+        return timeZoneContinent;
+    }
+
+    public void setTimeZoneContinent(Integer timeZoneContinent) {
+        this.timeZoneContinent = timeZoneContinent;
+    }
+
+    public Integer getTimeZoneCity() {
+        return timeZoneCity;
+    }
+
+    public void setTimeZoneCity(Integer timeZoneCity) {
+        this.timeZoneCity = timeZoneCity;
+    }
+
+    public Integer getTimeZone() {
+        return timeZone;
+    }
+
+    public void setTimeZone(Integer timeZone) {
+        this.timeZone = timeZone;
+    }
+
+    public Integer getLocation() {
+        return location;
+    }
+
+    public void setLocation(Integer location) {
+        this.location = location;
+    }
+
+    public Boolean getCoolingDisabled() {
+        return coolingDisabled;
+    }
+
+    public void setCoolingDisabled(Boolean coolingDisabled) {
+        this.coolingDisabled = coolingDisabled;
+    }
+
+    public Boolean getExpanded() {
+        return expanded;
+    }
+
+    public void setExpanded(Boolean expanded) {
+        this.expanded = expanded;
+    }
+
+    public Structure getStructure() {
+        return structure;
+    }
+
+    public void setStructure(Structure structure) {
+        this.structure = structure;
+    }
+
+    public Integer getAccessLevel() {
+        return accessLevel;
+    }
+
+    public void setAccessLevel(Integer accessLevel) {
+        this.accessLevel = accessLevel;
+    }
+
+    public Boolean getDirectAccess() {
+        return directAccess;
+    }
+
+    public void setDirectAccess(Boolean directAccess) {
+        this.directAccess = directAccess;
+    }
+
+    public Integer getMinTemperature() {
+        return minTemperature;
+    }
+
+    public void setMinTemperature(Integer minTemperature) {
+        this.minTemperature = minTemperature;
+    }
+
+    public Integer getMaxTemperature() {
+        return maxTemperature;
+    }
+
+    public void setMaxTemperature(Integer maxTemperature) {
+        this.maxTemperature = maxTemperature;
+    }
+
+    public Object getOwner() {
+        return owner;
+    }
+
+    public void setOwner(Object owner) {
+        this.owner = owner;
+    }
+
+    public String getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(String endDate) {
+        this.endDate = endDate;
+    }
+
+    public Object getIDateBuilt() {
+        return iDateBuilt;
+    }
+
+    public void setIDateBuilt(Object iDateBuilt) {
+        this.iDateBuilt = iDateBuilt;
+    }
+
+    public QuantizedCoordinates getQuantizedCoordinates() {
+        return quantizedCoordinates;
+    }
+
+    public void setQuantizedCoordinates(QuantizedCoordinates quantizedCoordinates) {
+        this.quantizedCoordinates = quantizedCoordinates;
+    }
+}
diff --git a/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/LoginClientResponse.java b/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/LoginClientResponse.java
new file mode 100644 (file)
index 0000000..54f9462
--- /dev/null
@@ -0,0 +1,159 @@
+/**
+ * Copyright (c) 2010-2024 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.melcloud.internal.api.dto;
+
+import java.util.List;
+
+import com.google.gson.annotations.Expose;
+
+/**
+ * The {@link LoginClientResponse} is responsible of JSON data For MELCloud API
+ * Response Data of Login.
+ * Generated with jsonschema2pojo
+ *
+ * @author Luca Calcaterra - Initial contribution
+ */
+public class LoginClientResponse {
+
+    @Expose
+    private Object errorId;
+
+    @Expose
+    private Object errorMessage;
+
+    @Expose
+    private Integer loginStatus;
+
+    @Expose
+    private Integer userId;
+
+    @Expose
+    private Object randomKey;
+
+    @Expose
+    private Object appVersionAnnouncement;
+
+    @Expose
+    private LoginData loginData;
+
+    @Expose
+    private List<Object> listPendingInvite = null;
+
+    @Expose
+    private List<Object> listOwnershipChangeRequest = null;
+
+    @Expose
+    private List<Object> listPendingAnnouncement = null;
+
+    @Expose
+    private Integer loginMinutes;
+
+    @Expose
+    private Integer loginAttempts;
+
+    public Object getErrorId() {
+        return errorId;
+    }
+
+    public void setErrorId(Object errorId) {
+        this.errorId = errorId;
+    }
+
+    public Object getErrorMessage() {
+        return errorMessage;
+    }
+
+    public void setErrorMessage(Object errorMessage) {
+        this.errorMessage = errorMessage;
+    }
+
+    public Integer getLoginStatus() {
+        return loginStatus;
+    }
+
+    public void setLoginStatus(Integer loginStatus) {
+        this.loginStatus = loginStatus;
+    }
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public Object getRandomKey() {
+        return randomKey;
+    }
+
+    public void setRandomKey(Object randomKey) {
+        this.randomKey = randomKey;
+    }
+
+    public Object getAppVersionAnnouncement() {
+        return appVersionAnnouncement;
+    }
+
+    public void setAppVersionAnnouncement(Object appVersionAnnouncement) {
+        this.appVersionAnnouncement = appVersionAnnouncement;
+    }
+
+    public LoginData getLoginData() {
+        return loginData;
+    }
+
+    public void setLoginData(LoginData loginData) {
+        this.loginData = loginData;
+    }
+
+    public List<Object> getListPendingInvite() {
+        return listPendingInvite;
+    }
+
+    public void setListPendingInvite(List<Object> listPendingInvite) {
+        this.listPendingInvite = listPendingInvite;
+    }
+
+    public List<Object> getListOwnershipChangeRequest() {
+        return listOwnershipChangeRequest;
+    }
+
+    public void setListOwnershipChangeRequest(List<Object> listOwnershipChangeRequest) {
+        this.listOwnershipChangeRequest = listOwnershipChangeRequest;
+    }
+
+    public List<Object> getListPendingAnnouncement() {
+        return listPendingAnnouncement;
+    }
+
+    public void setListPendingAnnouncement(List<Object> listPendingAnnouncement) {
+        this.listPendingAnnouncement = listPendingAnnouncement;
+    }
+
+    public Integer getLoginMinutes() {
+        return loginMinutes;
+    }
+
+    public void setLoginMinutes(Integer loginMinutes) {
+        this.loginMinutes = loginMinutes;
+    }
+
+    public Integer getLoginAttempts() {
+        return loginAttempts;
+    }
+
+    public void setLoginAttempts(Integer loginAttempts) {
+        this.loginAttempts = loginAttempts;
+    }
+}
diff --git a/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/LoginData.java b/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/LoginData.java
new file mode 100644 (file)
index 0000000..e09b1d0
--- /dev/null
@@ -0,0 +1,509 @@
+/**
+ * Copyright (c) 2010-2024 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.melcloud.internal.api.dto;
+
+import com.google.gson.annotations.Expose;
+
+/**
+ * The {@link LoginData} is responsible of JSON data For MELCloud API
+ * LoginData for Login Request.
+ * Generated with jsonschema2pojo
+ *
+ * @author Luca Calcaterra - Initial contribution
+ */
+public class LoginData {
+
+    @Expose
+    private String contextKey;
+
+    @Expose
+    private Integer client;
+
+    @Expose
+    private Integer terms;
+
+    @Expose
+    private Integer aL;
+
+    @Expose
+    private Integer mL;
+
+    @Expose
+    private Boolean cMI;
+
+    @Expose
+    private Boolean isStaff;
+
+    @Expose
+    private Boolean cUTF;
+
+    @Expose
+    private Boolean cAA;
+
+    @Expose
+    private Boolean receiveCountryNotifications;
+
+    @Expose
+    private Boolean receiveAllNotifications;
+
+    @Expose
+    private Boolean cACA;
+
+    @Expose
+    private Boolean cAGA;
+
+    @Expose
+    private Integer maximumDevices;
+
+    @Expose
+    private Boolean showDiagnostics;
+
+    @Expose
+    private Integer language;
+
+    @Expose
+    private Integer country;
+
+    @Expose
+    private Integer realClient;
+
+    @Expose
+    private String name;
+
+    @Expose
+    private Boolean useFahrenheit;
+
+    @Expose
+    private Integer duration;
+
+    @Expose
+    private String expiry;
+
+    @Expose
+    private Boolean cMSC;
+
+    @Expose
+    private Object partnerApplicationVersion;
+
+    @Expose
+    private Boolean emailSettingsReminderShown;
+
+    @Expose
+    private Integer emailUnitErrors;
+
+    @Expose
+    private Integer emailCommsErrors;
+
+    @Expose
+    private Boolean isImpersonated;
+
+    @Expose
+    private String languageCode;
+
+    @Expose
+    private String countryName;
+
+    @Expose
+    private String currencySymbol;
+
+    @Expose
+    private String supportEmailAddress;
+
+    @Expose
+    private String dateSeperator;
+
+    @Expose
+    private String timeSeperator;
+
+    @Expose
+    private String atwLogoFile;
+
+    @Expose
+    private Boolean dECCReport;
+
+    @Expose
+    private Boolean cSVReport1min;
+
+    @Expose
+    private Boolean hidePresetPanel;
+
+    @Expose
+    private Boolean emailSettingsReminderRequired;
+
+    @Expose
+    private Object termsText;
+
+    @Expose
+    private Boolean mapView;
+
+    @Expose
+    private Integer mapZoom;
+
+    @Expose
+    private Double mapLongitude;
+
+    @Expose
+    private Double mapLatitude;
+
+    public String getContextKey() {
+        return contextKey;
+    }
+
+    public void setContextKey(String contextKey) {
+        this.contextKey = contextKey;
+    }
+
+    public Integer getClient() {
+        return client;
+    }
+
+    public void setClient(Integer client) {
+        this.client = client;
+    }
+
+    public Integer getTerms() {
+        return terms;
+    }
+
+    public void setTerms(Integer terms) {
+        this.terms = terms;
+    }
+
+    public Integer getAL() {
+        return aL;
+    }
+
+    public void setAL(Integer aL) {
+        this.aL = aL;
+    }
+
+    public Integer getML() {
+        return mL;
+    }
+
+    public void setML(Integer mL) {
+        this.mL = mL;
+    }
+
+    public Boolean getCMI() {
+        return cMI;
+    }
+
+    public void setCMI(Boolean cMI) {
+        this.cMI = cMI;
+    }
+
+    public Boolean getIsStaff() {
+        return isStaff;
+    }
+
+    public void setIsStaff(Boolean isStaff) {
+        this.isStaff = isStaff;
+    }
+
+    public Boolean getCUTF() {
+        return cUTF;
+    }
+
+    public void setCUTF(Boolean cUTF) {
+        this.cUTF = cUTF;
+    }
+
+    public Boolean getCAA() {
+        return cAA;
+    }
+
+    public void setCAA(Boolean cAA) {
+        this.cAA = cAA;
+    }
+
+    public Boolean getReceiveCountryNotifications() {
+        return receiveCountryNotifications;
+    }
+
+    public void setReceiveCountryNotifications(Boolean receiveCountryNotifications) {
+        this.receiveCountryNotifications = receiveCountryNotifications;
+    }
+
+    public Boolean getReceiveAllNotifications() {
+        return receiveAllNotifications;
+    }
+
+    public void setReceiveAllNotifications(Boolean receiveAllNotifications) {
+        this.receiveAllNotifications = receiveAllNotifications;
+    }
+
+    public Boolean getCACA() {
+        return cACA;
+    }
+
+    public void setCACA(Boolean cACA) {
+        this.cACA = cACA;
+    }
+
+    public Boolean getCAGA() {
+        return cAGA;
+    }
+
+    public void setCAGA(Boolean cAGA) {
+        this.cAGA = cAGA;
+    }
+
+    public Integer getMaximumDevices() {
+        return maximumDevices;
+    }
+
+    public void setMaximumDevices(Integer maximumDevices) {
+        this.maximumDevices = maximumDevices;
+    }
+
+    public Boolean getShowDiagnostics() {
+        return showDiagnostics;
+    }
+
+    public void setShowDiagnostics(Boolean showDiagnostics) {
+        this.showDiagnostics = showDiagnostics;
+    }
+
+    public Integer getLanguage() {
+        return language;
+    }
+
+    public void setLanguage(Integer language) {
+        this.language = language;
+    }
+
+    public Integer getCountry() {
+        return country;
+    }
+
+    public void setCountry(Integer country) {
+        this.country = country;
+    }
+
+    public Integer getRealClient() {
+        return realClient;
+    }
+
+    public void setRealClient(Integer realClient) {
+        this.realClient = realClient;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Boolean getUseFahrenheit() {
+        return useFahrenheit;
+    }
+
+    public void setUseFahrenheit(Boolean useFahrenheit) {
+        this.useFahrenheit = useFahrenheit;
+    }
+
+    public Integer getDuration() {
+        return duration;
+    }
+
+    public void setDuration(Integer duration) {
+        this.duration = duration;
+    }
+
+    public String getExpiry() {
+        return expiry;
+    }
+
+    public void setExpiry(String expiry) {
+        this.expiry = expiry;
+    }
+
+    public Boolean getCMSC() {
+        return cMSC;
+    }
+
+    public void setCMSC(Boolean cMSC) {
+        this.cMSC = cMSC;
+    }
+
+    public Object getPartnerApplicationVersion() {
+        return partnerApplicationVersion;
+    }
+
+    public void setPartnerApplicationVersion(Object partnerApplicationVersion) {
+        this.partnerApplicationVersion = partnerApplicationVersion;
+    }
+
+    public Boolean getEmailSettingsReminderShown() {
+        return emailSettingsReminderShown;
+    }
+
+    public void setEmailSettingsReminderShown(Boolean emailSettingsReminderShown) {
+        this.emailSettingsReminderShown = emailSettingsReminderShown;
+    }
+
+    public Integer getEmailUnitErrors() {
+        return emailUnitErrors;
+    }
+
+    public void setEmailUnitErrors(Integer emailUnitErrors) {
+        this.emailUnitErrors = emailUnitErrors;
+    }
+
+    public Integer getEmailCommsErrors() {
+        return emailCommsErrors;
+    }
+
+    public void setEmailCommsErrors(Integer emailCommsErrors) {
+        this.emailCommsErrors = emailCommsErrors;
+    }
+
+    public Boolean getIsImpersonated() {
+        return isImpersonated;
+    }
+
+    public void setIsImpersonated(Boolean isImpersonated) {
+        this.isImpersonated = isImpersonated;
+    }
+
+    public String getLanguageCode() {
+        return languageCode;
+    }
+
+    public void setLanguageCode(String languageCode) {
+        this.languageCode = languageCode;
+    }
+
+    public String getCountryName() {
+        return countryName;
+    }
+
+    public void setCountryName(String countryName) {
+        this.countryName = countryName;
+    }
+
+    public String getCurrencySymbol() {
+        return currencySymbol;
+    }
+
+    public void setCurrencySymbol(String currencySymbol) {
+        this.currencySymbol = currencySymbol;
+    }
+
+    public String getSupportEmailAddress() {
+        return supportEmailAddress;
+    }
+
+    public void setSupportEmailAddress(String supportEmailAddress) {
+        this.supportEmailAddress = supportEmailAddress;
+    }
+
+    public String getDateSeperator() {
+        return dateSeperator;
+    }
+
+    public void setDateSeperator(String dateSeperator) {
+        this.dateSeperator = dateSeperator;
+    }
+
+    public String getTimeSeperator() {
+        return timeSeperator;
+    }
+
+    public void setTimeSeperator(String timeSeperator) {
+        this.timeSeperator = timeSeperator;
+    }
+
+    public String getAtwLogoFile() {
+        return atwLogoFile;
+    }
+
+    public void setAtwLogoFile(String atwLogoFile) {
+        this.atwLogoFile = atwLogoFile;
+    }
+
+    public Boolean getDECCReport() {
+        return dECCReport;
+    }
+
+    public void setDECCReport(Boolean dECCReport) {
+        this.dECCReport = dECCReport;
+    }
+
+    public Boolean getCSVReport1min() {
+        return cSVReport1min;
+    }
+
+    public void setCSVReport1min(Boolean cSVReport1min) {
+        this.cSVReport1min = cSVReport1min;
+    }
+
+    public Boolean getHidePresetPanel() {
+        return hidePresetPanel;
+    }
+
+    public void setHidePresetPanel(Boolean hidePresetPanel) {
+        this.hidePresetPanel = hidePresetPanel;
+    }
+
+    public Boolean getEmailSettingsReminderRequired() {
+        return emailSettingsReminderRequired;
+    }
+
+    public void setEmailSettingsReminderRequired(Boolean emailSettingsReminderRequired) {
+        this.emailSettingsReminderRequired = emailSettingsReminderRequired;
+    }
+
+    public Object getTermsText() {
+        return termsText;
+    }
+
+    public void setTermsText(Object termsText) {
+        this.termsText = termsText;
+    }
+
+    public Boolean getMapView() {
+        return mapView;
+    }
+
+    public void setMapView(Boolean mapView) {
+        this.mapView = mapView;
+    }
+
+    public Integer getMapZoom() {
+        return mapZoom;
+    }
+
+    public void setMapZoom(Integer mapZoom) {
+        this.mapZoom = mapZoom;
+    }
+
+    public Double getMapLongitude() {
+        return mapLongitude;
+    }
+
+    public void setMapLongitude(Double mapLongitude) {
+        this.mapLongitude = mapLongitude;
+    }
+
+    public Double getMapLatitude() {
+        return mapLatitude;
+    }
+
+    public void setMapLatitude(Double mapLatitude) {
+        this.mapLatitude = mapLatitude;
+    }
+}
diff --git a/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/Preset.java b/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/Preset.java
new file mode 100644 (file)
index 0000000..5570cd1
--- /dev/null
@@ -0,0 +1,157 @@
+/**
+ * Copyright (c) 2010-2024 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.melcloud.internal.api.dto;
+
+import com.google.gson.annotations.Expose;
+
+/**
+ * The {@link Preset} is responsible of JSON data For MELCloud API
+ * Preset data
+ * Generated with jsonschema2pojo
+ *
+ * @author Luca Calcaterra - Initial contribution
+ */
+public class Preset {
+
+    @Expose
+    private Double setTemperature;
+
+    @Expose
+    private Boolean power;
+
+    @Expose
+    private Integer operationMode;
+
+    @Expose
+    private Integer vaneHorizontal;
+
+    @Expose
+    private Integer vaneVertical;
+
+    @Expose
+    private Integer fanSpeed;
+
+    @Expose
+    private Integer iD;
+
+    @Expose
+    private Integer client;
+
+    @Expose
+    private Integer deviceLocation;
+
+    @Expose
+    private Integer number;
+
+    @Expose
+    private String configuration;
+
+    @Expose
+    private String numberDescription;
+
+    public Double getSetTemperature() {
+        return setTemperature;
+    }
+
+    public void setSetTemperature(Double setTemperature) {
+        this.setTemperature = setTemperature;
+    }
+
+    public Boolean getPower() {
+        return power;
+    }
+
+    public void setPower(Boolean power) {
+        this.power = power;
+    }
+
+    public Integer getOperationMode() {
+        return operationMode;
+    }
+
+    public void setOperationMode(Integer operationMode) {
+        this.operationMode = operationMode;
+    }
+
+    public Integer getVaneHorizontal() {
+        return vaneHorizontal;
+    }
+
+    public void setVaneHorizontal(Integer vaneHorizontal) {
+        this.vaneHorizontal = vaneHorizontal;
+    }
+
+    public Integer getVaneVertical() {
+        return vaneVertical;
+    }
+
+    public void setVaneVertical(Integer vaneVertical) {
+        this.vaneVertical = vaneVertical;
+    }
+
+    public Integer getFanSpeed() {
+        return fanSpeed;
+    }
+
+    public void setFanSpeed(Integer fanSpeed) {
+        this.fanSpeed = fanSpeed;
+    }
+
+    public Integer getID() {
+        return iD;
+    }
+
+    public void setID(Integer iD) {
+        this.iD = iD;
+    }
+
+    public Integer getClient() {
+        return client;
+    }
+
+    public void setClient(Integer client) {
+        this.client = client;
+    }
+
+    public Integer getDeviceLocation() {
+        return deviceLocation;
+    }
+
+    public void setDeviceLocation(Integer deviceLocation) {
+        this.deviceLocation = deviceLocation;
+    }
+
+    public Integer getNumber() {
+        return number;
+    }
+
+    public void setNumber(Integer number) {
+        this.number = number;
+    }
+
+    public String getConfiguration() {
+        return configuration;
+    }
+
+    public void setConfiguration(String configuration) {
+        this.configuration = configuration;
+    }
+
+    public String getNumberDescription() {
+        return numberDescription;
+    }
+
+    public void setNumberDescription(String numberDescription) {
+        this.numberDescription = numberDescription;
+    }
+}
diff --git a/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/QuantizedCoordinates.java b/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/QuantizedCoordinates.java
new file mode 100644 (file)
index 0000000..34490b1
--- /dev/null
@@ -0,0 +1,47 @@
+/**
+ * Copyright (c) 2010-2024 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.melcloud.internal.api.dto;
+
+import com.google.gson.annotations.Expose;
+
+/**
+ * The {@link QuantizedCoordinates} is responsible of JSON data For MELCloud API
+ * QuantizedCoordinates data
+ * Generated with jsonschema2pojo
+ *
+ * @author Luca Calcaterra - Initial contribution
+ */
+public class QuantizedCoordinates {
+
+    @Expose
+    private Double latitude;
+
+    @Expose
+    private Double longitude;
+
+    public Double getLatitude() {
+        return latitude;
+    }
+
+    public void setLatitude(Double latitude) {
+        this.latitude = latitude;
+    }
+
+    public Double getLongitude() {
+        return longitude;
+    }
+
+    public void setLongitude(Double longitude) {
+        this.longitude = longitude;
+    }
+}
diff --git a/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/Structure.java b/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/Structure.java
new file mode 100644 (file)
index 0000000..840a059
--- /dev/null
@@ -0,0 +1,72 @@
+/**
+ * Copyright (c) 2010-2024 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.melcloud.internal.api.dto;
+
+import java.util.List;
+
+import com.google.gson.annotations.Expose;
+
+/**
+ * The {@link Structure} is responsible of JSON data For MELCloud API
+ * Structure Data
+ * Generated with jsonschema2pojo
+ *
+ * @author Luca Calcaterra - Initial contribution
+ * @author Wietse van Buitenen - Add Floor and Area
+ */
+public class Structure {
+
+    @Expose
+    private List<Floor> floors = null;
+
+    @Expose
+    private List<Area> areas = null;
+
+    @Expose
+    private List<Device> devices = null;
+
+    @Expose
+    private List<Object> clients = null;
+
+    public List<Floor> getFloors() {
+        return floors;
+    }
+
+    public void setFloors(List<Floor> floors) {
+        this.floors = floors;
+    }
+
+    public List<Area> getAreas() {
+        return areas;
+    }
+
+    public void setAreas(List<Area> areas) {
+        this.areas = areas;
+    }
+
+    public List<Device> getDevices() {
+        return devices;
+    }
+
+    public void setDevices(List<Device> devices) {
+        this.devices = devices;
+    }
+
+    public List<Object> getClients() {
+        return clients;
+    }
+
+    public void setClients(List<Object> clients) {
+        this.clients = clients;
+    }
+}
diff --git a/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/WeatherObservation.java b/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/dto/WeatherObservation.java
new file mode 100644 (file)
index 0000000..ed16b11
--- /dev/null
@@ -0,0 +1,146 @@
+/**
+ * Copyright (c) 2010-2024 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.melcloud.internal.api.dto;
+
+import com.google.gson.annotations.Expose;
+
+/**
+ * The {@link Structure} is responsible of JSON data For MELCloud API
+ * WeatherObservation Data
+ * Generated with jsonschema2pojo
+ *
+ * @author Luca Calcaterra - Initial contribution
+ */
+public class WeatherObservation {
+
+    @Expose
+    private String date;
+
+    @Expose
+    private String sunrise;
+
+    @Expose
+    private String sunset;
+
+    @Expose
+    private Integer condition;
+
+    @Expose
+    private Integer iD;
+
+    @Expose
+    private Integer humidity;
+
+    @Expose
+    private Integer temperature;
+
+    @Expose
+    private String icon;
+
+    @Expose
+    private String conditionName;
+
+    @Expose
+    private Integer day;
+
+    @Expose
+    private Integer weatherType;
+
+    public String getDate() {
+        return date;
+    }
+
+    public void setDate(String date) {
+        this.date = date;
+    }
+
+    public String getSunrise() {
+        return sunrise;
+    }
+
+    public void setSunrise(String sunrise) {
+        this.sunrise = sunrise;
+    }
+
+    public String getSunset() {
+        return sunset;
+    }
+
+    public void setSunset(String sunset) {
+        this.sunset = sunset;
+    }
+
+    public Integer getCondition() {
+        return condition;
+    }
+
+    public void setCondition(Integer condition) {
+        this.condition = condition;
+    }
+
+    public Integer getID() {
+        return iD;
+    }
+
+    public void setID(Integer iD) {
+        this.iD = iD;
+    }
+
+    public Integer getHumidity() {
+        return humidity;
+    }
+
+    public void setHumidity(Integer humidity) {
+        this.humidity = humidity;
+    }
+
+    public Integer getTemperature() {
+        return temperature;
+    }
+
+    public void setTemperature(Integer temperature) {
+        this.temperature = temperature;
+    }
+
+    public String getIcon() {
+        return icon;
+    }
+
+    public void setIcon(String icon) {
+        this.icon = icon;
+    }
+
+    public String getConditionName() {
+        return conditionName;
+    }
+
+    public void setConditionName(String conditionName) {
+        this.conditionName = conditionName;
+    }
+
+    public Integer getDay() {
+        return day;
+    }
+
+    public void setDay(Integer day) {
+        this.day = day;
+    }
+
+    public Integer getWeatherType() {
+        return weatherType;
+    }
+
+    public void setWeatherType(Integer weatherType) {
+        this.weatherType = weatherType;
+    }
+}
diff --git a/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/Area.java b/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/Area.java
deleted file mode 100644 (file)
index 8fe8086..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-/**
- * Copyright (c) 2010-2024 Contributors to the openHAB project
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- */
-package org.openhab.binding.melcloud.internal.api.json;
-
-import java.util.List;
-
-import com.google.gson.annotations.Expose;
-
-/**
- * {@link Area} provides area specific information for JSON data returned from MELCloud API
- * Area Data
- * Generated with jsonschema2pojo
- *
- * @author Wietse van Buitenen - Initial contribution
- */
-public class Area {
-
-    @Expose
-    private Integer iD;
-
-    @Expose
-    private String name;
-
-    @Expose
-    private Integer buildingId;
-
-    @Expose
-    private Integer floorId;
-
-    @Expose
-    private Integer accessLevel;
-
-    @Expose
-    private Boolean directAccess;
-
-    @Expose
-    private Object endDate;
-
-    @Expose
-    private Integer minTemperature;
-
-    @Expose
-    private Integer maxTemperature;
-
-    @Expose
-    private Boolean expanded;
-
-    @Expose
-    private List<Device> devices = null;
-
-    public Integer getID() {
-        return iD;
-    }
-
-    public void setID(Integer iD) {
-        this.iD = iD;
-    }
-
-    public Integer getBuildingId() {
-        return buildingId;
-    }
-
-    public void setBuildingId(Integer buildingId) {
-        this.buildingId = buildingId;
-    }
-
-    public Integer getFloorId() {
-        return floorId;
-    }
-
-    public void setFloorId(Integer floorId) {
-        this.floorId = floorId;
-    }
-
-    public Integer getAccessLevel() {
-        return accessLevel;
-    }
-
-    public void setAccessLevel(Integer accessLevel) {
-        this.accessLevel = accessLevel;
-    }
-
-    public Boolean getDirectAccess() {
-        return directAccess;
-    }
-
-    public void setDirectAccess(Boolean directAccess) {
-        this.directAccess = directAccess;
-    }
-
-    public Object getEndDate() {
-        return endDate;
-    }
-
-    public void setEndDate(Object endDate) {
-        this.endDate = endDate;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public List<Device> getDevices() {
-        return devices;
-    }
-
-    public void setDevices(List<Device> devices) {
-        this.devices = devices;
-    }
-
-    public Integer getMinTemperature() {
-        return minTemperature;
-    }
-
-    public void setMinTemperature(Integer minTemperature) {
-        this.minTemperature = minTemperature;
-    }
-
-    public Integer getMaxTemperature() {
-        return maxTemperature;
-    }
-
-    public void setMaxTemperature(Integer maxTemperature) {
-        this.maxTemperature = maxTemperature;
-    }
-
-    public Boolean getExpanded() {
-        return expanded;
-    }
-
-    public void setExpanded(Boolean expanded) {
-        this.expanded = expanded;
-    }
-}
diff --git a/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/Device.java b/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/Device.java
deleted file mode 100644 (file)
index 45e2253..0000000
+++ /dev/null
@@ -1,556 +0,0 @@
-/**
- * Copyright (c) 2010-2024 Contributors to the openHAB project
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- */
-package org.openhab.binding.melcloud.internal.api.json;
-
-import java.security.Permissions;
-import java.util.List;
-
-import com.google.gson.annotations.Expose;
-
-/**
- * The {@link Device} is responsible of JSON data For MELCloud API
- * Device Structure.
- * Generated with jsonschema2pojo
- *
- * @author Luca Calcaterra - Initial contribution
- */
-
-public class Device {
-
-    @Expose
-    private Integer deviceID;
-
-    @Expose
-    private String deviceName;
-
-    @Expose
-    private Integer buildingID;
-
-    @Expose
-    private Object buildingName;
-
-    @Expose
-    private Object floorID;
-
-    @Expose
-    private Object floorName;
-
-    @Expose
-    private Object areaID;
-
-    @Expose
-    private Object areaName;
-
-    @Expose
-    private Integer imageID;
-
-    @Expose
-    private String installationDate;
-
-    @Expose
-    private Object lastServiceDate;
-
-    @Expose
-    private List<Preset> presets = null;
-
-    @Expose
-    private Object ownerID;
-
-    @Expose
-    private Object ownerName;
-
-    @Expose
-    private Object ownerEmail;
-
-    @Expose
-    private Integer accessLevel;
-
-    @Expose
-    private Boolean directAccess;
-
-    @Expose
-    private String endDate;
-
-    @Expose
-    private Object zone1Name;
-
-    @Expose
-    private Object zone2Name;
-
-    @Expose
-    private Integer minTemperature;
-
-    @Expose
-    private Integer maxTemperature;
-
-    @Expose
-    private Boolean hideVaneControls;
-
-    @Expose
-    private Boolean hideDryModeControl;
-
-    @Expose
-    private Boolean hideRoomTemperature;
-
-    @Expose
-    private Boolean hideSupplyTemperature;
-
-    @Expose
-    private Boolean hideOutdoorTemperature;
-
-    @Expose
-    private Object buildingCountry;
-
-    @Expose
-    private Object ownerCountry;
-
-    @Expose
-    private Integer adaptorType;
-
-    @Expose
-    private Integer type;
-
-    @Expose
-    private String macAddress;
-
-    @Expose
-    private String serialNumber;
-
-    @Expose
-    private DeviceProps device;
-
-    @Expose
-    private Integer diagnosticMode;
-
-    @Expose
-    private Object diagnosticEndDate;
-
-    @Expose
-    private Integer location;
-
-    @Expose
-    private Object detectedCountry;
-
-    @Expose
-    private Integer registrations;
-
-    @Expose
-    private Object localIPAddress;
-
-    @Expose
-    private Integer timeZone;
-
-    @Expose
-    private Object registReason;
-
-    @Expose
-    private Integer expectedCommand;
-
-    private Integer registRetry;
-
-    @Expose
-    private String dateCreated;
-
-    @Expose
-    private Object firmwareDeployment;
-
-    @Expose
-    private Boolean firmwareUpdateAborted;
-
-    @Expose
-    private Permissions permissions;
-
-    public Integer getDeviceID() {
-        return deviceID;
-    }
-
-    public void setDeviceID(Integer deviceID) {
-        this.deviceID = deviceID;
-    }
-
-    public String getDeviceName() {
-        return deviceName;
-    }
-
-    public void setDeviceName(String deviceName) {
-        this.deviceName = deviceName;
-    }
-
-    public Integer getBuildingID() {
-        return buildingID;
-    }
-
-    public void setBuildingID(Integer buildingID) {
-        this.buildingID = buildingID;
-    }
-
-    public Object getBuildingName() {
-        return buildingName;
-    }
-
-    public void setBuildingName(Object buildingName) {
-        this.buildingName = buildingName;
-    }
-
-    public Object getFloorID() {
-        return floorID;
-    }
-
-    public void setFloorID(Object floorID) {
-        this.floorID = floorID;
-    }
-
-    public Object getFloorName() {
-        return floorName;
-    }
-
-    public void setFloorName(Object floorName) {
-        this.floorName = floorName;
-    }
-
-    public Object getAreaID() {
-        return areaID;
-    }
-
-    public void setAreaID(Object areaID) {
-        this.areaID = areaID;
-    }
-
-    public Object getAreaName() {
-        return areaName;
-    }
-
-    public void setAreaName(Object areaName) {
-        this.areaName = areaName;
-    }
-
-    public Integer getImageID() {
-        return imageID;
-    }
-
-    public void setImageID(Integer imageID) {
-        this.imageID = imageID;
-    }
-
-    public String getInstallationDate() {
-        return installationDate;
-    }
-
-    public void setInstallationDate(String installationDate) {
-        this.installationDate = installationDate;
-    }
-
-    public Object getLastServiceDate() {
-        return lastServiceDate;
-    }
-
-    public void setLastServiceDate(Object lastServiceDate) {
-        this.lastServiceDate = lastServiceDate;
-    }
-
-    public List<Preset> getPresets() {
-        return presets;
-    }
-
-    public void setPresets(List<Preset> presets) {
-        this.presets = presets;
-    }
-
-    public Object getOwnerID() {
-        return ownerID;
-    }
-
-    public void setOwnerID(Object ownerID) {
-        this.ownerID = ownerID;
-    }
-
-    public Object getOwnerName() {
-        return ownerName;
-    }
-
-    public void setOwnerName(Object ownerName) {
-        this.ownerName = ownerName;
-    }
-
-    public Object getOwnerEmail() {
-        return ownerEmail;
-    }
-
-    public void setOwnerEmail(Object ownerEmail) {
-        this.ownerEmail = ownerEmail;
-    }
-
-    public Integer getAccessLevel() {
-        return accessLevel;
-    }
-
-    public void setAccessLevel(Integer accessLevel) {
-        this.accessLevel = accessLevel;
-    }
-
-    public Boolean getDirectAccess() {
-        return directAccess;
-    }
-
-    public void setDirectAccess(Boolean directAccess) {
-        this.directAccess = directAccess;
-    }
-
-    public String getEndDate() {
-        return endDate;
-    }
-
-    public void setEndDate(String endDate) {
-        this.endDate = endDate;
-    }
-
-    public Object getZone1Name() {
-        return zone1Name;
-    }
-
-    public void setZone1Name(Object zone1Name) {
-        this.zone1Name = zone1Name;
-    }
-
-    public Object getZone2Name() {
-        return zone2Name;
-    }
-
-    public void setZone2Name(Object zone2Name) {
-        this.zone2Name = zone2Name;
-    }
-
-    public Integer getMinTemperature() {
-        return minTemperature;
-    }
-
-    public void setMinTemperature(Integer minTemperature) {
-        this.minTemperature = minTemperature;
-    }
-
-    public Integer getMaxTemperature() {
-        return maxTemperature;
-    }
-
-    public void setMaxTemperature(Integer maxTemperature) {
-        this.maxTemperature = maxTemperature;
-    }
-
-    public Boolean getHideVaneControls() {
-        return hideVaneControls;
-    }
-
-    public void setHideVaneControls(Boolean hideVaneControls) {
-        this.hideVaneControls = hideVaneControls;
-    }
-
-    public Boolean getHideDryModeControl() {
-        return hideDryModeControl;
-    }
-
-    public void setHideDryModeControl(Boolean hideDryModeControl) {
-        this.hideDryModeControl = hideDryModeControl;
-    }
-
-    public Boolean getHideRoomTemperature() {
-        return hideRoomTemperature;
-    }
-
-    public void setHideRoomTemperature(Boolean hideRoomTemperature) {
-        this.hideRoomTemperature = hideRoomTemperature;
-    }
-
-    public Boolean getHideSupplyTemperature() {
-        return hideSupplyTemperature;
-    }
-
-    public void setHideSupplyTemperature(Boolean hideSupplyTemperature) {
-        this.hideSupplyTemperature = hideSupplyTemperature;
-    }
-
-    public Boolean getHideOutdoorTemperature() {
-        return hideOutdoorTemperature;
-    }
-
-    public void setHideOutdoorTemperature(Boolean hideOutdoorTemperature) {
-        this.hideOutdoorTemperature = hideOutdoorTemperature;
-    }
-
-    public Object getBuildingCountry() {
-        return buildingCountry;
-    }
-
-    public void setBuildingCountry(Object buildingCountry) {
-        this.buildingCountry = buildingCountry;
-    }
-
-    public Object getOwnerCountry() {
-        return ownerCountry;
-    }
-
-    public void setOwnerCountry(Object ownerCountry) {
-        this.ownerCountry = ownerCountry;
-    }
-
-    public Integer getAdaptorType() {
-        return adaptorType;
-    }
-
-    public void setAdaptorType(Integer adaptorType) {
-        this.adaptorType = adaptorType;
-    }
-
-    public Integer getType() {
-        return type;
-    }
-
-    public void setType(Integer type) {
-        this.type = type;
-    }
-
-    public String getMacAddress() {
-        return macAddress;
-    }
-
-    public void setMacAddress(String macAddress) {
-        this.macAddress = macAddress;
-    }
-
-    public String getSerialNumber() {
-        return serialNumber;
-    }
-
-    public void setSerialNumber(String serialNumber) {
-        this.serialNumber = serialNumber;
-    }
-
-    public DeviceProps getDeviceProps() {
-        return device;
-    }
-
-    public void setDeviceProps(DeviceProps device) {
-        this.device = device;
-    }
-
-    public Integer getDiagnosticMode() {
-        return diagnosticMode;
-    }
-
-    public void setDiagnosticMode(Integer diagnosticMode) {
-        this.diagnosticMode = diagnosticMode;
-    }
-
-    public Object getDiagnosticEndDate() {
-        return diagnosticEndDate;
-    }
-
-    public void setDiagnosticEndDate(Object diagnosticEndDate) {
-        this.diagnosticEndDate = diagnosticEndDate;
-    }
-
-    public Integer getLocation() {
-        return location;
-    }
-
-    public void setLocation(Integer location) {
-        this.location = location;
-    }
-
-    public Object getDetectedCountry() {
-        return detectedCountry;
-    }
-
-    public void setDetectedCountry(Object detectedCountry) {
-        this.detectedCountry = detectedCountry;
-    }
-
-    public Integer getRegistrations() {
-        return registrations;
-    }
-
-    public void setRegistrations(Integer registrations) {
-        this.registrations = registrations;
-    }
-
-    public Object getLocalIPAddress() {
-        return localIPAddress;
-    }
-
-    public void setLocalIPAddress(Object localIPAddress) {
-        this.localIPAddress = localIPAddress;
-    }
-
-    public Integer getTimeZone() {
-        return timeZone;
-    }
-
-    public void setTimeZone(Integer timeZone) {
-        this.timeZone = timeZone;
-    }
-
-    public Object getRegistReason() {
-        return registReason;
-    }
-
-    public void setRegistReason(Object registReason) {
-        this.registReason = registReason;
-    }
-
-    public Integer getExpectedCommand() {
-        return expectedCommand;
-    }
-
-    public void setExpectedCommand(Integer expectedCommand) {
-        this.expectedCommand = expectedCommand;
-    }
-
-    public Integer getRegistRetry() {
-        return registRetry;
-    }
-
-    public void setRegistRetry(Integer registRetry) {
-        this.registRetry = registRetry;
-    }
-
-    public String getDateCreated() {
-        return dateCreated;
-    }
-
-    public void setDateCreated(String dateCreated) {
-        this.dateCreated = dateCreated;
-    }
-
-    public Object getFirmwareDeployment() {
-        return firmwareDeployment;
-    }
-
-    public void setFirmwareDeployment(Object firmwareDeployment) {
-        this.firmwareDeployment = firmwareDeployment;
-    }
-
-    public Boolean getFirmwareUpdateAborted() {
-        return firmwareUpdateAborted;
-    }
-
-    public void setFirmwareUpdateAborted(Boolean firmwareUpdateAborted) {
-        this.firmwareUpdateAborted = firmwareUpdateAborted;
-    }
-
-    public Permissions getPermissions() {
-        return permissions;
-    }
-
-    public void setPermissions(Permissions permissions) {
-        this.permissions = permissions;
-    }
-}
diff --git a/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/DeviceProps.java b/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/DeviceProps.java
deleted file mode 100644 (file)
index 82d15fd..0000000
+++ /dev/null
@@ -1,1105 +0,0 @@
-/**
- * Copyright (c) 2010-2024 Contributors to the openHAB project
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- */
-package org.openhab.binding.melcloud.internal.api.json;
-
-import java.util.List;
-
-import com.google.gson.annotations.Expose;
-
-/**
- * The {@link DeviceProps} is responsible of JSON data For MELCloud API
- * Device Properties.
- * Generated with jsonschema2pojo
- *
- * @author Luca Calcaterra - Initial contribution
- */
-public class DeviceProps {
-
-    @Expose
-    private List<Object> listHistory24Formatters = null;
-
-    @Expose
-    private Integer deviceType;
-
-    @Expose
-    private Boolean canCool;
-
-    @Expose
-    private Boolean canHeat;
-
-    @Expose
-    private Boolean canDry;
-
-    @Expose
-    private Boolean hasAutomaticFanSpeed;
-
-    @Expose
-    private Boolean airDirectionFunction;
-
-    @Expose
-    private Boolean swingFunction;
-
-    @Expose
-    private Integer numberOfFanSpeeds;
-
-    @Expose
-    private Boolean useTemperatureA;
-
-    @Expose
-    private Integer temperatureIncrementOverride;
-
-    @Expose
-    private Double temperatureIncrement;
-
-    @Expose
-    private Double minTempCoolDry;
-
-    @Expose
-    private Double maxTempCoolDry;
-
-    @Expose
-    private Double minTempHeat;
-
-    @Expose
-    private Double maxTempHeat;
-
-    @Expose
-    private Double minTempAutomatic;
-
-    @Expose
-    private Double maxTempAutomatic;
-
-    @Expose
-    private Boolean legacyDevice;
-
-    @Expose
-    private Boolean unitSupportsStandbyMode;
-
-    @Expose
-    private Boolean modelIsAirCurtain;
-
-    @Expose
-    private Boolean modelSupportsFanSpeed;
-
-    @Expose
-    private Boolean modelSupportsAuto;
-
-    @Expose
-    private Boolean modelSupportsHeat;
-
-    @Expose
-    private Boolean modelSupportsDry;
-
-    @Expose
-    private Boolean modelSupportsVaneVertical;
-
-    @Expose
-    private Boolean modelSupportsVaneHorizontal;
-
-    @Expose
-    private Boolean modelSupportsStandbyMode;
-
-    @Expose
-    private Boolean modelSupportsEnergyReporting;
-
-    @Expose
-    private Boolean power;
-
-    @Expose
-    private Double roomTemperature;
-
-    @Expose
-    private Double setTemperature;
-
-    @Expose
-    private Integer actualFanSpeed;
-
-    @Expose
-    private Integer fanSpeed;
-
-    @Expose
-    private Boolean automaticFanSpeed;
-
-    @Expose
-    private Integer vaneVerticalDirection;
-
-    @Expose
-    private Boolean vaneVerticalSwing;
-
-    @Expose
-    private Integer vaneHorizontalDirection;
-
-    @Expose
-    private Boolean vaneHorizontalSwing;
-
-    @Expose
-    private Integer operationMode;
-
-    @Expose
-    private Integer effectiveFlags;
-
-    @Expose
-    private Integer lastEffectiveFlags;
-
-    @Expose
-    private Boolean inStandbyMode;
-
-    @Expose
-    private Double defaultCoolingSetTemperature;
-
-    @Expose
-    private Double defaultHeatingSetTemperature;
-
-    @Expose
-    private Integer roomTemperatureLabel;
-
-    @Expose
-    private Boolean hasEnergyConsumedMeter;
-
-    @Expose
-    private Integer currentEnergyConsumed;
-
-    @Expose
-    private Integer currentEnergyMode;
-
-    @Expose
-    private Boolean coolingDisabled;
-
-    @Expose
-    private Integer minPcycle;
-
-    @Expose
-    private Integer maxPcycle;
-
-    @Expose
-    private Integer effectivePCycle;
-
-    @Expose
-    private Integer maxOutdoorUnits;
-
-    @Expose
-    private Integer maxIndoorUnits;
-
-    @Expose
-    private Integer maxTemperatureControlUnits;
-
-    @Expose
-    private Integer deviceID;
-
-    @Expose
-    private String macAddress;
-
-    @Expose
-    private String serialNumber;
-
-    @Expose
-    private Integer timeZoneID;
-
-    @Expose
-    private Integer diagnosticMode;
-
-    @Expose
-    private Object diagnosticEndDate;
-
-    @Expose
-    private Integer expectedCommand;
-
-    @Expose
-    private Object owner;
-
-    @Expose
-    private Object detectedCountry;
-
-    @Expose
-    private Integer adaptorType;
-
-    @Expose
-    private Object firmwareDeployment;
-
-    @Expose
-    private Boolean firmwareUpdateAborted;
-
-    @Expose
-    private Integer wifiSignalStrength;
-
-    @Expose
-    private String wifiAdapterStatus;
-
-    @Expose
-    private String position;
-
-    @Expose
-    private Integer pCycle;
-
-    @Expose
-    private Integer recordNumMax;
-
-    @Expose
-    private String lastTimeStamp;
-
-    @Expose
-    private Integer errorCode;
-
-    @Expose
-    private Boolean hasError;
-
-    @Expose
-    private String lastReset;
-
-    @Expose
-    private Integer flashWrites;
-
-    @Expose
-    private Object scene;
-
-    @Expose
-    private Object sSLExpirationDate;
-
-    @Expose
-    private Object sPTimeout;
-
-    @Expose
-    private Object passcode;
-
-    @Expose
-    private Boolean serverCommunicationDisabled;
-
-    @Expose
-    private Integer consecutiveUploadErrors;
-
-    @Expose
-    private Object doNotRespondAfter;
-
-    @Expose
-    private Integer ownerRoleAccessLevel;
-
-    @Expose
-    private Integer ownerCountry;
-
-    @Expose
-    private Object rate1StartTime;
-
-    @Expose
-    private Object rate2StartTime;
-
-    @Expose
-    private Integer protocolVersion;
-
-    @Expose
-    private Integer unitVersion;
-
-    @Expose
-    private Integer firmwareAppVersion;
-
-    @Expose
-    private Integer firmwareWebVersion;
-
-    @Expose
-    private Integer firmwareWlanVersion;
-
-    @Expose
-    private Boolean hasErrorMessages;
-
-    @Expose
-    private Boolean hasZone2;
-
-    @Expose
-    private Boolean offline;
-
-    @Expose
-    private List<Object> units = null;
-
-    public List<Object> getListHistory24Formatters() {
-        return listHistory24Formatters;
-    }
-
-    public void setListHistory24Formatters(List<Object> listHistory24Formatters) {
-        this.listHistory24Formatters = listHistory24Formatters;
-    }
-
-    public Integer getDeviceType() {
-        return deviceType;
-    }
-
-    public void setDeviceType(Integer deviceType) {
-        this.deviceType = deviceType;
-    }
-
-    public Boolean getCanCool() {
-        return canCool;
-    }
-
-    public void setCanCool(Boolean canCool) {
-        this.canCool = canCool;
-    }
-
-    public Boolean getCanHeat() {
-        return canHeat;
-    }
-
-    public void setCanHeat(Boolean canHeat) {
-        this.canHeat = canHeat;
-    }
-
-    public Boolean getCanDry() {
-        return canDry;
-    }
-
-    public void setCanDry(Boolean canDry) {
-        this.canDry = canDry;
-    }
-
-    public Boolean getHasAutomaticFanSpeed() {
-        return hasAutomaticFanSpeed;
-    }
-
-    public void setHasAutomaticFanSpeed(Boolean hasAutomaticFanSpeed) {
-        this.hasAutomaticFanSpeed = hasAutomaticFanSpeed;
-    }
-
-    public Boolean getAirDirectionFunction() {
-        return airDirectionFunction;
-    }
-
-    public void setAirDirectionFunction(Boolean airDirectionFunction) {
-        this.airDirectionFunction = airDirectionFunction;
-    }
-
-    public Boolean getSwingFunction() {
-        return swingFunction;
-    }
-
-    public void setSwingFunction(Boolean swingFunction) {
-        this.swingFunction = swingFunction;
-    }
-
-    public Integer getNumberOfFanSpeeds() {
-        return numberOfFanSpeeds;
-    }
-
-    public void setNumberOfFanSpeeds(Integer numberOfFanSpeeds) {
-        this.numberOfFanSpeeds = numberOfFanSpeeds;
-    }
-
-    public Boolean getUseTemperatureA() {
-        return useTemperatureA;
-    }
-
-    public void setUseTemperatureA(Boolean useTemperatureA) {
-        this.useTemperatureA = useTemperatureA;
-    }
-
-    public Integer getTemperatureIncrementOverride() {
-        return temperatureIncrementOverride;
-    }
-
-    public void setTemperatureIncrementOverride(Integer temperatureIncrementOverride) {
-        this.temperatureIncrementOverride = temperatureIncrementOverride;
-    }
-
-    public Double getTemperatureIncrement() {
-        return temperatureIncrement;
-    }
-
-    public void setTemperatureIncrement(Double temperatureIncrement) {
-        this.temperatureIncrement = temperatureIncrement;
-    }
-
-    public Double getMinTempCoolDry() {
-        return minTempCoolDry;
-    }
-
-    public void setMinTempCoolDry(Double minTempCoolDry) {
-        this.minTempCoolDry = minTempCoolDry;
-    }
-
-    public Double getMaxTempCoolDry() {
-        return maxTempCoolDry;
-    }
-
-    public void setMaxTempCoolDry(Double maxTempCoolDry) {
-        this.maxTempCoolDry = maxTempCoolDry;
-    }
-
-    public Double getMinTempHeat() {
-        return minTempHeat;
-    }
-
-    public void setMinTempHeat(Double minTempHeat) {
-        this.minTempHeat = minTempHeat;
-    }
-
-    public Double getMaxTempHeat() {
-        return maxTempHeat;
-    }
-
-    public void setMaxTempHeat(Double maxTempHeat) {
-        this.maxTempHeat = maxTempHeat;
-    }
-
-    public Double getMinTempAutomatic() {
-        return minTempAutomatic;
-    }
-
-    public void setMinTempAutomatic(Double minTempAutomatic) {
-        this.minTempAutomatic = minTempAutomatic;
-    }
-
-    public Double getMaxTempAutomatic() {
-        return maxTempAutomatic;
-    }
-
-    public void setMaxTempAutomatic(Double maxTempAutomatic) {
-        this.maxTempAutomatic = maxTempAutomatic;
-    }
-
-    public Boolean getLegacyDevice() {
-        return legacyDevice;
-    }
-
-    public void setLegacyDevice(Boolean legacyDevice) {
-        this.legacyDevice = legacyDevice;
-    }
-
-    public Boolean getUnitSupportsStandbyMode() {
-        return unitSupportsStandbyMode;
-    }
-
-    public void setUnitSupportsStandbyMode(Boolean unitSupportsStandbyMode) {
-        this.unitSupportsStandbyMode = unitSupportsStandbyMode;
-    }
-
-    public Boolean getModelIsAirCurtain() {
-        return modelIsAirCurtain;
-    }
-
-    public void setModelIsAirCurtain(Boolean modelIsAirCurtain) {
-        this.modelIsAirCurtain = modelIsAirCurtain;
-    }
-
-    public Boolean getModelSupportsFanSpeed() {
-        return modelSupportsFanSpeed;
-    }
-
-    public void setModelSupportsFanSpeed(Boolean modelSupportsFanSpeed) {
-        this.modelSupportsFanSpeed = modelSupportsFanSpeed;
-    }
-
-    public Boolean getModelSupportsAuto() {
-        return modelSupportsAuto;
-    }
-
-    public void setModelSupportsAuto(Boolean modelSupportsAuto) {
-        this.modelSupportsAuto = modelSupportsAuto;
-    }
-
-    public Boolean getModelSupportsHeat() {
-        return modelSupportsHeat;
-    }
-
-    public void setModelSupportsHeat(Boolean modelSupportsHeat) {
-        this.modelSupportsHeat = modelSupportsHeat;
-    }
-
-    public Boolean getModelSupportsDry() {
-        return modelSupportsDry;
-    }
-
-    public void setModelSupportsDry(Boolean modelSupportsDry) {
-        this.modelSupportsDry = modelSupportsDry;
-    }
-
-    public Boolean getModelSupportsVaneVertical() {
-        return modelSupportsVaneVertical;
-    }
-
-    public void setModelSupportsVaneVertical(Boolean modelSupportsVaneVertical) {
-        this.modelSupportsVaneVertical = modelSupportsVaneVertical;
-    }
-
-    public Boolean getModelSupportsVaneHorizontal() {
-        return modelSupportsVaneHorizontal;
-    }
-
-    public void setModelSupportsVaneHorizontal(Boolean modelSupportsVaneHorizontal) {
-        this.modelSupportsVaneHorizontal = modelSupportsVaneHorizontal;
-    }
-
-    public Boolean getModelSupportsStandbyMode() {
-        return modelSupportsStandbyMode;
-    }
-
-    public void setModelSupportsStandbyMode(Boolean modelSupportsStandbyMode) {
-        this.modelSupportsStandbyMode = modelSupportsStandbyMode;
-    }
-
-    public Boolean getModelSupportsEnergyReporting() {
-        return modelSupportsEnergyReporting;
-    }
-
-    public void setModelSupportsEnergyReporting(Boolean modelSupportsEnergyReporting) {
-        this.modelSupportsEnergyReporting = modelSupportsEnergyReporting;
-    }
-
-    public Boolean getPower() {
-        return power;
-    }
-
-    public void setPower(Boolean power) {
-        this.power = power;
-    }
-
-    public Double getRoomTemperature() {
-        return roomTemperature;
-    }
-
-    public void setRoomTemperature(Double roomTemperature) {
-        this.roomTemperature = roomTemperature;
-    }
-
-    public Double getSetTemperature() {
-        return setTemperature;
-    }
-
-    public void setSetTemperature(Double setTemperature) {
-        this.setTemperature = setTemperature;
-    }
-
-    public Integer getActualFanSpeed() {
-        return actualFanSpeed;
-    }
-
-    public void setActualFanSpeed(Integer actualFanSpeed) {
-        this.actualFanSpeed = actualFanSpeed;
-    }
-
-    public Integer getFanSpeed() {
-        return fanSpeed;
-    }
-
-    public void setFanSpeed(Integer fanSpeed) {
-        this.fanSpeed = fanSpeed;
-    }
-
-    public Boolean getAutomaticFanSpeed() {
-        return automaticFanSpeed;
-    }
-
-    public void setAutomaticFanSpeed(Boolean automaticFanSpeed) {
-        this.automaticFanSpeed = automaticFanSpeed;
-    }
-
-    public Integer getVaneVerticalDirection() {
-        return vaneVerticalDirection;
-    }
-
-    public void setVaneVerticalDirection(Integer vaneVerticalDirection) {
-        this.vaneVerticalDirection = vaneVerticalDirection;
-    }
-
-    public Boolean getVaneVerticalSwing() {
-        return vaneVerticalSwing;
-    }
-
-    public void setVaneVerticalSwing(Boolean vaneVerticalSwing) {
-        this.vaneVerticalSwing = vaneVerticalSwing;
-    }
-
-    public Integer getVaneHorizontalDirection() {
-        return vaneHorizontalDirection;
-    }
-
-    public void setVaneHorizontalDirection(Integer vaneHorizontalDirection) {
-        this.vaneHorizontalDirection = vaneHorizontalDirection;
-    }
-
-    public Boolean getVaneHorizontalSwing() {
-        return vaneHorizontalSwing;
-    }
-
-    public void setVaneHorizontalSwing(Boolean vaneHorizontalSwing) {
-        this.vaneHorizontalSwing = vaneHorizontalSwing;
-    }
-
-    public Integer getOperationMode() {
-        return operationMode;
-    }
-
-    public void setOperationMode(Integer operationMode) {
-        this.operationMode = operationMode;
-    }
-
-    public Integer getEffectiveFlags() {
-        return effectiveFlags;
-    }
-
-    public void setEffectiveFlags(Integer effectiveFlags) {
-        this.effectiveFlags = effectiveFlags;
-    }
-
-    public Integer getLastEffectiveFlags() {
-        return lastEffectiveFlags;
-    }
-
-    public void setLastEffectiveFlags(Integer lastEffectiveFlags) {
-        this.lastEffectiveFlags = lastEffectiveFlags;
-    }
-
-    public Boolean getInStandbyMode() {
-        return inStandbyMode;
-    }
-
-    public void setInStandbyMode(Boolean inStandbyMode) {
-        this.inStandbyMode = inStandbyMode;
-    }
-
-    public Double getDefaultCoolingSetTemperature() {
-        return defaultCoolingSetTemperature;
-    }
-
-    public void setDefaultCoolingSetTemperature(Double defaultCoolingSetTemperature) {
-        this.defaultCoolingSetTemperature = defaultCoolingSetTemperature;
-    }
-
-    public Double getDefaultHeatingSetTemperature() {
-        return defaultHeatingSetTemperature;
-    }
-
-    public void setDefaultHeatingSetTemperature(Double defaultHeatingSetTemperature) {
-        this.defaultHeatingSetTemperature = defaultHeatingSetTemperature;
-    }
-
-    public Integer getRoomTemperatureLabel() {
-        return roomTemperatureLabel;
-    }
-
-    public void setRoomTemperatureLabel(Integer roomTemperatureLabel) {
-        this.roomTemperatureLabel = roomTemperatureLabel;
-    }
-
-    public Boolean getHasEnergyConsumedMeter() {
-        return hasEnergyConsumedMeter;
-    }
-
-    public void setHasEnergyConsumedMeter(Boolean hasEnergyConsumedMeter) {
-        this.hasEnergyConsumedMeter = hasEnergyConsumedMeter;
-    }
-
-    public Integer getCurrentEnergyConsumed() {
-        return currentEnergyConsumed;
-    }
-
-    public void setCurrentEnergyConsumed(Integer currentEnergyConsumed) {
-        this.currentEnergyConsumed = currentEnergyConsumed;
-    }
-
-    public Integer getCurrentEnergyMode() {
-        return currentEnergyMode;
-    }
-
-    public void setCurrentEnergyMode(Integer currentEnergyMode) {
-        this.currentEnergyMode = currentEnergyMode;
-    }
-
-    public Boolean getCoolingDisabled() {
-        return coolingDisabled;
-    }
-
-    public void setCoolingDisabled(Boolean coolingDisabled) {
-        this.coolingDisabled = coolingDisabled;
-    }
-
-    public Integer getMinPcycle() {
-        return minPcycle;
-    }
-
-    public void setMinPcycle(Integer minPcycle) {
-        this.minPcycle = minPcycle;
-    }
-
-    public Integer getMaxPcycle() {
-        return maxPcycle;
-    }
-
-    public void setMaxPcycle(Integer maxPcycle) {
-        this.maxPcycle = maxPcycle;
-    }
-
-    public Integer getEffectivePCycle() {
-        return effectivePCycle;
-    }
-
-    public void setEffectivePCycle(Integer effectivePCycle) {
-        this.effectivePCycle = effectivePCycle;
-    }
-
-    public Integer getMaxOutdoorUnits() {
-        return maxOutdoorUnits;
-    }
-
-    public void setMaxOutdoorUnits(Integer maxOutdoorUnits) {
-        this.maxOutdoorUnits = maxOutdoorUnits;
-    }
-
-    public Integer getMaxIndoorUnits() {
-        return maxIndoorUnits;
-    }
-
-    public void setMaxIndoorUnits(Integer maxIndoorUnits) {
-        this.maxIndoorUnits = maxIndoorUnits;
-    }
-
-    public Integer getMaxTemperatureControlUnits() {
-        return maxTemperatureControlUnits;
-    }
-
-    public void setMaxTemperatureControlUnits(Integer maxTemperatureControlUnits) {
-        this.maxTemperatureControlUnits = maxTemperatureControlUnits;
-    }
-
-    public Integer getDeviceID() {
-        return deviceID;
-    }
-
-    public void setDeviceID(Integer deviceID) {
-        this.deviceID = deviceID;
-    }
-
-    public String getMacAddress() {
-        return macAddress;
-    }
-
-    public void setMacAddress(String macAddress) {
-        this.macAddress = macAddress;
-    }
-
-    public String getSerialNumber() {
-        return serialNumber;
-    }
-
-    public void setSerialNumber(String serialNumber) {
-        this.serialNumber = serialNumber;
-    }
-
-    public Integer getTimeZoneID() {
-        return timeZoneID;
-    }
-
-    public void setTimeZoneID(Integer timeZoneID) {
-        this.timeZoneID = timeZoneID;
-    }
-
-    public Integer getDiagnosticMode() {
-        return diagnosticMode;
-    }
-
-    public void setDiagnosticMode(Integer diagnosticMode) {
-        this.diagnosticMode = diagnosticMode;
-    }
-
-    public Object getDiagnosticEndDate() {
-        return diagnosticEndDate;
-    }
-
-    public void setDiagnosticEndDate(Object diagnosticEndDate) {
-        this.diagnosticEndDate = diagnosticEndDate;
-    }
-
-    public Integer getExpectedCommand() {
-        return expectedCommand;
-    }
-
-    public void setExpectedCommand(Integer expectedCommand) {
-        this.expectedCommand = expectedCommand;
-    }
-
-    public Object getOwner() {
-        return owner;
-    }
-
-    public void setOwner(Object owner) {
-        this.owner = owner;
-    }
-
-    public Object getDetectedCountry() {
-        return detectedCountry;
-    }
-
-    public void setDetectedCountry(Object detectedCountry) {
-        this.detectedCountry = detectedCountry;
-    }
-
-    public Integer getAdaptorType() {
-        return adaptorType;
-    }
-
-    public void setAdaptorType(Integer adaptorType) {
-        this.adaptorType = adaptorType;
-    }
-
-    public Object getFirmwareDeployment() {
-        return firmwareDeployment;
-    }
-
-    public void setFirmwareDeployment(Object firmwareDeployment) {
-        this.firmwareDeployment = firmwareDeployment;
-    }
-
-    public Boolean getFirmwareUpdateAborted() {
-        return firmwareUpdateAborted;
-    }
-
-    public void setFirmwareUpdateAborted(Boolean firmwareUpdateAborted) {
-        this.firmwareUpdateAborted = firmwareUpdateAborted;
-    }
-
-    public Integer getWifiSignalStrength() {
-        return wifiSignalStrength;
-    }
-
-    public void setWifiSignalStrength(Integer wifiSignalStrength) {
-        this.wifiSignalStrength = wifiSignalStrength;
-    }
-
-    public String getWifiAdapterStatus() {
-        return wifiAdapterStatus;
-    }
-
-    public void setWifiAdapterStatus(String wifiAdapterStatus) {
-        this.wifiAdapterStatus = wifiAdapterStatus;
-    }
-
-    public String getPosition() {
-        return position;
-    }
-
-    public void setPosition(String position) {
-        this.position = position;
-    }
-
-    public Integer getPCycle() {
-        return pCycle;
-    }
-
-    public void setPCycle(Integer pCycle) {
-        this.pCycle = pCycle;
-    }
-
-    public Integer getRecordNumMax() {
-        return recordNumMax;
-    }
-
-    public void setRecordNumMax(Integer recordNumMax) {
-        this.recordNumMax = recordNumMax;
-    }
-
-    public String getLastTimeStamp() {
-        return lastTimeStamp;
-    }
-
-    public void setLastTimeStamp(String lastTimeStamp) {
-        this.lastTimeStamp = lastTimeStamp;
-    }
-
-    public Integer getErrorCode() {
-        return errorCode;
-    }
-
-    public void setErrorCode(Integer errorCode) {
-        this.errorCode = errorCode;
-    }
-
-    public Boolean getHasError() {
-        return hasError;
-    }
-
-    public void setHasError(Boolean hasError) {
-        this.hasError = hasError;
-    }
-
-    public String getLastReset() {
-        return lastReset;
-    }
-
-    public void setLastReset(String lastReset) {
-        this.lastReset = lastReset;
-    }
-
-    public Integer getFlashWrites() {
-        return flashWrites;
-    }
-
-    public void setFlashWrites(Integer flashWrites) {
-        this.flashWrites = flashWrites;
-    }
-
-    public Object getScene() {
-        return scene;
-    }
-
-    public void setScene(Object scene) {
-        this.scene = scene;
-    }
-
-    public Object getSSLExpirationDate() {
-        return sSLExpirationDate;
-    }
-
-    public void setSSLExpirationDate(Object sSLExpirationDate) {
-        this.sSLExpirationDate = sSLExpirationDate;
-    }
-
-    public Object getSPTimeout() {
-        return sPTimeout;
-    }
-
-    public void setSPTimeout(Object sPTimeout) {
-        this.sPTimeout = sPTimeout;
-    }
-
-    public Object getPasscode() {
-        return passcode;
-    }
-
-    public void setPasscode(Object passcode) {
-        this.passcode = passcode;
-    }
-
-    public Boolean getServerCommunicationDisabled() {
-        return serverCommunicationDisabled;
-    }
-
-    public void setServerCommunicationDisabled(Boolean serverCommunicationDisabled) {
-        this.serverCommunicationDisabled = serverCommunicationDisabled;
-    }
-
-    public Integer getConsecutiveUploadErrors() {
-        return consecutiveUploadErrors;
-    }
-
-    public void setConsecutiveUploadErrors(Integer consecutiveUploadErrors) {
-        this.consecutiveUploadErrors = consecutiveUploadErrors;
-    }
-
-    public Object getDoNotRespondAfter() {
-        return doNotRespondAfter;
-    }
-
-    public void setDoNotRespondAfter(Object doNotRespondAfter) {
-        this.doNotRespondAfter = doNotRespondAfter;
-    }
-
-    public Integer getOwnerRoleAccessLevel() {
-        return ownerRoleAccessLevel;
-    }
-
-    public void setOwnerRoleAccessLevel(Integer ownerRoleAccessLevel) {
-        this.ownerRoleAccessLevel = ownerRoleAccessLevel;
-    }
-
-    public Integer getOwnerCountry() {
-        return ownerCountry;
-    }
-
-    public void setOwnerCountry(Integer ownerCountry) {
-        this.ownerCountry = ownerCountry;
-    }
-
-    public Object getRate1StartTime() {
-        return rate1StartTime;
-    }
-
-    public void setRate1StartTime(Object rate1StartTime) {
-        this.rate1StartTime = rate1StartTime;
-    }
-
-    public Object getRate2StartTime() {
-        return rate2StartTime;
-    }
-
-    public void setRate2StartTime(Object rate2StartTime) {
-        this.rate2StartTime = rate2StartTime;
-    }
-
-    public Integer getProtocolVersion() {
-        return protocolVersion;
-    }
-
-    public void setProtocolVersion(Integer protocolVersion) {
-        this.protocolVersion = protocolVersion;
-    }
-
-    public Integer getUnitVersion() {
-        return unitVersion;
-    }
-
-    public void setUnitVersion(Integer unitVersion) {
-        this.unitVersion = unitVersion;
-    }
-
-    public Integer getFirmwareAppVersion() {
-        return firmwareAppVersion;
-    }
-
-    public void setFirmwareAppVersion(Integer firmwareAppVersion) {
-        this.firmwareAppVersion = firmwareAppVersion;
-    }
-
-    public Integer getFirmwareWebVersion() {
-        return firmwareWebVersion;
-    }
-
-    public void setFirmwareWebVersion(Integer firmwareWebVersion) {
-        this.firmwareWebVersion = firmwareWebVersion;
-    }
-
-    public Integer getFirmwareWlanVersion() {
-        return firmwareWlanVersion;
-    }
-
-    public void setFirmwareWlanVersion(Integer firmwareWlanVersion) {
-        this.firmwareWlanVersion = firmwareWlanVersion;
-    }
-
-    public Boolean getHasErrorMessages() {
-        return hasErrorMessages;
-    }
-
-    public void setHasErrorMessages(Boolean hasErrorMessages) {
-        this.hasErrorMessages = hasErrorMessages;
-    }
-
-    public Boolean getHasZone2() {
-        return hasZone2;
-    }
-
-    public void setHasZone2(Boolean hasZone2) {
-        this.hasZone2 = hasZone2;
-    }
-
-    public Boolean getOffline() {
-        return offline;
-    }
-
-    public void setOffline(Boolean offline) {
-        this.offline = offline;
-    }
-
-    public List<Object> getUnits() {
-        return units;
-    }
-
-    public void setUnits(List<Object> units) {
-        this.units = units;
-    }
-}
diff --git a/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/DeviceStatus.java b/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/DeviceStatus.java
deleted file mode 100644 (file)
index a658b4e..0000000
+++ /dev/null
@@ -1,347 +0,0 @@
-/**
- * Copyright (c) 2010-2024 Contributors to the openHAB project
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- */
-package org.openhab.binding.melcloud.internal.api.json;
-
-import java.util.List;
-
-import com.google.gson.annotations.Expose;
-
-/**
- * The {@link DeviceProps} is responsible of JSON data For MELCloud API
- * Device Status data
- * Generated with jsonschema2pojo
- *
- * @author Luca Calcaterra - Initial contribution
- * @author Pauli Anttila - Fine tuned expose annotations
- */
-public class DeviceStatus {
-
-    @Expose
-    private Integer effectiveFlags;
-
-    @Expose(serialize = false, deserialize = true)
-    private Object localIPAddress;
-
-    @Expose(serialize = false, deserialize = true)
-    private Double roomTemperature;
-
-    @Expose
-    private Double setTemperature;
-
-    @Expose
-    private Integer setFanSpeed;
-
-    @Expose
-    private Integer operationMode;
-
-    @Expose
-    private Integer vaneHorizontal;
-
-    @Expose
-    private Integer vaneVertical;
-
-    @Expose
-    private Object name;
-
-    @Expose(serialize = false, deserialize = true)
-    private Integer numberOfFanSpeeds;
-
-    @Expose(serialize = false, deserialize = true)
-    private List<WeatherObservation> weatherObservations = null;
-
-    @Expose(serialize = false, deserialize = true)
-    private Object errorMessage;
-
-    @Expose(serialize = false, deserialize = true)
-    private Integer errorCode;
-
-    @Expose(serialize = false, deserialize = true)
-    private Double defaultHeatingSetTemperature;
-
-    @Expose(serialize = false, deserialize = true)
-    private Double defaultCoolingSetTemperature;
-
-    @Expose(serialize = false, deserialize = true)
-    private Boolean hideVaneControls;
-
-    @Expose(serialize = false, deserialize = true)
-    private Boolean hideDryModeControl;
-
-    @Expose(serialize = false, deserialize = true)
-    private Integer roomTemperatureLabel;
-
-    @Expose(serialize = false, deserialize = true)
-    private Boolean inStandbyMode;
-
-    @Expose(serialize = false, deserialize = true)
-    private Integer temperatureIncrementOverride;
-
-    @Expose
-    private Integer deviceID;
-
-    @Expose(serialize = false, deserialize = true)
-    private Integer deviceType;
-
-    @Expose(serialize = false, deserialize = true)
-    private String lastCommunication;
-
-    @Expose(serialize = false, deserialize = true)
-    private String nextCommunication;
-
-    @Expose
-    private Boolean power;
-
-    @Expose
-    private Boolean hasPendingCommand;
-
-    @Expose(serialize = false, deserialize = true)
-    private Boolean offline;
-
-    @Expose(serialize = false, deserialize = true)
-    private Object scene;
-
-    @Expose(serialize = false, deserialize = true)
-    private Object sceneOwner;
-
-    public Integer getEffectiveFlags() {
-        return effectiveFlags;
-    }
-
-    public void setEffectiveFlags(Integer effectiveFlags) {
-        this.effectiveFlags = effectiveFlags;
-    }
-
-    public Object getLocalIPAddress() {
-        return localIPAddress;
-    }
-
-    public void setLocalIPAddress(Object localIPAddress) {
-        this.localIPAddress = localIPAddress;
-    }
-
-    public Double getRoomTemperature() {
-        return roomTemperature;
-    }
-
-    public void setRoomTemperature(Double roomTemperature) {
-        this.roomTemperature = roomTemperature;
-    }
-
-    public Double getSetTemperature() {
-        return setTemperature;
-    }
-
-    public void setSetTemperature(Double setTemperature) {
-        this.setTemperature = setTemperature;
-    }
-
-    public Integer getSetFanSpeed() {
-        return setFanSpeed;
-    }
-
-    public void setSetFanSpeed(Integer setFanSpeed) {
-        this.setFanSpeed = setFanSpeed;
-    }
-
-    public Integer getOperationMode() {
-        return operationMode;
-    }
-
-    public void setOperationMode(Integer operationMode) {
-        this.operationMode = operationMode;
-    }
-
-    public Integer getVaneHorizontal() {
-        return vaneHorizontal;
-    }
-
-    public void setVaneHorizontal(Integer vaneHorizontal) {
-        this.vaneHorizontal = vaneHorizontal;
-    }
-
-    public Integer getVaneVertical() {
-        return vaneVertical;
-    }
-
-    public void setVaneVertical(Integer vaneVertical) {
-        this.vaneVertical = vaneVertical;
-    }
-
-    public Object getName() {
-        return name;
-    }
-
-    public void setName(Object name) {
-        this.name = name;
-    }
-
-    public Integer getNumberOfFanSpeeds() {
-        return numberOfFanSpeeds;
-    }
-
-    public void setNumberOfFanSpeeds(Integer numberOfFanSpeeds) {
-        this.numberOfFanSpeeds = numberOfFanSpeeds;
-    }
-
-    public List<WeatherObservation> getWeatherObservations() {
-        return weatherObservations;
-    }
-
-    public void setWeatherObservations(List<WeatherObservation> weatherObservations) {
-        this.weatherObservations = weatherObservations;
-    }
-
-    public Object getErrorMessage() {
-        return errorMessage;
-    }
-
-    public void setErrorMessage(Object errorMessage) {
-        this.errorMessage = errorMessage;
-    }
-
-    public Integer getErrorCode() {
-        return errorCode;
-    }
-
-    public void setErrorCode(Integer errorCode) {
-        this.errorCode = errorCode;
-    }
-
-    public Double getDefaultHeatingSetTemperature() {
-        return defaultHeatingSetTemperature;
-    }
-
-    public void setDefaultHeatingSetTemperature(Double defaultHeatingSetTemperature) {
-        this.defaultHeatingSetTemperature = defaultHeatingSetTemperature;
-    }
-
-    public Double getDefaultCoolingSetTemperature() {
-        return defaultCoolingSetTemperature;
-    }
-
-    public void setDefaultCoolingSetTemperature(Double defaultCoolingSetTemperature) {
-        this.defaultCoolingSetTemperature = defaultCoolingSetTemperature;
-    }
-
-    public Boolean getHideVaneControls() {
-        return hideVaneControls;
-    }
-
-    public void setHideVaneControls(Boolean hideVaneControls) {
-        this.hideVaneControls = hideVaneControls;
-    }
-
-    public Boolean getHideDryModeControl() {
-        return hideDryModeControl;
-    }
-
-    public void setHideDryModeControl(Boolean hideDryModeControl) {
-        this.hideDryModeControl = hideDryModeControl;
-    }
-
-    public Integer getRoomTemperatureLabel() {
-        return roomTemperatureLabel;
-    }
-
-    public void setRoomTemperatureLabel(Integer roomTemperatureLabel) {
-        this.roomTemperatureLabel = roomTemperatureLabel;
-    }
-
-    public Boolean getInStandbyMode() {
-        return inStandbyMode;
-    }
-
-    public void setInStandbyMode(Boolean inStandbyMode) {
-        this.inStandbyMode = inStandbyMode;
-    }
-
-    public Integer getTemperatureIncrementOverride() {
-        return temperatureIncrementOverride;
-    }
-
-    public void setTemperatureIncrementOverride(Integer temperatureIncrementOverride) {
-        this.temperatureIncrementOverride = temperatureIncrementOverride;
-    }
-
-    public Integer getDeviceID() {
-        return deviceID;
-    }
-
-    public void setDeviceID(Integer deviceID) {
-        this.deviceID = deviceID;
-    }
-
-    public Integer getDeviceType() {
-        return deviceType;
-    }
-
-    public void setDeviceType(Integer deviceType) {
-        this.deviceType = deviceType;
-    }
-
-    public String getLastCommunication() {
-        return lastCommunication;
-    }
-
-    public void setLastCommunication(String lastCommunication) {
-        this.lastCommunication = lastCommunication;
-    }
-
-    public String getNextCommunication() {
-        return nextCommunication;
-    }
-
-    public void setNextCommunication(String nextCommunication) {
-        this.nextCommunication = nextCommunication;
-    }
-
-    public Boolean getPower() {
-        return power;
-    }
-
-    public void setPower(Boolean power) {
-        this.power = power;
-    }
-
-    public Boolean getHasPendingCommand() {
-        return hasPendingCommand;
-    }
-
-    public void setHasPendingCommand(Boolean hasPendingCommand) {
-        this.hasPendingCommand = hasPendingCommand;
-    }
-
-    public Boolean getOffline() {
-        return offline;
-    }
-
-    public void setOffline(Boolean offline) {
-        this.offline = offline;
-    }
-
-    public Object getScene() {
-        return scene;
-    }
-
-    public void setScene(Object scene) {
-        this.scene = scene;
-    }
-
-    public Object getSceneOwner() {
-        return sceneOwner;
-    }
-
-    public void setSceneOwner(Object sceneOwner) {
-        this.sceneOwner = sceneOwner;
-    }
-}
diff --git a/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/Floor.java b/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/Floor.java
deleted file mode 100644 (file)
index 2abc707..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-/**
- * Copyright (c) 2010-2024 Contributors to the openHAB project
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- */
-package org.openhab.binding.melcloud.internal.api.json;
-
-import java.util.List;
-
-import com.google.gson.annotations.Expose;
-
-/**
- * {@link Floor} provides floor specific information for JSON data returned from MELCloud API
- * Floor Data
- * Generated with jsonschema2pojo
- *
- * @author Wietse van Buitenen - Initial contribution
- */
-public class Floor {
-
-    @Expose
-    private Integer iD;
-
-    @Expose
-    private String name;
-
-    @Expose
-    private Integer buildingId;
-
-    @Expose
-    private Integer accessLevel;
-
-    @Expose
-    private Boolean directAccess;
-
-    @Expose
-    private Object endDate;
-
-    @Expose
-    private List<Area> areas = null;
-
-    @Expose
-    private List<Device> devices = null;
-
-    @Expose
-    private Integer minTemperature;
-
-    @Expose
-    private Integer maxTemperature;
-
-    @Expose
-    private Boolean expanded;
-
-    public Integer getID() {
-        return iD;
-    }
-
-    public void setID(Integer iD) {
-        this.iD = iD;
-    }
-
-    public Integer getBuildingId() {
-        return buildingId;
-    }
-
-    public void setBuildingId(Integer buildingId) {
-        this.buildingId = buildingId;
-    }
-
-    public Integer getAccessLevel() {
-        return accessLevel;
-    }
-
-    public void setAccessLevel(Integer accessLevel) {
-        this.accessLevel = accessLevel;
-    }
-
-    public Boolean getDirectAccess() {
-        return directAccess;
-    }
-
-    public void setDirectAccess(Boolean directAccess) {
-        this.directAccess = directAccess;
-    }
-
-    public Object getEndDate() {
-        return endDate;
-    }
-
-    public void setEndDate(Object endDate) {
-        this.endDate = endDate;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public List<Area> getAreas() {
-        return areas;
-    }
-
-    public void setAreas(List<Area> areas) {
-        this.areas = areas;
-    }
-
-    public List<Device> getDevices() {
-        return devices;
-    }
-
-    public void setDevices(List<Device> devices) {
-        this.devices = devices;
-    }
-
-    public Integer getMinTemperature() {
-        return minTemperature;
-    }
-
-    public void setMinTemperature(Integer minTemperature) {
-        this.minTemperature = minTemperature;
-    }
-
-    public Integer getMaxTemperature() {
-        return maxTemperature;
-    }
-
-    public void setMaxTemperature(Integer maxTemperature) {
-        this.maxTemperature = maxTemperature;
-    }
-
-    public Boolean getExpanded() {
-        return expanded;
-    }
-
-    public void setExpanded(Boolean expanded) {
-        this.expanded = expanded;
-    }
-}
diff --git a/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/HeatpumpDeviceStatus.java b/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/HeatpumpDeviceStatus.java
deleted file mode 100644 (file)
index edfaee5..0000000
+++ /dev/null
@@ -1,477 +0,0 @@
-/**
- * Copyright (c) 2010-2024 Contributors to the openHAB project
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- */
-package org.openhab.binding.melcloud.internal.api.json;
-
-import java.util.List;
-
-import com.google.gson.annotations.Expose;
-
-/**
- * {@link HeatpumpDeviceStatus} is the JSON data we receive from the MELCloud API
- * when performing a request to DeviceType 1.
- * Generated with jsonschema2pojo
- *
- * @author Wietse van Buitenen - Initial contribution
- */
-public class HeatpumpDeviceStatus {
-    @Expose
-    private Long effectiveFlags;
-
-    @Expose(serialize = false, deserialize = true)
-    private Object localIPAddress;
-
-    @Expose
-    private Double setTemperatureZone1;
-
-    @Expose
-    private Double setTemperatureZone2;
-
-    @Expose(serialize = false, deserialize = true)
-    private Double roomTemperatureZone1;
-
-    @Expose(serialize = false, deserialize = true)
-    private Double roomTemperatureZone2;
-
-    @Expose
-    private Integer operationMode;
-
-    @Expose
-    private Integer operationModeZone1;
-
-    @Expose
-    private Integer operationModeZone2;
-
-    @Expose(serialize = false, deserialize = true)
-    private List<WeatherObservation> weatherObservations = null;
-
-    @Expose(serialize = false, deserialize = true)
-    private Object errorMessage;
-
-    @Expose(serialize = false, deserialize = true)
-    private Integer errorCode;
-
-    @Expose
-    private Double setHeatFlowTemperatureZone1;
-
-    @Expose
-    private Double setHeatFlowTemperatureZone2;
-
-    @Expose
-    private Double setCoolFlowTemperatureZone1;
-
-    @Expose
-    private Double setCoolFlowTemperatureZone2;
-
-    @Expose
-    private Integer hCControlType;
-
-    @Expose(serialize = false, deserialize = true)
-    private Double tankWaterTemperature;
-
-    @Expose
-    private Double setTankWaterTemperature;
-
-    @Expose
-    private Boolean forcedHotWaterMode;
-
-    @Expose
-    private Integer unitStatus;
-
-    @Expose
-    private Double outdoorTemperature;
-
-    @Expose
-    private Boolean ecoHotWater;
-
-    @Expose
-    private Object zone1Name;
-
-    @Expose
-    private Object zone2Name;
-
-    @Expose
-    private Boolean holidayMode;
-
-    @Expose
-    private Boolean prohibitZone1;
-
-    @Expose
-    private Boolean prohibitZone2;
-
-    @Expose
-    private Boolean prohibitHotWater;
-
-    @Expose
-    private Integer temperatureIncrementOverride;
-
-    @Expose
-    private Boolean idleZone1;
-
-    @Expose
-    private Boolean idleZone2;
-
-    @Expose
-    private Integer deviceID;
-
-    @Expose
-    private Integer deviceType;
-
-    @Expose(serialize = false, deserialize = true)
-    private String lastCommunication;
-
-    @Expose(serialize = false, deserialize = true)
-    private String nextCommunication;
-
-    @Expose
-    private Boolean power;
-
-    @Expose(serialize = false, deserialize = true)
-    private Boolean hasPendingCommand;
-
-    @Expose(serialize = false, deserialize = true)
-    private Boolean offline;
-
-    @Expose
-    private Object scene;
-
-    @Expose
-    private Object sceneOwner;
-
-    public Long getEffectiveFlags() {
-        return effectiveFlags;
-    }
-
-    public void setEffectiveFlags(Long effectiveFlags) {
-        this.effectiveFlags = effectiveFlags;
-    }
-
-    public Object getLocalIPAddress() {
-        return localIPAddress;
-    }
-
-    public void setLocalIPAddress(Object localIPAddress) {
-        this.localIPAddress = localIPAddress;
-    }
-
-    public Double getSetTemperatureZone1() {
-        return setTemperatureZone1;
-    }
-
-    public void setSetTemperatureZone1(Double setTemperatureZone1) {
-        this.setTemperatureZone1 = setTemperatureZone1;
-    }
-
-    public Double getSetTemperatureZone2() {
-        return setTemperatureZone2;
-    }
-
-    public void setSetTemperatureZone2(Double setTemperatureZone2) {
-        this.setTemperatureZone2 = setTemperatureZone2;
-    }
-
-    public Double getRoomTemperatureZone1() {
-        return roomTemperatureZone1;
-    }
-
-    public void setRoomTemperatureZone1(Double roomTemperatureZone1) {
-        this.roomTemperatureZone1 = roomTemperatureZone1;
-    }
-
-    public Double getRoomTemperatureZone2() {
-        return roomTemperatureZone2;
-    }
-
-    public void setRoomTemperatureZone2(Double roomTemperatureZone2) {
-        this.roomTemperatureZone2 = roomTemperatureZone2;
-    }
-
-    public Integer getOperationMode() {
-        return operationMode;
-    }
-
-    public void setOperationMode(Integer operationMode) {
-        this.operationMode = operationMode;
-    }
-
-    public Integer getOperationModeZone1() {
-        return operationModeZone1;
-    }
-
-    public void setOperationModeZone1(Integer operationModeZone1) {
-        this.operationModeZone1 = operationModeZone1;
-    }
-
-    public Integer getOperationModeZone2() {
-        return operationModeZone2;
-    }
-
-    public void setOperationModeZone2(Integer operationModeZone2) {
-        this.operationModeZone2 = operationModeZone2;
-    }
-
-    public List<WeatherObservation> getWeatherObservations() {
-        return weatherObservations;
-    }
-
-    public void setWeatherObservations(List<WeatherObservation> weatherObservations) {
-        this.weatherObservations = weatherObservations;
-    }
-
-    public Object getErrorMessage() {
-        return errorMessage;
-    }
-
-    public void setErrorMessage(Object errorMessage) {
-        this.errorMessage = errorMessage;
-    }
-
-    public Integer getErrorCode() {
-        return errorCode;
-    }
-
-    public void setErrorCode(Integer errorCode) {
-        this.errorCode = errorCode;
-    }
-
-    public Double getSetHeatFlowTemperatureZone1() {
-        return setHeatFlowTemperatureZone1;
-    }
-
-    public void setSetHeatFlowTemperatureZone1(Double setHeatFlowTemperatureZone1) {
-        this.setHeatFlowTemperatureZone1 = setHeatFlowTemperatureZone1;
-    }
-
-    public Double getSetHeatFlowTemperatureZone2() {
-        return setHeatFlowTemperatureZone2;
-    }
-
-    public void setSetHeatFlowTemperatureZone2(Double setHeatFlowTemperatureZone2) {
-        this.setHeatFlowTemperatureZone2 = setHeatFlowTemperatureZone2;
-    }
-
-    public Double getSetCoolFlowTemperatureZone1() {
-        return setCoolFlowTemperatureZone1;
-    }
-
-    public void setSetCoolFlowTemperatureZone1(Double setCoolFlowTemperatureZone1) {
-        this.setCoolFlowTemperatureZone1 = setCoolFlowTemperatureZone1;
-    }
-
-    public Double getSetCoolFlowTemperatureZone2() {
-        return setCoolFlowTemperatureZone2;
-    }
-
-    public void setSetCoolFlowTemperatureZone2(Double setCoolFlowTemperatureZone2) {
-        this.setCoolFlowTemperatureZone2 = setCoolFlowTemperatureZone2;
-    }
-
-    public Integer getHCControlType() {
-        return hCControlType;
-    }
-
-    public void setHCControlType(Integer hCControlType) {
-        this.hCControlType = hCControlType;
-    }
-
-    public Double getTankWaterTemperature() {
-        return tankWaterTemperature;
-    }
-
-    public void setTankWaterTemperature(Double tankWaterTemperature) {
-        this.tankWaterTemperature = tankWaterTemperature;
-    }
-
-    public Double getSetTankWaterTemperature() {
-        return setTankWaterTemperature;
-    }
-
-    public void setSetTankWaterTemperature(Double setTankWaterTemperature) {
-        this.setTankWaterTemperature = setTankWaterTemperature;
-    }
-
-    public Boolean getForcedHotWaterMode() {
-        return forcedHotWaterMode;
-    }
-
-    public void setForcedHotWaterMode(Boolean forcedHotWaterMode) {
-        this.forcedHotWaterMode = forcedHotWaterMode;
-    }
-
-    public Integer getUnitStatus() {
-        return unitStatus;
-    }
-
-    public void setUnitStatus(Integer unitStatus) {
-        this.unitStatus = unitStatus;
-    }
-
-    public Double getOutdoorTemperature() {
-        return outdoorTemperature;
-    }
-
-    public void setOutdoorTemperature(Double outdoorTemperature) {
-        this.outdoorTemperature = outdoorTemperature;
-    }
-
-    public Boolean getEcoHotWater() {
-        return ecoHotWater;
-    }
-
-    public void setEcoHotWater(Boolean ecoHotWater) {
-        this.ecoHotWater = ecoHotWater;
-    }
-
-    public Object getZone1Name() {
-        return zone1Name;
-    }
-
-    public void setZone1Name(Object zone1Name) {
-        this.zone1Name = zone1Name;
-    }
-
-    public Object getZone2Name() {
-        return zone2Name;
-    }
-
-    public void setZone2Name(Object zone2Name) {
-        this.zone2Name = zone2Name;
-    }
-
-    public Boolean getHolidayMode() {
-        return holidayMode;
-    }
-
-    public void setHolidayMode(Boolean holidayMode) {
-        this.holidayMode = holidayMode;
-    }
-
-    public Boolean getProhibitZone1() {
-        return prohibitZone1;
-    }
-
-    public void setProhibitZone1(Boolean prohibitZone1) {
-        this.prohibitZone1 = prohibitZone1;
-    }
-
-    public Boolean getProhibitZone2() {
-        return prohibitZone2;
-    }
-
-    public void setProhibitZone2(Boolean prohibitZone2) {
-        this.prohibitZone2 = prohibitZone2;
-    }
-
-    public Boolean getProhibitHotWater() {
-        return prohibitHotWater;
-    }
-
-    public void setProhibitHotWater(Boolean prohibitHotWater) {
-        this.prohibitHotWater = prohibitHotWater;
-    }
-
-    public Integer getTemperatureIncrementOverride() {
-        return temperatureIncrementOverride;
-    }
-
-    public void setTemperatureIncrementOverride(Integer temperatureIncrementOverride) {
-        this.temperatureIncrementOverride = temperatureIncrementOverride;
-    }
-
-    public Boolean getIdleZone1() {
-        return idleZone1;
-    }
-
-    public void setIdleZone1(Boolean idleZone1) {
-        this.idleZone1 = idleZone1;
-    }
-
-    public Boolean getIdleZone2() {
-        return idleZone2;
-    }
-
-    public void setIdleZone2(Boolean idleZone2) {
-        this.idleZone2 = idleZone2;
-    }
-
-    public Integer getDeviceID() {
-        return deviceID;
-    }
-
-    public void setDeviceID(Integer deviceID) {
-        this.deviceID = deviceID;
-    }
-
-    public Integer getDeviceType() {
-        return deviceType;
-    }
-
-    public void setDeviceType(Integer deviceType) {
-        this.deviceType = deviceType;
-    }
-
-    public String getLastCommunication() {
-        return lastCommunication;
-    }
-
-    public void setLastCommunication(String lastCommunication) {
-        this.lastCommunication = lastCommunication;
-    }
-
-    public String getNextCommunication() {
-        return nextCommunication;
-    }
-
-    public void setNextCommunication(String nextCommunication) {
-        this.nextCommunication = nextCommunication;
-    }
-
-    public Boolean getPower() {
-        return power;
-    }
-
-    public void setPower(Boolean power) {
-        this.power = power;
-    }
-
-    public Boolean getHasPendingCommand() {
-        return hasPendingCommand;
-    }
-
-    public void setHasPendingCommand(Boolean hasPendingCommand) {
-        this.hasPendingCommand = hasPendingCommand;
-    }
-
-    public Boolean getOffline() {
-        return offline;
-    }
-
-    public void setOffline(Boolean offline) {
-        this.offline = offline;
-    }
-
-    public Object getScene() {
-        return scene;
-    }
-
-    public void setScene(Object scene) {
-        this.scene = scene;
-    }
-
-    public Object getSceneOwner() {
-        return sceneOwner;
-    }
-
-    public void setSceneOwner(Object sceneOwner) {
-        this.sceneOwner = sceneOwner;
-    }
-}
diff --git a/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/ListDevicesResponse.java b/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/ListDevicesResponse.java
deleted file mode 100644 (file)
index 1ff74bf..0000000
+++ /dev/null
@@ -1,445 +0,0 @@
-/**
- * Copyright (c) 2010-2024 Contributors to the openHAB project
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- */
-package org.openhab.binding.melcloud.internal.api.json;
-
-import com.google.gson.annotations.Expose;
-import com.google.gson.annotations.SerializedName;
-
-/**
- * The {@link ListDevicesResponse} is responsible of JSON data For MELCloud API
- * Response of Devices List.
- * Generated with jsonschema2pojo
- *
- * @author Luca Calcaterra - Initial contribution
- */
-public class ListDevicesResponse {
-
-    @Expose
-    private Integer iD;
-
-    @Expose
-    private String name;
-
-    @Expose
-    private String addressLine1;
-
-    @Expose
-    private Object addressLine2;
-
-    @Expose
-    private String city;
-
-    @Expose
-    private String postcode;
-
-    @Expose
-    private Double latitude;
-
-    @Expose
-    private Double longitude;
-
-    @Expose
-    private Object district;
-
-    @Expose
-    private Boolean fPDefined;
-
-    @Expose
-    private Boolean fPEnabled;
-
-    @Expose
-    private Integer fPMinTemperature;
-
-    @Expose
-    private Integer fPMaxTemperature;
-
-    @Expose
-    private Boolean hMDefined;
-
-    @Expose
-    private Boolean hMEnabled;
-
-    @Expose
-    private Object hMStartDate;
-
-    @Expose
-    private Object hMEndDate;
-
-    @Expose
-    private Integer buildingType;
-
-    @Expose
-    private Integer propertyType;
-
-    @Expose
-    private String dateBuilt;
-
-    @Expose
-    private Boolean hasGasSupply;
-
-    @Expose
-    private String locationLookupDate;
-
-    @Expose
-    private Integer country;
-
-    @Expose
-    private Integer timeZoneContinent;
-
-    @Expose
-    private Integer timeZoneCity;
-
-    @Expose
-    private Integer timeZone;
-
-    @Expose
-    private Integer location;
-
-    @Expose
-    private Boolean coolingDisabled;
-
-    @Expose
-    private Boolean expanded;
-
-    @Expose
-    private Structure structure;
-
-    @Expose
-    private Integer accessLevel;
-
-    @Expose
-    private Boolean directAccess;
-
-    @Expose
-    private Integer minTemperature;
-
-    @Expose
-    private Integer maxTemperature;
-
-    @Expose
-    private Object owner;
-
-    @Expose
-    private String endDate;
-
-    @SerializedName("iDateBuilt")
-    @Expose
-    private Object iDateBuilt;
-
-    @Expose
-    private QuantizedCoordinates quantizedCoordinates;
-
-    public Integer getID() {
-        return iD;
-    }
-
-    public void setID(Integer iD) {
-        this.iD = iD;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getAddressLine1() {
-        return addressLine1;
-    }
-
-    public void setAddressLine1(String addressLine1) {
-        this.addressLine1 = addressLine1;
-    }
-
-    public Object getAddressLine2() {
-        return addressLine2;
-    }
-
-    public void setAddressLine2(Object addressLine2) {
-        this.addressLine2 = addressLine2;
-    }
-
-    public String getCity() {
-        return city;
-    }
-
-    public void setCity(String city) {
-        this.city = city;
-    }
-
-    public String getPostcode() {
-        return postcode;
-    }
-
-    public void setPostcode(String postcode) {
-        this.postcode = postcode;
-    }
-
-    public Double getLatitude() {
-        return latitude;
-    }
-
-    public void setLatitude(Double latitude) {
-        this.latitude = latitude;
-    }
-
-    public Double getLongitude() {
-        return longitude;
-    }
-
-    public void setLongitude(Double longitude) {
-        this.longitude = longitude;
-    }
-
-    public Object getDistrict() {
-        return district;
-    }
-
-    public void setDistrict(Object district) {
-        this.district = district;
-    }
-
-    public Boolean getFPDefined() {
-        return fPDefined;
-    }
-
-    public void setFPDefined(Boolean fPDefined) {
-        this.fPDefined = fPDefined;
-    }
-
-    public Boolean getFPEnabled() {
-        return fPEnabled;
-    }
-
-    public void setFPEnabled(Boolean fPEnabled) {
-        this.fPEnabled = fPEnabled;
-    }
-
-    public Integer getFPMinTemperature() {
-        return fPMinTemperature;
-    }
-
-    public void setFPMinTemperature(Integer fPMinTemperature) {
-        this.fPMinTemperature = fPMinTemperature;
-    }
-
-    public Integer getFPMaxTemperature() {
-        return fPMaxTemperature;
-    }
-
-    public void setFPMaxTemperature(Integer fPMaxTemperature) {
-        this.fPMaxTemperature = fPMaxTemperature;
-    }
-
-    public Boolean getHMDefined() {
-        return hMDefined;
-    }
-
-    public void setHMDefined(Boolean hMDefined) {
-        this.hMDefined = hMDefined;
-    }
-
-    public Boolean getHMEnabled() {
-        return hMEnabled;
-    }
-
-    public void setHMEnabled(Boolean hMEnabled) {
-        this.hMEnabled = hMEnabled;
-    }
-
-    public Object getHMStartDate() {
-        return hMStartDate;
-    }
-
-    public void setHMStartDate(Object hMStartDate) {
-        this.hMStartDate = hMStartDate;
-    }
-
-    public Object getHMEndDate() {
-        return hMEndDate;
-    }
-
-    public void setHMEndDate(Object hMEndDate) {
-        this.hMEndDate = hMEndDate;
-    }
-
-    public Integer getBuildingType() {
-        return buildingType;
-    }
-
-    public void setBuildingType(Integer buildingType) {
-        this.buildingType = buildingType;
-    }
-
-    public Integer getPropertyType() {
-        return propertyType;
-    }
-
-    public void setPropertyType(Integer propertyType) {
-        this.propertyType = propertyType;
-    }
-
-    public String getDateBuilt() {
-        return dateBuilt;
-    }
-
-    public void setDateBuilt(String dateBuilt) {
-        this.dateBuilt = dateBuilt;
-    }
-
-    public Boolean getHasGasSupply() {
-        return hasGasSupply;
-    }
-
-    public void setHasGasSupply(Boolean hasGasSupply) {
-        this.hasGasSupply = hasGasSupply;
-    }
-
-    public String getLocationLookupDate() {
-        return locationLookupDate;
-    }
-
-    public void setLocationLookupDate(String locationLookupDate) {
-        this.locationLookupDate = locationLookupDate;
-    }
-
-    public Integer getCountry() {
-        return country;
-    }
-
-    public void setCountry(Integer country) {
-        this.country = country;
-    }
-
-    public Integer getTimeZoneContinent() {
-        return timeZoneContinent;
-    }
-
-    public void setTimeZoneContinent(Integer timeZoneContinent) {
-        this.timeZoneContinent = timeZoneContinent;
-    }
-
-    public Integer getTimeZoneCity() {
-        return timeZoneCity;
-    }
-
-    public void setTimeZoneCity(Integer timeZoneCity) {
-        this.timeZoneCity = timeZoneCity;
-    }
-
-    public Integer getTimeZone() {
-        return timeZone;
-    }
-
-    public void setTimeZone(Integer timeZone) {
-        this.timeZone = timeZone;
-    }
-
-    public Integer getLocation() {
-        return location;
-    }
-
-    public void setLocation(Integer location) {
-        this.location = location;
-    }
-
-    public Boolean getCoolingDisabled() {
-        return coolingDisabled;
-    }
-
-    public void setCoolingDisabled(Boolean coolingDisabled) {
-        this.coolingDisabled = coolingDisabled;
-    }
-
-    public Boolean getExpanded() {
-        return expanded;
-    }
-
-    public void setExpanded(Boolean expanded) {
-        this.expanded = expanded;
-    }
-
-    public Structure getStructure() {
-        return structure;
-    }
-
-    public void setStructure(Structure structure) {
-        this.structure = structure;
-    }
-
-    public Integer getAccessLevel() {
-        return accessLevel;
-    }
-
-    public void setAccessLevel(Integer accessLevel) {
-        this.accessLevel = accessLevel;
-    }
-
-    public Boolean getDirectAccess() {
-        return directAccess;
-    }
-
-    public void setDirectAccess(Boolean directAccess) {
-        this.directAccess = directAccess;
-    }
-
-    public Integer getMinTemperature() {
-        return minTemperature;
-    }
-
-    public void setMinTemperature(Integer minTemperature) {
-        this.minTemperature = minTemperature;
-    }
-
-    public Integer getMaxTemperature() {
-        return maxTemperature;
-    }
-
-    public void setMaxTemperature(Integer maxTemperature) {
-        this.maxTemperature = maxTemperature;
-    }
-
-    public Object getOwner() {
-        return owner;
-    }
-
-    public void setOwner(Object owner) {
-        this.owner = owner;
-    }
-
-    public String getEndDate() {
-        return endDate;
-    }
-
-    public void setEndDate(String endDate) {
-        this.endDate = endDate;
-    }
-
-    public Object getIDateBuilt() {
-        return iDateBuilt;
-    }
-
-    public void setIDateBuilt(Object iDateBuilt) {
-        this.iDateBuilt = iDateBuilt;
-    }
-
-    public QuantizedCoordinates getQuantizedCoordinates() {
-        return quantizedCoordinates;
-    }
-
-    public void setQuantizedCoordinates(QuantizedCoordinates quantizedCoordinates) {
-        this.quantizedCoordinates = quantizedCoordinates;
-    }
-}
diff --git a/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/LoginClientResponse.java b/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/LoginClientResponse.java
deleted file mode 100644 (file)
index c9e0ac0..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-/**
- * Copyright (c) 2010-2024 Contributors to the openHAB project
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- */
-package org.openhab.binding.melcloud.internal.api.json;
-
-import java.util.List;
-
-import com.google.gson.annotations.Expose;
-
-/**
- * The {@link LoginClientResponse} is responsible of JSON data For MELCloud API
- * Response Data of Login.
- * Generated with jsonschema2pojo
- *
- * @author Luca Calcaterra - Initial contribution
- */
-public class LoginClientResponse {
-
-    @Expose
-    private Object errorId;
-
-    @Expose
-    private Object errorMessage;
-
-    @Expose
-    private Integer loginStatus;
-
-    @Expose
-    private Integer userId;
-
-    @Expose
-    private Object randomKey;
-
-    @Expose
-    private Object appVersionAnnouncement;
-
-    @Expose
-    private LoginData loginData;
-
-    @Expose
-    private List<Object> listPendingInvite = null;
-
-    @Expose
-    private List<Object> listOwnershipChangeRequest = null;
-
-    @Expose
-    private List<Object> listPendingAnnouncement = null;
-
-    @Expose
-    private Integer loginMinutes;
-
-    @Expose
-    private Integer loginAttempts;
-
-    public Object getErrorId() {
-        return errorId;
-    }
-
-    public void setErrorId(Object errorId) {
-        this.errorId = errorId;
-    }
-
-    public Object getErrorMessage() {
-        return errorMessage;
-    }
-
-    public void setErrorMessage(Object errorMessage) {
-        this.errorMessage = errorMessage;
-    }
-
-    public Integer getLoginStatus() {
-        return loginStatus;
-    }
-
-    public void setLoginStatus(Integer loginStatus) {
-        this.loginStatus = loginStatus;
-    }
-
-    public Integer getUserId() {
-        return userId;
-    }
-
-    public void setUserId(Integer userId) {
-        this.userId = userId;
-    }
-
-    public Object getRandomKey() {
-        return randomKey;
-    }
-
-    public void setRandomKey(Object randomKey) {
-        this.randomKey = randomKey;
-    }
-
-    public Object getAppVersionAnnouncement() {
-        return appVersionAnnouncement;
-    }
-
-    public void setAppVersionAnnouncement(Object appVersionAnnouncement) {
-        this.appVersionAnnouncement = appVersionAnnouncement;
-    }
-
-    public LoginData getLoginData() {
-        return loginData;
-    }
-
-    public void setLoginData(LoginData loginData) {
-        this.loginData = loginData;
-    }
-
-    public List<Object> getListPendingInvite() {
-        return listPendingInvite;
-    }
-
-    public void setListPendingInvite(List<Object> listPendingInvite) {
-        this.listPendingInvite = listPendingInvite;
-    }
-
-    public List<Object> getListOwnershipChangeRequest() {
-        return listOwnershipChangeRequest;
-    }
-
-    public void setListOwnershipChangeRequest(List<Object> listOwnershipChangeRequest) {
-        this.listOwnershipChangeRequest = listOwnershipChangeRequest;
-    }
-
-    public List<Object> getListPendingAnnouncement() {
-        return listPendingAnnouncement;
-    }
-
-    public void setListPendingAnnouncement(List<Object> listPendingAnnouncement) {
-        this.listPendingAnnouncement = listPendingAnnouncement;
-    }
-
-    public Integer getLoginMinutes() {
-        return loginMinutes;
-    }
-
-    public void setLoginMinutes(Integer loginMinutes) {
-        this.loginMinutes = loginMinutes;
-    }
-
-    public Integer getLoginAttempts() {
-        return loginAttempts;
-    }
-
-    public void setLoginAttempts(Integer loginAttempts) {
-        this.loginAttempts = loginAttempts;
-    }
-}
diff --git a/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/LoginData.java b/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/LoginData.java
deleted file mode 100644 (file)
index 5c766be..0000000
+++ /dev/null
@@ -1,509 +0,0 @@
-/**
- * Copyright (c) 2010-2024 Contributors to the openHAB project
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- */
-package org.openhab.binding.melcloud.internal.api.json;
-
-import com.google.gson.annotations.Expose;
-
-/**
- * The {@link LoginData} is responsible of JSON data For MELCloud API
- * LoginData for Login Request.
- * Generated with jsonschema2pojo
- *
- * @author Luca Calcaterra - Initial contribution
- */
-public class LoginData {
-
-    @Expose
-    private String contextKey;
-
-    @Expose
-    private Integer client;
-
-    @Expose
-    private Integer terms;
-
-    @Expose
-    private Integer aL;
-
-    @Expose
-    private Integer mL;
-
-    @Expose
-    private Boolean cMI;
-
-    @Expose
-    private Boolean isStaff;
-
-    @Expose
-    private Boolean cUTF;
-
-    @Expose
-    private Boolean cAA;
-
-    @Expose
-    private Boolean receiveCountryNotifications;
-
-    @Expose
-    private Boolean receiveAllNotifications;
-
-    @Expose
-    private Boolean cACA;
-
-    @Expose
-    private Boolean cAGA;
-
-    @Expose
-    private Integer maximumDevices;
-
-    @Expose
-    private Boolean showDiagnostics;
-
-    @Expose
-    private Integer language;
-
-    @Expose
-    private Integer country;
-
-    @Expose
-    private Integer realClient;
-
-    @Expose
-    private String name;
-
-    @Expose
-    private Boolean useFahrenheit;
-
-    @Expose
-    private Integer duration;
-
-    @Expose
-    private String expiry;
-
-    @Expose
-    private Boolean cMSC;
-
-    @Expose
-    private Object partnerApplicationVersion;
-
-    @Expose
-    private Boolean emailSettingsReminderShown;
-
-    @Expose
-    private Integer emailUnitErrors;
-
-    @Expose
-    private Integer emailCommsErrors;
-
-    @Expose
-    private Boolean isImpersonated;
-
-    @Expose
-    private String languageCode;
-
-    @Expose
-    private String countryName;
-
-    @Expose
-    private String currencySymbol;
-
-    @Expose
-    private String supportEmailAddress;
-
-    @Expose
-    private String dateSeperator;
-
-    @Expose
-    private String timeSeperator;
-
-    @Expose
-    private String atwLogoFile;
-
-    @Expose
-    private Boolean dECCReport;
-
-    @Expose
-    private Boolean cSVReport1min;
-
-    @Expose
-    private Boolean hidePresetPanel;
-
-    @Expose
-    private Boolean emailSettingsReminderRequired;
-
-    @Expose
-    private Object termsText;
-
-    @Expose
-    private Boolean mapView;
-
-    @Expose
-    private Integer mapZoom;
-
-    @Expose
-    private Double mapLongitude;
-
-    @Expose
-    private Double mapLatitude;
-
-    public String getContextKey() {
-        return contextKey;
-    }
-
-    public void setContextKey(String contextKey) {
-        this.contextKey = contextKey;
-    }
-
-    public Integer getClient() {
-        return client;
-    }
-
-    public void setClient(Integer client) {
-        this.client = client;
-    }
-
-    public Integer getTerms() {
-        return terms;
-    }
-
-    public void setTerms(Integer terms) {
-        this.terms = terms;
-    }
-
-    public Integer getAL() {
-        return aL;
-    }
-
-    public void setAL(Integer aL) {
-        this.aL = aL;
-    }
-
-    public Integer getML() {
-        return mL;
-    }
-
-    public void setML(Integer mL) {
-        this.mL = mL;
-    }
-
-    public Boolean getCMI() {
-        return cMI;
-    }
-
-    public void setCMI(Boolean cMI) {
-        this.cMI = cMI;
-    }
-
-    public Boolean getIsStaff() {
-        return isStaff;
-    }
-
-    public void setIsStaff(Boolean isStaff) {
-        this.isStaff = isStaff;
-    }
-
-    public Boolean getCUTF() {
-        return cUTF;
-    }
-
-    public void setCUTF(Boolean cUTF) {
-        this.cUTF = cUTF;
-    }
-
-    public Boolean getCAA() {
-        return cAA;
-    }
-
-    public void setCAA(Boolean cAA) {
-        this.cAA = cAA;
-    }
-
-    public Boolean getReceiveCountryNotifications() {
-        return receiveCountryNotifications;
-    }
-
-    public void setReceiveCountryNotifications(Boolean receiveCountryNotifications) {
-        this.receiveCountryNotifications = receiveCountryNotifications;
-    }
-
-    public Boolean getReceiveAllNotifications() {
-        return receiveAllNotifications;
-    }
-
-    public void setReceiveAllNotifications(Boolean receiveAllNotifications) {
-        this.receiveAllNotifications = receiveAllNotifications;
-    }
-
-    public Boolean getCACA() {
-        return cACA;
-    }
-
-    public void setCACA(Boolean cACA) {
-        this.cACA = cACA;
-    }
-
-    public Boolean getCAGA() {
-        return cAGA;
-    }
-
-    public void setCAGA(Boolean cAGA) {
-        this.cAGA = cAGA;
-    }
-
-    public Integer getMaximumDevices() {
-        return maximumDevices;
-    }
-
-    public void setMaximumDevices(Integer maximumDevices) {
-        this.maximumDevices = maximumDevices;
-    }
-
-    public Boolean getShowDiagnostics() {
-        return showDiagnostics;
-    }
-
-    public void setShowDiagnostics(Boolean showDiagnostics) {
-        this.showDiagnostics = showDiagnostics;
-    }
-
-    public Integer getLanguage() {
-        return language;
-    }
-
-    public void setLanguage(Integer language) {
-        this.language = language;
-    }
-
-    public Integer getCountry() {
-        return country;
-    }
-
-    public void setCountry(Integer country) {
-        this.country = country;
-    }
-
-    public Integer getRealClient() {
-        return realClient;
-    }
-
-    public void setRealClient(Integer realClient) {
-        this.realClient = realClient;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public Boolean getUseFahrenheit() {
-        return useFahrenheit;
-    }
-
-    public void setUseFahrenheit(Boolean useFahrenheit) {
-        this.useFahrenheit = useFahrenheit;
-    }
-
-    public Integer getDuration() {
-        return duration;
-    }
-
-    public void setDuration(Integer duration) {
-        this.duration = duration;
-    }
-
-    public String getExpiry() {
-        return expiry;
-    }
-
-    public void setExpiry(String expiry) {
-        this.expiry = expiry;
-    }
-
-    public Boolean getCMSC() {
-        return cMSC;
-    }
-
-    public void setCMSC(Boolean cMSC) {
-        this.cMSC = cMSC;
-    }
-
-    public Object getPartnerApplicationVersion() {
-        return partnerApplicationVersion;
-    }
-
-    public void setPartnerApplicationVersion(Object partnerApplicationVersion) {
-        this.partnerApplicationVersion = partnerApplicationVersion;
-    }
-
-    public Boolean getEmailSettingsReminderShown() {
-        return emailSettingsReminderShown;
-    }
-
-    public void setEmailSettingsReminderShown(Boolean emailSettingsReminderShown) {
-        this.emailSettingsReminderShown = emailSettingsReminderShown;
-    }
-
-    public Integer getEmailUnitErrors() {
-        return emailUnitErrors;
-    }
-
-    public void setEmailUnitErrors(Integer emailUnitErrors) {
-        this.emailUnitErrors = emailUnitErrors;
-    }
-
-    public Integer getEmailCommsErrors() {
-        return emailCommsErrors;
-    }
-
-    public void setEmailCommsErrors(Integer emailCommsErrors) {
-        this.emailCommsErrors = emailCommsErrors;
-    }
-
-    public Boolean getIsImpersonated() {
-        return isImpersonated;
-    }
-
-    public void setIsImpersonated(Boolean isImpersonated) {
-        this.isImpersonated = isImpersonated;
-    }
-
-    public String getLanguageCode() {
-        return languageCode;
-    }
-
-    public void setLanguageCode(String languageCode) {
-        this.languageCode = languageCode;
-    }
-
-    public String getCountryName() {
-        return countryName;
-    }
-
-    public void setCountryName(String countryName) {
-        this.countryName = countryName;
-    }
-
-    public String getCurrencySymbol() {
-        return currencySymbol;
-    }
-
-    public void setCurrencySymbol(String currencySymbol) {
-        this.currencySymbol = currencySymbol;
-    }
-
-    public String getSupportEmailAddress() {
-        return supportEmailAddress;
-    }
-
-    public void setSupportEmailAddress(String supportEmailAddress) {
-        this.supportEmailAddress = supportEmailAddress;
-    }
-
-    public String getDateSeperator() {
-        return dateSeperator;
-    }
-
-    public void setDateSeperator(String dateSeperator) {
-        this.dateSeperator = dateSeperator;
-    }
-
-    public String getTimeSeperator() {
-        return timeSeperator;
-    }
-
-    public void setTimeSeperator(String timeSeperator) {
-        this.timeSeperator = timeSeperator;
-    }
-
-    public String getAtwLogoFile() {
-        return atwLogoFile;
-    }
-
-    public void setAtwLogoFile(String atwLogoFile) {
-        this.atwLogoFile = atwLogoFile;
-    }
-
-    public Boolean getDECCReport() {
-        return dECCReport;
-    }
-
-    public void setDECCReport(Boolean dECCReport) {
-        this.dECCReport = dECCReport;
-    }
-
-    public Boolean getCSVReport1min() {
-        return cSVReport1min;
-    }
-
-    public void setCSVReport1min(Boolean cSVReport1min) {
-        this.cSVReport1min = cSVReport1min;
-    }
-
-    public Boolean getHidePresetPanel() {
-        return hidePresetPanel;
-    }
-
-    public void setHidePresetPanel(Boolean hidePresetPanel) {
-        this.hidePresetPanel = hidePresetPanel;
-    }
-
-    public Boolean getEmailSettingsReminderRequired() {
-        return emailSettingsReminderRequired;
-    }
-
-    public void setEmailSettingsReminderRequired(Boolean emailSettingsReminderRequired) {
-        this.emailSettingsReminderRequired = emailSettingsReminderRequired;
-    }
-
-    public Object getTermsText() {
-        return termsText;
-    }
-
-    public void setTermsText(Object termsText) {
-        this.termsText = termsText;
-    }
-
-    public Boolean getMapView() {
-        return mapView;
-    }
-
-    public void setMapView(Boolean mapView) {
-        this.mapView = mapView;
-    }
-
-    public Integer getMapZoom() {
-        return mapZoom;
-    }
-
-    public void setMapZoom(Integer mapZoom) {
-        this.mapZoom = mapZoom;
-    }
-
-    public Double getMapLongitude() {
-        return mapLongitude;
-    }
-
-    public void setMapLongitude(Double mapLongitude) {
-        this.mapLongitude = mapLongitude;
-    }
-
-    public Double getMapLatitude() {
-        return mapLatitude;
-    }
-
-    public void setMapLatitude(Double mapLatitude) {
-        this.mapLatitude = mapLatitude;
-    }
-}
diff --git a/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/Preset.java b/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/Preset.java
deleted file mode 100644 (file)
index 6128872..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-/**
- * Copyright (c) 2010-2024 Contributors to the openHAB project
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- */
-package org.openhab.binding.melcloud.internal.api.json;
-
-import com.google.gson.annotations.Expose;
-
-/**
- * The {@link Preset} is responsible of JSON data For MELCloud API
- * Preset data
- * Generated with jsonschema2pojo
- *
- * @author Luca Calcaterra - Initial contribution
- */
-public class Preset {
-
-    @Expose
-    private Double setTemperature;
-
-    @Expose
-    private Boolean power;
-
-    @Expose
-    private Integer operationMode;
-
-    @Expose
-    private Integer vaneHorizontal;
-
-    @Expose
-    private Integer vaneVertical;
-
-    @Expose
-    private Integer fanSpeed;
-
-    @Expose
-    private Integer iD;
-
-    @Expose
-    private Integer client;
-
-    @Expose
-    private Integer deviceLocation;
-
-    @Expose
-    private Integer number;
-
-    @Expose
-    private String configuration;
-
-    @Expose
-    private String numberDescription;
-
-    public Double getSetTemperature() {
-        return setTemperature;
-    }
-
-    public void setSetTemperature(Double setTemperature) {
-        this.setTemperature = setTemperature;
-    }
-
-    public Boolean getPower() {
-        return power;
-    }
-
-    public void setPower(Boolean power) {
-        this.power = power;
-    }
-
-    public Integer getOperationMode() {
-        return operationMode;
-    }
-
-    public void setOperationMode(Integer operationMode) {
-        this.operationMode = operationMode;
-    }
-
-    public Integer getVaneHorizontal() {
-        return vaneHorizontal;
-    }
-
-    public void setVaneHorizontal(Integer vaneHorizontal) {
-        this.vaneHorizontal = vaneHorizontal;
-    }
-
-    public Integer getVaneVertical() {
-        return vaneVertical;
-    }
-
-    public void setVaneVertical(Integer vaneVertical) {
-        this.vaneVertical = vaneVertical;
-    }
-
-    public Integer getFanSpeed() {
-        return fanSpeed;
-    }
-
-    public void setFanSpeed(Integer fanSpeed) {
-        this.fanSpeed = fanSpeed;
-    }
-
-    public Integer getID() {
-        return iD;
-    }
-
-    public void setID(Integer iD) {
-        this.iD = iD;
-    }
-
-    public Integer getClient() {
-        return client;
-    }
-
-    public void setClient(Integer client) {
-        this.client = client;
-    }
-
-    public Integer getDeviceLocation() {
-        return deviceLocation;
-    }
-
-    public void setDeviceLocation(Integer deviceLocation) {
-        this.deviceLocation = deviceLocation;
-    }
-
-    public Integer getNumber() {
-        return number;
-    }
-
-    public void setNumber(Integer number) {
-        this.number = number;
-    }
-
-    public String getConfiguration() {
-        return configuration;
-    }
-
-    public void setConfiguration(String configuration) {
-        this.configuration = configuration;
-    }
-
-    public String getNumberDescription() {
-        return numberDescription;
-    }
-
-    public void setNumberDescription(String numberDescription) {
-        this.numberDescription = numberDescription;
-    }
-}
diff --git a/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/QuantizedCoordinates.java b/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/QuantizedCoordinates.java
deleted file mode 100644 (file)
index c3b1ca3..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * Copyright (c) 2010-2024 Contributors to the openHAB project
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- */
-package org.openhab.binding.melcloud.internal.api.json;
-
-import com.google.gson.annotations.Expose;
-
-/**
- * The {@link QuantizedCoordinates} is responsible of JSON data For MELCloud API
- * QuantizedCoordinates data
- * Generated with jsonschema2pojo
- *
- * @author Luca Calcaterra - Initial contribution
- */
-public class QuantizedCoordinates {
-
-    @Expose
-    private Double latitude;
-
-    @Expose
-    private Double longitude;
-
-    public Double getLatitude() {
-        return latitude;
-    }
-
-    public void setLatitude(Double latitude) {
-        this.latitude = latitude;
-    }
-
-    public Double getLongitude() {
-        return longitude;
-    }
-
-    public void setLongitude(Double longitude) {
-        this.longitude = longitude;
-    }
-}
diff --git a/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/Structure.java b/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/Structure.java
deleted file mode 100644 (file)
index b48cafe..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * Copyright (c) 2010-2024 Contributors to the openHAB project
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- */
-package org.openhab.binding.melcloud.internal.api.json;
-
-import java.util.List;
-
-import com.google.gson.annotations.Expose;
-
-/**
- * The {@link Structure} is responsible of JSON data For MELCloud API
- * Structure Data
- * Generated with jsonschema2pojo
- *
- * @author Luca Calcaterra - Initial contribution
- * @author Wietse van Buitenen - Add Floor and Area
- */
-public class Structure {
-
-    @Expose
-    private List<Floor> floors = null;
-
-    @Expose
-    private List<Area> areas = null;
-
-    @Expose
-    private List<Device> devices = null;
-
-    @Expose
-    private List<Object> clients = null;
-
-    public List<Floor> getFloors() {
-        return floors;
-    }
-
-    public void setFloors(List<Floor> floors) {
-        this.floors = floors;
-    }
-
-    public List<Area> getAreas() {
-        return areas;
-    }
-
-    public void setAreas(List<Area> areas) {
-        this.areas = areas;
-    }
-
-    public List<Device> getDevices() {
-        return devices;
-    }
-
-    public void setDevices(List<Device> devices) {
-        this.devices = devices;
-    }
-
-    public List<Object> getClients() {
-        return clients;
-    }
-
-    public void setClients(List<Object> clients) {
-        this.clients = clients;
-    }
-}
diff --git a/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/WeatherObservation.java b/bundles/org.openhab.binding.melcloud/src/main/java/org/openhab/binding/melcloud/internal/api/json/WeatherObservation.java
deleted file mode 100644 (file)
index 4e16722..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-/**
- * Copyright (c) 2010-2024 Contributors to the openHAB project
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- */
-package org.openhab.binding.melcloud.internal.api.json;
-
-import com.google.gson.annotations.Expose;
-
-/**
- * The {@link Structure} is responsible of JSON data For MELCloud API
- * WeatherObservation Data
- * Generated with jsonschema2pojo
- *
- * @author Luca Calcaterra - Initial contribution
- */
-public class WeatherObservation {
-
-    @Expose
-    private String date;
-
-    @Expose
-    private String sunrise;
-
-    @Expose
-    private String sunset;
-
-    @Expose
-    private Integer condition;
-
-    @Expose
-    private Integer iD;
-
-    @Expose
-    private Integer humidity;
-
-    @Expose
-    private Integer temperature;
-
-    @Expose
-    private String icon;
-
-    @Expose
-    private String conditionName;
-
-    @Expose
-    private Integer day;
-
-    @Expose
-    private Integer weatherType;
-
-    public String getDate() {
-        return date;
-    }
-
-    public void setDate(String date) {
-        this.date = date;
-    }
-
-    public String getSunrise() {
-        return sunrise;
-    }
-
-    public void setSunrise(String sunrise) {
-        this.sunrise = sunrise;
-    }
-
-    public String getSunset() {
-        return sunset;
-    }
-
-    public void setSunset(String sunset) {
-        this.sunset = sunset;
-    }
-
-    public Integer getCondition() {
-        return condition;
-    }
-
-    public void setCondition(Integer condition) {
-        this.condition = condition;
-    }
-
-    public Integer getID() {
-        return iD;
-    }
-
-    public void setID(Integer iD) {
-        this.iD = iD;
-    }
-
-    public Integer getHumidity() {
-        return humidity;
-    }
-
-    public void setHumidity(Integer humidity) {
-        this.humidity = humidity;
-    }
-
-    public Integer getTemperature() {
-        return temperature;
-    }
-
-    public void setTemperature(Integer temperature) {
-        this.temperature = temperature;
-    }
-
-    public String getIcon() {
-        return icon;
-    }
-
-    public void setIcon(String icon) {
-        this.icon = icon;
-    }
-
-    public String getConditionName() {
-        return conditionName;
-    }
-
-    public void setConditionName(String conditionName) {
-        this.conditionName = conditionName;
-    }
-
-    public Integer getDay() {
-        return day;
-    }
-
-    public void setDay(Integer day) {
-        this.day = day;
-    }
-
-    public Integer getWeatherType() {
-        return weatherType;
-    }
-
-    public void setWeatherType(Integer weatherType) {
-        this.weatherType = weatherType;
-    }
-}
index d48592d907e1e54856626a25dd591f743a5b05dd..b568913376d51563551428f57f4f23e0c0d4e734 100644 (file)
  */
 package org.openhab.binding.melcloud.internal.config;
 
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
+
 /**
  * Config class for an A.C. device.
  *
  * @author Pauli Anttila - Initial Contribution
  *
  */
+@NonNullByDefault
 public class AcDeviceConfig {
 
-    public Integer deviceID;
-    public Integer buildingID;
-    public Integer pollingInterval;
+    public Integer deviceID = 0;
+    public @Nullable Integer buildingID;
+    public Integer pollingInterval = 360;
 
     @Override
     public String toString() {
index e6f41dd5bd0c5528230e370170ed338fd3e892b6..cbb5081d42c4ccb45d5cbef61fd8322af3d7d553 100644 (file)
  */
 package org.openhab.binding.melcloud.internal.config;
 
+import org.eclipse.jdt.annotation.NonNullByDefault;
+
 /**
  * Config class for MELCloud account parameters.
  *
  * @author Pauli Anttila - Initial Contribution
  *
  */
+@NonNullByDefault
 public class AccountConfig {
 
-    public String username;
-    public String password;
-    public int language;
+    public String username = "";
+    public String password = "";
+    public int language = 0;
 
     @Override
     public String toString() {
@@ -30,9 +33,6 @@ public class AccountConfig {
     }
 
     private String getPasswordForPrinting() {
-        if (password != null) {
-            return password.isEmpty() ? "<empty>" : "*********";
-        }
-        return "<null>";
+        return password.isEmpty() ? "<empty>" : "*********";
     }
 }
index 6fdd0eea0498a33c94c40b1d794d7b5704505492..f3abda22cafc21f519443402188b26fb94bb7737 100644 (file)
  */
 package org.openhab.binding.melcloud.internal.config;
 
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
+
 /**
  * Config class for a Heatpump device.
  *
  * @author Wietse van Buitenen - Initial Contribution
  *
  */
+@NonNullByDefault
 public class HeatpumpDeviceConfig {
-    public Integer deviceID;
-    public Integer buildingID;
-    public Integer pollingInterval;
+    public Integer deviceID = 0;
+    public @Nullable Integer buildingID;
+    public Integer pollingInterval = 360;
 
     @Override
     public String toString() {
index 9134d8482e7b94374d7eeaaceaf2b83dd1222705..76e2b51c3ef059095c8d23f3cbf1879e9365f21a 100644 (file)
@@ -20,9 +20,10 @@ import java.util.Map;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 
-import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
 import org.openhab.binding.melcloud.internal.MelCloudBindingConstants;
-import org.openhab.binding.melcloud.internal.api.json.Device;
+import org.openhab.binding.melcloud.internal.api.dto.Device;
 import org.openhab.binding.melcloud.internal.exceptions.MelCloudCommException;
 import org.openhab.binding.melcloud.internal.exceptions.MelCloudLoginException;
 import org.openhab.binding.melcloud.internal.handler.MelCloudAccountHandler;
@@ -43,14 +44,15 @@ import org.slf4j.LoggerFactory;
  * @author Pauli Anttila - Refactoring
  * @author Wietse van Buitenen - Check device type, added heatpump device
  */
+@NonNullByDefault
 @Component(scope = ServiceScope.PROTOTYPE, service = MelCloudDiscoveryService.class)
-public class MelCloudDiscoveryService extends AbstractThingHandlerDiscoveryService<@NonNull MelCloudAccountHandler> {
+public class MelCloudDiscoveryService extends AbstractThingHandlerDiscoveryService<MelCloudAccountHandler> {
     private final Logger logger = LoggerFactory.getLogger(MelCloudDiscoveryService.class);
 
     private static final String PROPERTY_DEVICE_ID = "deviceID";
     private static final int DISCOVER_TIMEOUT_SECONDS = 10;
 
-    private ScheduledFuture<?> scanTask;
+    private @Nullable ScheduledFuture<?> scanTask;
 
     /**
      * Creates a MelCloudDiscoveryService with enabled autostart.
@@ -67,7 +69,8 @@ public class MelCloudDiscoveryService extends AbstractThingHandlerDiscoveryServi
 
     @Override
     protected void startScan() {
-        if (this.scanTask != null) {
+        ScheduledFuture<?> scanTask = this.scanTask;
+        if (scanTask != null) {
             scanTask.cancel(true);
         }
         this.scanTask = scheduler.schedule(() -> discoverDevices(), 0, TimeUnit.SECONDS);
@@ -77,8 +80,9 @@ public class MelCloudDiscoveryService extends AbstractThingHandlerDiscoveryServi
     protected void stopScan() {
         super.stopScan();
 
-        if (this.scanTask != null) {
-            this.scanTask.cancel(true);
+        ScheduledFuture<?> scanTask = this.scanTask;
+        if (scanTask != null) {
+            scanTask.cancel(true);
             this.scanTask = null;
         }
     }
@@ -88,7 +92,7 @@ public class MelCloudDiscoveryService extends AbstractThingHandlerDiscoveryServi
         try {
             List<Device> deviceList = thingHandler.getDeviceList();
 
-            if (deviceList == null) {
+            if (deviceList.isEmpty()) {
                 logger.debug("No devices found");
             } else {
                 ThingUID bridgeUID = thingHandler.getThing().getUID();
index d9a03628a26b245ca0813c6e37816dc489dc54be..eb58b173c583896e51e78a87170ce3f3c0e51c9d 100644 (file)
  */
 package org.openhab.binding.melcloud.internal.exceptions;
 
+import org.eclipse.jdt.annotation.NonNullByDefault;
+
 /**
  * Exception to encapsulate any issues communicating with MELCloud.
  *
  * @author Pauli Anttila - Initial Contribution
  */
+@NonNullByDefault
 public class MelCloudCommException extends Exception {
     private static final long serialVersionUID = 1L;
 
index 7f8cf58941d04fae48b3930e0a725fd261c40711..4a58af4646311190e19a32fc2bddef929ff2a46a 100644 (file)
  */
 package org.openhab.binding.melcloud.internal.exceptions;
 
+import org.eclipse.jdt.annotation.NonNullByDefault;
+
 /**
  * Exception to encapsulate any login issues with MELCloud.
  *
  * @author Pauli Anttila - Initial Contribution
  */
+@NonNullByDefault
 public class MelCloudLoginException extends Exception {
     private static final long serialVersionUID = 1L;
 
index 1414b2322e37047ba2f450950260297201e48300..33f3859f65b272902274e49609052431b9f8a5ca 100644 (file)
@@ -15,15 +15,16 @@ package org.openhab.binding.melcloud.internal.handler;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
-import java.util.Optional;
 import java.util.Set;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
 import org.openhab.binding.melcloud.internal.api.MelCloudConnection;
-import org.openhab.binding.melcloud.internal.api.json.Device;
-import org.openhab.binding.melcloud.internal.api.json.DeviceStatus;
-import org.openhab.binding.melcloud.internal.api.json.HeatpumpDeviceStatus;
+import org.openhab.binding.melcloud.internal.api.dto.Device;
+import org.openhab.binding.melcloud.internal.api.dto.DeviceStatus;
+import org.openhab.binding.melcloud.internal.api.dto.HeatpumpDeviceStatus;
 import org.openhab.binding.melcloud.internal.config.AccountConfig;
 import org.openhab.binding.melcloud.internal.discovery.MelCloudDiscoveryService;
 import org.openhab.binding.melcloud.internal.exceptions.MelCloudCommException;
@@ -47,14 +48,15 @@ import org.slf4j.LoggerFactory;
  * @author Pauli Anttila - Refactoring
  * @author Wietse van Buitenen - Return all devices, added heatpump device
  */
+@NonNullByDefault
 public class MelCloudAccountHandler extends BaseBridgeHandler {
     private final Logger logger = LoggerFactory.getLogger(MelCloudAccountHandler.class);
 
-    private MelCloudConnection connection;
-    private List<Device> devices;
-    private ScheduledFuture<?> connectionCheckTask;
-    private AccountConfig config;
-    private boolean loginCredentialError;
+    private MelCloudConnection connection = new MelCloudConnection();
+    private List<Device> devices = Collections.emptyList();
+    private @Nullable ScheduledFuture<?> connectionCheckTask;
+    private AccountConfig config = new AccountConfig();
+    private boolean loginCredentialError = false;
 
     public MelCloudAccountHandler(Bridge bridge) {
         super(bridge);
@@ -69,8 +71,6 @@ public class MelCloudAccountHandler extends BaseBridgeHandler {
     public void initialize() {
         logger.debug("Initializing MELCloud account handler.");
         config = getConfigAs(AccountConfig.class);
-        connection = new MelCloudConnection();
-        devices = Collections.emptyList();
         loginCredentialError = false;
         startConnectionCheck();
     }
@@ -79,9 +79,7 @@ public class MelCloudAccountHandler extends BaseBridgeHandler {
     public void dispose() {
         logger.debug("Running dispose()");
         stopConnectionCheck();
-        connection = null;
         devices = Collections.emptyList();
-        config = null;
     }
 
     @Override
@@ -102,6 +100,7 @@ public class MelCloudAccountHandler extends BaseBridgeHandler {
             throw new MelCloudLoginException("Connection to MELCloud can't be opened because of wrong credentials");
         }
         logger.debug("Initializing connection to MELCloud");
+
         updateStatus(ThingStatus.OFFLINE);
         try {
             connection.login(config.username, config.password, config.language);
@@ -139,10 +138,10 @@ public class MelCloudAccountHandler extends BaseBridgeHandler {
         }
     }
 
-    public DeviceStatus fetchDeviceStatus(int deviceId, Optional<Integer> buildingId)
+    public DeviceStatus fetchDeviceStatus(int deviceId, @Nullable Integer buildingId)
             throws MelCloudCommException, MelCloudLoginException {
         connectIfNotConnected();
-        int bid = buildingId.orElse(findBuildingId(deviceId));
+        int bid = buildingId != null ? buildingId : findBuildingId(deviceId);
 
         try {
             return connection.fetchDeviceStatus(deviceId, bid);
@@ -165,10 +164,10 @@ public class MelCloudAccountHandler extends BaseBridgeHandler {
         }
     }
 
-    public HeatpumpDeviceStatus fetchHeatpumpDeviceStatus(int deviceId, Optional<Integer> buildingId)
+    public HeatpumpDeviceStatus fetchHeatpumpDeviceStatus(int deviceId, @Nullable Integer buildingId)
             throws MelCloudCommException, MelCloudLoginException {
         connectIfNotConnected();
-        int bid = buildingId.orElse(findBuildingId(deviceId));
+        int bid = buildingId != null ? buildingId : findBuildingId(deviceId);
 
         try {
             return connection.fetchHeatpumpDeviceStatus(deviceId, bid);
@@ -180,15 +179,13 @@ public class MelCloudAccountHandler extends BaseBridgeHandler {
     }
 
     private int findBuildingId(int deviceId) throws MelCloudCommException {
-        if (devices != null) {
-            return devices.stream().filter(d -> d.getDeviceID() == deviceId).findFirst().orElseThrow(
-                    () -> new MelCloudCommException(String.format("Can't find building id for device id %s", deviceId)))
-                    .getBuildingID();
-        }
-        throw new MelCloudCommException(String.format("Can't find building id for device id %s", deviceId));
+        return devices.stream().filter(d -> d.getDeviceID() == deviceId).findFirst().orElseThrow(
+                () -> new MelCloudCommException(String.format("Can't find building id for device id %s", deviceId)))
+                .getBuildingID();
     }
 
     private void startConnectionCheck() {
+        ScheduledFuture<?> connectionCheckTask = this.connectionCheckTask;
         if (connectionCheckTask == null || connectionCheckTask.isCancelled()) {
             logger.debug("Start periodic connection check");
             Runnable runnable = () -> {
@@ -207,17 +204,18 @@ public class MelCloudAccountHandler extends BaseBridgeHandler {
                     }
                 }
             };
-            connectionCheckTask = scheduler.scheduleWithFixedDelay(runnable, 0, 300, TimeUnit.SECONDS);
+            this.connectionCheckTask = scheduler.scheduleWithFixedDelay(runnable, 0, 300, TimeUnit.SECONDS);
         } else {
             logger.debug("Connection check task already running");
         }
     }
 
     private void stopConnectionCheck() {
+        ScheduledFuture<?> connectionCheckTask = this.connectionCheckTask;
         if (connectionCheckTask != null) {
             logger.debug("Stop periodic connection check");
             connectionCheckTask.cancel(true);
-            connectionCheckTask = null;
+            this.connectionCheckTask = null;
         }
     }
 }
index 0448b8c46c94318d4ed183c9b17a0d9af0448c65..6a43e759f8fb5106a6672c58c9c40cfd948076dd 100644 (file)
@@ -22,13 +22,14 @@ import java.time.ZoneId;
 import java.time.ZoneOffset;
 import java.time.ZonedDateTime;
 import java.time.format.DateTimeFormatter;
-import java.util.Optional;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 
 import javax.measure.quantity.Temperature;
 
-import org.openhab.binding.melcloud.internal.api.json.DeviceStatus;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
+import org.openhab.binding.melcloud.internal.api.dto.DeviceStatus;
 import org.openhab.binding.melcloud.internal.config.AcDeviceConfig;
 import org.openhab.binding.melcloud.internal.exceptions.MelCloudCommException;
 import org.openhab.binding.melcloud.internal.exceptions.MelCloudLoginException;
@@ -46,6 +47,7 @@ import org.openhab.core.thing.ThingStatus;
 import org.openhab.core.thing.ThingStatusDetail;
 import org.openhab.core.thing.ThingStatusInfo;
 import org.openhab.core.thing.binding.BaseThingHandler;
+import org.openhab.core.thing.binding.BridgeHandler;
 import org.openhab.core.thing.binding.ThingHandler;
 import org.openhab.core.types.Command;
 import org.openhab.core.types.RefreshType;
@@ -59,7 +61,7 @@ import org.slf4j.LoggerFactory;
  * @author Luca Calcaterra - Initial contribution
  * @author Pauli Anttila - Refactoring
  */
-
+@NonNullByDefault
 public class MelCloudDeviceHandler extends BaseThingHandler {
 
     private static final int EFFECTIVE_FLAG_POWER = 0x01;
@@ -70,10 +72,10 @@ public class MelCloudDeviceHandler extends BaseThingHandler {
     private static final int EFFECTIVE_FLAG_VANE_HORIZONTAL = 0x100;
 
     private final Logger logger = LoggerFactory.getLogger(MelCloudDeviceHandler.class);
-    private AcDeviceConfig config;
-    private MelCloudAccountHandler melCloudHandler;
-    private DeviceStatus deviceStatus;
-    private ScheduledFuture<?> refreshTask;
+    private AcDeviceConfig config = new AcDeviceConfig();
+    private @Nullable MelCloudAccountHandler melCloudHandler;
+    private @Nullable DeviceStatus deviceStatus;
+    private @Nullable ScheduledFuture<?> refreshTask;
 
     public MelCloudDeviceHandler(Thing thing) {
         super(thing);
@@ -84,7 +86,7 @@ public class MelCloudDeviceHandler extends BaseThingHandler {
         logger.debug("Initializing {} handler.", getThing().getThingTypeUID());
 
         Bridge bridge = getBridge();
-        if (bridge == null) {
+        if (bridge == null || !(bridge.getHandler() instanceof BridgeHandler bridgeHandler)) {
             updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, "Bridge Not set");
             return;
         }
@@ -92,15 +94,16 @@ public class MelCloudDeviceHandler extends BaseThingHandler {
         config = getConfigAs(AcDeviceConfig.class);
         logger.debug("A.C. device config: {}", config);
 
-        initializeBridge(bridge.getHandler(), bridge.getStatus());
+        initializeBridge(bridgeHandler, bridge.getStatus());
     }
 
     @Override
     public void dispose() {
         logger.debug("Running dispose()");
+        ScheduledFuture<?> refreshTask = this.refreshTask;
         if (refreshTask != null) {
             refreshTask.cancel(true);
-            refreshTask = null;
+            this.refreshTask = null;
         }
         melCloudHandler = null;
     }
@@ -109,25 +112,21 @@ public class MelCloudDeviceHandler extends BaseThingHandler {
     public void bridgeStatusChanged(ThingStatusInfo bridgeStatusInfo) {
         logger.debug("bridgeStatusChanged {} for thing {}", bridgeStatusInfo, getThing().getUID());
         Bridge bridge = getBridge();
-        if (bridge != null) {
-            initializeBridge(bridge.getHandler(), bridgeStatusInfo.getStatus());
+        if (bridge != null && bridge.getHandler() instanceof BridgeHandler bridgeHandler) {
+            initializeBridge(bridgeHandler, bridgeStatusInfo.getStatus());
         }
     }
 
     private void initializeBridge(ThingHandler thingHandler, ThingStatus bridgeStatus) {
         logger.debug("initializeBridge {} for thing {}", bridgeStatus, getThing().getUID());
 
-        if (thingHandler != null && bridgeStatus != null) {
-            melCloudHandler = (MelCloudAccountHandler) thingHandler;
+        melCloudHandler = (MelCloudAccountHandler) thingHandler;
 
-            if (bridgeStatus == ThingStatus.ONLINE) {
-                updateStatus(ThingStatus.ONLINE);
-                startAutomaticRefresh();
-            } else {
-                updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE);
-            }
+        if (bridgeStatus == ThingStatus.ONLINE) {
+            updateStatus(ThingStatus.ONLINE);
+            startAutomaticRefresh();
         } else {
-            updateStatus(ThingStatus.OFFLINE);
+            updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE);
         }
     }
 
@@ -139,12 +138,12 @@ public class MelCloudDeviceHandler extends BaseThingHandler {
             logger.debug("Refresh command not supported");
             return;
         }
-
+        MelCloudAccountHandler melCloudHandler = this.melCloudHandler;
         if (melCloudHandler == null) {
             logger.warn("No connection to MELCloud available, ignoring command");
             return;
         }
-
+        DeviceStatus deviceStatus = this.deviceStatus;
         if (deviceStatus == null) {
             logger.info("No initial data available, bridge is probably offline. Ignoring command");
             return;
@@ -229,18 +228,19 @@ public class MelCloudDeviceHandler extends BaseThingHandler {
     }
 
     private void startAutomaticRefresh() {
+        ScheduledFuture<?> refreshTask = this.refreshTask;
         if (refreshTask == null || refreshTask.isCancelled()) {
-            refreshTask = scheduler.scheduleWithFixedDelay(this::getDeviceDataAndUpdateChannels, 1,
+            this.refreshTask = scheduler.scheduleWithFixedDelay(this::getDeviceDataAndUpdateChannels, 1,
                     config.pollingInterval, TimeUnit.SECONDS);
         }
     }
 
     private void getDeviceDataAndUpdateChannels() {
-        if (melCloudHandler.isConnected()) {
+        MelCloudAccountHandler melCloudHandler = this.melCloudHandler;
+        if (melCloudHandler != null && melCloudHandler.isConnected()) {
             logger.debug("Update device '{}' channels", getThing().getThingTypeUID());
             try {
-                DeviceStatus newDeviceStatus = melCloudHandler.fetchDeviceStatus(config.deviceID,
-                        Optional.ofNullable(config.buildingID));
+                DeviceStatus newDeviceStatus = melCloudHandler.fetchDeviceStatus(config.deviceID, config.buildingID);
                 updateChannels(newDeviceStatus);
             } catch (MelCloudLoginException e) {
                 logger.debug("Login error occurred during device '{}' polling, reason {}. ",
@@ -255,7 +255,7 @@ public class MelCloudDeviceHandler extends BaseThingHandler {
     }
 
     private synchronized void updateChannels(DeviceStatus newDeviceStatus) {
-        deviceStatus = newDeviceStatus;
+        DeviceStatus deviceStatus = this.deviceStatus = newDeviceStatus;
         for (Channel channel : getThing().getChannels()) {
             updateChannels(channel.getUID().getId(), deviceStatus);
         }
index 276679a8a3d833486ad1122ea991424696e903b6..c34cfb2536d47434bf87b097b64bc8d18a5a7cd8 100644 (file)
@@ -22,13 +22,14 @@ import java.time.ZoneId;
 import java.time.ZoneOffset;
 import java.time.ZonedDateTime;
 import java.time.format.DateTimeFormatter;
-import java.util.Optional;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 
 import javax.measure.quantity.Temperature;
 
-import org.openhab.binding.melcloud.internal.api.json.HeatpumpDeviceStatus;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
+import org.openhab.binding.melcloud.internal.api.dto.HeatpumpDeviceStatus;
 import org.openhab.binding.melcloud.internal.config.HeatpumpDeviceConfig;
 import org.openhab.binding.melcloud.internal.exceptions.MelCloudCommException;
 import org.openhab.binding.melcloud.internal.exceptions.MelCloudLoginException;
@@ -45,6 +46,7 @@ import org.openhab.core.thing.ThingStatus;
 import org.openhab.core.thing.ThingStatusDetail;
 import org.openhab.core.thing.ThingStatusInfo;
 import org.openhab.core.thing.binding.BaseThingHandler;
+import org.openhab.core.thing.binding.BridgeHandler;
 import org.openhab.core.thing.binding.ThingHandler;
 import org.openhab.core.types.Command;
 import org.openhab.core.types.RefreshType;
@@ -57,16 +59,17 @@ import org.slf4j.LoggerFactory;
  *
  * @author Wietse van Buitenen - Initial contribution
  */
+@NonNullByDefault
 public class MelCloudHeatpumpDeviceHandler extends BaseThingHandler {
     private static final long EFFECTIVE_FLAG_POWER = 1L;
     private static final long EFFECTIVE_FLAG_TEMPERATURE_ZONE1 = 8589934720L;
     private static final long EFFECTIVE_FLAG_HOTWATER = 65536L;
 
     private final Logger logger = LoggerFactory.getLogger(MelCloudHeatpumpDeviceHandler.class);
-    private HeatpumpDeviceConfig config;
-    private MelCloudAccountHandler melCloudHandler;
-    private HeatpumpDeviceStatus heatpumpDeviceStatus;
-    private ScheduledFuture<?> refreshTask;
+    private HeatpumpDeviceConfig config = new HeatpumpDeviceConfig();
+    private @Nullable MelCloudAccountHandler melCloudHandler;
+    private @Nullable HeatpumpDeviceStatus heatpumpDeviceStatus;
+    private @Nullable ScheduledFuture<?> refreshTask;
 
     public MelCloudHeatpumpDeviceHandler(Thing thing) {
         super(thing);
@@ -77,7 +80,7 @@ public class MelCloudHeatpumpDeviceHandler extends BaseThingHandler {
         logger.debug("Initializing {} handler.", getThing().getThingTypeUID());
 
         Bridge bridge = getBridge();
-        if (bridge == null) {
+        if (bridge == null || !(bridge.getHandler() instanceof BridgeHandler bridgeHandler)) {
             updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, "Bridge Not set");
             return;
         }
@@ -85,15 +88,16 @@ public class MelCloudHeatpumpDeviceHandler extends BaseThingHandler {
         config = getConfigAs(HeatpumpDeviceConfig.class);
         logger.debug("Heatpump device config: {}", config);
 
-        initializeBridge(bridge.getHandler(), bridge.getStatus());
+        initializeBridge(bridgeHandler, bridge.getStatus());
     }
 
     @Override
     public void dispose() {
         logger.debug("Running dispose()");
+        ScheduledFuture<?> refreshTask = this.refreshTask;
         if (refreshTask != null) {
             refreshTask.cancel(true);
-            refreshTask = null;
+            this.refreshTask = null;
         }
         melCloudHandler = null;
     }
@@ -102,25 +106,21 @@ public class MelCloudHeatpumpDeviceHandler extends BaseThingHandler {
     public void bridgeStatusChanged(ThingStatusInfo bridgeStatusInfo) {
         logger.debug("bridgeStatusChanged {} for thing {}", bridgeStatusInfo, getThing().getUID());
         Bridge bridge = getBridge();
-        if (bridge != null) {
-            initializeBridge(bridge.getHandler(), bridgeStatusInfo.getStatus());
+        if (bridge != null && bridge.getHandler() instanceof BridgeHandler bridgeHandler) {
+            initializeBridge(bridgeHandler, bridgeStatusInfo.getStatus());
         }
     }
 
     private void initializeBridge(ThingHandler thingHandler, ThingStatus bridgeStatus) {
         logger.debug("initializeBridge {} for thing {}", bridgeStatus, getThing().getUID());
 
-        if (thingHandler != null && bridgeStatus != null) {
-            melCloudHandler = (MelCloudAccountHandler) thingHandler;
+        melCloudHandler = (MelCloudAccountHandler) thingHandler;
 
-            if (bridgeStatus == ThingStatus.ONLINE) {
-                updateStatus(ThingStatus.ONLINE);
-                startAutomaticRefresh();
-            } else {
-                updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE);
-            }
+        if (bridgeStatus == ThingStatus.ONLINE) {
+            updateStatus(ThingStatus.ONLINE);
+            startAutomaticRefresh();
         } else {
-            updateStatus(ThingStatus.OFFLINE);
+            updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE);
         }
     }
 
@@ -133,11 +133,12 @@ public class MelCloudHeatpumpDeviceHandler extends BaseThingHandler {
             return;
         }
 
+        MelCloudAccountHandler melCloudHandler = this.melCloudHandler;
         if (melCloudHandler == null) {
             logger.warn("No connection to MELCloud available, ignoring command");
             return;
         }
-
+        HeatpumpDeviceStatus heatpumpDeviceStatus = this.heatpumpDeviceStatus;
         if (heatpumpDeviceStatus == null) {
             logger.info("No initial data available, bridge is probably offline. Ignoring command");
             return;
@@ -207,18 +208,20 @@ public class MelCloudHeatpumpDeviceHandler extends BaseThingHandler {
     }
 
     private void startAutomaticRefresh() {
+        ScheduledFuture<?> refreshTask = this.refreshTask;
         if (refreshTask == null || refreshTask.isCancelled()) {
-            refreshTask = scheduler.scheduleWithFixedDelay(this::getDeviceDataAndUpdateChannels, 1,
+            this.refreshTask = scheduler.scheduleWithFixedDelay(this::getDeviceDataAndUpdateChannels, 1,
                     config.pollingInterval, TimeUnit.SECONDS);
         }
     }
 
     private void getDeviceDataAndUpdateChannels() {
-        if (melCloudHandler.isConnected()) {
+        MelCloudAccountHandler melCloudHandler = this.melCloudHandler;
+        if (melCloudHandler != null && melCloudHandler.isConnected()) {
             logger.debug("Update device '{}' channels", getThing().getThingTypeUID());
             try {
                 HeatpumpDeviceStatus newHeatpumpDeviceStatus = melCloudHandler
-                        .fetchHeatpumpDeviceStatus(config.deviceID, Optional.ofNullable(config.buildingID));
+                        .fetchHeatpumpDeviceStatus(config.deviceID, config.buildingID);
                 updateChannels(newHeatpumpDeviceStatus);
             } catch (MelCloudLoginException e) {
                 logger.debug("Login error occurred during device '{}' polling, reason {}. ",
@@ -233,7 +236,7 @@ public class MelCloudHeatpumpDeviceHandler extends BaseThingHandler {
     }
 
     private synchronized void updateChannels(HeatpumpDeviceStatus newHeatpumpDeviceStatus) {
-        heatpumpDeviceStatus = newHeatpumpDeviceStatus;
+        HeatpumpDeviceStatus heatpumpDeviceStatus = this.heatpumpDeviceStatus = newHeatpumpDeviceStatus;
         for (Channel channel : getThing().getChannels()) {
             updateChannels(channel.getUID().getId(), heatpumpDeviceStatus);
         }