diff --git a/bundles/org.openhab.binding.awattar/README.md b/bundles/org.openhab.binding.awattar/README.md index f68bbd6c6fa..0e04e848d61 100644 --- a/bundles/org.openhab.binding.awattar/README.md +++ b/bundles/org.openhab.binding.awattar/README.md @@ -36,6 +36,7 @@ Auto discovery is not supported. | basePrice | The net(!) base price you have to pay for every kWh. Optional, but you most probably want to set it based on you delivery contract. | | timeZone | The time zone the hour definitions of the things below refer to. Default is `CET`, as it corresponds to the aWATTar API. It is strongly recommended not to change this. However, if you do so, be aware that the prices delivered by the API will not cover a whole calendar day in this timezone. **Advanced** | | country | The country prices should be received for. Use `DE` for Germany or `AT` for Austria. `DE` is the default. | +| serviceFee | The service fee in percent. Will be added to the total price. Will be calculated on top of the absolute price per hour. Default is `0`. | ### Prices Thing @@ -108,7 +109,7 @@ All prices are available in each of the following channel groups: awattar.things: ```java -Bridge awattar:bridge:bridge1 "aWATTar Bridge" [ country="DE", vatPercent="19", basePrice="17.22"] { +Bridge awattar:bridge:bridge1 "aWATTar Bridge" [ country="DE", vatPercent="19", basePrice="17.22", serviceFee="3" ] { Thing prices price1 "aWATTar Price" [] // The car should be loaded for 4 hours during the night Thing bestprice carloader "Car Loader" [ rangeStart="22", rangeDuration="8", length="4", consecutive="true" ] diff --git a/bundles/org.openhab.binding.awattar/src/main/java/org/openhab/binding/awattar/internal/AwattarBridgeConfiguration.java b/bundles/org.openhab.binding.awattar/src/main/java/org/openhab/binding/awattar/internal/AwattarBridgeConfiguration.java index dcc0b405b99..5a009e0fe03 100644 --- a/bundles/org.openhab.binding.awattar/src/main/java/org/openhab/binding/awattar/internal/AwattarBridgeConfiguration.java +++ b/bundles/org.openhab.binding.awattar/src/main/java/org/openhab/binding/awattar/internal/AwattarBridgeConfiguration.java @@ -23,5 +23,6 @@ import org.eclipse.jdt.annotation.NonNullByDefault; public class AwattarBridgeConfiguration { public double basePrice; public double vatPercent; + public double serviceFee; public String country = ""; } diff --git a/bundles/org.openhab.binding.awattar/src/main/java/org/openhab/binding/awattar/internal/AwattarPrice.java b/bundles/org.openhab.binding.awattar/src/main/java/org/openhab/binding/awattar/internal/AwattarPrice.java index f7c24c46283..618577d4f32 100644 --- a/bundles/org.openhab.binding.awattar/src/main/java/org/openhab/binding/awattar/internal/AwattarPrice.java +++ b/bundles/org.openhab.binding.awattar/src/main/java/org/openhab/binding/awattar/internal/AwattarPrice.java @@ -23,8 +23,8 @@ import org.openhab.binding.awattar.internal.handler.TimeRange; * * @param netPrice the net price in €/kWh * @param grossPrice the gross price in €/kWh - * @param netTotal the net total price in € - * @param grossTotal the gross total price in € + * @param netTotal the net total price in €/kWh + * @param grossTotal the gross total price in €/kWh * @param timerange the time range of the price */ @NonNullByDefault diff --git a/bundles/org.openhab.binding.awattar/src/main/java/org/openhab/binding/awattar/internal/api/AwattarApi.java b/bundles/org.openhab.binding.awattar/src/main/java/org/openhab/binding/awattar/internal/api/AwattarApi.java index b56454d2939..8f4442c02b3 100644 --- a/bundles/org.openhab.binding.awattar/src/main/java/org/openhab/binding/awattar/internal/api/AwattarApi.java +++ b/bundles/org.openhab.binding.awattar/src/main/java/org/openhab/binding/awattar/internal/api/AwattarApi.java @@ -57,6 +57,7 @@ public class AwattarApi { private double vatFactor; private double basePrice; + private double serviceFee; private ZoneId zone; @@ -87,6 +88,7 @@ public class AwattarApi { vatFactor = 1 + (config.vatPercent / 100); basePrice = config.basePrice; + serviceFee = config.serviceFee; if (config.country.equals("DE")) { this.url = URL_DE; @@ -141,6 +143,12 @@ public class AwattarApi { double netMarket = d.marketprice / 10.0; double grossMarket = netMarket * vatFactor; double netTotal = netMarket + basePrice; + + // add service fee for the aWATTar service (Ausgleichskomponente) + if (serviceFee > 0) { + netTotal += Math.abs(netTotal) * (serviceFee / 100); + } + double grossTotal = netTotal * vatFactor; result.add(new AwattarPrice(netMarket, grossMarket, netTotal, grossTotal, diff --git a/bundles/org.openhab.binding.awattar/src/main/resources/OH-INF/config/config.xml b/bundles/org.openhab.binding.awattar/src/main/resources/OH-INF/config/config.xml index 5fa754579e4..d06508e3464 100644 --- a/bundles/org.openhab.binding.awattar/src/main/resources/OH-INF/config/config.xml +++ b/bundles/org.openhab.binding.awattar/src/main/resources/OH-INF/config/config.xml @@ -24,6 +24,11 @@ Specifies the net base price per kWh 0 + + + Specifies the service fee in percent. + 0 + diff --git a/bundles/org.openhab.binding.awattar/src/main/resources/OH-INF/i18n/awattar.properties b/bundles/org.openhab.binding.awattar/src/main/resources/OH-INF/i18n/awattar.properties index 75fceabe8e2..e6b4b2780b9 100644 --- a/bundles/org.openhab.binding.awattar/src/main/resources/OH-INF/i18n/awattar.properties +++ b/bundles/org.openhab.binding.awattar/src/main/resources/OH-INF/i18n/awattar.properties @@ -12,6 +12,8 @@ bridge-type.config.awattar.bridge.basePrice.label = Base price bridge-type.config.awattar.bridge.basePrice.description = Specifies the net base price per kWh bridge-type.config.awattar.bridge.timeZone.label = Time zone bridge-type.config.awattar.bridge.timeZone.description = Time zone to apply to the hour definitions. Default CET aligns to the aWATTar API +bridge-type.config.awattar.bridge.serviceFee.label = Service fee +bridge-type.config.awattar.bridge.serviceFee.description = Specifies the service fee in percent # thing types thing-type.awattar.prices.label = aWATTar Hourly Prices diff --git a/bundles/org.openhab.binding.awattar/src/test/java/org/openhab/binding/awattar/internal/api/AwattarApiTest.java b/bundles/org.openhab.binding.awattar/src/test/java/org/openhab/binding/awattar/internal/api/AwattarApiTest.java index 615317cf6f3..e7b84260d72 100644 --- a/bundles/org.openhab.binding.awattar/src/test/java/org/openhab/binding/awattar/internal/api/AwattarApiTest.java +++ b/bundles/org.openhab.binding.awattar/src/test/java/org/openhab/binding/awattar/internal/api/AwattarApiTest.java @@ -90,6 +90,7 @@ class AwattarApiTest extends JavaTest { config.basePrice = 0.0; config.vatPercent = 0.0; + config.serviceFee = 0.0; config.country = "DE"; api = new AwattarApi(httpClientMock, ZoneId.of("GMT+2"), config);