Octopus Energy Agile Tariff

Thanks, so is it working ok now, if you restart AppDaemon?
As this line in the traceback:

  File "/conf/apps/octoblock/octoblock.py", line 10, in initialize
    self.run_every(self.get_best_period_and_cost, time, 30 * 60)

isn’t in the current code.

Ok, Thats Odd

I noticed I had two appdaemon/apps folders, one in my appdaemon container where my other apps run happily and one in my homeassistant container and both had an octoblock folder in them

So I deleted the plugin via HACS and checked in the appdaemon container in the apps folder and octoblock was not removed so checked under my homeassistant container and it was gone

I deleted all octoblock folders, reinstalled via HACS and it has recreated under my homeassistant folder in appdaemon/apps and not in the apps folder in my appdaemon contaniner

It seem to be working this way but about to re-add my hourly blocks in and test

Any idea why it creating in the homeassistant container under appdaemon/apps and not in the appdaemon apps folder?

I’m not really sure. When I’ve install any appdaemon thing though HACS they end up in /config/appdaemon/apps/

Maybe its that I have mine in docker and seperate appdaemon and homeassistant but hacs is a custom component so does it under homeassistant container

Its working both ways, so all fine. Will try and see if I can get HACS to use the appdaemon container but that my issue

Cheers

Landed up just changing my appdaemon /config folder to the homeassistant/appdaemon folder

Just easier

@mcon

Are you on the Octopus forum?

If so have a look at https://forum.octopus.energy/t/a-tool-to-reconcile-agile-bills/771/50

I have just ran the calculations from 28-09-2019 to 27-03-2020
On my fixed price Tariff it has cost me £165.66 inc VAT for Electric
If I had been on Agile it would have cost me £122.38 inc VAT
I would have made a saving of £43.28 that is with out shifting any time of use about.

Now I have a better understanding of 4pm to 7pm no go zone and the ability to Grid Charge my Battery Bank / Limit when and how much it can charge and discharge at I should be able to make further savings.

I have just switched to Agile. Today is my first day!

Now that I have full battery control on my Solax Inverter / Battery Setup I am starting to put the pieces together to control my energy use / charging from the battery depending on the Solar Forecast and Agile pricing. So I can charge at cheaper points of time etc

Hey no i’m not - thanks for pointing it out. I’ve just switched over to agile today so I’ll drop them a message and sign up.

Straight away I’ve moved a couple of ‘dumb’ heavy use devices to the early hours which I’m expecting to make quite a difference. Triggering stuff is my next task.

I’m waiting on my switchover to octopus and then agile in the next couple of weeks. I’ve been working on a component to automatically switch on devices devices at the cheapest n hours, for example my immersion heater needs to be on for 5 hours a day and at least 1 hour at night and 1 hour in the day. As well at doing things like turning the immersion on for all times that the price is negative and turning the heating up a notch. If you’re interested, I will try and get it uploaded to github over the weekend.

Interesting to see what people are Saving, over the last week my home assistant integrations predict that i will save roughly £2/day just on water heating, and the odd bit of our electric central heating kicking in. So hopefully we’ll worth paying the £30 early exit fee from our old supplier.

nice idea for the water - what relay are you using to switch an immersion heater?

definitely interested in the component too - are you also running octocost and octoblock?

I’m using a sonoff pow2 Running tasmota for the immersion, I am still looking around for other options though. There is a time guard fused spur that looks good but I can’t find any documentation to see if it’s controllable from our side their own app.

I hadn’t seen octocost or octoblock when I started looking at this and to be honest I’ve been using it as a bit of a learning experience to write components for home assistant so carried on with what I was doing, but I will most likely be using them once my switchover is complete.

In the last few weeks the cheapest time has often been in the afternoon before the 4pm peak. Even been negative, so don’t assume early hours are cheapest. Octopus Agile Southern Scotland | Energy Stats UK

1 Like

I’m using a Shelly 1PM for mine. Works out of the box with no flashing, supports local MQTT/HTTP with no cloud requirement, does power monitoring and can support a backup “real” switch in case all my high-tech fiddling stops working and we need hot water :slight_smile:

One consideration is that the device’s reported internal temperature can quite high. Mine reports 80°C internal after half an hour running the 3kW immersion. It allegedly has safety cut-off if the temperature gets too high, but I’ve never seen this triggered, and the outside of the wall-mounted back box I have it inside doesn’t get particularly hot. I think it’s just because it’s a small and enclosed circuit.

I am in the process of moving to Octopus and will move onto agile when I can get the meter installed however I currently controll my waterheater via a few automation and have replaced the supplied timer with 2 x sonoff POW2 with tasmota on them as I have two 2500w elements in my water heater (off peak/peak) and can control on the sonoff, home assistant or via Alexa HA integrations

Big concern was having them on at the same time as the fused switch would not be able to handle them on at the same time so I have an automation in Home Assistant that if the top one is on, the bottom one turns off and visa versa. The same is for the physical button on them, If you press the physical button on one off them, the automation kicks in and switches the other off

