Latest from YouTube Channel

Myenergi Eddi and Home Assistant

October 8th, 2022
YouTube Video

If you have solar panels on your home then chances are you end up exporting a lot of the energy you generate back out to the grid. Home batteries are getting a lot of publicity at the moment, but there are other ways of storing that energy to use later One of the oldest and easiest ways is to store it as heat, and that’s what I’m going to cover in this article.

There are many different Solar Diverter products on the market that allow you to divert your solar energy into storage of some sort, but generally they all work in the same basic way: they detect when you’re exporting power to the grid and turn on your hot water tank’s immersion heater, throttling its power down to match your export.

Each manufacturer has its own unique selling point, and they all tend to rely on you having a hot water tank and an immersion heater. If you have a combi boiler heating system then you’re probably out of luck, although you can get solutions that divert solar energy to pre-heat your central heating circuit which helps to reduce your gas bills a bit.

Will it save you money?

I did a bit of an experiment and monitored the amount of gas needed to heat my hot water tank using the boiler. As you can see in this graph it used 4.2 kWh worth of gas. That took the tank from 22 degrees to about 50 degrees. To get up to 55 degrees it needed another 2 kWh but I’m going to play fair here and say that only 4.2 kWh was needed because if I was using the boiler daily to heat the tank, it would never drop down as far as 20 degrees.

Now, if we look at using an immersion heater instead, my early morning boost used 1.16 kWh and that took the water temperature from 48 degrees up to 60 degrees.

Ok, so the big difference here is that the gas boiler was heating the whole tank, and that temperature measurement is taken about one-third of the way up from the bottom of the tank. The immersion heater however is top-mounted and only heats the top third of the tank. So you are getting less hot water, but it’s plenty for a couple of showers in the morning and certainly works out cheaper than using gas. Let’s talk a bit more about the solution controlling that immersion heater though.

Installing Eddi

I chose a product from a British company called Myenergi. If you’re reading this then chances are you’re already probably quite familiar with their products. They make an electric car charger called the Zappi, and a solar diverter called Eddi. Myenergi have bought out a new version of Eddi since I installed mine. The new version has Wi-fi built-in, but my older version requires a dedicated hub in order to connect to the internet.

The installation is quite simple… Eddi sits near your hot water tank, your immersion heater element wires directly into Eddi, and  the power supply for your immersion instead powers Eddi.

I then have a hub in my garage that’s hard-wired to my network, no wifi available on this version, but as I said if you get a new Eddi then you don’t need a hub anymore.

Finally, Eddi needs to be able to monitor your home’s power feed so as it knows when you’re importing or exporting. You can either connect a Myenergi CT clamp directly to Eddi and run it over cat 5e cable to your meter tails, or, in my case and I suspect the case of nearly everyone else you can use Myenergi’s Harvi.

Harvi is quite clever, you wire your CT clamps into it and it pairs with Eddi wirelessly. Harvi doesn’t need an external power supply at all, it harvests it from the CT clamps. Now at a bare minimum you need one CT clamp and that must be around your home’s main live meter tail.

But… there’s a small issue you might experience if you go with that minimum. If you’re exporting or importing power, then there’s a current flowing through your main meter tail. That current powers the Harvi, but if that power is being diverted into your hot water or battery, then there may be no current flowing through your meter tail at all. In that situation your Harvi suddenly has no power. To avoid that situation you should also put a CT Clamp around your solar feed and, if you have one, your battery feed too, Harvi lets you connect up to three CT clamps and connecting all three will give you the best data experience in the Myenergi app too.

There are several advantages of the Eddi compared to other solar diverter solutions:

  • If you have a Zappi car charger then it makes a lot of sense to use Eddi too because the two work really well together. You can adjust the priorities between them, diverting power to your hot water or your car depending on what you need at that moment in time.
  • Secondly Eddi supports two different resistive load, so you could have two immersion heaters in one tank, or another heating system wired into it. It can work quite well with some heat pump systems too.
  • Which brings me to the third advantage – there’s an optional extra sensor and relay board that you can install inside the Eddi that opens up a whole new world of possibilities.

