diff --git a/plugins/hal-vendor-ecosense/src/se/hal/plugin/vendor/ecosense/EcoSenseCloudAPIClient.java b/plugins/hal-vendor-ecosense/src/se/hal/plugin/vendor/ecosense/EcoSenseCloudAPIClient.java index 8e5e11ff..c0aaa34b 100644 --- a/plugins/hal-vendor-ecosense/src/se/hal/plugin/vendor/ecosense/EcoSenseCloudAPIClient.java +++ b/plugins/hal-vendor-ecosense/src/se/hal/plugin/vendor/ecosense/EcoSenseCloudAPIClient.java @@ -40,10 +40,11 @@ import zutil.parser.json.JSONWriter; import java.io.IOException; import java.net.MalformedURLException; -import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.ZoneOffset; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; @@ -92,7 +93,9 @@ public class EcoSenseCloudAPIClient { cognitoClient.close(); } - public EcoSenseDevice getDevices() { + public List getDevices() { + List devices = new ArrayList<>(); + try { if (ObjectUtil.isEmpty(idToken)) { authenticate(); @@ -153,7 +156,7 @@ public class EcoSenseCloudAPIClient { logger.log(Level.WARNING, "Was unable to parse timestamp from EcoSense API.", e); } - return ecoSenseDevice; + devices.add(ecoSenseDevice); } } catch (MalformedURLException e) { throw new RuntimeException(e); @@ -162,7 +165,7 @@ public class EcoSenseCloudAPIClient { throw new RuntimeException(e); } - return null; + return devices; } public class EcoSenseDevice { diff --git a/plugins/hal-vendor-ecosense/src/se/hal/plugin/vendor/ecosense/EcoSenseController.java b/plugins/hal-vendor-ecosense/src/se/hal/plugin/vendor/ecosense/EcoSenseController.java index 8d0d5d78..365c10b0 100644 --- a/plugins/hal-vendor-ecosense/src/se/hal/plugin/vendor/ecosense/EcoSenseController.java +++ b/plugins/hal-vendor-ecosense/src/se/hal/plugin/vendor/ecosense/EcoSenseController.java @@ -77,19 +77,21 @@ public class EcoSenseController implements HalSensorController, Runnable, HalDae public void run() { try { if (!ObjectUtil.isEmpty(ecoSenseClient)) { - EcoSenseCloudAPIClient.EcoSenseDevice apiResponse = ecoSenseClient.getDevices(); - if (apiResponse == null) { - logger.warning("Received empty response from EcoSense API."); + List apiResponse = ecoSenseClient.getDevices(); + if (apiResponse.isEmpty()) { + logger.info("Received no devices from EcoSense API."); return; } - EccoCubeRadonSensorConfig radonSensor = new EccoCubeRadonSensorConfig(); - radonSensor.setSerialNumber(apiResponse.serialNumber); + for (EcoSenseCloudAPIClient.EcoSenseDevice device : apiResponse) { + EccoCubeRadonSensorConfig radonSensor = new EccoCubeRadonSensorConfig(); + radonSensor.setSerialNumber(device.serialNumber); - RadonSensorData radonSensorData = new RadonSensorData(apiResponse.radonLevel, apiResponse.lastRadonUpdateTime); + RadonSensorData radonSensorData = new RadonSensorData(device.radonLevel, device.lastRadonUpdateTime); - if (deviceReportListener != null) { - deviceReportListener.reportReceived(radonSensor, radonSensorData); + if (deviceReportListener != null) { + deviceReportListener.reportReceived(radonSensor, radonSensorData); + } } } } catch (Exception e) {