⚙️ Technical Overview

Complete technical reference for the Forest of Light installation. This document explains how every system interconnects, from the master scheduler to individual LED pixels. Written for anyone who needs to operate, troubleshoot, or take over the installation.

Total Devices
102
Show Hours
17:00–21:30
Network
10.50.0.x
Protocols
8
FPP Players
10
NDB Controllers
27 active
DMX Nodes
13
Projectors
3

Contents

1. How the Show Runs

Nightly startup/shutdown sequence

2. System Architecture

Full signal flow diagram

3. Control Layer

HA, Node-RED, Chataigne

4. Pixel Layer (FPP + NDB)

LED sequence delivery

5. DMX Layer (Art-Net)

Chataigne DMX output

6. Projection Layer

MadMapper + projectors

7. Laser Layer

4 LaserCubes via MIDI + 4 KeoBin LA300 party lasers

8. Network Infrastructure

Router, switches, Tailscale

9. Protocol Reference

All 8 protocols explained

10. Startup Sequence

What happens at 17:00

11. Shutdown Sequence

What happens at 21:30

12. Device Inventory

Every device, IP, role

13. FAQ

Common questions answered


1. How the Show Runs

The Forest of Light is a fully automated outdoor light and projection installation. Every night, Home Assistant triggers the entire show at 17:00 and shuts it down at 21:30. No human intervention is required for normal operation.

The Three Layers

The system is organized into three conceptual layers:

LAYER 1: SCHEDULING & AUTOMATION Home Assistant triggers everything at 17:00 / 21:30. Node-RED bridges HA to Chataigne. Home Assistant Node-RED Chataigne LAYER 2: SHOW CONTROL & CONTENT FPP plays LED sequences. MadMapper maps projections. Chataigne outputs DMX and triggers lasers via MIDI. FPP MadMapper Chataigne MIDI LAYER 3: PHYSICAL OUTPUT NDB controllers drive pixels. Art-Net nodes control DMX fixtures. Projectors display mapped content. LaserCubes fire patterns. 27 NDBs 13 DMX 3 Projectors 8 Lasers 4 LC + 4 Party 10 Govee

2. System Architecture

This diagram shows how every major system connects. Follow the arrows to trace any signal from trigger to physical output.

SCHEDULING HOME ASSISTANT 10.50.0.219 · Master Clock (17:00 / 21:30) WS API 10 Govee Aurora Panels WiFi / LAN CONTROL NODE-RED forest-mac1 · 10.50.0.30 CHATAIGNE forest-mac1 · Show Control Engine WebSocket + OSC HTTP API WS 8080 SHOW CONTENT 10 FPP PLAYERS 5 NUCs + 5 RPis · LED sequence playback MadMapper (Mac2) Butterfly-v6 · 4K@60fps MadMapper (Mac3) Flowers · 4K@60fps MadMapper (Mac4) Fire · 1080p@30fps · no laser Art-Net TCP MIDI PHYSICAL OUTPUT DDP / Ethernet 27 NDB Controllers (ESP32) 10.50.0.50–.84 WS2811/WS2812B LED Pixels Flowers, Fire, Mushrooms, Rain, Spring, Huts, Clocks, Garden, Monsters 13 DMX Art-Net Nodes PKnight CR041R · .140–.154 DMX Fixtures Hoops, Umbrellas, Red Trees, Doors, Welcome, Hay Bales... HDMI 3 Projectors Epson + 2x Optoma UHD50X (Flower, Fire) Mapped Surfaces Butterfly Wings, Flower Display, Fire 8 Lasers 4 LaserCubes (LC1–LC4) + 4 KeoBin LA300 (disco ball) MIDI

3. Control Layer

Three applications work together on the control layer. All three run on forest-mac1 (10.50.0.30), except Home Assistant which runs on a separate device (10.50.0.219).

