Add script for moving peaks

This commit is contained in:
zyberzero 2024-12-01 17:40:14 +00:00 committed by Fritiof Hedman
commit 2e17dadd27
3 changed files with 134 additions and 0 deletions

102
peaks/automations/peak.yaml Normal file
View File

@ -0,0 +1,102 @@
alias: Peak number
description: ""
triggers:
- entity_id:
- sensor.hourly_power
to: "0"
trigger: state
conditions: []
actions:
- if:
- condition: template
value_template: "{{ now().day == 1 and now().hour == 0 }}"
then:
- metadata: {}
data:
value: "{{ states('input_number.peak_power_3') }}"
target:
entity_id: input_number.peak_power_1
action: input_number.set_value
- metadata: {}
data:
value: 0
target:
entity_id: input_number.peak_power_2
action: input_number.set_value
- metadata: {}
data:
value: 0
target:
entity_id: input_number.peak_power_3
action: input_number.set_value
else:
- choose:
- conditions:
- condition: template
value_template: >-
{{ previous > states.input_number.peak_power_1.state | float
}}
sequence:
- metadata: {}
data:
peak: 2
action: script.move_down_peak
- metadata: {}
data:
peak: 1
action: script.move_down_peak
- metadata: {}
data:
value: "{{ previous }}"
target:
entity_id: input_number.peak_power_1
action: input_number.set_value
- metadata: {}
data:
date: "{{ (now()-timedelta(hours = 1)).strftime('%Y-%m-%d') }}"
target:
entity_id: input_datetime.peak_power_1
action: input_datetime.set_datetime
- conditions:
- condition: template
value_template: >-
{{ previous > states.input_number.peak_power_2.state | float
}}
sequence:
- metadata: {}
data:
peak: 2
action: script.move_down_peak
- metadata: {}
data:
value: "{{ previous }}"
target:
entity_id: input_number.peak_power_2
action: input_number.set_value
- metadata: {}
data:
date: "{{ (now()-timedelta(hours = 1)).strftime('%Y-%m-%d') }}"
target:
entity_id: input_datetime.peak_power_2
action: input_datetime.set_datetime
- conditions:
- condition: template
value_template: >-
{{ previous > states.input_number.peak_power_3.state | float
}}
sequence:
- metadata: {}
data:
value: "{{ previous }}"
target:
entity_id: input_number.peak_power_3
action: input_number.set_value
- metadata: {}
data:
date: "{{ (now()-timedelta(hours = 1)).strftime('%Y-%m-%d') }}"
target:
entity_id: input_datetime.peak_power_3
action: input_datetime.set_datetime
variables:
previous: "{{ trigger.from_state.state | float }}"
mode: single

8
peaks/info.md Normal file
View File

@ -0,0 +1,8 @@
# Requirements
Three input numbers, named peak_power_1, peak_power_2 and peak_power_3.
Three input date times (set to date), with the same name
One utility meter set to what ever frequency you need (in my case, 1 hr). It should integrate over your energy meter.
It should be named hourly_power

View File

@ -0,0 +1,24 @@
alias: move_down_peak
sequence:
- metadata: {}
data:
date: "{{ states.input_datetime[\"peak_power_\" + (peak | string)].state }}"
target:
entity_id: input_datetime.peak_power_{{ peak + 1}}
action: input_datetime.set_datetime
- metadata: {}
data:
value: "{{ states.input_number[\"peak_power_\" + (peak | string)].state }}"
target:
entity_id: input_number.peak_power_{{ peak + 1}}
action: input_number.set_value
mode: single
fields:
peak:
selector:
number:
min: 1
max: 100
name: peak
required: true
default: 1