🔴 Node-RED — Flow Documentation

Node-RED runs on forest-mac1 (10.50.0.30) and serves as the integration layer between Home Assistant, Chataigne, FPP players, projectors, and the dashboard.

Installed Packages

PackageVersion
@flowfuse/node-red-dashboard1.30.0
node-red-contrib-sacn0.0.9
node-red-contrib-home-assistant-websocket0.80.3
node-red-contrib-osc1.1.0
node-red-contrib-network-tools2.3.5

Flows Overview

#Flow NameProtocolPurpose
1Projector Simple ControlTCPPower on/off the projector via serial-over-TCP
2Projector Power & Status PullHTTPPoll projector status page every 30 s
3FPP Command Presets per EndpointHTTP GETTrigger ALL ON / ALL OFF across FPP players
4Chataigne MasterStates OSCOSC / sACNSend AllOn / AllOff to Chataigne & direct DMX
5Butterfly ProjectionWebSocketSend OFF command to forest-mac2
6Flow 1 — Network Performance MonitorICMPPing 64 devices, build dashboard
7Flow 2 — MadMapper OSC ListenerOSC (UDP)Listen for MadMapper telemetry on port 9090

Flow: Projector Simple Control

Sends TCP commands to the projector at 10.50.0.5:10000.

Command Sequences

ActionStepCommandNotes
Power ON10000\rWake / handshake
2Wait 3 sStagger delay
3C00\rPower ON command
Power OFF10000\rWake / handshake
2Wait 2 sStagger delay
3C01\rPower OFF command
⚠️
Stagger delay is critical. The projector will not accept the power command if sent immediately after the handshake. Always wait the specified delay.

Trigger Sources

SourceEntity / EventAction
Home Assistantinput_boolean.butterfly_wings ONPower ON sequence
Home Assistantinput_boolean.butterfly_wings OFFPower OFF sequence
ChataigneProjectorOnPower ON sequence
ChataigneProjectorOffPower OFF sequence
Home Assistantswitch.dmx_powerPower ON/OFF
Home Assistantinput_boolean (lasers)Power ON/OFF

Mac WebSocket Targets

TargetIPPortProtocol
Mac1 (forest-mac1)10.50.0.308080WebSocket
Mac2 (forest-mac2)10.50.0.318080WebSocket
Mac3 (forest-mac3)10.50.0.328080WebSocket
Mac4 (forest-mac4)10.50.0.338080WebSocket

HA Virtual Entities

Entity NameTypePurpose
Forest PowerSwitchMaster on/off — triggers FPP ALL ON/OFF across all endpoints
DMX PowerSwitchToggle DMX power relay
ButterflyProjectorSwitchToggle butterfly projector (Epson DHT8000 via TCP)
Butterfly LaserButtonTrigger butterfly laser command via WebSocket to Mac2
Flower ProjectorButtonTrigger flower projector reboot via WebSocket to Mac3
Flower LaserButtonTrigger flower laser command via WebSocket to Mac3
Fire ProjectorButtonTrigger fire projector reboot via WebSocket to Mac4
Saloon LasersButtonTrigger saloon laser command
Reboot ForestButtonTrigger full forest reboot sequence
Stop ForestButtonTrigger stop-forest sequence

Flow: Projector Power & Status Pull

Polls GET http://10.50.0.5/power.htm every 30 seconds and parses the status code from the response body.

Status Code Parser

Code (hex)Meaning
00ON — Normal operation
04OFF — Power management
08OFF — Normal
10Service needed
20Cooling down
21Cooling down (variant)
24Cooling down (variant)
28Cooling down (variant)
2CCooling down (variant)
40Starting up
80OFF (variant)
81OFF (variant)
88OFF (variant)
8COFF (variant)

HA Entities Updated

Entity IDTypeValue
input_boolean.projector_powerBooleanON if code = 00, else OFF
input_text.projector_statusTextHuman-readable status string
input_text.projector_power_statusTextRaw hex code from response

Flow: FPP Command Presets per Endpoint

