Utility_meter cyles

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
4 Likes