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