Skip to content

Home


Note from the author

This project was built for fun, to learn, and because I enjoy tinkering. It was inspired by the well-known Nanoleaf system — I wanted to create something that was truly mine, something I could develop exactly the way I wanted. I knew it would never be perfect or as polished, but working on it gave me a lot of satisfaction and joy. It's far from finished, and I've already put a significant amount of time into it with no idea whether I'll find more. Rather than let it gather dust in a drawer, I decided to share it — hoping that maybe someone will find something useful here.

On the current state: Unfortunately, the project doesn't yet have refined controller and panel schematics, or a PCB design. I've already made a few prototypes, but they still have significant shortcomings. I don't want to publish something so incomplete and risk misleading others or exposing them to costs of non-working devices. I'm not deeply versed in electronics or circuit design, but I'm working on implementing the most important improvements before releasing the schematics and PCB.

Similarly, the 3D-printed panel design is still in early stages with no viable design yet. However, this isn't critical — I expect anyone using this project would solve the panel fabrication themselves.

Regarding the mobile app: initially, I decided a web app would be easiest since that's where my expertise lies. Mobile development was unfamiliar territory. Over time, I ported the web version to React Native, and later to Kotlin (the current version) with significant AI assistance. I don't have time to deeply learn Kotlin, so AI remains the primary executor for that part.

Due to time constraints, this project sat dormant for a long time. Fortunately, today's accessibility of AI tools gave it a second chance — AI helped solve blockers that were preventing further progress. At minimum, I'm aiming to bring it to a usable state as a complete system.

What is Lightnet

Lightnet is a modular, DIY addressable lighting system — think Nanoleaf-style wall panels, but built from your own hardware. A Wi-Fi controller (ESP8266 or ESP32) drives many panels over I²C in a tree layout. The controller handles discovery, scene playback, and the HTTP/WebSocket APIs; each panel runs animations locally on its ATmega after a single setup packet. Control it from the Kotlin Multiplatform mobile app, or from any client that speaks the same APIs.


graph LR
  App["📱 Mobile App"] <-->|"HTTP + WebSocket"| C["🎛️ Controller<br/>ESP8266 / ESP32"]
  C <-->|I²C| P1["💡 Panel"]
  C <-->|I²C| P2["💡 Panel"]
  P1 <-->|I²C| P3["💡 Panel"]

The controller handles Wi-Fi, the HTTP and WebSocket APIs, scene playback, and discovery. Each panel runs animations entirely on its own ATmega after a single setup packet — no per-frame traffic until something changes.


What do you want to do?

  • Build one


    You're starting from nothing — boards, firmware, Wi-Fi setup, the lot. Follow the guided path end-to-end.

    Get started

  • Use one


    Someone already built the hardware; you just need the app and a power outlet.

    Use the app

  • Develop on it


    Read the firmware internals, the binary protocol, or the Kotlin Multiplatform app codebase.

    Firmware · App


What's in the box

  • Firmware

    Controller and panel firmware for ESP8266/ESP32 and ATmega328P/PB. PlatformIO build, HTTP + WebSocket APIs, scene system, panel OTA.

    Firmware docs

  • Mobile app

    Kotlin Multiplatform app for Android and iOS. mDNS discovery, binary WebSocket protocol, Compose UI with a live panel visualiser.

    App docs

  • Reference

    Glossary, FAQ, and release notes — the shared vocabulary across firmware and app.

    Reference


License & contributing

Both firmware and the app are open source under GNU GPL v3.0. Source lives in three repositories:

Issues and PRs welcome on all three.


Support the project

Lightnet is a free, open project. If it saved you some time or you just enjoy using it, a small ETH tip is a nice way to say thanks — no pressure at all.

ETH: 0x6eb7Ac0FBc7bD95595Eb221681CC2Ba7aeDfd54D