{{-- brafa Systems — Google TV launcher management. Livewire backing: App\Http\Livewire\SuperAdmin\TvBrandingManagement. Manages the isolated tv_ tables (branding, channels, devices). Existing property/booking data is read-only. --}}
Configure the Google TV launcher per property: branding, IPTV channels and devices.
No properties match “{{ $search }}”.
@endforelse @if (count($properties) >= 60)Showing first 60 — refine your search to narrow down.
@endifSelect a property to manage its TV launcher.
What guests actually did through the room TVs — the numbers that show the system paying for itself.
Approximate TV welcome screen. Updates as you pick colours.
Untick a tile to hide it from every TV at this property — it disappears from the dashboard and its remote-key shortcuts stop working. Saves instantly; TVs update within ~15s. Settings can't be hidden (staff recovery), and hiding Live TV also hides the TV Guide. Tiles that need content (channels, menu, upsells…) still only appear once that content exists.
{{ $message }}
@enderrorWithout a token the forced tile shows a friendly "ask reception" if the panel refuses to launch Netflix.
Location-aware features on the TV: local weather, "Eat nearby" and ambience streams.
Wi-Fi, checkout behavior, reviews and automatic nudges on the room TV.
The launcher shows this Tourdesk link as a QR code on the “Book your tour” screen.
{{ $tourdeskUrl }}
@else
No tourdesk_url set for this property (in property_emails). Add one there and it will appear on the TV automatically.
@endifNone assigned — the default list applies.
@elseDrag the ⠿ handle to reorder — the order is saved automatically and used as the channel order on the TV.
| Logo | No. | Name / stream | Logo URL | EPG id | Status | Actions | |
|---|---|---|---|---|---|---|---|
| ⠿ |
@if ($ch->logo_url)
|
{{ str_pad($ch->number, 3, '0', STR_PAD_LEFT) }} |
{{ $ch->name }}
|
{{ $ch->epg_channel_id ?? '—' }} | @if ($ch->is_active) Active @else Hidden @endif |
|
|
| No channels yet. | |||||||
Drag ⠿ to reorder.
| Title | Body | Status | Actions | |
|---|---|---|---|---|
| ⠿ | {{ $infoTab->title }} |
@if ($infoTab->is_active) Active @else Hidden @endif |
|
|
| No information tabs yet. | ||||
| Offer | Price | Description | Status | Actions |
|---|---|---|---|---|
{{ $up->title }} |
{{ $up->price ?: '—' }} | @if ($up->is_active) Active @else Hidden @endif |
|
|
| No upsell offers yet. | ||||
| Category | Item | Description | Price | Status | Actions |
|---|---|---|---|---|---|
| {{ $mi->category ?: '—' }} | {{ $mi->name }} |
{{ $mi->price ?: '—' }} | @if ($mi->is_available) Available @else Hidden @endif |
|
|
| No menu items yet. | |||||
Tick which streaming apps appear on this property's TVs. The first change copies the global list and customises it for this property only. Manage the global catalogue in TV Apps.
No apps in the global catalogue yet — add some under TV Apps.
@endforelseUsing a UniFi API key we find where each TV box sits on the network. Scan is read-only. Set up casting (per device, below) then creates that room's own VLAN, adds a private Wi-Fi password on the shared casting SSID, and tags the box's switch port — so a guest's phone Cast button only sees their own room's TV. Create a key in your UniFi-OS console under Settings → Control Plane → Integrations.
Point this property's room TVs at its Loxone Miniserver and a Room control tab appears on the TV — lights, blinds and temperature for every room the Miniserver exposes. The TV connects to the Miniserver directly on the LAN, so the room VLAN must be able to reach it. Use a dedicated, restricted Loxone user (not an admin login); credentials are stored encrypted and only sent to the authenticated TV.
{{ $message }}
@enderror| Unit / Room | Device ID | Last seen | Casting | Status | Actions |
|---|---|---|---|---|---|
{{ $device->unit_name ?? '—' }} |
{{ $device->device_identifier }} | {{ optional($device->last_seen_at)->diffForHumans() ?? 'Never' }} |
@php($cast = $device->casting_status)
@php($loc = collect([$device->unifi_switch, $device->unifi_port ? 'port ' . $device->unifi_port : null, $device->unifi_network])->filter()->implode(' · '))
@php($castTip = trim(($device->casting_detail ?? '') . ($loc ? ' — ' . $loc : '')))
@if ($cast === 'ready')
Ready
@elseif ($cast === 'shared')
⚠ Shared
@elseif ($cast === 'offline')
Not found
@elseif ($cast === 'unknown')
?
@else
not scanned
@endif
@if ($device->cast_ssid && $device->cast_psk)
📶 {{ $device->cast_ssid }} · {{ $device->cast_psk }}@if($device->unifi_vlan) · VLAN {{ $device->unifi_vlan }}@endif
@endif
|
@if ($device->is_active) Active @else Disabled @endif |
🩺 {{ optional($device->last_diag_at)->diffForHumans() }} · app {{ $device->app_version ?? '—' }}
{{ implode("
", (array) $device->last_diag) }}
@elseif ($device->app_version)
app {{ $device->app_version }}
@endif
|
| No devices provisioned for this property yet. | |||||