Using solar over-production to heat boiler

Do we already have a blueprint for: using over-production, shown in purple in the Energy dashboard, to heat my electric boiler?

I would like to setup an automation that triggers a switch. If my production is over a certain threshold (let’s say 1.000 Watt) I would like to switch on the boiler for hot water and keep it on as long as the production is more then I’m using. And it would be great if the boiler is on on ‘peak’ times like 7-8am.

In the Netherlands, like te rest of Europe, gas prices are rising like crazy and I have some extra kWh’s which I would like to use to reduce my gas usage.

2 Likes

I would be very interested. I’ve been trying to implement the logic for a while and it’s not easy. Especially when the inverter is only updated every minute and the electricity meter is updated in real time.

Hi,
I can submit these automations:

## automation for heat boiler when I have solar over-production
# heat boiler is drived with a REST command
# and its state is returned in sensor.heat_boiler_state (0 for OFF, 1 for ON)
# in my case, solar over-production is given by a negative number

  - alias: heat boiler - start
    description: 'start heat boiler when I have solar over-production'
    mode: single
    trigger:
      platform: event
      event_type: state_changed
      event_data:
        entity_id: sensor.power_injection
    condition:
      condition: and
      conditions:
        - alias: 'over-production > 1000 W'
          condition: numeric_state
          entity_id: sensor.power_injection
          value_template: '{{ -(state.state | float) }}'
          above: '1000'
        - alias: 'heat boiler is OFF'
          condition: numeric_state
          entity_id: sensor.heat_boiler_state
          below: '0.5'
    action:
    - alias: 'wait to confirm that over-production is really here'
      delay:
        hours: 0
        minutes: 2
        seconds: 0
        milliseconds: 0
    - alias: 'heat boiler becomes ON'
      service: rest_command.com_bouton
      data:
        item: 1
    - alias: 'small wait to not restart immediatly'
      delay:
        hours: 0
        minutes: 0
        seconds: 30
        milliseconds: 0

  - alias: heat boiler - stop
    description: 'I stop heat boiler when I have no more over-production'
    trigger:
    - alias: 'no moer over-production'
      platform: numeric_state
      entity_id: sensor.power_injection
      above: '-1'
    condition: []
    action:
    - alias: 'heat boiler becomes OFF'
      service: rest_command.com_bouton
      data:
        item: 0
    mode: single
1 Like

For the next one who searches for a similar solution I’ll post my final solution.

I got a Itho Daalderop Close-up boiler, 15 liters. This is sufficient for a 7 minute shower session. It’s connected to my Intergas boiler in a way that if the electric boiler is empty the gas boiler will take over. As a fall-back.

These are the two automations I’ve used. I’m using my smart meter and the production data.

It’s a 2kW boiler and my solar setup has a maximum production of 3.5kW. Currently I can use the grid a battery, meaning my energy company creates a bill based on net usage.

- id: '1665000372764'
  alias: Boiler solar on < -1250
  description: ''
  trigger:
  - platform: numeric_state
    entity_id: sensor.power_consumption_net
    for:
      hours: 0
      minutes: 2
      seconds: 0
    below: -1250
  condition:
  - condition: numeric_state
    entity_id: sensor.envoy_122138022567_current_power_production
    above: 1
  - condition: state
    entity_id: sensor.power_tariff
    state: normal
  - condition: numeric_state
    entity_id: sensor.energy_day_net
    below: 0
  action:
  - service: switch.turn_on
    data: {}
    target:
      entity_id: switch.ac_13bc0cfe_9
  mode: single
- id: '1665000420150'
  alias: Boiler solar off > 1200
  description: ''
  trigger:
  - platform: numeric_state
    entity_id: sensor.envoy_122138022567_current_power_production
    below: 200
    enabled: true
    for:
      hours: 0
      minutes: 3
      seconds: 0
  - platform: numeric_state
    entity_id: sensor.power_consumption_net
    for:
      hours: 0
      minutes: 6
      seconds: 0
    above: 1200
  condition: []
  action:
  - service: switch.turn_off
    data: {}
    target:
      entity_id: switch.ac_13bc0cfe_9
  mode: single
1 Like

hallo, is het nog gelukt? ik wil precies hetzelfde gaan doen ik ben vrij nieuw met home assistant. kan jij mij op weg helpen? ik heb zonnepanelen en wil dat mn electrische boiler aangaat door mn smart stekker te activeren als ik 1500kw over capiciteit heb.

gr Bill

1 Like

Yes, I succeed using the automation as in the post. I’m using the data from my Smartmeter which turns negative as my panels generate power. If I generate power and my net usage is lower then -1250 Watt for 2 minutes I switch on the boiler.

Oke, what steps did you do?have you a simplified manual? I use a zigbee power socket. Ik can automate the socket on and off. I don’t no where to start :frowning:
Greetz Bill

I posted my automation on Oct 14 @billboon1966

sensor.energy_day_net is a template sensor where I sum 2 power values I get from my ‘slimme meter’.

dit heb ik gedaan ; maar het werkt niet wat staat fout. ik heb geen template zoals jij , zover ben ik nog niet. ik heb even als test maar 200 w aangehouden om te zien of de schakelaar aan gaat , maar helaas.

alias: boiler gaat aan
description: “”
trigger:

  • type: power
    platform: device
    device_id: cf01db618558bd210fa6ac94054c1e79
    entity_id: sensor.p1_meter_5c2faf041956_active_power_l3
    domain: sensor
    above: 1
    below: -200
    condition:
  • type: is_power
    condition: device
    device_id: cf01db618558bd210fa6ac94054c1e78
    entity_id: sensor.p1_meter_5c2faf041956_active_power_l3
    domain: sensor
    above: 0
    below: 1
    action:
  • type: turn_on
    device_id: 2ed1c18ed3f1cc215bf1df411cf75d5e
    entity_id: switch.huiskamer_socket_socket_1
    domain: switch
    mode: single

wat gaat er fout? greetz Bill

As far as I can see you have 2 triggers on the same sensor (should avoid that). Let’s use one trigger and only fill ‘below’. Currently it doesn’t trigger on because it can never be >1 and <-200 at the same time. Maybe re-use the example that I posted earlier.

My reply is in English so the complete community can learn if needed.

yes oke but you used a template, that i not have. but for now thanks for your feedback!