Integration of a Fronius Symo Gen 24 plus Inverter via Modbus TCP

Hey Al, just found your post and thanks for linking to my post about the Gen24 hopefully that helps a few people. The installer charged me $200 AUD to change the profile!

Does your config still work in HA 2024.2.5?
Also does the node red modbus use the core modbus intergration or its own?

I have found that modbus wont work unless you configure sensors. According to the core intergration dev this is a new change.

https://github.com/home-assistant/core/issues/112792

With 2024.3.1 (not released) you will get a clear warning, that at least one entity is needed.
first of all it does not make sense to have an integration without entities, since it cannot be viewed in HA, at least you should have entities that verify your writes.
It was never allowed and have caused different instability issues, to the point where it gives an exception, its luck you have not experienced problems before.

My inverters ramp fine so have never needed entites for the inverters as i can see the response in real time

The issue i have is if i add any sensor HA takes over 10 minutes to start.
(sensor is commented out due to issues with HA starting)

modbus:
  - type: tcp
    host: 192.168.1.143
    port: 502
    name: "MBFronius_Primo"
    #retry_on_empty: true
    #retries: 3
    timeout: 14
    
  - type: tcp
    host: 192.168.1.231
    port: 502
    name: "MBFronius_Gen24"
    #retry_on_empty: true
    #retries: 3
    timeout: 14
#    sensors:
#      - name: "Primo_WMaxLimPct_Primo"
#        address: 40232
#        scan_interval: 15
#        unit_of_measurement: "%"

HA 2024.2.4 modbus works fine
2024.2.5 modbus requires and entity so it breaks my config

Looking into replicating your blog post using my existing scaling factor that i get from my powerwall home load sensor

@heyyitsal, thanks heaps for pointing me to your blog, awesome, I’ve started following.

I do have one small snag, I cant get my inverter to change its priorities, I can drag the options around but when I click save I just get spinning wheel.
ControllingPriorities

Is there a trick to allow you to allow saving of this change?

Try a different browser/incognito mode/turn off adblocker?

:cry: No go, I have tried:

Google Chrome Version 122.0.6261.112 (Official Build) (64-bit)
Chrome incognito
Chromium via Raspberry Pi
Microsoft Edge Version 122.0.2365.80 (Official build) (64-bit)
Firefox (Ubuntu 20.04)
Apple Safari via iPhone
I disabled PiHole adblocker (although I don’t think that would be related), I’m not running browser based adblocking.

I also updated the Fronius firmware from 1.22 to 1.28 (after doing that I notice it now takes ages to respond to changes in the load :man_facepalming:, I’m thinking of rolling it back as it didn’t fix my save issue and I don’t like the laggyness)

Any other ideas?

Hey Al, just found your post and thanks for linking to my post about the Gen24 hopefully that helps a few people. The installer charged me $200 AUD to change the profile!

Thank you for your sacrifice :sweat_smile:

I use the node-red-contrib-modbus (node) - Node-RED - No need to write any YAML in config.

I’m on


and inverter comms still OK, although I am getting weird overall NodeRed communication issues with HA (flapping sensor status) every now and then but a restart of NodeRed ends up fixing it. Will need to dig deeper into it.

Overall the flows are working as they should, haven’t really looked into whether I can eke out any more out of it. Only thing now is battery dispatch management which EMHASS seems to be pretty good at and it seems pretty straight forward to integrate into the NodeRed battery control flow.

You know - I think I have had that issue before, I just can’t remember how I got over the spinning wheel.

I just had a try myself - I couldn’t change it also (over VPN), but the inverter is also "stopped’ so I’ll try again tomorrow when its back on.

[Edit] Okay it still doesn’t work via another browser or while it’s on. Can you try on the inverter itself? You can press the Enable WIFI button on the inverter and directly connect to the inverter.

> 1. Gen24 has an optical sensor in the middle of the two LEDs on the inverter. Tap the optical sensor once to activate the WiFi Access Point.
2. Go to WiFi settings on your device (laptop, tablet, smart phone etc.) and connect to the Fronius local network named Fronius_3xxxxxxx (your inverter serial number).

Also firmware is older… I haven’t updated in a while… :shushing_face:

I just tried to change it by connecting direct to access point on 192.168.250.181 and it still wont let my save changes. I’m logged in as Technician.

Thoughts?

Yeah thats what I have started doing. I dont have a consumption meter so i take my load measures from the powerwall sensors and create a scaling factor that is devided by 2 and sent to both inverters.