Sends HTTP GET requests to all FPP player endpoints to trigger preset commands. Slot 1 = ALL ON, Slot 2 = ALL OFF.

FPP Endpoints

DeviceIPEndpoint Pattern
forest-pix110.50.0.11http://10.50.0.11/api/command/...
forest-pix210.50.0.12http://10.50.0.12/api/command/...
forest-pix310.50.0.13http://10.50.0.13/api/command/...
forest-pix410.50.0.14http://10.50.0.14/api/command/...
forest-pix510.50.0.15http://10.50.0.15/api/command/...
forest-minipix110.50.0.20http://10.50.0.20/api/command/...
forest-minipix210.50.0.21http://10.50.0.21/api/command/...
forest-minipix310.50.0.22http://10.50.0.22/api/command/...
forest-minipix510.50.0.24http://10.50.0.24/api/command/...

Trigger Sources

Triggered by the Forest Power HA switch (Slot 1 = ALL ON, Slot 2 = ALL OFF), or by Chataigne MasterStates. When triggered, also sends ON / OFF over WebSocket to forest-mac1 (10.50.0.30:8080).


Flow: Chataigne MasterStates OSC

Sends OSC messages to Chataigne on localhost:8000.

OSC AddressValueAction
/MasterStates/AllOn1Activate AllOn state in Chataigne
/MasterStates/AllOff1Activate AllOff state in Chataigne

Also sends sACN directly to 10.50.0.145 (Welcome DMX6) on port 6454 — Universe 3, Channel 1, Value 250 — for DMX control independently of Chataigne.


Flow: Butterfly Projection

Sends an OFF command via WebSocket to forest-mac2 (10.50.0.31:8080) to disable the butterfly projection.

Wings State Bridge

Bidirectional state sync between Chataigne (via Mac1 WebSocket) and Home Assistant:

DirectionTriggerAction
Chataigne → HAProjectorOn / ProjectorOff received on Mac1 WebSocketCalls input_boolean.butterfly_wings turn_on / turn_off
HA → Chataigneinput_boolean.butterfly_wings state changeSends WingsOn / WingsOff to Mac1 WebSocket

Flow 1: Network Performance Monitor

Pings 64 devices every 60 seconds. Results are displayed on the Node-RED dashboard.

Dashboard Pages

PagePathContent
Control/dashboard/ControlHA entity buttons, projector controls, master power
Status/dashboard/page4Network Status grid — per-device ping results

Thresholds

MetricWarning Threshold
Latency> 100 ms
Packet Loss> 5%
Availability< 95%

Dashboard uses an 8-column grid layout with individual tiles per device.


Flow 2: MadMapper OSC Listener

Listens on UDP port 9090 for OSC messages from MadMapper.

OSC Mappings

OSC AddressDescription
/madmapper/play/statePlayback state (playing / stopped)
/madmapper/project/nameCurrent project name
/madmapper/output/enabledOutput enabled flag
/madmapper/fpsCurrent frame rate
ℹ️
MadMapper is considered offline if no OSC message is received within 8 seconds.

WebSocket Architecture Summary

SourceTargetPortDirectionPurpose
Node-REDforest-mac18080BidirectionalFPP ON/OFF relay, Wings state bridge (WingsOn/WingsOff)
Node-REDforest-mac28080OutboundButterfly Projector + Butterfly Laser commands
Node-REDforest-mac38080OutboundFlower Projector + Flower Laser commands
Node-REDforest-mac48080OutboundFire Projector commands
ChataigneNode-RED/ws/timerInboundWebSocket listener for show control triggers
Home AssistantNode-REDWS APIBidirectionalEntity state changes & service calls

Action Items

#ItemPriorityStatus
1Confirm all 64 ping targets are currentMediumOpen
2Add error handling for projector TCP timeoutHighOpen
3Document sACN universe mapping to Welcome DMX6MediumDone — Universe 3, Ch 1, Val 250
4Verify MadMapper OSC port is not conflicting with other listenersLowOpen
5Add dashboard alerts for projector cooling-down statesMediumOpen