Initialising
Skip to content
Simulation / HCI Engineer

Simulated Smart Greenhouse Control System

A software-simulated smart greenhouse system designed to reduce the physical and cognitive load of greenhouse management for elderly farmers. Entirely a simulation — no physical hardware or ROS installation involved — built as a cost-effective proof-of-concept before any physical implementation.

7 sensors8 actuatorsVoice control

Voice-first greenhouse dashboard: 7 sensors, 8 actuators, zone-effect decay logic, RX200 arm sim — runs live in your browser.

2025Simulation / HCI Engineer
Live Demo

Run the greenhouse — sensors, actuators, robot, voice.

A live, fully client-side reconstruction of the original Flask + ROS-simulated system — same sensor ranges, actuator logic, zone-effect decay timing, and voice interface, running entirely in your browser with no server.

Try: "move to zone C", "water zone B", "toggle day night", "turn on grow lights".

SYS.OK·CH.02
T+20:11:44Z
Live Simulation
Smart Greenhouse Dashboard
Sensors · Zone A
Temperature25.0°C
optimal 22–28 °C
Humidity70.0%
optimal 60–80 %
Soil Moisture50.0%
optimal 40–60 %
Light Intensity800lux
optimal 600–1000 lux
CO2 Level575ppm
optimal 350–800 ppm
pH Level6.40
optimal 6–6.8
Nutrient Level80.0%
optimal 70–90 %
Zones · Robot
@ Zone A · idle

Zone effects hold at full strength for 30s, then decay 5% every 5s until baseline.

Actuators
The problem

Greenhouse work is physical and cognitive load.

Traditional greenhouse management demands physical strain — watering, fertilizing, ventilation — plus constant monitoring of multiple environmental parameters, and the cognitive load of interpreting optimal ranges.

As the average age of farmers rises globally, that combination becomes a growing barrier. This project asks whether a simulation-first, voice-friendly control layer can meaningfully reduce it before any hardware is built.

Approach

Simulate the whole system first.

Everything — sensors, actuators, and the RX200 robotic arm — is virtual. No physical hardware, no ROS installation. The goal is a cost-effective proof-of-concept for the interaction model and the control logic before committing to a physical build.

A browser-native voice interface layered on a plain HTML/CSS/JS dashboard keeps the operator surface familiar and install-free.

Architecture

Four layers, one source of truth.

Layer 1
Client-side web UI
Frontend
Voice command interface + HTML/CSS/JS dashboard
↕ HTTP requests (Fetch API) · UI updates
Layer 2
Flask · app.py
Backend
RESTful API endpoints
↕ Orchestrates · returns status
Layer 3
GreenhouseController (singleton)
Core logic
Manages state, zone-effect ledger, arm task orchestration
↕ Manages state & logic · provides data
Layer 4
Sensors · Actuators · ROS arm
Simulated environment
RX200 robotic arm across zones A–D

The Flask backend is a thin RESTful facade over a single GreenhouseController singleton. All state, zone-effect tracking, and dispatch to the simulated arm live there — no decision logic on the actuators, no state on the frontend. Actuators change state only on an explicit request (a UI click or a parsed voice command) — there's no autonomous sensor-threshold control loop yet.

Key subsystems

How each piece behaves.

Sensor simulation

Each sensor exposes a read_*() method that nudges a running value by a small random increment and hard-clamps it to the active day/night range — a bounded random walk, not a static number. Only irrigation is actually wired back into a sensor: while it's on, soil moisture is forced into its 40–60% optimal band.

Actuator simulation

Actuators are dumb on/off state machines with no logic of their own. Every transition is driven by an explicit toggle_actuator() call from the API layer — a UI click or a parsed voice command — not an autonomous threshold-based control loop.

GreenhouseController (singleton)

Four responsibilities: state management (day/night mode, zone-effect ledger), composition/facade over every sensor, actuator, and the robot, task orchestration for the robotic arm, and zone-effect decay. Actuators respond only to explicit commands — no autonomous threshold-based climate control (yet).

ROS-simulated RX200 arm

Performs zone-specific watering, manuring, and fertilizing across 4 greenhouse zones (A–D). Positioned and stateful within the simulation; dispatched by GreenhouseController.

Voice command system

Browser-native Web Speech API — Speech-to-Text parses spoken commands (e.g. “water zone C”) into the correct API request; Text-to-Speech reads back confirmation. Fully client-side, no backend speech processing.

Frontend dashboard

Plain HTML/CSS/JS UI that polls the backend, renders live sensor and actuator state, and provides a voice-command entry point alongside standard controls.

RESTful API

Endpoints exposed by the Flask backend.

GET
/api/data
Current sensor, actuator, robot state
POST
/api/toggle_actuator
Toggle actuator on/off
POST
/api/toggle_day_night
Switch day/night mode (shifts setpoints)
POST
/api/move_robot
Move RX200 to a specified zone
POST
/api/water_zone
Water a specified zone
POST
/api/manure_zone
Apply manure to a specified zone
POST
/api/fertilize_zone
Fertilize a specified zone
Scope

A software simulation, framed honestly.

This is a pure software simulation — sensors, actuators, and the robotic arm are virtual. The target crop is configured for tomato cultivation.

Voice functionality depends on browser support for the Web Speech API and is best-effort where the API is unavailable.

What's next
  • Closed-loop climate control — auto-toggling actuators from sensor thresholds. Today every actuator change is driven by an explicit command, UI click or voice, not a control loop.
  • Physical hardware prototyping — sensors, actuators, and a real arm behind the same controller API.
  • Predictive ML-based control on top of the closed loop above — anticipating setpoint drift rather than reacting to it.
  • Computer-vision plant monitoring via the robotic arm.
  • Multi-crop profile support beyond the current tomato preset.
Tech stack
Python 3FlaskHTML5 / CSS3Vanilla JavaScriptWeb Speech API (STT + TTS)ROS simulation concepts
Related project
Next project
Autonomous Warehouse Robot