This generally requires current sensing support. At the moment OpenSprinkler DC has this support — it’s done by simply connecting a 0.2 ohm power resistor on the ground return wire from all stations, and wire that to an analog pin on the microcontroller. So it monitors the total current draw from all stations. By turning on each station individually, and monitor the current draw, you can detect each station’s status individually and tell if there is a shorting.
Sensing AC current is a bit more complex, but doable. One solution is to use a precision rectifier:
to sense the peak voltage of the current sensing resistor, and that’s roughly proportional to the RMS current. This involves using an op-amp, but it’s pretty cheap to add.