• How To Control and Automate Your Export Limit Your Fronius Gen24 Inverter(s) on Amber Electric with NodeRed and HomeAssistant!

    This is a how to get your Fronius Gen24 inverters, BYD battery controlled by HomeAssistant. What you will need:

    1. HomeAssistant
    2. Fronius Gen24 Inverter(s)
    3. Fronius Smart Meter
    4. You’ll need your installer to allow MODBUS control and Export Limitation
    5. Be a customer of Amber Electric (Optional – can work with any variable pricing system).

    TLDR: Here’s a link to the code https://community.home-assistant.io/t/integration-of-a-fronius-symo-gen-24-plus-inverter-via-modbus-tcp/264577/115

    HomeAssistant

    There are many options to get HomeAssistant running. I will leave that to you to research what option is most practical for you. I personally run HomeAssistant on a Raspberry Pi 4b because of it’s low power usage but there are many other very viable options available. Once you have it set up, come back here.

    Great! Now you’ve got HomeAssistant, what you’ll need now is:

    1. Terminal Addon (To Install HACS)
    2. HACS
    3. Sunspec Integration (For more data from inverters)
    4. NodeRed
    5. Amber Electric Integration

    Sunspec Integration vs Fronius Integration

    You can install both integrations, the Fronius Integration is fairly straight forward, but only has 60 second refresh times vs the Sunspec Integration 5 second refresh times. Sunspec Integration uses MODBUS for much faster system control.

    First you’ll need to install HACS.

    Next install the Sunspec Integration from within HACS.

    You’ll need your technician to log on to your Fronius Inverter and enable these settings:

    SunSpec Model Type – Float or Int+Float, only difference is the address. If you already have Int+Float set up – all the addresses you see in my implementation, subract 10. See the example below:

    FLOAT address is 111, 112 or 113

    INT+FLOAT address is 101 (111-10) , 102 (112 – 10), 103 (113-10)

    We need to ENABLE export limiting (soft limit) on your inverter and set to 0.

    1. The default state of the inverter is to limit exports to 0
    2. Any excess solar production that aren’t covered by house loads will be reduced
    3. Your solar generation will be reduced (and the solar curve not as pretty)
    4. Stops you from exporting energy when the feed in price is negative

    We do this as we set the controlling priorities below to Modbus Control over Export Limitation.

    This means we can use basic control commands to vary the output power of the inverter when the feed in tariff is above 0.

    When it is below 0, we let exit Modbus control, and allow the inverter do the heavy lifting of export limiting calculations.

    Once you have done this, you can add your Fronius Gen24 Inverter onto the Sunspec Integration.

    Repeat for any other Fronius system you have – Smart Meter is Slave ID 200 of the same IP as the inverter it is connected to. In my case the 10kW inverter.

    Smart Meter Information via Sunspec Integration:

    Vs Smart Meter Information via Fronius Integration

    10kW Inverter Information via Sunspec Integration

    Below: The 10kW inverter information from Fronius Integration is adequate – but the Power Load includes power from external sources like the secondary inverter, which makes using this calculation a little more difficult.

    Via the Sunspec Integration you can see PV array data, and battery charge/discharge power:

    You also get data from the battery storage:

    And below you can see that we discharge the battery initially at 1kW between 5-6PM and then at max power of 4.5kW between 6-8PM during peak feed in rates on Amber Electric.

    Okay great, you’ve now got data from your inverters at 5-10second intervals.

    Now we need to start controlling them.

    NodeRed

    There are 2 separate flows to this:

    1. Inverter Control
    2. Battery Control (Next Post)

    And you’ll need the following NodeRed Palette:

    1. MODBUS – node-red-contrib-modbus
    2. cronplus – node-red-contrib-cron-plus

    The most basic inverter control can be done when there is an update to the Amber price in 5 minute intervals.

    If Amber Price is POSITIVEMaximum Power!
    If Amber Price is NEGATIVELimit Exports!

    You’ll need to get your head around the following use of Modbus controls:

    If Amber Price is POSITIVEEnable Modbus Control – Maximum Power
    If Amber Price is NEGATIVETurn OFF Modbus Control – Return to default inverter state of export limiting

    So the messages we need to send to the inverter can be found here Fronius Modbus Control Page 62/63 has the most important bits:

    We can send 1 message with all these values in one go to improve performance by using function code 0x10 (‘fc’ : 16).

    If you are working with function code 0x10 (write multiple registers), performance specifications can be used to achieve a higher level of performance. Instead of using two Modbus commands, it is now possible to preset both the power
    and enable at the same time with just one command.

    If Amber Price is POSITIVE:

    1. WMaxLimPCT: 10000
    2. WMaxLimPCT_WinTms: 0
    3. WMaxLimPCT_RvrtTms: 0
    4. WMaxLimPCT_RmpTms: 0
    5. WMaxLim_Ena: 1

    Which can be summarised into:

    'value': (10000),(0),(0),(0),(1)

    To send a command that will write to multiple messages:

    ‘fc’    16Read Only: 3
    Write To 1 Register: 6
    Write To Multiple Registers: 16
    ‘unitid’ 1Referencing MODBUS ID 1 – Which is the inverter
    ‘address’ 40242Starting Address to write your data to. Check the below excerpt from the register map – then minus 1.
    ‘quantity’    5How many registers we are writing.

    It looks like this:

    There is a Excel document that has all the registers available and the valid values you can write to them. https://forum.iobroker.net/topic/65205/modbus-fronius-gen24

    We are using FLOAT registers – the difference between FLOAT and INT+FLOAT is a difference of 10.

    When Amber feed in price changes – use a State Changed Node

    We use Greater Than 0, because we don’t want to be exporting at maximum power for free – and minimises the amount of power exported during 30 minutes if in the last 5 minute block, the wholesale price drops to negative.

    When Greater Than 0 Send A Maximum Power command.

    Use a function for creating command for Maximum Power:

    When FIT is Lower Than or Equal To 0 Send An Export Limit Command

    We send the value ‘0’ to WMaxLimEna to disable Modbus control, and let the inverter back to it’s default state of export limiting. And note ‘fc’ is 6 and ‘quantity’ is 1, because we are only changing one register.

    Send it!

    And voila, anytime the Amber Price changes, it will send a message, if FIT is positive then max power, or if FIT is negative – limit exports.

    There are some concerns about writing to MODBUS registers on an inverter. *Whirlpool Forums. But there is no documentation indicating the Mean Time Before Failure (MTBF) regarding Fronius inverter’s NVRAM that I could find. I believe these registers are being used worldwide by energy companies (VPP or Amber SmartShift) or by State governments to control your inverter/battery when there is too much grid power *puts on tinfoil hat*. Currently Fronius inverter control is not supported by Amber SmartShift as of October 2023.

    It is still good practice to minimise the amount of writes we do to a register if we don’t need to. So we need to check what the current state of the inverter is before sending commands through.

    If the state of the system is already at maximum output, there is no need to command the inverter again to be in maximum output. We read the state of the register WMaxLim_Ena, to check if we are in maximum power mode (WMaxLim_Ena = 1) or limiting mode (WMaxLim_Ena = 0).

    We use a Read Register command:

    Then check if it is 1 – (maximum power with Modbus Control), or 0 (inverter default of export limiting).

    If we are in positive FIT and the register is already 1, then we don’t need to do anything further. If the register is 0, then we need to continue on to set it to 1.

    If we are in negative FIT and the register is already 0, then we don’t need to do anything further. If the register is 1, then we need to continue on to set it to 0.

    Now instead of writing to the inverter every 5 minutes, we are only writing to the inverter when the price flips above or below 0. This generally only happens around 10am, or 2pm, or during a somewhat cloudy day.

    You can also access this state from HomeAssistant via Sunspec Integration – Immediate Controls – if you wanted to display on your dashboard whether you are in export limiting mode or max power.

    2 or More Fronius Inverters

    What if I have 2 inverters? This gets a bit more complicated.

    The Fronius Smart meter is only connected to 1 inverter at a time. We’ll call this the Primary Inverter. The Primary Inverter does all the heavy lifting in managing export control, all the other inverters in the system will have to be managed by us. The battery (if you have one) will also be connected to the Primary Inverter.

    Another Fronius limitation is when there is a blackout, only 1 inverter may be online and functioning providing backup power. The other inverter(s) will shut off and be on standby until the grid comes back online.

    I hope one day Fronius will utilise the unused second ethernet port to link inverters together, providing better functionality. Especially with larger, multi-inverter systems with battery.

    How do we manage the second inverter?

    A simple way to handle this, is to simply “turn off” the second inverter(s) by setting WMaxLim_Ena = 0. As mentioned above, the secondary inverter is not connected to a smart meter and will not be able to adjust it’s solar production to match loads, so the inverter will reduce it’s solar production to 0.

    There are some drawbacks.

    There is a drawback with this implementation.

    What if we are in a negative FIT scenario, and your house load demand is greater than the primary inverter’s output? For example:

    1. Feed in price is negative.
    2. Both inverters go into export limiting mode
    3. Main Inverter A (5kW) manages to match house loads under 5kW and limits exports to 0.
    4. Secondary Inverter B (5kW) reduces solar production to 0.
    5. House loads become 6kW total.
    6. Main Inverter A ramps up production to maximum 5kW
    7. Secondary Inverter B is still is in 0 solar production because it has no smart meter connected. (Please Fronius, have the inverters talk to each other).
    8. You are now importing 1kW from the grid.

    So what do we need to do? We’ll need to check periodically if we are importing or exporting during the negative FIT phase, and dynamically adjust the secondary inverter to ramp up production or reduce production to match. While noting the Primary Inverter A will also be doing it’s own matching of production to house load.

    My solution is as follows:

    1. Check the WMaxLimPct AND the WMaxLim_Ena register
    2. Check if we are importing or exporting with the Sunspec Integration of the smart meter ac_watts (negative for export, positive for import)
    3. Minimise the amount of commands sent by ignoring exports/imports within +/-500W.
    4. If we are importing more than 500W, increase solar production by increasing WMaxLimPct to match
    5. If we are exporting more than 500W, decrease solar production by decreasing WMaxLimPct to match
    6. If its within +/-500W – do nothing.
    7. If the new limit is the same as the old limit, do nothing.
    8. Otherwise – Send it! (To only the secondary inverter(s)).

    Some Coding To Decrease Power- (If anyone has a simpler solution please let me know)

    Some coding to Increase Power (Again if anyone has anything simpler let me know).

    Although a setup with a Primary Inverter that can export limit with the use of a smart meter – there is a simpler solution by just increasing/decreasing the Secondary Inverter in increments of 1000W at a time, and letting the Primary Inverter control some of the limiting.

    But there is a small limitation of the Fronius Gen24 Primo inverters, reducing power by 11W per second. This can be worked around by the technician coming on-site to change the inverter country settings as per this post: https://community.home-assistant.io/t/automate-fronius-soft-limit/465124/90 But if you can’t get a technician to come by then you’re stuck with this limitation.

    It took 5 minutes to derate from 3,618W to 78W – 11W per second (roughly)

    The simpler option of haphazardly increasing a set amount and letting it de-rate at 11W/second is easier to implement but potentially worse in performance.

    Checking WMaxLim_Ena on the Secondary Inverter to see what state we are in (export limiting mode or max power mode) won’t suffice as the system could be working within export limiting mode but at differing power levels.

    So instead we need to check the WMaxLimPct we’ve set the inverter to. If we need to be in max power mode, and current state of WMaxLimPct is NOT 10000 (100% x 100 scaling factor), then we can continue on to set maximum power. Otherwise do nothing.

    And with that, we’ve successfully implemented our own dynamic export control, congratulations!

    But wait! There’s more!

    Remember that we are only sending commands when Amber updates their pricing every 5 minutes. Which means your dynamic control can only respond once every 5 minutes which is not ideal.

    We use an inject node that sends this command every 30 seconds (or faster, up to you), and only during day light hours because there is no need to do export control at night. Combine this with a switch that determines whether the FIT is above or below 0.

    Up to you to decide whether you want maximum power when the FIT is 0, but I’ve set it to start limiting when FIT is 0 or less. The last thing you want is to be at maximum power at 0 FIT, and just before the 30 minute block has ended, it dips to negative FIT, thus charging you for the whole 30 minutes.

    But wait, there’s more!

    If You Have A Battery

    If you have a battery, and you are using the dynamic export control for your second inverter, you may find a situation where import power will be 0W because the battery will discharge to cover the house loads. Example below:

    1. Negative FIT price – both inverters in export limiting mode
    2. House load increases (8kW) more than Main Inverter A can supply (5kW)
    3. Battery jumps in to help supply the difference (3kW)
    4. Import power is still 0.
    5. Secondary Inverter dynamic control checks import power – 0W and won’t increase production.

    So we need to check the battery if its discharging during this state. We can use the Sunspec Integration – Module 3 DC Power.

    Charging power will be indicated on Module 2 DC Power.

    Below is a representation of how you will check battery discharge power.

    During negative FIT, and if the battery is discharging, then we need to maximise the solar production as much as possible. We just set both inverters back to max output and let the system work its way back down to 0 importing.

    We could also check the difference between current discharge rate and the and apply the increase to the secondary inverter limit, but I think I’ll keep this one simple.

    I have the threshold set to 500W, so if the battery is discharging more than 500W then we should increase power immediately. The lower the limit, the more commands you’ll send, the higher the limit, the more power you may export before the system adjusts itself.

    But wait! There’s more!

    Battery Charge Rate Limited By Export Limiting

    We may also get into a situation where the battery may not be able to charge at maximum rate due to the inverters being in export limiting mode. We know that the Primary Inverter can increase solar production to increase the battery charge rate only up to the inverter’s maximum capacity. But if there is significant house load which decreases charge rate, the secondary inverter won’t know any of this and won’t increase it’s production to increase the battery charge rate.

    1. Export limiting mode – 0 exports allowed
    2. House loads are 2kW
    3. Primary Inverter is at max power – 5kW, secondary inverter is at 2kW
    4. BYD Battery 11.0 HVM can only charge at 4.8kW (round up to 5kW for this example).
    5. So therefore, house loads 2kW + battery 5kW = 7kW with 0 exports
    6. House loads is now 4kW.
    7. Primary inverter still at max power 5kW, secondary inverter is at 2kW
    8. House load 4kw + battery 3kW = 7kW with 0 exports
    9. Primary inverter cannot charge the battery any faster and secondary inverter won’t know to increase production.
    10. Battery is charging at 2kW less than maximum rate.

    To get around this we just need to check:

    1. Is the charge rate less than 4.5kW (max is 4.8kW, 300W buffer)
    2. Check the battery state
    3. If charge rate is less than 4.5kW and battery is not full, max power
    4. If the charge rate is less than 4.5kw and battery is full, limit power

    This assumes that your battery charging state is in normal operation OR that you allow up to the maximum charging rate for the battery. There are situations in which you may only want to charge at less speed to take advantage of early morning FIT, but we’ll discuss BYD Battery control in the next post.

    But for now I think that’s it.

    We are done with controlling the Fronius Gen24 Inverter’s with NodeRed on Amber Electric.

    Here is a graph of how it went!

    You can see between 12:30-1:00PM, as the house consumption drops (yellow line), the Primary Inverter (Fronius Gen24 Symo 10.0 – aqua line) can respond immediately vs the slow derate of the Secondary Inverter (Fronius Gen24 Primo – purple line), thus causing exports during negative feed in.

    Find the code here to import into your NodeRed installation.

    Here’s a link to the code https://community.home-assistant.io/t/integration-of-a-fronius-symo-gen-24-plus-inverter-via-modbus-tcp/264577/115

    Fronius Gen24 and BYD Battery control on the next post!

    Let me know what you think in the comments or in the HomeAssistant forums.

    Some really good reading:

    Fronius Symo Gen 24 plus Batteries

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

    Automate Fronius Soft Limit

  • How Loud is a Fronius Gen24 Inverter?

    Before we begin, take a second to listen to the ambient noise around you. Listen to the cars roar by, the train rumbling past, the construction hammering away, or if you’re lucky (or unlucky), just the ringing of your own tinnitus. Ambient noise at a certain level can be harmful to your physical health, mental health and psyche. Which is why noise is a hot topic when it comes to Fronius inverters.

    No doubt you’ve heard about how noisy Fronius inverters are but before you make your mind up, double check which model and generation the commenters were referring to.

    I believe all the fuss about inverter noise is referring to the previous Fronius SnapInverter models which – interestingly – does not have “Noise Emission” specified in the datasheets:

    Fronius SnapInverter Model. – Fronius Website
    Fronius SnapInverter Symo Datasheet – Fronius Website

    However the Fronius Gen24 Symo and Primo Inverters do have a specified noise emissions level:

    Fronius Gen24 Symo 10.0 rated at < 47dB – Fronius Website
    Fronius Gen24 Primo 5.0 rated at <42dB – Fronius Website

    Here is one example of how loud the previous SnapInverter models are: https://support.solarquotes.com.au/hc/en-us/articles/360001094935-How-loud-is-a-Fronius-inverter-

    Here is my recording of the Fronius Gen24 Symo 10.0 Plus and Fronius Gen24 Primo 5.0 during a day of peak power in October. Both inverters are next to each other and the noise readings are for them combined.

    Sound measurement tool has a stated accurace of ±1.5db.

    Noise levels of Fronius Gen24 inverters
    Power output combined
    Inverter Temperature Fronius Gen24 Symo 10.0 with BYD Battery
    Inverter Temperature Fronius Gen24 Primo 5.0 no battery

    The inverters are placed in the garage next to each other away from direct sunlight with minimal outside airflow.

    At full power the inverters are only noticeable in the garage, the noise level is very tolerable and I would have no qualms having this outside my window (if I didn’t have a choice).

    The Fronius Gen24 has “Active Cooling Technology”, which you can read about here https://www.fronius.com/en/solar-energy/installers-partners/products-solutions/features/active-cooling-technology – in short, it’s an automated fan to keep your inverter cooled. No different to any other electronics such as your PC, induction stove or car radiator (not electronics but it keeps your car engine cooled).

    Just like my car’s intercooler – more fins = more cool = more power! – Image source – Fronius Whitepaper

    Whether this improves reliability of your componentry, or increases failure rates due to more moving parts – there are a whole bunch engineering concepts on reliability, availability and failure rates to calculate this for you.

    In my own opinion, cooling down a whole system to increase it’s reliability and performance by using a relatively cheap replaceable fan is preferrable to replacing a whole system that is using passive cooling. Of course you must then balance the cost outlay, added noise, warranties to see if it’s worth it for you.

    In summary: The Gen24 Fronius inverters at max power are definitely audible due to their inbuilt active cooling fan, but they are definitely not noisy. If anything, it gives you the sense that your inverters are “working hard” in converting that precious sunlight into electricity that you can feed back into the grid for 2c/kWh or less (Amber electric will be another future post). The Gen24 models are leaps and bounds, and technologically ahead of the SnapInverter series, and I encourage you to ask about the Fronius Gen24 series.

    Note: This was recorded in October 2022 which the average temperature was much cooler than December 2022. Below is the temperature chart which is 4C higher than the peak we saw in October 2022. I will edit this post with a new recording on a forecasted hot day.

    Fronius Gen24 Symo 10.0 temperature on 28/1/2023 which was a 31C day
  • Home Solar Installation Review – Fronius Gen24 Solar Inverter x Trina Vertex S+ 415W Solar Panels x BYD HVM 11.0 Battery

    Increasing electricity prices. Eye watering quarterly bills. It was about time for us to get on the solar hype train.

    This is my personal experience of a home solar installation with the Trina Vertex S+ panels, with Fronius Gen24 inverters backed up with a BYD HVM Battery.

    The Solar System

    The Complete System – Fronius Gen24 Symo 10.0 (Top Left), Fronius Gen24 Primo 5.0 (Top Right), BYD HVM 11.0 Battery (Bottom)

    The Design

    The design started with recommendations of a 13kW system with a 10kw inverter. A system of this size would easily manage our consumption of 20kWh/day but unless the panels were installed efficiently, it would restrict any additional panel installations in the future.

    Therefore we decided to maximise the roof space now and utilise the 2022 STC rebates before they decrease again in 2023.

    Due to our living patterns of going out to work early and coming back late in the evening, most of the solar generation would be wasted. However by using a battery, we’re able to shift our energy source later into the evening and get through the expensive peak TOU tariff without importing any grid energy.

    After going back and forth with a few installers, we decided on 48 total panels totaling 19.920kW which consisted of:
    13 East panels
    26 West panels
    9 North Panels

    Proposed design https://getpylon.com/au/ – Rough estimate only

    The inverter choice was the hardest to finalize as this could be achieved a number of ways:
    1 x 15kW inverter – with 1.33 oversize of panels totaling 19.95kW (1.33 limit for STC rebates)
    1 x 10kW + 5kW inverter
    2 x 8kW inverter
    3 x 5kW inverter
    2 x 10kW inverter with roughly 1:1 matching of panel to inverter.

    The 5kW and 10kW inverter sizes are the most commonly used size and therefore the best value $/kW. The 8kW size is not common and costs more and the 15kW inverter is not available in battery ready hybrid model.

    Installation Day

    Trina Vertex S+ 415w Solar Panels Pallet Stack
    BYD HVM 11.0 In Pieces
    Trina Vertex S+ 415W Panels (No not directly on the brick)
    Trina Vertex S+ 415W Panel Up Close
    Trina Vertex S+ 415W Panel Glass Backing
    Trina Vertex S+ 415W Panels – TSM-415NEG9.28 Specs
    MC4 Connectors
    Trina Vertex S+ 415W Panel – Cracked – Sent back for replacement
    Fronius Gen24 Exposed Fan and Heatsink
    BYD HVM Base
    BYD HVM Top
    BYD HVM Battery Connections
    Almost done
    Finished Install

    On the first day, after a roof measurement, the installer gave us an option to add another panel on the North facing block which gave us 10 total panels, and would only cost $100 or so after STC rebates which we readily agreed to. If they are already up there on the roof, they might as well!

    It took 2 full days to install and set up. I ensured I received access rights into the hardware and in SolarWeb because I like having access to my own devices. But it’s best not to tinker around with in the settings as this may void your warranty with your installer and manufacturer if something goes wrong and it was found that you adjusted a setting that you weren’t supposed to.

    Overall the team did a great job. They were efficient and hard working. They didn’t cause too much fuss for the neighbours. They came exactly on time as they scheduled at 7AM and left at 5PM leaving no mess behind. I did buy several tiles as spares but they only had to replace a few.

    SolarWeb Online Portal

    Some views such as the forecasting/earning rates are through SolarWeb Premium and can be quite useful. However I have the inverters integrated and monitored in HomeAssistant and forecasting with SolCast so I may not have needed to subscribe for premium SolarWeb access. In another post I will go through how I set up the Fronius integration in HomeAssistant and how I can monitor the performance of each string of panels.

    Home Assistant – Energy Addon with Forecasting
    SolCast – Forecasting of One Orientation

    Results

    We’re very happy with the install and the performance thus far, and the system is performing as expected. We haven’t had a perfect day of solar yet so haven’t quite seen what this system is capable of but below are some snapshots of the data gathered.

    Home Assistant Monitoring – Cloud cover between 11-12pm
    Home Assistant Monitoring – Voltage and Current Values Per Panel String
    Home Assistant Monitoring – Power Flows – Battery Charging/Discharging, Home Consumption, Grid Import/Export

    8 Weeks Later

    Overall we are happy with the install of the system and its initial performance, and we are happy with the quality of install by the installer that we chose so far.

    In hindsight, with what I know now, I might’ve changed a few things just to eek out that extra % here and there, but the changes may not be as noticeable over the long term.

    I believe the future is in renewables. Technology is making solar more accessible and with electricity costs increasing due to global events out of our control, we’ll see a increase in solar installations over the next decade.

    So to get through all the mass of information available online and learn more about the design of solar systems, I’ve just signed myself up to becoming a CEC Accredited Designer and will post my thoughts as I go through the coursework.

  • Hello World!

    Welcome to WordPress! This is your first post. Edit or delete it to take the first step in your blogging journey.