Giantronic Docs
Everything you need to set up, configure, and manage your ESP32 IoT fleet with Giantronic.
Overview
Giantronic is a full-stack IoT platform for managing ESP32 devices at scale. It provides real-time monitoring, remote configuration, automation, and OTA firmware updates through a unified, responsive web dashboard that works on desktop, tablet, and phone browsers.
ESP32 Devices
Pair, monitor, and control ESP32 microcontrollers from anywhere.
Real-time Dashboard
Live device status, pin states, and energy consumption metrics.
REST API
Full RESTful API for integrations, automation, and custom workflows.
Mobile Friendly
Responsive web dashboard you can use from any phone, tablet, or laptop browser.
Features
Giantronic includes everything you need for professional IoT fleet management.
Device Pairing
Pairing verified by the 6-digit code shown on the device, with QR scan or manual entry.
Pin Configuration
Configure GPIO pins as digital/analog I/O with custom names and modes.
Schedules
Time-based automation with per-minute triggers and weekly repeats.
Scenes
One-tap multi-device actions with custom voice keywords.
Fleet Management
Group devices into fleets with health monitoring and alerts.
Energy Monitoring
Track power consumption, energy usage, and estimated cost per device in real time.
OTA Updates
Over-the-air firmware updates from GitHub releases or custom binaries.
Notifications
Email and push notifications for device events, alerts, and schedules.
Security
JWT auth, Firebase integration, two-factor authentication, and role-based access.
Quick Start
Get up and running with Giantronic in minutes.
-
Create Your Account
Sign up at the Giantronic dashboard. Verify your email address to activate your account.
-
Flash Your ESP32
Flash the Giantronic firmware to your ESP32 using the OTA updater or USB. The firmware is available in the Firmware section of the dashboard.
-
Pair Your Device
Power on your ESP32 and connect it to the same WiFi network. Go to Devices → Pair WiFi Device — the dashboard finds the device on your network. Enter the 6-digit pairing code shown on the device screen (the dashboard can read it from the device automatically) to complete pairing.
-
Configure Pins
Assign functions to GPIO pins: digital input/output, analog input, relay control, or LED indicators.
-
Automate with Schedules
Create time-based schedules to turn devices on/off at specific times with optional weekly repeats.
Giantronic is fully responsive, so you can manage your devices from your phone or tablet browser — no app install required. A native Android app is in development; it has not been released yet, and there is no official Play Store listing.
Device Pairing
Pair your ESP32 devices to start managing them through the dashboard.
How Pairing Works
Giantronic uses a deterministic device key based on the ESP32's MAC address. The key format is MAC_{sanitized_mac} where the MAC address colons are replaced with underscores.
// MAC Address: AA:BB:CC:DD:EE:FF "MAC_AA_BB_CC_DD_EE_FF"
Pairing Flow
-
ESP32 connects to WiFi
The device boots, connects to WiFi, and registers itself in Firebase with its MAC address and IP.
-
User pairs the device
From Devices → Pair WiFi Device (or Add Device), pick the discovered device or enter its details. Pairing requires the 6-digit pairing code shown on the device — the dashboard reads it from the device automatically, or you can type it in. Only after the code is verified does the backend create a Django Device record linked to your account.
-
Two-way sync begins
Pin configurations, schedules, and scenes sync between Django, Firebase, and the ESP32 via HTTP polling.
Owner filtering: Normal users can only see their own paired devices. Admin users can see all devices in the system.
Pairing code required: every pair is checked against the 6-digit code shown on the device — open http://<device-ip>/airloader in your browser or check the serial monitor to find it. The code proves you are physically at the device, so pairing is rejected without it.
Pin Configuration
Configure ESP32 GPIO pins with custom functions, names, and modes.
Pin Fields
| Field | Type | Description |
|---|---|---|
pin_name | string | Human-readable name (e.g., "Living Room Light") |
gpio_pin | string | GPIO number (e.g., "2", "4", "15") |
function | string | digital_input, digital_output, analog_input, pwm_output, relay |
mode | string | input or output |
state | boolean | Current on/off state (output pins) |
description | string | Optional description |
analog_value | integer | Current analog reading (0-4095 for ESP32 ADC) |
timestamp | ISO 8601 | Last state change timestamp |
Cross-platform sync: Pin configurations are synchronized between the web dashboard and the ESP32 via Firebase. All platforms use identical field names.
Schedules
Automate your devices with time-based schedules that trigger at specific times.
Schedule Fields
| Field | Type | Description |
|---|---|---|
deviceKey | string | MAC-based device key |
triggerTime | string | Time in "HH:mm" format (24-hour) |
turnOn | boolean | true to turn on, false to turn off |
logicalPin | string | Target pin name (e.g., "pin_02") |
repeat | string | Comma-separated days: "Mon,Tue,Wed,Thu,Fri" or empty for one-time |
targets | array | List of target objects with device/pin info |
Double-execution prevention: Schedules include a _lastExecutionId field that prevents re-execution within the same minute window.
Scenes
Create one-tap actions that control multiple devices simultaneously.
Scene Structure
Each scene contains an action list with device targets and desired pin states. Scenes can be triggered from the web dashboard or via voice keywords.
{
"name": "Movie Night",
"actions": [
{
"deviceKey": "MAC_AA_BB_CC_DD_EE_FF",
"pin": "pin_02",
"state": true
},
{
"deviceKey": "MAC_11_22_33_44_55_66",
"pin": "pin_04",
"state": false
}
]
}
Voice Keywords
Scenes can be assigned custom voice keywords for voice assistant integration. Keywords are stored in the format:
{
"keyword": "movie night",
"turnOn": true,
"deviceType": "scene",
"language": "en",
"targets": [...]
}
Fleet Management
Group devices into fleets for organized management and monitoring.
Fleets
Logical groups of devices (e.g., "Office Building", "Home Sensors").
Fleet Health
Aggregated health metrics: online and offline counts, average signal and battery, and a health score.
Fleet Alerts
Automatic alerts when a device stops sending its heartbeat and goes offline, or reports a low battery.
Fleet Commands
Broadcast commands to all devices in a fleet simultaneously.
Energy Monitoring
Track power consumption, energy usage, and estimated cost across your devices.
Energy readings are reported by the device firmware (sensor hardware varies by build) and displayed on the Energy Analytics dashboard:
Usage & Cost
Total energy (kWh), average power (W), and estimated electricity cost per device.
Trends Over Time
Hourly energy and power charts plus a per-device usage comparison.
Reports On Demand
Export energy usage reports as CSV, Excel, or PDF from the Reports section whenever you need them.
Notifications
Stay informed with email and push notifications for device events.
Email Notifications
Welcome emails, verification, password resets, and device alerts.
Push Notifications
FCM push notifications to registered devices.
Preferences
Per-user notification preferences for different event types.
OTA Updates
Update ESP32 firmware over-the-air without physical access.
Update Sources
-
GitHub Releases
Link your firmware repository. Giantronic fetches releases and makes them available for OTA flashing.
-
Custom Binary Upload
Upload .bin firmware files directly through the dashboard.
-
Bulk OTA
Push firmware updates to an entire fleet simultaneously with rollback support.
API Reference
Giantronic provides a full REST API for programmatic access. All endpoints require JWT authentication.
Authentication
POST /api/token/ // Body { "username": "your_username", "password": "your_password" } // Response { "access": "eyJhbGci...", "refresh": "eyJhbGci..." }
GET /api/devices/ Authorization: Bearer eyJhbGci...
Core Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/users/me/ |
Get current user profile |
| GET | /api/devices/ |
List all paired devices |
| POST | /api/devices/ |
Pair a new device |
| GET | /api/devices/{id}/ |
Get device details |
| PATCH | /api/devices/{id}/ |
Update device configuration |
| DEL | /api/devices/{id}/ |
Remove/unpair device |
| GET | /api/fleets/ |
List all fleets |
| GET | /api/notifications/ |
List notifications |
| POST | /api/flash-jobs/ |
Create OTA flash job |
| GET | /api/fleet-alerts/ |
List fleet alerts |
API Documentation
Swagger UI
Interactive API explorer with request/response examples.
OpenAPI Schema
Download the schema in OpenAPI 3.0 format.
ReDoc
Beautiful API documentation generated from the schema.
Mobile Access
Giantronic works in any modern browser, so you can manage your devices from a phone or tablet — no app install required.
Responsive Web App
The dashboard adapts to phone and tablet screens: pair devices, toggle pins, run scenes, and check energy from any browser.
Push Notifications
Register a device for FCM push notifications and receive event alerts on the go.
REST API
Build your own mobile or embedded client against the same JWT-authenticated API.
Native Android app: still in development. It has not been released, and there is no official Play Store listing yet — watch this page for announcements.
Client Authentication (Firebase)
Clients that sign in with Firebase Authentication exchange the Firebase ID token for a Django JWT via the /firebase/exchange-token/ endpoint.
POST /firebase/exchange-token/ Content-Type: application/json { "id_token": "firebase_id_token_from_client_sdk" } // Response { "access": "jwt_access_token", "refresh": "jwt_refresh_token", "user": { /* user profile */ } }
Troubleshooting
Common issues and their solutions.
Device not appearing after pairing
Ensure the ESP32 has successfully connected to WiFi and registered in Firebase. The device must be online before pairing can complete. Check the Firebase console under esp32_devices/ to verify the device is registered.
Pin state not syncing
Pin configurations sync via Firebase. If changes aren't reflecting, check that the ESP32 is polling the Firebase path esp32_devices/{device_key}/pins/ at the expected interval (typically every 2-5 seconds).
Schedule not executing
Verify the schedule format uses the correct field names (deviceKey, triggerTime, turnOn). Check that the device is online at the scheduled time. One-time schedules clear after execution.
Email not verified
Check your inbox (and spam folder) for the verification email from Giantronic. If it hasn't arrived, you can request a resend while signed in by calling POST /api/auth/resend-verification/.
OTA update fails
Ensure the ESP32 has a stable WiFi connection. Large firmware files may take several minutes. Check the flash history in the dashboard for detailed error messages.
FAQ
What ESP32 boards are supported?
Giantronic supports all ESP32 variants (ESP32, ESP32-S2, ESP32-S3, ESP32-C3) running the Giantronic firmware.
Is there a limit to the number of devices?
Yes. The Free plan pairs up to 3 devices and the Starter plan up to 10. Enterprise accounts have unlimited device support — see the pricing page for plan details.
Is there a mobile app?
The web dashboard works on desktop, tablet, and phone browsers, so no app is required. A native Android app is in development and will be announced here when it ships.
How does cross-platform sync work?
All device data flows through Firebase as the real-time sync layer. Django serves as the persistent database and API layer. The web dashboard writes to Firebase with identical field names, and the ESP32 reads directly from Firebase.
Is the API rate-limited?
Yes. API requests are rate-limited to 10,000 requests per hour per user (10,000 per hour for anonymous clients). ESP32 devices poll Firebase directly rather than this API, so device traffic is not affected by this limit.