The Challenge
Managing a fleet of displays from different manufacturers (LG, Samsung, Sony) often means dealing with a fragmented mess of proprietary protocols. I needed a way to unify these into a single, reliable control layer that could handle network latency and hardware timeouts without blocking the user interface.
Technical Implementation
BerryBox is a networked TV control platform. It controls power, input, and volume across different TV brands. The system runs on a custom PHP MVC framework and dispatches hardware commands via RabbitMQ workers. It includes a mobile-friendly remote-control UI accessible over the local network.
#
Core Architecture
- Custom PHP MVC Framework: with strict namespace separation between Action and AJAX namespaces.•Gateway Pattern: for hardware I/O using a shared interface, allowing new TV brands to be added easily.
•Async Command Dispatch: uses RabbitMQ to decouple the web UI from slow serial or network hardware I/O.
#
Hardware & Integration Layer
- Multi-Protocol Gateways: implementations for RS-232, Samsung Network APIs, and LG WebSockets.•Unifi Protect Integration: for visual feedback and monitoring of display states.
•Audac MTX88 Support: for zone-based audio control alongside the video displays.
Key Features
•Launchpad Dashboard: touch-optimized hero cards for quick mobile control.
•Worker Architecture: durable RabbitMQ queues with QoS management to prevent command loss.
•Wake-on-LAN: integrated support for powering on sleeping displays.
•Hardened Security: PIN-based authentication and CSRF protection enforced at the framework level.
By the numbers
•4 TV gateway implementations.
•22 action/AJAX controllers.
•10 core framework components.