One system that controls and monitors a fleet of displays across three completely different protocols, HDMI-CEC, legacy RS232, and network IP, from a single codebase. Scheduled automation, one consistent data model, one dashboard. Built solo, end to end.
A fleet of displays spanned different TV generations, modern sets on HDMI-CEC, older ones on RS232 serial, others on network IP. Each spoke a different control language, with no unified way to schedule them, switch them on and off automatically, or see their status in one place.
A single system with one abstract controller that drives any display, whatever its protocol, through the same commands. It automates power, input, and volume on an operating-hours schedule, logs every device into one consistent data model, and shows the whole mixed fleet on one dashboard.
The system queries a digital-signage CMS on a short interval for each site's operating hours, with timezone awareness and a safe fallback if the API is unavailable.
A single abstract interface defines power, input, and volume. Three implementations sit behind it, one per protocol, so the rest of the system never needs to know how a given TV is actually controlled.
The right driver sends the actual commands to the display, over serial, CEC, or network, with retry logic and timeouts so a flaky device doesn't take the system down.
Every device, regardless of protocol, writes to one time-series database with an identical schema: site, TV, control method, power state, input, volume, and command success.
A single dashboard shows the entire fleet, CEC, RS232, and IP together, with filtering by site or device, historical power timelines, and live error monitoring.
Packaged as a background daemon with auto-restart, cross-platform service integration, health checks, and structured logging, built to run unattended.
Three protocols, one system. Any display, old or new, is controlled and monitored through the same commands and the same schema, no separate tools per TV type.
HDMI-CEC, RS232 serial, and IP work completely differently. A clean abstract controller hides those differences so the whole system speaks one language.
This isn't just code, it's serial cables, CEC adapters, and network devices. Bridging real hardware control with clean software is the rare part.
Forcing heterogeneous devices into a single, consistent time-series schema is what makes unified monitoring and history possible at all.
Displays drop, adapters glitch, APIs time out. Retries, timeouts, and fallbacks keep the system stable when the real world misbehaves.
Power and inputs follow real operating hours pulled from a CMS, timezone-aware, with a safe default when the schedule source is unreachable.
A production daemon with auto-restart, health checks, and cross-platform service integration, deployed to run on-site without babysitting.
I turn messy business problems into reliable systems, hardware control, voice agents, content platforms, RAG, and automation, designed and shipped solo.