]> git.basschouten.com Git - openhab-addons.git/commitdiff
[Tibber] Added "today" API channel (#14236)
authorMarkus Eckhardt <Markinus@users.noreply.github.com>
Sun, 22 Jan 2023 11:25:37 +0000 (12:25 +0100)
committerGitHub <noreply@github.com>
Sun, 22 Jan 2023 11:25:37 +0000 (12:25 +0100)
* Added "today" API channel

Signed-off-by: Markus Eckhardt <github@familie-eckhardt.eu>
bundles/org.openhab.binding.tibber/README.md
bundles/org.openhab.binding.tibber/src/main/java/org/openhab/binding/tibber/internal/TibberBindingConstants.java
bundles/org.openhab.binding.tibber/src/main/java/org/openhab/binding/tibber/internal/handler/TibberHandler.java
bundles/org.openhab.binding.tibber/src/main/java/org/openhab/binding/tibber/internal/handler/TibberPriceConsumptionHandler.java
bundles/org.openhab.binding.tibber/src/main/resources/OH-INF/i18n/tibber.properties
bundles/org.openhab.binding.tibber/src/main/resources/OH-INF/thing/thing-types.xml

index 4935e15263c7b8ec4b6390ebd13f655ad4b4cf7b..3b8bd9abc8837e9d8f1425d5ab94827749bf5acb 100644 (file)
@@ -33,6 +33,7 @@ Tibber Default:
 | Hourly From        | Timestamp (hourly from)                                 | True      |
 | Hourly To          | Timestamp (hourly to)                                   | True      |
 | Tomorrow prices    | JSON array of tomorrow's prices. See below for example. | True      |
+| Today prices       | JSON array of today's prices. See below for example.    | True      |
 
 Tibber Pulse (optional):
 
@@ -98,9 +99,9 @@ Retrieve personal token and HomeId from description above, and initialize/start
 
 Tibber API will be auto discovered if provided input is correct.
 
-## Tomorrow prices
+## Tomorrow and Today prices
 
-Example of tomorrow prices data structure - an array of tuples:
+Example of tomorrow and today prices data structure - an array of tuples:
 
 ```json
 [
@@ -232,7 +233,7 @@ Number:Energy              TibberAPILiveAccumulatedConsumption   "Accumulated Co
 Number:Dimensionless       TibberAPILiveAccumulatedCost          "Accumulated Cost [%.2f NOK]"               {channel="tibber:tibberapi:7cfae492:live_accumulatedCost"}
 String                     TibberAPILiveCurrency                 "Currency"                                  {channel="tibber:tibberapi:7cfae492:live_currency"}
 Number:Power               TibberAPILiveMinPower                 "Min Power Consumption [%.0f W]"            {channel="tibber:tibberapi:7cfae492:live_minPower"}
-Number:Power               TibberAPILiveAveragePower             "Average Power Consumption [%.0f W]"             {channel="tibber:tibberapi:7cfae492:live_averagePower"}
+Number:Power               TibberAPILiveAveragePower             "Average Power Consumption [%.0f W]"        {channel="tibber:tibberapi:7cfae492:live_averagePower"}
 Number:Power               TibberAPILiveMaxPower                 "Max Power Consumption [%.0f W]"            {channel="tibber:tibberapi:7cfae492:live_maxPower"}
 Number:ElectricPotential   TibberAPILiveVoltage1                 "Live Voltage Phase 1 [%.0 V]"              {channel="tibber:tibberapi:7cfae492:live_voltage1"}
 Number:ElectricPotential   TibberAPILiveVoltage2                 "Live Voltage Phase 2 [%.0 V]"              {channel="tibber:tibberapi:7cfae492:live_voltage2"}
@@ -240,9 +241,10 @@ Number:ElectricPotential   TibberAPILiveVoltage3                 "Live Voltage P
 Number:ElectricCurrent     TibberAPILiveCurrent1                 "Live Current Phase 1 [%.1 A]"              {channel="tibber:tibberapi:7cfae492:live_current1"}
 Number:ElectricCurrent     TibberAPILiveCurrent2                 "Live Current Phase 2 [%.1 A]"              {channel="tibber:tibberapi:7cfae492:live_current2"}
 Number:ElectricCurrent     TibberAPILiveCurrent3                 "Live Current Phase 3 [%.1 A]"              {channel="tibber:tibberapi:7cfae492:live_current3"}
-Number:Power               TibberAPILivePowerProduction          "Live Power Production [%.0f W]"                 {channel="tibber:tibberapi:7cfae492:live_powerProduction"}
-Number:Power               TibberAPILiveMinPowerproduction       "Min Power Production [%.0f W]"                  {channel="tibber:tibberapi:7cfae492:live_minPowerproduction"}
-Number:Power               TibberAPILiveMaxPowerproduction       "Max Power Production [%.0f W]"                  {channel="tibber:tibberapi:7cfae492:live_maxPowerproduction"}
+Number:Power               TibberAPILivePowerProduction          "Live Power Production [%.0f W]"            {channel="tibber:tibberapi:7cfae492:live_powerProduction"}
+Number:Power               TibberAPILiveMinPowerproduction       "Min Power Production [%.0f W]"             {channel="tibber:tibberapi:7cfae492:live_minPowerproduction"}
+Number:Power               TibberAPILiveMaxPowerproduction       "Max Power Production [%.0f W]"             {channel="tibber:tibberapi:7cfae492:live_maxPowerproduction"}
 Number:Energy              TibberAPILiveAccumulatedProduction    "Accumulated Production [%.2f kWh]"         {channel="tibber:tibberapi:7cfae492:live_accumulatedProduction"}
 String                     TibberAPITomorrowPrices               "Price per hour tomorrow JSON array"        {channel="tibber:tibberapi:7cfae492:tomorrow_prices"}
+String                     TibberAPITodayPrices                  "Price per hour today JSON array"           {channel="tibber:tibberapi:7cfae492:today_prices"}
 ```
index 0efd6794c25469298de39fd35171e47b76424a0c..d1dd24e4cd9bc42dac04e971499995c973fbf609 100644 (file)
@@ -45,6 +45,7 @@ public class TibberBindingConstants {
     public static final String CURRENT_STARTSAT = "current_startsAt";
     public static final String CURRENT_LEVEL = "current_level";
 
+    public static final String TODAY_PRICES = "today_prices";
     public static final String TOMORROW_PRICES = "tomorrow_prices";
     public static final String DAILY_FROM = "daily_from";
     public static final String DAILY_TO = "daily_to";
index 3094c62827d46c7e6f949137ae05c44388da8628..64565af2e7a639f5da59074d113c43a81322c7a7 100644 (file)
@@ -187,6 +187,10 @@ public class TibberHandler extends BaseThingHandler {
                             .getAsJsonObject("home").getAsJsonObject("currentSubscription").getAsJsonObject("priceInfo")
                             .getAsJsonArray("tomorrow");
                     updateState(TOMORROW_PRICES, new StringType(tomorrow.toString()));
+                    JsonArray today = rootJsonObject.getAsJsonObject("data").getAsJsonObject("viewer")
+                            .getAsJsonObject("home").getAsJsonObject("currentSubscription").getAsJsonObject("priceInfo")
+                            .getAsJsonArray("today");
+                    updateState(TODAY_PRICES, new StringType(today.toString()));
                 } catch (JsonSyntaxException e) {
                     updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR,
                             "Error communicating with Tibber API: " + e.getMessage());
index 75e330e37faf8a5cd4a687acf0e091a2ebb8c940..62f5d0f90b01f7b8490cc5f7ba0fa0a201f3bbf1 100644 (file)
@@ -33,7 +33,7 @@ public class TibberPriceConsumptionHandler {
 
     public InputStream getInputStream(String homeId) {
         String query = "{\"query\": \"{viewer {home (id: \\\"" + homeId
-                + "\\\") {currentSubscription {priceInfo {current {total startsAt level } tomorrow { startsAt total }}} daily: consumption(resolution: DAILY, last: 1) {nodes {from to cost unitPrice consumption consumptionUnit}} hourly: consumption(resolution: HOURLY, last: 1) {nodes {from to cost unitPrice consumption consumptionUnit}}}}}\"}";
+                + "\\\") {currentSubscription {priceInfo {current {total startsAt level } tomorrow { startsAt total } today { startsAt total }}} daily: consumption(resolution: DAILY, last: 1) {nodes {from to cost unitPrice consumption consumptionUnit}} hourly: consumption(resolution: HOURLY, last: 1) {nodes {from to cost unitPrice consumption consumptionUnit}}}}}\"}";
         return new ByteArrayInputStream(query.getBytes(StandardCharsets.UTF_8));
     }
 
index ce2963d31adcca91adcd4beebed174ec87277a7b..c79af77bbb04704e64a52a9ccc0f8c302d0efc40 100644 (file)
@@ -40,4 +40,6 @@ channel-type.tibber.timestamp.description = Timestamp for measurement/change
 channel-type.tibber.voltage.label = Voltage
 channel-type.tibber.voltage.description = Voltage on given Phase
 channel-type.tibber.tomorrow_prices.label = Prices for tomorrow as a JSON array
-channel-type.tibber.tomorrow_prices.description = JSON array of tuples startsAt,total, e.g. {["startsAt": "2022-09-10T00:00:00+02:00", "total": 5.332}, {"startsAt": ...}]}. See binding documantation for full example.
+channel-type.tibber.tomorrow_prices.description = JSON array of tuples startsAt,total, e.g. {["startsAt": "2022-09-10T00:00:00+02:00", "total": 5.332}, {"startsAt": ...}]}. See binding documentation for full example.
+channel-type.tibber.today_prices.label = Prices for today as a JSON array
+channel-type.tibber.today_prices.description = JSON array of tuples startsAt,total, e.g. {["startsAt": "2022-09-10T00:00:00+02:00", "total": 5.332}, {"startsAt": ...}]}. See binding documentation for full example.
index d990328aec375bc712385bf9989bc3ecddbbeb95..9118147f3dbdbacaf3ab3bf94970bd032cc05c62 100644 (file)
@@ -12,6 +12,7 @@
                        <channel id="current_startsAt" typeId="timestamp"/>
                        <channel id="current_level" typeId="level"/>
                        <channel id="tomorrow_prices" typeId="tomorrow_prices"/>
+                       <channel id="today_prices" typeId="today_prices"/>
                        <channel id="daily_from" typeId="timestamp"/>
                        <channel id="daily_to" typeId="timestamp"/>
                        <channel id="daily_cost" typeId="cost"/>
                <item-type>String</item-type>
                <label>Prices for tomorrow as a JSON array</label>
                <description>JSON array of tuples startsAt,total, e.g. {["startsAt": "2022-09-10T00:00:00+02:00", "total": 5.332},
-                       {"startsAt": ...}]. See binding documantation for full example.</description>
+                       {"startsAt": ...}]. See binding documentation for full example.</description>
+       </channel-type>
+       <channel-type id="today_prices" advanced="true">
+               <item-type>String</item-type>
+               <label>Prices for today as a JSON array</label>
+               <description>JSON array of tuples startsAt,total, e.g. {["startsAt": "2022-09-10T00:00:00+02:00", "total": 5.332},
+                       {"startsAt": ...}]. See binding documentation for full example.</description>
        </channel-type>
 </thing:thing-descriptions>