Add script for moving peaks
This commit is contained in:
commit
2e17dadd27
102
peaks/automations/peak.yaml
Normal file
102
peaks/automations/peak.yaml
Normal 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
8
peaks/info.md
Normal 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
|
||||||
|
|
24
peaks/scripts/move_peak.yaml
Normal file
24
peaks/scripts/move_peak.yaml
Normal 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
|
Loading…
Reference in New Issue
Block a user