An open-source, production-ready intelligent greenhouse control system
Getting Started β’ Hardware Setup β’ Documentation β’ Contributing
GreenOS is a comprehensive greenhouse automation platform designed for precision environmental management. Built on the ESP32-WROOM-32E microcontroller and powered by Firebase and Google Cloud Platform, GreenOS delivers industrial-grade reliability with a focus on safe-fail operation, offline resilience, and real-time responsiveness.
The system integrates advanced sensor fusion, predictive analytics, and automated climate control to create optimal growing conditions while maintaining robust safety protocols.
** Looking for the Arduino UNO Q version?**
The original Arduino UNO Q codebase is preserved in thev1.0-uno-qrelease andarduino-uno-qbranch.
| Attribute | Details |
|---|---|
| Project | GreenOS |
| Domain | greenos.app |
| Platform | ESP32-WROOM-32E (Dual-core Xtensa LX6 @ 240MHz, WiFi + Bluetooth) |
| Framework | PlatformIO + Arduino Framework |
| Backend | Firebase (Firestore, Cloud Functions, Authentication) |
| Target Environment | 325 cu. ft. greenhouse in Denver, CO (5,280 ft elevation) |
| Philosophy | Safe-fail by design β’ Data-driven decisions β’ Offline-first operation |
- Dual-Core Processing β FreeRTOS task management across two Xtensa LX6 cores at 240MHz
- Multi-Sensor Fusion β Integrates NDIR CO2 (SCD-30), air quality (MQ135), and Modbus RS485 soil sensors (EC, pH, moisture, NPK)
- Hardware Watchdog Timer β Automatic recovery prevents firmware hangs with 30-second timeout
- Finite State Machine β Predictable system behavior through well-defined states
- Offline Data Buffering β SPIFFS storage maintains operational history during network outages
- OTA Updates β Over-the-air firmware updates for remote deployments
- Safety Interlocks β Prevents dangerous actuator combinations (e.g., simultaneous heating and exhaust ventilation)
- Duty Cycle Management β Protects equipment through minimum cycle times and maximum runtime limits
- Emergency Protocols β Automated responses to critical conditions with multi-tier alert system
- Gradual Adjustments β Warning-level responses provide smooth environmental transitions
- Real-time Synchronization β Firebase Firestore provides live data visibility
- Historical Analysis β BigQuery enables long-term trend analysis and ML model training
- Prioritized Alerting β Multi-level alert system (ULTRA β HIGH β MEDIUM β LOW)
- Comprehensive Logging β Audit trail of all system actions and environmental events
- Diagnostic Interface β Serial commands for real-time debugging and monitoring
- Web Dashboard β Real-time gauges, charts, and controls (React + Vite)
- Responsive Design β Professional UI adapts to desktop, tablet, and mobile
GreenOS is a hybrid edge-cloud system combining immediate local responsiveness with scalable cloud analytics.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β GREENHOUSE (Edge Device) β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β ESP32-WROOM-32E β β
β β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββββββββββββββ β β
β β β Core 0 β β Core 1 β β Peripherals β β β
β β β Network Task β β Sensor Task β β β’ I2C (SCD-30) β β β
β β β Firebase Syncβ β Actuator Taskβ β β’ RS485 (Soil Sensor) β β β
β β β OTA Updates β β Emergency β β β’ ADC (MQ135, Light) β β β
β β ββββββββββββββββ ββββββββββββββββ β β’ GPIO (Relays, PIR) β β β
β β β β’ SPI (SD Card) β β β
β βββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββ β
β β β
β βββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββ β
β βΌ βΌ βΌ β
β βββββββββββββββ βββββββββββββββ ββββββββββββββββββ β
β β Sensors β β Actuators β β Storage β β
β β SCD-30 CO2 β β Heaters (2) β β SPIFFS/SD Card β β
β β MQ135 Air β β Fans (2) β β Offline Buffer β β
β β RS485 Soil β β Pump β β Config/Cals β β
β β PIR Motion β β Grow Lights β ββββββββββββββββββ β
β βββββββββββββββ βββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
β WiFi (2.4GHz 802.11 b/g/n)
β HTTPS/TLS 1.2+
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β FIREBASE / GOOGLE CLOUD β
β βββββββββββββββββ βββββββββββββββββ βββββββββββββββββ βββββββββββββββ β
β β Firestore β β Cloud β β Firebase β β BigQuery β β
β β (Real-time) β β Functions β β Auth β β (Analytics) β β
β βββββββββββββββββ βββββββββββββββββ βββββββββββββββββ βββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β USER INTERFACES β
β βββββββββββββββββββββ βββββββββββββββββββββ β
β β Web Dashboard β β Mobile App β β
β β (React + Vite) β β (iOS/Android) β β
β βββββββββββββββββββββ βββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
GreenOS/
βββ Firmware/ # ESP32 Firmware (PlatformIO)
β βββ platformio.ini # Build configuration & dependencies
β βββ include/
β β βββ config.h # Hardware pins, thresholds, WiFi credentials
β β βββ config_template.h # Template for config (safe to commit)
β β βββ sensor_manager.h # Sensor reading and validation
β β βββ actuator_manager.h # Relay control with safety interlocks
β β βββ network_manager.h # WiFi and Firebase communication
β β βββ data_logger.h # SPIFFS/SD card data buffering
β βββ src/
β β βββ main.cpp # FreeRTOS tasks, FSM, system initialization
β β βββ sensor_manager.cpp # SCD-30, MQ135, Modbus implementations
β β βββ actuator_manager.cpp # Safety logic, emergency responses
β β βββ network_manager.cpp # WiFi Manager, Firebase sync
β β βββ data_logger.cpp # Offline buffering and CSV logging
β βββ libraries/ # External library overrides (if needed)
β
βββ CloudFunctions/ # Firebase Cloud Functions
β βββ package.json # Node.js dependencies
β βββ functions/
β βββ index.js # Function entry point
β βββ triggers.js # Firestore triggers for alerts
β βββ api.js # REST API endpoints
β βββ scheduled.js # Periodic tasks (BigQuery export)
β
βββ WebUI/ # Web Application (React + Vite)
β βββ package.json # Frontend dependencies
β βββ vite.config.js # Build configuration
β βββ src/
β βββ App.jsx # Application root
β βββ config.js # Firebase configuration
β βββ components/ # Reusable UI components
β β βββ Navbar.jsx
β β βββ Sidebar.jsx
β β βββ SensorGauge.jsx
β β βββ SensorChart.jsx
β β βββ AlertList.jsx
β βββ pages/ # Application pages
β βββ Dashboard.jsx
β βββ Analytics.jsx
β βββ Alerts.jsx
β βββ Settings.jsx
β βββ Login.jsx
β
βββ Docs/ # Documentation
β βββ QUICKSTART.md # 30-minute getting started guide
β βββ HARDWARE_SETUP.md # Wiring diagrams and hardware details
β βββ LIBRARIES.md # Library requirements
β βββ HOSTINGER_MIGRATION_ADDENDUM.md # Hostinger migration proposal
β βββ IMPLEMENTATION_SUMMARY.md # Technical design decisions
β
βββ assets/ # Project assets and media
βββ firebase.json # Firebase project configuration
βββ firestore.rules # Firestore security rules
βββ firestore.indexes.json # Firestore indexes
βββ storage.rules # Cloud Storage security rules
Implementation Status:
- Firmware: Production-ready ESP32 code with FreeRTOS
- Cloud Functions: Partial implementation, Firebase integration active
- Web UI: Structure in place, components being developed
- Documentation: Comprehensive guides complete
Before you begin, ensure you have the following:
| Requirement | Version | Notes |
|---|---|---|
| PlatformIO | Latest | VSCode extension or CLI |
| Python | 3.8+ | Required by PlatformIO |
| Git | Latest | For cloning the repository |
| USB Driver | CP210x or CH340 | Depends on your ESP32 dev board |
git clone https://github.com/secretengineer/GreenOS.git
cd GreenOSOption A: VSCode Extension (Recommended)
- Install Visual Studio Code
- Install the PlatformIO IDE extension
- Restart VSCode
Option B: CLI Installation
pip install platformio-
Copy the template configuration:
cd Firmware/include cp config_template.h config.h -
Edit
config.hwith your credentials:// WiFi Configuration #define WIFI_SSID "YOUR_WIFI_NETWORK" #define WIFI_PASSWORD "YOUR_WIFI_PASSWORD" // Firebase Configuration #define FIREBASE_HOST "your-project.firebaseapp.com" #define FIREBASE_API_KEY "your-api-key" #define FIREBASE_PROJECT_ID "your-project-id"
β οΈ Security Note: Never commitconfig.hwith real credentials. It's already in.gitignore.
Using PlatformIO in VSCode:
- Open the
Firmwarefolder in VSCode - Connect your ESP32 via USB
- Click the PlatformIO: Upload button (β icon in status bar)
Using PlatformIO CLI:
cd Firmware
pio run -t uploadVSCode: Click PlatformIO: Serial Monitor in the status bar
CLI:
pio device monitorYou should see:
ββββββββββββββββββββββββββββββββββββββββββββββ
β GreenOS - Intelligent Greenhouse β
β ESP32-WROOM-32E Firmware v2.0 β
ββββββββββββββββββββββββββββββββββββββββββββββ
[INFO] ESP32 Chip Model: ESP32-D0WDQ6-V3 Rev 3
[INFO] CPU Frequency: 240 MHz
[INFO] Flash Size: 4 MB
[INFO] Free Heap: 245768 bytes
[OK] SPIFFS mounted: 12288 bytes used / 1441792 bytes total
[INIT] Initializing subsystems...
[INIT] Creating FreeRTOS tasks...
| Component | Model | Quantity | Purpose |
|---|---|---|---|
| ESP32 Development Board | ESP32-WROOM-32E DevKitC | 1 | Main controller |
| CO2/Climate Sensor | Adafruit SCD-30 | 1 | CO2, temperature, humidity |
| USB-C Cable | Data-capable | 1 | Programming and power |
| Breadboard + Jumpers | Standard | 1 set | Prototyping connections |
| Component | Model | Quantity | Interface | Notes |
|---|---|---|---|---|
| Microcontroller | ESP32-WROOM-32E DevKitC | 1 | β | 4MB Flash, 520KB SRAM |
| CO2 Sensor | Adafruit SCD-30 | 1 | I2C (0x61) | NDIR, Β±30ppm accuracy |
| Air Quality | MQ135 Module | 1 | Analog (ADC1) | Requires 48hr preheat |
| Soil Sensor | S-Soil MT-02 (7-in-1) | 1 | Modbus RS485 | EC, pH, moisture, temp, NPK |
| RS485 Transceiver | MAX485 Module | 1 | UART2 | For Modbus communication |
| Relay Board | 6-Channel 5V Optoisolated | 1 | GPIO | 15A rating for AC loads |
| Motion Sensor | HC-SR501 PIR | 1 | Digital GPIO | Security monitoring |
| SD Card Module | SPI SD Card | 1 | SPI | Offline data buffering |
| Power Supply | 5V 3A USB-C | 1 | USB-C | Main power |
| Soil Sensor Power | 12V DC Adapter | 1 | Barrel jack | For RS485 soil sensor |
| UPS | APC or similar | 1 | GPIO monitoring | Power failure detection |
Environmental Monitoring:
| Sensor | Model | Interface | Measurements | Notes |
|---|---|---|---|---|
| CO2/Climate | Adafruit SCD-30 | I2C (0x61) | CO2 (ppm), Temperature (Β°C), Humidity (%) | NDIR sensor with altitude compensation, auto-calibration enabled |
| Air Quality | MQ135 | Analog ADC | Air quality (ppm) | Requires 48-hour preheat, voltage divider (5Vβ3.3V) mandatory |
| Soil Monitor | S-Soil MT-02 | Modbus RTU RS485 | EC (mS/cm), pH, Moisture (%), Temp (Β°C), N-P-K (mg/kg) | Industrial-grade probe, IP68 waterproof |
| Motion | HC-SR501 PIR | Digital GPIO | Motion detection | Security monitoring, off-hours alerts |
| Power | UPS Monitor | Digital GPIO | Power status | Triggers power-saving mode on mains failure |
Actuator Control (5V Optoisolated Relays, 15A Rating):
| Actuator | Power | Control Logic | Safety Features |
|---|---|---|---|
| Primary Heater | 1500W @ 120VAC | Relay control | Interlock with exhaust fan, duty cycle limiting |
| Secondary Heater | 1500W @ 120VAC | Backup heating | Auto-activation on primary failure or extreme cold |
| Exhaust Fan | Variable | Speed-controlled relay | Cannot run simultaneously with heaters |
| Circulation Fan | Variable | Always-on capable | Distributes heat/cool air evenly |
| Irrigation Pump | 120VAC | Timed relay | 10-minute maximum runtime protection |
| Grow Lights | LED Array | Scheduled relay | Automated day/night cycles |
ESP32-WROOM-32E Pin Assignments
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
I2C Bus (SCD-30 CO2 Sensor)
βββ GPIO 21 (SDA) ββββββββββββββββ SCD-30 SDA
βββ GPIO 22 (SCL) ββββββββββββββββ SCD-30 SCL
UART2 / Modbus RS485 (Soil Sensor)
βββ GPIO 16 (RX2) ββββββββββββββββ MAX485 RO (Receiver Output)
βββ GPIO 17 (TX2) ββββββββββββββββ MAX485 DI (Driver Input)
βββ GPIO 4 (DE/RE) ββββββββββββββ MAX485 DE + RE (Direction Control)
Analog Sensors (ADC1 Only - ADC2 conflicts with WiFi)
βββ GPIO 34 (ADC1_CH6) βββββββββββ MQ135 Analog Out (via voltage divider)
βββ GPIO 35 (ADC1_CH7) βββββββββββ Backup VWC Sensor
βββ GPIO 32 (ADC1_CH4) βββββββββββ Sound Level Sensor
βββ GPIO 33 (ADC1_CH5) βββββββββββ Light Level Sensor
Digital I/O
βββ GPIO 27 ββββββββββββββββββββββ PIR Motion Sensor (INPUT)
βββ GPIO 26 ββββββββββββββββββββββ UPS Status (INPUT)
βββ GPIO 25 ββββββββββββββββββββββ Buzzer Alarm (OUTPUT, DAC)
βββ GPIO 2 ββββββββββββββββββββββ Status LED (OUTPUT, built-in)
SPI Bus (SD Card)
βββ GPIO 5 (CS) ββββββββββββββββ SD Card CS
βββ GPIO 23 (MOSI) βββββββββββββββ SD Card MOSI
βββ GPIO 19 (MISO) βββββββββββββββ SD Card MISO
βββ GPIO 18 (SCK) βββββββββββββββ SD Card SCK
Actuator Relay Outputs (Active LOW)
βββ GPIO 13 ββββββββββββββββββββββ Primary Heater Relay
βββ GPIO 14 ββββββββββββββββββββββ Secondary Heater Relay
βββ GPIO 12 ββββββββββββββββββββββ Exhaust Fan Relay
βββ GPIO 15 ββββββββββββββββββββββ Circulation Fan Relay
βββ GPIO 27* βββββββββββββββββββββ Irrigation Pump Relay (alt pin)
βββ GPIO 26* βββββββββββββββββββββ Grow Lights Relay (alt pin)
* Alternative pins to avoid strapping pin conflicts
IMPORTANT NOTES:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β’ ESP32 GPIO pins are 3.3V logic - DO NOT connect 5V signals directly!
β’ ADC2 pins (GPIO 0, 2, 4, 12-15, 25-27) cannot be used when WiFi is active
β’ Use ADC1 pins only (GPIO 32-39) for analog sensors with WiFi enabled
β’ Strapping pins (GPIO 0, 2, 5, 12, 15) have boot-time functions - use carefully
β’ MQ135 requires voltage divider (10kΞ©/20kΞ©) to scale 5V output to 3.3V
MQ135 AOUT (5V) βββββ¬ββββ R1 (10kΞ©) ββββ GND
β
βββββ R2 (20kΞ©) ββββ ESP32 GPIO34 (3.3V max)
Output Voltage = 5V Γ (20kΞ© / 30kΞ©) = 3.33V (safe for ESP32)
All thresholds can be customized and are automatically synced from Firebase when connected:
// Temperature Thresholds (Β°C)
TEMP_MIN 10.0 // Critical low - triggers emergency heating
TEMP_MAX 35.0 // Critical high - triggers full cooling
TEMP_OPTIMAL_MIN 18.0 // Optimal range minimum
TEMP_OPTIMAL_MAX 24.0 // Optimal range maximum
TEMP_FROST_ALERT 4.0 // Frost warning threshold
// Humidity Thresholds (%)
HUMIDITY_MIN 40.0 // Minimum acceptable
HUMIDITY_MAX 80.0 // Maximum acceptable
HUMIDITY_OPTIMAL_MIN 50.0 // Optimal minimum
HUMIDITY_OPTIMAL_MAX 70.0 // Optimal maximum
// CO2 Thresholds (ppm)
CO2_MIN 400.0 // Outdoor ambient
CO2_MAX 1500.0 // Maximum for plant growth
CO2_OPTIMAL_MIN 800.0 // Optimal minimum
CO2_OPTIMAL_MAX 1200.0 // Optimal maximum
CO2_DANGER 5000.0 // Dangerous for humans
// Soil Thresholds
VWC_OPTIMAL_MIN 30.0 // Volumetric Water Content (%)
VWC_OPTIMAL_MAX 50.0
PH_OPTIMAL_MIN 6.0 // pH range
PH_OPTIMAL_MAX 7.0
EC_OPTIMAL_MIN 1.0 // Electrical Conductivity (mS/cm)
EC_OPTIMAL_MAX 2.0SENSOR_READ_INTERVAL 5000 // 5 seconds - sensor polling
FIREBASE_SYNC_INTERVAL 60000 // 1 minute - cloud sync
ANOMALY_CHECK_INTERVAL 10000 // 10 seconds - safety checks
MODBUS_READ_INTERVAL 15000 // 15 seconds - soil sensor
MEMORY_CHECK_INTERVAL 60000 // 1 minute - heap monitoring
NTP_SYNC_INTERVAL 3600000 // 1 hour - time syncGreenOS uses a robust state machine to ensure predictable behavior:
βββββββββββββββββββ
β STATE_BOOT β
β (Initialize) β
ββββββββββ¬βββββββββ
β
ββββββββββΌβββββββββ
β STATE_WIFI_CONNECTβ
β (Network Setup)β
ββββββββββ¬βββββββββ
β
ββββββββββΌβββββββββ
β STATE_SENSOR_INITβ
β (Sensor Setup) β
ββββββββββ¬βββββββββ
β
ββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββ
β β β
βΌ βΌ βΌ
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β STATE_SAFE_MODE βββββββββββ STATE_NORMAL_OP ββββββββββΊβ STATE_EMERGENCY β
β (Minimal Ops) β β (Full Operation)β β (Auto Response) β
βββββββββββββββββββ ββββββββββ¬βββββββββ βββββββββββββββββββ
β
ββββββββββΌβββββββββ
β STATE_DEEP_SLEEPβ
β (Power Save) β
βββββββββββββββββββ
The firmware enforces these physical safety rules:
| Rule | Purpose |
|---|---|
| Heaters + Exhaust Fan cannot run simultaneously | Prevents heat loss and wasted energy |
| 60-second minimum between relay toggles | Prevents relay contact wear |
| 10-minute maximum pump runtime | Prevents flooding |
| Duty cycle tracking on heaters | Fire safety |
| Heaters disabled during high temp emergency | Prevents overheating |
| Grow lights disabled during high temp emergency | Reduces heat load |
| Priority | Condition | Automatic Response |
|---|---|---|
| π΄ ULTRA | Temp < 10Β°C (frost danger) | Activate both heaters, disable cooling, send alert |
| π΄ ULTRA | Temp > 35Β°C (heat stress) | Full ventilation, disable heaters, disable grow lights |
| π HIGH | Security breach (motion) | Activate lights, sound alarm, send photo alert |
| π HIGH | CO2 > 5000 ppm | Full ventilation, send danger alert |
| π‘ MEDIUM | Humidity out of range | Adjust ventilation gradually |
| π‘ MEDIUM | Soil moisture low | Queue irrigation cycle |
#define WDT_TIMEOUT_SECONDS 30 // Hardware watchdog timeout
#define TASK_WDT_TIMEOUT_S 10 // FreeRTOS task watchdogIf any task becomes unresponsive, the ESP32 will automatically restart.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DATA FLOW β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Sensors βββΊ ESP32 RAM βββΊ SPIFFS Buffer βββΊ Firebase Firestore β
β (5 sec) (if offline) (1 min sync) β
β β β
β βΌ β
β BigQuery Export β
β (Historical) β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β STORAGE LAYER β RETENTION β PURPOSE β
β ββββββββββββββββββββββββββΌβββββββββββββββΌβββββββββββββββββββββββββββββ β
β ESP32 RAM β Real-time β Current sensor values β
β SPIFFS/SD Card β Until sync β Offline buffering (500 max) β
β Cloud Firestore β 24-48 hours β Real-time dashboard β
β BigQuery β Indefinite β Historical analysis, ML β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
GreenOS maintains full autonomous operation without internet:
- β All sensors continue reading normally
- β Actuator control and safety interlocks remain active
- β Emergency protocols execute locally
- β Data buffered to SPIFFS (up to 500 readings)
- β Automatic sync when connectivity restores
The project includes multiple build configurations in platformio.ini:
# Standard development build
pio run -e esp32dev -t upload
# Debug build with verbose logging
pio run -e esp32dev_debug -t upload
# OTA update (requires device on network)
pio run -e esp32dev_ota -t upload| Environment | Debug Level | Features |
|---|---|---|
esp32dev |
Normal (3) | Production-ready |
esp32dev_debug |
Verbose (5) | Extra logging, debug symbols |
esp32dev_ota |
Normal (3) | Over-the-air upload enabled |
All libraries are automatically managed by PlatformIO:
lib_deps =
mobizt/Firebase Arduino Client Library for ESP8266 and ESP32@^4.4.14
sparkfun/SparkFun SCD30 Arduino Library@^1.0.20
adafruit/Adafruit Unified Sensor@^1.1.14
4-20ma/ModbusMaster@^2.0.1
bblanchon/ArduinoJson@^7.0.4
arduino-libraries/NTPClient@^3.2.1
tzapu/WiFiManager@^2.0.17Detailed documentation is available in the Docs/ folder:
| Document | Description |
|---|---|
| QUICKSTART.md | 30-minute getting started guide |
| HARDWARE_SETUP.md | Complete wiring diagrams and setup |
| LIBRARIES.md | Library requirements and installation |
| HOSTINGER_MIGRATION_ADDENDUM.md | Proposal for moving GreenOS from Firebase Hosting to Hostinger |
| IMPLEMENTATION_SUMMARY.md | Technical design decisions |
- ESP32 platform migration from Arduino UNO Q
- FreeRTOS dual-core task management
- Sensor integration (SCD-30, MQ135, Modbus RS485)
- Hardware watchdog timer
- Finite state machine architecture
- SPIFFS offline data buffering
- Safety interlocks and emergency protocols
- Comprehensive documentation
- Firebase Firestore real-time sync
- Firebase Authentication
- Cloud Functions for alerts and processing
- BigQuery data pipeline
- Historical data analysis tools
- Web dashboard (React + Vite)
- Real-time gauges and charts
- Mobile app (iOS/Android)
- Push notification system
- Predictive analytics and forecasting
- Camera integration and plant health monitoring
- Multi-greenhouse management
- Weather API integration
- Machine learning anomaly detection
GreenOS is open-source and welcomes contributions! Areas where help is needed:
| Area | Skills Needed | Priority |
|---|---|---|
| Firmware | C++, ESP32, FreeRTOS | High |
| Cloud Functions | Node.js, Firebase, GCP | High |
| Web UI | React, Vite, Chart.js | Medium |
| Documentation | Technical writing | Medium |
| Testing | Hardware testing, edge cases | Medium |
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Built with:
- Espressif ESP32 β Microcontroller platform
- PlatformIO β Build system and IDE
- Firebase β Real-time backend
- Google Cloud Platform β Analytics and ML
- Adafruit β SCD-30 sensor and libraries
- SparkFun β SCD-30 Arduino library
Special thanks to the open-source community for libraries, tools, and inspiration.
Pat Ryan
π§ [email protected]
π https://greenos.app
π GitHub
GreenOS β Safe-fail by design β’ Offline-first operation β’ Production-ready reliability
Last Updated: December 31, 2025 | Firmware v2.0.0-dev | Platform: ESP32-WROOM-32E