SystemHostRoleKey Integrations
Home Assistant 10.50.0.219 Master scheduler. Triggers all systems at 17:00 and 21:30. Monitors FPP device status via REST API (3-second polling). Sends projector service alerts to iPhone. Node-RED (WS API), Govee (WiFi/LAN), Mobile App (push notifications)
Node-RED forest-mac1
10.50.0.30
Integration bridge. Receives HA switch commands and translates them into FPP API calls, WebSocket messages to Macs, OSC messages to Chataigne, and TCP commands to the projector. Also hosts the network performance dashboard. HA (WS API), Chataigne (OSC + WS), FPP (HTTP), Mac2/3/4 (WS 8080), Projector (TCP 10000), MadMapper (OSC 9090)
Chataigne forest-mac1
10.50.0.30
Show control engine. Outputs DMX Art-Net to 13 zones, controls the Epson projector via TCP, triggers lasers via MIDI, and manages WebSocket communication. Node-RED (WS + OSC), Art-Net nodes (.140-.154), Projector (TCP), MIDI (LaserCubes)

How They Connect

HA Switch ON Node-RED receives WS event Sends OSC /MasterStates/AllOn to Chataigne Chataigne sets all 13 DMX zones to 250
HA Switch ON Node-RED sends HTTP to all FPP players FPP triggers Command Preset Slot 1 (ALL ON) FPP starts sequences → DDP to NDBs → LEDs light up
⚠️
Critical note: The Chataigne WebSocket trigger for ALL ON is /0, NOT /on. The /on trigger is defined but not connected to anything. Sending /on to the WebSocket server will do nothing.

4. Pixel Layer (FPP + NDB)

The pixel layer is responsible for all individually-addressable LED installations. It uses a two-tier architecture:

Tier 1: FPP Players (Sequence Playback)

Falcon Player (FPP) runs on 10 devices (5 Intel NUCs running Debian, 5 Raspberry Pis). Each FPP player is assigned to a zone and plays pre-rendered LED sequences (.fseq files). Sequences are triggered via Command Presets called by Node-RED over HTTP.

DeviceIPPlatformZoneProtocol Out
forest-pix110.50.0.11Debian NUCFlowersDDP
forest-pix210.50.0.12Debian NUCFireDDP
forest-pix310.50.0.13Raspberry PiMushroomsDDP
forest-pix410.50.0.14Debian NUCHutsDDP
forest-pix510.50.0.15Debian NUCSpringDDP
forest-minipix110.50.0.20Raspberry PiClocksDDP
forest-minipix210.50.0.21Raspberry PiRainDDP
forest-minipix310.50.0.22Raspberry PiGarden CentreDDP
forest-minipix510.50.0.24Raspberry PiMonstersDDP
forest-minipix7100.73.248.94Raspberry PiSundial (remote)DDP

Tier 2: NDB Controllers (Pixel Output)

NDB controllers are custom ESP32-based LED drivers that receive DDP data from FPP players over Ethernet and output pixel data to WS2811/WS2812B LED strips. 27 are currently active across 9 zones, with IPs ranging from 10.50.0.50 to 10.50.0.84.

FPP Player DDP over Ethernet NDB Controller (ESP32) WS2811 data wire LED Pixels

5. DMX Layer (Art-Net)

The DMX layer runs independently from the pixel layer. Chataigne outputs Art-Net (DMX over UDP) directly to 13 PKnight CR041R Art-Net nodes, which convert the data to DMX512. Each node feeds an ADJ DP-415R 4-channel dimmer/switch pack that simply switches mains power on or off to the connected fixtures. This is not intelligent lighting control β€” there is no colour or intensity modulation. Each zone is either fully on (DMX value 250, or 249 for Father Time) or fully off (value 0 or 1).

Chataigne Art-Net (UDP) PKnight CR041R Node DMX512 ADJ DP-415R Fixtures (mains power on/off)

All modules use Universe 1 except Welcome (DMX6) which uses Universe 3 (also reachable via Node-RED sACN). The ON state sets each zone to DMX value 250 (Father Time uses 249). The OFF state sets zones to value 0 or 1.

DMX Zone Assignments

