From 82b7f17009d720b636bd861d19a5f4700c394724 Mon Sep 17 00:00:00 2001 From: Dan Cunningham Date: Sat, 10 Dec 2022 15:57:24 -0800 Subject: [PATCH] [hydrawise] fixes null pointer error for some sprinkler controllers Signed-off-by: Dan Cunningham --- .../internal/handler/HydrawiseControllerHandler.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/bundles/org.openhab.binding.hydrawise/src/main/java/org/openhab/binding/hydrawise/internal/handler/HydrawiseControllerHandler.java b/bundles/org.openhab.binding.hydrawise/src/main/java/org/openhab/binding/hydrawise/internal/handler/HydrawiseControllerHandler.java index 0bbd87d9ea9a1..cef55b8610f7f 100644 --- a/bundles/org.openhab.binding.hydrawise/src/main/java/org/openhab/binding/hydrawise/internal/handler/HydrawiseControllerHandler.java +++ b/bundles/org.openhab.binding.hydrawise/src/main/java/org/openhab/binding/hydrawise/internal/handler/HydrawiseControllerHandler.java @@ -25,6 +25,7 @@ import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.Objects; import java.util.concurrent.atomic.AtomicReference; import javax.measure.quantity.Speed; @@ -258,8 +259,7 @@ public void onData(List controllers) { // update values with what the cloud tells us even though the controller may be offline if (!controller.status.online) { updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - String.format("Controller Offline: %s last seen %s", controller.status.summary, - secondsToDateTime(controller.status.lastContact.timestamp))); + "Service reports controller as offline"); } else if (getThing().getStatus() != ThingStatus.ONLINE) { updateStatus(ThingStatus.ONLINE); } @@ -277,7 +277,9 @@ private void updateController(Controller controller) { updateGroupState(CHANNEL_GROUP_CONTROLLER_SYSTEM, CHANNEL_CONTROLLER_SUMMARY, new StringType(controller.status.summary)); updateGroupState(CHANNEL_GROUP_CONTROLLER_SYSTEM, CHANNEL_CONTROLLER_LAST_CONTACT, - secondsToDateTime(controller.status.lastContact.timestamp)); + Objects.nonNull(controller.status.lastContact) + ? secondsToDateTime(controller.status.lastContact.timestamp) + : UnDefType.NULL); } private void updateZones(List zones) {