That's one of the enigmas of using the RPi: The instructions for LEDs and switches are completely OS-independent: Get a connector, get a piece of PC board (I personally like the pre-made proto boards, Adafruit and others sell them), get a few resistors and a voltmeter, and most importantly a soldering iron. If you have no experience with soldering, diodes, and a voltmeter, then expect that the learning process will leave a few corpses behind (by the way, this is why using the $5 Pi zero is a good idea: it doesn't hurt the feelings so much if it goes in the trash bin). BUT: None of this will be found on FreeBSD-specific web pages. Matter-of-fact, when searching for FreeBSD-specific information, and generic Raspberry Pi information (like the pinout of the 40-pin connector), I saw that the Pi foundation has lots of nice tutorials on stuff like that, you just have to translate the commands from RaspBian.
For watering system, analog sensing (for example of soil humidity) and weather interfacing: If you want to do all of that yourself (from a Pi, chips, and soldering iron), there is lots of learning and work to do.
For the FreeBSD-specific part: I added an LED to GPIO 17 via 220ohm to +3.3V, and a pushbutton to GPIO 27 (via a 1K safety resistor to ground with a 10K pullup to +3.3V), and here is all the "coding" I had to do (it works perfectly from the command line):
Code:
# gpioctl -c 17 OUT
# gpioctl -c 27 IN # That's the default anyway
# gpioctl 27 # Returns 1 if button not pushed, 0 if button pushed
# gpioctl 17 1 # LED off
# gpioctl 17 0 # LED on
But: The gap between a switch and an LED, and a control system that can handle a half-dozen sensors and three industrial-size pumps (my case), or a weather station with sprinkler controller (your case) is gigantic. Lots of evenings and weekends of work.