RF Board.

Hosted site · Simulated feed
Clock--:--:--
Channels up–
RF health–
Lowest battery–
Service segment: Pre-service · next in 0:45
✓ Board reset — back to soundcheck: all batteries, RF histories, dropouts, segment and timer restored. Simulation is running again.
Channels monitored
10
8 in use · 2 spare / guest
Healthy
–
RF strong, battery fine
Warnings
–
Weak RF or battery under 30%
Dropouts (session)
0
RF hits below −90 dBm

RF Spectrum — 470–614 MHz

Shaded band is the local TV whitespace picture for the simulation; markers are your assigned channels. Watch for markers drifting toward an occupied channel.

Event Log

Dropouts, battery warnings, and segment changes, newest first.

    Time now
    --:--
    Service segment
    Pre-service
    Countdown
    5:00

    Find your name. Green means your mic is healthy — if your card turns red, hand the mic to the stage manager before the next song.

    CAM 1 · WIDEON AIRNDI · Stage wide — simulated feed
    CAM 2 · LEAD VOCALON AIRNDI · Tight — simulated feed
    CAM 3 · WORSHIP TEAMON AIRNDI · Choir loft — simulated feed
    CAM 4 · CONGREGATIONON AIRNDI · House — simulated feed

    ProPresenter · Clock

    --:--:--

    Countdown Timer

    5:00

    Service Flow

    Now: Pre-service
    Next: Opening worship

    Mic Status

      Simulated · Planning Center import

      Roster & assignments

      Who is on which mic this Sunday — pulled from the service plan, not typed from memory. Load the simulated Planning Center plan below and the board fills every channel card, Green Room card, and mix label across all views. Change an assignment here and it changes everywhere.

      Positions come from PCO (Worship Leader, Lead Vocal, BGV, Pastor, Prayer…). The mapping table decides which position lands on which channel slot — Worship Leader → VOX LEAD, Pastor → PREACH, and so on. Anyone scheduled whose position has no mapping is flagged, never dropped.

      Planning Center · Services plan
      No plan loaded yet
      Showing the soundcheck roster built into the board. Load the Sunday plan to replace it with the PCO schedule.
      10 channels assigned 7 order items 0 need mapping
      How the real connection works: Planning Center credentials never live in this page. In production the bridge / collector on the church network holds the PCO API token, calls the Services API, and hands this board the plan as plain data — the same handoff the RF collector uses. This page only ever receives names, positions, and the service order. No token, no secret, nothing to leak from page code.

      Channel assignments

      Slot = the channel label on the receiver (VOX LEAD, PREACH…). Mix = whose personal mix it is. Reassign a slot with the dropdown — Engineering, Green Room, and Video Wall update on the next tick.

      Slot / ChannelAssigned toPositionMixReassign

      Position → channel mapping

      This is the rule the import follows. Change a mapping, then load the plan again to re-apply it. Set a position to “No channel” and everyone in it will be flagged as unassigned.

      Service order — from the plan

      Currently showing the board’s built-in segments. Loading the PCO plan replaces these with the plan’s service-order items and drives the segment rotation, Green Room header, and Video Wall flow.

        Sunday team — roster cards

        The same people as the table, the way the Green Room reads them: photo-initial avatar, name, position, slot, and mix. These are the cards talent looks for backstage.

        What the simulated import contains

        Structured the way the PCO Services API returns it — so the real relay is a data swap, not a redesign.

        PCO objectFields used hereDrives on this board
        Plantitle · service type · date / timePlan header above
        Item (service order)title · length · item typeSegments, countdown flow, Video Wall “Service Flow”
        Team membername · position · status (confirmed)Channel name, avatar, role on every card
        Position mapping (ours)position → slotWhich channel a person lands on; unmapped = flagged

        Sample plan below is fictional demo data for BCX week (Sunday, November 15, 2026). Photos are initial avatars in this prototype — the real import can carry PCO person photos through the same relay when available.

        This page is the hosted site

        You’re looking at it on a real hosted website right now — that’s why the link works on any phone, tablet, or booth computer at BCX with nothing to install. The board, views, and alerts are finished. What’s still simulated is only the data source behind the cards.

        To pull an actual feed, you don’t rebuild the website. You add one small program — a collector — on the same network as the wireless receivers, and point this page at it. Below is the exact plan, the hardware check, and a live connection slot you can test the moment a collector exists.

        How you use it this week at BCX
        Share this page’s link — it opens everywhere
        • Now: Demo / layout reference with simulated channels
        • At BCX: Ask for the receiver make & model (photo of the RF rack is enough)
        • When live: Same link, same cards — collector data replaces the simulator
        Jump to feed tester ↓

        How do I hook things to it? — physical hook-up, in order

        You don’t plug mics or audio cables into this board. The board only watches data — audio keeps flowing receiver → console exactly as it does today. If you unplug the board, the sound never notices. You’re adding one small data network beside the audio, in about 10 minutes.

        1. 1

          Put a small network switch by the RF rack

          Any unmanaged gigabit switch (5–8 ports is plenty). Place it next to the wireless receivers and plug it into power. This switch is the meeting point for everything below — nothing connects to the internet or the house network.

        2. 2

          Cable each receiver to the switch

          One Cat5e / Cat6 Ethernet cable per receiver: from the receiver’s rear NETWORK / CONTROL / Ethernet port (not the audio XLR out) into any port on the switch. No Ethernet port on the back = that receiver can’t report data — see the Receiver check below.

        3. 3

          Cable the collector laptop to the same switch

          A second Ethernet cable from a spare laptop / mini-PC into the same switch. Turn its Wi-Fi off so it stays on the show network, and set its wired address to a fixed 192.168.1.50. This laptop runs the collector program — it’s the only new software in the chain.

        4. 4

          Give each receiver a fixed address

          In each receiver’s front-panel menu (Network → IP → Manual), set 192.168.1.101, 102, 103… one per unit, subnet 255.255.255.0. Fixed addresses mean the collector finds the same receiver in the same place every Sunday, even after a power cycle.

        5. 5

          Power up in order, then connect this board

          Switch first → receivers second → collector last. Wait ~30 seconds, start the collector, then on this page go to Live Feed Tester below, leave the address as ws://192.168.1.50:8765/rf, and press Connect to live feed. The badge at the top flips from SIMULATED to LIVE and the cards start moving on real data.

        What plugs where — at a glance

        FromCableTo
        Each receiver — Ethernet portCat5e / Cat6Network switch (any port)
        Collector laptop — EthernetCat5e / Cat6Same switch
        Receiver audio out (XLR)XLR — unchangedConsole / Fairlight, as today
        Booth / green-room screenWi-Fi or EthernetThis board’s link — or the same switch if you run the board locally
        AntennasCoax — unchangedReceiver antenna A / B, as today
        What you need in the room: the switch, one Ethernet cable per receiver + one for the collector, and the collector laptop. That’s the whole parts list.
        What you don’t need: internet at the rack, a cloud account, or any change to the audio path.
        Stuck? Work down the list: is the switch light on for that receiver’s port? Is the laptop’s Wi-Fi off? Do the receiver IPs and 192.168.1.50 share the same 192.168.1.x range? Those three checks fix almost every no-feed case.

        To undo a live connection, press Back to simulation in the tester — or press ↺ Reset board at the top of any view, which disconnects the feed and restores the soundcheck state.

        01 · On stage

        Wireless receivers

        Shure / Sennheiser networked receivers already know RF level, audio, battery, and frequency for every channel — continuously.

        →
        02 · On the LAN

        Collector program

        A tiny program on a laptop / mini-PC on the venue network. Polls the receivers every 250 ms over Ethernet. This is the only new piece of software.

        →
        03 · One stream

        WebSocket feed

        Collector publishes one simple JSON stream: { ch, rfDbm, audioDb, batteryPct, freq } — no accounts, no cloud needed on a local show network.

        →
        04 · This site

        RF Board (hosted)

        This hosted page subscribes to that stream and drives the exact cards you see now. Engineering, Green Room, and Video Wall all read the same feed.

        Why the browser can’t talk to receivers directly

        This is a browser rule, not a limitation of this board — and it’s why every product like this uses a collector.

        • !Different networks: This hosted page lives on the public internet. Receivers live on a private venue LAN with addresses like 192.168.1.x that the internet can’t reach.
        • !Different protocols: Receivers speak vendor network protocols (Shure / Sennheiser control ports), not web protocols a browser is allowed to open.
        • ✓The fix is small: The collector sits on that LAN, translates vendor data → WebSocket JSON, and this page does the rest. Put the collector and the viewing screens on the same show network and no internet is even required.

        Deployment options for the live version: (a) keep this hosted page and connect it to a collector via a secure tunnel / venue VPN, or (b) run this same single HTML file locally next to the collector — it’s fully self-contained, so both work with zero rebuild.

        Will it work with the rig? — Receiver check

        Pick what’s in the rack. This decides live vs. impossible in one step.

        System classLive feed?Path
        Shure ULX-D / AxientYesNetwork poll — RF, audio, battery, freq
        Sennheiser EW-D / D6000YesNetwork poll / Sennheiser Control Cockpit
        G4 with WSMPartialVia WSM data — RF + battery, slower rate
        Analog, no EthernetNoNo data exists to pull — hardware limit

        Plan — functionality to build

        In priority order for a real show. The board already handles everything in the right column visually.

        1. 1

          Collector v1 — read-only

          Poll one receiver brand, publish the WebSocket stream, auto-reconnect. No control, only monitoring — safest first step.

        2. 2

          Channel mapping

          Map receiver channels → names / roles / photos (Daniel, Sarah, Pastor…) in a small config file the engineer edits per show.

        3. 3

          Alerts that reach people

          Same thresholds as this prototype (RF < −78, battery < 30 / 20%) plus a push / sound cue in the booth so a dropout isn’t missed.

        4. 4

          Show mode for BCX

          Read-only Green Room link for talent, Engineering link for FOH — same feed, different views, no login on the local network.

        Later — only if wanted

        Useful, but not needed for v1 to be genuinely live.

        • Frequency coordination — import a scanned / coordinated frequency list and flag conflicts on the spectrum strip
        • Recording / replay — log the whole show’s RF history to replay a dropout after the service
        • Remote control — mute / gain from the board (requires write access — add only with a kill switch, like the Fairlight bridge plan)
        • ProPresenter + NDI, real — replace the simulated clocks / cameras in Video Wall with the actual ProPresenter stage display and NDI sources on the same LAN

        What I need from you

        Three facts unlock the entire live build. Everything else is already decided above.

        • ✓Hosted board — done. This site, shareable link, three views.
        • 1Receiver make + model — a photo of the RF rack front + back (network ports) at BCX or CAC
        • 2Network access — can a laptop join the same wired network / switch as the receivers during a show?
        • 3Channel list — who’s on which mic for the show you want to run it on first

        Send the rack photo and I can name the exact collector to build — Shure and Sennheiser need different pollers, and there’s no generic one that does both well.

        Live feed tester — connect this board to a collector

        This is real, working code in this page — not a mockup. When a collector is running, paste its WebSocket address here and the Engineering cards switch from simulation to the live stream.

        Feed: SIMULATED — no collector connected. Cards are driven by the built-in simulator.
        Collector contract — each message is one JSON frame: { "channels": [ { "ch": 1, "rfDbm": -54, "audioDb": -18, "batteryPct": 82, "freqMhz": 512.125 }, … ] } Frames at 4–10 Hz. Unknown channels are ignored; missing channels keep simulating.

        Note: a public https page can’t open a plain ws:// connection to a private LAN address from home — that test has to happen on the show network (or with the board file running locally next to the collector). The “demo frame” button proves the live path inside this page right now.

        Collector — what gets built

        Small, single-purpose, runs on any spare laptop. Sketch for planning — brand-specific polling fills in once the rack is known.

        1. A

          Discover

          Find receivers on the LAN (fixed IPs recommended — set them once in the receiver menu so addresses survive power cycles).

        2. B

          Poll

          Every 250 ms read per channel: rfDbm audioDb batteryPct freqMhz antenna

        3. C

          Publish

          Serve ws://<collector-ip>:8765/rf with the JSON frame above. That’s the whole API — this page is the only client it needs.

        4. D

          Survive the show

          Auto-restart on receiver dropout, heartbeat in the feed status above, and a plain-text log file for after-show review.

        BCX checklist — ask at the rack

        • Receiver brand + model for every RF channel?
        • Are receivers on a network switch I can plug a laptop into?
        • Who owns RF coordination — can I get the frequency list?
        • Is there a spare wired drop / switch port near FOH or the RF rack?

        Data contract — every field on the cards, mapped to its real source

        Nothing on this board is decorative. Each reading has a named source in a networked receiver, which is how you know the live version is a swap, not a redesign.

        Board fieldReceiver sourceRateShureSennheiser
        rfDbmRF signal level, active antenna4–10 HzYesYes
        audioDbReceiver audio output level4–10 HzYesYes
        batteryPct + ETATransmitter battery telemetry~1 HzYesYes
        freqMhzTuned frequencyOn changeYesYes
        antenna A/BDiversity antenna activity4 HzYesYes
        RF history graphThis page — rolling 60 s buffer of rfDbm—Built from the stream, no receiver support needed