Not sure that will be an easy solution to this. You could look into the following options:
- test a few other brands of PIR to find one that delivers more reliabel results
- add a second PIR and only trigger if you get signals from both
- only trigger if you get a second signal within a preset time(your proposal)
In general, all systems will show false positive (system triggers, without movement) and false negative signals (system does not trigger despite bonafide movement).
Option 1 above does not guarantee results and can take quite some time, but maybe a good way to go about if you are willing to spend the time and money.
Option 2 obviously doubles the costs/number of sensors; and you will have to place both sensors carefully to avoid situation where only one sensor picks up movement (and the other for example is too far away).
Option 3, slows the response of your system, depending on how long you wait for the confirmatory signal; if it is milliseconds, you may not notice, if it is seconds you will notice. You would need to perform quite some testing on your system to capture its behaviour, for example, how does the false positive signal look like, one spike, several spikes, how long does the signal last. How does your sensor indicate real movements? One signal, bursts of signals…how long does your signal last and when is your sensor ready to send out another signal (which would determine the wait time). Where do you put the sensor and how sensitive is your sensor to pick up slow movements etc.
It will likely require some experimentation to determine what works best for you, to limit the times where it goes on without movement (false positives) and at the same time the equally annoying effect of the system not triggering (or too slowly triggering) when you want it to switch on lights.
If you go with option 3, you may want to look at posts that deal with debouncing switches, timers and latches. For example here:
if you search for debouncing you will find a several approaches.
Or just a timestamp technique, for example here: