blueprint: name: evcharge_process description: Mange charging process between two charging points domain: automation author: Tiziano Trabattoni input: evcharge_entity1: name: Charge via 'Controlled Plug1' description: Identifies the Switch1 (eg EVcharge-front) selector: entity: filter: - domain: switch evcharge_entity2: name: Charge via 'Controlled Plug2' description: Identifies the Switch2 (eg EVcharge-back) selector: entity: filter: - domain: switch use_entity1: name: Enable charge via 'Controlled Plug1' description: Identifies the input flag for charging on 'Controlled Plug1' (eg EVcharge_front_request) selector: entity: filter: - domain: input_boolean use_entity2: name: Enable charge via 'Controlled Plug2' description: Identifies the input flag for charging on 'Controlled Plug2' (eg EVcharge_back_request) selector: entity: filter: - domain: input_boolean start_button: name: start_button description: Identifies the button to start EVcharge process selector: entity: filter: - domain: input_button triggers: - trigger: state # Want to trigger start now entity_id: !input start_button id: start_now - trigger: time # Start at F3 start tome at: input_datetime.evcharge_good_time_start id: start_at_good_time # for time being let's do sequential charge for Plug1 and then Plug2 mode: single # here we could stop immediately if sensor.pw_load_power is above 5000W but lets decide after conditions: [] variables: evcharge_entity1_var: !input evcharge_entity1 evcharge_entity2_var: !input evcharge_entity2 use_entity1_var: !input use_entity1 use_entity2_var: !input use_entity2 recipient_list: - notify.mobile_app_ttrabatt_iphone15 #- notify.mobile_app_emanuele_s24 actions: - if: - or: - condition: template #value_template: "{{ is_state(evcharge_entity1_var, 'on') }}" # TEST ONLY: value_template: "{{ false }}" value_template: "{{ false }}" - condition: template #value_template: "{{ is_state(evcharge_entity2_var, 'on') }}" # TEST ONLY: value_template: "{{ false }}" value_template: "{{ false }}" then: # charge already active, send message and terminate repeat: for_each: "{{ recipient_list }}" sequence: - action: "{{ repeat.item }}" metadata: {} data: message: >- "EVcharge process is ALREADY RUNNING" title: EV Charge process ERROR else: sequence: - if: - condition: template value_template: "{{ is_state(use_entity1_var, 'on') }}" then: # EVcharge entity_1 (eg front) charge is requested sequence: - repeat: # send message to all recipient-list members for_each: "{{ recipient_list }}" sequence: - action: "{{ repeat.item }}" metadata: {} data: message: >- "EVcharge process on {{ evcharge_entity1_var }} has started" title: EV Charge process # Wait before starting charge - delay: 10 # Start plug1 and wait until power measured is below input_number.evcharge_no_charge_threshold for 10 minutes = 600 seconds - action: switch.turn_on # entity_id: !input evcharge_entity1 # TEST ONLY: entity_id: switch.presa_smart_1 entity_id: switch.presa_smart_1 # need to wait car to start charging #- delay: 60 # TEST ONLY: - delay: 10 - delay: 10 - repeat: # until: "{{ ( states( evcharge_entity1_var, 'power') | int ) < ( states('input_number.evcharge_no_charge_threshold') | int ) }}" until: "{{ ( states('input_number.test_evcharge_front') | int) < (states('input_number.evcharge_no_charge_threshold') | int) }}" sequence: - delay: 60 - action: switch.turn_off # entity_id: !input evcharge_entity1 # TEST ONLY: entity_id: switch.presa_smart_1 entity_id: switch.presa_smart_1 - repeat: for_each: "{{ recipient_list }}" sequence: - action: "{{ repeat.item }}" metadata: {} data: message: >- "EVcharge process on {{ evcharge_entity1_var }} has ended" title: EV Charge process # wait couple of minutes before starting charge on plug2 #- delay: 120 # TEST ONLY: - delay: 10 - delay: 10 - if: - condition: template value_template: "{{ is_state(use_entity2_var, 'on') }}" then: sequence: # then start plug2 and wait until power measured is below input_number.evcharge_no_charge_threshold for 10 minutes = 600 seconds - repeat: # send message to all recipient-list members for_each: "{{ recipient_list }}" sequence: - action: "{{ repeat.item }}" metadata: {} data: message: >- "EVcharge process on {{ evcharge_entity2_var }} has started" title: EV Charge process # turn_on evcharge_entity1 - action: switch.turn_on # entity_id: !input evcharge_entity1 # TEST ONLY: entity_id: switch.presa_smart_2 entity_id: switch.presa_smart_2 # need to wait car to start charging #- delay: 120 # TEST ONLY: - delay: 10 - delay: 10 - repeat: # until: "{{ state_attr( evcharge_entity2_var, 'power') < states('input_number.evcharge_no_charge_threshold') }}" until: "{{ ( states('input_number.test_evcharge_back') | int) < ( states('input_number.evcharge_no_charge_threshold') | int) }}" sequence: - delay: 60 - action: switch.turn_off # entity_id: !input evcharge_entity2 # TEST ONLY: entity_id: switch.presa_smart_2 entity_id: switch.presa_smart_2 - repeat: # send message to all recipient-list member for_each: "{{ recipient_list }}" sequence: - action: "{{ repeat.item }}" metadata: {} data: message: >- "EVcharge process on {{ evcharge_entity2_var }} has ended" title: EV Charge process - if: - and: - condition: template value_template: "{{ is_state(use_entity1_var, 'off') }}" - condition: template value_template: "{{ is_state(use_entity2_var, 'off') }}" then: sequence: - action: notify.mobile_app_ttrabatt_iphone15 metadata: {} data: message: >- "EVcharge process activation ERROR, select what to charge" title: EV Charge process ERROR