A smart monitoring device for Ukrainian air alerts and power outage schedules, featuring a 1.47" color display and RGB LED notifications.
AlertLight is an ESP32-S3 based monitoring device that:
- Displays real-time air alert status for Ukrainian regions (AJAX system)
- Shows planned power outage schedules (Yasno API)
- Provides RGB LED notifications for status changes
- Offers comprehensive web-based configuration
- Runs continuously with automatic updates
- Three-screen system:
- Init screen with boot animation
- Boot log screen with system startup messages
- Main status screen with live data
- Status sections:
- Device network information (IP, WiFi status)
- Air alert status for selected region
- Power outage schedule with time slots
- Ambient status indication:
- π’ Green: No alert, no outage
- π΄ Red: Air alert active
- π΅ Blue: Power outage in progress
- βͺ Grey: No connection/unknown status
- Event notifications (30-second blinks):
- π΄ Red blink: Air alert started
- π’ Green blink: Air alert dismissed
- π΅ Blue blink: Power outage started
- π‘ Yellow blink: Power restored
- Priority system: Alert > Outage > Normal
- Fully customizable colors and timing via web interface
Access via device IP address (default port 8080):
- π‘ WiFi Settings: SSID, password, static IP configuration
- π¨ Alert Settings: Region selection, check interval, API configuration
- β‘ Power Outage Settings: Queue selection, DSO configuration
- π RGB Settings: Colors, brightness, blink patterns, test controls
- πΊ Display Settings: Brightness adjustment
- β° NTP Time: Manual time synchronization
- π Status Page: Live monitoring data, last check times, HTTP responses
- π System: Factory reset, device restart
- MCU: ESP32-S3 (QFN56, 8MB PSRAM)
- Display: 1.47" ST7789 (172Γ320 SPI)
- RGB LED: WS2812B (NeoPixel compatible)
- WiFi: 2.4GHz 802.11 b/g/n
- Storage: 16MB Flash (3MB APP / 9.9MB FATFS partition)
- Power: USB-C or 5V external
AlertLight/
βββ AlertLight.ino # Main sketch
βββ src/
β βββ AlertLight_UI/ # LVGL UI screens and rendering
β βββ AlertManager/ # Air alert API integration
β βββ LightManager/ # Power outage API integration
β βββ RGBManager/ # RGB LED control and notifications
β βββ WebConfig/ # Web server and configuration
β βββ Config/ # NVS configuration storage
β βββ RegionMapper/ # Ukrainian region ID mapping
β βββ LVGL_Driver/ # Display driver integration
β βββ RGB_Lamp/ # WS2812B LED driver
βββ UI_Mockup/ # EEZ Studio UI design files
- AlertManager: Monitors AJAX air alert API, detects state changes
- LightManager: Parses Yasno power outage schedules, tracks current status
- RGBManager: Controls LED colors, handles event notifications with priority
- WebConfigManager: Serves configuration interface, handles API endpoints
- ConfigManager: Manages persistent settings in NVS flash
No software installation needed! Flash firmware directly from your browser.
- Chrome, Edge, or Opera browser (Web Serial API support)
- ESP32-S3 device connected via USB-C
- Internet connection
Option 1: Online Web Installer (Easiest)
- Visit: https://coolerUA.github.io/AlertLight/install.html
- Connect your ESP32-S3 device via USB
- Click "Install AlertLight" button
- Select the correct serial port when prompted
- Wait for installation to complete (~2 minutes)
- Done! Device will restart automatically
Option 2: Local Web Installer
- Download the latest release from GitHub Releases
- Extract the files
- Open
install.htmlin Chrome/Edge browser - Follow the on-screen instructions
- Device creates WiFi AP:
AlertLight-Setup-[MAC] - Connect to AP and go to
http://192.168.4.1:8080 - Configure your WiFi and preferences
- Enjoy! π
For developers or those who want to customize the firmware.
- Arduino IDE or PlatformIO
- ESP32 Board Package (v3.0+)
- Required Libraries:
- LVGL 8.x
- ArduinoJson
- WiFi (built-in)
- HTTPClient (built-in)
- Preferences (built-in)
- Adafruit_NeoPixel
-
Clone this repository:
git clone https://github.com/coolerUA/AlertLight cd AlertLight -
Install required libraries via Arduino Library Manager
-
Configure board settings:
- Board: ESP32-S3 Dev Module
- Flash Size: 16MB
- Partition Scheme: 16M Flash (3MB APP/9.9MB FATFS)
- PSRAM: Enabled (OPI PSRAM)
- USB CDC On Boot: Enabled
- Upload Speed: 921600
-
Compile and upload
- Power on the device
- Device will create WiFi AP:
AlertLight-Setup-[MAC] - Connect to AP and navigate to
http://192.168.4.1:8080 - Configure WiFi credentials
- Device will restart and connect to your network
- Access web interface at device IP address
- SSID: Your WiFi network name
- Password: WiFi password
- Static IP: Optional manual IP configuration
- Port: Web interface port (default: 8080)
- Region: Select your Ukrainian region (Kyiv, Lviv, Odesa, etc.)
- API URL: Air alert API endpoint (pre-configured)
- Check Interval: How often to check for alerts (default: 30 seconds)
- Queue: Your power outage queue (e.g., "6.2")
- API URL: Yasno API endpoint (pre-configured)
- Check Interval: Schedule update frequency (default: 15 minutes)
- Ambient Brightness: LED brightness during normal operation (0-100%)
- Status Colors: RGB values for each state (no alert, alert, outage, no status)
- Blink Colors: RGB values for event notifications
- Blink Timing: ON duration, OFF duration, total duration
- Test Controls: Real-time testing of all RGB modes
- Endpoint:
https://air-save.ops.ajax.systems/api/mobile/status/regions/v2 - Method: GET with region parameter
- Update: Every 30 seconds (configurable)
- Regions: Supports all 27 Ukrainian administrative regions
- Endpoint:
https://app.yasno.ua/api/blackout-service/public/shutdowns - Method: GET with region/DSO/queue parameters
- Update: Every 15 minutes (configurable)
- Features: Displays today's outage schedule with time slots
- Current IP address and port
- WiFi connection status icon
- Blinks when in AP mode
- Selected region name
- Current alert status
- Last API check time
- HTTP response code
- Queue identifier
- Today's outage time slots (up to 3 shown)
- Active slot highlighting
- Last update timestamp
The system automatically detects and notifies on:
- Alert Started: API shows alert for configured region β Red blink (30s)
- Alert Dismissed: Alert clears for region β Green blink (30s)
- Outage Started: Current time enters outage slot β Blue blink (30s)
- Power Restored: Current time exits outage slot β Yellow blink (30s)
If multiple events occur simultaneously:
- Alert Start (highest priority)
- Alert Dismiss
- Outage Start
- Power Restore
- Ambient (lowest priority)
Higher priority events interrupt lower priority blinks.
- Check SSID and password in web config
- Ensure 2.4GHz WiFi (5GHz not supported)
- Check signal strength
- Try factory reset via web interface
- Verify WS2812B wiring (DIN pin)
- Check RGB test controls in web interface
- Ensure 5V power supply is adequate
- Check GRB color order setting
- Check API URLs in configuration
- Verify internet connectivity
- Check NTP time synchronization
- Review serial monitor for API errors
- Find device IP from serial monitor
- Check device is on same network
- Try default port 8080
- Reset network settings if needed
Enable serial monitor (115200 baud) to see:
- Boot sequence and initialization
- WiFi connection status
- API request/response data
- Alert state changes
- RGB event triggers
- Error messages and diagnostics
- WiFi passwords stored in NVS flash (not encrypted)
- Web interface has no authentication (local network only)
- HTTPS used for external API calls
- Consider network isolation for production use
All settings stored in ESP32 NVS (Non-Volatile Storage):
- Persists across reboots
- Factory reset available via web interface
- No external SD card required for config
This project is specific to Ukrainian infrastructure monitoring. Contributions welcome for:
- Bug fixes
- UI improvements
- Additional region support
- Localization
- Documentation
This project is licensed under the MIT License - see the LICENSE file for details.
Copyright (c) 2025 coolerUA
- AJAX Systems: Air alert API
- Yasno/DTEK: Power outage schedule API
- LVGL: Graphics library
- ESP32 Community: Arduino framework and libraries
For issues and questions:
- Check
PROJECT_REQUIREMENTS.mdfor detailed specifications - Review serial monitor output for errors
- Check web interface status page for API responses
- β Complete implementation of all core features
- β Three-screen LVGL UI
- β Dual API integration (Alert + Power Outage)
- β RGB notification system with priority
- β Comprehensive web configuration
- β NVS persistent storage
- β NTP time synchronization
- β WiFi manager with AP fallback
- β State change detection and event triggering
Made with β€οΈ for Ukraine πΊπ¦