]> git.basschouten.com Git - openhab-addons.git/commitdiff
[surepetcare] Check for null before updating pet location channels (#11235)
authorMaarten Blokker <1915355+maarten-blokker@users.noreply.github.com>
Sun, 19 Sep 2021 09:40:16 +0000 (11:40 +0200)
committerGitHub <noreply@github.com>
Sun, 19 Sep 2021 09:40:16 +0000 (11:40 +0200)
fixes #11234

Signed-off-by: Maarten Blokker <maarten.blokker@outlook.com>
bundles/org.openhab.binding.surepetcare/src/main/java/org/openhab/binding/surepetcare/internal/handler/SurePetcarePetHandler.java

index ec1fa5b67f01c30123e58c963a1fdac563d913d3..94c82326daf31e2f4cf550d09f8754d8c2f5e524 100644 (file)
@@ -164,6 +164,21 @@ public class SurePetcarePetHandler extends SurePetcareBaseObjectHandler {
                     if (loc.since != null) {
                         updateState(PET_CHANNEL_LOCATION_CHANGED, new DateTimeType(loc.since));
                     }
+
+                    if (loc.deviceId != null) {
+                        SurePetcareDevice device = petcareAPI.getDevice(loc.deviceId.toString());
+                        if (device != null) {
+                            updateState(PET_CHANNEL_LOCATION_CHANGED_THROUGH, new StringType(device.name));
+                        }
+                    } else if (loc.userId != null) {
+                        SurePetcareHousehold household = petcareAPI.getHousehold(pet.householdId.toString());
+                        if (household != null) {
+                            Long userId = loc.userId;
+                            household.users.stream().map(user -> user.user).filter(user -> userId.equals(user.userId))
+                                    .forEach(user -> updateState(PET_CHANNEL_LOCATION_CHANGED_THROUGH,
+                                            new StringType(user.userName)));
+                        }
+                    }
                 }
                 updateState(PET_CHANNEL_DATE_OF_BIRTH, pet.dateOfBirth == null ? UnDefType.UNDEF
                         : new DateTimeType(pet.dateOfBirth.atStartOfDay(ZoneId.systemDefault())));
@@ -175,20 +190,6 @@ public class SurePetcarePetHandler extends SurePetcareBaseObjectHandler {
                         updateState(PET_CHANNEL_TAG_IDENTIFIER, new StringType(tag.tag));
                     }
                 }
-                if (pet.status.activity.deviceId != null) {
-                    SurePetcareDevice device = petcareAPI.getDevice(pet.status.activity.deviceId.toString());
-                    if (device != null) {
-                        updateState(PET_CHANNEL_LOCATION_CHANGED_THROUGH, new StringType(device.name));
-                    }
-                } else if (pet.status.activity.userId != null) {
-                    SurePetcareHousehold household = petcareAPI.getHousehold(pet.householdId.toString());
-                    if (household != null) {
-                        Long userId = pet.status.activity.userId;
-                        household.users.stream().map(user -> user.user).filter(user -> userId.equals(user.userId))
-                                .forEach(user -> updateState(PET_CHANNEL_LOCATION_CHANGED_THROUGH,
-                                        new StringType(user.userName)));
-                    }
-                }
                 SurePetcarePetFeeding feeding = pet.status.feeding;
                 if (feeding != null) {
                     SurePetcareDevice device = petcareAPI.getDevice(feeding.deviceId.toString());