I use this utility_meter
sensor
quarter_hourly_grid_consumption:
source: sensor.grid_consumption_kwh
cycle: quarter-hourly
Then I use this input_numbers
to store the maximum peak and the monthly maximum peaks
max_peak_2:
name: Maximum piek 2
min: 0.1
max: 12.0
step: 0.001
mode: box
unit_of_measurement: "kWh"
january_peak_2:
name: Piek januari 2
min: 2.5
max: 12.0
step: 0.001
mode: box
unit_of_measurement: "kWh"
february_peak_2:
name: Piek februari 2
min: 2.5
max: 12.0
step: 0.001
mode: box
unit_of_measurement: "kWh"
march_peak_2:
name: Piek maart 2
min: 2.5
max: 12.0
step: 0.001
mode: box
unit_of_measurement: "kWh"
april_peak_2:
name: Piek april 2
min: 2.5
max: 12.0
step: 0.001
mode: box
unit_of_measurement: "kWh"
may_peak_2:
name: Piek mei 2
min: 2.5
max: 12.0
step: 0.001
mode: box
unit_of_measurement: "kWh"
june_peak_2:
name: Piek juni 2
min: 2.5
max: 12.0
step: 0.001
mode: box
unit_of_measurement: "kWh"
july_peak_2:
name: Piek juli 2
min: 2.5
max: 12.0
step: 0.001
mode: box
unit_of_measurement: "kWh"
august_peak_2:
name: Piek augustus 2
min: 2.5
max: 12.0
step: 0.001
mode: box
unit_of_measurement: "kWh"
september_peak_2:
name: Piek september 2
min: 2.5
max: 12.0
step: 0.001
mode: box
unit_of_measurement: "kWh"
october_peak_2:
name: Piek oktober 2
min: 2.5
max: 12.0
step: 0.001
mode: box
unit_of_measurement: "kWh"
november_peak_2:
name: Piek november 2
min: 2.5
max: 12.0
step: 0.001
mode: box
unit_of_measurement: "kWh"
december_peak_2:
name: Piek december 2
min: 2.5
max: 12.0
step: 0.001
mode: box
unit_of_measurement: "kWh"
This template_sensors
for the maximum peak and the year peak
max_peak_2:
friendly_name: Maximum piek 2
unit_of_measurement: "kWh"
device_class: energy
value_template: >
{% set peak = ((states.sensor.quarter_hourly_grid_consumption.state | float(default=0)) * 4) %}
{% set max_peak = (states.input_number.max_peak_2.state | float(default=0)) %}
{% macro max(X, Y) -%} {{X|float if X|float > Y|float else Y|float }} {%- endmacro %}
{{ max(max_peak, peak) }}
year_peak:
friendly_name: Gemiddelde jaarpiek
unit_of_measurement: "W"
device_class: power
value_template: >
{{ (( states('input_number.january_peak') | float(default=0) +
states('input_number.february_peak') | float(default=0) +
states('input_number.march_peak') | float(default=0) +
states('input_number.april_peak') | float(default=0) +
states('input_number.may_peak') | float(default=0) +
states('input_number.june_peak') | float(default=0) +
states('input_number.july_peak') | float(default=0) +
states('input_number.august_peak') | float(default=0) +
states('input_number.september_peak') | float(default=0) +
states('input_number.october_peak') | float(default=0) +
states('input_number.november_peak') | float(default=0) +
states('input_number.december_peak') | float(default=0) ) / 12) | round(2)
}}
And finale I have 2 automations
alias: Maximum piek 2
id: 546462125er
description: ''
mode: parallel
trigger:
- platform: state
entity_id: sensor.max_peak_2
condition:
- condition: template
value_template: >
{{ states("sensor.max_peak_2") | float(default=0)> states("input_number.max_peak_2") | float(default=0)}}
action:
- service: input_number.set_value
target:
entity_id: input_number.max_peak_2
data:
value: >
{{ states("sensor.max_peak_2") | float(default=0)}}
alias: Maximum maandpiek
id: fevefvdvfzsvf
description: ''
mode: single
trigger:
- platform: template
value_template: '{{ (as_timestamp(now()))|timestamp_custom(''%d'', true) | int == 1 }}'
condition: []
action:
- choose:
- conditions:
- condition: template
value_template: '{{ (as_timestamp(now()))|timestamp_custom(''%m'', true)|int == 2 }}'
sequence:
- condition: template
value_template: >
{{ states("sensor.max_peak_2") | float(default=0)> states("input_number.january_peak_2") | float(default=0)}}
- service: input_number.set_value
target:
entity_id: input_number.january_peak_2
data:
value: >
{{ states("sensor.max_peak_2") }}
- delay:
seconds: 5
- service: input_number.set_value
target:
entity_id: input_number.max_peak_2
data:
value: 0.1
- delay:
minutes: 1
- service: input_number.set_value
target:
entity_id: input_number.february_peak_2
data:
value: 2.5
- conditions:
- condition: template
value_template: '{{ (as_timestamp(now()))|timestamp_custom(''%m'', true)|int == 3 }}'
sequence:
- condition: template
value_template: >
{{ states("sensor.max_peak_2") | float(default=0)> states("input_number.february_peak_2") | float(default=0)}}
- service: input_number.set_value
target:
entity_id: input_number.february_peak_2
data:
value: >
{{ states("sensor.max_peak_2") }}
- delay:
seconds: 5
- service: input_number.set_value
target:
entity_id: input_number.max_peak_2
data:
value: 0.1
- delay:
minutes: 1
- service: input_number.set_value
target:
entity_id: input_number.march_peak_2
data:
value: 2.5
- conditions:
- condition: template
value_template: '{{ (as_timestamp(now()))|timestamp_custom(''%m'', true)|int == 4 }}'
sequence:
- condition: template
value_template: >
{{ states("sensor.max_peak_2") | float(default=0)> states("input_number.march_peak_2") | float(default=0)}}
- service: input_number.set_value
target:
entity_id: input_number.march_peak_2
data:
value: >
{{ states("sensor.max_peak_2") }}
- delay:
seconds: 5
- service: input_number.set_value
target:
entity_id: input_number.max_peak_2
data:
value: 0.1
- delay:
minutes: 1
- service: input_number.set_value
target:
entity_id: input_number.april_peak_2
data:
value: 2.5
- conditions:
- condition: template
value_template: '{{ (as_timestamp(now()))|timestamp_custom(''%m'', true)|int == 5 }}'
sequence:
- condition: template
value_template: >
{{ states("sensor.max_peak_2") | float(default=0)> states("input_number.april_peak_2") | float(default=0)}}
- service: input_number.set_value
target:
entity_id: input_number.april_peak_2
data:
value: >
{{ states("sensor.max_peak_2") }}
- delay:
seconds: 5
- service: input_number.set_value
target:
entity_id: input_number.max_peak_2
data:
value: 0.1
- delay:
minutes: 1
- service: input_number.set_value
target:
entity_id: input_number.may_peak_2
data:
value: 2.5
- conditions:
- condition: template
value_template: '{{ (as_timestamp(now()))|timestamp_custom(''%m'', true)|int == 6 }}'
sequence:
- condition: template
value_template: >
{{ states("sensor.max_peak_2") | float(default=0)> states("input_number.may_peak_2") | float(default=0)}}
- service: input_number.set_value
target:
entity_id: input_number.may_peak_2
data:
value: >
{{ states("sensor.max_peak_2") }}
- delay:
seconds: 5
- service: input_number.set_value
target:
entity_id: input_number.max_peak_2
data:
value: 0.1
- delay:
minutes: 1
- service: input_number.set_value
target:
entity_id: input_number.june_peak_2
data:
value: 2.5
- conditions:
- condition: template
value_template: '{{ (as_timestamp(now()))|timestamp_custom(''%m'', true)|int == 7 }}'
sequence:
- condition: template
value_template: >
{{ states("sensor.max_peak_2") | float(default=0)> states("input_number.june_peak_2") | float(default=0)}}
- service: input_number.set_value
target:
entity_id: input_number.june_peak_2
data:
value: >
{{ states("sensor.max_peak_2") }}
- delay:
seconds: 5
- service: input_number.set_value
target:
entity_id: input_number.max_peak_2
data:
value: 0.1
- delay:
minutes: 1
- service: input_number.set_value
target:
entity_id: input_number.july_peak_2
data:
value: 2.5
- conditions:
- condition: template
value_template: '{{ (as_timestamp(now()))|timestamp_custom(''%m'', true)|int == 8 }}'
sequence:
- condition: template
value_template: >
{{ states("sensor.max_peak_2") | float(default=0)> states("input_number.july_peak_2") | float(default=0)}}
- service: input_number.set_value
target:
entity_id: input_number.july_peak_2
data:
value: >
{{ states("sensor.max_peak_2") }}
- delay:
seconds: 5
- service: input_number.set_value
target:
entity_id: input_number.max_peak_2
data:
value: 0.1
- delay:
minutes: 1
- service: input_number.set_value
target:
entity_id: input_number.august_peak_2
data:
value: 2.5
- conditions:
- condition: template
value_template: '{{ (as_timestamp(now()))|timestamp_custom(''%m'', true)|int == 9 }}'
sequence:
- condition: template
value_template: >
{{ states("sensor.max_peak_2") | float(default=0)> states("input_number.august_peak_2") | float(default=0)}}
- service: input_number.set_value
target:
entity_id: input_number.august_peak_2
data:
value: >
{{ states("sensor.max_peak_2") }}
- delay:
seconds: 5
- service: input_number.set_value
target:
entity_id: input_number.max_peak_2
data:
value: 0.1
- delay:
minutes: 1
- service: input_number.set_value
target:
entity_id: input_number.september_peak_2
data:
value: 2.5
- conditions:
- condition: template
value_template: '{{ (as_timestamp(now()))|timestamp_custom(''%m'', true)|int == 10 }}'
sequence:
- condition: template
value_template: >
{{ states("sensor.max_peak_2") | float(default=0)> states("input_number.september_peak_2") | float(default=0)}}
- service: input_number.set_value
target:
entity_id: input_number.september_peak_2
data:
value: >
{{ states("sensor.max_peak_2") }}
- delay:
seconds: 5
- service: input_number.set_value
target:
entity_id: input_number.max_peak_2
data:
value: 0.1
- delay:
minutes: 1
- service: input_number.set_value
target:
entity_id: input_number.october_peak_2
data:
value: 2.5
- conditions:
- condition: template
value_template: '{{ (as_timestamp(now()))|timestamp_custom(''%m'', true)|int == 11 }}'
sequence:
- condition: template
value_template: >
{{ states("sensor.max_peak_2") | float(default=0)> states("input_number.october_peak_2") | float(default=0)}}
- service: input_number.set_value
target:
entity_id: input_number.october_peak_2
data:
value: >
{{ states("sensor.max_peak_2") }}
- delay:
seconds: 5
- service: input_number.set_value
target:
entity_id: input_number.max_peak_2
data:
value: 0.1
- delay:
minutes: 1
- service: input_number.set_value
target:
entity_id: input_number.november_peak_2
data:
value: 2.5
- conditions:
- condition: template
value_template: '{{ (as_timestamp(now()))|timestamp_custom(''%m'', true)|int == 12 }}'
sequence:
- condition: template
value_template: >
{{ states("sensor.max_peak_2") | float(default=0)> states("input_number.november_peak_2") | float(default=0)}}
- service: input_number.set_value
target:
entity_id: input_number.november_peak_2
data:
value: >
{{ states("sensor.max_peak_2") }}
- delay:
seconds: 5
- service: input_number.set_value
target:
entity_id: input_number.max_peak_2
data:
value: 0.1
- delay:
minutes: 1
- service: input_number.set_value
target:
entity_id: input_number.december_peak_2
data:
value: 2.5
default:
- condition: template
value_template: >
{{ states("sensor.max_peak_2") | float(default=0)> states("input_number.december_peak_2") | float(default=0)}}
- service: input_number.set_value
target:
entity_id: input_number.december_peak_2
data:
value: >
{{ states("sensor.max_peak_2") }}
- delay:
seconds: 5
- service: input_number.set_value
target:
entity_id: input_number.max_peak_2
data:
value: 0.1
- delay:
minutes: 1
- service: input_number.set_value
target:
entity_id: input_number.january_peak_2
data:
value: 2.5