Skip to content

bitbarista/k7-led-controller

Repository files navigation

K7 LED Controller

An unofficial web-based controller for Noo-Psyche K7 Mini and K7 Pro LED aquarium lamps.

License Platform Firmware Support on Ko-fi

This is an independent, community-developed project. It is not affiliated with or endorsed by Noo-Psyche.

K7 LED Controller UI
ESP32 Controller — browser UI served from the board

Variants

Variant Platform Always-on runtime
ESP32 controller (recommended) Any phone or browser Yes — Smooth Ramp, Lunar, Feed mode, and more
PC Bridge Windows, Linux No — schedule push only
Android app Android No — schedule push; Feed & Maintenance mode via home screen widget

The ESP32 controller is the full-featured option: a small board runs 24/7 beside the tank and provides the complete web interface from any device. The PC Bridge and Android app connect directly to the lamp for schedule editing but do not run continuously. All three share the same web UI.

K7 PC Bridge
PC Bridge — Windows & Linux

K7 Android App
Android App

Features

  • Read the current schedule and mode directly from the lamp
  • Edit the 24-hour lighting schedule on an interactive drag-and-drop chart (desktop) or the mobile chart editor with scroll-wheel hour editing
  • Additive colour preview strip showing the blended light output for each hour
  • Built-in preset library for Fish Only, LPS Reef, SPS Reef, Mixed Reef, Soft Mixed Reef, Acclimation Mixed, LPS Low Energy, Shallow SPS, and temporary Dino Suppression with dark overnight periods, practical coral photoperiods, and short dusk tails
  • Master brightness slider and per-channel intensity sliders (absolute output ceiling per channel)
  • Per-channel visibility toggles — hidden channels are zeroed when pushing to the device
  • Day-shift control to slide the entire schedule forward or back (e.g. peak at 18:00 instead of midday)
  • Save and reload your own named profiles (stored on the controller, persists across sessions)
  • Manual mode with live preview
  • Smooth Ramp — without Smooth Ramp the controller sends one interpolated brightness update per hour to keep the lamp in step with the schedule; enable Smooth Ramp to increase this to about every 2 minutes, only when calculated channel values change, for smoother sunrise and sunset transitions
  • Feed mode — timed white brightness boost for feeding; adjustable intensity (1–100 %) and duration (1–60 min); also triggered by a quick press of the BOOT button on the board
  • Maintenance mode — timed balanced inspection light for tank work, with adjustable profile intensity (1–100 %) and duration (1–180 min)
  • Lunar — varies the royal blue channel over the 29.5-day synodic cycle, with either a fixed nightly window or a moonrise/moonset-shifted window anchored to full-moon times, plus optional night clamping and schedule-aware cutoff
  • Siesta — optional midday dimming window for a coral rest/algae-control break; works with or without Smooth Ramp
  • Acclimation — start the whole schedule dimmer, then recover gradually over a chosen number of days
  • Seasonal Shift — move the whole photoperiod earlier and later across the year without changing day length
  • Effective Today chart view, firmware-backed Right Now output bars, and schedule-aware checks so you can see the real computed output and catch odd combinations before they surprise you
  • Preset-only export/import for sharing schedules safely, plus GitHub issue drafts and app-compatible QR codes for public built-in and reviewed community profiles
  • Backup export/import and persistent userdata storage so profiles and settings survive normal firmware and UI flashes
  • Supports K7 Mini (3 channels) and K7 Pro (6 channels)

Hardware (ESP32 controller)

An ESP32-S3 board sits between your lamp and your devices, creating its own WiFi network. No PC required — the controller runs 24/7 and is always accessible from any phone or browser.

Two boards are supported:

Board Flash Notes
ESP32-S3 SuperMini 4 MB Compact and inexpensive. Widely available from AliExpress and similar.
Seeed XIAO ESP32-S3 8 MB More flash and PSRAM. Available from Seeed Studio, Mouser, or similar. The standard (non-Sense) variant works fine.

Either board draws ~80 mA and can run from any USB phone charger.


Documentation

Full setup and usage guide: bitbarista.github.io/k7-led-controller/guide.html

Support

K7 LED Controller is a spare-time open source project. If it has helped with your reef lighting setup, you can support continued development and testing.

Support on Ko-fi


Flashing

Visit bitbarista.github.io/k7-led-controller/flash.html, connect your board via USB, and click Install next to your board type. Works in Chrome, Edge, and Opera — no software required.

If the device is not detected, hold the BOOT button while pressing RST, then click Install again.


First-time WiFi setup

