Automate Fronius Soft Limit

Grab them here https://www.smartmotion.life/wp-content/uploads/2023/09/Fronius_Inverter_Register_Map_with_IntegerSF_Inverter_Model.xlsx

Here is another Fronius video that provides a solution for dynamic power reduction with ywo inverters. https://m.youtube.com/watch?v=pWThly26bos&pp=2AEAkAIB[https://m.youtube.com/watch?v=pWThly26bos&pp=2AEAkAIB](https://m.youtube.com/watch?v=pWThly26bos&pp=2AEAkAIB)

Thanks @grahamam107. I took a quick look but some of the key issues I encountered with it when I first tried it are still there.
I ended up rolling my own using HA automations addressing the the modbus registers which works pretty effectively.

Hi,

I found this thread really useful, to understand the mechanics - thanks a lot!

I needed a solution for the new german law ‘Solarspitzengesetz’, that requires a limited feed into the grid by max. 60% of the installed kWp. It calculates the current site consumption and adds this to the inverter max power limit.
The second automation is to turn back to 100% once the inverter goes below 10W. Just if anybody would be interested as well.
Happy to hear any feedback for improvements as well.

My configuration.yaml:

template:
  - sensor:
      - name: "fronius_symo_pwr_limit"
        # Solarspitzengesetz: maximum grid feed is 60% of kWp installed
        # i.e. 5220 * 60% = 3120 W
        # inverter max power is 5000 W
        # value to control inverter power is in percent scaled by 100, i.e. 10000 = 100%
        state: >
          {% set max_power = 5000 %}
          {% set scaling = 10000 %}
          {% set installed_Wp = 5220 %}
          {% set max_grid_feed = (installed_Wp * 0.60) %}
          {{ (( [ ((states("sensor.shellypro3_total_active_power") | float(0) )
                 + (states("sensor.fronius_symo_5_0_leistung_ac")  | float(0) )
                 + max_grid_feed), max_power] | min)
              / max_power * scaling) | int
          }}

and my autiomation.yaml:

- id: '1743520805814'
  alias: Froinuis Symo limit output power
  description: ''
  triggers:
  - trigger: state
    entity_id:
    - sensor.shellypro3_total_active_power
  conditions:
  - condition: numeric_state
    entity_id: sensor.fronius_symo_5_0_leistung_ac
    above: 3100
  - condition: numeric_state
    entity_id: sensor.fronius_symo_pwr_limit
    below: 10000
  actions:
  - action: modbus.write_register
    data:
      hub: mb_symo
      address: 40242
      value:
      - '{{ states("sensor.fronius_symo_pwr_limit") }}'
      - 0
      - 0
      - 0
      - 1
  mode: single
- id: '1743613179878'
  alias: Fronius Reset max Power
  description: ''
  triggers:
  - trigger: numeric_state
    entity_id:
    - sensor.fronius_symo_5_0_leistung_ac
    below: 3000
  conditions: []
  actions:
  - action: modbus.write_register
    data:
      hub: mb_symo
      address: 40242
      value:
      - 10000
      - 0
      - 0
      - 0
      - 1
  mode: single

EDIT: improved the conditions in the first automation and increased the trigger value in the second compared to my original post.

Thank you good man, I was wondering why it doesn’t work :wink:

For my Symo this toggle to ‘0’ and back to ‘1’ is actually not needed (s. automation above).

What I experience however, is a quite slow regulation of 10-20sec. I assume that the modbus isn’t accessed more frequently? Haven’t investigated if this can be tuned from defaults.

Have read through a lot of this, and my brain keeps breaking :(.
I’m simply wanting to create an entity for my snap Primo 3.0. So as I can set the soft limit from HA with automations.
I have primo setup in MG50, have set primo tcp and Sunspec int +SF.
Been using Musk’s Grok to create the code but failing badly…
I have added the fronius integration, which works.
Any one feel like helping my out ?

Are these addresses the same for a Snap Primo 3.0?