This is a 50sqm balcony/terrace on the 2nd (3rd American) floor of a rental apartment building. I immediately knew we had to take the apartment, because having a balcony garden was my number 1 wish. In that sense, we definitely got super lucky.
This is year 4 of the garden, and it feels like we’ve reached “routine” with it. In the first year, we lugged about 2.5 cubic meters of soil up there to fill all the pots. From June-October, this space is enough to fill 100% of our (two people) vegetable needs.

Unsurprisingly, this is way too much to water by hand every day, not to mention when we’re not home for some days/weeks. The balcony is also south-facing, and it gets hot in the summer (seriously, I have burnt my feet on the stones before).
Unfortunately, there’s also no water outlet on the terrace itself, and the landlord said “no” to putting one there (which was expected, the way the house/apartment is built is not really suitable for that).
Our solution has been to put two 300l rain tanks on the balcony (atop of load bearing walls). They get filled by a hose from the kitchen tap whenever required. The barrels are connected by a second hose. In the one in the greenhouse, a rain barrel pump sucks water out, into a watering computer and optionally to a hose for manual watering.
From the watering computer, two watering circuits start; originally the plan was to distinguish between plants that constantly needed a bit of water, and ones that preferred a lot of water occasionally (e.g. the citrus plants); in practice, it turned out to be easier to just always water everything a bit. Oh well.
The watering computer itself it pretty dumb / not connected to an app or the like; it just opens the valves every 8 hours for (in the summer) 3 minutes each time. That’s mostly OK. On super hot days, I sometimes start a fourth round of watering in the early afternoon.
The pump is however plugged into a Zigbee-enabled smart socket, which is controlled by an automation via HomeAssistant (so, all-locally, thankfully). The main purpose of this is an automation that disables the pump when there has been a lot of rain in the past 24hrs, or a moderate amount of rain in the past 8 hours. Not that important when we are home, but usually extends the number of days we can be away from home by 2-3 days for a full filling of the tanks.

Finally, here’s some pictures and a video from the past couple of years. I think this year is the first year where no new pots were added, and we needed to buy hardly any new soil (the compost bin has really been worth it in that regard, as well!)
Happy to answer any questions!!


Awesome! I somehow immediately thought you are german and then the gardena hoses and the Insektenhotel confirmed it.
Do you even manage to eat everything yourself of what you harvest?
Do you have a rain sensor for the disabling automation?
Oh nooo, am I that easy to clock as German 😄 Gardena really nice for the price though.
Mostly yes. We’re not throwing anything out, but giving some stuff to neighbours/family if we have too much of something. But esp. for things like peas or paprika, we also freeze a bunch for use throughout the year, pickle some cucumbers, and so on.
No, actually - that was our initial idea as well, but they are not inexpensive, and not necessarily super accurate, from what I’ve read. Instead we’re just using the OpenWeather API. If you’re curious, here’s the HA stuff we wrote for it:
Automation:
alias: Deaktiviere Pumpe nach Regen description: "" triggers: - at: "06:30:00" trigger: time - at: "14:30:00" trigger: time - at: "22:30:00" trigger: time conditions: [] actions: - if: - condition: or conditions: - condition: numeric_state entity_id: sensor.cumulative_rain_8h above: 4 - condition: numeric_state entity_id: sensor.cumulative_rain_24h above: 10 then: - condition: state entity_id: switch.steckdose_wasserpumpe_switch state: "on" - metadata: {} data: {} target: device_id: <redacted> action: switch.turn_off else: - condition: state entity_id: switch.steckdose_wasserpumpe_switch state: "off" - metadata: {} data: {} target: device_id: <redacted> action: switch.turn_on mode: singleCustom sensors:
sensor: - platform: statistics name: "Cumulative Rain 24h" entity_id: sensor.openweathermap_rain state_characteristic: sum max_age: hours: 24 - platform: statistics name: "Cumulative Rain 8h" entity_id: sensor.openweathermap_rain state_characteristic: sum max_age: hours: 8(These just sum up all values over the last x hours. “We have integration at home!” Unit is watercolumn in millimeters (I think))