I keep my inverters in throttled mode all the time and just send the watt max % scaling factor to my inverters when I am getting charged for FIT
When my solar feed in is at a positive price i send the 100% command

My scaling factor acts as the trigger with a filter setup to stop duplicate scaling factors from triggering the flow.

Have also setup some switches so i can switch between node red limiting my inverters then back to HA automations if needed.
I had to configure dummy sensors to get around the HA compulsory modbus sensor change.

Scaling factor reading from a HA sensor (Used for self consumption of solar, no send to grid):

Close up pics of the flow


2 Likes

Figured it out - Not sure why this worked but it did:

Did it on phone - navigated to the page via IP on Safari, changed the priority, then refreshed as it was spinning its wheel, then tried it again, and it saved.

refreshthepage

1 Like

Edited the wrong post…

1 Like

You are onto it. Worked like a charm. What is with that? Anyway, thanks. Now onto the rest of the setup.

Oh wow this is awesome. This is exactly what I want to be able to do.
I am choosing between this and sungrow system. Fronius seems to really work well with 3 phase which my system is.

Thank you for sharing this info.

Did you work out how to control your byd with home assistant via fronius ?

Hey all, just wanted to post my SUMMER Flow (still in WIP) in case anyone is interested.

1 Like

Hi I’ve recently just joined this forum is there anyone on this chat that is still active, regarding the topic?

Hi all i am buying a BMS system from China for high voltage battery system for solar storage i am using the Fronius Symo Gen 24 plus inverter, the supplier is asking me for the BMS to Inverter communication Protocol. This is an example of a protocol that they require

Voltronic Power
Inverter and BMS 485 communication Protocol

  1. BMS Pin Definition
    1.1 BMS Card

    Definition
    PIN 4 RS485B
    PIN 5 RS485A

1.2 Remote Box

Definition

PIN 3 RS485B
PIN 5 RS485A

  1. Communication parameter configuration
    Baud rate Start bit Data bit Parity bit Stop bit
    9600 1 8 N 1

  2. Communication frame format
    Device query command format
    Index 1 2 3 4 5
    Function Slave ID Command type Start Address of data Data Length *CRC
    Bytes 1 1 2 2 2
    BMS address Function code MSB LSB MSB LSB LSB MSB
    *The CRC check range is all of the bytes before the CRC field,

Command type table
Index Command type Description
1 0x03 Read Data
2 0x10 Write Data

BMS normal response format
Index 1 2 3 4 5
Function Slave ID Command type Data Length Data information CRC
Bytes 1 1 2 Data length * 2 2
BMS address Function code MSB LSB MSB LSB LSB MSB

BMS abnormal response format
Index 1 2 3 4
Function Slave ID Command type + 128 Error code CRC
Bytes 1 1 1 2

Error code
Index Error code Note
1 0x01 Slave ID should be within 1~16. Slave ID error if out of range
2 0x02 Command type error if command didn’t exist,
3 0x03 CRC error

  1. Command lists
    4.1 Version information
    Data Address Byte Size Parameter Parameter Unit
    0x0001 2 Protocol type
    0x0002 2 Protocol version
    0x0003 4 BMS firmware version
    0x0005 4 BMS hardware version

4.2 BMS general status parameters inquiry
Data Address Byte Size Parameter Parameter Unit
0x0010 2 Number of cell: L pcs
0x0N11 2 Cell N20+1 voltage 0.1V
0x0N12 2 Cell N
20+2 voltage
0x0N13 2 Cell N20+3 voltage
0x0N14 2 Cell N
20+4 voltage
0x0N15 2 Cell N20+5 voltage
0x0N16 2 Cell N
20+6 voltage
0x0N17 2 Cell N20+7 voltage
0x0N18 2 Cell N
20+8 voltage
0x0N19 2 Cell N20+9 voltage
0x0N1A 2 Cell N
20+10 voltage
0x0N1B 2 Cell N20+11 voltage
0x0N1C 2 Cell N
20+12 voltage
0x0N1D 2 Cell N20+13 voltage
0x0N1E 2 Cell N
20+14 voltage
0x0N1F 2 Cell N20+15 voltage
0x0N20 2 Cell N
20+16 voltage
0x0N21 2 Cell N20+17 voltage
0x0N22 2 Cell N
20+18 voltage
0x0N23 2 Cell N20+19 voltage
0x0N24 2 Cell N20+20 voltage
0x0025 2 Number of temperature sensor: M pcs
0x0N26 2 Temperature Sensor N
10+1 0.1K
(Kelvin temperature)
0x0N27 2 Temperature Sensor N10+2
0x0N28 2 Temperature Sensor N
10+3
0x0N29 2 Temperature Sensor N10+4
0x0N2A 2 Temperature Sensor N
10+5
0x0N2B 2 Temperature Sensor N10+6
0x0N2C 2 Temperature Sensor N
10+7
0x0N2D 2 Temperature Sensor N10+8
0x0N2E 2 Temperature Sensor N
10+9
0x0N2F 2 Temperature Sensor N*10+10
0x0030 2 Module charge current 0.1A
0x0031 2 Module discharge current 0.1A
0x0032 2 Module voltage 0.1V
0x0033 2 SOC %
0x0034 4 Module total capacity mAH
*If the parameter doesn’t exist, return 0x0000

