Derived Three-phase reconciliation with enphase numbers

I have followed the derived three-phase instructions and set the a/b/c phases via the trial and error approach and end up with mains numbers that are inconsistent with what the enphase system is reporting for CT clamps over the same wires with enphase reporting 300-500 watts and around 850 for iotawatt.
The three CT’s I installed so far on light and pump breakers appear to report the correct numbers when I selected the appropriate phase.
Can I assume the enphase mains numbers are correct and I need to adjust the iotawatt configuration or should I compare the numbers with the net meter to confirm which system is reporting correctly?
This graph shows the overnight mains numbers as they swap to negative when the PV kicks in.

A power CT with the 1300w pool pump and spikes for the water tank pump.

A comparison of the numbers on PVOutput


The enphase view

I wouldn’t assume anything yet, but the IoTaWatt and envoy numbers are pretty far apart, so giving the envoy the benefit of the doubt, lets take a look at the IoTaWatt configuration.

Can you post:

The input setup display that lists all of the inputs with their configured CTs please?

A screenshot of the status display with the solar cranking?

A graph+ of the hour that includes the time of the above screenshot showing total_power and the inverter output?

Your PVoutput setup (obfuscate the key)

Thanks

Here are the input and PVOutput screens. I have been away for a few days so will need to get the graph+ and screenshot in the morning. I will add some CT’s for the PV sometime tomorrow.


I think you will need to have a CT (single-phase inverter) or three CTs (three-phase inverter) on the inverter. Judging by the mains plots in the original post, it looks as if your inverter feeds in on the consumer side of your mains, and so must be included in your consumption upload to PVoutut. Documentation here.

Consumption in PVoutput is what you are using in total, and generation is your inverter output. From that data PVoutput computes import and export.

Still don’t know if your mains are correct, waiting for the plot requested.

We have an old 2.8kw string inverter and 7.9 across three envoy phases so have plotted 4 CT’s and the output (solar). I haven’t adjusted the envoy solar phases yet so all are on A.
The updated inputs.


The updated PVOutput

The graph+ with the sources you requested

The Solar_string numbers track with the display on the string inverter so appear to be on the correct phase.

The enphase is reporting 7.2kw for total solar (including the string inverter) and the three phase clamps that are all on A are reporting 6.2. I will have a go at assigning the phases to see if they reconcile.

You definitely need to have the correct phase assignments for the inverter outputs.

Incorrect phase assignments should cause IoTaWatt to understate the power by about 33%, but notwithstanding that error, the plot makes no sense. Total Power is negative before any of the solar begins to show output. When they do come online at 8:10, it seems to have no effect on total power, yet when they all dip at 8"18 and 8:22, total power increases.

Can you show a picture of your board with the CTs and hopefully showing where the solar ties in?

I only plugged the CT’s in and configured them @ 8:10 so there was power and PV in the mix however IoTaWatt could only see the mains which had production and consumption. I think I have assigned the three phase CT production CT’s correctly now as of 9:15am.

All of the solar CT’s are showing as reversed and I haven’t enabled negative numbers. Is there a preferred way to have them configured i.e. should I reverse the clamp? or should they be showing negative numbers?

I can’t make sense of this without context. Can you post a picture of the board showing the CTs. I need to see where the solar connects with respect to the mains.

Front of the board showing mains breakers and meter.

Envoy CT clamp with 1 phase and string inverter

IoTaWatt CT on string inverter


Other envoy CT’s and the IoTaWatt CT’s on the same wires

The IoTaWatt CT’s on the mains. They are on the same wires in the same place as the envoy clamps. They are on the mains between the breaker and the meter, so way before any PV is added into the board.

I changed phase on the mains and it seems to be closer to the envoy.

The mains numbers now track much closer to the solar numbers.


I will stop fiddling with the phases until I get some feedback from about how to move forward.

Looking at the last plot, the solar is about twice the mains. Where the total solar is 10kW, the mains are -5kW. In a snapshot that could just mean there is a 5kW load, but when the solar dips, the mains go up by half as much. It’s unlikely a 5kW load is varying with the solar output. So I think there is something fundamentally wrong here.

The wiring is a ball of worms, but I can see a few significant things. It appears the mains CTs and solar CTs are configured as the correct model. The mains CTs appear to all be oriented the same way on the cables, yet the configuration shows that Main_1 and Main_3 are logically reversed (reverse is checked). That should not be the case with derived reference. So there is a problem with phase assignment.

So back to basics. Let’s get the mains correct.

Unclick the reverse box on Mains 1 and 3.

Set all three Mains phase to A.

Plug a significant load, I like a hair dryer, into the same circuit as the VT. You may need to use a power strip to do that.

Now cycle the Load on and off and watch which Main changes when you do that several times. That is phase A. Note how many Watts IoTaWatt changes.