Still to do is turn the physical button press into a timed action rather than just on/off so that it can be used as a “Boost” button and want to see if I can get the automation that switches them on/off when the other is on done via tasmota that way its a standalone solution but I am thinking of replacing them with a 2/4ch sonoff and using contactors as it will solve the reliance on HA for the logic but will also look neater

I have one for night time as I am still on Economy 7 with my old supplier (until the switch is done) which I will be replacing with the octoblock p/kWh for agile pricing and when it drops below say 2p/kWh or less in the night it will turn on the main element and then during the day it will do the boost element to top up

The other I have is when ever I am produciong more than 3000w solar then the main element switches on and turns off if my solar goes below 2000w

Anyway of having a nice list of the next 24 hours? having to use an app on my phone, would prefer to ditch that for home assistant, have used the current price provided here, thankyou very much the bottom half is all past my knoweldge as a nooby

@mcon I’ve uploaded the component to https://github.com/markgdev/home-assistant_OctopusAgile.

Hopefully the README is enough to get you going, if I’ve missed anything give me a shout.

@Creatish I’ve put an example image of how I’m viewing the rates in the readme on the repo above, it’s the best I’ve come up with so far. I am going to have a better look around to see if there are any custom lovelace cards to create a table of attributes that I can use with this.

I’ve also been compiling a python library to use on the backend of home assistant that will work outside of home assistant just as well. I originally used it to summarise the last years rates and create and average to estimate how much I could save if I switched. https://github.com/markgdev/OctopusAgile

Wow. This looks fantastic - nice work. Will try it out today.

Got it up and running.

The prev/current/next rates are working great - I really wanted to find a way to add ‘current’ in particular so thanks very much for sharing your work on that - makes a very helpful addition for this panel which has some octoblock and octocost bits in as well.

Really like your timers implementation - I can trigger my washing machine cycle from HA so I’ve set up a timer to run it at the cheapest time - waiting to see what it does - this will really be something.

I also tried out ‘run times’ but it doesn’t appear to be generating the entities for these so I can’t display them. Any ideas? Extract from my config looks like this (I have the sensor higher up). I couldn’t get the rates entity working either.

OctopusAgile:
  region_code: "J"
#  moneymakers:
#  - switch.water_heater: null
#  - climate.downstairs: 
#      params:
#        temp: 25
  timers:
  - day_from: today
    day_to: today
    entity_id: switch.washing_machine
    numHrs: 4
    paramms: null
    requirements:
      - day_from: today
        day_to: today
        numHrs: 4
        time_from: '09:00:00'
        time_to: '21:00:00'
#      - day_from: tomorrow
#        day_to: tomorrow
#        numHrs: 1
#        time_to: '16:00:00'
#        time_from: '19:00:00'
#        time_to: '19:00:00'
#        time_from: '10:00:00'

  run_devices:
  - energy_time: 2
    entity_id: washer
    run_before: '21:00:00'
    run_time: 2
  - energy_time: 2
    entity_id: dryer
    run_before: '21:00:00'
    run_time: 2
  - energy_time: 2
    entity_id: dishwasher
    run_before: '21:00:00'
    run_time: 2
1 Like

Pretty sure your config is correct other than a couple of tweaks to the timer which I note below. I think I missed a step in the setup, because mine is already running I forgot about it getting everything to initialize. If you were to wait until tonight I think everything would run ok.
Do you see the services octopusagile.update_timers and octopusagile.half_hour? Hopefully you also see an entity called octopusagile.update_timers_nextupdate and it’s set to 1900 tonight and octopusagile.half_hour_timer_nextupdate which is hopefully set to the next half hour, but is probably failing to run if update_timers hasn’t run yet. Assuming you do see them, call the update_timers service from the developer tools followed by the half_hour timer.
With a bit of luck that works, I will have a look at making that happen on startup if nothing is populated.
One thing to note is that the timers won’t give you 4 hours in one block as it is now, it’ll give you the cheapest 4 hours worth of slots in that period. It shouldn’t be too hard for me to add that in though, I can see that would be useful.
Your timer shouldn’t need the requirements block, but put the time_from and time_to into the main block


timers:
  - day_from: today
    day_to: today
    entity_id: switch.washing_machine
    numHrs: 4
    paramms: null
    time_from: '09:00:00'
    time_to: '21:00:00’

Thanks that worked a treat. I do have to re-call the service after each restart if I want it to work for ‘today’ but it completely solves the problem once I do that.

A few follow up uses and ideas I’ve had plus a couple of questions and suggestions…

  • Today’s rates - is it possible to graph these or display on a dash without having to click an entity? I tried history but it doesn’t render a graph

  • I’m using it to trigger a tts “premium rate” announcement when rates go over 16p - works brilliantly - planning to do more stuff with this like “if the washing machine comes on and rates are over X then announce a warning and propose a better time”. Is there a smarter way of doing this? i.e. spotting the spike or spotting when it becomes a multiple of itself?

  • One very nice addition to your runtimes would be if one could force an event to be after another - for example, washing machine needs to run in the cheapest block after a washing machine event - at the moment both suggest the same time.

Thanks again for your help and efforts

How did you get your usage in HA?

thanks