Integration Solar inverter huawei 2000L

how you are connected? via dongle or directly to internal wifi?

AdemĆ”s que sĆ­ā€¦ tĆŗ si que sabesā€¦ :slight_smile: Sorry, youā€™re right and the only way to help and be helped is understand the messages. Is the only way for no repeat questions too.

1 Like

Dongleā€¦ and is working ok now

issue of a sudden increase in power consumption also resolved? what values you used for grid consumption and return to grid?

Yes. All is solved. Here you are the concepts I used in power grid config.

can you share your configuration.yaml code?

Hello, could you share how you build this piece of front end (the left part)?
Or any piece of configuration?
Thank you?

Hello, not sure if that could be due to my Firmware version, but iā€™m attempting to connect via wifi
The dongle is connected to my wifi network, am i better off connect to the dongles wifi AP?

Dongle
V100R001C00SPC119

Inverter
V100R001C00SPC135

-----HA config -------

  - platform: huawei_solar   
    host: "192.168.20.113"
#    optimizers: false
#    battery: false
    slave: 1

------HA Log ----------

2021-11-24 05:19:35 INFO (MainThread) [pymodbus.client.asynchronous.async_io] Connected to 192.168.20.113:502.

2021-11-24 05:19:35 INFO (MainThread) [pymodbus.client.asynchronous.async_io] Protocol lost connection.

2021-11-24 05:19:35 INFO (MainThread) [pymodbus.client.asynchronous.async_io] Protocol made connection.

2021-11-24 05:19:35 INFO (MainThread) [pymodbus.client.asynchronous.async_io] Connected to 192.168.20.113:502.

2021-11-24 05:19:35 INFO (MainThread) [pymodbus.client.asynchronous.async_io] Protocol lost connection.

2021-11-24 05:19:35 INFO (MainThread) [pymodbus.client.asynchronous.async_io] Protocol made connection.

2021-11-24 05:19:35 INFO (MainThread) [pymodbus.client.asynchronous.async_io] Connected to 192.168.20.113:502.

2021-11-24 05:19:35 INFO (MainThread) [pymodbus.client.asynchronous.async_io] Protocol lost connection.

2021-11-24 05:19:36 INFO (MainThread) [pymodbus.client.asynchronous.async_io] Protocol made connection.

2021-11-24 05:19:36 INFO (MainThread) [pymodbus.client.asynchronous.async_io] Connected to 192.168.20.113:502.

2021-11-24 05:19:36 INFO (MainThread) [pymodbus.client.asynchronous.async_io] Protocol lost connection.

2021-11-24 05:19:36 INFO (MainThread) [pymodbus.client.asynchronous.async_io] Protocol made connection.

2021-11-24 05:19:36 INFO (MainThread) [pymodbus.client.asynchronous.async_io] Connected to 192.168.20.113:502.

If you want connect wireless to dongle you need SPC123 or newer firmware in dongle.

Thank you for your fast response, just to confirm, to update the firmware via the app, do i need to be connect to the dongleā€™s AP?

Yes, you must be connected to dongle, you canā€™t update dongle from inverter AP. Just unplug and insert again dongle, then you will see new wifi network. You can also update it from web portal but you have to be on installer account.

Just confirming the default installer password for the SDongleA-05 is ment to be: Changeme

Changeme is wifi password, installer password is 00000a

That worked thank you, under ā€œPlease select an update packageā€
There are no packages to pick from, How do the get the latest firmware to show up in the app?

You can write to huawei support and they will sent it to you or you can just read this topic and check if someone post link to this firmware.

And it looks like it can only be uploaded with an Android phone

I would like to write some modbus read/write registers, for example to optimize by an automation the storage battery charging power.
Somebody knows, using the ā€œModbus: Write registerā€ service, how the data have to be formatted in case of single byte or in case of 2 byte registers on Huawei inverters?
@Emilv2, it may be a new function useful your great integration?

@ligeza can you post your current configuration? Since the latest update to @Emilv2 integration, I have faced issues with grid consumption and return to grid values. this is my current configuration but I know it is wrong.


image

and relevant configration.yaml

 #Inverter 
sensor solar:
  - platform: huawei_solar
    host: '192.168.200.1'
    optimizers: false
    battery: false
  - platform: template
    sensors:
      pv_input_power:
        friendly_name: "DC Production"
        #entity_id: sensor.sun2000_10ktl_m1
        unit_of_measurement: 'W'
        icon_template: mdi:solar-power
        value_template: "{{ state_attr('sensor.sun2000_10ktl_m1', 'input_power') }}"
        
  - platform: template
    sensors:
      pv_daily_yield:
        friendly_name: "Daily Yield"
        #entity_id: sensor.sun2000_10ktl_m1
        unit_of_measurement: 'kWh'
        icon_template: mdi:solar-power
        value_template: "{{ state_attr('sensor.sun2000_10ktl_m1', 'daily_yield') }}"

  - platform: template
    sensors:
      grid_exported_energy:
        friendly_name: "grid exported energy"
        #entity_id: sensor.sun2000_10ktl_m1
        unit_of_measurement: 'kWh'
        icon_template: mdi:transmission-tower-export
        value_template: "{{ state_attr('sensor.sun2000_10ktl_m1', 'grid_exported_energy') }}"
        
  - platform: template
    sensors:      
      energy_used_by_house:
        friendly_name: "Import from Grid"
        #entity_id: sensor.sun2000_10ktl_m1
        unit_of_measurement: 'kWh'
        icon_template: mdi:transmission-tower-import
        value_template: "{{ state_attr('sensor.sun2000_10ktl_m1', 'grid_accumulated_energy') }}"
        
