01What Is Aquaponics?
Aquaponics is a closed-loop food production system combining aquaculture (raising fish) and hydroponics (growing plants in water). Fish produce ammonia-rich waste. Bacteria convert that waste into nitrates. Plants uptake nitrates as fertiliser. The cleaned water returns to the fish tank.
Nothing is discarded. No soil. Water consumption is ~90% less than conventional agriculture. You add only fish food and water lost to evaporation.
02Why Aquaponics?
Food Security
One IBC tote system (1,000L fish tank + 1m² grow bed) can produce 20–50 kg of fish + 100+ kg of vegetables per year in ~4m² of floor space.
Resource Case
- No synthetic fertiliser
- No soil-borne pests → no pesticides
- Water recycled continuously
- Producible indoors, on rooftops, in arid zones
Collapse Resilience (Minimal Node context)
A single aquaponic loop produces protein (tilapia, catfish, carp) and greens (lettuce, spinach, herbs) from a small footprint. Fish food can be supplemented with black soldier fly larvae (BSFL) grown on kitchen waste — closing the loop further.
03System Types
Media Bed (Flood-and-Drain / Ebb-and-Flow)
Grow beds filled with gravel or expanded clay are flooded with fish water on a timer, then drain back. Bell siphons or timed pumps manage the cycle. Best for beginners.
- Grow media: hydroton (expanded clay), river gravel, lava rock
- Ratio: 1:1 fish tank to grow bed volume minimum, 1:2 preferred
- Handles root veg + fruiting plants + greens
Deep Water Culture (DWC / Raft)
Plants float on polystyrene rafts in long troughs. Roots hang into oxygenated fish water. Used commercially at scale.
- Best for: leafy greens (lettuce, basil, herbs)
- Requires: separate solids filter, aeration blowers
- Not ideal for: fruiting plants, root vegetables
Nutrient Film Technique (NFT)
Thin film of water flows constantly through sloped PVC channels. Plant roots sit in channels and drink from the film.
- Best for: herbs, strawberries, lightweight plants
- Requires: good upstream filtration
- Very low water volume — less buffer, more sensitive to failure
Hybrid Systems
Most serious systems combine all three: fish tank → swirl filter → media beds → DWC troughs → UV steriliser → back to tank. See Section 13 (CHIFT-PIST) for the most reliable hybrid topology.
04The Nitrogen Cycle
This is the most critical concept. Everything else depends on it.
Fish eat food → produce NH3 (ammonia — toxic)
↓
Nitrosomonas bacteria → NH3 to NO2 (nitrite — also toxic)
↓
Nitrobacter bacteria → NO2 to NO3 (nitrate — plant food)
↓
Plants uptake NO3 → water cleaned → returned to fish
Water Parameters
| Parameter | Safe Range | Critical Threshold |
|---|---|---|
| Ammonia (NH3) | 0–0.5 ppm | >1 ppm = fish stress |
| Nitrite (NO2) | 0–0.5 ppm | >1 ppm = toxic |
| Nitrate (NO3) | 5–150 ppm | >300 ppm = stress |
| pH | 6.8–7.2 | <6.0 or >8.0 = bacteria die |
| Dissolved Oxygen | >5 mg/L | <3 mg/L = fish suffocate |
| Temperature | 18–30°C | Species-dependent |
05Cycling Your System
Cycling = establishing the bacterial colony before adding fish. Takes 4–6 weeks. Skip it and your fish die from ammonia poisoning.
Fishless Cycling (Recommended)
- Fill system with dechlorinated water
- Add ammonia source (pure ammonia drops or decomposing fish food)
- Dose to 2–4 ppm ammonia daily
- Test every 2 days — nitrite will appear first (good sign)
- Cycle complete when both NH3 and NO2 hit zero within 24h of dosing
Seeding Shortcuts
- Add gravel from an established aquarium
- Bottled nitrifying bacteria (Dr. Tim's, Tetra SafeStart)
- Add a used sponge filter from an existing tank
06Fish for Islamabad
Islamabad's temperature swing is the critical constraint: summers hit 40°C+ (water 30–35°C unshaded), winters drop to 5°C (water 8–10°C outdoors). No single fish handles the full range perfectly.
Tier 1 — Best fit, locally available
| Fish | Temp Range | Why it works |
|---|---|---|
| Rohu (Labeo rohita) | 18–38°C | Most popular food fish in Pakistan. Fingerlings at NARC and Punjab farms. Tolerates summer heat. Slows in winter but survives. |
| Common Carp (Cyprinus carpio) | 4–28°C | Survives Islamabad winters outdoors without heating. Hardy. Widely eaten locally. |
| Catfish (Clarias batrachus) | 15–35°C | Air-breathing — survives low oxygen. Best summer fish. Very forgiving for beginners. |
Tier 2 — Good with management
| Fish | Caveat |
|---|---|
| Catla (Catla catla) | Surface feeder, fast-growing. Needs >20°C — will slow significantly in winter. |
| Tilapia (Nile) | Excellent summer fish, dies below 12°C. Needs winter heating or indoor move. |
| Murrel/Snakehead (Channa) | Air-breathing, very hardy. Carnivorous — cannot mix with other fish. High-value meat. |
Recommended Strategy
Option A (no heating): Rohu + Common Carp. Both cold-tolerant, locally sourced, familiar food. Slow in winter — reduce feed and monitor. Resume normal feeding when water exceeds 18°C.
Option B (small heater): Tilapia + Catfish. Tilapia grows fastest in warm months; catfish mops up uneaten food from the bottom.
Stocking Density
- Beginner: 10–15 kg of fish per 1,000L
- Intermediate: 20–30 kg/1,000L
- Commercial: 40–60 kg/1,000L (requires heavy aeration + filtration)
07Choosing Plants
Easiest — Start Here
- Lettuce, spinach, kale, Swiss chard, silverbeet, pak choi
- Herbs: basil, mint, parsley, coriander, chives
Intermediate
- Tomatoes, peppers, cucumbers, eggplant, beans, peas
- Strawberries (excellent in NFT/vertical towers)
Hard / Avoid for Beginners
- Root vegetables (carrots) — only in very deep media beds
- Melons, squash — too large, too heavy
08System Sizing
Feed Rate Ratio (FRR)
The master calculation for aquaponics design:
FRR = Daily fish food (grams) / Grow bed area (m²) Target: 60–100 grams per m² per day Example: You feed 500g/day → you need 5–8 m² of grow beds
Fish Biomass Calculation
Daily feed = fish biomass × feed rate Rohu/Tilapia feed rate: 1–3% body weight per day Example: 20 kg of fish @ 2% = 400g food/day → Need: 4–6.5 m² of grow bed
Water Volume to Fish
- Minimum: 50L per kg of fish at harvest weight
- Comfortable: 100L per kg
09IBC Tote Build (Beginner)
The IBC (Intermediate Bulk Container) chop-and-flip is the most popular beginner build globally. One 1,000L IBC becomes both the fish tank and the grow bed.
Step-by-Step Build
Real-world IBC builds — see all 48 photos →
Materials
| Item | Approx. Cost |
|---|---|
| 1× IBC tote (used) | PKR 40,000–60,000 verified |
| 1× submersible pump (800–2000 LPH) | Check locally |
| Bell siphon kit or DIY PVC | Check locally |
| Grow media: hydroton or river gravel (~50L) | Check locally |
| Air pump + airstone | Check locally |
| Fish (20–30 juvenile Rohu or Catfish) | NARC or Punjab farms |
| API Freshwater Master Kit | Check aquarium shops |
10Bell Siphon
A passive, self-triggering drain that floods and empties your grow bed automatically — no timer, no electricity.
The 4 Phases
Troubleshooting Bell Siphons
| Problem | Cause | Fix |
|---|---|---|
| Won't trigger | Standpipe too tall / flow too slow | Cut standpipe shorter; increase pump flow |
| Won't break | Bell too short / drain too small | Cut bell shorter; enlarge drain pipe |
| Gurgling constantly | Media guard holes too small | Drill larger holes in media guard |
IBC systems with flood-and-drain plumbing — see all 48 photos →
11Vertical Tower Systems
Vertical towers grow plants in stacked pockets along a central PVC pipe. Water drips from the top through each level and returns to the fish tank. Maximum plant yield per footprint — no bell siphon needed.
Step-by-Step Build
Real-world vertical tower systems — see all 28 photos →
12Pump as Grow Bed (NFT Channels)
In NFT a thin film of water flows continuously along slightly angled channels. Plant roots hang in the film — oxygen above, nutrients below. The pump defines the grow environment.
NFT Layout & Root Zone
Channel Sizing
| Parameter | Value | Notes |
|---|---|---|
| Channel slope | 2–4% | 1:25 to 1:50 gradient |
| Film depth | 1–3mm | Thin enough to oxygenate roots |
| Flow rate per channel | 1–2 L/min | Enough to maintain film, not flood |
| Channel length | Max 12m | Longer = nutrient depletion at far end |
The Pump as Active Grow Component
In NFT, if the pump fails, roots dry out within 30–60 minutes. Unlike media beds (which retain moisture for hours), NFT has zero buffer. This means:
- Pump quality matters more — use a quality submersible pump with low failure rate
- A backup pump stored dry and ready is mandatory for any serious system
- Power outage = immediate plant risk — prioritise battery backup for pump
Real-world pump / NFT channel builds — see all 25 photos →
13CHIFT-PIST System
Constant Height In Fish Tank, Pump In Sump Tank. The most reliable multi-bed topology. Fish tank level never drops. Single pump serves unlimited grow beds.
Why CHIFT-PIST over standard IBC
| Feature | Standard IBC | CHIFT-PIST |
|---|---|---|
| Fish tank level | Fluctuates with flood/drain | Constant — fish prefer this |
| Pump location | Fish tank — risks dry-running | Sump — always submerged |
| Oxygen in fish tank | Varies with water level | More stable |
| Solids removal | Mixed with fish | Separate — easier to filter |
| Complexity | Simple | Needs extra sump tank |
Real-world example: thoughtcroft/aquamon — a CHIFT-PIST system with 1,000L fish tank + 700L sump + 3×450L media beds made from IBC chop-and-flip. Monitored via Arduino Uno + ESP8266.
Multi-bed IBC systems (CHIFT-PIST style) — IBC photos → | pump / channel photos →
14Arduino Sensors
A basic Arduino Uno setup (~PKR 3,000–5,000 equivalent) can monitor temperature, pH, and control pump timing automatically.
Core Sensor + Relay Setup
// Aquaponics Monitor — Arduino Uno
// Sensors: DS18B20 (temp), pH probe (analog), relay (pump)
#include <OneWire.h>
#include <DallasTemperature.h>
#define TEMP_PIN 2
#define PH_PIN A0
#define PUMP_RELAY 7
#define AERATOR_RELAY 8
OneWire oneWire(TEMP_PIN);
DallasTemperature sensors(&oneWire);
// Calibrate these values for YOUR probe — these are placeholders
float ph_slope = -5.70;
float ph_intercept = 21.34;
void setup() {
Serial.begin(9600);
sensors.begin();
pinMode(PUMP_RELAY, OUTPUT);
pinMode(AERATOR_RELAY, OUTPUT);
digitalWrite(AERATOR_RELAY, LOW); // aerator always on
}
float readPH() {
int raw = analogRead(PH_PIN);
float voltage = raw * (5.0 / 1023.0);
return ph_slope * voltage + ph_intercept;
}
void loop() {
sensors.requestTemperatures();
float temp = sensors.getTempCByIndex(0);
float ph = readPH();
Serial.print("Temp: "); Serial.print(temp); Serial.print(" C ");
Serial.print("pH: "); Serial.println(ph);
if (ph < 6.5 || ph > 8.0) Serial.println("ALERT: pH out of range!");
if (temp > 32.0) Serial.println("ALERT: Temperature high!");
delay(10000);
}
ph_slope and ph_intercept values above are generic — calibrate your specific probe with pH 4.0 and pH 7.0 buffer solutions. Recalibrate monthly.Flood-and-Drain Timer
// Flood 15 min ON / 45 min OFF cycle
unsigned long pumpOnTime = 15UL * 60 * 1000;
unsigned long pumpOffTime = 45UL * 60 * 1000;
unsigned long lastSwitch = 0;
bool pumpState = false;
void loop() {
unsigned long now = millis();
if (!pumpState && (now - lastSwitch > pumpOffTime)) {
digitalWrite(PUMP_RELAY, LOW); // active-low relay: LOW = pump ON
pumpState = true;
lastSwitch = now;
Serial.println("PUMP ON");
} else if (pumpState && (now - lastSwitch > pumpOnTime)) {
digitalWrite(PUMP_RELAY, HIGH); // pump OFF
pumpState = false;
lastSwitch = now;
Serial.println("PUMP OFF");
}
}
Reference repos for real working code:
- thoughtcroft/aquamon — Arduino Uno + ESP8266, CHIFT-PIST, ThingsBoard IoT dashboard
- devaaron/automated-aquaponics — Arduino + Python + Linux server, ebb-and-flow, data display site
15IoT Monitoring (Arduino + ESP8266)
From thoughtcroft/aquamon: two microcontrollers working together — Arduino Uno collects sensor data, D1 mini ESP8266 sends it to ThingsBoard over WiFi.
Architecture
[Sensors] → Arduino Uno (data collection)
↓ serial
D1 mini ESP8266
↓ WiFi
ThingsBoard IoT (dashboards, alerts, rules engine)
↓ browser
Phone / laptop monitoring
ThingsBoard Community
Free, self-hosted IoT platform. Provides device management, rules-based alerts (e.g., "if NH3 > 1ppm, send notification"), and real-time dashboards viewable on any browser.
- Run on a Raspberry Pi on your local network
- Access dashboard from phone anywhere on same WiFi
- Set alert rules: temperature spike, pH excursion, pump failure
Simpler Alternative: Node-RED + InfluxDB + Grafana
Arduino → Serial → Node-RED (on Raspberry Pi) → InfluxDB → Grafana dashboard. All open source, offline-capable. Grafana runs beautifully on low-power hardware.
16Data Logging
SD Card Logging (Offline)
#include <SD.h>
#include <SPI.h>
File logFile;
const int chipSelect = 10;
void setup() {
Serial.begin(9600);
SD.begin(chipSelect);
}
void logData(float temp, float ph, float nh3) {
logFile = SD.open("aq_log.csv", FILE_WRITE);
if (logFile) {
logFile.print(millis()); logFile.print(",");
logFile.print(temp); logFile.print(",");
logFile.print(ph); logFile.print(",");
logFile.println(nh3);
logFile.close();
}
}
Daily Log Template (Paper)
Date | Temp°C | pH | NH3 ppm | NO2 ppm | NO3 ppm | Feed(g) | Notes 2026-01-15 | 24 | 7.0 | 0.0 | 0.0 | 40 | 200g | All normal
17Water Quality Management
Daily (2 minutes)
- Visual: fish active? Any floating? Unusual spots?
- Confirm pump running, siphon cycling
- Check water clarity
Weekly
- API test kit: Ammonia, Nitrite, Nitrate, pH, Temperature
Monthly
- Chelated iron top-up: 2 mg/L dose (DTPA or EDTA form)
- Potassium check if growing fruiting plants
- System flush if nitrates exceed 150 ppm
pH Management
pH drops over time — nitrification produces acid.
- Raise pH: calcium carbonate (limestone), potassium bicarbonate, crushed coral in sump
- Lower pH: phosphoric acid (tiny doses), CO₂ injection
- Never swing more than 0.2 pH per day — bacteria and fish are sensitive to rapid change
Dissolved Oxygen
- Minimum: 5 mg/L in fish tank, 3 mg/L in grow beds
- At 30°C, water holds 50% less O₂ than at 10°C — aerate more in summer
- Increase with: airstone + pump, venturi injector, waterfall effect from drain return
18Fish Feed & BSFL
Commercial Pellets
- 32–40% protein pellets for tilapia/catfish/carp
- Feed 2× daily — morning + evening
- Amount: what fish eat in 5 minutes — remove excess immediately
- Uneaten feed = ammonia spike — do not overfeed
Black Soldier Fly Larvae (BSFL) — Closing the Loop
BSFL converts kitchen waste into high-protein larvae fed directly to fish. 40–45% protein, excellent fish supplement.
BSFL Colony Setup
- Bin with drainage: ~60cm × 40cm wooden or plastic
- Add kitchen scraps: fruit/veg peels, cooked food
- Avoid: meat or dairy in small systems (odour)
- Adult flies lay eggs in ramps provided
- Larvae self-harvest by crawling up ramp into collection bucket
- Frass (waste) = excellent soil garden fertiliser
19Mineralisation & Worms
Solid Waste in Media Beds
Fish solids mineralise within gravel beds — converting locked phosphorus and trace minerals back into plant-available forms. This is why media beds can run without a separate filter. DWC systems need a swirl filter upstream.
Swirl Filter (Radial Flow Separator)
Water enters a cylindrical tank tangentially, solids spiral to the bottom, clean water exits from the top. Build from a 200L drum. Solids collected in the cone bottom can be composted or added to a soil garden.
Worm Integration
Red wrigglers (Eisenia fetida) added to media beds eat fish solids and uneaten food. They mineralise waste, prevent beds from clogging, and produce worm castings that supplement plant nutrition.
20Lighting
Outdoors / Greenhouse (Best)
- Full sunlight 6–8 hours: ideal for fruiting plants
- Shade cloth 30–50% in Islamabad summers (May–August)
- Polycarbonate / greenhouse plastic roof transmits 70–80% sunlight
Indoors
| Plant Type | Light Required | Duration |
|---|---|---|
| Leafy greens | 4,000–6,500K LED, ~8,000 lux | 14–16h/day |
| Fruiting plants | Full spectrum, 12,000–16,000 lux | 16h/day |
| Herbs | 4,000–5,500K, ~6,000 lux | 12–14h/day |
21Pest & Disease
Fish Disease
| Problem | Symptoms | Treatment |
|---|---|---|
| Ich (white spot) | White spots on body/fins | Raise temp to 30°C + 1 tbsp non-iodised salt/10L |
| Fin rot | Fraying fins, red edges | Improve water quality first, then API Melafix |
| Fungal | White cotton patches | Methylene blue bath (hospital tank) |
| Bacterial ulcers | Bloating, skin ulcers | Improve water quality — antibiotics as absolute last resort |
Plant Pests
- Aphids: Diluted neem oil spray — safe for fish if no run-off into tank
- Whitefly: Yellow sticky traps
- Fungal: Improve airflow, reduce humidity
22Temperature Control — Islamabad
Summer (May–August, water can hit 32–35°C unshaded)
- Never let fish tank see direct sun — shade always
- Evaporative cooling: wet burlap draped over tank, fan blowing across
- Partial water change with cold water during peak heat
- Bury tank partially in ground — earth stays ~18–22°C year-round
Winter (December–February, water can drop to 8°C outdoors)
- Tilapia stops feeding below 18°C, death below 12°C
- Rohu and Common Carp more cold-tolerant — slow but survive
- Insulate tank with foam board
- Solar thermosiphon water heater: passive heat, no electricity
- Move system indoors or into greenhouse if possible
Power Requirement (Solar)
| Component | Power |
|---|---|
| Submersible pump | 20–40W continuous |
| Aeration | 5–15W continuous |
| LED grow lights (optional) | 30–100W |
| Minimum (pump + aeration) | 25–55W |
23Minimal Node Integration
An aquaponic unit integrated into a Minimal Node provides:
| Function | Detail |
|---|---|
| Protein source | 20–30 kg of fish per 1,000L tank per year |
| Vegetable factory | 100–200 kg of greens per 2m² grow bed per year |
| Water filtration | Biofilter removes ammonia — water already mechanically filtered |
| Thermal mass | Large water volume buffers temperature swings in space |
| BSFL loop | Kitchen scraps → larvae → fish → nutrients → plants → people |
Power: 25–55W continuous (pump + aeration) — handled by a 100W solar panel + 100Ah battery. The aquaponic loop is one of the lowest-power high-yield food systems possible.
24NARC & Local Resources
Other Local Sources
- Rohu/Carp fingerlings: Widely available from fish farms across Punjab — Attock, Chakwal, Rawalpindi districts
- Tilapia/Catfish: Aquarium shops in G-9/F-6 markaz — call ahead to confirm stock
- IBC totes (used): PKR 40,000–60,000 — check industrial areas, chemical suppliers
- Grow media: River gravel from construction suppliers; hydroton from hydroponics suppliers in Rawalpindi
- API test kits: Aquarium shops — call before visiting, not all stock the Master Kit
25Troubleshooting
| Symptom | Likely Cause | Fix |
|---|---|---|
| Fish gasping at surface | Low dissolved oxygen | Add airstone immediately — this is an emergency |
| Ammonia spike | Overfeeding / dead fish / overcrowding | Stop feeding, 30% water change, find dead fish |
| Nitrite spike | Bacterial colony disrupted | Reduce feed, stop antibiotics, patience |
| pH crashing | Nitrification overwhelming buffer | Add calcium carbonate / crushed coral to sump |
| Plants yellowing (whole plant) | Nitrogen deficiency | System under-stocked — add fish or reduce plants |
| Plants yellowing (new leaves) | Iron deficiency | Chelated iron 2 mg/L dose |
| Plants yellowing (old leaves first) | Potassium or magnesium | K₂SO₄ or Epsom salt |
| Siphon won't trigger | Flow too slow / standpipe too tall | Increase pump flow; shorten standpipe |
| Siphon won't break | Bell too tall / drain too small | Shorten bell; enlarge drain pipe |
| Algae bloom | Light reaching water | Cover fish tank; shade grow beds |
| Green slime on pipes | Normal biofilm | No action needed |
Quick Reference Card
CYCLE COMPLETE: NH3=0, NO2=0 within 24h of 2ppm dose SAFE AMMONIA: <0.5 ppm SAFE NITRITE: <0.5 ppm SAFE pH: 6.8–7.2 SAFE TEMP: 22–30°C (Rohu/Tilapia) FEED RATE RATIO: 60–100g feed/m² grow bed/day STOCKING: 10 kg fish per 1,000L (beginner) CHELATED IRON: 2 mg/L monthly pH crash → add calcium carbonate Fish gasping → add aeration IMMEDIATELY Ammonia spike → stop feeding, water change 30%
26Photo Gallery — 101 Real Rigs
Images sourced from Pinterest. IBC tote systems, vertical towers, and NFT/pump channel builds from around the world. Use as visual reference for your own build.




























