Food is just one of those things that we need to survive. Plants can grow on their own without human intervention but the quantity and quality of the crop will vary from year to year. Even elaborate farms can have good and bad years due to variables such as weather, disease, bugs, pollution and soil condition.
There is a system called Aquaponics that attempts to control those variables. Aquaponics combines aquaculture (raising aquatic animals) with hydroponics (growing plants in water). The Aquaponic system tries to emulate what happens in nature without the variation; water-based animals eat plants and excrete waste and that waste is used as food for plants.
[Kijani Grows] has built an Aquaponic setup and added a smart controller that is made out a bunch of stuff you would not normally associate with a garden. Their are several sensors in the system that measure water flow, tank level, water quality and dissolved oxygen. An Arduino monitors these sensors and reports the information back to a $20 router running OpenWRT. All of the recorded data is also stored for review later. Software on the router determines what needs to be adjusted in the enclosed ecosystem. The router communicates this information back to the Arduino which in turn controls the water pumps, heaters, fish feeder and lighting. And as if that wasn’t enough, the control system can be set up to send out messages via email, SMS or social media.