Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

chvvkumar/ESP32-P4-NINA-Display

Open more actions menu

Repository files navigation

logo ESP32-P4 NINA Display

Build (main) Build (dev)

Version ESP-IDF LVGL

Flash Size PSRAM Factory Size OTA Size

A touchscreen dashboard for N.I.N.A. astrophotography software, built for the Waveshare ESP32-P4-WIFI6-Touch-LCD-4B (720x720). It polls the ninaAPI Advanced plugin over HTTP and WebSocket to show real-time session data: exposure arcs, guiding RMS, filter status, sequence progress, power draw, and more. Monitor up to three separate N.I.N.A. instances from one device. Beyond NINA it also runs a Spotify Now Playing screen, AllSky environmental panel, clock with weather and 3D moon phase, and GOES/solar imagery.

Device

Image Preview

Table of Contents


Screenshots

Device Display

Summary Page Red Filter
Hydrogen-Alpha Filter OIII Filter
Broadband Filter Autofocus
Camera Statistics Image Statistics
RMS Graph RA/DEC Graph
HFR Graph HFR History Graph
On-device Settings System Stats

Toast Notifications

Camera Connected Notification Sequence Started Notification
Safe Notification Unsafe Notification

Spotify Album Art Display

Spotify on two devices
Spotify overlay with controls Spotify minimal overlay
With controls Controls hidden

Clock & Weather

Clock Face with Weather
Clock face with weather data and forecast bars

Moon Phase Display

Real-time 3D rendered Moon with accurate phase, libration, and sub-solar lighting. Optional glow halo and starfield background.

Moon phase Moon with glow halo
Default Glow halo
Moon with starfield Moon with glow and starfield
Starfield background Glow and starfield

Web Configuration UI

Every setting is managed from the on-device web UI, organized into tabs.

N.I.N.A. instance settings Display and page navigation settings
N.I.N.A. instances (hosts, filter colors, RMS/HFR thresholds) Display (theme, home page, auto-cycle, page rotation)
Behavior settings System settings
Behavior (power, polling, notifications) System (network, MQTT, firmware, auth)
Clock and weather settings Spotify settings
Clock & Weather (provider, location, units) Spotify (client ID, playback options)
AllSky settings Image display settings
AllSky (connection, per-quadrant field mappings) Image Display (GOES / Moon / Solar / custom URL)
Logs tab Backup and restore tab
Logs (live console output, crash log, download) Backup (export / restore configuration)
HTTP API reference tab
API (in-UI reference for every HTTP endpoint)

Prerequisites

Hardware

3D printed mount for the Waveshare ESP32-P4-WIFI6-Touch-LCD-4B

Software (on the N.I.N.A. PC)

NINA Plugin


Installation

Download the latest factory binary from the Releases page. No build environment is needed: use a Chromium-based browser and the ESP Web Flasher, then flash nina-display-factory.bin at address 0x0000. Each release includes step-by-step flashing instructions.

Note: If your board warns about outdated esp-hosted co-processor firmware, flash network_adapter.bin at address 0x0000 to the ESP32-C6 coprocessor. A pre-built binary is in the firmware/ folder.

After the first flash, further updates can be delivered over the air from GitHub releases (System tab in the web UI).


First-Time Setup

On first boot (or whenever WiFi is not connected), the device broadcasts a WiFi access point named NINA-DISPLAY (password: 12345678). Connect to it from your phone or laptop and open http://192.168.4.1.

Set at minimum:

  1. WiFi credentials — your observatory/home network where NINA runs.
  2. NINA host(s) — the IP or hostname of each NINA PC (e.g. 192.168.1.50). The device builds the full API URL automatically. Up to three instances.

Save. The device reconnects to your network and starts polling immediately.

Once connected to your network, the config AP is disabled to reduce radio interference. If the WiFi connection drops, the AP reappears so you can reconfigure.


Security

The web interface is protected by a session-cookie login (default password: changeme123!; there is no username). Change it on first boot: web UI, System tab, Admin Password section.

  • Authentication is enabled by default and covers all configuration, reboot, factory reset, OTA, and secret-returning endpoints. Sessions expire after 12 hours.
  • Transport is HTTP, not HTTPS. Treat your LAN segment as the trust boundary.
  • Secrets (WiFi/MQTT passwords, Spotify client ID) are redacted as ******** in API responses regardless of the auth setting.
  • Authentication can be disabled (System tab). When off, every endpoint is open to anyone on the LAN, including reboot, factory reset, and OTA. Use only on trusted networks.

Display Interface

