From 97d64a156b96b23e5960a2e72063133ec3e35622 Mon Sep 17 00:00:00 2001 From: jimtng <2554958+jimtng@users.noreply.github.com> Date: Sat, 2 Mar 2024 03:43:02 +1000 Subject: [PATCH] Add numericState and unit to StateDTO (#4123) * Add numericState to StateDTO Signed-off-by: Jimmy Tanagra --- .../io/rest/sse/internal/SseItemStatesEventBuilder.java | 8 ++++++++ .../openhab/core/io/rest/sse/internal/dto/StateDTO.java | 2 ++ 2 files changed, 10 insertions(+) diff --git a/bundles/org.openhab.core.io.rest.sse/src/main/java/org/openhab/core/io/rest/sse/internal/SseItemStatesEventBuilder.java b/bundles/org.openhab.core.io.rest.sse/src/main/java/org/openhab/core/io/rest/sse/internal/SseItemStatesEventBuilder.java index 840f675f0..1cda27283 100644 --- a/bundles/org.openhab.core.io.rest.sse/src/main/java/org/openhab/core/io/rest/sse/internal/SseItemStatesEventBuilder.java +++ b/bundles/org.openhab.core.io.rest.sse/src/main/java/org/openhab/core/io/rest/sse/internal/SseItemStatesEventBuilder.java @@ -31,6 +31,7 @@ import org.openhab.core.items.Item; import org.openhab.core.items.ItemNotFoundException; import org.openhab.core.items.ItemRegistry; import org.openhab.core.library.types.DateTimeType; +import org.openhab.core.library.types.DecimalType; import org.openhab.core.library.types.QuantityType; import org.openhab.core.service.StartLevelService; import org.openhab.core.transform.TransformationException; @@ -87,6 +88,13 @@ public class SseItemStatesEventBuilder { if (stateDto.state != null && !stateDto.state.equals(displayState)) { stateDto.displayState = displayState; } + if (item.getState() instanceof DecimalType decimalState) { + stateDto.numericState = decimalState.floatValue(); + } + if (item.getState() instanceof QuantityType quantityState) { + stateDto.numericState = quantityState.floatValue(); + stateDto.unit = quantityState.getUnit().toString(); + } payload.put(itemName, stateDto); } catch (ItemNotFoundException e) { if (startLevelService.getStartLevel() >= StartLevelService.STARTLEVEL_MODEL) { diff --git a/bundles/org.openhab.core.io.rest.sse/src/main/java/org/openhab/core/io/rest/sse/internal/dto/StateDTO.java b/bundles/org.openhab.core.io.rest.sse/src/main/java/org/openhab/core/io/rest/sse/internal/dto/StateDTO.java index 865bcdec5..b8c789cd2 100644 --- a/bundles/org.openhab.core.io.rest.sse/src/main/java/org/openhab/core/io/rest/sse/internal/dto/StateDTO.java +++ b/bundles/org.openhab.core.io.rest.sse/src/main/java/org/openhab/core/io/rest/sse/internal/dto/StateDTO.java @@ -20,6 +20,8 @@ package org.openhab.core.io.rest.sse.internal.dto; public class StateDTO { public String state; public String displayState; + public Number numericState; + public String unit; public String type;