This add-on board includes a couple of relays that can be used to turn on other kit around your home to eat up excess solar energy. It lets you nicely integrate it with a number of heat pump systems too, but the reason I installed this add-on board is because it lets you connect temperature sensors to it that allow you to monitor the temperature of your hot water tank.

Installing the add-on board is straightforward but a bit tricky. You need to open it up, take out the display board, then fit the add-on board to the main board.

You can then connect a PT1000 temperature probe to the add-on board. My hot water tank is an old copper one covered in a few centimetres of insulation foam. I poked a hole in the foam near the top of the tank, very gently, with a screwdriver, so as the probe could fit very snugly directly against the copper tank. I put a bit of thermal compound on the end of the probe just to help with its contact against the tank and improve the reliability of the reading.

Myenergi Home Assistant Integration

And on to the Home Assistant integration. Now this is where I need to point out the biggest disadvantage of the Myenergi family of products. Remote management and monitoring of Eddi and Zappi is only available over the internet, there is no local control at all. This means that you are very reliant on both your own internet connection and Myenergi’s servers being up and running.

The Myenergi integration is not built-in to Home Assistant, and you need to install it using HACS. Make sure you have HACS installed first, you can follow my guide on how to do that here if you need to.

Once you have HACS installed, open up the main HACS page, click on Integrations, then the blue Explore and Download Repositories button in the bottom-right. Search for Myenergi. Follow the on-screen instructions to download/install it. Once installed, you will need to restart Home Assistant before you can configure it, so do that using the option in Developer Tools.

Once restarted, go to Settings, Devices and Service, the blue Add Integration button in the bottom-right and search for Myenergi. Click on that, and you’ll be asked to input your hub’s serial number and Myenergi API key.

You can get your hub serial number either from the Myenergi app by tapping on the menu icon in the top-left – it will be displayed at the top and labelled HUB, or you can log in to myaccount.myenergi.com, view My Devices and you’ll see it there too. On that same page you can get your API key by clicking on the Advanced button and then clicking on Generate new key. Copy and paste this generated key somewhere safe because you’ll never be able to see it again, only generate new ones instead.

Back to Home Assistant, paste in both values, click on Submit and you’re done! Your devices will appear in your devices list and are ready to be used. If you’ve got the add-on sensor and relay board then you’ll even be able to see the temperature data.

Automations

To give you an idea of how this might be useful, I’m going to quickly show you a couple of automations that are running in my home. Within the Myenergi app you can schedule a boost, so in there I have set the schedule for one hour at 3:30am every day. This is during my off-peak energy time.

My first automation runs at 5:30am, which is about 30 minutes before my boiler would kick in to heat the hot water tank. If the Eddi mode is normal, which means it hasn’t been disabled due to us being away or something, then it moves on to check if the water temperature at the top of the tank is above 50 degrees. If it is, then the automation sets an override on the Evohome hot water controller for 20 hours. Otherwise, it does nothing and lets the Evohome schedule use the gas boiler to heat the water. This is effectively a failsafe, we want to use Eddi to heat the water where possible, but if for some reason that fails then the gas boiler will take over and I won’t be in trouble in the morning.

Originally I had the automation actually start the boost on the Eddi, but I think due to the fact it’s a web API not local control, it seemed to fail a couple of times a week. Since using the Myenergi scheduling instead, it has been very reliable.

alias: "Hot Water: Override Evohome if water is hot enough"
description: If tank is hot enough in the morning, override Evohome
trigger:
  - platform: time
    at: "05:30:00"
condition:
  - condition: state
    entity_id: select.myenergi_eddi_XXXXXXXX_operating_mode
    state: Normal
  - condition: state
    entity_id: input_boolean.manual_override
    state: "off"
action:
  - choose:
      - conditions:
          - condition: numeric_state
            entity_id: sensor.myenergi_eddi_XXXXXXXX_temp_tank_1
            above: "50"
        sequence:
          - service: ramses_cc.set_dhw_mode
            data:
              mode: temporary_override
              active: false
              duration:
                minutes: 1200
              entity_id: water_heater.stored_hw
          - service: notify.persistent_notification
            data:
              message: Hot water tank is up to temperature. Disabling Evohome.
    default:
      - service: notify.persistent_notification
        data:
          message: Hot water tank too cold. Using Evohome.
