Luminosity and humidity sensors for Arduino are maybe the cheapest sensors you could made.
The light sensor is made from a , a cheap resistor which blocks less current the more light there is.
They often come with arduino kits, and they cost in the range of 0.50 – 1€, but they are best bought in packs of 5 or 10 each.
The common photoresistor will be able to differ up to 5 stage of lighting, as “no light”, “shadow”, “cloudy”, “bright”, and “artificial light”.
Photoresistors aren’t reliable for high resolution measurements, as they have behave slightly different each other, so you should test them or give Arduino instruction to find max and min values, register them, and compare them with new values
Humidity sensor can be as simple as two carpenter nails immersed on soil, one wired to 5v and the other wired to an analog pin and GND.
The analog pin on Arduino will read the current is flowing after coming in the soil, and, after some test, you will be able to understand the return values.
Usually the values of the sensor depends also by soil composition, nail state, and battery age.
Return values range between 5 and 800, with the “soil wet enough” value being near 400-500mA.
Nail touching gets a value of 800, and nails in air get a value of 5.
Nails immersed in water and mud will get a value about 700.
This kind of sensor however it’s best used not continuously, but rather once each hour or few times a day, bacause nails have to be cleaned to be realiable after hours, and battery would drop voltage over time.u
Using this kind of sensor with a time triggered servo motor will expand the sensor and the battery life, by getting the same accuracy with reading of one minute every hour, rather than having it planted always in the terrain.
The soil drying drops about 5mA of conductivity each hour on a sunny day in temperate climate, and plant are tolerant about being watered one hour sooner or later.