I’ve started to take an interest in this, as a possible capability of IotaWatt to some degree. The device currently takes about 38 high resolution samples (650 sample pairs) per second. (That’s about 30 channels per second with about 780 sample pairs per cycle at 50Hz). At present they are evenly distributed over however many active channels are being monitored - up to 14.
I’ve been giving some thought to the notion of preferential treatment for specific channels, and with respect to this capability - more frequent sampling of the mains. So in particular where there is a single main, the main could be sampled say every 4th time so it would be sampled up to 8 times per second, while the others would sample close to twice per second. There is enough time between samples to process and organize the mains data.
But I don’t really know what’s required. I have high resolution data of individual cycles, and could put together a profile of the main with 8 samples per second. There is about 6-7ms available between sampling that is mostly unused. The ESP8266 is an 80Mhz 32 bit machine with pretty fast floating point, so are these algorithms in that class or do they need something like a graphics processor?
The ESP32 is also a potential migration path. The processor is about the same speed but it has two cores, so there is the potential to do a lot of processing in parallel to the sampling.