Powerwall: curtail solar except when Tesla charging


alias: Powerwall Amber FIT Control
description: >
  Adjust Powerwall mode and export behaviour based on Amber FIT price and Tesla
  Wall Connector load.
triggers:
  - minutes: /5
    trigger: time_pattern
conditions: []
actions:
  - variables:
      fit_price: "{{ states('sensor.home_feed_in_price') | float(0) }}"
      wall_power: "{{ states('sensor.wall_connector_power') | float(0) }}"
      current_mode: "{{ states('select.dodds_home_operation_mode') }}"
      current_export: "{{ states('select.dodds_home_allow_export') }}"
  - choose:
      - conditions:
          - condition: template
            value_template: "{{ fit_price > 0 }}"
        sequence:
          - if:
              - condition: template
                value_template: "{{ current_mode != 'autonomous' }}"
            then:
              - target:
                  entity_id: select.dodds_home_operation_mode
                data:
                  option: autonomous
                action: select.select_option
          - if:
              - condition: template
                value_template: "{{ current_export != 'battery_ok' }}"
            then:
              - target:
                  entity_id: select.dodds_home_allow_export
                data:
                  option: battery_ok
                action: select.select_option
      - conditions:
          - condition: template
            value_template: "{{ fit_price <= 0 and wall_power < 0.1 }}"
        sequence:
          - if:
              - condition: template
                value_template: "{{ current_mode != 'autonomous' }}"
            then:
              - target:
                  entity_id: select.dodds_home_operation_mode
                data:
                  option: autonomous
                action: select.select_option
          - if:
              - condition: template
                value_template: "{{ current_export != 'never' }}"
            then:
              - target:
                  entity_id: select.dodds_home_allow_export
                data:
                  option: never
                action: select.select_option
      - conditions:
          - condition: template
            value_template: "{{ fit_price <= 0 and wall_power >= 0.1 }}"
        sequence:
          - if:
              - condition: template
                value_template: "{{ current_mode != 'self_consumption' }}"
            then:
              - target:
                  entity_id: select.dodds_home_operation_mode
                data:
                  option: self_consumption
                action: select.select_option
          - if:
              - condition: template
                value_template: "{{ current_export != 'pv_only' }}"
            then:
              - target:
                  entity_id: select.dodds_home_allow_export
                data:
                  option: pv_only
                action: select.select_option
mode: single