It fires randomly because the "spark" is being triggered at top-dead-center. When that happens, the spawned circle might make the piston push down slightly before or slightly after the collision. Ideally, you want the spark to fire just slightly after TDC. (If you know anything about internal combustion engines, then this will make sense). In my opinion, the best way to trigger the spark is to use a position on the crank shaft rather than the top of the piston. Then you can adjust the timing perfectly for the most efficient operation.
Try mounting a tiny circle or box on the edge of the crank shaft, and place another geometry near the crank shaft so that the collision triggers the spark when the piston is slightly beyond TDC. You can do that with a scene.my variable. When the spark gets triggered, your little red circle will spawn the combustion circle, pushing the piston down.
bugsbunny - Don't you have more to say than just "wat"? Did you not understand what I told you? Let me know and I will try to explain it again if you did not understand what I said.