commit 2e17dadd27d6233b71bef4a83222a2c57930b267 Author: zyberzero Date: Sun Dec 1 17:40:14 2024 +0000 Add script for moving peaks diff --git a/peaks/automations/peak.yaml b/peaks/automations/peak.yaml new file mode 100644 index 0000000..f416fff --- /dev/null +++ b/peaks/automations/peak.yaml @@ -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 diff --git a/peaks/info.md b/peaks/info.md new file mode 100644 index 0000000..838584b --- /dev/null +++ b/peaks/info.md @@ -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 + diff --git a/peaks/scripts/move_peak.yaml b/peaks/scripts/move_peak.yaml new file mode 100644 index 0000000..4f03e2f --- /dev/null +++ b/peaks/scripts/move_peak.yaml @@ -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