The other two are B and C. Set them both to B. Find another plug that is not on phase A, plug in your load and cycle it a few times. 20 seconds or so on then off the same.

Now look at a 10 minute plot of the three mains and see which one changed with the load. If it changed the same amount as you noted before, that phase is phase B, and the remaining is C. If it changed about half as much, that pase is C and the other is B.

Now I didn’t mention that they may all be going negative rather than positive when you apply the load. if that is the case, then reverse ALL of them, either physically, or by checking ALL of the reverse boxes - same effect.

Once you accomplish that, we can start to see what’s going on with the loads and inverters.

Thanks Bob, The hair dryer approach worked and I have set the mains phases using that approach. Daytime consumption (PV-Mains) makes sense now.
The Graph+ makes more sense to me and moves with the clouds and other weekend loads.

The inputs and outputs make sense from an absolute perspective.

I broke the PVoutput at one stage when I defined the generation output. That might be fixed now after I added some brackets. I was getting this error in the logs “11/07/20 10:02:56 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [5168] too”

OK, getting closer now. Lets talk about the overall scheme. There are different ways to view the data, its all relative, but most installations setup their mains to be positive when using power from the grid and negative when exporting to the grid. You seem to be the opposite. I’d recommend reversing ALL of the mains CTs. You can do that by clicking reverse on each of the three inputs.

You didn’t post your outputs definitions, but it looks like:

Total_power is the sum of your three Mains.
Solar is the sum of the four solar outputs.
Consumption is Total_power - Solar.

So lets say you reversed the mains. Those numbers in the status above would be:

Total_power: -7625.3 Watts
Solar: 8090.1 Watts
Consumption: -15715.4 Watts

Now consumption isn’t meaningful. Typically, and by definition in PVoutput, Consumption is the amount of power you are using in the home, regardless of where it comes from.

If you think about it, both the mains and the solar are power sources for the house. Conceptually, they are the same. When they are positive, they are providing power to the house, when they are negative, they are exporting power from the house. If you added a battery storage, it would be negative when charging the battery and positive when the battery discharges to the house.

So what you are using is the sum of all the things that supply power to the house.

Consumption = Total_power + Solar (obviously you would need to add the individual components).

So now in the above example, Consumption would be 464.8.

That’s what you need to export to PVoutput as consumption. Your generation is good. PVoutput will calculate import and export such that
Consumption + export = Generation + import

Hi Bob, I have been away from home a bit over the past couple of weeks but I have made the changes to reverse the mains and calculate consumption using the formula you suggested.
The PVOutput interface still comes up with an error around 4:50-5:00am. Thats well before sunrise and when I looked at the graph+ figures they looked consistent with the numbers from earlier in the morning.
At the moment the IoTaWatt is inside the panel and seems to struggle a bit with WiFi connectivity so I should probably move it to a housing thats external to the switch box.
The summary is that I the numbers are now quite consistent with the envoy so I think the various CT’s are measuring the same and I can see how to select the correct phase.
Not sure why the PVOUtput interface is failing before the PV system starts to generate any power. Is there a log with the request and response messages? Perhaps iotawatt/iotalog.log?

Sorry I’ve lost my context on this issue. Your going to have to bring me up to speed on where you are.

Name of the PVoutput site so I can look at what has been output.
IoTaWatt message log for the day in question.
Inputs configuration display
PVoutput setup
Status display with solar producing

Then give me some time to digest that.

