diff --git a/bundles/org.openhab.core/src/main/java/org/openhab/core/internal/i18n/I18nProviderImpl.java b/bundles/org.openhab.core/src/main/java/org/openhab/core/internal/i18n/I18nProviderImpl.java index 2a0ed9627f..3950bee399 100644 --- a/bundles/org.openhab.core/src/main/java/org/openhab/core/internal/i18n/I18nProviderImpl.java +++ b/bundles/org.openhab.core/src/main/java/org/openhab/core/internal/i18n/I18nProviderImpl.java @@ -75,6 +75,7 @@ import org.openhab.core.library.dimension.DataAmount; import org.openhab.core.library.dimension.DataTransferRate; import org.openhab.core.library.dimension.Density; import org.openhab.core.library.dimension.ElectricConductivity; +import org.openhab.core.library.dimension.EmissionIntensity; import org.openhab.core.library.dimension.EnergyPrice; import org.openhab.core.library.dimension.Intensity; import org.openhab.core.library.dimension.RadiationSpecificActivity; @@ -411,6 +412,7 @@ public class I18nProviderImpl addDefaultUnit(dimensionMap, ElectricInductance.class, Units.HENRY); addDefaultUnit(dimensionMap, ElectricPotential.class, Units.VOLT); addDefaultUnit(dimensionMap, ElectricResistance.class, Units.OHM); + addDefaultUnit(dimensionMap, EmissionIntensity.class, Units.GRAM_PER_KILOWATT_HOUR); addDefaultUnit(dimensionMap, Energy.class, Units.KILOWATT_HOUR); addDefaultUnit(dimensionMap, Force.class, Units.NEWTON); addDefaultUnit(dimensionMap, Frequency.class, Units.HERTZ); diff --git a/bundles/org.openhab.core/src/main/java/org/openhab/core/library/dimension/EmissionIntensity.java b/bundles/org.openhab.core/src/main/java/org/openhab/core/library/dimension/EmissionIntensity.java new file mode 100644 index 0000000000..07811f8258 --- /dev/null +++ b/bundles/org.openhab.core/src/main/java/org/openhab/core/library/dimension/EmissionIntensity.java @@ -0,0 +1,27 @@ +/** + * Copyright (c) 2010-2024 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.core.library.dimension; + +import javax.measure.Quantity; + +import org.eclipse.jdt.annotation.NonNullByDefault; + +/** + * Define emission intensity type (basic unit is g/kWh) + * See Wikipedia + * + * @author Jacob Laursen - Initial contribution + */ +@NonNullByDefault +public interface EmissionIntensity extends Quantity { +} diff --git a/bundles/org.openhab.core/src/main/java/org/openhab/core/library/unit/Units.java b/bundles/org.openhab.core/src/main/java/org/openhab/core/library/unit/Units.java index aaf3ef4fb8..824d531f80 100644 --- a/bundles/org.openhab.core/src/main/java/org/openhab/core/library/unit/Units.java +++ b/bundles/org.openhab.core/src/main/java/org/openhab/core/library/unit/Units.java @@ -55,6 +55,7 @@ import org.openhab.core.library.dimension.DataAmount; import org.openhab.core.library.dimension.DataTransferRate; import org.openhab.core.library.dimension.Density; import org.openhab.core.library.dimension.ElectricConductivity; +import org.openhab.core.library.dimension.EmissionIntensity; import org.openhab.core.library.dimension.Intensity; import org.openhab.core.library.dimension.RadiationSpecificActivity; import org.openhab.core.library.dimension.VolumetricFlowRate; @@ -131,6 +132,8 @@ public final class Units extends CustomUnits { new ProductUnit<>(tech.units.indriya.unit.Units.WATT.multiply(tech.units.indriya.unit.Units.HOUR))); public static final Unit KILOWATT_HOUR = addUnit(MetricPrefix.KILO(WATT_HOUR)); public static final Unit MEGAWATT_HOUR = addUnit(MetricPrefix.MEGA(WATT_HOUR)); + public static final Unit GRAM_PER_KILOWATT_HOUR = addUnit( + new ProductUnit<>(tech.units.indriya.unit.Units.GRAM.divide(KILOWATT_HOUR))); public static final Unit VAR = addUnit(new AlternateUnit<>(tech.units.indriya.unit.Units.WATT, "var")); public static final Unit KILOVAR = addUnit(MetricPrefix.KILO(VAR)); public static final Unit VAR_HOUR = addUnit( @@ -261,6 +264,7 @@ public final class Units extends CustomUnits { SimpleUnitFormat.getInstance().label(DEGREE_ANGLE, "°"); SimpleUnitFormat.getInstance().label(DEUTSCHE_HAERTE, "°dH"); SimpleUnitFormat.getInstance().label(DOBSON_UNIT, "DU"); + SimpleUnitFormat.getInstance().label(GRAM_PER_KILOWATT_HOUR, "g/kWh"); SimpleUnitFormat.getInstance().label(GIGABYTE, "GB"); SimpleUnitFormat.getInstance().label(GIBIBYTE, "GiB"); SimpleUnitFormat.getInstance().alias(GIBIBYTE, "Gio"); diff --git a/bundles/org.openhab.core/src/test/java/org/openhab/core/library/unit/UnitsTest.java b/bundles/org.openhab.core/src/test/java/org/openhab/core/library/unit/UnitsTest.java index a0913a978f..74ef456bb0 100644 --- a/bundles/org.openhab.core/src/test/java/org/openhab/core/library/unit/UnitsTest.java +++ b/bundles/org.openhab.core/src/test/java/org/openhab/core/library/unit/UnitsTest.java @@ -111,6 +111,11 @@ public class UnitsTest { assertThat(Units.MILLIMETRE_OF_MERCURY.toString(), is("mmHg")); } + @Test + public void testGramPerKiloWattHourUnitSymbol() { + assertThat(Units.GRAM_PER_KILOWATT_HOUR.toString(), is("g/kWh")); + } + @Test public void testPascal2mmHgConversion() { Quantity pascal = Quantities.getQuantity(new BigDecimal("133.322368"), SIUnits.PASCAL);