After flashing, the device starts a setup portal:

  1. Connect to the K7-Setup-XXXXXX WiFi network (open, no password — the suffix is unique to your board)
  2. Browse to http://192.168.5.1 — the device scans for nearby K7 lamps automatically
  3. Select your lamp from the list and tap Connect & Save
  4. The device reboots. Connect to your lamp's WiFi network (K7-XXXXXX)
  5. Browse to http://k7controller.local — the controller loads and reads the lamp. If mDNS doesn't resolve, use the fixed IP http://192.168.4.200 instead.

To reset to setup mode (e.g. to change lamps), hold the BOOT button on the board while powering on for 3 seconds.

If your lamp is not found, make sure it is powered on. You can also enter the SSID manually.


Network architecture

Your phone/browser ── K7 lamp AP (192.168.4.x) ── [ESP32-S3 @ 192.168.4.200] ── K7 lamp (192.168.4.1)

All devices connect to the lamp's own WiFi network. The ESP32-S3 runs in STA-only mode — no separate controller AP. Your home network is never involved.

The controller uses a static IP of 192.168.4.200 so the address never changes after a WiFi reconnect. Bookmark http://192.168.4.200 as a reliable fallback if http://k7controller.local is not resolving.


Notes

  • Profiles and settings are saved to flash and survive power cycles
  • Smooth ramp, lunar cycle, feed mode, maintenance mode, and other schedule modifiers run entirely on the device — no browser needed once configured
  • Live luminance commands and NVR: The ESP32 controller sends live luminance commands to the lamp continuously — once per hour without Smooth Ramp, and about every 2 minutes with Smooth Ramp enabled, only when calculated channel values change. The PC Bridge and Android app send commands only when you explicitly push or preview. Push explicitly writes the 24-hour schedule to the lamp's storage. For the continuous live commands, the Noo-Psyche lamp firmware is closed so we cannot verify whether the lamp also stores those internally or how it manages write wear. Smooth Ramp sends commands more frequently, which may increase any internal write activity — use it at your own discretion.
  • Normal firmware updates and LittleFS web UI flashes no longer erase saved profiles and config; only a full erase/factory reset clears them
  • After updating firmware, reselect and push a built-in preset once if you want the controller to replace an older saved schedule with the latest preset definition
  • Dino Suppression is a temporary light-reduction preset for Ostreopsis/Prorocentrum pressure management; it disables Lunar/moonlight when pushed so nights remain fully dark
  • Applying a change takes approximately 1 second to take effect on the lamp. This is normal — each change requires a full TCP round-trip to the lamp (connect, send schedule + brightness, wait for acknowledgement, disconnect). Rapid successive changes are batched: only the latest value is sent. This is a constraint of the K7 lamp's TCP protocol, not a bug in the controller.

Device support

Device Channels
K7 Mini White, Royal Blue, Blue
K7 Pro White, Royal Blue, Green, UV, Cyan, Red

Protocol

The lamp communicates over TCP on port 8266 using a simple binary framing protocol (AA A5 [CMD] [data] BB). The full implementation is in arduino/src/K7Lamp.cpp.

Disclaimer

This project is provided "AS IS" without warranty of any kind. The author makes no representations about suitability, reliability, availability, or accuracy for any purpose.

K7 LED Controller changes live lighting output and stores schedules and settings locally — on the ESP32 board, on your PC, or on your phone depending on which variant you use. Incorrect settings, firmware bugs, WiFi issues, or unexpected lamp behaviour could affect aquarium lighting and livestock. With the ESP32 controller, hardware faults or power loss could also disrupt the running schedule. Test changes carefully and keep your own backups.

The Noo-Psyche lamp firmware is closed. The ESP32 controller sends live luminance commands to the lamp continuously — once per hour without Smooth Ramp, and about every 2 minutes with Smooth Ramp enabled, only when calculated channel values change. The PC Bridge and Android app send commands only when you explicitly push or preview a schedule. Push explicitly writes the 24-hour schedule to the lamp's storage. For the continuous live commands, we cannot verify whether the lamp also stores those internally or how it manages write wear.

Your use is at your sole risk. The author shall not be liable for any damage, livestock loss, data loss, hardware failure, or other direct, indirect, incidental, punitive, or consequential damages arising from use of this project.

Building from source

Requires PlatformIO.

cd arduino
pio run -e supermini    # ESP32-S3 SuperMini (4 MB)
pio run -e xiao         # Seeed XIAO ESP32-S3 (8 MB)

Licence

MIT

About

Unofficial web controller for Noo-Psyche K7 Mini and K7 Pro LED aquarium lamps

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors