Previously I had experimented with measuring movement produced by the machine using a accelerometer, and noise using a microphone and accumulating these over a time window to determine if the machine was running or not. Both approaches suffered from cross talk between the two machines, and there would be periods where the washing machine would not produce detectable movement or noise. This lead to me not being confident enough in the data to make a proper implementation, as I never felt I could rely on the data I got.
I will try to adress this by increasing the precision of the sampling by applying piezo elements as contact microphones, and instead of just looking at the amplitude I will also look at amplitudes of different frequency bands. I am hoping that this will help eliminate classification errors based on cross talk, as the frequencies detected when another machine is running should be different (I expect lower) than if both machines are running. It would be great to attach the mics to a recorder and take a look at the spectrograms of the machines not running, either is running and when both is running. However, I don't have a Zoom or similar laying around, so that might not happen
Spectrograms of the different states could help determine if the approach is viable or not. Picture from wikipedia
Practically I plan to tape the mic to the machines, and use the output of both mics to determine if the machines are running. This will be sampled by an Arduino which runs the data through an FFT to produce the frequency band results and then sends it to the Oak described in the previous post. Once the data reaches the backend, I can do further processing and classification there and e.g. send out notification. I try to keep the amount of processing on the Arduino to a minimum, as I want the hardware and embedded software to be very static, while changes to software on the backend is a lot easier to manage.
Here's a few useful links on contact mics