ZoneIP (.1xx)Fixtures PoweredNotes
DMX1.14080 LED hoops (group 1 of 2)Hoops split across 3 nodes, two channel groups per node
DMX2.14180 LED hoops (group 2 of 2)
DMX3.14280 LED hoops (group 3 of 2)
DMX4.143Plastic mushrooms, both sides of path
DMX5.144Umbrellas + light balls (right side of flower path)
DMX6.145Welcome sign + trees by saloonUniverse 3; also reachable via Node-RED sACN
DMX7.146Red trees + power supply to Fire projector hut
DMX8.147Light balls (left side of flower path)
DMX9.148Balls by Father TimeUses value 249 (not 250) for ON state
DMX10.149Hay bales by garden centre
DMX11.150Unused / skipped
DMX12.151Unused / skipped
DMX13.1524Γ— KeoBin LA300 party lasers aimed at disco ballNo intelligent control β€” switch on/off only
DMX14.153Green trees / stem by the doors
DMX15.154Green trees by forest entrance

See the DMX Art-Net Nodes page for the full node list and zone assignments.


6. Projection Layer

Three projectors display mapped content onto physical surfaces. All three run MadMapper 6.0.2 for projection mapping on separate Mac Minis.

ProjectorMacSoftwareProjectSurfacesOutput
Epson DHT8000 (10.50.0.5)forest-mac2MadMapperButterfly-v69 (Wings, Quads, Lines)Video
Optoma UHD50X (Flower)forest-mac3MadMapperFlowers7 (Masks, Quads)Video + Laser
Optoma UHD50X (Fire)forest-mac4
10.50.0.33
MadMapper 6.0.2Fire5 (Quad-4, Monster2, Monster1, Group-1 [contains Quad-1, Quad-2])Video only (no laser)

All three projection Macs (Mac2, Mac3, Mac4) run a local Chataigne instance for scheduled reboots. Mac2 and Mac3 additionally handle laser control:

  • Mac2: Projector.noisette β€” Scheduled reboot at 16:45 to refresh HDMI handshake to Epson projector. Handles LC1 laser via MIDI.
  • Mac3: flower.noisette β€” Scheduled reboot at 14:30. Handles LC2 laser via MIDI.
  • Mac4: Fire.noisette β€” Minimal config (OS module + WebSocket Server only, single reboot action). Scheduled reboot at 16:30 (Dec–Feb 5), changed to 17:00 (Feb 6+). No laser connected.

Mac4 (Fire) spec differences: Mac4 runs at 1920Γ—1080 / 30 fps (not 4K/60fps like Mac2 and Mac3). The player is FFMPEG Player (CPU) and the timeline mode is Conductor (not Scenes & Cues). Media files: fire-2025-10-16-05-05-22-ut.mov (1920Γ—1080, 30fps, MPEG codec), _fire loop 1.mov, _fire loop 2.mov.

MadMapper sends OSC telemetry (play state, project name, FPS, output status) to Node-RED on UDP port 9090. If no message is received within 8 seconds, MadMapper is considered offline.


7. Laser Layer

The laser layer has two distinct types of units β€” 8 laser units total:

  • 4 Wifi LaserCube 2.5W β€” intelligent, MIDI-controlled, full pattern/animation support.
  • 4 KeoBin LA300 party lasers β€” non-addressable, powered via DMX13 (.152) through an ADJ DP-415R switch pack. These are aimed at a disco ball and have no intelligent control; they are simply switched on or off.

LC1 (Butterfly) is controlled by Mac2 via USB Ethernet dongle (10.0.0.x). LC2 (Flower) is controlled by Mac3 via USB Ethernet dongle (192.168.1.x). LC3 and LC4 (Saloon) are controlled directly by Mac1 (main Chataigne) via WiFi on the main 10.50.0.x network. All LaserCube units run firmware 0.23 at 30,000 pps DAC rate.

LaserCubeLocationControlled ByIPConnectionMIDIInterlock
LC1Butterflyforest-mac210.0.0.10USB ETH (10.0.0.x) · Ethernet ServerC2 toggle, D0 ILDA patternEnabled
LC2Flowerforest-mac3192.168.1.1USB ETH (192.168.1.x) · Ethernet ServerC1 toggle, D1 animation, E1 timelineEnabled
LC3Saloonforest-mac110.50.0.192WiFi (main network) · Ethernet ClientC0 toggleDisabled
LC4Saloonforest-mac110.50.0.193WiFi (main network) · Ethernet ClientVia LC3Enabled
⚠️
LC3 interlock disabled: The Saloon LaserCube at 10.50.0.192 has its safety interlock disabled. All other cubes have it enabled. This should be investigated.

