It would be so great tot have a function that can detect paterns in the data of a electricity meter (power factor & current in time dimension). If it sees recurring paterns it might suggest to link it to a device and a operating mode. The user would have to make the link (this paterns is the fridge turning on, this paterns is the washing machine doing a spin circle,…)
It might even suggest devices and operating modes through community learning paterns (this paterns was the LG coffee machine making espresso in Steve’s home, so it would suggest the samen in your home)
This is interesting but not as easy as it may sound.
I did some experiments some time ago and was indeed able to pick up some patterns such as my boiler with different power settings.
It’s called NILM (Non-Intrusive Load Monitoring) and there are some papers out there on previous attempts. With data (down to second resolution if needed) I have both active and reactive load on three phases (and much more but i belive the delta from previous sample for those six measures is the interesting features.
Feature engineering probably includes time of day, month etc. With the data I used various clustering and dimentional reduction techniques.
I also did some FFT (Fast Fourier Transform) which revealed the cyclic patterns.
I did not complete the experiments due to lack of time but would happy to pick it up again.
Images from the experiment just for fun:
Another data point to show this isn’t easy: there’s a commercial product called Voltaware that offers NILM as an appliance and app. Customer reviews on Amazon show that it struggles to attribute high load / long duration appliances accurately, not to mention smaller loads like a coffee machine. E.g.:
Over Christmas I used the dishwasher 2-3 times per day, but the app only reported it being used once. Other times I have used the washing machine a few times, and the app often does not correctly record the number of times it is being used.
Does not recognise cycles dryer/heater dishwasher. Dishwasher being used daily but app shows when ever it wants.
If a full-time development team focused on NILM is still struggling to get it to work, then it’s unlikely the HA community can crack this any time soon.
I agree with the complexity. It’s defintely a nische feature and nothing that would go into HA core.
But if others do experiments lets share our findings and we might be able to do something - or prove its not accurate enough and shouldn’t be done.
This is probably a game of creativity. Who comes up with the smartest algorithms and feature will reach furtherst. When giving it a thought fir example the period of the cycles on my heater will probably vary with the outside temperature.
Luckily I have also temperature data for inside and outside as well as the heating systems to/from radiators to play with.
But the complexity is huge! For example my heater is powering up/down in several steps of like 1.5kW each, while there are other consumers using the same amount of power. Hopefully they are on different phases ti distinguish them but again, disaggregatuon is hard if we want it accurate.
It’s a very complex problem, but it might add tons of useful data to the systeem of so many users. This means it might be a core feature, even though it’s a hard nut to crack.
Doing a FFT on the different parameters and clustering them might be a start, but it might be difficult to find adequate intervals on which the cluster might be based.
Shouldn’t we have to do a FFT on the gliding cluster movement though time itself (FFT on Frequency -time data) to detect the signature of a device? Or could we use an of the shelf image recognition on the “frequency-time image”?
Could a switching autoregressive hmm help to simply the data?
Let’s try!