Name of the PVoutput: pvonly_iotawatt
IoTaWatt message log:
11/23/20 14:06:58 timeSync: service started.
11/23/20 14:06:58 statService: started.
11/23/20 14:06:59 dataLog: service started.
11/23/20 14:06:59 dataLog: Last log entry 11/23/20 14:06:55
11/23/20 14:07:58 historyLog: service started.
11/23/20 14:07:58 historyLog: Last log entry 11/23/20 14:06:00
11/23/20 14:08:08 PVoutput: started
11/23/20 14:11:34 WiFi connected. SSID=GryphonIoT2733_2G, IP=169.254.70.199, channel=1, RSSI -94db
11/23/20 14:11:34 MDNS responder started for hostname IotaWatt
11/23/20 14:11:34 LLMNR responder started for hostname IotaWatt
11/23/20 14:11:34 Updater: service started. Auto-update class is MINOR
11/23/20 14:18:56 Updater: Invalid response from server. HTTPcode: -4
11/23/20 14:21:04 PVoutput: System pvonly_iotawatt, interval 5, donator mode
11/23/20 14:21:31 PVoutput: Start status beginning 11/17/20 00:05:00
11/23/20 14:30:54 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [641] too h
11/23/20 15:11:47 Updater: Invalid response from server. HTTPcode: -14
11/23/20 15:30:54 PVoutput: System pvonly_iotawatt, interval 5, donator mode
11/23/20 15:30:55 PVoutput: Start status beginning 11/17/20 00:05:00
11/23/20 15:40:32 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [641] too h
11/23/20 16:11:53 Updater: Invalid response from server. HTTPcode: -4
11/23/20 16:40:32 PVoutput: System pvonly_iotawatt, interval 5, donator mode
11/23/20 16:40:33 PVoutput: Start status beginning 11/17/20 00:05:00
11/23/20 16:40:39 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [641] too h
11/23/20 17:11:52 Updater: Auto-update is current for class MINOR.
11/23/20 17:40:39 PVoutput: System pvonly_iotawatt, interval 5, donator mode
11/23/20 17:40:40 PVoutput: Start status beginning 11/17/20 00:05:00
11/23/20 17:40:46 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [641] too h
11/23/20 18:40:46 PVoutput: System pvonly_iotawatt, interval 5, donator mode
11/23/20 18:40:47 PVoutput: Start status beginning 11/17/20 00:05:00
11/23/20 18:41:02 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [641] too h
11/23/20 19:41:02 PVoutput: System pvonly_iotawatt, interval 5, donator mode
11/23/20 19:41:03 PVoutput: Start status beginning 11/17/20 00:05:00
11/23/20 19:41:09 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [641] too h
11/23/20 20:41:09 PVoutput: System pvonly_iotawatt, interval 5, donator mode
11/23/20 20:41:10 PVoutput: Start status beginning 11/17/20 00:05:00
11/23/20 20:41:28 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [641] too h
11/23/20 21:41:32 PVoutput: System pvonly_iotawatt, interval 5, donator mode
11/23/20 21:41:33 PVoutput: Start status beginning 11/17/20 00:05:00
11/23/20 21:41:41 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [641] too h
11/23/20 22:41:41 PVoutput: System pvonly_iotawatt, interval 5, donator mode
11/23/20 22:41:42 PVoutput: Start status beginning 11/17/20 00:05:00
11/23/20 22:42:16 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [641] too h
11/23/20 23:42:19 PVoutput: System pvonly_iotawatt, interval 5, donator mode
11/23/20 23:42:20 PVoutput: Start status beginning 11/17/20 00:05:00
11/23/20 23:43:00 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [641] too h
11/24/20 00:12:50 Updater: Invalid response from server. HTTPcode: -14
11/24/20 00:43:00 PVoutput: System pvonly_iotawatt, interval 5, donator mode
11/24/20 00:43:04 PVoutput: Start status beginning 11/17/20 00:05:00
11/24/20 00:43:31 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [641] too h
11/24/20 01:43:31 PVoutput: System pvonly_iotawatt, interval 5, donator mode
11/24/20 01:43:32 PVoutput: Start status beginning 11/17/20 00:05:00
11/24/20 01:43:38 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [641] too h
11/24/20 02:43:42 PVoutput: System pvonly_iotawatt, interval 5, donator mode
11/24/20 02:43:46 PVoutput: Start status beginning 11/17/20 00:05:00
11/24/20 02:44:46 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [641] too h
11/24/20 03:44:46 PVoutput: System pvonly_iotawatt, interval 5, donator mode
11/24/20 03:44:47 PVoutput: Start status beginning 11/17/20 00:05:00
11/24/20 03:45:33 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [641] too h
11/24/20 04:45:33 PVoutput: System pvonly_iotawatt, interval 5, donator mode
11/24/20 04:45:34 PVoutput: Start status beginning 11/17/20 00:05:00
11/24/20 04:45:40 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [641] too h
11/24/20 05:45:40 PVoutput: System pvonly_iotawatt, interval 5, donator mode
11/24/20 05:45:41 PVoutput: Start status beginning 11/17/20 00:05:00
11/24/20 05:45:59 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [641] too h
11/24/20 06:45:59 PVoutput: System pvonly_iotawatt, interval 5, donator mode
11/24/20 06:46:00 PVoutput: Start status beginning 11/17/20 00:05:00
11/24/20 06:46:06 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [641] too h
11/24/20 07:46:06 PVoutput: System pvonly_iotawatt, interval 5, donator mode
11/24/20 07:46:07 PVoutput: Start status beginning 11/17/20 00:05:00
11/24/20 07:46:13 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [641] too h
11/24/20 08:46:13 PVoutput: System pvonly_iotawatt, interval 5, donator mode
11/24/20 08:46:14 PVoutput: Start status beginning 11/17/20 00:05:00
11/24/20 08:46:20 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [641] too h
11/24/20 09:46:20 PVoutput: System pvonly_iotawatt, interval 5, donator mode
11/24/20 09:46:21 PVoutput: Start status beginning 11/17/20 00:05:00
11/24/20 09:46:30 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [641] too h
11/24/20 10:46:32 PVoutput: System pvonly_iotawatt, interval 5, donator mode
11/24/20 10:46:33 PVoutput: Start status beginning 11/17/20 00:05:00
11/24/20 10:47:38 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [641] too h
11/24/20 11:47:38 PVoutput: System pvonly_iotawatt, interval 5, donator mode
11/24/20 11:47:39 PVoutput: Start status beginning 11/17/20 00:05:00
11/24/20 11:47:45 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [641] too h
11/24/20 12:47:45 PVoutput: System pvonly_iotawatt, interval 5, donator mode
11/24/20 12:47:46 PVoutput: Start status beginning 11/17/20 00:05:00
11/24/20 12:47:52 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [641] too h
11/24/20 13:47:52 PVoutput: System pvonly_iotawatt, interval 5, donator mode
11/24/20 13:47:53 PVoutput: Start status beginning 11/17/20 00:05:00
11/24/20 13:47:59 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [641] too h
11/24/20 14:47:59 PVoutput: System pvonly_iotawatt, interval 5, donator mode
11/24/20 14:48:00 PVoutput: Start status beginning 11/17/20 00:05:00
11/24/20 14:48:06 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [641] too h
11/24/20 15:48:06 PVoutput: System pvonly_iotawatt, interval 5, donator mode
11/24/20 15:48:07 PVoutput: Start status beginning 11/17/20 00:05:00
11/24/20 15:48:13 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [641] too h
11/24/20 16:48:13 PVoutput: System pvonly_iotawatt, interval 5, donator mode
11/24/20 16:48:14 PVoutput: Start status beginning 11/17/20 00:05:00
11/24/20 16:48:33 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [641] too h
11/24/20 17:48:33 PVoutput: System pvonly_iotawatt, interval 5, donator mode
11/24/20 17:48:34 PVoutput: Start status beginning 11/17/20 00:05:00
11/24/20 17:49:07 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [641] too h
11/24/20 18:49:07 PVoutput: System pvonly_iotawatt, interval 5, donator mode
11/24/20 18:49:08 PVoutput: Start status beginning 11/17/20 00:05:00
11/24/20 18:49:14 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [641] too h