sensor total:
  - platform: template
    sensors:
      pv_total_yield:
        friendly_name: "Total Yield"
        unit_of_measurement: "kWh"
        icon_template: mdi:solar-power
        value_template: "{{ state_attr('sensor.sun2000_10ktl_m1', 'total_yield') }}"
        
      energy_used:
       friendly_name: "total energy used"
       unit_of_measurement: 'kWh'
       value_template: >
         {{ '%0.2f' | format(states('sensor.total_yield') | float - 
                            states('sensor.grid_exporterd_energy') | float + 
                            states('sensor.grid_accumulated_energy') | float) }}

        
  - platform: template
    sensors:
      pv_string_01_voltage:
        friendly_name: "Pv String 01 Voltage"
        #entity_id: sensor.sun2000_10ktl_m1
        unit_of_measurement: 'V'
        icon_template: mdi:solar-power
        value_template: "{{ state_attr('sensor.sun2000_10ktl_m1', 'pv_string_01_voltage') }}"

  - platform: template
    sensors:
      pv_string_01_current:
        friendly_name: "PV String 01 Current"
        #entity_id: sensor.sun2000_10ktl_m1
        unit_of_measurement: 'A'
        icon_template: mdi:solar-power
        value_template: "{{ state_attr('sensor.sun2000_10ktl_m1', 'pv_string_01_current') }}"
        
  - platform: template
    sensors:
      pv_string_02_voltage:
        friendly_name: "PV String 02 Voltage"
        #entity_id: sensor.sun2000_10ktl_m1
        unit_of_measurement: 'V'
        icon_template: mdi:solar-power
        value_template: "{{ state_attr('sensor.sun2000_10ktl_m1', 'pv_string_02_voltage') }}"
        
  - platform: template
    sensors:
      pv_string_02_current:
        friendly_name: "PV String 02 Current"
        #entity_id: sensor.sun2000_10ktl_m1
        unit_of_measurement: 'A'
        icon_template: mdi:solar-power
        value_template: "{{ state_attr('sensor.sun2000_10ktl_m1', 'pv_string_02_current') }}"
        
  - platform: template
    sensors:
      pv_active_power:
        friendly_name: "Power Meter Active Power"
        #entity_id: sensor.sun2000_10ktl_m1
        unit_of_measurement: 'kW'
        icon_template: mdi:solar-power
        value_template: "{{ state_attr('sensor.sun2000_10ktl_m1', 'power_meter_active_power') | float / 1000|round(2)  }}"
        
  - platform: template
    sensors:
      consumption:
        friendly_name: "Consumption"
        unit_of_measurement: 'kW'
        icon_template: mdi:solar-power
        value_template: '{{ states("sensor.sun2000_10ktl_m1") |float - states("sensor.pv_active_power") | float }}'
        
  - platform: template
    sensors:
      pv_device_status:
        friendly_name: "Device Status"
        #entity_id: sensor.sun2000_10ktl_m1
        icon_template: mdi:solar-power
        value_template: "{{ state_attr('sensor.sun2000_10ktl_m1', 'device_status') }}"

  - platform: template
    sensors:
      pv_string_02_power:
        friendly_name: "PV String 02 Power"
        unit_of_measurement: 'kW'
        icon_template: mdi:solar-power
        value_template: '{{ states("sensor.pv_string_02_voltage") |float * states("sensor.pv_string_02_current") | float / 1000|round(2) }}'
        
  - platform: template
    sensors:
      pv_string_01_power:
        friendly_name: "PV String 01 Power"
        unit_of_measurement: 'kW'
        icon_template: mdi:solar-power
        value_template: '{{ states("sensor.pv_string_01_voltage") |float * states("sensor.pv_string_01_current") | float / 1000|round(2) }}'

  - platform: template
    sensors:
      pv_efficiency:
        friendly_name: "Solar Efficiency"
        #entity_id: sensor.sun2000_10ktl_m1
        unit_of_measurement: '%'
        icon_template: mdi:solar-power
        value_template: "{{ state_attr('sensor.sun2000_10ktl_m1', 'efficiency') }}"

You have mistake in sensor.grid_exporterd_energy should be sensor.grid_exported_energy as you have in template. Iā€™m now using new template format and I donā€™t use energy tab. If you want I can post my template sensors in new format.

1 Like

corrected it but issue still remains