KeoBin LA300 Party Lasers (Disco Ball)

Four KeoBin LA300 party lasers are aimed at a disco ball. They have no network address and no intelligent control β€” they are powered by the ADJ DP-415R connected to DMX13 (.152). When Chataigne sets DMX13 to 250, the switch pack supplies mains power to all four units and they turn on automatically. They turn off when DMX13 is set to 0.

Chataigne Art-Net β†’ DMX13 (.152) PKnight CR041R DMX512 ADJ DP-415R 4Γ— KeoBin LA300
HA turns on input_boolean.butterfly_laser Node-RED sends WS "laser" to Mac2 Chataigne (Mac2) fires MIDI Note On LaserCube arms and plays pattern

8. Network Infrastructure

All devices operate on the 10.50.0.x subnet via a TP-Link Archer BE230 router (10.50.0.1). Internet is provided by Starlink via DHCP (192.168.1.x). Two Wavlink AX3000 WiFi extenders (MeshLink) extend coverage.

IP RangeDevice TypeCount
.1Router1
.5Epson DHT8000 Projector1
.11 – .15FPP NUCs (pix1-5)5
.20 – .24FPP RPis (minipix1-5)5
.30 – .33Mac Minis4
.50 – .84NDB Controllers35 (27 active)
.90 – .99Govee Aurora Panels10
.100 – .101IP Cameras2
.140 – .154DMX Art-Net Nodes13
.192 – .193LaserCubes (Saloon)2
.200 – .201MeshLink WiFi Extenders2
.209, .219, .247Cameras + HA3
.225 – .228Music Players4

Tailscale VPN — Remote Access

All 19 Forest devices run Tailscale for remote access via the opossum-mamba.ts.net tailnet. This allows full remote management from any Tailscale-connected device (laptop, phone, iPad) without port forwarding or exposing services to the internet.

