← Portfolio

Office Lights

A local desktop app for controlling Philips Hue lights and Tapo cameras around the rig - no cloud account, no browser tab, everything stays on the LAN.

The problem it solves

Philips Hue and Tapo both push you toward their own phone apps and cloud accounts for something that's really a local-network problem - dim the rig lights, check a camera, without reaching for a phone mid-session. This app talks straight to the Hue Bridge's local CLIP v2 API and to Tapo cameras' RTSP streams directly over the LAN, and runs as its own window (via pywebview) rather than a browser tab, so it feels like a real installed app - it even builds down to a single OfficeLights.exe with a Start Menu entry.

Office Lights dashboard showing the Sim Rig room expanded with individual light controls, plus Office and Hallway rooms and an unassigned Spare Bulb

Rooms expand to show individual bulbs; brightness and colour on both the room and each light underneath it.

What's involved

Room and per-light control

Every room from the Hue app gets its own on/off, brightness and colour that affect every light in it at once - click through to control individual bulbs the same way. Lights not assigned to any room show up under "Other Lights" instead of disappearing.

Scenes

Scenes defined in the Hue app appear as one-click chips on their room. Recalling one lets the bridge set every light at once, then the dashboard re-reads real state afterwards rather than trying to predict the result client-side.

Drag-to-reorder, persisted

Rooms can be dragged into whatever order makes sense at the rig; the order is saved to a local config file so it survives restarts and even a rebuild of the app.

Live camera snapshots

A panel of Tapo camera stills, refreshed every ~2 seconds via a local ffmpeg frame grab over RTSP - deliberately not full video, to keep the implementation to one frame-grab per refresh. Requires a mains-powered Tapo model; battery/solar models don't expose RTSP at all.

Why it's worth trusting

First-time setup is a real pairing flow against the physical bridge button, not a pasted API key - and once paired, the app never touches TP-Link's or Philips' cloud again. The bridge's self-signed TLS certificate is handled the way local Hue integrations are meant to: verification is skipped for that one local connection specifically, not disabled globally. It's also built to run headless on the second rig's TV - the same dashboard is served over the LAN so a second PC can just open a browser to it, full-screened, with cameras included.