** Restart **

SD initialized.
11/24/20 08:45:39z Real Time Clock is running. Unix time 1606207539
11/24/20 08:45:39z Power failure detected.
11/24/20 08:45:39z Reset reason: External System
11/24/20 08:45:39z ESP8266 ChipID: 6145861
11/24/20 08:45:39z IoTaWatt 5.0, Firmware version 02_05_11
11/24/20 08:45:39z SPIFFS mounted.
11/24/20 19:45:39 Local time zone: +10:00
11/24/20 19:45:39 Using Daylight Saving Time (BST) when in effect.
11/24/20 19:45:39 device name: IotaWatt
11/24/20 19:45:42 Connecting with WiFiManager.
11/24/20 19:45:45 HTTP server started
11/24/20 19:45:45 WiFi connected. SSID=GryphonIoT2733_2G, IP=192.168.9.7, channel=1, RSSI -89db
11/24/20 19:45:45 MDNS responder started for hostname IotaWatt
11/24/20 19:45:45 LLMNR responder started for hostname IotaWatt
11/24/20 19:45:45 timeSync: service started.
11/24/20 19:45:46 statService: started.
11/24/20 19:45:46 Updater: service started. Auto-update class is MINOR
11/24/20 19:45:46 dataLog: service started.
11/24/20 19:45:46 dataLog: Last log entry 11/24/20 19:45:00
11/24/20 19:45:48 Updater: Auto-update is current for class MINOR.
11/24/20 19:46:46 historyLog: service started.
11/24/20 19:46:46 historyLog: Last log entry 11/24/20 19:45:00
11/24/20 19:46:55 PVoutput: started
11/24/20 19:46:55 PVoutput: System pvonly_iotawatt, interval 5, donator mode
11/24/20 19:46:56 PVoutput: Start status beginning 11/17/20 00:05:00
11/24/20 19:47:13 PVoutput: Unrecognized HTTP completion, upload Bad request 400: Power value [641] too h

Inputs configuration display

PVoutput setup

Status display with solar producing
This is current which isn’t producing.

An older status with the same setup and consumption negative when PV > house consumption

For whatever reason, I can no longer see pvonly_iotawatt.

It looks as though you don’t have “allow negative value” set for your mains. I question whether you are actually consuming 7,625 Watts. I think you are actually exporting -7,625 Watts and so your usage is -7,625 + 8,090 = 465 Watts.

consumption should never be negative, and shouldn’t be if everything is working right, but to be sure you might enclose the consumption calculation in parenthesis and then append “max 0” to insure no negative number is sent.

Waiting to see the data. Could you run this query in your browser?

http://iotawatt.local/query?select=[time,Consumption,Solar]&begin=2020-11-17T04:30&end=2020-11-17T05:30&group=5m&format=csv