The Summary page shows a card for each configured NINA instance: name, active filter, target, progress, RMS, HFR, and time to meridian flip. Tap a card to jump to that instance's full dashboard.

Each instance page is a 720x720 bento-box grid: header (target, profile, WiFi, connection dot), sequence, an animated exposure arc colored by the active filter, filter/timing, guiding RMS, image stats (HFR, star count), mount flip time, session time, and power (voltage, current, watts, dew-heater PWM). A pulsing header dot marks an active API request; grey means NINA is unreachable, and the page dims after prolonged stale data.

Touch interactions

Every section on an instance page is tappable:

Tap area Opens
Header Full-screen JPEG preview of the last captured image (tap to dismiss)
Sequence box Sequence detail overlay (container, step, exposure counts)
Exposure arc Camera & weather overlay (camera name, temperature, dew point, humidity, pressure)
Filter label (arc center) Filter wheel overlay (current and available filters)
RMS box RMS history graph (up to 500 points, RA/Dec/Total, threshold lines)
HFR box (short tap) HFR history graph (up to 500 points, threshold lines)
HFR box (long press) Autofocus overlay (V-curve, focus position)
Flip time box Mount overlay (RA/Dec, altitude, azimuth, meridian flip state)
Session time box Session statistics overlay (total exposures, imaging time, target altitude, dawn)
Stars box Image statistics overlay (star count, HFR, FWHM, eccentricity, SNR)
Power row Jump back to Summary page

On-device settings

Swipe to the Settings page for on-device configuration in four tabs: Display (theme, brightness), Behavior (auto-rotate, sleep, timeouts), Nodes (NINA hosts), and System. The web UI exposes the full set of options. The System Info page reports IP, WiFi, CPU, memory, PSRAM, uptime, and task count.


Features

Navigation

Swipe left/right to cycle pages, or press the BOOT button (GPIO 35) to advance. Auto-cycle rotates through a selectable, reorderable list of pages on a configurable interval with fade, slide, or instant transitions, and can skip disconnected instances. The Home Page setting picks the page the display settles on; when it is a NINA instance, the display also returns there whenever that instance is online. Page-indicator dots at the bottom mark the NINA instance pages.

Multi-Instance Support

Add up to three NINA hosts. Only the active (visible) page gets full ~2-second polling; background instances get a slower heartbeat (default 30 s). When the Summary page is active, all instances are polled at full rate.

Themes & Filter Colors

Nine built-in dark themes, selectable in the Display tab; changes apply instantly without a reboot. A color-brightness slider (0-100%) uniformly dims all theme colors for dark-site use. Filter colors are set per-instance as hex values, and new filters reported by NINA are added automatically with a default color. RMS and HFR threshold colors are configurable, so out-of-range values shift green to amber to red.

Spotify

The display doubles as a full-screen Spotify Now Playing screen with album art, playback controls, progress bar, and scrolling track info. NINA and AllSky polling pause while the Spotify page is active to free bandwidth for album-art downloads.

Setup (Spotify tab in the web UI):

  1. Create a free app at developer.spotify.com.
  2. Set its redirect URI to http://127.0.0.1:8000/callback.
  3. Paste the Client ID into the Spotify tab and Save.
  4. Click Login with Spotify and approve access.
  5. Spotify redirects to a "can't connect" page: copy the full URL from the address bar and paste it into the Redirect URL field.

MQTT / Home Assistant

Point MQTT at your broker to publish the device's own state via Home Assistant auto-discovery: screen brightness and text brightness (dimmable light entities), a reboot button, and an uptime sensor. Home Assistant can then set brightness or reboot the device, for example dimming during a dark-site session. NINA session data is not published over MQTT.

AllSky, Weather, and Imagery

  • AllSky — a four-quadrant environmental panel (thermal, sky quality, ambient, power) fed from an AllSky API with configurable field mappings and thresholds.
  • Weather — OpenWeatherMap, Open-Meteo, or Weather Underground data on the clock page.
  • Image Display — full-screen GOES satellite, NASA SDO/SOHO solar imagery, or a custom image URL.

Web API

The device serves an HTTP API on port 80. A full, always-current reference for every endpoint (with copy-paste curl examples) lives in the web UI's API tab.

The /api/screenshot endpoint captures a live JPEG of the current display using the ESP32-P4's hardware JPEG encoder:

curl -o screenshot.jpg http://<device-ip>/api/screenshot

About

NINA Astrophotography display using Waveshare ESP32-P4-WIFI6-Touch-LCD-4B

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.