Integration Solar inverter huawei 2000L

I don’t switch my heatpump off. I just like to increase the thermostat setpoint during the day to buffer heat inside the house so I need less electricity during the night to keep the house warm.

Things I like to achieve are:

  • Heat the DHW boiler when there is enough solar. Now it’s a fixed timer that does it every day at 12h00.
  • Do a legionella run about once per week when there is enough solar. Now it’s a fixed schedule every Monday at 12h00
  • Increase the temperature in the house during the day by using solar energy. Now that is also a timer. I keep the thermostat on 20°C during the night and from 11-22h I raise the requested temperature to 21°C. When it’s not freezing outside, the heatpump usually stays off during the night. Now that the days are getting longer, there is already enough solar around 9h30-10h to start raising the temperature so I would like to make this dynamic.
  • Set the charging speed of the EV to maximise solar power consumption.

I have a lot of solar panels on our roof. I pay about 3-4 times the price to purchase electricity than what I get to send energy to the grid. I know in certain countries they look at the net used energy during a year and then you can generate solar in the summer and get it back for free in the winter, but that’s not how it works in Belgium unfortunately. We need to maximise our self consumption to benefit from solar panels.

1 Like

Same situation here - our feed in tariff is very low compared to the purchase price (Spain).

We have the Samsung heat-pump so we don’t have as much control as you appear to (we can trigger a “solar” contact which boosts the temp a set number of degrees, but we can’t trigger the DHW or legionella run remotely.

Your other use-cases I think you will be fine with, they don’t really rely on the integration with the Huawei too much - there’s a forecasting capability for the solar which is independant of the inverter, but is a more reliable way of determining daily production than looking at the current solar output.

(I’m assuming you also have a battery for storage?)

I’m using logic more like;

 if ( ( $predicted_daily_solar_kWh > 15 kWh ) && ( $battery >25%) ) { 
  mine_bitcoin();
  heat_water();
 }

Complete pseudo code but you probably get the idea :slight_smile:

No, no battery. The difference between the purchase price and feed in is too small to justify a 10kWh battery that will last about 10 years. A battery would save me around 400-450euro/year, but costs me around 8k. At least that’s what my forecasted simulations say. I will redo the exercise once I have lived with the solar panels for 1 year.

I have a Vaillant heatpump and it’s also quite limited, but with an unofficial EBUS module I can just send EBUS commands that set the thermostat temperature, set boiler temperature, trigger the boiler, change the legionella schedule, enable noise reduction, …

And maybe monitoring the Huawei inverter is less important as well. It might be better to monitor the feed in from P1 meter and the solar forecast.

Yup, my calculations on a battery are similar, I figure they’ll last longer than 10 years though, more like 15 but with some reduced capacity.

(We have a battery as we have issues with grid reliability and it justifies itself from that perspective, but it does also help us maximise our usage of the solar, especially in summer when it means we’re not needing to buy anything from the grid)

Totally agree with re-assessing in a while too, I calculated things up-front and got it totally wrong, you never know until you’ve lived with it for a while :slight_smile:

Sounds like you’re heading down the right path!

When I create an installer account, how do I link it to my plant?

hi,

I can’t update via the fusionsolar plant manager. how do i activate this?

greats

I would disagree, the Huawei SDongleA works 100% reliable for local tcp/ip modbus communication, either with wifi or lan connection. It is also more reliable when used with battery backup. I don’t see any reason to prefer serial modbus over tcp modbus with SDongleA. tcp modbus with the included wifi adapter is not as reliable as with the SDongleA.

4 Likes

Well, your experience is N=1 while I’ve been fending support requests for the last two years :wink: I can’t recommend the SDongleA when it’s 5x more expensive and has yielded a lot of bug reports because it has been throwing a lots of SlaveFailure and even IllegalAddress modbus exceptions (for some users) while reading from the inverter.

What is the smallest polling period others could achieve? I am able to reach 10s, but not lower (directly connected to inverter). Somebody does better?

Well, those are mostly old reports with old broken firmwares. Recent firmwares work very stable and reliable.

I had my next power outage (managed to blow the street side fuse), and I was happily surprised to see that the integrations is reporting its statistics wile on battery power. Running 1.2.6b1.

1 Like

Hello,

I have installed a Huawei Inverter SUN2000 with a Dongle and one Power Meter DTSU666.
Everthing is working fine, but how can I add a second Power Meter on the easiest way, because in FusionSolar I can only add one Power Meter.

I have a second floor in my house which energy consumption I need to know as well.
Maybe someone has the same problem?

Thank you

Hi,
A few days ago I had to restart my Home Assistat.
Since then, my energy panel and my Grafana graphs had stoped showing data. I think this is due to a name change of the sensors.
Could anyone tell which sensor do I need to put in the Energy panel?
Also, i had this template to know the energy used by the house:

  - platform: template
     sensors:
       energy_used:
         friendly_name: "Consumo"
         unit_of_measurement: 'W'
         value_template: >
           {{ '%0.2f' | format(states('sensor.input_power') | float - states('sensor.grid_active_power') | float) }}

Which sensors do I need to put there now?

Thanks in advance.

esphome or shelly

I have a TCP to Modbus RTU converter directly connected to the second Power Meter.
But I do not know how it should be the Modbus Register config in Home Assistant for the Huawei DTSU-666H?

Please, anyone knows which sensor or template is needed to know the consumption of the installation, independently if the energy comes from the inverter or the grid?

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

This should be close enough even when grid is also charging the battery:

template:
  - sensor:
    - name: Self consumption
      device_class: power
      state_class: measurement
      unit_of_measurement: W
      state: >
        {% set grid = states('sensor.power_meter_active_power')|int(default=0) %}
        {% set inv = states('sensor.inverter_active_power')|int(default=0) %}
        {{ inv - grid | abs }}
1 Like

Thank you, I’ve added the info from your post to Visualisations · wlcrs/huawei_solar Wiki · GitHub so that it can be found more easily. Otherwise I fear it will be buried as one of the thousands of posts in this topic.

That worked.
Thanks a lot.