Code Monkey home page Code Monkey logo

homeassistant-octopusenergy's People

Contributors

696grocuttt avatar alecrust avatar andrew-codechimp avatar bottlecapdave avatar davek-rocketmakers avatar djbenson avatar gcoan avatar github-actions[bot] avatar justwatchme avatar ksimuk avatar lildude avatar markcocker avatar meatballs1 avatar mrlistercouk avatar pixel-gavin avatar realflash avatar reedy avatar semantic-release-bot avatar stubez avatar t288msd avatar toddstar avatar uk-justinsmall avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

homeassistant-octopusenergy's Issues

Current energy cost sensor displays $ symbol instead of £

Hi,

My current energy cost sensor icon is displayed as a $ instead of £ symbol.

Dollar_HA

sensor.octopus_energy_electricity_{{METER_SERIAL_NUMBER}}_{{MPAN_NUMBER}}_current_rate

Is this my setup or an issue because of:

HomeAssistant-OctopusEnergy-4.1.3\custom_components\octopus_energy\sensor.py (5 hits)
Line 196: return "mdi:currency-usd"
Line 274: return "mdi:currency-usd"
Line 447: return "mdi:currency-usd"
Line 531: return "mdi:currency-usd"
Line 712: return "mdi:currency-usd"

I have configured everything else in Homeassistant to have GBP £ and it works fine. Until I upgraded octopus_energy recently (today) it was working there as well.

Thanks,

Chris

Offset the readings by one day

Describe the bug
Since the previous_accumulative_consumption sensor collects yesterdays values, the graphs in home assistant are always one day out. eg the usage for Monday, is acually for Sunday etc.

To Reproduce
N/A
Expected behavior
Would it be possible to subtract 1 day from the data before passing to home assistant ? ie When a comsumption figure is collected on Monday morning, the figure is passed to HA as Sunday's figure.

Home Assistant Logs
N/A

Empty form when setting up

Hi,

first of all, many thanks for spending the time and effort in doing this and making an Octopus integration.

I got to admit, I am new to HA - but I am not a newbie... I work in IT as a Linux admin.
I uploaded your integration and when trying to add it as an integration, I am presented with an
input box containing two input fields (2nd is required) and a checkbox. No text, no label whatsoever.

I definitely want to help with getting this further... just that I don't know Python at all. I am happy to test and report :-)

Regards

Tom

Time period for Octopus data

I have been using this HACS integration for a month or two, and it is great. I did some playing around with the Octopus API in Postman, and noticed that it gives consumption for half hourly time periods, with the group_by parameter allowing reduced granularity. The integration stores the data for the previous day. I understand that Octopus doesn't provide data newer than the previous day.

Do you have any plans to allow using a shorter time period in the integration? I'd be interested in helping out with this.

Ability to add multiple accounts

As someone who helps my not-so-technically-minded family members monitor their energy usage, I would like to be able add multiple Octopus Energy API keys so that I may add their data to my home assistant.

(in the meantime, if this is already possible with yaml files etc, I'd appreciate an example configuration of how to do this:)

3.0.0 & 3.0.1 not gettign data

Hi love the intergration, I was doing this manually before but so much easier now, thank you.

2.0.0 worked perfectly and was downloading data each day. Since 3.0.0 no data is ever downloaded and sensors stay at 0

Rolling back to 2.0.0 gets data again upgrading to 3.0.1 (or 3.0.0) breaks the intergration

I'm not sure they are relevant but her are the only log entries I can see that are related
File "/config/custom_components/octopus_energy/__init__.py", line 89, in async_update_data hass.data[DOMAIN][DATA_RATES] = await client.async_get_rates(tariff_code, period_from, period_to) File "/config/custom_components/octopus_energy/api_client.py", line 107, in async_get_rates return await self.async_get_standard_rates(product_code, tariff_code, period_from, period_to) File "/config/custom_components/octopus_energy/api_client.py", line 49, in async_get_standard_rates data = await response.json(content_type=None) File "/usr/local/lib/python3.9/site-packages/aiohttp/client_reqrep.py", line 1119, in json return loads(stripped.decode(encoding)) File "/usr/local/lib/python3.9/json/__init__.py", line 346, in loads return _default_decoder.decode(s) File "/usr/local/lib/python3.9/json/decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/usr/local/lib/python3.9/json/decoder.py", line 355, in raw_decode raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

May be relevant that i'm an octopus energy UK customer and don't have a varible tarrif.

With 3.0.1 (and 3.0.0) the intergration is getting the following;
sensor.octopus_energy_electricity_XXXXXXXXX_latest_consumption = Unavailable
sensor.octopus_energy_electricity_XXXXXXXXX_previous_accumulative_consumption = 0
sensor.octopus_energy_electricity_XXXXXXXXX_previous_accumulative_consumption_cost = 0.0
sensor.octopus_energy_electricity_XXXXXXXXX_previous_accumulative_cost = 0
sensor.octopus_energy_electricity_current_rate = 0.187845 (always the same)
sensor.octopus_energy_electricity_previous_rate = 0.187845 (always the same)
sensor.octopus_energy_gas_XXXXXXXXX_latest_consumption = Unavailable
sensor.octopus_energy_gas_XXXXXXXXX_previous_accumulative_consumption = 0
sensor.octopus_energy_gas_XXXXXXXXX_previous_accumulative_consumption_cost = 0.0
sensor.octopus_energy_gas_XXXXXXXXX_previous_accumulative_cost = 0

With 2.0.0 the intergraion get the following:
sensor.octopus_energy_electricity_XXXXXXXXX_latest_consumption = 0
sensor.octopus_energy_electricity_XXXXXXXXX_previous_accumulative_consumption = 16.962
sensor.octopus_energy_electricity_XXXXXXXXX_previous_accumulative_consumption_cost = 0.0
sensor.octopus_energy_electricity_XXXXXXXXX_previous_accumulative_cost = Unavailable
sensor.octopus_energy_electricity_current_rate = 0.187845 (always the same)
sensor.octopus_energy_electricity_previous_rate = 0.187845 (always the same)
sensor.octopus_energy_gas_XXXXXXXXX_latest_consumption = 0
sensor.octopus_energy_gas_XXXXXXXXX_previous_accumulative_consumption = 2.781
sensor.octopus_energy_gas_XXXXXXXXX_previous_accumulative_consumption_cost = 0.0
sensor.octopus_energy_gas_XXXXXXXXX_previous_accumulative_cost = Unavailable

Happy to test anything that might help.

Current Electricity rate is £0.00/kWh for some (all?) versions >1.0.0

Describe the bug
I've tried versions: 1.0.0 which correctly exposes the Electricity Current Rate (I'm on an old Go tariff), and this has been changing as expected at 00:30 and 04:30. However in all of the other released versions that I've tried, this sensor is just returning 0.00 GBP/kWh. I've tried versions:

  • 1.2.0
  • 2.0.0
  • 3.0.2

