Ad-MOTO Hub — Digital Out-of-Home Advertising Platform

Laravel 9
Livewire 2
Bootstrap 5
MQTT
Laravel WebSockets
PHP-FFmpeg
Flespi GPS

The Brief

Ad-MOTO operates a fleet of motorbikes equipped with rear-mounted digital screens that display advertising content as the bikes travel through urban areas. They needed a platform to manage the entire operation: fleet tracking, content scheduling, device communication, audience measurement, and campaign analytics — all in real time.

The core technical challenge was communicating with Raspberry Pi devices mounted on moving motorbikes, pushing content updates and receiving telemetry data over cellular connections with variable quality.

The Approach

MQTT was chosen as the device communication protocol for its lightweight footprint and reliability over unreliable networks. Each Raspberry Pi screen unit subscribes to MQTT topics for content updates and publishes telemetry data (screen status, connectivity, playback confirmation) back to the platform. The Laravel backend acts as the MQTT orchestrator, publishing content schedules and processing incoming telemetry.

GPS tracking via Flespi provides real-time location data for every bike in the fleet. This feeds both operational dashboards (where are our bikes?) and campaign analytics (which geographic areas did this campaign reach?).

The Build

The campaign management system supports programmatic ad scheduling with slot-based conflict resolution. Advertisers book time slots across the fleet or specific bikes, upload video content (processed and optimised via PHP-FFmpeg for the screen hardware), and the system generates MQTT commands to push content to devices at the scheduled times.

Real-time dashboards built with Laravel WebSockets show hub operators the status of every bike — location, screen status, current content, connectivity quality — updating live without page refresh. A separate dashboard gives campaign managers live views of their campaign delivery: which bikes are showing their content, where those bikes are, and estimated audience exposure.

Audience measurement uses MAC address detection from the screen units’ Wi-Fi modules to estimate the number of unique devices (and by proxy, people) near each bike. This data feeds heatmap visualisations showing audience density by area and time of day, giving advertisers quantifiable reach metrics.

Video content processing was a significant technical piece. Uploaded videos are validated, transcoded to the screen hardware’s supported formats and resolutions via PHP-FFmpeg, optimised for file size (critical for cellular data transfers to moving vehicles), and staged for MQTT delivery. The pipeline handles queuing, progress tracking, and failure retry.

An AI-powered natural language reporting feature allows campaign managers to ask questions about their campaigns in plain English — “how many impressions did Campaign X get in central London last week?” — and receive generated reports with visualisations. Campaign performance data is also exportable as CSV for client reporting.

The Result

The platform manages Ad-MOTO’s entire operation from a single interface. Fleet operators have real-time visibility into every bike and screen. Campaign managers can schedule, monitor, and report on advertising campaigns with quantifiable audience metrics. The MQTT architecture handles the unique challenge of communicating with devices on moving vehicles over variable cellular connections reliably.

Let's build something great

Tell us about your project and we'll get back to you within one working day. No hard sell, just a straight conversation about what you need.

Start a conversation