PROFESSIONAL

BerryBox

Controls power, input, and volume across multiple TV protocols, dispatching commands via RabbitMQ.

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.