mode: single

So the second automation I want to show you is slightly more complex. On days with decent weather, by the afternoon the hot water would already be up to temperature for free, but on dull days you might need a bit of a boost.

This automation runs every afternoon at 4pm and its purpose is to alert you if it thinks the hot water needs a boost. Now, originally this automation would check the temperature, and if it was below 50 degrees it would automatically boost it. But, I realised that unless we were planning on having a shower that evening, then that was a bit of a waste of energy. Instead, this automation now sends a message to my Apple Watch telling me the current tank temperature, what percentage my home battery is at, and asking me if I’d like to boost the hot water. If I tap on the Yes button, then this automation calls a special script which will boost the temperature to above 50 degrees.

alias: "Hot Water: Eddi Boost/Evohome Override in Afternoon"
description: ""
trigger:
  - platform: time
    at: "16:00"
condition:
  - condition: state
    entity_id: select.myenergi_eddi_XXXXXXXX_operating_mode
    state: Normal
  - condition: state
    entity_id: input_boolean.manual_override
    state: "off"
  - condition: numeric_state
    entity_id: sensor.myenergi_eddi_XXXXXXXX_temp_tank_1
    below: "50"
action:
  - service: notify.oliver
    data:
      message: >-
        Hot Water is {{ states('sensor.myenergi_eddi_XXXXXXXX_temp_tank_1')
        }}°C. Do you want to boost it now? Battery is at {{
        states('sensor.givtcp_YYYYYYYYYY_soc') }}%
      data:
        actions:
          - action: BOOST_HW_YES
            title: "Yes"
            icon: sfsymbols:arrow.up
  - alias: Wait for a response
    wait_for_trigger:
      - platform: event
        event_type: mobile_app_notification_action
        event_data:
          action: BOOST_HW_YES
  - service: script.turn_on
    data: {}
    target:
      entity_id: script.hot_water_boost_50
mode: restart
alias: Hot Water Boost (50)
sequence:
  - service: myenergi.myenergi_eddi_boost
    target:
      device_id: 3e606e07cfa9db00bc4158001bab7a09
    data:
      target: Heater 1
      time: 30
  - delay:
      hours: 0
      minutes: 0
      seconds: 30
      milliseconds: 0
  - wait_for_trigger:
      - platform: numeric_state
        entity_id: sensor.myenergi_eddi_XXXXXXXX_temp_tank_1
        above: "49"
    timeout:
      hours: 1
      minutes: 0
      seconds: 0
      milliseconds: 0
    continue_on_timeout: false
  - service: myenergi.myenergi_eddi_boost
    target:
      device_id: 3e606e07cfa9db00bc4158001bab7a09
    data:
      target: Heater 1
      time: 1
mode: single
icon: mdi:water-boiler

In order to limit the boost temperature to 50 degrees, you have to fudge it a little. This script sets a boost time of 30 minutes. It then watches the tank temperature until it goes above 49 degrees, and then sets another boost for 1 minute. So if it take 16 minutes to get to 50 degrees, then the boost will run for 17 minutes, means you save 13 minutes of boost time energy compared to if you didn’t use this script.

Legionella warning! It’s important that you make sure your stored water is regularly heated to at least 60 degrees celsius in order to avoid a build-up of the dangerous legionella bacteria. My tank always boosts to 60 degrees during the early hours of the morning using my off-peak energy tariff, inline with UK HSE guidelines: https://www.hse.gov.uk/healthservices/legionella.htm. My 50 degree boosts are purely used when either the solar boosting has been insufficient during a day, or additional showers are required.

And that’s it, I hope you found the overview of Eddi useful, and manage to find a good use for the integration into Home Assistant. At the very least you should find the data it provides handy, and the energy sensors can be used in the Home Assistant energy dashboard too.

  • As an Amazon Associate I earn from qualifying purchases.