]> git.basschouten.com Git - openhab-addons.git/commitdiff
Implement TimeSeriesProfile (#15873)
authorJacob Laursen <jacob-github@vindvejr.dk>
Sat, 11 Nov 2023 12:30:52 +0000 (13:30 +0100)
committerGitHub <noreply@github.com>
Sat, 11 Nov 2023 12:30:52 +0000 (13:30 +0100)
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
bundles/org.openhab.transform.vat/src/main/java/org/openhab/transform/vat/internal/profile/VATTransformationProfile.java

index d95813227aec5bf8f0c0205ebf22555a2d701965..60b8bed26fe4561a1a7f251d79a0c69e849eb045 100644 (file)
@@ -23,12 +23,13 @@ import org.openhab.core.library.types.QuantityType;
 import org.openhab.core.thing.profiles.ProfileCallback;
 import org.openhab.core.thing.profiles.ProfileContext;
 import org.openhab.core.thing.profiles.ProfileTypeUID;
-import org.openhab.core.thing.profiles.StateProfile;
+import org.openhab.core.thing.profiles.TimeSeriesProfile;
 import org.openhab.core.transform.TransformationException;
 import org.openhab.core.transform.TransformationHelper;
 import org.openhab.core.transform.TransformationService;
 import org.openhab.core.types.Command;
 import org.openhab.core.types.State;
+import org.openhab.core.types.TimeSeries;
 import org.openhab.core.types.Type;
 import org.openhab.core.types.UnDefType;
 import org.openhab.transform.vat.internal.config.VATConfig;
@@ -41,7 +42,7 @@ import org.slf4j.LoggerFactory;
  * @author Jacob Laursen - Initial contribution
  */
 @NonNullByDefault
-public class VATTransformationProfile implements StateProfile {
+public class VATTransformationProfile implements TimeSeriesProfile {
 
     private final Logger logger = LoggerFactory.getLogger(VATTransformationProfile.class);
 
@@ -83,6 +84,14 @@ public class VATTransformationProfile implements StateProfile {
         callback.sendUpdate((State) transformState(state));
     }
 
+    @Override
+    public void onTimeSeriesFromHandler(TimeSeries timeSeries) {
+        TimeSeries transformedTimeSeries = new TimeSeries(timeSeries.getPolicy());
+        timeSeries.getStates()
+                .forEach(entry -> transformedTimeSeries.add(entry.timestamp(), (State) transformState(entry.state())));
+        callback.sendTimeSeries(transformedTimeSeries);
+    }
+
     private Type transformState(Type state) {
         String result = state.toFullString();
         String percentage = getVATPercentage();