All projects

Technical Project

Q-SYS Lua Automation

While leading technical operations at Eastside Christian Church, I engineered a library of custom Q-SYS Lua hardware drivers and room-automation scripts so volunteers could operate auditorium, lobby, plaza, and broadcast systems from a single touchpanel. The suite spans stateful drivers for Christie and Sony projectors, daisy-chained Sony Bravia displays, Yamaha TF audio consoles, and Ross Carbonite switchers.

Timeline2017 – Present
My roleTechnical Director · Control systems & Lua driver engineering
StatusDeployed across Eastside multi-campus rooms

The problem

Multi-campus production spaces combine equipment from many vendors—each speaking its own dialect of raw TCP sockets, HTTP/JSON CGI, UDP, or serial commands. Volunteer operators needed one-touch room power and audio/video routing without getting tripped up by projector warm-up/cool-down cycles, expired HTTP session tokens, or dropped TCP connections.

How I approached it

Instead of relying on brittle one-way button macros, I wrote stateful Lua control modules inside Q-SYS using Timer-driven polling, TcpSocket reconnect handlers, and queued HttpClient state machines. Each driver reconciles actual hardware status against operator intent, suppresses UI feedback loops during momentary presses, and recovers automatically from network or session drops.

Inside the build

  • Built control scripts for external devices and services over serial, TCP, UDP, OSC, and HTTP APIs.
  • Engineered a 430-line Christie HD14K-M projector HTTP/JSON driver with automatic endpoint probing across seven candidate paths, HTML-wrapped JSON extraction, queued session-token authentication, single-retry re-login on expired sessions, and 30-second backoff when the projector reaches its maximum connected-client limit.
  • Built a stateful Sony Commons projector CGI controller that polls power state every 10 seconds and reconciles desired power against transitional STARTUP and COOLING states so operators cannot double-toggle a warming or cooling laser.
  • Created an object-oriented Sony Bravia SSIP driver over TCP port 20060 that parses comma-separated IP lists to daisy-chain multiple displays, control power, HDMI/Composite input, volume, and picture mute, and aggregate multi-screen state into a single Q-SYS LED.
  • Built a bidirectional TCP socket controller (port 49280) for Yamaha TF consoles, switching stereo channel groups between Lobby Spotify, Plaza FOH, Auditorium FOH, ProTools, and Broadcast feeds while syncing live channel on/off states back to Q-SYS.
  • Implemented additional Q-SYS integrations for Ross Carbonite video switching (RossTalk), ENTTEC lighting playback, NEC display control, StudioTech alerting, and sunrise/sunset scheduling.

The result

Turned complex multi-device startup, audio routing, and display management across Eastside’s campuses into reliable one-button workflows for a 90-person technical team.