VRM consumption data does not sum phases - results in completely wrong reports

Hi,

even though I searched a lot in the forum and found several similar reports I have not found any clue how to solve this with my current setup.
I am running a DESS with 1 Phase MultiPlus II GX, AC coupled inverter and battery on DC side with multiphase regulation of all phases.. Everything is working absolutely perfectly and DESS is doing exactly what I could ask. Only thing which does not work correctly is the reporting in VRM.
As I only have 1Phase DESS the Multiplus II GX including AC coupled inverted is connected to L1. This means that L1 is almost always negative to compensate L2 and L3 (which is what it should be). Only problem is, that all negative load on L1 is treated as “xxx to GRID” and L2+L3 is treated “xxx from GRID”..
In reality this would be direct consumption here in Austria.

Both PV and Grid meters are shelly meters (PV = Shelly Plug and Grid = Shelly Pro 3EM). I tried web socket integration and dbus-shellyPlug integration for the Shelly Pro 3EM but this does not change anything regarding my problem. Changing the energy meter is not option as I have no way to get a wired connection to my energy meter and this being a refresh problem make no sense as compensation (which would be more timing sensitive is working perfectly).
Did anyone solve this problem? Please find attached details - all screenshots are for the same timeframe:

Overview… Summed correctly

Involved devices:

Grid sum is shown correctly too:

Wrong consumption for all components though - reports are meaningless because of this:

Same view for “To and From” - in reality you have to eliminate one add “Battery to Grid” to “Battery to Consumption” in this example…. same would be true for “Solar” workload during the day though.

This is expected behaviour, the power has been injected to the grid to compensate other phases.

Is the actual VRM DESS report wrong?

The screenshot for installation data is correct and not meaningless from a technical point of view but i see your point.

You are absolutely right. Technically this is correct, but from a usage point of view this is very weird.
I am still trying to understand if the overall reports make any sense.

If I take a look at yesterdays consumption.. I see 11.3 kWh from grid, 11.7 kWh consumed and 4.1 kWh to grid… So I would have to manually calculate which would mean 11.3-4.1=7.2 … If I take a look at my providers report for yesterday I see 7.998 kWh .. this could be good enough with <10% of deviation … I will monitor it for some days.

A possibility to change the overall view for a summed version over all phases would be way easier and would be a nice addition.

I have a Quattro, which is inline with the grid, so everything to and from the grid passes through it, but import and export reads consistently 5% or thereabouts over compared to my smart meter.

Doesn’t help you, but if the totals don’t match your energy provider, it could just be normal inconsistencies. I did think about adding an ET112 energy meter, but didn’t bother in the end.

I just realised that the DESS reports are completely off because of the described behaviour… Here the report for “Cost and earnings” for the same timeperiod .. He is counting all “xxx from Grid” with Costs.. which simply is completely wrong. This simply can not be intended!

In comparison my grid view:

Ok.. after some digging where and how VRM is getting its data for this calculation from it seems I have found the solution.

Basically VRM is relying 100% how the grid meter is calculating and reporting overall power consumption and return numbers. Contrary to several posts in the forum it has nothing to do with any refresh rate as this is a very simply calculation. That is the reason why - depending on the country you are living - different grid meters are recommended… they simply sum the values differently depending on your country.

I will monitor my solution (only 5 lines of code needed to be changed) and will post the solution here.

Here how it looks now.

After one day of monitoring the changes indeed worked.
Prior to the changes DESS was working great as all 3 phases were balancing perfectly, but all reports were completely off as all negative phases were treated as “sent to grid” and compensated phases were treated as “from grid” … which simply is wrong from a price point here in Austria.

Example of wrong report:

Example of now correct report:

What did I do… basically - as described above - refresh rate and so on does not matter. The only thing that VRM is looking at are following parameters from your grid meter (at least what I have found out)

  1. /Ac/Energy/Forward
  2. /Ac/Energy/Reverse
  3. /Ac/Power

The trick is… the different meters simply report different values in those fields. For example… the EM540 reports the net metering data in those fields (Import-Export=Net for /Ac/Energy/Forward). Other meters which are meant for other countries do report non metered data.. same is true for the shelly integration.

Because I am working with dbus-shellyPlug (higher refresh rate then webhooks and modbus-tcp is not working in my version) - I adapted it.
Look for following part:

        if self.settings['/Role'] == 'evcharger':
          self._dbusservice['shelly']['/Ac/Energy/ForwardTotal'] = None if shellyData is None else sumEnergy
          self._dbusservice['shelly']['/Current'] = None if shellyData is None else sumCurrentAC
        else:
          self._dbusservice['shelly']['/Ac/Energy/Forward'] = None if shellyData is None else sumEnergy

        self._dbusservice['shelly']['/Ac/Power'] = None if shellyData is None else sumPowerAC
        self._dbusservice['shelly']['/Ac/Current'] = None if shellyData is None else sumCurrentAC
        self._dbusservice['shelly']['/Ac/Energy/Reverse'] = None if shellyData is None else sumEnergyReverse                                                            

And change it to following:

        net_energy = sumEnergy - (sumEnergyReverse or 0)
        net_power = sumPowerAC  # already net (positive = import, negative = export)

        if self.settings['/Role'] == 'evcharger':
          self._dbusservice['shelly']['/Ac/Energy/ForwardTotal'] = None if shellyData is None else sumEnergy
          self._dbusservice['shelly']['/Current'] = None if shellyData is None else sumCurrentAC
        else:
          self._dbusservice['shelly']['/Ac/Energy/Forward'] = None if shellyData is None else net_energy

        self._dbusservice['shelly']['/Ac/Power'] = None if shellyData is None else net_power
        self._dbusservice['shelly']['/Ac/Current'] = None if shellyData is None else sumCurrentAC
        self._dbusservice['shelly']['/Ac/Energy/Reverse'] = None if shellyData is None else 0  # optional: freeze at current value

This is not a perfect solution as I basically ignore all feed back power, but this is way more accurate as the solution without the changes.

If this helped you in your problem please just leave a short note. Thanks.

Edit: I just found another article in the Q&A that describes it well.. even though I was searching for almost 2 weeks.. I didn’t see this one. 10. FAQ

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.