Round Displays - aaronwmorris/indi-allsky GitHub Wiki
indi-allsky provides integrated support for circular LCD/AMOLED displays and microcontroller-based viewers (e.g., ESP32 round disc displays, Waveshare 1.28-inch GC9A01 panels, ST7789 circular screens, and circular HDMI monitors).
When circular display generation is enabled, the image processing pipeline:
- Calculates optical center alignment using
LENS_OFFSET_XandLENS_OFFSET_Y. - Crops the frame to
IMAGE_CIRCLE_DIAMETERcentered on the optical axis. - Pads non-circular sensor margins with black borders (
[0, 0, 0]BGR). - Rescales the resulting square frame to the configured
RESOLUTION(800x800, 720x720, or 1080x1080). - Writes the file to the web root at
circular_display.<ext>(e.g./var/www/html/allsky/images/circular_display.jpg).
Settings are configured in the web interface under Configuration → Image Processing → Circular Display:
| Parameter | Type | Options / Range | Default | Description |
|---|---|---|---|---|
ENABLE |
Boolean |
true / false
|
false |
Enables generation of circular_display.jpg on every image capture cycle. |
RESOLUTION |
Select |
800 (800x800)720 (720x720)1080 (1080x1080) |
800 |
Native square dimension for the primary generated output image. |
IMAGE_CIRCLE_DIAMETER |
Integer |
|
3500 |
Diameter in unbinned sensor pixels of the fisheye lens circle. |
Optical centering is shared with the primary lens geometry settings:
-
LENS_OFFSET_X: Horizontal pixel offset of the optical axis relative to the sensor center. -
LENS_OFFSET_Y: Vertical pixel offset of the optical axis relative to the sensor center.
For embedded microcontroller viewers (such as ESP32 Wi-Fi round disc desk clocks and status monitors), indi-allsky provides an unauthenticated, bandwidth-efficient streaming endpoint:
GET /indi-allsky/allsky_esp32?size=<SIZE>&camera_id=<CAMERA_ID>
-
size: Target square resolution. Valid choices are restricted to240,280,320,720, or800(defaults to240if omitted or invalid). -
camera_id: (Optional) ID of the target camera. Defaults to0(the active or most recently captured camera).
- If
CIRCULAR_DISPLAY.ENABLEis active andcircular_display.jpgexists, the endpoint reads and scales the cropped circular image. - If circular display output is disabled, the endpoint falls back to resizing the latest raw capture frame.
- The response is encoded in JPEG format using the configured
IMAGE_FILE_COMPRESSIONquality and served directly withContent-Type: image/jpeg.