This can be done in two ways: the easiest is probably to use an external server, like a Raspberry Pi, which receives data from the sensors, computes watering level or any adjustment you need, and use OpenSprinkler’s HTTP API to send the result to OpenSprinkler, say, to modify the watering level, trigger a rain delay etc.
The more difficult route is to modify the OpenSprinkler firmware to read the sensors. This is harder due to the limited computation resources of the microcontroller, and also you will be restricted to use C++ as that’s what the firmware is written in. In contract, with the first approach you can use any scripting language you want.