85 lines
2.5 KiB
Markdown
85 lines
2.5 KiB
Markdown
# RFP Local Infinity Visualizer
|
|
|
|
This visualizer runs on the laptop and uses the master only as a JSON source.
|
|
It is the preferred development tool when you only have the master controller
|
|
available and want to simulate the six render nodes.
|
|
|
|
## Layout
|
|
|
|
The visualizer mirrors the physical installation:
|
|
|
|
- `6` columns are the six ESP nodes, left to right: `ESP1` to `ESP6`
|
|
- `3` rows are the three outputs per ESP
|
|
- top row: `UART6`
|
|
- middle row: `UART5`
|
|
- bottom row: `UART4`
|
|
- each output is drawn as one square frame with `106` LEDs
|
|
- LED order per frame follows the drawing: top edge left-to-right, right edge
|
|
top-to-bottom, bottom edge right-to-left, left edge bottom-to-top
|
|
- edge split is `25` LEDs on top, `27` LEDs right, `27` LEDs bottom,
|
|
`27` LEDs left
|
|
|
|
## Start
|
|
|
|
```bash
|
|
cd /home/jan/Documents/RFP/WLED-MM/repo
|
|
|
|
.venv/bin/python tools/infinity_visualizer_server.py \
|
|
--master 10.42.0.213 \
|
|
--port 8765
|
|
```
|
|
|
|
Open the URL printed by the tool, normally:
|
|
|
|
```text
|
|
http://127.0.0.1:8765/?master=10.42.0.213
|
|
```
|
|
|
|
If port `8765` is already in use, the tool automatically tries the next free
|
|
port and prints that URL instead, for example:
|
|
|
|
```text
|
|
Port 8765 is busy, using 8766 instead.
|
|
Infinity visualizer: http://127.0.0.1:8766/?master=10.42.0.213
|
|
```
|
|
|
|
## Why Local
|
|
|
|
The ESP32 master webserver should stay focused on WLED and Infinity control.
|
|
The local visualizer avoids loading extra HTML, JavaScript, canvas rendering,
|
|
or polling logic from the ESP itself.
|
|
|
|
The local server proxies:
|
|
|
|
```text
|
|
http://10.42.0.213/json/infinity
|
|
```
|
|
|
|
to:
|
|
|
|
```text
|
|
http://127.0.0.1:8765/api/infinity
|
|
```
|
|
|
|
This also avoids browser CORS issues.
|
|
|
|
## Controls
|
|
|
|
- `Master IP`: change the master target without restarting the server
|
|
- `Connect`: fetch state immediately
|
|
- `Pause`: freeze polling and animation
|
|
- `Master UI`: open the master `/infinity` page
|
|
|
|
## Notes
|
|
|
|
- This is not yet a bit-exact WLED renderer. It reads `/json/eff` from the
|
|
master and maps effect names to browser preview classes.
|
|
- Currently supported preview classes include `Solid`, `Blink`, `Strobe`,
|
|
`Breathe/Fade`, `Wipe`, `Scan`, `Chase/Running/Theater`, `Rainbow/Colorloop`,
|
|
`Fire`, `Twinkle/Sparkle/Glitter`, and `Noise/Plasma/Waves/Ripple`.
|
|
- Unknown effects are shown as a generic moving color blend so they remain
|
|
visible while we decide which effects need exact custom previews.
|
|
- It is a lightweight development preview for scene state, colors, row dimmers,
|
|
effect IDs, brightness, and virtual node layout.
|
|
- The simulated layout is six nodes, each with three rows and 106 LEDs.
|