Fronius Symo Inverter with smartmeter in OH3, using text file config

No problems, all kudos to the community!

The HW setup on the solar plant side is a Fronius Symo 5.0-3-M taking energy from 17x SunPower SPR-E20-327 solar panels. It’s a 3 phase system, hence the three energy phases in the items file - which the binding handles OK.

The smart meter is indeed connected via RS485 and being queried through the modbus connect to the inverter - a lovely little pink cable that looks like cat5 but is wired differently. It’s a 63A-3. Primary power goes to the 3 phase local meter (per regulation) then to the smart meter and power is consumed on each phase prior to feeding in, no battery (ROI is not there yet). This is why the reported energy generation is not the same as actual consumption as you can conceivably have consumption from the grid on any one or more of the three phases while any other phases are feeding in to the grid.

The calculation of total energy used vs. fed into the grid is not the same as the number reported by the PV generation channel in and of itself.

These would work with other items too, Fronius haven’t changed the way in which they communicate data. While I don’t have a gen24, I suspect it’s no different.

On the battery setup, I have none :(. However have been researching extensively. A three phase setup is not ideal for battery storage and consumption, but the smart meter will handle it if you set up the battery to take energy from and feed in to each phase as if they are parralell. It gets complex depending on consumption vs. generation for each phase - but in the same way I have calculated total feed-in to the grid by taking PV generation for each phase and then consumption for each phase, the same can be calculated for battery generation and consumption.

It will take a bit of trial and error on the variables I suspect - but can be obtained through the smart meter. Of course a single phase installation will be much easier.

The Fronius binding has a channel for battery power, but it’s a single channel and I haven’t experimented with that. Oh for a battery to test it out!

Oh, also - apologies, I missed the syntax question, yes absolutely works without a problem. I think of it like inheriting groups in Active Directory, or SharePoint. Inheriting the “permission” to be a part of a group. A collection of items belong to a group which itself is a piece of equipment, that belongs to a group which itself is a location, that can be a subset of a larger location. I could go on in terms of groups belonging to a particular house, within a suburb of a town or a city in a state of a country in the Earth that belong to the Solar System in this Galaxy as part of the Local Group within Laniakeia within the Universe!! (deep breath). This might happen if I’ve had too much whisky. I haven’t yet, so the setup is limited to my immediate area of sight. i.e.:

A fronius Item:

Number:Power            Fronius_Meter_PowerPhase1       "Fronius AC Consumption Phase 1"                <energy>        (eFroniusSmartMeter,gHistory)       [Measurement,Voltage]   {channel="fronius:meter:mybridge:mymeter:powerrealphase1"}

Is in the group “eFroniusSmartMeter”. The group “eFroniusSmartMeter” is defined as the following Thing:

Group eFroniusSmartMeter                    "Fronius Smart Meter"                           <solarplant>    (gOutsideSouthWall)         ["Equipment"]

Which itself is in the gOutsiteWouthWall group. That group is defined as an item in my house model:

Group gOutsideSouthWall     "Outside South Wall"    <terrace>           (gOutdoor)          ["Patio"]

Which itself belongs to the ultimate location, gOutdoor:

Group gOutdoor              "Outdoor"               <garden>                                ["Outdoor"]

Here’s what it looks like in the model:

Summary

Capture

And here’s the extended view part 1:

Summary

and part 2

Summary

Thanks for elaborating.

Few if anybody except electricians cares about phases.
As per regulation all phases must be added (at least in DE and I wouldn’t think it’s different where you are) and most meters (or inverters if queried though those) I know have registers/channels for accumulated grid feed-in and accumulated generation, eventually.
Yes some vendors are braindead from outer space and do not provide accumulated values so you have to add up the phases yourself like you do in your rules but don’t the following items show 3ph-accumulated values on your system?

Number:Power            Fronius_Grid_Power              "Fronius Grid Power"                            <energy>        (eFroniusSymoInverter,gHistory)     [Measurement,Power]     {channel="fronius:powerinverter:mybridge:myinverter:powerflowchannelpgrid"}
Number:Power            Fronius_Load_Power              "Fronius Load Power"                            <energy>        (eFroniusSymoInverter,gHistory)     [Measurement,Power]     {channel="fronius:powerinverter:mybridge:myinverter:powerflowchannelpload"}
Number:Power            Fronius_Battery_Power           "Fronius Battery Power"                         <energy>        (eFroniusSymoInverter,gHistory)     [Measurement,Power]     {channel="fronius:powerinverter:mybridge:myinverter:powerflowchannelpakku"}
Number:Power            Fronius_Solar_Yield             "Fronius Solar Yield"                           <energy>        (eFroniusSymoInverter,gHistory)     [Measurement,Power]     {channel="fronius:powerinverter:mybridge:myinverter:powerflowchannelppv"}

I’m not getting this. I might be misunderstanding the terms you use (“channel in and of itself” ?) but with no battery involved, there’s nowhere else power can flow, and all phases are monitored, so generation = feed-in + consumption no matter if it’s about power (kW) or energy (kWh).
Granted the sums may be some % off due to rounding, different measuring intervals etc and some self consumption losses, but they should match roughly.
Isn’t that (for power) in terms of your items
Fronius_Solar_Yield = Fronius_GridPower + Fronius_Load_Power ?

Yep, twice in fact :slight_smile: (sorry no blaming intended).
Of course all items are part of the universe and should be sorted into a proper taxonomy like the OH model. But my question was on that you made a Thing part of a group (notabene: not an Item).
I wasn’t aware this can even be done, let alone in .things files. In UI I think you cannot (admitted, I didn’t try).

I’m not aware of a function like this.
afaik @ "..." is not a group but a location which can be set per Thing.
BUT: This “location” is the old location in Paper UI which is only used in Paper UI Control…

Although there still is a location parameter in openHAB3 in question of Things, this is not the location within the semantic model.

I found while doing this that yes, they show 3ph accumulated value. When I looked at the difference between what was being consumed on each phase and what was being generated and then fed into the grid on each phase I found that there’s some interesting behaviour.

This fascinated me because it meant that there could be occasions where I was both consuming from the grid and feeding into the grid at the same time.

Substitute the battery for the grid and the same thing can happen.

I wanted to know when that was happening because Australia is starting to talk about a charge to consumers to feed in to the grid at certain times of the day. Bizarre stuff but apparently our grid infrastructure is unable to cope with the fluctuations in generation, so there are times where the power companies don’t want power from households. If I were a cynical person I might suspect foul play at a political level but what would I know.

Fronius_Solar_Yield is the total solar generation of the array. It doesn’t take into account power being consumed in the house, so using that number will not give me an accurate picture of excess energy available.

Fronius_Grid_Power also doesn’t give me a full picture, yes it tells you when you are consuming grid power but not on which phase.

Fronius_Load_Power is weird because it shows a negative number - so I shied away not entirely understanding the behaviour of that channel.

I meant the “Fronius_Solar_Yield” item, reports total PV generation without consumption, logical but I had to experiment a little because I didn’t know if “Solar Yield” meant yield to the grid as opposed to yield from the array.

Yes, it does, sort of. The equation above comes out in a negative number but the absolute value does equal the value in the Solar_Yield item. At this very moment, my Fronius_GridPower item is reporting that I’m consuming a total of 584W, while my Load_Power item is reporting that there’s a -976W load, Solar_Yield is 392W (it’s a cloudy morning here right now). Those values are straight out of the inverter, so either the binding is doing odd things with the Load_Power or the inverter is reporting it like that.

Yes - I did do that, I do that with a lot of my Things, I found that neat trick in the community fora somewhere, I wish I could remember where. I don’t think it’s hacking anything as it all works albeit sometimes the model in the UI does odd things like not show things in the right location (sometimes they are orphaned which I’m still working on) but in the sitemap they fall neatly in to place.

EDIT: found it:

Correct, I have part of my model defined in an items text file which I call “housemodel.items” and I am experimenting with moving the whole model into text:

//HOUSE MODEL

//INDOOR
Group gIndoor               "Indoor"                <house>                                 ["Indoor"]

//OUTDOOR
Group gOutdoor              "Outdoor"               <garden>                                ["Outdoor"]
Group gGarden               "Garden"                <garden>            (gOutdoor)          ["Garden"]
Group gOutsideSouthWall     "Outside South Wall"    <terrace>           (gOutdoor)          ["Patio"]

Understood but don’t misunderstand/overcomplicate. It’s all about the added values. If you feed 3A on one phase and draw 1A on another you feed 2A. Official meters will accumulate.
In Germany there’s some regulation that the difference between phases may not be larger than a specific value 4.6 kW. Yes there is a technical reason behind (if too many people all load their EV on the same phase it adds up and may in fact damage the power generator if the accumulated differences are too large) but other than that phases are not really of interest. Accumulated values are.

You are not, it’s a big foul play over here, too. The aforementioned is a fake argument as by simple coincidence/statistics, households will evenly distribute across phases anyway.
Worse even, households may not feed more than 70% of installed power even on smallest installations.
No valid reason for that whatsoever, and the worst thing and sign it’s political imho actually is that the inverter vendors help the energy companies by implementing a forced cut-off (really: you have to waste that energy) in the admin layer settings - because there it is not accessible by their customers, the inverter owners.
That is ongoing foul play. In times and regardless of and actively promoting the climate crisis.
Ok yes we’re off topic now :frowning:

The point is: the location for a thing has nothing to do with the semantic model. Just forget about it.

Please confirm what I understood by your post:
Fronius_Solar_Yield is DC side generated power (more preceisely, the panels without any eventual battery feed)
Fronius_Grid_Power is consumption from grid, negative values mean grid feed-in Fronius_Load_Power is supposed to be the house consumption but you cannot explain the negative values. Binding docs say + means generator and - means consumer, but it is unclear what component(s) is/are meant by that
Fronius_Battery_Power is (likely as you don’t own one) battery charge/discharge

All of these are 3 phase accumulated values.

Yes

Yes

Yes

Yes
:slight_smile:

1 Like

did you also have an item created for total usage per day from the Fronius_Load_Power
and then one for load power / month?

if so… how …

Can someone help me with the Fronius binding…

My new solar system is Fronius Symo Gen 24 10kW inverter and a Fronius Smartmeter.
When I try to add it using Fronius binding, the Bridge goes online just fine. But my Inverter and the Smartmeter fails.
I get and invalid JSON respond.

What am I missing here? The ID´s seems to be optional. I have tried several, but still get the same error.

I have not tried using textfiles, but I suspect this wouldnt change anything.

@Kim_Andersen I’d suggest you open a new topic with:

  • your openhab version / binding version
  • set the fronius binding logging to DEBUG log:set DEBUG org.openhab.binding.fronius
  • and post the log output.
1 Like

Ahh sorry, ofcouse…
OH3.1, (openhabian), Fronius binding 3,1 (I suspect). Running on Rpi 4 (4GB Ram).

Since I´m working from the OH3 panel, I have no idea (yet) how to change debugging mode… I used to use textfiles when I ran OH 2 :smiley:

new topic… feel free to tag me

1 Like

the deviceID does not seem to be optional…

If it’s the first unit, deviceID = 1

see if you can get the data from the inverter using
192.168.5.7/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceId=1&DataCollection=3PInverterData

but change the IP address to what it needs to be for you

if you dont specify a device ID the result is:
“Reason”: “CGI-Args: Invalid parameter ‘’ for attribute ‘DeviceId’ (must be numeric)”,

I know this is rather old topic… But I have looked at my Fronius solar setup. And like others there are something which doesnt make sense.

The channel Fronius_Load_Power is highly confusing…
First its a negative number (it will always be if its suppose to be the consumption of the household). Second, it is not simular to the same consumption value when looking at Fronius Solar.web (which shows the real consumption). This may be due to time/update difference though.

If I understand it correctly, the household consumption should be the difference between the AC Power and the Power From Grid (but unfortunatly Power from Grid is also a negative number). Which make it difficult to work with like show in a decent manner or to persist.

So my issue right now is… How to change/transform a negative value to a positive. Anyone got any idea?

Basically you look at it from the fronius “Box” perspective. Anything that comes INTO the box is positive and anything that goes OUT from the box is negative.

Things that flow into the box:

  • Power you draw from the grid
  • Power that comes from the solar panel

Things that flow OUT from the box:

  • Power that goes to the load in the house
  • Power that feeds back to the grid (power from grid is positive but when it flows out to the grid it’s the negative of power “from” grid)

The total sum of power in + out = 0

So be able to “isolate” an item to household consumption, I will have to calculate in/out in a script?