5. Use the app¶
The Lightnet mobile app is the friendliest way to interact with a running installation. It speaks the controller's binary WebSocket protocol, draws the discovered panels on screen, and lets you tap, drag, and tint them in real time.
The app is a Kotlin Multiplatform project — one codebase, two platforms.
Get the app¶
There is no published build yet — you compile it yourself from the mobile repository.
Prerequisites: Android SDK with API 24+ installed, plus a connected device or emulator.
git clone https://github.com/przemczan/lightnet-mobile.git
cd lightnet-mobile
./gradlew :composeApp:installDebug
Launch the Lightnet app on your device.
Prerequisites: Xcode 14+ on macOS, plus a simulator or physical device.
git clone https://github.com/przemczan/lightnet-mobile.git
cd lightnet-mobile
open iosApp/iosApp.xcodeproj
Run the iosApp scheme. The Kotlin Multiplatform shared module is compiled automatically by the Xcode build phase.
Discovery on iOS
mDNS browsing isn't implemented on iOS yet — devices must be added manually by IP address. The Android side uses NsdManager for automatic discovery.
Full build instructions, including running the test suite, live in App → Getting Started.
First connection¶
- Open the app. The My Devices screen appears, empty on first run.
- Tap Add device → Discover. On Android, the controller shows up as
lightnet-XXXX.localonce mDNS finds it. - Tap the device.
The app fetches the panel topology from the controller, lays the panels out in 2-D space, and starts streaming live state.
No hardware? Use the demo
The discovery screen has a Demo Device entry. It connects to a built-in fake controller (DemoConnector) that responds with correct, CRC-valid packets. Every UI flow works against it, so you can explore the app without physical hardware.
What you can do today¶
| Tap a panel | Toggles it on/off |
| Drag across panels | Paint-toggles a row |
| Pick a color | Sets the color of selected panels |
| Play scenes | Browse, edit, and play scenes stored on the controller |
| Manage palettes | View and edit colour gradients |
| Power on/off | Global power state via POST /api/state/power |
| Discover devices | Browse the local network for controllers (Android) |
The controller also exposes the full HTTP and WebSocket API — you can drive it from curl, a browser, your own script, or anything else that speaks HTTP or WebSocket. See Firmware → API Reference.