I haven't tried a fire piston yet.
So far, I think the ferro rod and the flint & steel are the most robust and work when wet.
My friend soaked his flint and steel, char cloth and tinder (jute cord) in a container of water for about 20 minutes. He took the pieces out, patted them dry on his shirt and got fire even though the char cloth and tinder was still damp.
I have tried the ferro rod in heavy rain and it will still spark, although not as effectively as when dry. The easy fix is to do it under some cover.