FeatureDetails
Tailnetopossum-mamba.ts.net
Subnet RouterHome Assistant (100.80.122.83) advertises 10.50.0.0/24
Exit NodeHome Assistant — routes all traffic through the Forest network
Devices on Tailscale19 (4 Macs, 5 NUCs, 5 RPi players, 4 Music, 1 PatchBox)
Remote DeviceSundial (forest-minipix7) at 100.73.248.94 — only reachable via Tailscale
ℹ️
How remote access works: Connect to Tailscale on any device, then access any Forest system via its Tailscale hostname (e.g., ssh forestoflight@forest-mac1.opossum-mamba.ts.net) or local IP (e.g., http://10.50.0.30:1880 for Node-RED). Because Home Assistant acts as a subnet router, the entire 10.50.0.x network is accessible remotely — including devices that don't run Tailscale themselves (NDB controllers, DMX nodes, Govee panels, cameras).
⚠️
The show does not depend on Tailscale or internet. If Starlink goes down or Tailscale is unavailable, the show continues normally. Tailscale is only used for remote monitoring, SSH access, push notifications, and the Sundial remote device.

See the Network Map for an interactive visual layout and the Network Devices page for full device details including all Tailscale IPs.


9. Protocol Reference

ProtocolTransportUsed ForSource → Target
DDPUDPPixel data from FPP to NDB controllersFPP Players → NDB ESP32
Art-NetUDPDMX data from Chataigne to lighting nodesChataigne → PKnight CR041R
WebSocketTCPControl commands between systemsNode-RED ↔ Chataigne, HA, Mac2/3/4
TCPTCPProjector serial controlChataigne → Epson (10.50.0.5:10000)
MIDIUSBLaser trigger commandsChataigne (Mac2/Mac3) → LaserCubes
OSCUDPShow state commands and telemetryNode-RED → Chataigne (port 8000), MadMapper → Node-RED (port 9090)
REST/HTTPTCPFPP command presets and status pollingNode-RED → FPP, HA → FPP (3s poll)
MQTTTCPRemote device status (Sundial)Sundial → MQTT Broker → HA

10. What Happens at 17:00 (Startup)

When the clock hits 17:00, Home Assistant fires 4 automations simultaneously. Here's the cascade:

StepSystemWhat HappensPhysical Result
1HATurns on switch.nodered_8fc961d23470e091 (Forest Power)
2Node-REDReceives switch event, sends HTTP to all 10 FPP players: /api/command/Trigger%20Command%20Preset%20Slot/1FPP starts playing show sequences
3Node-REDSends OSC /MasterStates/AllOn (value 1) to Chataigne on localhost:8000
4Node-REDSends WS message ON to forest-mac1:8080
5ChataigneReceives WS /0 trigger, activates ALL ON state, sets 13 DMX zones to 250All DMX fixtures illuminate
6HATurns on switch.nodered_d925137e9134a539 (DMX Power)Art-Net output relay enabled
7HATurns on input_boolean.butterfly_wings
8Node-REDDetects wings boolean change, sends WS /wingsOn to Chataigne
9ChataigneSends TCP 0000\r (handshake) then C00\r (power on) to Epson projectorEpson projector powers on
10ChataigneBroadcasts ProjectorOn to all WS clients
11HATurns on all 3 laser input_booleans
12Node-REDSends WS laser to Mac2 and Mac3
13Chataigne (Mac2/3)Fires MIDI Note On to LaserCubesAll 4 lasers arm and start patterns
14HATurns on lights in "treeline" area10 Govee Aurora panels illuminate
15FPPSequences play, sending DDP data to NDB controllersAll LED pixel installations animate
16MadMapperAlready running on Mac2/Mac3/Mac4, projecting mapped contentButterfly wings, flower, and fire projections visible

Total time from trigger to full show: approximately 5–10 seconds for all systems to reach steady state. The Epson projector takes the longest (3-second TCP handshake delay).


11. What Happens at 21:30 (Shutdown)

The reverse process. HA fires 4 automations that cascade through the same systems:

StepActionResult
1HA turns off Forest Power + DMX Power switchesNode-RED sends FPP Preset Slot 2 (ALL OFF) + OSC AllOff to Chataigne
2Chataigne sets all DMX zones to 0/1All DMX fixtures go dark
3FPP players stop sequencesNDB controllers receive no more DDP data, LEDs go dark
4HA turns off butterfly_wingsChataigne sends TCP C01 to power off Epson projector
5HA turns off all 3 laser booleansLaserCubes disarm
6HA turns off treeline lightsGovee Aurora panels turn off

12. Device Inventory Summary

CategoryCountDevices
Networking41 router (Archer BE230), 2 MeshLink WiFi extenders, 1 Starlink
Control Macs4Mac1 (Chataigne/Node-RED), Mac2 (Butterfly), Mac3 (Flowers), Mac4 (Fire)
FPP Players105 Debian NUCs (pix1-5), 5 Raspberry Pis (minipix1-3, 5, 7)
NDB Controllers27 activeESP32-based LED drivers, 10.50.0.50–.84
DMX Nodes13PKnight CR041R Art-Net nodes, 10.50.0.140–.154
Dimmer Packs13ADJ DP-415R 4-channel dimmer/switch packs (one per DMX zone)
Projectors31 Epson DHT8000 (10.50.0.5), 2 Optoma UHD50X (Flower + Fire, HDMI only)
Lasers84 LaserCubes (LC1 Butterfly, LC2 Flower, LC3+4 Saloon) + 4 KeoBin LA300 party lasers (disco ball, via DMX13)
Govee Panels10Govee H7070 Aurora panels (10.50.0.90–.99)
Audio4Music1-4 Raspberry Pis (10.50.0.225–.228)
Cameras4IP cameras at .100, .101, .209, .247
Other2Home Assistant (10.50.0.219), PatchBox/Monster Voice (.192)

13. Frequently Asked Questions

The show didn't start at 17:00. What do I check?
  1. Check Home Assistant is running and reachable at 10.50.0.219
  2. Check the Automations page in HA — are the "Turn On" automations enabled?
  3. Check Node-RED is running on forest-mac1 (http://10.50.0.30:1880)
  4. Try manually toggling the Forest Power switch in HA
  5. If FPP players aren't responding, check network connectivity (can you ping 10.50.0.11?)
Some LED zones are dark but others are working. What's wrong?
  • Check the specific FPP player for that zone (see the device table above for IP mapping)
  • Open the FPP web UI at http://10.50.0.XX — is it showing "playing"?
  • Check HA sensors — does the zone show "playing" or "offline"?
  • If the FPP player is online but LEDs are dark, the NDB controller may have lost power or network. Check the NDB's IP (10.50.0.50–.84 range)
  • If only some pixels in a zone are dark, it's likely a physical wiring issue (data line or power supply)
The butterfly projection isn't showing. How do I fix it?
  1. Check the projector: Is the Epson powered on? Try pinging 10.50.0.5
  2. Check HDMI: The most common issue is a lost HDMI handshake. Reboot forest-mac2 (or wait for the scheduled 16:45 reboot)
  3. Check MadMapper: Is it running on Mac2? Is the "Butterfly-v6" project open and playing?
  4. Check HA: Is input_boolean.butterfly_wings turned on?
  5. Manual projector control: Send TCP commands via Node-RED — the projector flow has manual ON/OFF buttons on the dashboard
How do I manually start/stop the show?

Open the Home Assistant dashboard and toggle these switches:

  • Forest Power — controls all FPP players and DMX
  • DMX Power — enables Art-Net output
  • Butterfly Wings — enables/disables the projection
  • Laser toggles — individual laser on/off
  • Govee Auroras — controlled via the "treeline" area in HA

Alternatively, you can use the Node-RED dashboard at http://10.50.0.30:1880/dashboard

A Mac Mini is unresponsive. How do I reboot it?
  • Mac1 (Chataigne/Node-RED): SSH to forestoflight@10.50.0.30 and run sudo reboot. Warning: this will restart both Chataigne and Node-RED.
  • Mac2 (Butterfly): Use the HA button "Reboot Forest" or send WebSocket message "reboot" via Node-RED. Mac2 also reboots daily at 16:45 automatically.
  • Mac3 (Flowers): Use the HA "Flower Projector" button or send WS "reboot". Reboots daily at 14:30.
  • Mac4 (Fire): Use the HA "Fire Projector" button or send WS "reboot". Mac4 also reboots daily at 16:30 (Dec–Feb 5) or 17:00 (Feb 6+).
  • If a Mac is completely frozen, you'll need physical access to hold the power button.
What is DDP and how is it different from Art-Net?

DDP (Distributed Display Protocol) is used for pixel-level LED control. It sends raw channel data from FPP players to NDB controllers over UDP. It's optimized for high pixel counts (thousands of individually-addressable LEDs).

Art-Net is used for DMX fixture control. It sends DMX512 data from Chataigne to PKnight nodes over UDP. It's designed for traditional lighting fixtures (dimmers, moving heads, LED pars) with 512 channels per universe.

In the Forest of Light, DDP handles the addressable LED installations (mushrooms, flowers, rain, etc.) and Art-Net handles the DMX fixtures (hoops, umbrellas, red trees, etc.).

What's the difference between the /0, /on, and /off WebSocket triggers?

This is a common source of confusion:

  • /0ALL ON. Sets all 13 DMX zones to 250. This is the actual trigger for turning lights on.
  • /offALL OFF. Sets all zones to 0 or 1.
  • /onDoes nothing. It's defined in the WebSocket server but not connected to any action. Do not use it.
  • /1Does nothing. Also defined but unused.

The naming is counterintuitive (/0 = ON, /on = nothing), but this is how the Chataigne config is wired.

How do the LaserCubes connect to the Macs?

Mac2 has a USB Ethernet dongle creating a private 10.0.0.x network for LC1 (Butterfly, at 10.0.0.10). Mac3 has a USB Ethernet dongle creating a private 192.168.1.x network for LC2 (Flower, at 192.168.1.1). These private links provide low-latency control separate from the main network.

LC3 and LC4 (Saloon lasers) connect via WiFi on the main 10.50.0.x network (10.50.0.192 and .193). They do not use USB Ethernet.

Laser patterns are triggered via MIDI Note On messages from Chataigne. Mac2 uses Octave 2, Mac3 uses Octave 1.

Where are the configuration files?
  • Chataigne (Mac1): ForestofLigttDMX.noisette
  • Chataigne (Mac2): Projector.noisette
  • Chataigne (Mac3): flower.noisette
  • Chataigne (Mac4): Fire.noisette β€” minimal config (OS + WebSocket Server modules, single reboot action)
  • MadMapper (Mac2): Butterfly-v6 project file
  • MadMapper (Mac3): Flowers project file
  • MadMapper (Mac4): Fire project file (1920Γ—1080 / 30fps, FFMPEG Player CPU, Conductor timeline)
  • Node-RED (Mac1): Flows accessible at http://10.50.0.30:1880
  • Home Assistant: configuration.yaml + automations.yaml at 10.50.0.219
  • FPP Players: Web UI at http://10.50.0.XX for each player
What happens if the internet goes down?

The show is fully local and does not depend on internet connectivity. All control, sequencing, and output happens on the local 10.50.0.x network. The Starlink connection is only used for:

  • Remote access (SSH, web UIs)
  • Push notifications (projector alerts to iPhone)
  • The Sundial remote device (Tailscale VPN)

If Starlink goes down, the show continues normally. You just can't access systems remotely or receive notifications.

How do I add a new FPP player or NDB controller?

New FPP Player:

  1. Flash FPP onto an SD card (RPi) or install on a NUC
  2. Assign a static IP in the 10.50.0.x range
  3. Upload sequences and configure playlists via the FPP web UI
  4. Add the device to Node-RED's FPP Command Presets flow (add a new HTTP request node)
  5. Add REST sensors in Home Assistant's configuration.yaml

New NDB Controller:

  1. Flash the NDB firmware onto an ESP32
  2. Configure with a static IP in the 10.50.0.50–.84 range
  3. Configure it as a DDP output in the parent FPP player's channel output settings
  4. Wire the data output to WS2811/WS2812B LED strips
What are the scheduled reboots and why?
  • Mac2 at 16:45 — Refreshes the HDMI handshake to the Epson projector. Without this, MadMapper may output video but the projector won't display it (lost HDMI negotiation).
  • Mac3 at 14:30 — Ensures a clean state before the show. Earlier than Mac2 because it doesn't have the HDMI handshake issue.
  • Mac4 at 16:30 / 17:00 — Ensures a clean state for the Fire projector (Optoma UHD50X). Originally set to 16:30 (Dec–Feb 5); changed to 17:00 from Feb 6 onward. Mac4 had 142 total reboots during the season, with 89 clean operational nights, 20 issue nights (81.7% reliability excluding scheduled reboots); worst single day was Dec 18 with 3 unexpected reboots.

All three are managed by local Chataigne instances (Projector.noisette, flower.noisette, Fire.noisette) using the Time module. They fire before or at show hours (17:00) so the Macs are fully booted and applications loaded by showtime.

How do I access each system's interface?
SystemURL / Access
Home Assistanthttp://10.50.0.219:8123
Node-RED Editorhttp://10.50.0.30:1880
Node-RED Dashboardhttp://10.50.0.30:1880/dashboard
FPP Player (any)http://10.50.0.XX (replace XX with device IP)
ChataigneGUI app on forest-mac1 desktop (VNC or physical access)
MadMapperGUI app on forest-mac2/mac3/mac4 desktop (VNC or physical access)
Routerhttp://10.50.0.1
What's the PatchBox / Monster Voice Changer?

The PatchBox is a Raspberry Pi running PatchBox OS at 10.50.0.192. It functions as the Monster Voice Changer — a real-time audio effects processor. It's part of the Monsters zone installation.