๐Ÿ“ฆ itsfuad / Microserver

ESP32 Cronjob Micro-Server

โ˜… 0 stars โ‘‚ 0 forks ๐Ÿ‘ 0 watching
๐Ÿ“ฅ Clone https://github.com/itsfuad/Microserver.git
HTTPS git clone https://github.com/itsfuad/Microserver.git
SSH git clone git@github.com:itsfuad/Microserver.git
CLI gh repo clone itsfuad/Microserver
Fuad Hasan Fuad Hasan Refactor ESP32 Cronjob Micro-Server structure: consolidate files and implement core functionalities for job management, fan control, power monitoring, and HTTP client. 482ec48 4 months ago ๐Ÿ“ History
๐Ÿ“‚ main View all commits โ†’
๐Ÿ“ data
๐Ÿ“ src
๐Ÿ“ web-ui
๐Ÿ“„ platformio.ini
๐Ÿ“„ readme.md
๐Ÿ“„ README.md

ESP32 Cronjob Micro-Server

๐ŸŽฏ Objectives

  • A self-contained cronjob server on ESP32.
  • Web UI for job management.
  • Store jobs + logs on SD card.
  • Execute scheduled HTTP requests.
  • Include cooling fan control + temperature monitoring.
  • Provide built-in UPS system (direct mains with automatic battery backup).

๐Ÿ—๏ธ System Architecture

Hardware Blocks

  • ESP32: main controller (Wi-Fi, task scheduling, HTTP client/server).
  • SD Card: persistent storage (jobs.json, logs).
  • Micro SD Card Module: Card Reader Module Adapter SPI (6 pins).
  • Fan + Temp Sensor: cooling system (GPIO + MOSFET + BME280 sensor).
  • Power System (UPS-style):
  • 5V Adapter โ†’ TP4056 (charging) โ†’ Li-ion battery โ†’ Step-down (3.3V for ESP32).
  • ESP32 always runs from adapter (mains).
  • When mains disconnects โ†’ auto-switch to Li-ion battery.
  • ESP32 monitors battery voltage via ADC.

Software Blocks

  • Web Server: UI + REST API endpoints.
  • Scheduler: Cron parser + FreeRTOS tasks.
  • Job Executor: HTTP client with retry logic.
  • Storage Manager: JSON read/write to SD.
  • Fan Control: based on temperature threshold.
  • Power Monitor: mains/battery status, low battery alerts.

โš™๏ธ Workflow

1. Boot-up

  • Initialize SD, Wi-Fi, RTC/NTP sync.
  • Load jobs.json into memory.
  • Start Web UI + API server.
  • Launch background tasks (scheduler, monitoring).

2. Adding a Job (via Web UI)

  • User submits form (URL, method, cron expression, retries, headers, etc.).
  • ESP32 stores job in memory + updates jobs.json.

3. Scheduler Operation

  • Cron parser checks system time vs. job rules.
  • When a match occurs โ†’ dispatch task to executor.

4. Job Execution

  • Perform HTTP request (GET/POST).
  • Retry on failure (configurable).
  • Log results (errors.log on SD).

5. Cooling System

  • Read temperature (BME280).
  • Adjust fan speed via PWM based on temperature.

6. Power Monitoring (UPS)

  • ESP32 normally powered from mains (5V adapter).
  • On mains loss โ†’ seamless switch to Li-ion battery.
  • Monitor battery voltage via ADC.
  • On low battery โ†’ log + optional alert (HTTP callback).

๐Ÿš€ Implementation Plan

Phase 1: Core Setup

  • Setup ESP32 development (Arduino/ESP-IDF).
  • Integrate SD card (read/write JSON).
  • Implement Wi-Fi + NTP sync.
  • Basic web server (serve HTML/JS + simple API).

Phase 2: Job Management

  • Define job format (JSON schema).
  • Build Web UI for job creation/editing.
  • Implement scheduler (cron parser).
  • Job execution via HTTP client.
  • Logging system (to SD).

Phase 3: Monitoring & Cooling

  • Integrate BME280 temperature sensor.
  • Fan control logic (PWM + MOSFET).
  • Temperature logs.

Phase 4: Power System (UPS)

  • Setup TP4056 charging + battery pack.
  • Configure seamless mains-to-battery switching.
  • ADC-based voltage monitoring.
  • Alerts/logging on low battery.

Phase 5: Polish

  • UI improvements (job list, logs viewer).
  • OTA firmware update support.
  • Optional: WebSocket live logs.
  • Security (auth for UI/API, HTTPS if possible).

๐Ÿ“‚ File Structure (Proposed)

src/
โ”œโ”€โ”€ sketch.ino (main file)
โ”œโ”€โ”€ scheduler.h
โ”œโ”€โ”€ http_client.h
โ”œโ”€โ”€ storage.h
โ”œโ”€โ”€ fan_control.h
โ””โ”€โ”€ power_monitor.h