To Reproduce
I have no idea, I've just updated to newer versions, and had to manually roll them back

Expected behavior
The Electricity Current Rate sensor continues working in later versions, or is replaced with a similar sensor (I can't see one though)

Home Assistant Logs
Can't spot anything particularly relevant. Let me know if you want something specific and I'll get it,l be that specific logs, dumps of raw API from Octopus, etc.

image

Config flow could not be loaded

When trying to change the gas configuration by clicking on "configure" in the integration I get "Config flow could not be loaded".

Local variable 'valid_from' referenced before assignment

I have just installed the custom component and have tried to set this up. However it returns errors in the log as below.

Log

When looking into the "Unexpected error fetching rates data: local variable 'valid_from' referenced before assignment" entry the traceback is as per below:

Logger: custom_components.octopus_energy
Source: custom_components/octopus_energy/api_client.py:49
Integration: Octopus Energy (documentation, issues)
First occurred: 4:09:58 (1 occurrences)
Last logged: 4:09:58

Unexpected error fetching rates data: local variable 'valid_from' referenced before assignment
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 187, in _async_refresh
self.data = await self._async_update_data()
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 147, in _async_update_data
return await self.update_method()
File "/config/custom_components/octopus_energy/init.py", line 89, in async_update_data
hass.data[DOMAIN][DATA_RATES] = await client.async_get_rates(product_code, tariff_code)
File "/config/custom_components/octopus_energy/api_client.py", line 85, in async_get_rates
results = self.process_rates(data, period_from, period_to)
File "/config/custom_components/octopus_energy/api_client.py", line 49, in process_rates
if valid_from < period_from:
UnboundLocalError: local variable 'valid_from' referenced before assignment

I'm not sure if this is to do with something I have missed or if it is infact an issue? The integration seemed to setup fine with my details from the UI.

I did notice that there was a problem with valid_from in issue #13 but the issue I'm having seems to be different to what was reported there and I'm using your latest files which I believe you already had the fix for that issue in?

Thanks!

Add daily standing charge

As per title, it would be helpful to see the daily standing charges also added to the energy dashboard.

When yesterday's consumption is available to the past accumulative gas/electricity consumption sensors (which then gets turned into the past accumulative cost sensor based on the current rate * past accumulative consumption) it should be fairly easy to add a new sensor to obtain the tariff daily standing charge per energy source and add this to the accumulative cost - especially as Energy dashboard has no ability to take into consideration daily standing charges yet.

Standing Charge

This is a feature request rather than a bug report/issue

I find this integration very helpful for getting my charge rates from Octopus directly however I think its a massive shame that this integration doesn't pull through standing charge rates too

Is there a way standing charge rates for both gas and electricity could be added and pulled through too?

Thanks in advance

Gas meter not discovered/no sensors generated for gas.

Describe the bug
Missing gas meter sensors

To Reproduce
Added integration, current and previous electricity meter added, no gas meter

A gas meter may be seen to be present when running an API curl command https://api.octopus.energy/v1/accounts/A-xxxxxxx/ (the same key and acount added to the integrations. The meter is SMETS1 but is adopted )I tried ticked and unticked).

Expected behavior
Gas meter sensors to be added.
Home Assistant Logs
I can't find anything useful.

Issue accessing attributes from electricity current rate

I'm trying to access the attributes of the current rate for electricity - this is working fine for gas but not for electricity, i believe it's because they are all nested within the 'rate'

These entries in the template are as follows

value_template: "{{ state_attr('sensor.octopus_energy_gas_e6s23761231961_2761953705_current_rate', 'value_inc_vat') }}"

value_template: "{{ state_attr('sensor.octopus_energy_electricity_19l3865854_2199994503050_current_rate','rate') }}"

value_template: "{{ state_attr('sensor.octopus_energy_electricity_19l3865854_2199994503050_current_rate','value_inc_vat') }}"

Give the output of

value_template: "8.9355"

value_template: "{'value_exc_vat': 31.29, 'value_inc_vat': 32.8545, 'valid_from': datetime.datetime(2022, 8, 30, 15, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 8, 30, 16, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-1R-LOYAL-FIX-12M-22-01-27-K'}"

value_template: "None"

Can you either remove the nested 'rate' attribute, or provide a way to do something like rate.value_inc_vat which I've tried and got no luck

Got Electricity data but not Gas

Describe the bug
No data for Gas sensors:

previous_accumulative_consumption
previous_accumulative_consumption_cost
previous_accumulative_cost

These sensors have attributes relating to my meter (e.g. serial number, MPRN etc) but always have a 0 value

gas_current_rate does have a value

To Reproduce
Installed and connected to my account.
I have electricity details.
The Octopus API does return data when querying my gas metere

Expected behavior
Gas data be present?

Home Assistant Logs
Nothing I can see, tell me how to be useful and I'll provide

Half hourly reporting

Is it possible to have half hourly / hourly values displayed as half hourly values are available in the api?
Not sure if this possible, but I currently only get the accumulated value at 4am each day.

Cheers

Getting an error on setup

I've restarted .

I've regerated API key .

Clearly the screen shot does not include my full key or account number however been ultra careful to ensure they are complete.
Screenshot_20220910-081628_Home Assistant

Sensors created for old meters

Describe the bug

Sensors are created for meters which have been replaced at the same property.

To Reproduce

Have a property which returns these kind of API responses 😅

Get account REST API response
{
  "number": "A-BCD123EF",
  "properties": [
    {
      "id": 1234567,
      // redacted for brevity
      "electricity_meter_points": [
        {
          "mpan": "0123456789",
          "profile_class": 1,
          "consumption_standard": 5720,
          "meters": [
            {
              "serial_number": "XXXXXXXXX",
              "registers": [
                {
                  "identifier": "00",
                  "rate": "STANDARD",
                  "is_settlement_register": true
                }
              ]
            },
            {
              "serial_number": "YYYYYYYYY",
              "registers": [
                {
                  "identifier": "1",
                  "rate": "STANDARD",
                  "is_settlement_register": true
                }
              ]
            }
          ],
          "agreements": [
            {
              "tariff_code": "E-1R-SUPER-GREEN-24M-21-05-29-E",
              "valid_from": "2021-06-30T00:00:00+01:00",
              "valid_to": "2023-06-30T00:00:00+01:00"
            }
          ],
          "is_export": false
        }
      ],
      "gas_meter_points": [
        {
          "mprn": "12345678",
          "consumption_standard": 47722,
          "meters": [
            {
              "serial_number": "AAAAAAAAAAAAAA"
            },
            {
              "serial_number": "BBBBBBBBBBBBBB"
            }
          ],
          "agreements": [
            {
              "tariff_code": "G-1R-SUPER-GREEN-24M-21-05-29-E",
              "valid_from": "2021-06-30T00:00:00+01:00",
              "valid_to": "2023-06-30T00:00:00+01:00"
            }
          ]
        }
      ]
    }
  ]
}

YYYYYYYYY is the currently active electricity meter, and AAAAAAAAAAAAAA the gas - it doesn't look like the ordering matters, which is a shame as there's very little extra info for the gas mater in particular.

Consumption API for the old meters is completely blank:

{"count":0,"next":null,"previous":null,"results":[]}

Expected behavior

No sensors are created for the old meters.

Misc

Background here: moved into property with old style meters, which where shortly thereafter replaced by smart meters. Sensors are created for the new meters just fine, but also for the meters which were removed, and have no data.

This might be a bug in the rest API - the old meters don't show in the UI, and don't appear in the graphql API afaict:

Screenshot 2022-01-03 at 15 04 38

Using the REST API this might be tricky to handle cleanly because the sensors are created based on the data in the account API, which then go on to have no data in the consumption API but they have already been created at that point. I have disabled the entities for now so it's no big deal to me, but wanted to document the issue here while I had all the info in my head.

Thanks for creating this - I wanted to get some price sensors and started to look at building a small component based on the GraphQL api, this component saved me the effort 🙂

Incorrect accumulative consumptions

Hi David

I'm Still having issues.

I'm not sure what i'm doing wrong.

In the most part, day to day the figurers are correct. but every few days or so the cost calculations for both electricity and gas are incorrect, but the consumption figures are still correct.
EG:

August 17, 2022
Electricity previous accumulative consumption 6.04 kWh = £10.50 But should be £2.10
Gas previous accumulative consumption 0.2 m³ = £1.80 But should be £0.43

August 13, 2022
Electricity previous accumulative consumption 7.35 kWh = £4.92 But should be £2.46
Gas previous accumulative consumption 0.72 m³ = £1.72 But should be £0.86

August 10, 2022
Electricity previous accumulative consumption 6.89 kWh = £2.92 But should be £2.33
Gas previous accumulative consumption 1.09 m³ = £1.44 But should be £1.60

August 8, 2022
Electricity previous accumulative consumption 7.46 kWh = £5.52 But should be £2.49
Gas previous accumulative consumption 3.09 m³ = £5.91 But should be £2.81

so on and so on.........

this seem to be happening every few days.

Configure grid consumption
Electricity previous accumulative consumption
Use an entity tracking the total costs
Electricity previous accumulative cost

Configure gas consumption
Gas previous accumulative consumption
Use an entity tracking the total costs
Gas previous accumulative cost

This has been happening for a while, Any ideas???

Thanks

Phi

Originally posted by @Phil-m-pinto in #41 (comment)

error on restart.

I have been still disintegration from HACS and configured pthehreconfiguration . yAML as per the instructions however when I go to restart home assistant I get the following message: ad it will not start and I do not have the integration running.
Logger: homeassistant.components.hassio
Source: components/hassio/init.py:598
Integration: Home Assistant Supervisor (documentation, issues)
First occurred: 21:47:45 (3 occurrences)
Last logged: 22:05:10

The system cannot restart because the configuration is not valid: Integration error: ctopusagile - Integration 'ctopusagile' not found.

"UnboundLocalError: local variable 'start_time' referenced before assignment" when creating a Target Rates sensor

Loving the add-on! I get the following error when trying to create a Target Rates sensor called "cheapest_3_hours_intermittent":

Logger: homeassistant.components.binary_sensor
Source: custom_components/octopus_energy/binary_sensor.py:142
Integration: Binary Sensor ([documentation](https://www.home-assistant.io/integrations/binary_sensor), [issues](https://github.com/home-assistant/home-assistant/issues?q=is%3Aissue+is%3Aopen+label%3A%22integration%3A+binary_sensor%22))
First occurred: 20:42:26 (2 occurrences)
Last logged: 20:42:26

Error adding entities for domain binary_sensor with platform octopus_energy
Error while setting up octopus_energy platform for binary_sensor
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 428, in async_add_entities
    await asyncio.gather(*tasks)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 691, in _async_add_entity
    await entity.add_to_platform_finish()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 777, in add_to_platform_finish
    self.async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 533, in async_write_ha_state
    self._async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 571, in _async_write_ha_state
    state = self._stringify_state(available)
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 539, in _stringify_state
    if (state := self.state) is None:
  File "/usr/src/homeassistant/homeassistant/components/binary_sensor/__init__.py", line 209, in state
    if (is_on := self.is_on) is None:
  File "/config/custom_components/octopus_energy/binary_sensor.py", line 142, in is_on
    start_time,
UnboundLocalError: local variable 'start_time' referenced before assignment

Any pointers? Thank you!

More clarity needed on the different entities and sensors.

It's great that you have set this up! I am really excited to be able to integrate Octopus Energy's data into my Home Assistant. Let's hope they don't go bust!

When I added my API and account details, 12 different entities were set up, but only 10 are listed as associcated with the Integration. There are 2 sensors as well which are visible if I search on octopus.

For some reason there were some records for non-existant Gas and Electricity meters - perhaps they were the references for the pre-smart meters. I have no idea, as I only recently moved into this house. I disabled those entities as I could identify them through serial numbers that didn't correspond to those shown in my Octopus account page.

It would be helpful to have a clearer explanation of the different entities that are left so I can decide which to use in the Energy dashboard in HA.

What is the difference between Latest Consumption and Previous Accumulated Consumption? I assume the Latest Consumption might be data from the last 30 minutes (I am on Go) but perhaps it is the last day. When is Previous Accumulated Consumption accumulated from? Is this of any use in the Energy dashboard?

There are 3 entities relating to the price of electricity - current and previous rate - I'm assuming that Current is the one I want to use in the config of the energy dashboard. The third is a sensor, and is called latest consumption cost. This doesn't work with the Energy dashboard.

Gas only has the latest consumption cost sensor, and again it doesn't work with the energy dashboard. Since I am on a fixed gas rate, I can just type that in anyway.

I guess some of this might be clearer after I have been running for some days, but for getting up and running it is a bit confusing.

Additional sensors

Hello,

Electricity does have current rate sensor but gas doesn't. Can it be setup for Gas as well?

Can it be setup to pull standing charge for Electricity and Gas?

If all those are configured could you please add calculation on Python to calculate how much did cost per day for gas and electricity including standing charge? Something like this total cost so far Today, so far this Week, so far this Month?

Integration pulls only zero data values from Octopus

My integration appears to work fine other than it only pulls zeros for electricity & gas consumption. 'Octopus Energy Electricity Current Rate' is pulled correctly.

  1. I've created a display for sensor.octopus_energy_electricity_16kxxxxxxxx_latest_consumption and see 0 reported, same for gas consumption.

  2. For the days prior to setting up the integration, the Energy dashboard correctly reports "There is no data for this period." So I'm confident that I'm retrieving data from Octopus, but it's 0's.

  3. I've downloaded raw data from Octopus and see consumption values in the Excel file that results.

  4. The only related log entry shows...

Logger: homeassistant.helpers.entity
Source: helpers/entity.py:661
First occurred: 27 November 2021, 12:00:18 (11 occurrences)
Last logged: 09:00:21

Update of sensor.octopus_energy_electricity_16kxxxxxxxx_latest_consumption is taking over 10 seconds
Update of sensor.octopus_energy_gas_g4ksxxxxxxxx_latest_consumption is taking over 10 seconds
Update of sensor.octopus_energy_electricity_16kxxxxxxxx_previous_accumulative_consumption is taking over 10 seconds

Any assistance would be very much appreciated.
Thank you.

Errors in Home Assistant Core Log but functionality all appears to work

Hello

This is my first ever bug report so hopefully done it ok. Thanks for building the integration btw as very useful.

After installing the integration all the functionality works but I get many errors of two different types appearing in the log. Pasted below.

Erros always appear when starting the integration so easy to reproduce.

Home Assistant Core 2022.6.6
Home Assistant Supervisor 2022.05.3
Home Assistant OS 8.2
Octopus Integration from 7th May

==Error One==

This error originated from a custom integration.

Logger: custom_components.octopus_energy.api_client
Source: custom_components/octopus_energy/api_client.py:253
Integration: Octopus Energy (documentation, issues)
First occurred: 10:02:32 (288 occurrences)
Last logged: 10:03:34

is_valid: False; from_date_time: 2022-06-15 00:00:00+01:00; to_date_time: 2022-06-15 07:00:00+01:00; rate_local_valid_from: 2022-06-15 21:30:00+01:00; rate_local_valid_to: 2022-06-15 22:00:00+01:00
is_valid: False; from_date_time: 2022-06-15 00:00:00+01:00; to_date_time: 2022-06-15 07:00:00+01:00; rate_local_valid_from: 2022-06-15 22:00:00+01:00; rate_local_valid_to: 2022-06-15 22:30:00+01:00
is_valid: False; from_date_time: 2022-06-15 00:00:00+01:00; to_date_time: 2022-06-15 07:00:00+01:00; rate_local_valid_from: 2022-06-15 22:30:00+01:00; rate_local_valid_to: 2022-06-15 23:00:00+01:00
is_valid: False; from_date_time: 2022-06-15 00:00:00+01:00; to_date_time: 2022-06-15 07:00:00+01:00; rate_local_valid_from: 2022-06-15 23:00:00+01:00; rate_local_valid_to: 2022-06-15 23:30:00+01:00
is_valid: False; from_date_time: 2022-06-15 00:00:00+01:00; to_date_time: 2022-06-15 07:00:00+01:00; rate_local_valid_from: 2022-06-15 23:30:00+01:00; rate_local_valid_to: 2022-06-16 00:00:00+01:00

==Error Two==
This error originated from a custom integration.

Logger: custom_components.octopus_energy.api_client
Source: custom_components/octopus_energy/api_client.py:96
Integration: Octopus Energy (documentation, issues)
First occurred: 10:02:32 (2 occurrences)
Last logged: 10:03:34

[{'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 16, 0, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 0, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 16, 0, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 1, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 16, 1, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 1, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 16, 1, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 2, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 16, 2, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 2, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 16, 2, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 3, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 16, 3, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 3, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 16, 3, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 4, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 16, 4, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 4, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 16, 4, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 5, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 16, 5, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 5, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 16, 5, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 6, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 6, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 6, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 6, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 7, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 7, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 7, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 7, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 8, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 8, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 8, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 8, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 9, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 9, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 9, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 9, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 10, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 10, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 10, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 10, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 11, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 11, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 11, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 11, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 12, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 12, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 12, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 12, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 13, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 13, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 13, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 13, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 14, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 14, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 14, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 14, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 15, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 15, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 15, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 15, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 16, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 16, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 16, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 16, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 17, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 17, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 17, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 17, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 18, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 18, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 18, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 18, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 19, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 19, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 19, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 19, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 20, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 20, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 20, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 20, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 21, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 21, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 21, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 21, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 22, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 22, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 22, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 16, 22, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 23, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 16, 23, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 16, 23, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 16, 23, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 0, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 17, 0, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 0, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 17, 0, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 1, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 17, 1, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 1, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 17, 1, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 2, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 17, 2, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 2, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 17, 2, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 3, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 17, 3, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 3, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 17, 3, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 4, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 17, 4, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 4, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 17, 4, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 5, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 17, 5, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 5, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 17, 5, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 6, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 6, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 6, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 6, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 7, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 7, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 7, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 7, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 8, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 8, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 8, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 8, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 9, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 9, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 9, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 9, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 10, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 10, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 10, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 10, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 11, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 11, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 11, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 11, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 12, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 12, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 12, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 12, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 13, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 13, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 13, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 13, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 14, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 14, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 14, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 14, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 15, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 15, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 15, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 15, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 16, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 16, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 16, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 16, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 17, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 17, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 17, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 17, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 18, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 18, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 18, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 18, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 19, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 19, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 19, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 19, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 20, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 20, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 20, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 20, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 21, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 21, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 21, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 21, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 22, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 22, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 22, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 17, 22, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 23, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 17, 23, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 17, 23, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 17, 23, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 18, 0, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}]
[{'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 14, 23, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 14, 23, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 14, 23, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 0, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 15, 0, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 0, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 15, 0, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 1, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 15, 1, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 1, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 15, 1, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 2, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 15, 2, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 2, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 15, 2, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 3, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 15, 3, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 3, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 15, 3, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 4, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 15, 4, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 4, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 15, 4, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 5, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 15, 5, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 5, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 12.07, 'value_inc_vat': 12.6735, 'valid_from': datetime.datetime(2022, 6, 15, 5, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 6, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 6, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 6, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 6, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 7, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 7, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 7, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 7, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 8, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 8, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 8, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 8, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 9, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 9, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 9, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 9, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 10, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 10, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 10, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 10, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 11, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 11, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 11, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 11, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 12, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 12, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 12, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 12, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 13, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 13, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 13, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 13, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 14, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 14, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 14, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 14, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 15, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 15, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 15, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 15, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 16, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 16, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 16, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 16, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 17, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 17, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 17, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 17, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 18, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 18, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 18, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 18, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 19, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 19, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 19, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 19, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 20, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 20, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 20, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 20, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 21, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 21, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 21, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 21, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 22, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 22, 0, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 22, 30, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}, {'value_exc_vat': 19.23, 'value_inc_vat': 20.1915, 'valid_from': datetime.datetime(2022, 6, 15, 22, 30, tzinfo=datetime.timezone.utc), 'valid_to': datetime.datetime(2022, 6, 15, 23, 0, tzinfo=datetime.timezone.utc), 'tariff_code': 'E-2R-OE-FIX-24M-21-05-29-B'}]

Error DEVICE_CLASS_GAS

I have recently installed this plugin via HACS running on a Docker version of Home Assistant. There are no sensors showing up and there is the following entry in the error log:

Logger: homeassistant.setup
Source: setup.py:311
First occurred: 17:23:39 (1 occurrences)
Last logged: 17:23:39

Unable to prepare setup for platform octopus_energy.sensor: Platform not found (cannot import name 'DEVICE_CLASS_GAS' from 'homeassistant.components.sensor' (/usr/src/homeassistant/homeassistant/components/sensor/init.py)).

When the smart meter was installed they were unable to install a gas meter, so this could be the cause of the issue?

Is it possible to work around this as I'd like to be able to use this integration for electricity only?

I really apreciate your efforts in building such a plugin for the community!

No setup option for once a day targets

Describe the bug

Documentation refers to a Limit to once a day checkbox to only run a target once, however no such checkbox is visible in the setup dialogues

To Reproduce

Steps to reproduce the behavior:

when opening the workflow to create a new target sensor, no option to set for once a day

Expected behavior

there should be a checkbox as described in documentation

Home Assistant Version

2022.9.7

Integration Version

4.4.0

Fresh Install?

fresh install

Home Assistant Logs

Error in logs relating to consumption entities

Logger: homeassistant.components.sensor
Source: components/sensor/init.py:213
Integration: Sensor (documentation, issues)
First occurred: 13:42:09 (4 occurrences)
Last logged: 13:42:09

Entity sensor.octopus_energy_electricity_d04c17719_latest_consumption (<class 'custom_components.octopus_energy.sensor.OctopusEnergyLatestElectricityReading'>) with state_class measurement has set last_reset. Setting last_reset is deprecated and will be unsupported from Home Assistant Core 2021.11. Please update your configuration if state_class is manually configured, otherwise report it to the custom component author.
Entity sensor.octopus_energy_electricity_20j0042018_latest_consumption (<class 'custom_components.octopus_energy.sensor.OctopusEnergyLatestElectricityReading'>) with state_class measurement has set last_reset. Setting last_reset is deprecated and will be unsupported from Home Assistant Core 2021.11. Please update your configuration if state_class is manually configured, otherwise report it to the custom component author.
Entity sensor.octopus_energy_gas_g4a50048220401_latest_consumption (<class 'custom_components.octopus_energy.sensor.OctopusEnergyLatestGasReading'>) with state_class measurement has set last_reset. Setting last_reset is deprecated and will be unsupported from Home Assistant Core 2021.11. Please update your configuration if state_class is manually configured, otherwise report it to the custom component author.
Entity sensor.octopus_energy_gas_e6s20464742061_latest_consumption (<class 'custom_components.octopus_energy.sensor.OctopusEnergyLatestGasReading'>) with state_class measurement has set last_reset. Setting last_reset is deprecated and will be unsupported from Home Assistant Core 2021.11. Please update your configuration if state_class is manually configured, otherwise report it to the custom component author.

Cumulative Gas Cost Calculation

Firstly - thank you so much for developing this integration. Super clean and helpful! Much appreciated.

Describe the bug
I have just set up my integration. But I was not sure if the gas calculation was working. It shows previous day gas consumption of some 6.5m³ but previous day gas cost of £0.49. I suspect the calculation was taking the p/kWh (around 3.6p) multiplied directly to the 6.5m³ and added standing charge of some £0.25. But in reality, the gas cost is much higher in particular in winter...

To Reproduce
Steps to reproduce the behavior:
Initiate the integration and read the gas cost against normal bill cycle

Expected behavior
When I was reading the bill, the energy calculation is much more complicated.
Your energy usage is calculated from your gas consumption using a standard industry formula:
Units Consumed (Cubic Metres) × Volume Correction (for temperature & pressure) × Calorific Value (energy in each m3 of gas) ÷ 3.6 (convert from joules) ≈ Usage (in kWh)
So the 6.547m³ need to be converted to some 72kWh (based on the numbers on my bill), then multiplied with the 3.6p, adding standing charge, getting to close to £3 per day, this sounds more like the case in winter...

The solution that I have is to change the utils.py, make use of your conversion from kWh to m³ but do the opposite way. i.e. I took the m³ reading and multiply Volume Correction, Colorific Value and convert from joules (change the signs in the last bit), then tick the SMET1 box in the integration (so that the conversion kicks in). Let me know your thoughts.

Home Assistant Logs
N/A

HACS Install

Hiya, great work, looking forward to trying this! Just wondering if you had considered submitting to the Home Assistant Component Store to make installation and updating one click easier?

https://hacs.xyz/docs/publish/start

Intergration stopped working

For some reason the intergration seems to have stopped working. When I click on one of the entities it says 'This entity is no longer being provided by the octopus_energy integration. If the entity is no longer in use, delete it in settings.'
I tried uninstalling and re-installing, however after putting in the API key and account, It just says 'Unknown error occured'

Looking at the logs it says:
`Logger: custom_components.octopus_energy
Source: custom_components/octopus_energy/api_client.py:120
Integration: Octopus Energy (documentation, issues)
First occurred: 07:29:14 (1 occurrences)
Last logged: 07:29:14
Unexpected error fetching rates data: 'NoneType' object is not subscriptable

Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 205, in _async_refresh
self.data = await self._async_update_data()
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 164, in _async_update_data
return await self.update_method()
File "/config/custom_components/octopus_energy/init.py", line 79, in async_update_electricity_rates_data
tariff_codes = await async_get_current_electricity_agreement_tariff_codes(client, config)
File "/config/custom_components/octopus_energy/init.py", line 54, in async_get_current_electricity_agreement_tariff_codes
account_info = await client.async_get_account(config[CONFIG_MAIN_ACCOUNT_ID])
File "/config/custom_components/octopus_energy/api_client.py", line 112, in async_get_account
"gas_meter_points": list(map(lambda mp: {
File "/config/custom_components/octopus_energy/api_client.py", line 117, in
"agreements": list(map(lambda a: {
File "/config/custom_components/octopus_energy/api_client.py", line 120, in
"tariff_code": a["tariff"]["tariffCode"],
TypeError: 'NoneType' object is not subscriptable`

and

`Logger: homeassistant.components.sensor
Source: helpers/update_coordinator.py:178
Integration: Sensor (documentation, issues)
First occurred: 07:29:14 (1 occurrences)
Last logged: 07:29:14
Error while setting up octopus_energy platform for sensor

Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 205, in _async_refresh
self.data = await self._async_update_data()
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 164, in _async_update_data
return await self.update_method()
File "/config/custom_components/octopus_energy/init.py", line 79, in async_update_electricity_rates_data
tariff_codes = await async_get_current_electricity_agreement_tariff_codes(client, config)
File "/config/custom_components/octopus_energy/init.py", line 54, in async_get_current_electricity_agreement_tariff_codes
account_info = await client.async_get_account(config[CONFIG_MAIN_ACCOUNT_ID])
File "/config/custom_components/octopus_energy/api_client.py", line 112, in async_get_account
"gas_meter_points": list(map(lambda mp: {
File "/config/custom_components/octopus_energy/api_client.py", line 117, in
"agreements": list(map(lambda a: {
File "/config/custom_components/octopus_energy/api_client.py", line 120, in
"tariff_code": a["tariff"]["tariffCode"],
TypeError: 'NoneType' object is not subscriptable

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 281, in _async_setup_platform
await asyncio.shield(task)
File "/config/custom_components/octopus_energy/sensor.py", line 97, in async_setup_entry
await async_setup_default_sensors(hass, entry, async_add_entities)
File "/config/custom_components/octopus_energy/sensor.py", line 113, in async_setup_default_sensors
await rate_coordinator.async_config_entry_first_refresh()
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 178, in async_config_entry_first_refresh
raise ex
homeassistant.exceptions.ConfigEntryNotReady: 'NoneType' object is not subscriptable`

Hoping you might be able to help.

Error messages after update to v3.0.0

I updated my custom_components folder with the new v3.0.0 files (just did a simple overwrite of previous files) and the integration appears to be working OK, other than this error message...

Logger: homeassistant.components.sensor
Source: custom_components/octopus_energy/sensor.py:107
Integration: Sensor (documentation, issues)
First occurred: 11:31:45 (1 occurrences)
Last logged: 11:31:45

Error while setting up octopus_energy platform for sensor
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 249, in _async_setup_platform
await asyncio.shield(task)
File "/config/custom_components/octopus_energy/sensor.py", line 91, in async_setup_entry
await async_setup_default_sensors(hass, entry, async_add_entities)
File "/config/custom_components/octopus_energy/sensor.py", line 107, in async_setup_default_sensors
tariff_code = hass.data[DOMAIN][DATA_TARIFF_CODE]
KeyError: 'TARIFF_CODE'

Configure target rates

It would be good if you could configure target rates instead of having to delete and re-add

Dual rate tariffs

Seems this wont work with dual rate tariffs such a GO, Economy 7 etc.

Looking at Octopus api documents there needs to be a check to see what tariff rates a customer is using rather than just pulling standard-unit-rates.

In your code you're hitting the standard rate end point but people on dual rates will have the following returned and error out.

{
    "detail": "This tariff has day and night rates, not standard."
}

Any chance of a check being added to support dual taffifs?

https://developer.octopus.energy/docs/api/#list-tariff-charges

No entities created after logging in

After setting up the integration I get no new entities. My logs contains

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 187, in _async_refresh
    self.data = await self._async_update_data()
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 147, in _async_update_data
    return await self.update_method()
  File "/config/custom_components/octopus_energy/__init__.py", line 47, in async_update_data
    current_agreement = get_active_agreement(point["agreements"])
  File "/config/custom_components/octopus_energy/utils.py", line 8, in get_active_agreement
    valid_to = as_utc(parse_datetime(agreement["valid_to"]))
  File "/usr/src/homeassistant/homeassistant/util/dt.py", line 133, in parse_datetime
    return ciso8601.parse_datetime(dt_str)
TypeError: argument 1 must be str, not None

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 249, in _async_setup_platform
    await asyncio.shield(task)
  File "/config/custom_components/octopus_energy/sensor.py", line 33, in async_setup_entry
    await async_setup_default_sensors(hass, entry, async_add_entities)
  File "/config/custom_components/octopus_energy/sensor.py", line 42, in async_setup_default_sensors
    await coordinator.async_config_entry_first_refresh()
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 161, in async_config_entry_first_refresh
    raise ex
homeassistant.exceptions.ConfigEntryNotReady: argument 1 must be str, not None

Running a manual curl query at the url that provides the 'point' dict (in async_get_account) I get a blank response. I ran curl -u "sk_live_muhkey:" "https://api.octopus.energy/v1/accounts/A-MUHACC" and get back nothing. Looking at the API documentation I can't even seen a GET /v1/accounts endpoint. There is a POST one but that is for partner organisations only.

Query Over Rates

Hi,

Thanks for working on this, I installed it using HACS and have got each of the entities, but have a query.

When I put the two electricity entities into HA's Developer page I get the figures for the Octopus Outgoing Rate (i.e. the cost of what I export to the grid), not the incoming rate (i.e. the cost I am charged).

For example sensor.octopus_energy_electricity_current_rate is giving me 0.1851, when I check my Octopus account, that is the outgoing rate, the import tariff should be 0.3500 at this time (6 Feb 1600-1630).

Am I doing something wrong, or do I have to do anything else to get the correct rates?

Still pulling Agile pricing

I have installed this but it still seems to be pulling Agile pricing and not Go (which I am on). I have correctly selected 'Go' in the drop down but I am concious I might not be using the right code (which include AGILE in it).

Also it isnt pulling in gas/electric meters yet.

Any help greatly appreciated.

Not seeing sensors after install

Hi,

I'm probably missing something obvious.

I've copied the "octopus_energy" folder that contains all the .py files to custom_components

I've confirmed that I can see said folder/files in the Home Assistant file editor.

I then followed the UI link in the instructions and added the Octopus Energy integration.

I gave it my API key and account reference. I didn't select "is SMETS1" as both my gas and electricity meters are SMETS2

I've restarted Home Assistant.

I do not see any of the mentioned sensors under DeveloperTools/States (or anywhere else)
I've tried searching the entire list for "octopus" (so that sensors like sensor.octopus_energy_electricity_current_rate would match)

Can anyone suggest what I've missed?

Error when valid_from is not provided

I'm also having issues seeing the sensors in HA. Any help would be greatly appreciated. I get the following two Error:

  1. Logger: homeassistant.components.sensor
    Source: helpers/update_coordinator.py:161
    Integration: Sensor (documentation, issues)
    First occurred: 10:40:11 PM (1 occurrences)
    Last logged: 10:40:11 PM

Error while setting up octopus_energy platform for sensor
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 187, in _async_refresh
self.data = await self._async_update_data()
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 147, in _async_update_data
return await self.update_method()
File "/config/custom_components/octopus_energy/init.py", line 89, in async_update_data
hass.data[DOMAIN][DATA_RATES] = await client.async_get_rates(product_code, tariff_code)
File "/config/custom_components/octopus_energy/api_client.py", line 48, in async_get_rates
valid_from = as_utc(parse_datetime(item["valid_from"]))
File "/usr/src/homeassistant/homeassistant/util/dt.py", line 133, in parse_datetime
return ciso8601.parse_datetime(dt_str)
TypeError: argument 1 must be str, not None

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 249, in _async_setup_platform
await asyncio.shield(task)
File "/config/custom_components/octopus_energy/sensor.py", line 40, in async_setup_entry
await async_setup_default_sensors(hass, entry, async_add_entities)
File "/config/custom_components/octopus_energy/sensor.py", line 56, in async_setup_default_sensors
await coordinator.async_config_entry_first_refresh()
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 161, in async_config_entry_first_refresh
raise ex
homeassistant.exceptions.ConfigEntryNotReady: argument 1 must be str, not None

  1. This error originated from a custom integration.

Logger: custom_components.octopus_energy
Source: util/dt.py:133
Integration: Octopus Energy (documentation, issues)
First occurred: 10:40:11 PM (1 occurrences)
Last logged: 10:40:11 PM

Unexpected error fetching rates data: argument 1 must be str, not None
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 187, in _async_refresh
self.data = await self._async_update_data()
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 147, in _async_update_data
return await self.update_method()
File "/config/custom_components/octopus_energy/init.py", line 89, in async_update_data
hass.data[DOMAIN][DATA_RATES] = await client.async_get_rates(product_code, tariff_code)
File "/config/custom_components/octopus_energy/api_client.py", line 48, in async_get_rates
valid_from = as_utc(parse_datetime(item["valid_from"]))
File "/usr/src/homeassistant/homeassistant/util/dt.py", line 133, in parse_datetime
return ciso8601.parse_datetime(dt_str)
TypeError: argument 1 must be str, not None

Hope you can help been trying to get Octopus into HA for a while now

Originally posted by @jimdhope in #12 (comment)

Odd Target Rates behaviour

I'm now on v4.5.0. I've set up two intermittent Target Rates, one for three hours and the other for six hours. No offset and a 00:00 - 23:59 min/max. Here are the results:

image
image

Couple of things seem odd:

  1. The three hours are not a sub-set of the six hours, e.g. the three hour sensor came on at 4pm for 90 mins (during a period that definitely wasn't in the top 3 cheapest hours of the day!).
  2. There is much more than 3/6 hours where each sensor is activated in a 24hr period.

Today's pricing is as follows (incl. a nice plunge in the early morning!):

00:00 - 00:30 | 22.36
00:30 - 01:00 | 6.05
01:00 - 01:30 | 1.05
01:30 - 02:00 | -0.27
02:00 - 02:30 | 0.00
02:30 - 03:00 | -1.64
03:00 - 03:30 | -3.19
03:30 - 04:00 | -8.40
04:00 - 04:30 | -4.20
04:30 - 05:00 | -8.40
05:00 - 05:30 | -7.14
05:30 - 06:00 | 2.10
06:00 - 06:30 | 6.51
06:30 - 07:00 | 23.73
07:00 - 07:30 | 18.06
07:30 - 08:00 | 31.50
08:00 - 08:30 | 35.80
08:30 - 09:00 | 35.80
09:00 - 09:30 | 33.10
09:30 - 10:00 | 30.74
10:00 - 10:30 | 27.89
10:30 - 11:00 | 23.10
11:00 - 11:30 | 20.50
11:30 - 12:00 | 17.26
12:00 - 12:30 | 17.43
12:30 - 13:00 | 14.49
13:00 - 13:30 | 15.58
13:30 - 14:00 | 6.89
14:00 - 14:30 | 13.44
14:30 - 15:00 | 12.01
15:00 - 15:30 | 12.10
15:30 - 16:00 | 16.80
16:00 - 16:30 | 29.40
16:30 - 17:00 | 35.80
17:00 - 17:30 | 35.80
17:30 - 18:00 | 36.75
18:00 - 18:30 | 35.80
18:30 - 19:00 | 38.79
19:00 - 19:30 | 35.80
19:30 - 20:00 | 35.80
20:00 - 20:30 | 35.80
20:30 - 21:00 | 30.60
21:00 - 21:30 | 35.80
21:30 - 22:00 | 29.82
22:00 - 22:30 | 35.80
22:30 - 23:00 | 25.62
23:00 - 23:30 | 35.80
23:30 - 00:00 | 31.08

Finally, I'm still getting the following error when I try to create a new Target Rates sensor without entering min/max times (may also be caused by blank offset?):

Logger: aiohttp.server
Source: custom_components/octopus_energy/config_flow.py:215
Integration: Octopus Energy ([documentation](https://github.com/BottlecapDave/HomeAssistant-OctopusEnergy/), [issues](https://github.com/BottlecapDave/HomeAssistant-OctopusEnergy/issues))
First occurred: 18:12:16 (3 occurrences)
Last logged: 18:12:54

Error handling request
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/aiohttp/web_protocol.py", line 435, in _handle_request
    resp = await request_handler(request)
  File "/usr/local/lib/python3.10/site-packages/aiohttp/web_app.py", line 504, in _handle
    resp = await handler(request)
  File "/usr/local/lib/python3.10/site-packages/aiohttp/web_middlewares.py", line 117, in impl
    return await handler(request)
  File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 60, in security_filter_middleware
    return await handler(request)
  File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 222, in forwarded_middleware
    return await handler(request)
  File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 28, in request_context_middleware
    return await handler(request)
  File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 82, in ban_middleware
    return await handler(request)
  File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 236, in auth_middleware
    return await handler(request)
  File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 136, in handle
    result = await result
  File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 216, in post
    return await super().post(request)
  File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 73, in wrapper
    result = await method(view, request, data, *args, **kwargs)
  File "/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py", line 71, in post
    result = await self._flow_mgr.async_init(
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 225, in async_init
    flow, result = await task
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 252, in _async_init
    result = await self._async_handle_step(flow, flow.init_step, data, init_done)
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 367, in _async_handle_step
    result: FlowResult = await getattr(flow, method)(user_input)
  File "/config/custom_components/octopus_energy/config_flow.py", line 246, in async_step_init
    return await self.__async_setup_target_rate_schema(config, {})
  File "/config/custom_components/octopus_energy/config_flow.py", line 215, in __async_setup_target_rate_schema
    vol.Optional(CONFIG_TARGET_START_TIME, default=config[CONFIG_TARGET_START_TIME]): str,
KeyError: 'Start time'

Appreciate any pointers!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.