How it works
A camera sees a group arrive on the tee. The Nx recorder tells the bridge. When the group leaves, the bridge cuts a clip of the last few minutes, puts it into Xibo, and tells the club screen to play it. The screen then goes back to its normal content.
What the screen does
The screen normally plays its always-running layout (your ads or club content). When a clip is ready, the bridge sends a trigger code. The always-running layout has an action listening for that code, which switches the screen to the event layout. The event layout plays the clip once, then the screen returns to its normal schedule.
Words used in this guide
One Nx recorder (one golf club). It has its own password, the webhook secret, that its Nx rules use.
One trigger camera at a site, and the camera the clip is cut from. Each feed has its own Start and End addresses.
Where a feed's clip is shown: an event layout, its placeholder video, and the screens. A feed can have several.
A Xibo layout that holds the replay video. It is identified by its layout code.
A video in the Xibo library that the bridge replaces with each new clip. Identified by its media ID.
A word the bridge sends to the screen, such as hole1. It must match the action on the always-running layout.
Before you start
Have these ready. The first four are needed once per club; the last two for every new feed.
- The bridge dashboard address and its password, from your administrator.
- An admin login for the Xibo CMS.
- The Nx server address, plus an Nx user and password with access to the cameras.
- The Xibo display (screen) is switched on and shows as logged in in the CMS.
- A short MP4 to use as the placeholder video. Any clip works; it is replaced by the first replay.
- Nx admin access, to add two event rules per trigger camera.
Set up Xibo
Do 2.2 to 2.5 once for each target: usually once per group of screens that shows its own replay. The screenshots are from the club's own CMS (Xibo 4.5). Click any picture to see it full size.
Already done once for the whole CMS: the bridge's API application (Administration → Applications). You don't need to touch it when adding sites or feeds.
2.1 Sign in to the CMS
Open the CMS address in a browser, for example
https://cms.glfn.com.au, and sign in with an admin account.
2.2 Upload the placeholder video
- Library → Media → Add Media
Upload a short MP4 and give it a clear name, such as
hole2-clip. Any clip works: the first replay replaces it. Find it in the list and note the number in the ID column. This is the placeholder media ID.
The ID goes up with every replay. Xibo gives each new clip a new media ID, so the library will show a higher number than the one you typed into the dashboard. That's normal: the bridge reads the current video from the event layout each time. Only enter the ID once, when you set up the target.
nx-motion-clip. Its media ID is 139.Every target needs its own placeholder video. The bridge overwrites that video with each new clip, so two targets sharing one would overwrite each other's replay. The dashboard refuses a shared one.
2.3 Create the event layout
This is the layout the screen switches to when a replay is ready.
- Design → Layouts → Add Layout
The designer opens on a blank 1920×1080 layout. Name it, for example
Hole 2 replay. In the left toolbar, open Video. Click the placeholder video's card, then click the canvas to place it. Drag the handles to size it; leave Scale type on Aspect.
Leave its duration alone. The panel says "This video will play for 99 seconds": that is the placeholder's own length. The bridge updates it to each replay's length, so don't set a fixed duration in the Advanced tab.
Click the layout's name at the bottom left of the canvas. In Edit Layout, fill in Code Identifier, for example
hole2replay. This is the layout code. It stays the same when the layout is edited and republished, so the bridge always finds it. Save.- ≡ Options menu (top right) → Publish
Publish the layout. A screen can't show a draft.
Want the replay framed by your branding? Make the video region smaller and put your logo, sponsor or hole name in other regions. The whole event layout shows while the clip plays.
2.4 Add the trigger to the always-running layout
The screen only reacts to a trigger code if the layout currently playing has an action waiting for it. So this action goes on your always-running layout (at Parkwood, Main Layout), not on the event layout.
- Design → Layouts → your always-running layout → Design
If a published layout opens read-only, choose Checkout to get an editable draft.
Press Interactive Mode at the top so it reads ON. Click the layout's name at the bottom left to select the whole layout, then press Add an Action on the right.
Fill in the action as in the table, press Save, then ≡ → Publish.
| Action field | Set it to |
|---|---|
| Action Type | Navigate to Layout |
| Trigger Type | Web hook |
| Trigger Code | A word for this targetExample: hole2. You enter the same word as the feed target's trigger code in step 5. |
| Trigger | The always-running layout itself (it is selected already) |
| Layout Code | The event layout's Code Identifier from 2.3Example: hole2replay |
If the screen's schedule rotates through several layouts, add the same action to each of them. Otherwise a replay only appears when that one layout happens to be on screen.
2.5 Put the event layout on the screen
- Displays → the screen's ⋮ menu → Assign Layouts
Add the event layout, so the player downloads it in advance.
Note the number in the display's ID column, and check that it shows as logged in (a green tick). This is the display ID.
- ⋮ menu → Trigger a web hook
Optional test: enter the trigger code (for example
hole2) and send. The screen should switch to the event layout. If it does, Xibo is ready.
What to copy into the dashboard
Placeholder media ID
139Layout code and trigger code
hole2replay · hole2Display IDs
4,5Connect Xibo in the dashboard
Open the bridge dashboard, sign in with its password, and go to the Settings tab. The Xibo CMS row is at the top; Sites and Feeds sit side by side below it.
You do this once. The Xibo connection is shared by every site and feed. To change it: press Edit on the Xibo row, press Test connection, then Save. Changes apply from the next clip, with no restart.
| Field | What to enter |
|---|---|
| CMS URL | The CMS addressExample: https://cms.glfn.com.au |
| Client ID / Client secret | From the CMS's API application. Set once; leave the secret blank to keep it. |
| Settle delay (ms) | How long the screen gets to download a new clip before switching to it. Leave at 20000 (20 s) unless screens show the previous clip. |
| Gap between clips (ms) | A new clip waits until the previous one has finished playing, plus this. Default 20000 (20 s). |
| Everything else | Leave as it is. |
Add a site
A site is one Nx recorder. Add one for each club.
- Settings → Sites → + Add site
Fill in the fields below.
Press Test connection. It lists the cameras on that recorder. Recording means footage is there to cut; Online — not recording right now is normal outside the camera's recording schedule (for example at night), but check it before relying on that camera.
Press Add site.
On the new site card, press Show & copy next to Webhook secret. Keep it for the Nx rules in step 6.
| Field | What to enter |
|---|---|
| Site ID | A short name in lowercase, digits and dashes. It becomes part of every web address for this site and cannot be changed later.Example: parkwood |
| Name | The club's name, as you want to see it.Example: Parkwood |
| Nx server URL | The Nx address the bridge reaches it on, usually the Nx Cloud relay address.Example: https://yourclub.relay.glfn.com.au |
| Sign in with | Local Nx user for a user made on the Nx server itself. Choose Nx Cloud account (nxvms.com) when the login only works on nxvms.com, not directly on the server.Example: Collier Park uses Nx Cloud |
| Nx username / password | A login that can view the cameras' recordings. For Nx Cloud, this is the email and password used on nxvms.com. When editing, leave the password blank to keep it. |
| Enabled | Ticked. Untick to pause the whole site. |
Rotate makes a new webhook secret. Every Nx rule at that site stops working until you paste the new secret into it. Only rotate if the secret has leaked.
Add a feed
A feed is one trigger camera, the camera its clip is cut from, and the screens the replay goes to. This is where you choose the layout, the video and the screens from step 2.
- Settings → Feeds → + Add feed
Choose the site first. The camera lists fill in from that site's recorder.
Fill in the feed fields, then one target for each event layout this feed should show on.
Press Test feed. It checks that the cameras have recent footage, that the layout exists and which video it plays, and whether each screen is online.
Press Add feed. The new feed card shows its Start and End addresses with copy buttons.
Feed fields
| Field | What to enter |
|---|---|
| Site | The recorder this camera is on. |
| Feed ID | Lowercase, digits and dashes. Part of this feed's web addresses; cannot be changed later.Example: hole-2 |
| Name | How you want to see it.Example: Hole 2 |
| Trigger camera | The camera whose Nx rules call this feed. For reference only; it doesn't change what is recorded. |
| Footage camera | The camera the replay is cut from. |
| Inset camera | Optional. A second view shown small in a corner. Leave as none for a single view. |
| Inset corner | Which corner the inset sits in. |
Target fields
Use + Add target for another event layout. Screens that show the same layout go in one target's display IDs.
| Field | What to enter |
|---|---|
| Name | Where it plays.Example: Clubhouse TV |
| Layout code | The event layout's Code Identifier (2.3).Example: hole2replay |
| Placeholder media ID | The placeholder video's ID (2.2). Must not be used by any other target.Example: 139 |
| Display IDs | The screens' IDs (2.5), separated by commas.Example: 4,5 |
| Trigger mode | webhook. This uses the action you added in 2.4. |
| Trigger code | The same word as the action's Trigger Code in 2.4.Example: hole2 |
| Target ID | A short name for this target within the feed.Example: club |
| Layout ID (if no code) | Leave blank when you use a layout code. |
The three things that must line up: the target's layout code matches the event layout's Code Identifier; the target's trigger code matches the action's Trigger Code; and the action's Layout Code points at the same event layout.
Create the Nx rules
The recorder tells the bridge when motion starts and stops on the trigger camera. Each feed needs two rules. The addresses have this shape; copy the real ones from the feed card.
https://your-dashboard/webhook/site-id/feed-id/start
ENDhttps://your-dashboard/webhook/site-id/feed-id/end
- Nx Witness client → System Administration → Event Rules → Add
Create the start rule as below, then the end rule.
Select only this feed's trigger camera in each rule. A rule covering several cameras sends them all to one feed.
| Setting | Start rule | End rule |
|---|---|---|
| Event | The camera's motion or analytics event (for example loitering) on the trigger camera | |
| Occurs | When event starts | When event stops |
| Interval of action | 15 seconds | Off |
| Action | Do HTTP(S) Request | |
| URL | The feed's Start address | The feed's End address |
| Method | POST | |
| Login | Anything, for example nx | |
| Password | The site's webhook secret from step 4 | |
The end rule is required. A clip is only made once the group has stopped moving; without the end rule every session waits ten minutes and then clips everything up to that point.
Test it end to end
- Control → Feed: your new feed → Trigger via webhook
This switches the screen to the event layout without making a clip. If the screen changes, the Xibo side is wired correctly. If not, see Troubleshooting.
Walk in front of the trigger camera for a minute, then leave.
- Events tab
You should see Motion start from Nx — feed name when you arrive and Motion END from Nx when you leave.
About a minute or two after you leave, a Job success row appears and the screen plays the replay: up to the last three minutes before you left, plus 20 seconds after.
- Clips tab
Every replay is kept here to watch back, even if something failed on the Xibo side.
Normal behaviour you may notice: a group that starts and stops several times within a minute becomes one replay. If a replay is still playing when the next one is ready, the next waits until it finishes plus 20 seconds, and the Events tab says "Waiting … the previous clip is still playing". Replays play in order and none is skipped.
Change things later
Everything here takes effect from the next replay. Nothing needs restarting.
| To… | Do this |
|---|---|
| Show a feed on another screen with the same layout | Feed card → Edit → add the display ID to the target's Display IDs. Assign the event layout to that screen too (2.5). |
| Show a feed on a screen with a different layout | Do 2.2 to 2.5 for the new screen, then Feed card → Edit → + Add target. |
| Use a different event layout or video | Feed card → Edit → change the target's Layout code or Placeholder media ID. |
| Add another camera at the same club | + Add feed on the same site, then two new Nx rules (step 6) with the new feed's addresses. |
| Add another club | + Add site, then feeds, then its Nx rules. The Xibo connection is shared. |
| Pause a feed or a whole site | Edit it and untick Enabled. Its motion events are ignored until you tick it again. |
| Change the Nx password | Site card → Edit → enter the new password. Leave it blank to keep the current one. |
| Replace a leaked webhook secret | Site card → Rotate, then paste the new secret into every Nx rule at that site. |
Site and feed IDs can't be renamed, because they are part of the Nx rules' addresses. To rename one, add a new site or feed and point the Nx rules at its addresses, then delete the old one.
Troubleshooting
| What you see | What to do |
|---|---|
| Nothing in the Events tab when someone walks past | The Nx rule isn't firing or can't reach the bridge. In Nx, check the rule is enabled and look at the Nx event log for the HTTP result. |
| Nx event log shows 401 | Wrong password in the rule. Paste the site's current webhook secret again (Show & copy on the site card). |
| Events tab: Webhook for unknown site or unknown feed | The address in the Nx rule has a typo. Copy it again from the feed card. |
| Motion start rows appear but no replay is ever made | The end rule is missing or points at the wrong address. Check the End rule (step 6). |
| Feed test: no footage in the last 10 minutes | That camera isn't recording at the moment. Normal outside its recording schedule (for example at night). If it happens during play hours, check the camera's recording schedule in Nx. |
| Feed test: display OFFLINE | The screen's player isn't connected to the CMS. Check the screen is on and online, then test again. |
| Feed test: layout DRAFT | Publish the event layout in Xibo. |
| Xibo test: HTTP 403, or no displays visible | The CMS's API application (Administration → Applications) is owned by a user without enough rights. Have a Super Admin own it, or give its owner access to the layouts, library and displays. |
| Job success, but the screen doesn't change | The trigger action is missing from the layout that was on screen (2.4), the trigger codes don't match, or the event layout isn't assigned to the screen (2.5). Try Control → Trigger via webhook to check. |
| The screen shows the previous replay, not the new one | The screen needs longer to download. Raise Settle delay in the Xibo settings, for example to 30000. |
| A replay cuts another off | Check Gap between clips isn't set to a negative or tiny value; the default is 20000. |
| The dashboard refuses a feed: media … is already used | Each target needs its own placeholder video (2.2). Upload another and use its ID. |