Use a 12V lead-acid battery, it's easier to charge safely. Ditch the pi, it's a 5W waste. Use an arduino instead. If you need wireless link, use an ESP8266 and not an arduino, the ESP8266 can be programmed in Arduino IDE. Check arduino.stackexchange for how to make a webserver on ESP8266. Personally, I would use an ESP8266 to send data to a Pi (in your house), and have the Pi make a nice page with graphs etc., at 60s intervals.
Use DHT22 for temperature+humidity, or better, use SI7021. If you need many sense points for temperature, add some DS18B20 sensors.
On the arduino, you can use the Narcoleptic library to drastically reduce power consumption.
I have a 12V battery charger controller for solar with an arduino (without Narcoleptic), but it needs polishing. There are three stages to charging:
- 1) constant current
- 2) topping charge
- 3) floating charge
I never figured out how to do these three without some type of current sensor, so I just sensed battery voltage with a zener, and cut-off charging at ~12.7, waited, sensed again, and if necessary resumed charging. I charged with 13.5V @ 1A. There is a magic voltage at which you do not stress your battery, where you do not have to cut off charging, but I do not recommend it. You can consider a 12V battery 'empty' at 11.5V, I do not discharge below this mark. At this mark I disengage my loads with a relay and raise an alarm by blinking an RGB LED red.
I have it on fairly good authority that lead-acid batteries can tolerate higher temperatures without losing efficiency, than all that Li-* stuff. Though I suppose I would probably embed my battery in a hole in the ground anyway (properly protected against humidity), to keep it out of harms way, and fairly cool.
This works well enough for your application. I recommend getting some low-impedance Vgs MOSFETs to control charging. The IRF9630 P-channel MOSFET is okay, remember a pull-up resistor.
If you want Li-* batteries, those 18650 batteries are cheap, but you need to put some money into the charge controller. You'll also likely need some step-up conversion to drive the various bits in your greenhouse, which wouldn't be necessary for a 12V system.
For the solar panel itself, you need bypass diodes from with anode on negative terminal, for each cell, and a nice fat 2A blocking diode with its anode connected to solar panel Vout. When not illuminated, or saturated, these things consume power from an available source. Regardless of which voltage you need to charge, you will need a step-down converter to the charge controller input. 18V is just the rated output, it's going to be lower quite often. If a quality step-down converter is out of bounds, budget-wise, try an LM350 (it is lossy) voltage regulator temporarily.
You should use a relay to drive the pump, and add bypass diode with anode on its negative terminal. A pump can be pretty noisy for arduinos. You may also want 100V 10-100uF decoupling capacitor on the pump circuit.
See http://www.bristolwatch.com/solar_charger.htm - it's a very nice and verbose article.
Here's an obscure diagram of my charger module:
And a picture of the prototype (Yes, I know it's not beautiful):
Please ignore the 14.67 input voltage, I had the novel idea of using a LM317 current limiter. Don't do that. Just use 12.7V.
Use this as a template for your Pi webserver: http://randomnerdtutorials.com/esp8266-publishing-dht22-readings-to-sqlite-database/