4.3 BMS warning information inquiry
Data Address Byte Size Parameter Note
0x0N40 2 Number of cell: L
0x0N41 2 Cell N20+1/ N20+2 voltage state 00H: normal
01H: below lower limit
02H: above higher limit
F0H: other error
0x0N42 2 Cell N20+3/ N20+4 voltage state
0x0N43 2 Cell N20+5/ N20+6 voltage state
0x0N44 2 Cell N20+7/ N20+8 voltage state
0x0N45 2 Cell N20+9/ N20+10 voltage state
0x0N46 2 Cell N20+11/ N20+12 voltage state
0x0N47 2 Cell N20+13/ N20+14 voltage state
0x0N48 2 Cell N20+15/ N20+16 voltage state
0x0N49 2 Cell N20+17/ N20+18 voltage state
0x0N4A 2 Cell N20+19/ N20+20 voltage state
0x0050 2 Number of temperature sensor: M
0x0N51 2 BMS Temperature N10+1/ N10+2 state 00H: normal
01H: below lower limit
02H: above higher limit
F0H: other error
0x0N52 2 BMS Temperature N10+3/ N10+4 state
0x0N53 2 BMS Temperature N10+5/ N10+6 state
0x0N54 2 BMS Temperature N10+7/ N10+8 state
0x0N55 2 BMS Temperature N10+9/ N10+10 state
0x0060 2 Module charge voltage state 00H: normal
01H: below lower limit
02H: above higher limit
F0H: other error
0x0061 2 Module discharge voltage state
0x0062 2 Cell charge voltage state
0x0063 2 Cell discharge voltage state
0x0064 2 Module charge current state
0x0065 2 Module discharge current state
0x0066 2 Module charge temperature state
0x0067 2 Module discharge temperature state
0x0068 2 Cell charge temperature state
0x0069 2 Cell discharge temperature state
*If the parameter didn’t exist, return 0x0000

4.4 BMS charger and discharge information inquiry
Data Address Byte Size Parameter Parameter Unit
0x0070 2 Charge voltage limit 0.1V
0x0071 2 Discharge voltage limit 0.1V
0x0072 2 Charge current limit 0.1A
0x0073 2 Discharge current limit 0.1A
0x0074 2 Charge, discharge status

Charge, discharge status:
Bit Content Note
7 Charge enable 1: yes 0: request stop charge
6 Discharge enable 1: yes 0: request stop discharge
5 Charge immediately 1: request: 0: no request
4 Charge immediately2 1: request: 0: no request
3 Full charge request 1: request: 0: no request
2
1
0
0x0075 4 Run time to empty S

*Bit 5: Set when SoC is very low, like 5~9%, device need charge immediately until this flag disappear.
*Bit 4: Set when SoC is low, like 10~14%, it will be better that device charge immediately until this flag disappear.
*Bit 3: Set when BMS need device fully charged.

Hi,

This thread is so big, hard to check all posts.
I am currently looking for a solution to set the minimum state of charge for my battery. So that i can set it to 100% if there will be bad weather or something like that.

Any ideas?

This thread is more likely to help you and a lot less posts. Also it is important to understand the modbus guides from Fronius and the settings you need to make

1 Like

Hej Steffan
Jeg er dansk og vil meget gerne chatte med dig omkring en løsning.
Jeg har Modbus adgang fra HA og Node-Red til min Fronius Gen 24 10+ inverter, men får fejl som illegal data address (register not supported by device). Jeg tænker der er en åbenlys grund jeg har overset.
Er du på FB i Dansk Home Assistant gruppen, eller hvordan er det nemmest at række ud?

Tjenare, då har du antagligen fel typeset på i din inverter. Kolla så du har Int + SF och icke float påslaget.
MVH Friskens