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