]> git.basschouten.com Git - openhab-addons.git/commitdiff
[rrd4j] Fix unit retrieval for group items (#17054)
authorJ-N-K <github@klug.nrw>
Sun, 14 Jul 2024 10:18:06 +0000 (12:18 +0200)
committerGitHub <noreply@github.com>
Sun, 14 Jul 2024 10:18:06 +0000 (12:18 +0200)
Reported on the forum

Signed-off-by: Jan N. Klug <github@klug.nrw>
bundles/org.openhab.persistence.rrd4j/src/main/java/org/openhab/persistence/rrd4j/internal/RRD4jPersistenceService.java

index 3d8abb48ba3da104325aaa3c9092aedbdb3f8621..ed3d3d10d9103f68bff043be8e750f2c285859a7 100644 (file)
@@ -443,6 +443,9 @@ public class RRD4jPersistenceService implements QueryablePersistenceService {
         Unit<?> unit = null;
         try {
             item = itemRegistry.getItem(itemName);
+            if (item instanceof GroupItem groupItem) {
+                item = groupItem.getBaseItem();
+            }
             if (item instanceof NumberItem numberItem) {
                 // we already retrieve the unit here once as it is a very costly operation,
                 // see https://github.com/openhab/openhab-addons/issues/8928
@@ -631,11 +634,14 @@ public class RRD4jPersistenceService implements QueryablePersistenceService {
         }
     }
 
+    /**
+     * Get the state Mapper for a given item
+     *
+     * @param item the item (in case of a group item, the base item has to be supplied)
+     * @param unit the unit to use
+     * @return the state mapper
+     */
     private <Q extends Quantity<Q>> DoubleFunction<State> toStateMapper(@Nullable Item item, @Nullable Unit<Q> unit) {
-        if (item instanceof GroupItem groupItem) {
-            item = groupItem.getBaseItem();
-        }
-
         if (item instanceof SwitchItem && !(item instanceof DimmerItem)) {
             return (value) -> OnOffType.from(value != 0.0d);
         } else if (item instanceof ContactItem) {