Integration Solar inverter huawei 2000L

None of the templates for GitHub - reptilex/tesla-style-solar-power-card: Home assistant power card mimicking the one tesla provides for the powerwall app. posted in this thread worked with @wlcrs integration so I made my own. I ignored the inverter efficiency so they are slightly wrong but they are close enough.

template:
  - sensor:
    - name: Grid to Battery
      device_class: power
      state_class: measurement
      unit_of_measurement: W
      state: >
        {% set inv = states('sensor.inverter_active_power')|int(default=0) %}
        {% if inv < 0  %} {{ 0 - inv | int }}
        {% else %} 0
        {% endif %}
    - name: Grid to House
      device_class: power
      state_class: measurement
      unit_of_measurement: W
      state: >
        {% set inv = states('sensor.inverter_active_power')|int(default=0) %}
        {% set grid = states('sensor.power_meter_active_power')|int(default=0) %}
        {% if grid < 0 %}
          {% if inv < 0 %} {{ inv - grid | int }}
          {% else %} {{ 0 - grid | int }}
          {% endif %}
        {% else %} 0
        {% endif %}
    - name: Solar to Battery
      device_class: power
      state_class: measurement
      unit_of_measurement: W
      state: >
        {% set inv = states('sensor.inverter_input_power')|int(default=0) %}
        {% set bat = states('sensor.battery_charge_discharge_power')|int(default=0) %}
        {% set out = states('sensor.inverter_active_power')|int(default=0) %}
        {% if bat > 0 %}
          {% if out < 0 %} {{ inv }}
          {% else %}  {{ bat }}
          {% endif %}
        {% else %} 0
        {% endif %}
    - name: Solar to House
      device_class: power
      state_class: measurement
      unit_of_measurement: W
      state: >
        {% set grid = states('sensor.power_meter_active_power')|int(default=0) %}
        {% set out = states('sensor.inverter_active_power')|int(default=0) %}
        {% set bat = states('sensor.battery_charge_discharge_power')|int(default=0) %}
        {% if out > 0 %}                      
          {% if grid > 0 %}                  
            {% if bat > 0 %} {{ out - grid }}             
            {% else %} {{ out + bat - grid | abs }}
            {% endif %}       
          {% else %}          
            {% if bat > 0 %} {{ out }}       
            {% else %} {{ out + bat | abs }} 
            {% endif %}       
          {% endif %}         
        {% else %} 0                                                             
        {% endif %}
    - name: Solar to Grid                                                        
      device_class: power                                                        
      state_class: measurement                                                   
      unit_of_measurement: W                                                     
      state: >                                                                        
        {% set grid = states('sensor.power_meter_active_power')|int(default=0) %}     
        {% set out = states('sensor.inverter_active_power')|int(default=0) %}              
        {% if out > 0 and grid > 0 %} {{ grid }}                                      
        {% else %} 0                                                                  
        {% endif %}                                                                   
    - name: Battery to Grid                                                           
      device_class: power                                                             
      state_class: measurement                                                        
      unit_of_measurement: W                                                          
      state: >                                                                        
        {% set inv = states('sensor.inverter_active_power')|int(default=0) %}         
        {% set bat = states('sensor.battery_charge_discharge_power')|int(default=0) %}
        {% set grid = states('sensor.power_meter_active_power')|int(default=0) %}     
        {% if grid > 0 and bat < 0 and inv > grid %}                                  
          {% if grid - inv - bat >= 0 %} {{ grid - inv - bat }}                       
          {% else %}  0                                                               
          {% endif %}                                                                 
        {% else %} 0                                                                  
        {% endif %}                                                                   
    - name: Battery to House                                                          
      device_class: power                                                             
      state_class: measurement                                                        
      unit_of_measurement: W                                                          
      state: >                                                                        
        {% set bat = states('sensor.battery_charge_discharge_power')|int(default=0) %}
        {% set togrid = states('sensor.battery_to_grid')|int(default=0) %}
        {% if bat < 0 %} {{ togrid - bat | int }}                            
        {% else %} 0                                                          
        {% endif %}

Sample power card

  - type: custom:tesla-style-solar-power-card
    name: Energy Flows
    grid_to_house_entity: sensor.grid_to_house
    grid_to_battery_entity: sensor.grid_to_battery
    generation_to_grid_entity: sensor.solar_to_grid
    generation_to_battery_entity: sensor.solar_to_battery
    generation_to_house_entity: sensor.solar_to_house
    battery_to_house_entity: sensor.battery_to_house
    battery_to_grid_entity: sensor.battery_to_grid
    battery_extra_entity: sensor.battery_state_of_capacity
    #grid_extra_entity: sensor.electricity_current_rate
    #generation_entity: sensor.inverter_daily_yield
    show_gap: true
    threshold_in_k: 1

Will give you something like this
picture
edit: fixed a bug with house consumption in edge cases (charge+import, discharge+export)

4 Likes